@sanity/pkg-utils 2.2.16 → 2.3.0

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 (84) hide show
  1. package/README.md +16 -7
  2. package/dist/_chunks/{build-ba8f4eab.cjs → build-0aed2000.cjs} +11 -8
  3. package/dist/_chunks/build-0aed2000.cjs.map +1 -0
  4. package/dist/_chunks/{buildAction-f35f5fe0.cjs → buildAction-196fba7b.cjs} +2 -2
  5. package/dist/_chunks/{buildAction-f35f5fe0.cjs.map → buildAction-196fba7b.cjs.map} +1 -1
  6. package/dist/_chunks/{check-c18ac13f.cjs → check-2deafe2a.cjs} +25 -31
  7. package/dist/_chunks/check-2deafe2a.cjs.map +1 -0
  8. package/dist/_chunks/{checkAction-be47c642.cjs → checkAction-7ac5a05e.cjs} +2 -2
  9. package/dist/_chunks/{checkAction-be47c642.cjs.map → checkAction-7ac5a05e.cjs.map} +1 -1
  10. package/dist/_chunks/{index-b295a336.cjs → index-984e18d1.cjs} +6 -3
  11. package/dist/_chunks/index-984e18d1.cjs.map +1 -0
  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-2239fc5e.cjs → resolveBuildContext-5ef90110.cjs} +13 -92
  19. package/dist/_chunks/resolveBuildContext-5ef90110.cjs.map +1 -0
  20. package/dist/_chunks/{watch-5bfb8b28.cjs → watch-63a93eb0.cjs} +10 -7
  21. package/dist/_chunks/watch-63a93eb0.cjs.map +1 -0
  22. package/dist/_chunks/{watchAction-788563ea.cjs → watchAction-95c0b481.cjs} +2 -2
  23. package/dist/_chunks/{watchAction-788563ea.cjs.map → watchAction-95c0b481.cjs.map} +1 -1
  24. package/dist/cli.cjs +17 -7
  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 +465 -32
  30. package/dist/index.js.map +1 -1
  31. package/package.json +93 -79
  32. package/src/cli/index.ts +12 -3
  33. package/src/cli/initAction.ts +13 -0
  34. package/src/node/build.ts +1 -1
  35. package/src/node/check.ts +4 -2
  36. package/src/node/core/config/findConfigFile.ts +6 -14
  37. package/src/node/core/config/index.ts +1 -1
  38. package/src/node/core/config/loadConfig.ts +2 -1
  39. package/src/node/core/contexts/buildContext.ts +2 -1
  40. package/src/node/core/findCommonPath.test.ts +1 -0
  41. package/src/node/core/index.ts +3 -2
  42. package/src/node/core/pkg/loadPkg.ts +1 -0
  43. package/src/node/core/pkg/loadPkgWithReporting.ts +1 -0
  44. package/src/node/core/pkg/types.ts +13 -0
  45. package/src/node/core/pkg/validatePkg.ts +1 -0
  46. package/src/node/core/template/createFromTemplate.ts +85 -0
  47. package/src/node/core/template/define.ts +6 -0
  48. package/src/node/core/template/index.ts +3 -0
  49. package/src/node/core/template/types.ts +45 -0
  50. package/src/node/fileExists.ts +12 -0
  51. package/src/node/globFiles.ts +1 -1
  52. package/src/node/index.ts +1 -0
  53. package/src/node/init.ts +55 -0
  54. package/src/node/isEmptyDirectory.ts +5 -0
  55. package/src/node/printExtractMessages.ts +2 -1
  56. package/src/node/printPackageTree.ts +4 -13
  57. package/src/node/resolveBuildContext.ts +5 -4
  58. package/src/node/resolveBuildTasks.ts +2 -1
  59. package/src/node/resolveWatchTasks.ts +3 -2
  60. package/src/node/tasks/dts/buildTypes.ts +1 -0
  61. package/src/node/tasks/dts/createApiExtractorConfig.ts +1 -1
  62. package/src/node/tasks/dts/createTSDocConfig.ts +1 -1
  63. package/src/node/tasks/dts/doExtract.ts +2 -1
  64. package/src/node/tasks/dts/dtsTask.ts +1 -0
  65. package/src/node/tasks/dts/dtsWatchTask.ts +1 -0
  66. package/src/node/tasks/dts/extractTypes.ts +4 -3
  67. package/src/node/tasks/dts/getExtractMessagesConfig.ts +2 -1
  68. package/src/node/tasks/dts/printDiagnostic.ts +2 -1
  69. package/src/node/tasks/index.ts +1 -1
  70. package/src/node/tasks/node/reexportCjsTask.ts +3 -2
  71. package/src/node/tasks/rollup/resolveRollupConfig.ts +2 -1
  72. package/src/node/tasks/rollup/rollupTask.ts +2 -1
  73. package/src/node/tasks/rollup/rollupWatchTask.ts +2 -1
  74. package/src/node/tasks/types.ts +2 -1
  75. package/src/node/templates/default/index.ts +1 -0
  76. package/src/node/templates/default/template.ts +553 -0
  77. package/src/node/templates/index.ts +1 -0
  78. package/src/node/watch.ts +2 -1
  79. package/src/node/watchConfigFiles.ts +1 -0
  80. package/dist/_chunks/build-ba8f4eab.cjs.map +0 -1
  81. package/dist/_chunks/check-c18ac13f.cjs.map +0 -1
  82. package/dist/_chunks/index-b295a336.cjs.map +0 -1
  83. package/dist/_chunks/resolveBuildContext-2239fc5e.cjs.map +0 -1
  84. package/dist/_chunks/watch-5bfb8b28.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'
package/src/node/watch.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import path from 'path'
2
2
  import {switchMap} from 'rxjs'
3
+
3
4
  import {getPkgExtMap, loadConfig, loadPkgWithReporting} from './core'
4
5
  import {createLogger} from './logger'
5
6
  import {resolveBuildContext} from './resolveBuildContext'
6
7
  import {resolveWatchTasks} from './resolveWatchTasks'
7
- import {WatchTask, TaskHandler, watchTaskHandlers} from './tasks'
8
+ import {TaskHandler, WatchTask, watchTaskHandlers} from './tasks'
8
9
  import {watchConfigFiles} from './watchConfigFiles'
9
10
 
10
11
  /** @public */
@@ -1,6 +1,7 @@
1
1
  import path from 'path'
2
2
  import {Observable} from 'rxjs'
3
3
  import {distinctUntilChanged, scan, startWith} from 'rxjs/operators'
4
+
4
5
  import {globFiles} from './globFiles'
5
6
  import {Logger} from './logger'
6
7
  import {watchFiles} from './watchFiles'
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-ba8f4eab.cjs","sources":["../../src/node/resolveBuildTasks.ts","../../src/node/spinner.ts","../../src/node/build.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport {PkgExport, PkgFormat, PkgRuntime, BuildContext} from './core'\nimport {BuildTask, DtsTask, NodeReExportFromCJSTask, RollupTask, RollupTaskEntry} from './tasks'\n\n/** @internal */\nexport function resolveBuildTasks(ctx: BuildContext): BuildTask[] {\n const {config, cwd, pkg, target} = ctx\n\n const bundles = config?.bundles || []\n\n const tasks: BuildTask[] = []\n\n const exports = Object.entries(ctx.exports || {}).map(\n ([_path, exp]) => ({_path, ...exp} as PkgExport & {_path: string})\n )\n\n const dtsTask: DtsTask = {\n type: 'build:dts',\n entries: [],\n }\n\n const rollupTasks: Record<string, RollupTask> = {}\n\n function addRollupTaskEntry(format: PkgFormat, runtime: PkgRuntime, entry: RollupTaskEntry) {\n const buildId = `${format}:${runtime}`\n\n if (rollupTasks[buildId]) {\n rollupTasks[buildId].entries.push(entry)\n } else {\n rollupTasks[buildId] = {\n type: 'build:js',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n\n // Parse `dts` tasks\n for (const exp of exports) {\n const importId = path.join(pkg.name, exp._path)\n\n if (exp.types) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.source,\n targetPath: exp.types,\n })\n }\n }\n\n // Add dts task\n if (dtsTask.entries.length) {\n tasks.push(dtsTask)\n }\n\n if (!ctx.emitDeclarationOnly) {\n // Parse rollup:commonjs:* tasks\n for (const exp of exports) {\n const output = exp.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:* tasks\n for (const exp of exports) {\n const output = exp.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:commonjs:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n for (const bundle of bundles) {\n if (bundle.require) {\n addRollupTaskEntry('commonjs', bundle.runtime || ctx.runtime, {\n path: '__bundle__',\n source: bundle.source,\n output: bundle.require,\n })\n }\n\n if (bundle.import) {\n addRollupTaskEntry('commonjs', bundle.runtime || ctx.runtime, {\n path: '__bundle__',\n source: bundle.source,\n output: bundle.import,\n })\n }\n }\n\n tasks.push(...Object.values(rollupTasks))\n\n // Write legacy exports files\n if (config?.legacyExports) {\n for (const exp of exports) {\n if (exp._exported && exp._path !== '.') {\n const relativeTargetPath = (exp.browser?.import || exp.import || '').replace(\n /\\.[^/.]+$/,\n ''\n )\n\n if (relativeTargetPath) {\n fs.writeFileSync(\n path.resolve(cwd, `${exp._path}.js`),\n [`// AUTO-GENERATED – DO NOT EDIT`, `export * from '${relativeTargetPath}'`, ``].join(\n '\\n'\n )\n )\n }\n }\n }\n }\n }\n\n const nodeReexportCjsEntries: NodeReExportFromCJSTask['entries'] = []\n\n // Parse tasks to re-export from CommonJS for Node.js\n for (const exp of exports) {\n if (\n exp.node &&\n !exp.node.source &&\n exp.node.import &&\n exp.node.require &&\n (exp.node.import.endsWith('.cjs.js') || exp.node.import.endsWith('.cjs.mjs'))\n ) {\n const importId = path.join(pkg.name, exp._path)\n\n nodeReexportCjsEntries.push({\n importId,\n import: exp.node.import,\n require: exp.node.require,\n })\n }\n }\n\n if (nodeReexportCjsEntries.length) {\n tasks.push({\n type: 'node:reexport-cjs',\n entries: nodeReexportCjsEntries,\n })\n }\n\n return tasks\n}\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk'\n\nexport function createSpinner(msg: string): {complete: () => void; error: () => void} {\n const startTime = Date.now()\n\n console.log(msg)\n\n return {\n complete: () => {\n console.log(`${chalk.green('[success]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n error: () => {\n console.log(`${chalk.red(`[error]`)} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n }\n}\n","import {getPkgExtMap, loadConfig, loadPkgWithReporting} from './core'\nimport {createLogger} from './logger'\nimport {resolveBuildContext} from './resolveBuildContext'\nimport {resolveBuildTasks} from './resolveBuildTasks'\nimport {createSpinner} from './spinner'\nimport {BuildTask, TaskHandler, buildTaskHandlers} from './tasks'\n\n/**\n * Build the distribution files of a npm package.\n *\n * @example\n * ```ts\n * import {build} from '@sanity/pkg-utils'\n *\n * build({\n * cwd: process.cwd(),\n * tsconfig: 'tsconfig.dist.json,\n * }).then(() => {\n * console.log('successfully built')\n * }).catch((err) => {\n * console.log(`build error: ${err.message}`)\n * })\n * ```\n *\n * @public\n */\nexport async function build(options: {\n cwd: string\n emitDeclarationOnly?: boolean\n strict?: boolean\n tsconfig?: string\n}): Promise<void> {\n const {cwd, emitDeclarationOnly, strict = false, tsconfig: tsconfigOption} = options\n const logger = createLogger()\n\n const pkg = await loadPkgWithReporting({cwd, logger})\n const config = await loadConfig({cwd})\n const extMap = getPkgExtMap({legacyExports: config?.legacyExports ?? false})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n const ctx = await resolveBuildContext({\n config,\n cwd,\n emitDeclarationOnly,\n extMap,\n logger,\n pkg,\n strict,\n tsconfig,\n })\n\n const buildTasks = resolveBuildTasks(ctx)\n\n for (const task of buildTasks) {\n const handler = buildTaskHandlers[task.type] as TaskHandler<BuildTask>\n const taskName = handler.name(ctx, task)\n\n const spinner = createSpinner(taskName)\n\n try {\n const result = await handler.exec(ctx, task).toPromise()\n\n spinner.complete()\n ctx.logger.log()\n\n handler.complete(ctx, task, result)\n } catch (err) {\n spinner.error()\n\n if (err instanceof Error) {\n const RE_CWD = new RegExp(`${cwd}`, 'g')\n\n ctx.logger.error(err.message.replace(RE_CWD, '.'))\n ctx.logger.log()\n }\n\n handler.error(ctx, task, err)\n\n process.exit(1)\n }\n }\n}\n"],"names":["resolveBuildTasks","ctx","_a","_b","_c","_d","_e","config","cwd","pkg","target","bundles","tasks","exports","Object","entries","map","_ref","_path","exp","dtsTask","type","rollupTasks","addRollupTaskEntry","format","runtime","entry","buildId","concat","push","importId","path","join","name","types","exportPath","sourcePath","source","targetPath","length","emitDeclarationOnly","output","require","import","browser","bundle","values","legacyExports","_exported","relativeTargetPath","replace","fs","writeFileSync","default","resolve","nodeReexportCjsEntries","node","endsWith","createSpinner","msg","startTime","Date","now","console","log","complete","chalk","green","gray","error","red","build","options","_ref2","strict","tsconfig","tsconfigOption","logger","createLogger","loadPkgWithReporting","loadConfig","extMap","getPkgExtMap","resolveBuildContext","buildTasks","task","handler","buildTaskHandlers","taskName","spinner","result","exec","toPromise","err","Error","RE_CWD","RegExp","message","process","exit"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-c18ac13f.cjs","sources":["../../src/node/getFilesize.ts","../../src/node/printPackageTree.ts","../../src/node/check.ts"],"sourcesContent":["import {statSync} from 'fs'\nimport prettyBytes from 'pretty-bytes'\n\nexport function getFilesize(file: string): string {\n const stats = statSync(file)\n\n return prettyBytes(stats.size)\n}\n","import fs from 'fs'\nimport path from 'path'\nimport chalk from 'chalk'\nimport treeify from 'treeify'\nimport {PkgExport, BuildContext} from './core'\nimport {getFilesize} from './getFilesize'\n\nexport function fileExists(file: string): boolean {\n try {\n fs.accessSync(file)\n\n return true\n } catch (_) {\n return false\n }\n}\n\nfunction getFileInfo(cwd: string, filePath: string) {\n const p = path.resolve(cwd, filePath)\n const exists = fileExists(p)\n const size = exists ? getFilesize(p) : undefined\n\n return {exists, size}\n}\n\nexport function printPackageTree(ctx: BuildContext): void {\n const {cwd, exports, logger, pkg} = ctx\n\n if (!exports) return\n\n logger.log(`${chalk.blue(pkg.name)}@${chalk.green(pkg.version)}`)\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tree: Record<string, unknown> = {}\n\n if (pkg.type) {\n tree.type = chalk.yellow(pkg.type)\n }\n\n if (pkg.bin) {\n tree.bin = Object.fromEntries(\n Object.entries(pkg.bin).map(([name, file]) => [chalk.cyan(name), fileInfo(file)])\n )\n }\n\n function fileInfo(file: string) {\n const info = getFileInfo(cwd, file)\n\n if (!info.size) {\n return `${chalk.gray(file)} ${chalk.red('does not exist')}`\n }\n\n return `${chalk.yellow(file)} ${chalk.gray(info.size)}`\n }\n\n tree.exports = Object.fromEntries(\n Object.entries(exports)\n .filter(([, entry]) => entry._exported)\n .map(([exportPath, entry]) => {\n const exp: Omit<PkgExport, '_exported'> = {\n types: undefined,\n source: fileInfo(entry.source),\n browser: undefined,\n require: undefined,\n node: undefined,\n import: undefined,\n default: fileInfo(entry.default),\n }\n\n if (entry.types) {\n exp.types = fileInfo(entry.types)\n } else {\n delete exp.types\n }\n\n if (entry.browser) {\n exp.browser = {source: fileInfo(entry.browser.source)}\n\n if (entry.browser.import) exp.browser.import = fileInfo(entry.browser.import)\n if (entry.browser.require) exp.browser.require = fileInfo(entry.browser.require)\n } else {\n delete exp.browser\n }\n\n if (entry.require) {\n exp.require = fileInfo(entry.require)\n } else {\n delete exp.require\n }\n\n if (entry.node) {\n exp.node = {}\n\n if (entry.node.source) exp.node.source = fileInfo(entry.node.source)\n if (entry.node.import) exp.node.import = fileInfo(entry.node.import)\n if (entry.node.require) exp.node.require = fileInfo(entry.node.require)\n } else {\n delete exp.node\n }\n\n if (entry.import) {\n exp.import = fileInfo(entry.import)\n } else {\n delete exp.import\n }\n\n return [chalk.cyan(path.join(pkg.name, exportPath)), exp]\n })\n )\n\n logger.log(treeify.asTree(tree as Record<string, any>, true, true))\n}\n","import path from 'path'\nimport esbuild, {BuildFailure} from 'esbuild'\nimport {getPkgExtMap, loadConfig, loadPkgWithReporting} from './core'\nimport {createLogger} from './logger'\nimport {fileExists, printPackageTree} from './printPackageTree'\nimport {resolveBuildContext} from './resolveBuildContext'\n\n/** @public */\nexport async function check(options: {\n cwd: string\n strict?: boolean\n tsconfig?: string\n}): Promise<void> {\n const {cwd, strict = false, tsconfig: tsconfigOption} = options\n const logger = createLogger()\n\n const pkg = await loadPkgWithReporting({cwd, logger})\n const config = await loadConfig({cwd})\n const extMap = getPkgExtMap({legacyExports: config?.legacyExports ?? false})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n const ctx = await resolveBuildContext({config, cwd, extMap, logger, pkg, strict, tsconfig})\n\n printPackageTree(ctx)\n\n if (strict) {\n const missingFiles: string[] = []\n\n // Check if there are missing files\n for (const [, exp] of Object.entries(ctx.exports || {})) {\n if (exp.source && !fileExists(path.resolve(cwd, exp.source))) {\n missingFiles.push(exp.source)\n }\n\n if (exp.require && !fileExists(path.resolve(cwd, exp.require))) {\n missingFiles.push(exp.require)\n }\n\n if (exp.import && !fileExists(path.resolve(cwd, exp.import))) {\n missingFiles.push(exp.import)\n }\n\n if (exp.types && !fileExists(path.resolve(cwd, exp.types))) {\n missingFiles.push(exp.types)\n }\n }\n\n if (missingFiles.length) {\n logger.error('missing files')\n process.exit(1)\n }\n\n // Check if the files are resolved\n const _paths: {require: string[]; import: string[]} = {\n require: [],\n import: [],\n }\n\n for (const exp of Object.values(ctx.exports || {})) {\n if (!exp._exported) continue\n if (exp.require) _paths.require.push(exp.require)\n if (exp.import) _paths.import.push(exp.import)\n }\n\n const external = Object.keys(pkg.dependencies || {}).concat(\n Object.keys(pkg.devDependencies || {})\n )\n\n if (_paths.import.length) {\n const code = _paths.import.map((id) => `import('${id}')`).join('\\n')\n\n try {\n const esbuildResult = await esbuild.build({\n external,\n stdin: {\n contents: code,\n loader: 'js',\n resolveDir: cwd,\n },\n format: 'esm',\n bundle: true,\n logLevel: 'silent',\n // otherwise output maps to stdout as we're using stdin\n outfile: '/dev/null',\n platform: 'node',\n })\n\n if (esbuildResult.warnings.length > 0) {\n logger.warn(...esbuildResult.warnings)\n }\n } catch (err) {\n const {errors} = err as BuildFailure\n\n for (const _err of errors) {\n if (_err.location) {\n logger.error(_err.detail || _err.text)\n logger.error(`${_err.location.line} | ${_err.location.lineText}`)\n logger.error(\n 'in',\n `./${_err.location.file}:${_err.location.line}:${_err.location.column}`\n )\n } else {\n logger.error(_err.detail || _err.text)\n }\n\n logger.log()\n }\n\n process.exit(1)\n }\n }\n\n if (_paths.require.length) {\n const code = _paths.require.map((id) => `require('${id}')`).join('\\n')\n\n const esbuildResult = await esbuild.build({\n external,\n stdin: {\n contents: code,\n loader: 'js',\n resolveDir: cwd,\n },\n format: 'cjs',\n bundle: true,\n // otherwise output maps to stdout as we're using stdin\n outfile: '/dev/null',\n platform: 'node',\n })\n\n if (esbuildResult.errors.length > 0) {\n // throw new Error(esbuildResult.errors.join(', '))\n logger.error(esbuildResult.errors.join(', '))\n process.exit(1)\n }\n\n if (esbuildResult.warnings.length > 0) {\n logger.warn(...esbuildResult.warnings)\n }\n }\n }\n}\n"],"names":["getFilesize","file","stats","statSync","prettyBytes","default","size","fileExists","fs","accessSync","_","getFileInfo","cwd","filePath","p","path","resolve","exists","printPackageTree","ctx","exports","logger","pkg","log","concat","chalk","blue","name","green","version","tree","type","yellow","bin","Object","fromEntries","entries","map","_ref","cyan","fileInfo","info","gray","red","filter","_ref2","entry","_exported","_ref3","exportPath","exp","types","source","browser","require","node","import","join","treeify","asTree","check","options","_ref4","strict","tsconfig","tsconfigOption","createLogger","loadPkgWithReporting","config","loadConfig","extMap","getPkgExtMap","legacyExports","resolveBuildContext","missingFiles","push","length","error","process","exit","_paths","values","external","keys","dependencies","devDependencies","code","id","esbuildResult","esbuild","build","stdin","contents","loader","resolveDir","format","bundle","logLevel","outfile","platform","warnings","warn","err","errors","_err","location","detail","text","line","lineText","column"],"mappings":"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"}