@sanity/pkg-utils 2.2.17 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +16 -7
  2. package/dist/_chunks/{build-45e5ded8.cjs → build-0aed2000.cjs} +11 -8
  3. package/dist/_chunks/{build-45e5ded8.cjs.map → build-0aed2000.cjs.map} +1 -1
  4. package/dist/_chunks/{buildAction-afc0a1a6.cjs → buildAction-196fba7b.cjs} +2 -2
  5. package/dist/_chunks/{buildAction-afc0a1a6.cjs.map → buildAction-196fba7b.cjs.map} +1 -1
  6. package/dist/_chunks/{check-33e163bb.cjs → check-2deafe2a.cjs} +22 -19
  7. package/dist/_chunks/{check-33e163bb.cjs.map → check-2deafe2a.cjs.map} +1 -1
  8. package/dist/_chunks/{checkAction-6fd7b2bc.cjs → checkAction-7ac5a05e.cjs} +2 -2
  9. package/dist/_chunks/{checkAction-6fd7b2bc.cjs.map → checkAction-7ac5a05e.cjs.map} +1 -1
  10. package/dist/_chunks/{index-f3c22a05.cjs → index-984e18d1.cjs} +4 -2
  11. package/dist/_chunks/{index-f3c22a05.cjs.map → index-984e18d1.cjs.map} +1 -1
  12. package/dist/_chunks/init-ab36343b.cjs +469 -0
  13. package/dist/_chunks/init-ab36343b.cjs.map +1 -0
  14. package/dist/_chunks/initAction-d18cf4f2.cjs +16 -0
  15. package/dist/_chunks/initAction-d18cf4f2.cjs.map +1 -0
  16. package/dist/_chunks/logger-c593f06b.cjs +97 -0
  17. package/dist/_chunks/logger-c593f06b.cjs.map +1 -0
  18. package/dist/_chunks/{resolveBuildContext-6666f1ab.cjs → resolveBuildContext-5ef90110.cjs} +10 -91
  19. package/dist/_chunks/resolveBuildContext-5ef90110.cjs.map +1 -0
  20. package/dist/_chunks/{watch-2bff1357.cjs → watch-63a93eb0.cjs} +10 -7
  21. package/dist/_chunks/{watch-2bff1357.cjs.map → watch-63a93eb0.cjs.map} +1 -1
  22. package/dist/_chunks/{watchAction-39b0210b.cjs → watchAction-95c0b481.cjs} +2 -2
  23. package/dist/_chunks/{watchAction-39b0210b.cjs.map → watchAction-95c0b481.cjs.map} +1 -1
  24. package/dist/cli.cjs +14 -4
  25. package/dist/cli.cjs.map +1 -1
  26. package/dist/index.cjs +12 -7
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.ts +87 -0
  29. package/dist/index.js +449 -8
  30. package/dist/index.js.map +1 -1
  31. package/package.json +23 -15
  32. package/src/cli/index.ts +8 -0
  33. package/src/cli/initAction.ts +13 -0
  34. package/src/node/core/index.ts +1 -0
  35. package/src/node/core/pkg/types.ts +13 -0
  36. package/src/node/core/template/createFromTemplate.ts +85 -0
  37. package/src/node/core/template/define.ts +6 -0
  38. package/src/node/core/template/index.ts +3 -0
  39. package/src/node/core/template/types.ts +45 -0
  40. package/src/node/index.ts +1 -0
  41. package/src/node/init.ts +55 -0
  42. package/src/node/isEmptyDirectory.ts +5 -0
  43. package/src/node/templates/default/index.ts +1 -0
  44. package/src/node/templates/default/template.ts +553 -0
  45. package/src/node/templates/index.ts +1 -0
  46. package/dist/_chunks/resolveBuildContext-6666f1ab.cjs.map +0 -1
@@ -0,0 +1,553 @@
1
+ import getLatestVersion from 'get-latest-version'
2
+ import gitUrlParse from 'git-url-parse'
3
+ import {outdent} from 'outdent'
4
+ import parseGitConfig from 'parse-git-config'
5
+ import {resolve} from 'path'
6
+ import prettier, {Config as PrettierConfig} from 'prettier'
7
+
8
+ import {defineTemplateOption, isRecord, PackageJSON, PkgTemplate, PkgTemplateFile} from '../../core'
9
+
10
+ const RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i
11
+
12
+ export const defaultTemplate: PkgTemplate = async ({cwd, logger, packagePath}) => {
13
+ const gitConfig = await parseGitConfig({cwd, type: 'global'})
14
+
15
+ return {
16
+ options: [
17
+ defineTemplateOption<{owner: string; name: string}>({
18
+ name: 'repo',
19
+ type: 'string',
20
+ description: 'git url',
21
+ validate: (v) => {
22
+ if (!v) return true
23
+
24
+ try {
25
+ gitUrlParse(v)
26
+
27
+ return true
28
+ } catch (err) {
29
+ return 'invalid git url'
30
+ }
31
+ },
32
+ parse: (v) => {
33
+ if (!v) return null
34
+
35
+ const result = gitUrlParse(v)
36
+
37
+ return {source: result.source, owner: result.owner, name: result.name}
38
+ },
39
+ }),
40
+ defineTemplateOption({
41
+ name: 'pkgName',
42
+ type: 'string',
43
+ description: 'package name',
44
+ initial: (options) => options.repo?.name || undefined,
45
+ validate: (v) => {
46
+ if (!v) return 'package name is required'
47
+
48
+ const match = RE_NAME.exec(v)
49
+
50
+ if (!match) {
51
+ return 'invalid package name'
52
+ }
53
+
54
+ return true
55
+ },
56
+ parse: (v) => {
57
+ if (!v) {
58
+ throw new Error('package name is required')
59
+ }
60
+
61
+ const match = RE_NAME.exec(v)
62
+
63
+ if (!match) {
64
+ throw new Error('invalid package name')
65
+ }
66
+
67
+ const [scope, name] = v.split('/')
68
+
69
+ return {scope, name, fullName: v}
70
+ },
71
+ }),
72
+ defineTemplateOption({
73
+ name: 'description',
74
+ type: 'string',
75
+ description: 'package description',
76
+ }),
77
+ defineTemplateOption({
78
+ name: 'authorName',
79
+ type: 'string',
80
+ description: 'package author name',
81
+ initial: gitConfig?.user?.name,
82
+ }),
83
+ defineTemplateOption({
84
+ name: 'authorEmail',
85
+ type: 'string',
86
+ description: 'package author email',
87
+ initial: gitConfig?.user?.email,
88
+ }),
89
+ defineTemplateOption({
90
+ name: 'license',
91
+ type: 'string',
92
+ description: 'package license',
93
+ initial: 'MIT',
94
+ validate: (v) => {
95
+ if (!v) return 'license is required'
96
+
97
+ return true
98
+ },
99
+ }),
100
+ ],
101
+
102
+ features: [
103
+ {
104
+ name: 'eslint',
105
+ optional: true,
106
+ initial: true,
107
+ },
108
+ {
109
+ name: 'typescript',
110
+ optional: true,
111
+ initial: true,
112
+ },
113
+ ],
114
+
115
+ async getFiles(options, features) {
116
+ const {pkgName, repo} = options
117
+ const {fullName: name} = pkgName
118
+
119
+ const author =
120
+ [options.authorName, options.authorEmail && `<${options.authorEmail}>`]
121
+ .filter(Boolean)
122
+ .join(' ') ?? undefined
123
+
124
+ const prettierConfig: PrettierConfig = {
125
+ bracketSpacing: false,
126
+ printWidth: 100,
127
+ semi: false,
128
+ singleQuote: true,
129
+ tabWidth: 2,
130
+ plugins: ['prettier-plugin-packagejson'],
131
+ overrides: [
132
+ {
133
+ files: ['*.yml'],
134
+ options: {
135
+ singleQuote: false,
136
+ },
137
+ },
138
+ ],
139
+ }
140
+
141
+ const pkgJson: PackageJSON & {
142
+ prettier?: PrettierConfig
143
+ ['lint-staged']?: Record<string, string[]>
144
+ } = {
145
+ name,
146
+ version: '0.0.0',
147
+ description: options.description ?? undefined,
148
+ keywords: [],
149
+ license: options.license,
150
+ author,
151
+ type: 'module',
152
+ exports: {
153
+ '.': {
154
+ types: undefined,
155
+ source: features.typescript ? './src/index.ts' : './src/index.js',
156
+ require: './dist/index.cjs',
157
+ import: './dist/index.js',
158
+ default: './dist/index.js',
159
+ },
160
+ './package.json': './package.json',
161
+ },
162
+ main: './dist/index.cjs',
163
+ module: './dist/index.js',
164
+ source: features.typescript ? './src/index.ts' : './src/index.js',
165
+ files: ['dist', 'src'],
166
+ scripts: {
167
+ build: 'run-s clean pkg:build pkg:check',
168
+ clean: 'rimraf dist',
169
+ format: 'prettier --write --cache --ignore-unknown .',
170
+ 'pkg:build': 'pkg build --strict',
171
+ 'pkg:check': 'pkg check --strict',
172
+ },
173
+ prettier: prettierConfig,
174
+ 'lint-staged': {
175
+ '*': ['prettier --write --cache --ignore-unknown'],
176
+ },
177
+ dependencies: {},
178
+ devDependencies: {
179
+ '@sanity/pkg-utils': '*',
180
+ 'lint-staged': '*',
181
+ 'npm-run-all': '*',
182
+ prettier: '*',
183
+ 'prettier-plugin-packagejson': '*',
184
+ rimraf: '*',
185
+ },
186
+ engines: {
187
+ node: '>=18.0.0',
188
+ },
189
+ }
190
+
191
+ const files: PkgTemplateFile[] = []
192
+
193
+ // .editorconfig
194
+ files.push({
195
+ name: '.editorconfig',
196
+ contents: outdent`
197
+ root = true
198
+
199
+ [*]
200
+ charset = utf-8
201
+ indent_style = space
202
+ indent_size = 2
203
+ end_of_line = lf
204
+ insert_final_newline = true
205
+ trim_trailing_whitespace = true
206
+ `,
207
+ })
208
+
209
+ // .gitignore
210
+ files.push({
211
+ name: '.gitignore',
212
+ contents: outdent`
213
+ *.local
214
+ *.log
215
+
216
+ .DS_Store
217
+ etc
218
+ dist
219
+ node_modules
220
+ `,
221
+ })
222
+
223
+ files.push({
224
+ name: '.prettierignore',
225
+ contents: outdent`
226
+ /dist
227
+ /pnpm-lock.yaml
228
+ `,
229
+ })
230
+
231
+ if (repo) {
232
+ pkgJson.repository = {
233
+ type: 'git',
234
+ url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`,
235
+ }
236
+ pkgJson.bugs = {
237
+ url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`,
238
+ }
239
+ pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`
240
+ }
241
+
242
+ if (features.typescript) {
243
+ pkgJson.types = './dist/index.d.ts'
244
+
245
+ const mainExport = pkgJson.exports?.['.']
246
+
247
+ if (isRecord(mainExport)) {
248
+ mainExport.types = './dist/index.d.ts'
249
+ }
250
+
251
+ pkgJson.scripts = {
252
+ ...pkgJson.scripts,
253
+ ['type:check']: 'tsc --build',
254
+ }
255
+
256
+ const devDependencies = pkgJson.devDependencies
257
+
258
+ if (isRecord(devDependencies)) {
259
+ devDependencies['typescript'] = '*'
260
+ }
261
+ }
262
+
263
+ if (features.eslint) {
264
+ const eslintConfig: any = {
265
+ root: true,
266
+ env: {
267
+ browser: true,
268
+ es6: true,
269
+ node: true,
270
+ },
271
+ extends: ['eslint:recommended', 'plugin:prettier/recommended'],
272
+ parserOptions: {
273
+ ecmaVersion: 2020,
274
+ sourceType: 'module',
275
+ },
276
+ plugins: ['import', 'prettier'],
277
+ rules: {
278
+ 'no-console': 'error',
279
+ 'no-shadow': 'error',
280
+ 'no-warning-comments': ['warn', {location: 'start', terms: ['todo', 'fixme']}],
281
+ },
282
+ }
283
+
284
+ files.push({
285
+ name: '.eslintignore',
286
+ contents: outdent`
287
+ /dist
288
+ `,
289
+ })
290
+
291
+ pkgJson.scripts = {
292
+ ...pkgJson.scripts,
293
+ lint: features.typescript
294
+ ? 'eslint . --ext .cjs,.js,.ts,.tsx'
295
+ : 'eslint . --ext .cjs,.js',
296
+ }
297
+
298
+ pkgJson.devDependencies = {
299
+ ...pkgJson.devDependencies,
300
+ eslint: '*',
301
+ 'eslint-config-prettier': '*',
302
+ 'eslint-plugin-import': '*',
303
+ 'eslint-plugin-prettier': '*',
304
+ }
305
+
306
+ if (features.typescript) {
307
+ pkgJson.devDependencies = {
308
+ ...pkgJson.devDependencies,
309
+ '@typescript-eslint/eslint-plugin': '*',
310
+ '@typescript-eslint/parser': '*',
311
+ }
312
+
313
+ const eslintConfigOverride: any = {
314
+ files: ['**/*.ts', '**/*.tsx'],
315
+ parser: '@typescript-eslint/parser',
316
+ parserOptions: {
317
+ project: ['./tsconfig.json'],
318
+ },
319
+ extends: [
320
+ 'eslint:recommended',
321
+ 'plugin:prettier/recommended',
322
+ 'plugin:@typescript-eslint/eslint-recommended',
323
+ 'plugin:@typescript-eslint/recommended',
324
+ ].filter(Boolean),
325
+ plugins: ['import', '@typescript-eslint', 'prettier'].filter(Boolean),
326
+ rules: {
327
+ '@typescript-eslint/explicit-module-boundary-types': 'error',
328
+ '@typescript-eslint/interface-name-prefix': 'off',
329
+ '@typescript-eslint/member-delimiter-style': 'off',
330
+ '@typescript-eslint/no-empty-interface': 'off',
331
+ },
332
+ }
333
+
334
+ eslintConfig.overrides = [eslintConfigOverride]
335
+ }
336
+
337
+ files.push({
338
+ name: '.eslintrc.cjs',
339
+ contents: format(
340
+ resolve(packagePath, '.eslintrc.cjs'),
341
+ outdent`
342
+ 'use strict'
343
+
344
+ /** @type import('eslint').Linter.Config */
345
+ module.exports = ${JSON.stringify(eslintConfig, null, 2)}
346
+ `,
347
+ prettierConfig
348
+ ),
349
+ })
350
+ }
351
+
352
+ if (features.typescript) {
353
+ files.push({
354
+ name: 'tsconfig.settings.json',
355
+ contents: format(
356
+ resolve(packagePath, 'tsconfig.settings.json'),
357
+ outdent`
358
+ {
359
+ "compilerOptions": {
360
+ "module": "ES2020",
361
+ "target": "ES2020",
362
+ "declaration": true,
363
+ "declarationMap": true,
364
+ "sourceMap": true,
365
+
366
+ // Strict type-checking
367
+ "strict": true,
368
+ "noImplicitAny": true,
369
+ "strictNullChecks": true,
370
+ "strictFunctionTypes": true,
371
+ "strictPropertyInitialization": true,
372
+ "noImplicitThis": true,
373
+ "alwaysStrict": true,
374
+
375
+ // Additional checks
376
+ "noUnusedLocals": true,
377
+ "noUnusedParameters": true,
378
+ "noImplicitReturns": true,
379
+ "noFallthroughCasesInSwitch": true,
380
+ "skipLibCheck": true,
381
+
382
+ // Module resolution
383
+ "moduleResolution": "node",
384
+ "allowSyntheticDefaultImports": true,
385
+ "esModuleInterop": true
386
+ }
387
+ }
388
+ `,
389
+ prettierConfig
390
+ ),
391
+ })
392
+
393
+ files.push({
394
+ name: 'tsconfig.dist.json',
395
+ contents: format(
396
+ resolve(packagePath, 'tsconfig.dist.json'),
397
+ outdent`
398
+ {
399
+ "extends": "./tsconfig.settings",
400
+ "include": ["./src"],
401
+ "compilerOptions": {
402
+ "rootDir": ".",
403
+ "outDir": "./dist",
404
+ "emitDeclarationOnly": true,
405
+ "resolveJsonModule": true
406
+ }
407
+ }
408
+ `,
409
+ prettierConfig
410
+ ),
411
+ })
412
+
413
+ files.push({
414
+ name: 'tsconfig.json',
415
+ contents: format(
416
+ resolve(packagePath, 'tsconfig.json'),
417
+ outdent`
418
+ {
419
+ "extends": "./tsconfig.settings",
420
+ "include": ["./*.cjs", "./*.ts", "./package.config.ts", "./src"],
421
+ "compilerOptions": {
422
+ "rootDir": ".",
423
+ "outDir": "./dist",
424
+ "noEmit": true,
425
+ "allowJs": true,
426
+ "resolveJsonModule": true,
427
+ }
428
+ }
429
+ `,
430
+ prettierConfig
431
+ ),
432
+ })
433
+ }
434
+
435
+ // source file
436
+ if (features.typescript) {
437
+ files.push({
438
+ name: 'package.config.ts',
439
+ contents: format(
440
+ resolve(packagePath, 'package.config.ts'),
441
+ outdent`
442
+ import {defineConfig} from '@sanity/pkg-utils'
443
+
444
+ export default defineConfig({
445
+ extract: {
446
+ rules: {
447
+ // do not require internal members to be prefixed with \`_\`
448
+ 'ae-internal-missing-underscore': 'off',
449
+ },
450
+ },
451
+
452
+ // the path to the tsconfig file for distributed builds
453
+ tsconfig: 'tsconfig.dist.json',
454
+ })
455
+ `,
456
+ prettierConfig
457
+ ),
458
+ })
459
+
460
+ files.push({
461
+ name: 'src/index.ts',
462
+ contents: format(
463
+ resolve(packagePath, 'src/index.ts'),
464
+ outdent`
465
+ /** @public */
466
+ export function main(): void {
467
+ //
468
+ }
469
+ `,
470
+ prettierConfig
471
+ ),
472
+ })
473
+ } else {
474
+ files.push({
475
+ name: 'package.config.js',
476
+ contents: format(
477
+ resolve(packagePath, 'package.config.js'),
478
+ outdent`
479
+ import {defineConfig} from '@sanity/pkg-utils'
480
+
481
+ export default defineConfig({
482
+ extract: {
483
+ rules: {
484
+ // do not require internal members to be prefixed with \`_\`
485
+ 'ae-internal-missing-underscore': 'off',
486
+ },
487
+ },
488
+ })
489
+ `,
490
+ prettierConfig
491
+ ),
492
+ })
493
+
494
+ files.push({
495
+ name: 'src/index.js',
496
+ contents: format(
497
+ resolve(packagePath, 'src/index.js'),
498
+ outdent`
499
+ /** @public */
500
+ export function main() {
501
+ //
502
+ }
503
+ `,
504
+ prettierConfig
505
+ ),
506
+ })
507
+ }
508
+
509
+ // Resolve latest dependencies
510
+ try {
511
+ pkgJson.dependencies = await resolveLatestDeps(pkgJson.dependencies ?? {})
512
+ } catch (error) {
513
+ logger.warn(error instanceof Error ? error.message : error)
514
+ }
515
+
516
+ // Resolve latest devDependencies
517
+ try {
518
+ pkgJson.devDependencies = await resolveLatestDeps(pkgJson.devDependencies ?? {})
519
+ } catch (error) {
520
+ logger.warn(error instanceof Error ? error.message : error)
521
+ }
522
+
523
+ files.push({
524
+ name: 'package.json',
525
+ contents: format(
526
+ resolve(packagePath, 'package.json'),
527
+ JSON.stringify(pkgJson, null, 2),
528
+ prettierConfig
529
+ ),
530
+ })
531
+
532
+ return files
533
+ },
534
+ }
535
+ }
536
+
537
+ function format(filepath: string, input: string, prettierOptions: PrettierConfig) {
538
+ return prettier.format(input, {...prettierOptions, filepath})
539
+ }
540
+
541
+ async function resolveLatestDeps(deps: Record<string, string>) {
542
+ const depsEntries = Object.entries(deps)
543
+ const latestDeps: Record<string, string> = {}
544
+
545
+ for (const entry of depsEntries) {
546
+ const [name, version] = entry
547
+ const latestVersion = await getLatestVersion(name, version)
548
+
549
+ latestDeps[name] = latestVersion ? `^${latestVersion}` : version
550
+ }
551
+
552
+ return latestDeps
553
+ }
@@ -0,0 +1 @@
1
+ export * from './default'
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveBuildContext-6666f1ab.cjs","sources":["../../src/node/fileExists.ts","../../src/node/core/config/findConfigFile.ts","../../src/node/core/config/loadConfig.ts","../../src/node/core/config/resolveConfigProperty.ts","../../src/node/core/defaults.ts","../../src/node/core/isRecord.ts","../../src/node/core/pkg/validatePkg.ts","../../src/node/core/pkg/loadPkg.ts","../../src/node/core/pkg/helpers.ts","../../src/node/core/pkg/loadPkgWithReporting.ts","../../src/node/core/pkg/validateExports.ts","../../src/node/core/pkg/parseExports.ts","../../src/node/core/pkg/pkgExt.ts","../../src/node/core/ts/loadTSConfig.ts","../../src/node/logger.ts","../../src/node/core/findCommonPath.ts","../../src/node/resolveBrowserslistVersions.ts","../../src/node/resolveBrowserTarget.ts","../../src/node/resolveNodeTarget.ts","../../src/node/resolveBuildContext.ts"],"sourcesContent":["import {statSync} from 'fs'\n\n/** @internal */\nexport function fileExists(filePath: string): boolean {\n try {\n statSync(filePath)\n\n return true\n } catch (_) {\n return false\n }\n}\n","import findConfig from 'find-config'\nimport path from 'path'\n\nimport {fileExists} from '../../fileExists'\n\nconst CONFIG_FILE_NAMES = [\n 'package.config.ts',\n 'package.config.js',\n 'package.config.cjs',\n 'package.config.mjs',\n]\n\n/** @internal */\nexport function findConfigFile(cwd: string): string | undefined {\n const pkgJsonPath = findConfig('package.json', {cwd})\n\n if (!pkgJsonPath) return undefined\n\n const pkgPath = path.dirname(pkgJsonPath)\n\n for (const fileName of CONFIG_FILE_NAMES) {\n const configPath = path.resolve(pkgPath, fileName)\n\n const exists = fileExists(configPath)\n\n if (exists) {\n return configPath\n }\n }\n\n return undefined\n}\n","import {register} from 'esbuild-register/dist/node'\nimport path from 'path'\nimport pkgUp from 'pkg-up'\n\nimport {findConfigFile} from './findConfigFile'\nimport {PkgConfigOptions} from './types'\n\n/** @internal */\nexport async function loadConfig(options: {cwd: string}): Promise<PkgConfigOptions | undefined> {\n const {cwd} = options\n\n const pkgPath = await pkgUp({cwd})\n\n if (!pkgPath) return undefined\n\n const root = path.dirname(pkgPath)\n\n const configFile = await findConfigFile(root)\n\n if (!configFile) {\n return undefined\n }\n\n // Do not accept config files outside of the root\n if (!configFile.startsWith(cwd)) {\n return undefined\n }\n\n const esbuildOptions = {extensions: ['.js', '.mjs', '.ts']}\n\n const {unregister} = globalThis.__DEV__ ? {unregister: () => undefined} : register(esbuildOptions)\n\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(configFile)\n\n unregister()\n\n return mod?.default || mod || undefined\n}\n","import {PkgConfigProperty, PkgConfigPropertyResolver} from './types'\n\n/** @internal */\nexport function resolveConfigProperty<T>(\n prop: PkgConfigProperty<T> | undefined,\n initialValue: T\n): T {\n if (!prop) return initialValue\n\n if (typeof prop === 'function') {\n return (prop as PkgConfigPropertyResolver<T>)(initialValue)\n }\n\n return prop\n}\n","/** @public */\nexport const DEFAULT_BROWSERSLIST_QUERY = [\n '> 0.2% and supports es6-module and supports es6-module-dynamic-import',\n 'not dead',\n 'not IE 11',\n 'maintained node versions',\n]\n","/** @internal */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && !Array.isArray(value) && typeof value === 'object'\n}\n","import {z} from 'zod'\n\nimport {PackageJSON} from './types'\n\nconst pkgSchema = z.object({\n type: z.optional(z.enum(['commonjs', 'module'])),\n name: z.string(),\n version: z.string(),\n license: z.string(),\n bin: z.optional(z.record(z.string())),\n dependencies: z.optional(z.record(z.string())),\n devDependencies: z.optional(z.record(z.string())),\n peerDependencies: z.optional(z.record(z.string())),\n source: z.optional(z.string()),\n main: z.optional(z.string()),\n browser: z.optional(z.record(z.string())),\n module: z.optional(z.string()),\n types: z.optional(z.string()),\n exports: z.optional(\n z.record(\n z.union([\n z.custom<`./${string}.json`>((val) => /^\\.\\/.*\\.json$/.test(val as string)),\n z.object({\n types: z.optional(z.string()),\n source: z.string(),\n require: z.optional(z.string()),\n browser: z.optional(\n z.object({\n source: z.string(),\n require: z.optional(z.string()),\n import: z.optional(z.string()),\n })\n ),\n node: z.optional(\n z.object({\n source: z.optional(z.string()),\n require: z.optional(z.string()),\n import: z.optional(z.string()),\n })\n ),\n import: z.optional(z.string()),\n default: z.string(),\n }),\n ])\n )\n ),\n browserslist: z.optional(z.array(z.string())),\n})\n\nexport function validatePkg(input: unknown): PackageJSON {\n return pkgSchema.parse(input)\n}\n","import fs from 'fs/promises'\nimport pkgUp from 'pkg-up'\n\nimport {PackageJSON} from './types'\nimport {validatePkg} from './validatePkg'\n\n/** @internal */\nexport async function loadPkg(options: {cwd: string}): Promise<PackageJSON> {\n const {cwd} = options\n\n const pkgPath = await pkgUp({cwd})\n\n if (!pkgPath) throw new Error('no package.json found')\n\n const buf = await fs.readFile(pkgPath)\n\n const raw = JSON.parse(buf.toString())\n\n validatePkg(raw)\n\n return raw\n}\n","/** @internal */\nexport function assertFirst<T>(a: T, arr: T[]): boolean {\n const aIdx = arr.indexOf(a)\n\n // if not found, then we don't care\n if (aIdx === -1) {\n return true\n }\n\n return aIdx === 0\n}\n\n/** @internal */\nexport function assertLast<T>(a: T, arr: T[]): boolean {\n const aIdx = arr.indexOf(a)\n\n // if not found, then we don't care\n if (aIdx === -1) {\n return true\n }\n\n return aIdx === arr.length - 1\n}\n\n/** @internal */\nexport function assertOrder<T>(a: T, b: T, arr: T[]): boolean {\n const aIdx = arr.indexOf(a)\n const bIdx = arr.indexOf(b)\n\n // if either is not found, then we don't care\n if (aIdx === -1 || bIdx === -1) {\n return true\n }\n\n return aIdx < bIdx\n}\n","import chalk from 'chalk'\nimport {ZodError} from 'zod'\n\nimport {Logger} from '../../logger'\nimport {assertFirst, assertLast, assertOrder} from './helpers'\nimport {loadPkg} from './loadPkg'\nimport {PackageJSON} from './types'\n\n/** @internal */\nexport async function loadPkgWithReporting(options: {\n cwd: string\n logger: Logger\n}): Promise<PackageJSON> {\n const {cwd, logger} = options\n\n try {\n const pkg = await loadPkg({cwd})\n\n // validate exports\n if (pkg.exports) {\n const _exports = Object.entries(pkg.exports)\n\n for (const [expPath, exp] of _exports) {\n if (typeof exp === 'string') {\n continue\n }\n\n const keys = Object.keys(exp)\n\n if (!assertFirst('types', keys)) {\n logger.warn(`exports[\"${expPath}\"]: the \\`types\\` property should be the first property`)\n }\n\n if (!assertOrder('require', 'import', keys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`require\\` property should come before the \\`import\\` property`\n )\n }\n\n if (!assertOrder('require', 'node', keys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`require\\` property should come before the \\`node\\` property`\n )\n }\n\n if (!assertOrder('node', 'import', keys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`node\\` property should come before \\`import\\` property`\n )\n }\n\n if (!assertLast('default', keys)) {\n logger.warn(`exports[\"${expPath}\"]: the \\`default\\` property should be the last property`)\n }\n }\n }\n\n return pkg\n } catch (err) {\n if (err instanceof ZodError) {\n for (const issue of err.issues) {\n if (issue.code === 'invalid_type') {\n logger.error(\n [\n `\\`${formatPath(issue.path)}\\` `,\n `in \\`./package.json\\` must be of type ${chalk.magenta(issue.expected)} `,\n `(received ${chalk.magenta(issue.received)})`,\n ].join('')\n )\n continue\n }\n\n logger.error(issue)\n }\n } else {\n logger.error(err)\n }\n\n process.exit(1)\n }\n}\n\nfunction formatPath(segments: Array<string | number>) {\n return segments\n .map((s, idx) => {\n if (idx === 0) return s\n\n if (typeof s === 'number') {\n return `[${s}]`\n }\n\n if (s.startsWith('.')) {\n return `[\"${s}\"]`\n }\n\n return `.${s}`\n })\n .join('')\n}\n","import {PkgExport} from '../config'\nimport {PkgExtMap} from './pkgExt'\nimport {PackageJSON} from './types'\n\nexport function validateExports(\n _exports: (PkgExport & {_path: string})[],\n options: {extMap: PkgExtMap; pkg: PackageJSON}\n): string[] {\n const {extMap, pkg} = options\n const ext = extMap[pkg.type || 'commonjs']\n\n const errors: string[] = []\n\n for (const exp of _exports) {\n if (exp.require && !exp.require.endsWith(ext.commonjs)) {\n errors.push(\n `package.json with \\`type: \"${pkg.type}\"\\` - \\`exports[\"${exp._path}\"].require\\` must end with \"${ext.commonjs}\"`\n )\n }\n\n if (exp.import && !exp.import.endsWith(ext.esm)) {\n errors.push(\n `package.json with \\`type: \"${pkg.type}\"\\` - \\`exports[\"${exp._path}\"].import\\` must end with \"${ext.esm}\"`\n )\n }\n }\n\n return errors\n}\n","import {PkgExport} from '../config'\nimport {isRecord} from '../isRecord'\nimport {PkgExtMap} from './pkgExt'\nimport {PackageJSON} from './types'\nimport {validateExports} from './validateExports'\n\n/** @internal */\nexport function parseExports(options: {\n extMap: PkgExtMap\n pkg: PackageJSON\n strict: boolean\n}): (PkgExport & {_path: string})[] {\n const {extMap, pkg, strict} = options\n\n const rootExport: PkgExport & {_path: string} = {\n _exported: true,\n _path: '.',\n types: pkg.types,\n source: pkg.source || '',\n browser: pkg.browser && {\n source: pkg.source || '',\n require: pkg.main && pkg.browser[pkg.main],\n import: pkg.module && pkg.browser[pkg.module],\n },\n require: pkg.main,\n import: pkg.module,\n default: pkg.module || pkg.main || '',\n }\n\n const extraExports: (PkgExport & {_path: string})[] = []\n\n const errors: string[] = []\n\n if (pkg.exports) {\n if (strict && !pkg.exports['./package.json']) {\n errors.push('package.json: `exports[\"./package.json\"] must be declared.')\n }\n\n for (const [exportPath, exportEntry] of Object.entries(pkg.exports)) {\n if (exportPath.endsWith('.json')) {\n if (exportPath === './package.json') {\n if (exportEntry !== './package.json') {\n errors.push('package.json: `exports[\"./package.json\"] must be \"./package.json\".')\n }\n }\n } else if (isRecord(exportEntry)) {\n if (exportPath === '.') {\n if (\n exportEntry.require &&\n rootExport.require &&\n exportEntry.require !== rootExport.require\n ) {\n errors.push(\n 'package.json: mismatch between \"main\" and \"exports.require\". These must be equal.'\n )\n }\n\n if (exportEntry.import && rootExport.import && exportEntry.import !== rootExport.import) {\n errors.push(\n 'package.json: mismatch between \"module\" and \"exports.import\" These must be equal.'\n )\n }\n\n if (exportEntry.types && rootExport.types && exportEntry.types !== rootExport.types) {\n errors.push(\n 'package.json: mismatch between \"types\" and \"exports.types\". These must be equal.'\n )\n }\n\n if (exportEntry.source && rootExport.source && exportEntry.source !== rootExport.source) {\n errors.push(\n 'package.json: mismatch between \"source\" and \"exports.source\". These must be equal.'\n )\n }\n\n Object.assign(rootExport, exportEntry)\n } else {\n const extraExport: PkgExport & {_path: string} = {\n _exported: true,\n _path: exportPath,\n ...exportEntry,\n }\n\n extraExports.push(extraExport)\n }\n } else {\n errors.push('package.json: exports must be an object')\n }\n }\n }\n\n const _exports = [rootExport, ...extraExports]\n\n errors.push(...validateExports(_exports, {extMap, pkg}))\n\n if (errors.length) {\n throw new Error('\\n- ' + errors.join('\\n- '))\n }\n\n return _exports\n}\n","/** @internal */\nexport interface PkgExtMap {\n commonjs: {commonjs: string; esm: string}\n module: {commonjs: string; esm: string}\n}\n\n/** @internal */\nexport const DEFAULT_PKG_EXT_MAP: PkgExtMap = {\n // pkg.type: \"commonjs\"\n commonjs: {\n commonjs: '.js',\n esm: '.mjs',\n },\n\n // pkg.type: \"module\"\n module: {\n commonjs: '.cjs',\n esm: '.js',\n },\n}\n\n/** @internal */\nexport function getPkgExtMap(options: {legacyExports: boolean}): PkgExtMap {\n const {legacyExports} = options\n\n const ret = {...DEFAULT_PKG_EXT_MAP}\n\n // Fall back to legacy file extensions for package.json with `\"type\": \"commonjs\"`\n // NOTE: Not supported by Node 14+ and will be removed in a future version\n if (legacyExports) {\n ret['commonjs'] = {\n commonjs: '.js',\n esm: '.esm.js',\n }\n }\n\n return ret\n}\n","import ts from 'typescript'\n\n/** @internal */\nexport async function loadTSConfig(options: {\n cwd: string\n tsconfigPath: string\n}): Promise<ts.ParsedCommandLine> {\n const {cwd, tsconfigPath} = options\n\n const configPath = ts.findConfigFile(cwd, ts.sys.fileExists, tsconfigPath)\n\n if (!configPath) {\n throw new Error(`could not find a valid '${tsconfigPath}'`)\n }\n\n const configFile = ts.readConfigFile(configPath, ts.sys.readFile)\n\n return ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd)\n}\n","import chalk from 'chalk'\n\n/** @internal */\nexport interface Logger {\n log: (...args: unknown[]) => void\n info: (...args: unknown[]) => void\n warn: (...args: unknown[]) => void\n error: (...args: unknown[]) => void\n success: (...args: unknown[]) => void\n}\n\n/** @internal */\nexport function createLogger(): Logger {\n return {\n /* eslint-disable no-console */\n log: (...args) => {\n console.log(...args)\n },\n info: (...args) => {\n console.log(chalk.blue('[info]'), ...args)\n },\n warn: (...args) => {\n console.log(chalk.yellow('[warning]'), ...args)\n },\n error: (...args) => {\n console.log(chalk.red('[error]'), ...args)\n },\n success: (...args) => {\n console.log(chalk.green('[success]'), ...args)\n },\n /* eslint-enable no-console */\n }\n}\n","import path from 'path'\n\nexport function pathContains(containerPath: string, itemPath: string): boolean {\n return !path.relative(containerPath, itemPath).startsWith('..')\n}\n\nexport function findCommonDirPath(filePaths: string[]): string | undefined {\n let ret: string | undefined = undefined\n\n for (const filePath of filePaths) {\n let dirPath = path.dirname(filePath)\n\n if (!ret) {\n ret = dirPath\n continue\n }\n\n while (dirPath !== ret) {\n dirPath = path.dirname(dirPath)\n\n if (dirPath === ret) {\n break\n }\n\n if (pathContains(dirPath, ret)) {\n ret = dirPath\n break\n }\n\n if (dirPath === '.') return undefined\n }\n }\n\n return ret\n}\n","import browserslist from 'browserslist'\n\nexport interface PackageTargetVersions {\n chrome: string[]\n ff: string[]\n edge: string[]\n iosSaf: string[]\n saf: string[]\n opera: string[]\n node: string[]\n}\n\nfunction sortAsNumber(a: string, b: string) {\n const aVersion = Number(a)\n const bVersion = Number(b)\n\n return aVersion - bVersion\n}\n\nexport function resolveBrowserslistVersions(query: string[]): PackageTargetVersions {\n const result = browserslist(query)\n\n const entries = result.map((key) => {\n const [name, version] = key.split(' ')\n\n return {name, version: version.split('-')[0].split('.')[0]}\n })\n\n const andChr = entries.filter((b) => b.name === 'and_chr')\n const andFf = entries.filter((b) => b.name === 'and_ff')\n const chrome = entries.filter((b) => b.name === 'chrome')\n const edge = entries.filter((b) => b.name === 'edge')\n const ff = entries.filter((b) => b.name === 'firefox')\n const iosSaf = entries.filter((b) => b.name === 'ios_saf')\n const saf = entries.filter((b) => b.name === 'safari')\n const opera = entries.filter((b) => b.name === 'opera')\n const node = entries.filter((b) => b.name === 'node')\n\n // versions\n const versions: PackageTargetVersions = {\n chrome: andChr.concat(chrome).map((b) => b.version),\n ff: andFf.concat(ff).map((b) => b.version),\n edge: edge.map((b) => b.version),\n iosSaf: iosSaf.map((b) => b.version),\n saf: saf.map((b) => b.version),\n opera: opera.map((b) => b.version),\n node: node.map((b) => b.version),\n }\n\n // sort\n versions.chrome.sort(sortAsNumber)\n versions.ff.sort(sortAsNumber)\n versions.edge.sort(sortAsNumber)\n versions.iosSaf.sort(sortAsNumber)\n versions.saf.sort(sortAsNumber)\n versions.opera.sort(sortAsNumber)\n versions.node.sort(sortAsNumber)\n\n return versions\n}\n","import {PackageTargetVersions} from './resolveBrowserslistVersions'\n\nexport function resolveBrowserTarget(versions: PackageTargetVersions): string[] | undefined {\n const target: string[] = []\n\n if (versions.chrome.length) {\n target.push(`chrome${versions.chrome[0]}`)\n }\n\n if (versions.ff.length) {\n target.push(`firefox${versions.ff[0]}`)\n }\n\n if (versions.edge.length) {\n target.push(`edge${versions.edge[0]}`)\n }\n\n if (versions.iosSaf.length) {\n target.push(`ios${versions.iosSaf[0]}`)\n }\n\n if (versions.saf.length) {\n target.push(`safari${versions.saf[0]}`)\n }\n\n if (versions.opera.length) {\n target.push(`opera${versions.opera[0]}`)\n }\n\n if (target.length === 0) {\n return undefined\n }\n\n return target\n}\n","import {PackageTargetVersions} from './resolveBrowserslistVersions'\n\nexport function resolveNodeTarget(versions: PackageTargetVersions): string[] | undefined {\n const target: string[] = []\n\n if (versions.node.length) {\n target.push(`node${versions.node[0]}`)\n }\n\n if (target.length === 0) {\n return undefined\n }\n\n return target\n}\n","import path from 'path'\n\nimport {\n BuildContext,\n DEFAULT_BROWSERSLIST_QUERY,\n loadTSConfig,\n PackageJSON,\n parseExports,\n PkgConfigOptions,\n PkgExports,\n PkgExtMap,\n PkgRuntime,\n resolveConfigProperty,\n} from './core'\nimport {findCommonDirPath, pathContains} from './core/findCommonPath'\nimport {Logger} from './logger'\nimport {resolveBrowserslistVersions} from './resolveBrowserslistVersions'\nimport {resolveBrowserTarget} from './resolveBrowserTarget'\nimport {resolveNodeTarget} from './resolveNodeTarget'\n\nexport async function resolveBuildContext(options: {\n config?: PkgConfigOptions\n cwd: string\n emitDeclarationOnly?: boolean\n extMap: PkgExtMap\n logger: Logger\n pkg: PackageJSON\n strict: boolean\n tsconfig: string\n}): Promise<BuildContext> {\n const {\n config,\n cwd,\n emitDeclarationOnly = false,\n extMap,\n logger,\n pkg,\n strict,\n tsconfig: tsconfigPath,\n } = options\n const tsconfig = await loadTSConfig({cwd, tsconfigPath})\n const targetVersions = resolveBrowserslistVersions(pkg.browserslist || DEFAULT_BROWSERSLIST_QUERY)\n const nodeTarget = resolveNodeTarget(targetVersions)\n const webTarget = resolveBrowserTarget(targetVersions)\n\n if (!nodeTarget) {\n throw new Error('no matching `node` target')\n }\n\n if (!webTarget) {\n throw new Error('no matching `web` target')\n }\n\n const target: Record<PkgRuntime, string[]> = {\n '*': webTarget.concat(nodeTarget),\n browser: webTarget,\n node: nodeTarget,\n }\n\n const parsedExports = parseExports({extMap, pkg, strict}).reduce<PkgExports>((acc, x) => {\n const {_path: exportPath, ...exportEntry} = x\n\n return {...acc, [exportPath]: exportEntry}\n }, {})\n\n const exports = resolveConfigProperty(config?.exports, parsedExports)\n\n const parsedExternal = [\n ...(pkg.dependencies ? Object.keys(pkg.dependencies) : []),\n ...(pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : []),\n ]\n\n // Merge externals if an array is provided, replace if it's a function\n const external =\n config && Array.isArray(config.external)\n ? [...parsedExternal, ...config.external]\n : resolveConfigProperty(config?.external, parsedExternal)\n\n const outputPaths = Object.values(exports)\n .flatMap((exportEntry) => {\n return [\n exportEntry.import,\n exportEntry.require,\n exportEntry.browser?.import,\n exportEntry.browser?.require,\n exportEntry.node?.source && exportEntry.node.import,\n exportEntry.node?.source && exportEntry.node.require,\n ].filter(Boolean) as string[]\n })\n .map((p) => path.resolve(cwd, p))\n\n const commonDistPath = findCommonDirPath(outputPaths)\n\n if (commonDistPath === cwd) {\n throw new Error(\n 'all output files must share a common parent directory which is not the root package directory'\n )\n }\n\n if (commonDistPath && !pathContains(cwd, commonDistPath)) {\n throw new Error('all output files must be located within the package')\n }\n\n const configDistPath = config?.dist ? path.resolve(cwd, config.dist) : undefined\n\n if (\n configDistPath &&\n commonDistPath &&\n configDistPath !== commonDistPath &&\n !pathContains(configDistPath, commonDistPath)\n ) {\n logger.log(`did you mean to configure \\`dist: './${path.relative(cwd, commonDistPath)}'\\`?`)\n\n throw new Error('all output files must be located with the configured `dist` path')\n }\n\n const distPath = configDistPath || commonDistPath\n\n if (!distPath) {\n throw new Error('could not detect `dist` path')\n }\n\n const ctx: BuildContext = {\n config,\n cwd,\n distPath,\n emitDeclarationOnly,\n exports,\n external,\n extMap,\n files: [],\n logger,\n pkg,\n runtime: config?.runtime ?? '*',\n strict,\n target,\n ts: {\n config: tsconfig,\n configPath: tsconfigPath,\n },\n }\n\n return ctx\n}\n"],"names":["fileExists","filePath","statSync","_","CONFIG_FILE_NAMES","findConfigFile","cwd","pkgJsonPath","findConfig","default","pkgPath","path","dirname","fileName","configPath","resolve","exists","loadConfig","options","pkgUp","root","configFile","startsWith","esbuildOptions","extensions","unregister","globalThis","__DEV__","register","mod","require","resolveConfigProperty","prop","initialValue","DEFAULT_BROWSERSLIST_QUERY","isRecord","value","Boolean","Array","isArray","pkgSchema","z","object","type","optional","enum","name","string","version","license","bin","record","dependencies","devDependencies","peerDependencies","source","main","browser","module","types","exports","union","custom","val","test","import","node","browserslist","array","validatePkg","input","parse","loadPkg","Error","buf","fs","readFile","raw","JSON","toString","assertFirst","a","arr","aIdx","indexOf","assertLast","length","assertOrder","b","bIdx","loadPkgWithReporting","logger","pkg","_exports","Object","entries","expPath","exp","keys","warn","concat","err","ZodError","issue","issues","code","error","formatPath","chalk","magenta","expected","received","join","process","exit","segments","map","s","idx","validateExports","extMap","ext","errors","endsWith","commonjs","push","_path","esm","parseExports","strict","rootExport","_exported","extraExports","exportPath","exportEntry","assign","extraExport","DEFAULT_PKG_EXT_MAP","getPkgExtMap","legacyExports","ret","loadTSConfig","tsconfigPath","ts","sys","readConfigFile","parseJsonConfigFileContent","config","createLogger","log","console","arguments","info","_len","args","_key","blue","_len2","_key2","yellow","_len3","_key3","red","success","_len4","_key4","green","pathContains","containerPath","itemPath","relative","findCommonDirPath","filePaths","dirPath","sortAsNumber","aVersion","Number","bVersion","resolveBrowserslistVersions","query","result","key","split","andChr","filter","andFf","chrome","edge","ff","iosSaf","saf","opera","versions","sort","resolveBrowserTarget","target","resolveNodeTarget","resolveBuildContext","_ref","emitDeclarationOnly","tsconfig","targetVersions","nodeTarget","webTarget","parsedExports","reduce","acc","x","parsedExternal","external","outputPaths","values","flatMap","_a","_b","_c","_d","p","commonDistPath","configDistPath","dist","distPath","ctx","files","runtime"],"mappings":"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"}