@sanity/pkg-utils 1.7.3 → 1.8.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 (141) hide show
  1. package/bin/{pkg-utils → pkg-utils.cjs} +0 -0
  2. package/dist/{__resolveBuildContext-56b6b816.cjs → __resolveBuildContext-7cb7c9a7.cjs} +58 -7
  3. package/dist/__resolveBuildContext-7cb7c9a7.cjs.map +1 -0
  4. package/dist/{_build-49dd667f.cjs → _build-e82a508a.cjs} +7 -3
  5. package/dist/{_build-49dd667f.cjs.map → _build-e82a508a.cjs.map} +1 -1
  6. package/dist/{_buildAction-b58e3a4b.cjs → _buildAction-727e661a.cjs} +12 -4
  7. package/dist/{_buildAction-b58e3a4b.cjs.map → _buildAction-727e661a.cjs.map} +1 -1
  8. package/dist/{_check-0871d90f.cjs → _check-a2eb014d.cjs} +6 -2
  9. package/dist/{_check-0871d90f.cjs.map → _check-a2eb014d.cjs.map} +1 -1
  10. package/dist/{_checkAction-0510605b.cjs → _checkAction-7cd9dfde.cjs} +3 -3
  11. package/dist/{_checkAction-0510605b.cjs.map → _checkAction-7cd9dfde.cjs.map} +1 -1
  12. package/dist/_index-a4fddb59.cjs +4244 -0
  13. package/dist/_index-a4fddb59.cjs.map +1 -0
  14. package/dist/{_watch-e1c86797.cjs → _watch-b0a983e3.cjs} +7 -3
  15. package/dist/{_watch-e1c86797.cjs.map → _watch-b0a983e3.cjs.map} +1 -1
  16. package/dist/{_watchAction-cfe36cbc.cjs → _watchAction-c44da6cb.cjs} +12 -4
  17. package/dist/{_watchAction-cfe36cbc.cjs.map → _watchAction-c44da6cb.cjs.map} +1 -1
  18. package/dist/cli.cjs +4 -4
  19. package/dist/index.cjs +13 -5
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.js +3773 -225
  22. package/dist/index.js.map +1 -1
  23. package/dist/types/src/node/index.d.ts +12 -2
  24. package/package.json +8 -7
  25. package/src/node/_core/pkg/_loadPkg.ts +2 -41
  26. package/src/node/_core/pkg/_parseExports.ts +26 -3
  27. package/src/node/_core/pkg/_types.ts +8 -2
  28. package/src/node/_core/pkg/_validateExports.ts +29 -0
  29. package/src/node/_core/pkg/_validatePkg.ts +50 -0
  30. package/src/node/_tasks/dts/_doExtract.ts +38 -7
  31. package/src/node/_tasks/dts/_types.ts +1 -0
  32. package/dist/__resolveBuildContext-56b6b816.cjs.map +0 -1
  33. package/dist/_index-e3dda92a.cjs +0 -733
  34. package/dist/_index-e3dda92a.cjs.map +0 -1
  35. package/dist/types/src/cli/buildAction.d.ts +0 -4
  36. package/dist/types/src/cli/buildAction.d.ts.map +0 -1
  37. package/dist/types/src/cli/checkAction.d.ts +0 -5
  38. package/dist/types/src/cli/checkAction.d.ts.map +0 -1
  39. package/dist/types/src/cli/index.d.ts +0 -2
  40. package/dist/types/src/cli/index.d.ts.map +0 -1
  41. package/dist/types/src/cli/watchAction.d.ts +0 -4
  42. package/dist/types/src/cli/watchAction.d.ts.map +0 -1
  43. package/dist/types/src/node/_core/_defaults.d.ts +0 -5
  44. package/dist/types/src/node/_core/_defaults.d.ts.map +0 -1
  45. package/dist/types/src/node/_core/_isRecord.d.ts +0 -3
  46. package/dist/types/src/node/_core/_isRecord.d.ts.map +0 -1
  47. package/dist/types/src/node/_core/config/_loadConfig.d.ts +0 -6
  48. package/dist/types/src/node/_core/config/_loadConfig.d.ts.map +0 -1
  49. package/dist/types/src/node/_core/config/_resolveConfigProperty.d.ts +0 -4
  50. package/dist/types/src/node/_core/config/_resolveConfigProperty.d.ts.map +0 -1
  51. package/dist/types/src/node/_core/config/defineConfig.d.ts +0 -4
  52. package/dist/types/src/node/_core/config/defineConfig.d.ts.map +0 -1
  53. package/dist/types/src/node/_core/config/index.d.ts +0 -5
  54. package/dist/types/src/node/_core/config/index.d.ts.map +0 -1
  55. package/dist/types/src/node/_core/config/types.d.ts +0 -76
  56. package/dist/types/src/node/_core/config/types.d.ts.map +0 -1
  57. package/dist/types/src/node/_core/contexts/buildContext.d.ts +0 -33
  58. package/dist/types/src/node/_core/contexts/buildContext.d.ts.map +0 -1
  59. package/dist/types/src/node/_core/contexts/index.d.ts +0 -2
  60. package/dist/types/src/node/_core/contexts/index.d.ts.map +0 -1
  61. package/dist/types/src/node/_core/index.d.ts +0 -7
  62. package/dist/types/src/node/_core/index.d.ts.map +0 -1
  63. package/dist/types/src/node/_core/pkg/_loadPkg.d.ts +0 -6
  64. package/dist/types/src/node/_core/pkg/_loadPkg.d.ts.map +0 -1
  65. package/dist/types/src/node/_core/pkg/_loadPkgWithReporting.d.ts +0 -6
  66. package/dist/types/src/node/_core/pkg/_loadPkgWithReporting.d.ts.map +0 -1
  67. package/dist/types/src/node/_core/pkg/_parseExports.d.ts +0 -9
  68. package/dist/types/src/node/_core/pkg/_parseExports.d.ts.map +0 -1
  69. package/dist/types/src/node/_core/pkg/_types.d.ts +0 -29
  70. package/dist/types/src/node/_core/pkg/_types.d.ts.map +0 -1
  71. package/dist/types/src/node/_core/pkg/index.d.ts +0 -5
  72. package/dist/types/src/node/_core/pkg/index.d.ts.map +0 -1
  73. package/dist/types/src/node/_core/ts/_loadTSConfig.d.ts +0 -7
  74. package/dist/types/src/node/_core/ts/_loadTSConfig.d.ts.map +0 -1
  75. package/dist/types/src/node/_core/ts/index.d.ts +0 -2
  76. package/dist/types/src/node/_core/ts/index.d.ts.map +0 -1
  77. package/dist/types/src/node/_getFilesize.d.ts +0 -2
  78. package/dist/types/src/node/_getFilesize.d.ts.map +0 -1
  79. package/dist/types/src/node/_globFiles.d.ts +0 -2
  80. package/dist/types/src/node/_globFiles.d.ts.map +0 -1
  81. package/dist/types/src/node/_printExtractMessages.d.ts +0 -4
  82. package/dist/types/src/node/_printExtractMessages.d.ts.map +0 -1
  83. package/dist/types/src/node/_printPackageTree.d.ts +0 -4
  84. package/dist/types/src/node/_printPackageTree.d.ts.map +0 -1
  85. package/dist/types/src/node/_resolveBrowserTarget.d.ts +0 -3
  86. package/dist/types/src/node/_resolveBrowserTarget.d.ts.map +0 -1
  87. package/dist/types/src/node/_resolveBrowserslistVersions.d.ts +0 -11
  88. package/dist/types/src/node/_resolveBrowserslistVersions.d.ts.map +0 -1
  89. package/dist/types/src/node/_resolveBuildContext.d.ts +0 -8
  90. package/dist/types/src/node/_resolveBuildContext.d.ts.map +0 -1
  91. package/dist/types/src/node/_resolveBuildTasks.d.ts +0 -5
  92. package/dist/types/src/node/_resolveBuildTasks.d.ts.map +0 -1
  93. package/dist/types/src/node/_resolveNodeTarget.d.ts +0 -3
  94. package/dist/types/src/node/_resolveNodeTarget.d.ts.map +0 -1
  95. package/dist/types/src/node/_resolveWatchTasks.d.ts +0 -5
  96. package/dist/types/src/node/_resolveWatchTasks.d.ts.map +0 -1
  97. package/dist/types/src/node/_spinner.d.ts +0 -5
  98. package/dist/types/src/node/_spinner.d.ts.map +0 -1
  99. package/dist/types/src/node/_tasks/_types.d.ts +0 -50
  100. package/dist/types/src/node/_tasks/_types.d.ts.map +0 -1
  101. package/dist/types/src/node/_tasks/dts/_DtsError.d.ts +0 -7
  102. package/dist/types/src/node/_tasks/dts/_DtsError.d.ts.map +0 -1
  103. package/dist/types/src/node/_tasks/dts/_buildTypes.d.ts +0 -9
  104. package/dist/types/src/node/_tasks/dts/_buildTypes.d.ts.map +0 -1
  105. package/dist/types/src/node/_tasks/dts/_createApiExtractorConfig.d.ts +0 -11
  106. package/dist/types/src/node/_tasks/dts/_createApiExtractorConfig.d.ts.map +0 -1
  107. package/dist/types/src/node/_tasks/dts/_createTSDocConfig.d.ts +0 -12
  108. package/dist/types/src/node/_tasks/dts/_createTSDocConfig.d.ts.map +0 -1
  109. package/dist/types/src/node/_tasks/dts/_doExtract.d.ts +0 -4
  110. package/dist/types/src/node/_tasks/dts/_doExtract.d.ts.map +0 -1
  111. package/dist/types/src/node/_tasks/dts/_dtsTask.d.ts +0 -5
  112. package/dist/types/src/node/_tasks/dts/_dtsTask.d.ts.map +0 -1
  113. package/dist/types/src/node/_tasks/dts/_dtsWatchTask.d.ts +0 -5
  114. package/dist/types/src/node/_tasks/dts/_dtsWatchTask.d.ts.map +0 -1
  115. package/dist/types/src/node/_tasks/dts/_extractTypes.d.ts +0 -17
  116. package/dist/types/src/node/_tasks/dts/_extractTypes.d.ts.map +0 -1
  117. package/dist/types/src/node/_tasks/dts/_types.d.ts +0 -27
  118. package/dist/types/src/node/_tasks/dts/_types.d.ts.map +0 -1
  119. package/dist/types/src/node/_tasks/dts/index.d.ts +0 -4
  120. package/dist/types/src/node/_tasks/dts/index.d.ts.map +0 -1
  121. package/dist/types/src/node/_tasks/index.d.ts +0 -9
  122. package/dist/types/src/node/_tasks/index.d.ts.map +0 -1
  123. package/dist/types/src/node/_tasks/rollup/_resolveRollupConfig.d.ts +0 -10
  124. package/dist/types/src/node/_tasks/rollup/_resolveRollupConfig.d.ts.map +0 -1
  125. package/dist/types/src/node/_tasks/rollup/_rollupTask.d.ts +0 -4
  126. package/dist/types/src/node/_tasks/rollup/_rollupTask.d.ts.map +0 -1
  127. package/dist/types/src/node/_tasks/rollup/_rollupWatchTask.d.ts +0 -5
  128. package/dist/types/src/node/_tasks/rollup/_rollupWatchTask.d.ts.map +0 -1
  129. package/dist/types/src/node/_tasks/rollup/index.d.ts +0 -3
  130. package/dist/types/src/node/_tasks/rollup/index.d.ts.map +0 -1
  131. package/dist/types/src/node/_watchConfigFiles.d.ts +0 -5
  132. package/dist/types/src/node/_watchConfigFiles.d.ts.map +0 -1
  133. package/dist/types/src/node/_watchFiles.d.ts +0 -7
  134. package/dist/types/src/node/_watchFiles.d.ts.map +0 -1
  135. package/dist/types/src/node/build.d.ts +0 -6
  136. package/dist/types/src/node/build.d.ts.map +0 -1
  137. package/dist/types/src/node/check.d.ts +0 -7
  138. package/dist/types/src/node/check.d.ts.map +0 -1
  139. package/dist/types/src/node/index.d.ts.map +0 -1
  140. package/dist/types/src/node/watch.d.ts +0 -6
  141. package/dist/types/src/node/watch.d.ts.map +0 -1
@@ -68,6 +68,10 @@ export declare function defineConfig(configOptions: PkgConfigOptions): PkgConfig
68
68
  export declare interface _DtsResult {
69
69
  type: 'dts'
70
70
  messages: ExtractorMessage[]
71
+ results: {
72
+ sourcePath: string
73
+ filePath: string
74
+ }[]
71
75
  }
72
76
 
73
77
  /** @internal */
@@ -118,7 +122,7 @@ export declare function _loadTSConfig(options: {
118
122
 
119
123
  /** @internal */
120
124
  export declare interface _PackageJSON {
121
- type?: 'module'
125
+ type: 'commonjs' | 'module'
122
126
  version: string
123
127
  private?: boolean
124
128
  name: string
@@ -132,6 +136,12 @@ export declare interface _PackageJSON {
132
136
  source: string
133
137
  types?: string
134
138
  browser?: {
139
+ source: string
140
+ require?: string
141
+ import?: string
142
+ }
143
+ node?: {
144
+ source: string
135
145
  require?: string
136
146
  import?: string
137
147
  }
@@ -142,7 +152,7 @@ export declare interface _PackageJSON {
142
152
  >
143
153
  main?: string
144
154
  browser?: Record<string, string>
145
- source: string
155
+ source?: string
146
156
  module?: string
147
157
  types?: string
148
158
  browserslist?: string[]
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
+ "type": "module",
2
3
  "name": "@sanity/pkg-utils",
3
- "version": "1.7.3",
4
+ "version": "1.8.0",
4
5
  "author": "Sanity.io <hello@sanity.io>",
5
6
  "license": "MIT",
6
7
  "description": "Simple utilities for modern npm packages.",
@@ -27,8 +28,8 @@
27
28
  }
28
29
  },
29
30
  "bin": {
30
- "pkg": "./bin/pkg-utils",
31
- "pkg-utils": "./bin/pkg-utils"
31
+ "pkg": "./bin/pkg-utils.cjs",
32
+ "pkg-utils": "./bin/pkg-utils.cjs"
32
33
  },
33
34
  "files": [
34
35
  "bin",
@@ -36,8 +37,8 @@
36
37
  "dist"
37
38
  ],
38
39
  "scripts": {
39
- "build": "node -r esbuild-register scripts/build",
40
- "check:package": "node -r esbuild-register scripts/check",
40
+ "build": "node --experimental-loader ./scripts/_experimental-loader.js --no-warnings -r esbuild-register scripts/build",
41
+ "check:package": "node --experimental-loader ./scripts/_experimental-loader.js --no-warnings -r esbuild-register scripts/check",
41
42
  "clean": "rimraf dist test/env/__tmp__",
42
43
  "commit": "cz",
43
44
  "extract": "sanity-tsdoc etl --outDir etc/api/@sanity/pkg-utils --tsconfig tsconfig.dist.json",
@@ -49,7 +50,7 @@
49
50
  "release": "semantic-release",
50
51
  "test": "vitest run",
51
52
  "type-check": "tsc --build",
52
- "watch": "node -r esbuild-register scripts/watch"
53
+ "watch": "node --experimental-loader ./scripts/_experimental-loader.js --no-warnings -r esbuild-register scripts/watch"
53
54
  },
54
55
  "dependencies": {
55
56
  "@babel/core": "^7.19.0",
@@ -67,6 +68,7 @@
67
68
  "cac": "^6.7.12",
68
69
  "chalk": "^4.1.2",
69
70
  "chokidar": "^3.5.3",
71
+ "cpx": "^1.5.0",
70
72
  "esbuild": "^0.15.5",
71
73
  "esbuild-register": "^3.3.3",
72
74
  "find-config": "^1.0.0",
@@ -100,7 +102,6 @@
100
102
  "@typescript-eslint/eslint-plugin": "^5.35.1",
101
103
  "@typescript-eslint/parser": "^5.35.1",
102
104
  "commitizen": "^4.2.5",
103
- "cpx": "^1.5.0",
104
105
  "cz-conventional-changelog": "^3.3.0",
105
106
  "eslint": "^8.23.0",
106
107
  "eslint-config-prettier": "^8.5.0",
@@ -1,46 +1,7 @@
1
1
  import fs from 'fs/promises'
2
2
  import pkgUp from 'pkg-up'
3
- import {z} from 'zod'
4
3
  import {_PackageJSON} from './_types'
5
-
6
- const pkgSchema = z.object({
7
- type: z.optional(z.enum(['module'])),
8
- name: z.string(),
9
- version: z.string(),
10
- bin: z.optional(z.record(z.string())),
11
- dependencies: z.optional(z.record(z.string())),
12
- devDependencies: z.optional(z.record(z.string())),
13
- peerDependencies: z.optional(z.record(z.string())),
14
- source: z.string(),
15
- main: z.optional(z.string()),
16
- browser: z.optional(z.record(z.string())),
17
- module: z.optional(z.string()),
18
- types: z.optional(z.string()),
19
- exports: z.optional(
20
- z.record(
21
- z.object({
22
- types: z.optional(z.string()),
23
- source: z.string(),
24
- browser: z.optional(
25
- z.object({
26
- require: z.optional(z.string()),
27
- import: z.optional(z.string()),
28
- })
29
- ),
30
- node: z.optional(
31
- z.object({
32
- require: z.optional(z.string()),
33
- import: z.optional(z.string()),
34
- })
35
- ),
36
- require: z.optional(z.string()),
37
- import: z.optional(z.string()),
38
- default: z.string(),
39
- })
40
- )
41
- ),
42
- browserslist: z.optional(z.array(z.string())),
43
- })
4
+ import {_validatePkg} from './_validatePkg'
44
5
 
45
6
  /** @internal */
46
7
  export async function _loadPkg(options: {cwd: string}): Promise<_PackageJSON> {
@@ -52,5 +13,5 @@ export async function _loadPkg(options: {cwd: string}): Promise<_PackageJSON> {
52
13
 
53
14
  const buf = await fs.readFile(pkgPath)
54
15
 
55
- return pkgSchema.parse(JSON.parse(buf.toString()))
16
+ return _validatePkg(JSON.parse(buf.toString()))
56
17
  }
@@ -1,6 +1,7 @@
1
1
  import {_isRecord} from '../_isRecord'
2
2
  import {PkgExport} from '../config'
3
3
  import {_PackageJSON} from './_types'
4
+ import {_validateExports} from './_validateExports'
4
5
 
5
6
  /** @internal */
6
7
  export function _parseExports(options: {pkg: _PackageJSON}): (PkgExport & {_path: string})[] {
@@ -10,14 +11,14 @@ export function _parseExports(options: {pkg: _PackageJSON}): (PkgExport & {_path
10
11
  _exported: true,
11
12
  _path: '.',
12
13
  types: pkg.types,
13
- source: pkg.source || 'index.js',
14
+ source: pkg.source || '',
14
15
  browser: pkg.browser && {
15
16
  require: pkg.main && pkg.browser[pkg.main],
16
17
  import: pkg.module && pkg.browser[pkg.module],
17
18
  },
18
19
  import: pkg.module,
19
20
  require: pkg.main,
20
- default: pkg.module || pkg.main || './index.js',
21
+ default: pkg.module || pkg.main || '',
21
22
  }
22
23
 
23
24
  const extraExports: (PkgExport & {_path: string})[] = []
@@ -26,6 +27,26 @@ export function _parseExports(options: {pkg: _PackageJSON}): (PkgExport & {_path
26
27
  for (const [exportPath, exportEntry] of Object.entries(pkg.exports)) {
27
28
  if (_isRecord(exportEntry)) {
28
29
  if (exportPath === '.') {
30
+ if (
31
+ exportEntry.require &&
32
+ rootExport.require &&
33
+ exportEntry.require !== rootExport.require
34
+ ) {
35
+ throw new Error('mismatch between "main" and "require"')
36
+ }
37
+
38
+ if (exportEntry.import && rootExport.import && exportEntry.import !== rootExport.import) {
39
+ throw new Error('mismatch between "module" and "import"')
40
+ }
41
+
42
+ if (exportEntry.types && rootExport.types && exportEntry.types !== rootExport.types) {
43
+ throw new Error('mismatch between "types" and "types"')
44
+ }
45
+
46
+ if (exportEntry.source && rootExport.source && exportEntry.source !== rootExport.source) {
47
+ throw new Error('mismatch between "source" and "source"')
48
+ }
49
+
29
50
  Object.assign(rootExport, exportEntry)
30
51
  } else {
31
52
  const extraExport: PkgExport & {_path: string} = {
@@ -42,5 +63,7 @@ export function _parseExports(options: {pkg: _PackageJSON}): (PkgExport & {_path
42
63
  }
43
64
  }
44
65
 
45
- return [rootExport, ...extraExports]
66
+ const _exports = [rootExport, ...extraExports]
67
+
68
+ return _validateExports(_exports, {pkg})
46
69
  }
@@ -1,6 +1,6 @@
1
1
  /** @internal */
2
2
  export interface _PackageJSON {
3
- type?: 'module'
3
+ type: 'commonjs' | 'module'
4
4
  version: string
5
5
  private?: boolean
6
6
  name: string
@@ -14,6 +14,12 @@ export interface _PackageJSON {
14
14
  source: string
15
15
  types?: string
16
16
  browser?: {
17
+ source: string
18
+ require?: string
19
+ import?: string
20
+ }
21
+ node?: {
22
+ source: string
17
23
  require?: string
18
24
  import?: string
19
25
  }
@@ -24,7 +30,7 @@ export interface _PackageJSON {
24
30
  >
25
31
  main?: string
26
32
  browser?: Record<string, string>
27
- source: string
33
+ source?: string
28
34
  module?: string
29
35
  types?: string
30
36
  browserslist?: string[]
@@ -0,0 +1,29 @@
1
+ import {PkgExport} from '../config'
2
+ import {_PackageJSON} from './_types'
3
+
4
+ export function _validateExports(
5
+ _exports: (PkgExport & {_path: string})[],
6
+ options: {pkg: _PackageJSON}
7
+ ): (PkgExport & {_path: string})[] {
8
+ const {pkg} = options
9
+
10
+ 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
+ }
17
+ }
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
+ }
25
+ }
26
+ }
27
+
28
+ return _exports
29
+ }
@@ -0,0 +1,50 @@
1
+ import {z} from 'zod'
2
+ import {_PackageJSON} from './_types'
3
+
4
+ const pkgSchema = z.object({
5
+ type: z.optional(z.enum(['commonjs', 'module'])),
6
+ name: z.string(),
7
+ version: z.string(),
8
+ license: z.string(),
9
+ bin: z.optional(z.record(z.string())),
10
+ dependencies: z.optional(z.record(z.string())),
11
+ devDependencies: z.optional(z.record(z.string())),
12
+ peerDependencies: z.optional(z.record(z.string())),
13
+ source: z.optional(z.string()),
14
+ main: z.optional(z.string()),
15
+ browser: z.optional(z.record(z.string())),
16
+ module: z.optional(z.string()),
17
+ types: z.optional(z.string()),
18
+ exports: z.optional(
19
+ z.record(
20
+ z.object({
21
+ types: z.optional(z.string()),
22
+ source: z.string(),
23
+ browser: z.optional(
24
+ z.object({
25
+ source: z.string(),
26
+ require: z.optional(z.string()),
27
+ import: z.optional(z.string()),
28
+ })
29
+ ),
30
+ node: z.optional(
31
+ z.object({
32
+ source: z.string(),
33
+ require: z.optional(z.string()),
34
+ import: z.optional(z.string()),
35
+ })
36
+ ),
37
+ require: z.optional(z.string()),
38
+ import: z.optional(z.string()),
39
+ default: z.string(),
40
+ })
41
+ )
42
+ ),
43
+ browserslist: z.optional(z.array(z.string())),
44
+ })
45
+
46
+ export function _validatePkg(input: unknown): _PackageJSON {
47
+ const pkg = pkgSchema.parse(input)
48
+
49
+ return {...pkg, type: pkg.type || 'commonjs'}
50
+ }
@@ -1,18 +1,26 @@
1
+ import {rename} from 'fs/promises'
1
2
  import path from 'path'
3
+ import {promisify} from 'util'
2
4
  import {ExtractorMessage} from '@microsoft/api-extractor'
5
+ import cpx from 'cpx'
6
+ import rimrafCallback from 'rimraf'
3
7
  import {_BuildContext} from '../../_core'
4
8
  import {_buildTypes} from './_buildTypes'
5
9
  import {_DtsError} from './_DtsError'
6
10
  import {_extractTypes} from './_extractTypes'
7
11
  import {_DtsResult, _DtsTask, _DtsWatchTask} from './_types'
8
12
 
13
+ const rimraf = promisify(rimrafCallback)
14
+
9
15
  export async function _doExtract(
10
16
  ctx: _BuildContext,
11
17
  task: _DtsTask | _DtsWatchTask
12
18
  ): Promise<_DtsResult> {
13
19
  const {config, cwd, dist, files, ts} = ctx
14
20
 
15
- if (!ts.config || !ts.configPath) return {type: 'dts', messages: []}
21
+ if (!ts.config || !ts.configPath) {
22
+ return {type: 'dts', messages: [], results: []}
23
+ }
16
24
 
17
25
  const distPath = path.resolve(cwd, dist)
18
26
 
@@ -26,9 +34,17 @@ export async function _doExtract(
26
34
 
27
35
  const messages: ExtractorMessage[] = []
28
36
 
37
+ const results: {sourcePath: string; filePath: string}[] = []
38
+
29
39
  for (const entry of task.entries) {
30
40
  const exportPath = entry.exportPath === '.' ? './index' : entry.exportPath
31
41
 
42
+ const sourcePath = path.resolve(
43
+ outDir,
44
+ path.relative(cwd, rootDir),
45
+ entry.sourcePath.replace(/\.ts$/, '.d.ts')
46
+ )
47
+
32
48
  const filePath = path.relative(distPath, path.resolve(cwd, entry.targetPath))
33
49
 
34
50
  const result = await _extractTypes({
@@ -38,15 +54,13 @@ export async function _doExtract(
38
54
  filePath,
39
55
  projectPath: cwd,
40
56
  rules: config?.extract?.rules,
41
- sourcePath: path.resolve(
42
- outDir,
43
- path.relative(cwd, rootDir),
44
- entry.sourcePath.replace(/\.ts$/, '.d.ts')
45
- ),
57
+ sourcePath,
46
58
  tsconfigPath: path.resolve(cwd, ts.configPath),
47
59
  distPath,
48
60
  })
49
61
 
62
+ results.push({sourcePath, filePath})
63
+
50
64
  messages.push(...result.messages)
51
65
 
52
66
  if (result.messages.some((msg) => msg.logLevel === 'error')) {
@@ -54,5 +68,22 @@ export async function _doExtract(
54
68
  }
55
69
  }
56
70
 
57
- return {type: 'dts', messages}
71
+ const tmpPath = path.resolve(distPath, '__tmp__')
72
+
73
+ await rename(outDir, tmpPath)
74
+
75
+ for (const result of results) {
76
+ const fromPath = path.resolve(
77
+ tmpPath,
78
+ path.relative(outDir, path.resolve(distPath, result.filePath))
79
+ )
80
+
81
+ const toPath = path.resolve(distPath, result.filePath)
82
+
83
+ cpx.copySync(fromPath, path.dirname(toPath))
84
+ }
85
+
86
+ await rimraf(tmpPath)
87
+
88
+ return {type: 'dts', messages, results}
58
89
  }
@@ -26,4 +26,5 @@ export interface _DtsTask {
26
26
  export interface _DtsResult {
27
27
  type: 'dts'
28
28
  messages: ExtractorMessage[]
29
+ results: {sourcePath: string; filePath: string}[]
29
30
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"__resolveBuildContext-56b6b816.cjs","sources":["../src/node/_core/_defaults.ts","../src/node/_core/_isRecord.ts","../src/node/_core/config/_loadConfig.ts","../src/node/_core/config/_resolveConfigProperty.ts","../src/node/_core/pkg/_loadPkg.ts","../src/node/_core/pkg/_loadPkgWithReporting.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 path from 'path'\nimport {register} from 'esbuild-register/dist/node'\nimport findConfig from 'find-config'\nimport pkgUp from 'pkg-up'\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 = _findConfigFile(root)\n\n if (!configFile) {\n return undefined\n }\n\n // Do not accept config files outside of the root\n if (!configFile.path.startsWith(cwd)) {\n return undefined\n }\n\n try {\n const {unregister} = configFile.transform\n ? register({extensions: ['.js', '.ts']})\n : {unregister: () => undefined}\n\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(configFile.path)\n\n unregister()\n\n return mod?.default || mod || undefined\n } catch (_) {\n return undefined\n }\n}\n\n// Looks for:\n// 1. package.config.ts\n// 2. package.config.cjs\n//\nfunction _findConfigFile(cwd: string): {path: string; transform: boolean} | null {\n const ts = findConfig('package.config.ts', {cwd})\n\n if (ts) return {path: ts, transform: true}\n\n const cjs = findConfig('package.config.cjs', {cwd})\n\n if (cjs) return {path: cjs, transform: false}\n\n return null\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 fs from 'fs/promises'\nimport pkgUp from 'pkg-up'\nimport {z} from 'zod'\nimport {_PackageJSON} from './_types'\n\nconst pkgSchema = z.object({\n type: z.optional(z.enum(['module'])),\n name: z.string(),\n version: 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.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 require: z.optional(z.string()),\n import: z.optional(z.string()),\n })\n ),\n node: z.optional(\n z.object({\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\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 pkgSchema.parse(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 {_isRecord} from '../_isRecord'\nimport {PkgExport} from '../config'\nimport {_PackageJSON} from './_types'\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 || 'index.js',\n browser: pkg.browser && {\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 || './index.js',\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 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 return [rootExport, ...extraExports]\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","_loadConfig","options","cwd","pkgPath","pkgUp","root","path","dirname","configFile","_findConfigFile","startsWith","unregister","transform","register","extensions","mod","require","default","_","ts","findConfig","cjs","_resolveConfigProperty","prop","initialValue","pkgSchema","z","object","type","optional","enum","name","string","version","bin","record","dependencies","devDependencies","peerDependencies","source","main","browser","module","types","exports","import","node","array","_loadPkg","Error","buf","fs","readFile","parse","JSON","toString","_loadPkgWithReporting","err","ZodError","issue","issues","code","console","log","chalk","red","magenta","join","expected","received","error","process","exit","_parseExports","pkg","rootExport","_exported","_path","extraExports","exportPath","exportEntry","Object","entries","assign","extraExport","push","_loadTSConfig","tsconfigPath","configPath","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","resolve","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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"}