Skip to content

Commit 519304e

Browse files
authored
chore: allow passing an array of import names to imports.addNamed (#639)
* chore: allow passing an array of import names to imports.addNamed * update usage
1 parent c10b8ad commit 519304e

File tree

12 files changed

+56
-62
lines changed

12 files changed

+56
-62
lines changed

.changeset/rare-snakes-tickle.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'sv': patch
3+
---
4+
5+
chore: allow passing an array of import names to imports.addNamed

packages/addons/drizzle/index.ts

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -239,10 +239,7 @@ export default defineAddon({
239239
if (options.database === 'sqlite') {
240240
imports.addNamed(ast, {
241241
from: 'drizzle-orm/sqlite-core',
242-
imports: {
243-
sqliteTable: 'sqliteTable',
244-
integer: 'integer'
245-
}
242+
imports: ['sqliteTable', 'integer']
246243
});
247244

248245
userSchemaExpression = common.parseExpression(`sqliteTable('user', {
@@ -253,11 +250,7 @@ export default defineAddon({
253250
if (options.database === 'mysql') {
254251
imports.addNamed(ast, {
255252
from: 'drizzle-orm/mysql-core',
256-
imports: {
257-
mysqlTable: 'mysqlTable',
258-
serial: 'serial',
259-
int: 'int'
260-
}
253+
imports: ['mysqlTable', 'serial', 'int']
261254
});
262255

263256
userSchemaExpression = common.parseExpression(`mysqlTable('user', {
@@ -268,11 +261,7 @@ export default defineAddon({
268261
if (options.database === 'postgresql') {
269262
imports.addNamed(ast, {
270263
from: 'drizzle-orm/pg-core',
271-
imports: {
272-
pgTable: 'pgTable',
273-
serial: 'serial',
274-
integer: 'integer'
275-
}
264+
imports: ['pgTable', 'serial', 'integer']
276265
});
277266

278267
userSchemaExpression = common.parseExpression(`pgTable('user', {
@@ -300,7 +289,7 @@ export default defineAddon({
300289

301290
imports.addNamed(ast, {
302291
from: '$env/dynamic/private',
303-
imports: { env: 'env' }
292+
imports: ['env']
304293
});
305294
imports.addNamespace(ast, { from: './schema', as: 'schema' });
306295

@@ -316,25 +305,25 @@ export default defineAddon({
316305
imports.addDefault(ast, { from: 'better-sqlite3', as: 'Database' });
317306
imports.addNamed(ast, {
318307
from: 'drizzle-orm/better-sqlite3',
319-
imports: { drizzle: 'drizzle' }
308+
imports: ['drizzle']
320309
});
321310

322311
clientExpression = common.parseExpression('new Database(env.DATABASE_URL)');
323312
}
324313
if (options.sqlite === 'libsql' || options.sqlite === 'turso') {
325314
imports.addNamed(ast, {
326315
from: '@libsql/client',
327-
imports: { createClient: 'createClient' }
316+
imports: ['createClient']
328317
});
329318
imports.addNamed(ast, {
330319
from: 'drizzle-orm/libsql',
331-
imports: { drizzle: 'drizzle' }
320+
imports: ['drizzle']
332321
});
333322

334323
if (options.sqlite === 'turso') {
335324
imports.addNamed(ast, {
336325
from: '$app/environment',
337-
imports: { dev: 'dev' }
326+
imports: ['dev']
338327
});
339328
// auth token check in prod
340329
const authTokenCheck = common.parseStatement(
@@ -354,7 +343,7 @@ export default defineAddon({
354343
imports.addDefault(ast, { from: 'mysql2/promise', as: 'mysql' });
355344
imports.addNamed(ast, {
356345
from: 'drizzle-orm/mysql2',
357-
imports: { drizzle: 'drizzle' }
346+
imports: ['drizzle']
358347
});
359348

360349
clientExpression = common.parseExpression('mysql.createPool(env.DATABASE_URL)');
@@ -363,11 +352,11 @@ export default defineAddon({
363352
if (options.postgresql === 'neon') {
364353
imports.addNamed(ast, {
365354
from: '@neondatabase/serverless',
366-
imports: { neon: 'neon' }
355+
imports: ['neon']
367356
});
368357
imports.addNamed(ast, {
369358
from: 'drizzle-orm/neon-http',
370-
imports: { drizzle: 'drizzle' }
359+
imports: ['drizzle']
371360
});
372361

373362
clientExpression = common.parseExpression('neon(env.DATABASE_URL)');
@@ -376,7 +365,7 @@ export default defineAddon({
376365
imports.addDefault(ast, { from: 'postgres', as: 'postgres' });
377366
imports.addNamed(ast, {
378367
from: 'drizzle-orm/postgres-js',
379-
imports: { drizzle: 'drizzle' }
368+
imports: ['drizzle']
380369
});
381370

382371
clientExpression = common.parseExpression('postgres(env.DATABASE_URL)');

packages/addons/eslint/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,13 @@ export default defineAddon({
155155
common.addJsDocTypeComment(astNode, { type: "import('eslint').Linter.Config[]" });
156156

157157
if (typescript) imports.addDefault(ast, { from: 'typescript-eslint', as: 'ts' });
158-
imports.addNamed(ast, { from: 'node:url', imports: { fileURLToPath: 'fileURLToPath' } });
158+
imports.addNamed(ast, { from: 'node:url', imports: ['fileURLToPath'] });
159159
imports.addDefault(ast, { from: 'globals', as: 'globals' });
160160
imports.addDefault(ast, { from: 'eslint-plugin-svelte', as: 'svelte' });
161161
imports.addDefault(ast, { from: '@eslint/js', as: 'js' });
162162
imports.addNamed(ast, {
163163
from: '@eslint/compat',
164-
imports: { includeIgnoreFile: 'includeIgnoreFile' }
164+
imports: ['includeIgnoreFile']
165165
});
166166

167167
return generateCode();

packages/addons/lucia/index.ts

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,7 @@ export default defineAddon({
142142
if (drizzleDialect === 'sqlite' || drizzleDialect === 'turso') {
143143
js.imports.addNamed(ast, {
144144
from: 'drizzle-orm/sqlite-core',
145-
imports: {
146-
sqliteTable: 'sqliteTable',
147-
text: 'text',
148-
integer: 'integer'
149-
}
145+
imports: ['sqliteTable', 'text', 'integer']
150146
});
151147
js.object.overrideProperties(userAttributes, {
152148
properties: {
@@ -176,11 +172,7 @@ export default defineAddon({
176172
if (drizzleDialect === 'mysql') {
177173
js.imports.addNamed(ast, {
178174
from: 'drizzle-orm/mysql-core',
179-
imports: {
180-
mysqlTable: 'mysqlTable',
181-
varchar: 'varchar',
182-
datetime: 'datetime'
183-
}
175+
imports: ['mysqlTable', 'varchar', 'datetime']
184176
});
185177
js.object.overrideProperties(userAttributes, {
186178
properties: {
@@ -212,11 +204,7 @@ export default defineAddon({
212204
if (drizzleDialect === 'postgresql') {
213205
js.imports.addNamed(ast, {
214206
from: 'drizzle-orm/pg-core',
215-
imports: {
216-
pgTable: 'pgTable',
217-
text: 'text',
218-
timestamp: 'timestamp'
219-
}
207+
imports: ['pgTable', 'text', 'timestamp']
220208
});
221209
js.object.overrideProperties(userAttributes, {
222210
properties: {
@@ -260,20 +248,17 @@ export default defineAddon({
260248
const { ast, generateCode } = parseScript(content);
261249

262250
js.imports.addNamespace(ast, { from: '$lib/server/db/schema', as: 'table' });
263-
js.imports.addNamed(ast, { from: '$lib/server/db', imports: { db: 'db' } });
251+
js.imports.addNamed(ast, { from: '$lib/server/db', imports: ['db'] });
264252
js.imports.addNamed(ast, {
265253
from: '@oslojs/encoding',
266-
imports: {
267-
encodeBase64url: 'encodeBase64url',
268-
encodeHexLowerCase: 'encodeHexLowerCase'
269-
}
254+
imports: ['encodeBase64url', 'encodeHexLowerCase']
270255
});
271-
js.imports.addNamed(ast, { from: '@oslojs/crypto/sha2', imports: { sha256: 'sha256' } });
272-
js.imports.addNamed(ast, { from: 'drizzle-orm', imports: { eq: 'eq' } });
256+
js.imports.addNamed(ast, { from: '@oslojs/crypto/sha2', imports: ['sha256'] });
257+
js.imports.addNamed(ast, { from: 'drizzle-orm', imports: ['eq'] });
273258
if (typescript) {
274259
js.imports.addNamed(ast, {
275260
from: '@sveltejs/kit',
276-
imports: { RequestEvent: 'RequestEvent' },
261+
imports: ['RequestEvent'],
277262
isType: true
278263
});
279264
}

packages/addons/mdsvex/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export default defineAddon({
1313
sv.file('svelte.config.js', (content) => {
1414
const { ast, generateCode } = parseScript(content);
1515

16-
imports.addNamed(ast, { from: 'mdsvex', imports: { mdsvex: 'mdsvex' } });
16+
imports.addNamed(ast, { from: 'mdsvex', imports: ['mdsvex'] });
1717

1818
const { value: exportDefault } = exports.createDefault(ast, {
1919
fallback: object.create({})

packages/addons/paraglide/index.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ export default defineAddon({
9696
const vitePluginName = 'paraglideVitePlugin';
9797
imports.addNamed(ast, {
9898
from: '@inlang/paraglide-js',
99-
imports: { paraglideVitePlugin: vitePluginName }
99+
imports: [vitePluginName]
100100
});
101101
const { value: rootObject } = exports.createDefault(ast, {
102102
fallback: functions.createCall({ name: 'defineConfig', args: [] })
@@ -123,7 +123,7 @@ export default defineAddon({
123123
const { ast, generateCode } = parseScript(content);
124124
imports.addNamed(ast, {
125125
from: '$lib/paraglide/runtime',
126-
imports: { deLocalizeUrl: 'deLocalizeUrl' }
126+
imports: ['deLocalizeUrl']
127127
});
128128

129129
const expression = common.parseExpression('(request) => deLocalizeUrl(request.url).pathname');
@@ -149,7 +149,7 @@ export default defineAddon({
149149
const { ast, generateCode } = parseScript(content);
150150
imports.addNamed(ast, {
151151
from: '$lib/paraglide/server',
152-
imports: { paraglideMiddleware: 'paraglideMiddleware' }
152+
imports: ['paraglideMiddleware']
153153
});
154154

155155
const hookHandleContent = `({ event, resolve }) => paraglideMiddleware(event.request, ({ request, locale }) => {
@@ -206,13 +206,10 @@ export default defineAddon({
206206
// add usage example
207207
sv.file(`${kit.routesDirectory}/demo/paraglide/+page.svelte`, (content) => {
208208
const { script, template, generateCode } = parseSvelte(content, { typescript });
209-
imports.addNamed(script.ast, { from: '$lib/paraglide/messages.js', imports: { m: 'm' } });
210-
imports.addNamed(script.ast, { from: '$app/navigation', imports: { goto: 'goto' } });
211-
imports.addNamed(script.ast, { from: '$app/state', imports: { page: 'page' } });
212-
imports.addNamed(script.ast, {
213-
from: '$lib/paraglide/runtime',
214-
imports: { setLocale: 'setLocale' }
215-
});
209+
imports.addNamed(script.ast, { from: '$lib/paraglide/messages.js', imports: ['m'] });
210+
imports.addNamed(script.ast, { from: '$app/navigation', imports: ['goto'] });
211+
imports.addNamed(script.ast, { from: '$app/state', imports: ['page'] });
212+
imports.addNamed(script.ast, { from: '$lib/paraglide/runtime', imports: ['setLocale'] });
216213

217214
const scriptCode = new MagicString(script.generateCode());
218215

packages/addons/playwright/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export default defineAddon({
6363
// uses the `defineConfig` helper
6464
imports.addNamed(ast, {
6565
from: '@playwright/test',
66-
imports: { defineConfig: 'defineConfig' }
66+
imports: ['defineConfig']
6767
});
6868
object.addProperties(defaultExport.arguments[0], { properties: config });
6969
} else if (defaultExport.type === 'ObjectExpression') {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import { Handle } from '@sveltejs/kit';
2+
import { namedOne } from 'package';
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { imports, type AstTypes } from '@sveltejs/cli-core/js';
2+
3+
export function run(ast: AstTypes.Program): void {
4+
imports.addNamed(ast, { from: 'package', imports: ['namedOne'], isType: false });
5+
6+
imports.addNamed(ast, { from: '@sveltejs/kit', imports: ['Handle'], isType: false });
7+
// adding the same import twice should not produce two imports
8+
imports.addNamed(ast, { from: '@sveltejs/kit', imports: ['Handle'], isType: false });
9+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
import { foo as bar, baz } from 'xyz';
12
import { Handle } from '@sveltejs/kit';
23
import { namedOne } from 'package';

0 commit comments

Comments
 (0)