@sanity/pkg-utils 1.10.0 → 1.12.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 (56) hide show
  1. package/README.md +134 -0
  2. package/bin/pkg-utils.js +2 -0
  3. package/dist/_chunks/_handleError-869dec25.js +22 -0
  4. package/dist/_chunks/_handleError-869dec25.js.map +1 -0
  5. package/dist/{__resolveBuildContext-6eae01b8.cjs → _chunks/_resolveBuildContext-ef196a3e.js} +138 -48
  6. package/dist/_chunks/_resolveBuildContext-ef196a3e.js.map +1 -0
  7. package/dist/{_build-ca3c98fa.cjs → _chunks/build-8b5bd627.js} +4 -11
  8. package/dist/_chunks/build-8b5bd627.js.map +1 -0
  9. package/dist/{_buildAction-9dfec4e0.cjs → _chunks/buildAction-87c64945.js} +14 -8
  10. package/dist/_chunks/buildAction-87c64945.js.map +1 -0
  11. package/dist/{_check-999d6370.cjs → _chunks/check-7d728336.js} +2 -2
  12. package/dist/_chunks/check-7d728336.js.map +1 -0
  13. package/dist/{_checkAction-1e3718d5.cjs → _chunks/checkAction-2342707c.js} +14 -8
  14. package/dist/_chunks/checkAction-2342707c.js.map +1 -0
  15. package/dist/{_index-af5d7ae6.cjs → _chunks/index-4a1fe6d6.js} +9 -19
  16. package/dist/_chunks/index-4a1fe6d6.js.map +1 -0
  17. package/dist/{_watch-98f2f5d3.cjs → _chunks/watch-ccb7daf2.js} +4 -11
  18. package/dist/_chunks/watch-ccb7daf2.js.map +1 -0
  19. package/dist/{_watchAction-c065319c.cjs → _chunks/watchAction-b7c1e241.js} +14 -8
  20. package/dist/_chunks/watchAction-b7c1e241.js.map +1 -0
  21. package/dist/{cli.cjs → cli.js} +5 -5
  22. package/dist/cli.js.map +1 -0
  23. package/dist/index.d.ts +3 -4
  24. package/dist/index.esm.js +5389 -0
  25. package/dist/index.esm.js.map +1 -0
  26. package/dist/index.js +64 -5265
  27. package/dist/index.js.map +1 -1
  28. package/package.json +11 -12
  29. package/src/cli/_handleError.ts +11 -0
  30. package/src/cli/buildAction.ts +9 -4
  31. package/src/cli/checkAction.ts +10 -5
  32. package/src/cli/watchAction.ts +9 -4
  33. package/src/node/_core/_constants.ts +7 -3
  34. package/src/node/_core/_findCommonPath.test.ts +9 -0
  35. package/src/node/_core/_findCommonPath.ts +35 -0
  36. package/src/node/_core/config/types.ts +2 -2
  37. package/src/node/_core/contexts/buildContext.ts +1 -2
  38. package/src/node/_core/pkg/_loadPkgWithReporting.ts +23 -3
  39. package/src/node/_core/pkg/_validateExports.ts +10 -12
  40. package/src/node/_resolveBuildContext.ts +70 -29
  41. package/src/node/_resolveBuildTasks.ts +3 -8
  42. package/src/node/_resolveWatchTasks.ts +3 -8
  43. package/src/node/_tasks/rollup/_resolveRollupConfig.ts +4 -6
  44. package/src/node/_tasks/rollup/_rollupTask.ts +2 -1
  45. package/bin/pkg-utils.cjs +0 -2
  46. package/dist/__resolveBuildContext-6eae01b8.cjs.map +0 -1
  47. package/dist/_build-ca3c98fa.cjs.map +0 -1
  48. package/dist/_buildAction-9dfec4e0.cjs.map +0 -1
  49. package/dist/_check-999d6370.cjs.map +0 -1
  50. package/dist/_checkAction-1e3718d5.cjs.map +0 -1
  51. package/dist/_index-af5d7ae6.cjs.map +0 -1
  52. package/dist/_watch-98f2f5d3.cjs.map +0 -1
  53. package/dist/_watchAction-c065319c.cjs.map +0 -1
  54. package/dist/cli.cjs.map +0 -1
  55. package/dist/index.cjs +0 -109
  56. package/dist/index.cjs.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
- "type": "module",
3
2
  "name": "@sanity/pkg-utils",
4
- "version": "1.10.0",
3
+ "version": "1.12.0",
5
4
  "author": "Sanity.io <hello@sanity.io>",
6
5
  "license": "MIT",
7
6
  "description": "Simple utilities for modern npm packages.",
@@ -15,21 +14,21 @@
15
14
  "bundling"
16
15
  ],
17
16
  "source": "./src/node/index.ts",
18
- "main": "./dist/index.cjs",
19
- "module": "./dist/index.js",
17
+ "main": "./dist/index.js",
18
+ "module": "./dist/index.esm.js",
20
19
  "types": "./dist/index.d.ts",
21
20
  "exports": {
22
21
  ".": {
23
22
  "types": "./dist/index.d.ts",
24
23
  "source": "./src/node/index.ts",
25
- "import": "./dist/index.js",
26
- "require": "./dist/index.cjs",
27
- "default": "./dist/index.js"
24
+ "import": "./dist/index.esm.js",
25
+ "require": "./dist/index.js",
26
+ "default": "./dist/index.esm.js"
28
27
  }
29
28
  },
30
29
  "bin": {
31
- "pkg": "./bin/pkg-utils.cjs",
32
- "pkg-utils": "./bin/pkg-utils.cjs"
30
+ "pkg": "./bin/pkg-utils.js",
31
+ "pkg-utils": "./bin/pkg-utils.js"
33
32
  },
34
33
  "files": [
35
34
  "bin",
@@ -38,8 +37,8 @@
38
37
  ],
39
38
  "scripts": {
40
39
  "build": "run-s clean build:pkg check:pkg",
41
- "build:pkg": "node --experimental-loader ./scripts/_experimental-loader.js --no-warnings -r esbuild-register scripts/build",
42
- "check:pkg": "node --experimental-loader ./scripts/_experimental-loader.js --no-warnings -r esbuild-register scripts/check",
40
+ "build:pkg": "node -r esbuild-register scripts/build",
41
+ "check:pkg": "node -r esbuild-register scripts/check",
43
42
  "check:types": "tsc --build",
44
43
  "clean": "rimraf dist test/env/__tmp__",
45
44
  "commit": "cz",
@@ -49,7 +48,7 @@
49
48
  "prepublishOnly": "pnpm run build",
50
49
  "release": "semantic-release",
51
50
  "test": "vitest run",
52
- "watch": "node --experimental-loader ./scripts/_experimental-loader.js --no-warnings -r esbuild-register scripts/watch"
51
+ "watch": "node -r esbuild-register scripts/watch"
53
52
  },
54
53
  "dependencies": {
55
54
  "@babel/core": "^7.19.0",
@@ -0,0 +1,11 @@
1
+ /* eslint-disable no-console */
2
+
3
+ import chalk from 'chalk'
4
+
5
+ export function _handleError(err: unknown): void {
6
+ if (err instanceof Error) {
7
+ console.error(chalk.red('error'), err.message)
8
+ }
9
+
10
+ process.exit(1)
11
+ }
@@ -1,8 +1,13 @@
1
1
  import {build} from '../node/build'
2
+ import {_handleError} from './_handleError'
2
3
 
3
4
  export async function buildAction(options: {tsconfig?: string}): Promise<void> {
4
- return await build({
5
- cwd: process.cwd(),
6
- tsconfig: options.tsconfig,
7
- })
5
+ try {
6
+ await build({
7
+ cwd: process.cwd(),
8
+ tsconfig: options.tsconfig,
9
+ })
10
+ } catch (err) {
11
+ _handleError(err)
12
+ }
8
13
  }
@@ -1,9 +1,14 @@
1
1
  import {check} from '../node/check'
2
+ import {_handleError} from './_handleError'
2
3
 
3
4
  export async function checkAction(options: {strict?: boolean; tsconfig?: string}): Promise<void> {
4
- return await check({
5
- cwd: process.cwd(),
6
- strict: options.strict,
7
- tsconfig: options.tsconfig,
8
- })
5
+ try {
6
+ await check({
7
+ cwd: process.cwd(),
8
+ strict: options.strict,
9
+ tsconfig: options.tsconfig,
10
+ })
11
+ } catch (err) {
12
+ _handleError(err)
13
+ }
9
14
  }
@@ -1,8 +1,13 @@
1
1
  import {watch} from '../node/watch'
2
+ import {_handleError} from './_handleError'
2
3
 
3
4
  export async function watchAction(options: {tsconfig?: string}): Promise<void> {
4
- return await watch({
5
- cwd: process.cwd(),
6
- tsconfig: options.tsconfig,
7
- })
5
+ try {
6
+ await watch({
7
+ cwd: process.cwd(),
8
+ tsconfig: options.tsconfig,
9
+ })
10
+ } catch (err) {
11
+ _handleError(err)
12
+ }
8
13
  }
@@ -1,11 +1,15 @@
1
1
  /** @internal */
2
2
  export const _MODULE_EXT: Record<'commonjs' | 'module', {commonjs: string; esm: string}> = {
3
- // "type": "commonjs"
3
+ // pkg.type: "commonjs"
4
4
  commonjs: {
5
5
  commonjs: '.js',
6
- esm: '.mjs',
6
+ // NOTE: using the `.mjs` extension causing issues in situations where
7
+ // not every and all dependencies support ESM exports.
8
+ // So for now, we require the ESM modules to have the `.esm.js` extension.
9
+ esm: '.esm.js',
7
10
  },
8
- // "type": "module"
11
+
12
+ // pkg.type: "module"
9
13
  module: {
10
14
  commonjs: '.cjs',
11
15
  esm: '.js',
@@ -0,0 +1,9 @@
1
+ import {expect, test} from 'vitest'
2
+ import {_findCommonDirPath} from './_findCommonPath'
3
+
4
+ test('should find common parent directory of paths', () => {
5
+ expect(_findCommonDirPath(['test/a', 'test/b/a'])).toBe('test')
6
+ expect(_findCommonDirPath(['/test/a', '/test/b/a'])).toBe('/test')
7
+ expect(_findCommonDirPath(['/test/a/b', '/test/a/b/c'])).toBe('/test/a')
8
+ expect(_findCommonDirPath(['test/a/b', 'test/a/b', 'test/b/c', 'test/b/a'])).toBe('test')
9
+ })
@@ -0,0 +1,35 @@
1
+ import path from 'path'
2
+
3
+ export function _pathContains(containerPath: string, itemPath: string): boolean {
4
+ return !path.relative(containerPath, itemPath).startsWith('..')
5
+ }
6
+
7
+ export function _findCommonDirPath(filePaths: string[]): string | undefined {
8
+ let ret: string | undefined = undefined
9
+
10
+ for (const filePath of filePaths) {
11
+ let dirPath = path.dirname(filePath)
12
+
13
+ if (!ret) {
14
+ ret = dirPath
15
+ continue
16
+ }
17
+
18
+ while (dirPath !== ret) {
19
+ dirPath = path.dirname(dirPath)
20
+
21
+ if (dirPath === ret) {
22
+ break
23
+ }
24
+
25
+ if (_pathContains(dirPath, ret)) {
26
+ ret = dirPath
27
+ break
28
+ }
29
+
30
+ if (dirPath === '.') return undefined
31
+ }
32
+ }
33
+
34
+ return ret
35
+ }
@@ -68,7 +68,7 @@ export interface PkgConfigOptions {
68
68
  }
69
69
  }
70
70
  /**
71
- * Packages to exclude from the bundles.
71
+ * Packages to exclude from bundles.
72
72
  */
73
73
  external?: PkgConfigProperty<string[]>
74
74
  /**
@@ -88,7 +88,7 @@ export interface PkgConfigOptions {
88
88
  */
89
89
  jsxImportSource?: string
90
90
  /**
91
- * Build package with support for legacy exports (writes root <export>.js files)
91
+ * Build package with support for legacy exports (writes root `<export>.js` files)
92
92
  */
93
93
  legacyExports?: boolean
94
94
  minify?: boolean
@@ -12,7 +12,7 @@ export interface _BuildFile {
12
12
  export interface _BuildContext {
13
13
  config?: PkgConfigOptions
14
14
  cwd: string
15
- dist: string
15
+ distPath: string
16
16
  exports: PkgExports | undefined
17
17
  external: string[]
18
18
  files: _BuildFile[]
@@ -25,7 +25,6 @@ export interface _BuildContext {
25
25
  }
26
26
  pkg: _PackageJSON
27
27
  runtime: PkgRuntime
28
- src: string
29
28
  target: Record<PkgRuntime, string[]>
30
29
  ts: {
31
30
  config?: ts.ParsedCommandLine
@@ -14,9 +14,11 @@ export async function _loadPkgWithReporting(options: {cwd: string}): Promise<_Pa
14
14
  for (const issue of err.issues) {
15
15
  if (issue.code === 'invalid_type') {
16
16
  console.log(
17
- `${chalk.red('invalid type')} in ./package.json at ${chalk.magenta(
18
- `\`${issue.path.join('.')}\``
19
- )} (expected ${issue.expected}, received ${issue.received})`
17
+ [
18
+ `${chalk.red('fail')} \`${_formatPath(issue.path)}\` `,
19
+ `in ./package.json must be of type ${chalk.magenta(issue.expected)} `,
20
+ `(received ${chalk.magenta(issue.received)})`,
21
+ ].join('')
20
22
  )
21
23
  }
22
24
  }
@@ -27,3 +29,21 @@ export async function _loadPkgWithReporting(options: {cwd: string}): Promise<_Pa
27
29
  process.exit(1)
28
30
  }
29
31
  }
32
+
33
+ function _formatPath(segments: Array<string | number>) {
34
+ return segments
35
+ .map((s, idx) => {
36
+ if (idx === 0) return s
37
+
38
+ if (typeof s === 'number') {
39
+ return `[${s}]`
40
+ }
41
+
42
+ if (s.startsWith('.')) {
43
+ return `["${s}"]`
44
+ }
45
+
46
+ return `.${s}`
47
+ })
48
+ .join('')
49
+ }
@@ -1,3 +1,4 @@
1
+ import {_MODULE_EXT} from '../_constants'
1
2
  import {PkgExport} from '../config'
2
3
  import {_PackageJSON} from './_types'
3
4
 
@@ -6,22 +7,19 @@ export function _validateExports(
6
7
  options: {pkg: _PackageJSON}
7
8
  ): (PkgExport & {_path: string})[] {
8
9
  const {pkg} = options
10
+ const ext = _MODULE_EXT[pkg.type]
9
11
 
10
12
  for (const exp of _exports) {
11
- if (pkg.type === 'commonjs') {
12
- if (exp.require && !exp.require.endsWith('.js')) {
13
- throw new Error(
14
- `package.json with \`"type": "commonjs"\` - \`exports["${exp._path}"].require\` must end with ".js"`
15
- )
16
- }
13
+ if (exp.require && !exp.require.endsWith(ext.commonjs)) {
14
+ throw new Error(
15
+ `package.json with \`type: "${pkg.type}"\` - \`exports["${exp._path}"].require\` must end with "${ext.commonjs}"`
16
+ )
17
17
  }
18
18
 
19
- if (pkg.type === 'module') {
20
- if (exp.require && !exp.require.endsWith('.cjs')) {
21
- throw new Error(
22
- `package.json with \`"type": "module"\` - \`exports["${exp._path}"].require\` must end with ".cjs"`
23
- )
24
- }
19
+ if (exp.import && !exp.import.endsWith(ext.esm)) {
20
+ throw new Error(
21
+ `package.json with \`type: "${pkg.type}"\` - \`exports["${exp._path}"].require\` must end with "${ext.esm}"`
22
+ )
25
23
  }
26
24
  }
27
25
 
@@ -6,17 +6,38 @@ import {
6
6
  PkgRuntime,
7
7
  _BuildContext,
8
8
  _DEFAULTS,
9
- // _loadConfig,
10
- // _loadPkgWithReporting,
11
9
  _loadTSConfig,
12
10
  _PackageJSON,
13
11
  _parseExports,
14
12
  _resolveConfigProperty,
15
13
  } from './_core'
14
+ import {_findCommonDirPath, _pathContains} from './_core/_findCommonPath'
16
15
  import {_resolveBrowserslistVersions} from './_resolveBrowserslistVersions'
17
16
  import {_resolveBrowserTarget} from './_resolveBrowserTarget'
18
17
  import {_resolveNodeTarget} from './_resolveNodeTarget'
19
18
 
19
+ function _createLogger(): _BuildContext['logger'] {
20
+ return {
21
+ /* eslint-disable no-console */
22
+ log: (...args) => {
23
+ console.log(...args)
24
+ },
25
+ info: (...args) => {
26
+ console.log(chalk.blue(' info'), ...args)
27
+ },
28
+ warn: (...args) => {
29
+ console.log(chalk.yellow(' warn'), ...args)
30
+ },
31
+ error: (...args) => {
32
+ console.log(chalk.red(' fail'), ...args)
33
+ },
34
+ success: (...args) => {
35
+ console.log(chalk.green(' ok '), ...args)
36
+ },
37
+ /* eslint-enable no-console */
38
+ }
39
+ }
40
+
20
41
  export async function _resolveBuildContext(options: {
21
42
  config?: PkgConfigOptions
22
43
  cwd: string
@@ -24,14 +45,9 @@ export async function _resolveBuildContext(options: {
24
45
  tsconfig: string
25
46
  }): Promise<_BuildContext> {
26
47
  const {config, cwd, pkg, tsconfig: tsconfigPath} = options
27
-
48
+ const logger = _createLogger()
28
49
  const tsconfig = await _loadTSConfig({cwd, tsconfigPath})
29
-
30
50
  const targetVersions = _resolveBrowserslistVersions(pkg.browserslist || _DEFAULTS.browserslist)
31
-
32
- const srcPath = path.resolve(cwd, config?.src || 'src')
33
- const distPath = path.resolve(cwd, config?.dist || 'dist')
34
-
35
51
  const nodeTarget = _resolveNodeTarget(targetVersions)
36
52
  const webTarget = _resolveBrowserTarget(targetVersions)
37
53
 
@@ -64,34 +80,59 @@ export async function _resolveBuildContext(options: {
64
80
 
65
81
  const external = _resolveConfigProperty(config?.external, parsedExternal)
66
82
 
83
+ const outputPaths = Object.values(exports)
84
+ .flatMap((exportEntry) => {
85
+ return [
86
+ exportEntry.import,
87
+ exportEntry.require,
88
+ exportEntry.browser?.import,
89
+ exportEntry.browser?.require,
90
+ exportEntry.node?.import,
91
+ exportEntry.node?.require,
92
+ ].filter(Boolean) as string[]
93
+ })
94
+ .map((p) => path.resolve(cwd, p))
95
+
96
+ const commonDistPath = _findCommonDirPath(outputPaths)
97
+
98
+ if (commonDistPath === cwd) {
99
+ throw new Error(
100
+ 'all output files must share a common parent directory which is not the root package directory'
101
+ )
102
+ }
103
+
104
+ if (commonDistPath && !_pathContains(cwd, commonDistPath)) {
105
+ throw new Error('all output files must be located within the package')
106
+ }
107
+
108
+ const configDistPath = config?.dist ? path.resolve(cwd, config.dist) : undefined
109
+
110
+ if (
111
+ configDistPath &&
112
+ commonDistPath &&
113
+ configDistPath !== commonDistPath &&
114
+ !_pathContains(configDistPath, commonDistPath)
115
+ ) {
116
+ logger.log(`did you mean to configure \`dist: './${path.relative(cwd, commonDistPath)}'\`?`)
117
+
118
+ throw new Error('all output files must be located with the configured `dist` path')
119
+ }
120
+
121
+ const distPath = configDistPath || commonDistPath
122
+
123
+ if (!distPath) {
124
+ throw new Error('could not detect `dist` path')
125
+ }
126
+
67
127
  const ctx: _BuildContext = {
68
128
  config,
69
129
  cwd,
70
- dist: path.relative(cwd, distPath),
130
+ distPath,
71
131
  exports,
72
132
  external,
73
133
  files: [],
74
- logger: {
75
- /* eslint-disable no-console */
76
- log: (...args) => {
77
- console.log(...args)
78
- },
79
- info: (...args) => {
80
- console.log(chalk.blue(' info'), ...args)
81
- },
82
- warn: (...args) => {
83
- console.log(chalk.yellow(' warn'), ...args)
84
- },
85
- error: (...args) => {
86
- console.log(chalk.red(' fail'), ...args)
87
- },
88
- success: (...args) => {
89
- console.log(chalk.green(' ok '), ...args)
90
- },
91
- /* eslint-enable no-console */
92
- },
134
+ logger,
93
135
  pkg,
94
- src: path.relative(cwd, srcPath),
95
136
  runtime: config?.runtime ?? '*',
96
137
  target,
97
138
  ts: {
@@ -137,18 +137,13 @@ export function _resolveBuildTasks(ctx: _BuildContext): _BuildTask[] {
137
137
  /\.[^/.]+$/,
138
138
  ''
139
139
  )
140
- const ext = _MODULE_EXT[pkg.type].esm
141
140
 
142
141
  if (relativeTargetPath) {
143
142
  fs.writeFileSync(
144
143
  path.resolve(cwd, `${exp._path}.js`),
145
- [
146
- `// AUTO-GENERATED – DO NOT EDIT`,
147
- ``,
148
- // `export {default} from '${relativeTargetPath}'`,
149
- `export * from '${relativeTargetPath}${pkg.type === 'commonjs' ? ext : ''}'`,
150
- ``,
151
- ].join('\n')
144
+ [`// AUTO-GENERATED – DO NOT EDIT`, `export * from '${relativeTargetPath}'`, ``].join(
145
+ '\n'
146
+ )
152
147
  )
153
148
  }
154
149
  }
@@ -116,18 +116,13 @@ export function _resolveWatchTasks(ctx: _BuildContext): _WatchTask[] {
116
116
  /\.[^/.]+$/,
117
117
  ''
118
118
  )
119
- const ext = _MODULE_EXT[pkg.type].esm
120
119
 
121
120
  if (relativeTargetPath) {
122
121
  fs.writeFileSync(
123
122
  path.resolve(cwd, `${exp._path}.js`),
124
- [
125
- `// AUTO-GENERATED – DO NOT EDIT`,
126
- ``,
127
- // `export {default} from '${relativeTargetPath}'`,
128
- `export * from '${relativeTargetPath}${pkg.type === 'commonjs' ? ext : ''}'`,
129
- ``,
130
- ].join('\n')
123
+ [`// AUTO-GENERATED – DO NOT EDIT`, `export * from '${relativeTargetPath}'`, ``].join(
124
+ '\n'
125
+ )
131
126
  )
132
127
  }
133
128
  }
@@ -22,10 +22,10 @@ export function _resolveRollupConfig(
22
22
  buildTask: _RollupTask | _RollupWatchTask
23
23
  ): _RollupConfig {
24
24
  const {format, runtime, target} = buildTask
25
- const {config, cwd, exports: _exports, external, dist: outDir, logger, pkg, ts} = ctx
25
+ const {config, cwd, exports: _exports, external, distPath, logger, pkg, ts} = ctx
26
26
  const outputExt = _MODULE_EXT[pkg.type][format]
27
-
28
27
  const minify = config?.minify ?? true
28
+ const outDir = path.relative(cwd, distPath)
29
29
 
30
30
  const pathAliases = Object.fromEntries(
31
31
  Object.entries(ts.config?.options.paths || {}).map(([key, val]) => {
@@ -171,13 +171,11 @@ export function _resolveRollupConfig(
171
171
  },
172
172
  },
173
173
  outputOptions: {
174
- chunkFileNames: () => `_[name]-[hash]${outputExt}`,
174
+ chunkFileNames: () => `_chunks/[name]-[hash]${outputExt}`,
175
175
  dir: outDir,
176
- entryFileNames: () => `[name]${outputExt}`,
176
+ entryFileNames: () => (outputExt === '.esm.js' ? `[name].js` : `[name]${outputExt}`),
177
177
  format,
178
- // esModule: true,
179
178
  exports: 'auto',
180
- // freeze: true,
181
179
  sourcemap: config?.sourcemap ?? true,
182
180
  },
183
181
  }
@@ -37,7 +37,8 @@ export const _rollupTask: _TaskHandler<_RollupTask> = {
37
37
  }
38
38
 
39
39
  async function _execPromise(ctx: _BuildContext, task: _RollupTask) {
40
- const {files, dist: outDir} = ctx
40
+ const {files, distPath} = ctx
41
+ const outDir = path.relative(ctx.cwd, distPath)
41
42
 
42
43
  const {inputOptions, outputOptions} = _resolveRollupConfig(ctx, task)
43
44
 
package/bin/pkg-utils.cjs DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- require('../dist/cli.cjs')
@@ -1 +0,0 @@
1
- {"version":3,"file":"__resolveBuildContext-6eae01b8.cjs","sources":["../src/node/_core/_defaults.ts","../src/node/_core/_isRecord.ts","../src/node/_core/config/_findConfigFile.ts","../src/node/_core/config/_loadConfig.ts","../src/node/_core/config/_resolveConfigProperty.ts","../src/node/_core/pkg/_validatePkg.ts","../src/node/_core/pkg/_loadPkg.ts","../src/node/_core/pkg/_loadPkgWithReporting.ts","../src/node/_core/pkg/_validateExports.ts","../src/node/_core/pkg/_parseExports.ts","../src/node/_core/ts/_loadTSConfig.ts","../src/node/_resolveBrowserslistVersions.ts","../src/node/_resolveBrowserTarget.ts","../src/node/_resolveNodeTarget.ts","../src/node/_resolveBuildContext.ts"],"sourcesContent":["/** @internal */\nexport const _DEFAULTS = {\n browserslist: [\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}\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 {stat} from 'fs/promises'\nimport path from 'path'\nimport findConfig from 'find-config'\n\nconst CONFIG_FILE_NAMES = [\n 'package.config.ts',\n 'package.config.js',\n 'package.config.cjs',\n 'package.config.mjs',\n]\n\nexport async function _findConfigFile(cwd: string): Promise<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 = await _fileExists(configPath)\n\n if (exists) {\n return configPath\n }\n }\n\n return undefined\n}\n\nasync function _fileExists(filePath: string) {\n try {\n await stat(filePath)\n\n return true\n } catch (_) {\n return false\n }\n}\n","import path from 'path'\nimport {register} from 'esbuild-register/dist/node'\nimport pkgUp from 'pkg-up'\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 try {\n const {unregister} = register({extensions: ['.js', '.mjs', '.ts']})\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 } catch (_) {\n return undefined\n }\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","import {z} from 'zod'\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.object({\n types: z.optional(z.string()),\n source: 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.string(),\n require: z.optional(z.string()),\n import: z.optional(z.string()),\n })\n ),\n require: z.optional(z.string()),\n import: z.optional(z.string()),\n default: z.string(),\n })\n )\n ),\n browserslist: z.optional(z.array(z.string())),\n})\n\nexport function _validatePkg(input: unknown): _PackageJSON {\n const pkg = pkgSchema.parse(input)\n\n return {...pkg, type: pkg.type || 'commonjs'}\n}\n","import fs from 'fs/promises'\nimport pkgUp from 'pkg-up'\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 return _validatePkg(JSON.parse(buf.toString()))\n}\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk'\nimport {ZodError} from 'zod'\nimport {_loadPkg} from './_loadPkg'\nimport {_PackageJSON} from './_types'\n\n/** @internal */\nexport async function _loadPkgWithReporting(options: {cwd: string}): Promise<_PackageJSON> {\n try {\n return await _loadPkg(options)\n } catch (err) {\n if (err instanceof ZodError) {\n for (const issue of err.issues) {\n if (issue.code === 'invalid_type') {\n console.log(\n `${chalk.red('invalid type')} in ./package.json at ${chalk.magenta(\n `\\`${issue.path.join('.')}\\``\n )} (expected ${issue.expected}, received ${issue.received})`\n )\n }\n }\n } else {\n console.error(err)\n }\n\n process.exit(1)\n }\n}\n","import {PkgExport} from '../config'\nimport {_PackageJSON} from './_types'\n\nexport function _validateExports(\n _exports: (PkgExport & {_path: string})[],\n options: {pkg: _PackageJSON}\n): (PkgExport & {_path: string})[] {\n const {pkg} = options\n\n for (const exp of _exports) {\n if (pkg.type === 'commonjs') {\n if (exp.require && !exp.require.endsWith('.js')) {\n throw new Error(\n `package.json with \\`\"type\": \"commonjs\"\\` - \\`exports[\"${exp._path}\"].require\\` must end with \".js\"`\n )\n }\n }\n\n if (pkg.type === 'module') {\n if (exp.require && !exp.require.endsWith('.cjs')) {\n throw new Error(\n `package.json with \\`\"type\": \"module\"\\` - \\`exports[\"${exp._path}\"].require\\` must end with \".cjs\"`\n )\n }\n }\n }\n\n return _exports\n}\n","import {_isRecord} from '../_isRecord'\nimport {PkgExport} from '../config'\nimport {_PackageJSON} from './_types'\nimport {_validateExports} from './_validateExports'\n\n/** @internal */\nexport function _parseExports(options: {pkg: _PackageJSON}): (PkgExport & {_path: string})[] {\n const {pkg} = 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 import: pkg.module,\n require: pkg.main,\n default: pkg.module || pkg.main || '',\n }\n\n const extraExports: (PkgExport & {_path: string})[] = []\n\n if (pkg.exports) {\n for (const [exportPath, exportEntry] of Object.entries(pkg.exports)) {\n if (_isRecord(exportEntry)) {\n if (exportPath === '.') {\n if (\n exportEntry.require &&\n rootExport.require &&\n exportEntry.require !== rootExport.require\n ) {\n throw new Error('mismatch between \"main\" and \"require\"')\n }\n\n if (exportEntry.import && rootExport.import && exportEntry.import !== rootExport.import) {\n throw new Error('mismatch between \"module\" and \"import\"')\n }\n\n if (exportEntry.types && rootExport.types && exportEntry.types !== rootExport.types) {\n throw new Error('mismatch between \"types\" and \"types\"')\n }\n\n if (exportEntry.source && rootExport.source && exportEntry.source !== rootExport.source) {\n throw new Error('mismatch between \"source\" and \"source\"')\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 throw new Error('string entries are not supported')\n }\n }\n }\n\n const _exports = [rootExport, ...extraExports]\n\n return _validateExports(_exports, {pkg})\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 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'\nimport chalk from 'chalk'\nimport {\n PkgConfigOptions,\n PkgExports,\n PkgRuntime,\n _BuildContext,\n _DEFAULTS,\n // _loadConfig,\n // _loadPkgWithReporting,\n _loadTSConfig,\n _PackageJSON,\n _parseExports,\n _resolveConfigProperty,\n} from './_core'\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 pkg: _PackageJSON\n tsconfig: string\n}): Promise<_BuildContext> {\n const {config, cwd, pkg, tsconfig: tsconfigPath} = options\n\n const tsconfig = await _loadTSConfig({cwd, tsconfigPath})\n\n const targetVersions = _resolveBrowserslistVersions(pkg.browserslist || _DEFAULTS.browserslist)\n\n const srcPath = path.resolve(cwd, config?.src || 'src')\n const distPath = path.resolve(cwd, config?.dist || 'dist')\n\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({pkg}).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 const external = _resolveConfigProperty(config?.external, parsedExternal)\n\n const ctx: _BuildContext = {\n config,\n cwd,\n dist: path.relative(cwd, distPath),\n exports,\n external,\n files: [],\n logger: {\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(' warn'), ...args)\n },\n error: (...args) => {\n console.log(chalk.red(' fail'), ...args)\n },\n success: (...args) => {\n console.log(chalk.green(' ok '), ...args)\n },\n /* eslint-enable no-console */\n },\n pkg,\n src: path.relative(cwd, srcPath),\n runtime: config?.runtime ?? '*',\n target,\n ts: {\n config: tsconfig,\n configPath: tsconfigPath,\n },\n }\n\n return ctx\n}\n"],"names":["_DEFAULTS","browserslist","_isRecord","value","Boolean","Array","isArray","CONFIG_FILE_NAMES","_findConfigFile","cwd","pkgJsonPath","findConfig","pkgPath","path","dirname","fileName","configPath","resolve","exists","_fileExists","filePath","stat","_","_loadConfig","options","pkgUp","root","configFile","startsWith","unregister","register","extensions","mod","require","default","_resolveConfigProperty","prop","initialValue","pkgSchema","z","object","type","optional","enum","name","string","version","license","bin","record","dependencies","devDependencies","peerDependencies","source","main","browser","module","types","exports","import","node","array","_validatePkg","input","pkg","parse","_loadPkg","Error","buf","fs","readFile","JSON","toString","_loadPkgWithReporting","err","ZodError","issue","issues","code","console","log","chalk","red","magenta","join","expected","received","error","process","exit","_validateExports","_exports","exp","endsWith","_path","_parseExports","rootExport","_exported","extraExports","exportPath","exportEntry","Object","entries","assign","extraExport","push","_loadTSConfig","tsconfigPath","ts","findConfigFile","sys","fileExists","readConfigFile","parseJsonConfigFileContent","config","_sortAsNumber","a","b","aVersion","Number","bVersion","_resolveBrowserslistVersions","query","result","map","key","split","andChr","filter","andFf","chrome","edge","ff","iosSaf","saf","opera","versions","concat","sort","_resolveBrowserTarget","target","length","_resolveNodeTarget","_resolveBuildContext","tsconfig","targetVersions","srcPath","src","distPath","dist","nodeTarget","webTarget","parsedExports","reduce","acc","x","parsedExternal","keys","external","ctx","relative","files","logger","info","args","blue","warn","yellow","success","green","runtime"],"mappings":"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"}