@sanity/pkg-utils 1.7.3 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/bin/{pkg-utils → pkg-utils.cjs} +0 -0
  2. package/dist/{__resolveBuildContext-56b6b816.cjs → __resolveBuildContext-17992a0e.cjs} +59 -7
  3. package/dist/__resolveBuildContext-17992a0e.cjs.map +1 -0
  4. package/dist/{_build-49dd667f.cjs → _build-0377061e.cjs} +7 -3
  5. package/dist/{_build-49dd667f.cjs.map → _build-0377061e.cjs.map} +1 -1
  6. package/dist/{_buildAction-b58e3a4b.cjs → _buildAction-68633427.cjs} +12 -4
  7. package/dist/{_buildAction-b58e3a4b.cjs.map → _buildAction-68633427.cjs.map} +1 -1
  8. package/dist/{_check-0871d90f.cjs → _check-11811a4d.cjs} +18 -4
  9. package/dist/_check-11811a4d.cjs.map +1 -0
  10. package/dist/{_checkAction-0510605b.cjs → _checkAction-386fe8d4.cjs} +3 -3
  11. package/dist/{_checkAction-0510605b.cjs.map → _checkAction-386fe8d4.cjs.map} +1 -1
  12. package/dist/_index-8cd98d8d.cjs +4244 -0
  13. package/dist/_index-8cd98d8d.cjs.map +1 -0
  14. package/dist/{_watch-e1c86797.cjs → _watch-259b1e4f.cjs} +7 -3
  15. package/dist/{_watch-e1c86797.cjs.map → _watch-259b1e4f.cjs.map} +1 -1
  16. package/dist/{_watchAction-cfe36cbc.cjs → _watchAction-a48d3934.cjs} +12 -4
  17. package/dist/{_watchAction-cfe36cbc.cjs.map → _watchAction-a48d3934.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 +3786 -227
  22. package/dist/index.js.map +1 -1
  23. package/dist/types/src/node/index.d.ts +18 -3
  24. package/package.json +8 -7
  25. package/src/node/_core/config/types.ts +6 -1
  26. package/src/node/_core/pkg/_loadPkg.ts +2 -41
  27. package/src/node/_core/pkg/_parseExports.ts +27 -3
  28. package/src/node/_core/pkg/_types.ts +8 -2
  29. package/src/node/_core/pkg/_validateExports.ts +29 -0
  30. package/src/node/_core/pkg/_validatePkg.ts +50 -0
  31. package/src/node/_printPackageTree.ts +10 -2
  32. package/src/node/_tasks/dts/_doExtract.ts +38 -7
  33. package/src/node/_tasks/dts/_types.ts +1 -0
  34. package/dist/__resolveBuildContext-56b6b816.cjs.map +0 -1
  35. package/dist/_check-0871d90f.cjs.map +0 -1
  36. package/dist/_index-e3dda92a.cjs +0 -733
  37. package/dist/_index-e3dda92a.cjs.map +0 -1
  38. package/dist/types/src/cli/buildAction.d.ts +0 -4
  39. package/dist/types/src/cli/buildAction.d.ts.map +0 -1
  40. package/dist/types/src/cli/checkAction.d.ts +0 -5
  41. package/dist/types/src/cli/checkAction.d.ts.map +0 -1
  42. package/dist/types/src/cli/index.d.ts +0 -2
  43. package/dist/types/src/cli/index.d.ts.map +0 -1
  44. package/dist/types/src/cli/watchAction.d.ts +0 -4
  45. package/dist/types/src/cli/watchAction.d.ts.map +0 -1
  46. package/dist/types/src/node/_core/_defaults.d.ts +0 -5
  47. package/dist/types/src/node/_core/_defaults.d.ts.map +0 -1
  48. package/dist/types/src/node/_core/_isRecord.d.ts +0 -3
  49. package/dist/types/src/node/_core/_isRecord.d.ts.map +0 -1
  50. package/dist/types/src/node/_core/config/_loadConfig.d.ts +0 -6
  51. package/dist/types/src/node/_core/config/_loadConfig.d.ts.map +0 -1
  52. package/dist/types/src/node/_core/config/_resolveConfigProperty.d.ts +0 -4
  53. package/dist/types/src/node/_core/config/_resolveConfigProperty.d.ts.map +0 -1
  54. package/dist/types/src/node/_core/config/defineConfig.d.ts +0 -4
  55. package/dist/types/src/node/_core/config/defineConfig.d.ts.map +0 -1
  56. package/dist/types/src/node/_core/config/index.d.ts +0 -5
  57. package/dist/types/src/node/_core/config/index.d.ts.map +0 -1
  58. package/dist/types/src/node/_core/config/types.d.ts +0 -76
  59. package/dist/types/src/node/_core/config/types.d.ts.map +0 -1
  60. package/dist/types/src/node/_core/contexts/buildContext.d.ts +0 -33
  61. package/dist/types/src/node/_core/contexts/buildContext.d.ts.map +0 -1
  62. package/dist/types/src/node/_core/contexts/index.d.ts +0 -2
  63. package/dist/types/src/node/_core/contexts/index.d.ts.map +0 -1
  64. package/dist/types/src/node/_core/index.d.ts +0 -7
  65. package/dist/types/src/node/_core/index.d.ts.map +0 -1
  66. package/dist/types/src/node/_core/pkg/_loadPkg.d.ts +0 -6
  67. package/dist/types/src/node/_core/pkg/_loadPkg.d.ts.map +0 -1
  68. package/dist/types/src/node/_core/pkg/_loadPkgWithReporting.d.ts +0 -6
  69. package/dist/types/src/node/_core/pkg/_loadPkgWithReporting.d.ts.map +0 -1
  70. package/dist/types/src/node/_core/pkg/_parseExports.d.ts +0 -9
  71. package/dist/types/src/node/_core/pkg/_parseExports.d.ts.map +0 -1
  72. package/dist/types/src/node/_core/pkg/_types.d.ts +0 -29
  73. package/dist/types/src/node/_core/pkg/_types.d.ts.map +0 -1
  74. package/dist/types/src/node/_core/pkg/index.d.ts +0 -5
  75. package/dist/types/src/node/_core/pkg/index.d.ts.map +0 -1
  76. package/dist/types/src/node/_core/ts/_loadTSConfig.d.ts +0 -7
  77. package/dist/types/src/node/_core/ts/_loadTSConfig.d.ts.map +0 -1
  78. package/dist/types/src/node/_core/ts/index.d.ts +0 -2
  79. package/dist/types/src/node/_core/ts/index.d.ts.map +0 -1
  80. package/dist/types/src/node/_getFilesize.d.ts +0 -2
  81. package/dist/types/src/node/_getFilesize.d.ts.map +0 -1
  82. package/dist/types/src/node/_globFiles.d.ts +0 -2
  83. package/dist/types/src/node/_globFiles.d.ts.map +0 -1
  84. package/dist/types/src/node/_printExtractMessages.d.ts +0 -4
  85. package/dist/types/src/node/_printExtractMessages.d.ts.map +0 -1
  86. package/dist/types/src/node/_printPackageTree.d.ts +0 -4
  87. package/dist/types/src/node/_printPackageTree.d.ts.map +0 -1
  88. package/dist/types/src/node/_resolveBrowserTarget.d.ts +0 -3
  89. package/dist/types/src/node/_resolveBrowserTarget.d.ts.map +0 -1
  90. package/dist/types/src/node/_resolveBrowserslistVersions.d.ts +0 -11
  91. package/dist/types/src/node/_resolveBrowserslistVersions.d.ts.map +0 -1
  92. package/dist/types/src/node/_resolveBuildContext.d.ts +0 -8
  93. package/dist/types/src/node/_resolveBuildContext.d.ts.map +0 -1
  94. package/dist/types/src/node/_resolveBuildTasks.d.ts +0 -5
  95. package/dist/types/src/node/_resolveBuildTasks.d.ts.map +0 -1
  96. package/dist/types/src/node/_resolveNodeTarget.d.ts +0 -3
  97. package/dist/types/src/node/_resolveNodeTarget.d.ts.map +0 -1
  98. package/dist/types/src/node/_resolveWatchTasks.d.ts +0 -5
  99. package/dist/types/src/node/_resolveWatchTasks.d.ts.map +0 -1
  100. package/dist/types/src/node/_spinner.d.ts +0 -5
  101. package/dist/types/src/node/_spinner.d.ts.map +0 -1
  102. package/dist/types/src/node/_tasks/_types.d.ts +0 -50
  103. package/dist/types/src/node/_tasks/_types.d.ts.map +0 -1
  104. package/dist/types/src/node/_tasks/dts/_DtsError.d.ts +0 -7
  105. package/dist/types/src/node/_tasks/dts/_DtsError.d.ts.map +0 -1
  106. package/dist/types/src/node/_tasks/dts/_buildTypes.d.ts +0 -9
  107. package/dist/types/src/node/_tasks/dts/_buildTypes.d.ts.map +0 -1
  108. package/dist/types/src/node/_tasks/dts/_createApiExtractorConfig.d.ts +0 -11
  109. package/dist/types/src/node/_tasks/dts/_createApiExtractorConfig.d.ts.map +0 -1
  110. package/dist/types/src/node/_tasks/dts/_createTSDocConfig.d.ts +0 -12
  111. package/dist/types/src/node/_tasks/dts/_createTSDocConfig.d.ts.map +0 -1
  112. package/dist/types/src/node/_tasks/dts/_doExtract.d.ts +0 -4
  113. package/dist/types/src/node/_tasks/dts/_doExtract.d.ts.map +0 -1
  114. package/dist/types/src/node/_tasks/dts/_dtsTask.d.ts +0 -5
  115. package/dist/types/src/node/_tasks/dts/_dtsTask.d.ts.map +0 -1
  116. package/dist/types/src/node/_tasks/dts/_dtsWatchTask.d.ts +0 -5
  117. package/dist/types/src/node/_tasks/dts/_dtsWatchTask.d.ts.map +0 -1
  118. package/dist/types/src/node/_tasks/dts/_extractTypes.d.ts +0 -17
  119. package/dist/types/src/node/_tasks/dts/_extractTypes.d.ts.map +0 -1
  120. package/dist/types/src/node/_tasks/dts/_types.d.ts +0 -27
  121. package/dist/types/src/node/_tasks/dts/_types.d.ts.map +0 -1
  122. package/dist/types/src/node/_tasks/dts/index.d.ts +0 -4
  123. package/dist/types/src/node/_tasks/dts/index.d.ts.map +0 -1
  124. package/dist/types/src/node/_tasks/index.d.ts +0 -9
  125. package/dist/types/src/node/_tasks/index.d.ts.map +0 -1
  126. package/dist/types/src/node/_tasks/rollup/_resolveRollupConfig.d.ts +0 -10
  127. package/dist/types/src/node/_tasks/rollup/_resolveRollupConfig.d.ts.map +0 -1
  128. package/dist/types/src/node/_tasks/rollup/_rollupTask.d.ts +0 -4
  129. package/dist/types/src/node/_tasks/rollup/_rollupTask.d.ts.map +0 -1
  130. package/dist/types/src/node/_tasks/rollup/_rollupWatchTask.d.ts +0 -5
  131. package/dist/types/src/node/_tasks/rollup/_rollupWatchTask.d.ts.map +0 -1
  132. package/dist/types/src/node/_tasks/rollup/index.d.ts +0 -3
  133. package/dist/types/src/node/_tasks/rollup/index.d.ts.map +0 -1
  134. package/dist/types/src/node/_watchConfigFiles.d.ts +0 -5
  135. package/dist/types/src/node/_watchConfigFiles.d.ts.map +0 -1
  136. package/dist/types/src/node/_watchFiles.d.ts +0 -7
  137. package/dist/types/src/node/_watchFiles.d.ts.map +0 -1
  138. package/dist/types/src/node/build.d.ts +0 -6
  139. package/dist/types/src/node/build.d.ts.map +0 -1
  140. package/dist/types/src/node/check.d.ts +0 -7
  141. package/dist/types/src/node/check.d.ts.map +0 -1
  142. package/dist/types/src/node/index.d.ts.map +0 -1
  143. package/dist/types/src/node/watch.d.ts +0 -6
  144. 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[]
@@ -211,7 +221,12 @@ export declare interface PkgExport {
211
221
  /** @internal */
212
222
  _exported?: boolean
213
223
  browser?: {
214
- source?: string
224
+ source: string
225
+ import?: string
226
+ require?: string
227
+ }
228
+ node?: {
229
+ source: string
215
230
  import?: string
216
231
  require?: string
217
232
  }
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.1",
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",
@@ -9,7 +9,7 @@ export interface PkgExport {
9
9
  /** @internal */
10
10
  _exported?: boolean
11
11
  browser?: {
12
- source?: string
12
+ source: string
13
13
  import?: string
14
14
  require?: string
15
15
  }
@@ -17,6 +17,11 @@ export interface PkgExport {
17
17
  // node?: string
18
18
  // default?: string
19
19
  // }
20
+ node?: {
21
+ source: string
22
+ import?: string
23
+ require?: string
24
+ }
20
25
  types?: string
21
26
  source: string
22
27
  import?: string
@@ -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,15 @@ 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 && {
16
+ source: pkg.source || '',
15
17
  require: pkg.main && pkg.browser[pkg.main],
16
18
  import: pkg.module && pkg.browser[pkg.module],
17
19
  },
18
20
  import: pkg.module,
19
21
  require: pkg.main,
20
- default: pkg.module || pkg.main || './index.js',
22
+ default: pkg.module || pkg.main || '',
21
23
  }
22
24
 
23
25
  const extraExports: (PkgExport & {_path: string})[] = []
@@ -26,6 +28,26 @@ export function _parseExports(options: {pkg: _PackageJSON}): (PkgExport & {_path
26
28
  for (const [exportPath, exportEntry] of Object.entries(pkg.exports)) {
27
29
  if (_isRecord(exportEntry)) {
28
30
  if (exportPath === '.') {
31
+ if (
32
+ exportEntry.require &&
33
+ rootExport.require &&
34
+ exportEntry.require !== rootExport.require
35
+ ) {
36
+ throw new Error('mismatch between "main" and "require"')
37
+ }
38
+
39
+ if (exportEntry.import && rootExport.import && exportEntry.import !== rootExport.import) {
40
+ throw new Error('mismatch between "module" and "import"')
41
+ }
42
+
43
+ if (exportEntry.types && rootExport.types && exportEntry.types !== rootExport.types) {
44
+ throw new Error('mismatch between "types" and "types"')
45
+ }
46
+
47
+ if (exportEntry.source && rootExport.source && exportEntry.source !== rootExport.source) {
48
+ throw new Error('mismatch between "source" and "source"')
49
+ }
50
+
29
51
  Object.assign(rootExport, exportEntry)
30
52
  } else {
31
53
  const extraExport: PkgExport & {_path: string} = {
@@ -42,5 +64,7 @@ export function _parseExports(options: {pkg: _PackageJSON}): (PkgExport & {_path
42
64
  }
43
65
  }
44
66
 
45
- return [rootExport, ...extraExports]
67
+ const _exports = [rootExport, ...extraExports]
68
+
69
+ return _validateExports(_exports, {pkg})
46
70
  }
@@ -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
+ }
@@ -53,16 +53,24 @@ export function _printPackageTree(ctx: _BuildContext): void {
53
53
  .map(([exportPath, entry]) => {
54
54
  const exp: Omit<PkgExport, '_exported'> = {source: entry.source, default: entry.default}
55
55
 
56
+ if (entry.types) exp.types = _fileInfo(entry.types)
57
+
56
58
  if (entry.browser) {
57
- exp.browser = {}
59
+ exp.browser = {source: entry.browser.source}
58
60
 
59
61
  if (entry.browser.import) exp.browser.import = _fileInfo(entry.browser.import)
60
62
  if (entry.browser.require) exp.browser.import = _fileInfo(entry.browser.require)
61
63
  }
62
64
 
65
+ if (entry.node) {
66
+ exp.node = {source: entry.node.source}
67
+
68
+ if (entry.node.import) exp.node.import = _fileInfo(entry.node.import)
69
+ if (entry.node.require) exp.node.import = _fileInfo(entry.node.require)
70
+ }
71
+
63
72
  if (entry.import) exp.import = _fileInfo(entry.import)
64
73
  if (entry.require) exp.require = _fileInfo(entry.require)
65
- if (entry.types) exp.types = _fileInfo(entry.types)
66
74
 
67
75
  exp.default = _fileInfo(entry.default)
68
76
 
@@ -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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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_check-0871d90f.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, any> = {}\n\n if (pkg.bin) {\n tree.bin = pkg.bin\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 `${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'> = {source: entry.source, default: entry.default}\n\n if (entry.browser) {\n exp.browser = {}\n\n if (entry.browser.import) exp.browser.import = _fileInfo(entry.browser.import)\n if (entry.browser.require) exp.browser.import = _fileInfo(entry.browser.require)\n }\n\n if (entry.import) exp.import = _fileInfo(entry.import)\n if (entry.require) exp.require = _fileInfo(entry.require)\n if (entry.types) exp.types = _fileInfo(entry.types)\n\n exp.default = _fileInfo(entry.default)\n\n return [chalk.green(path.join(pkg.name, exportPath)), exp]\n })\n )\n\n logger.log(treeify.asTree(tree, true, true))\n}\n","/* eslint-disable no-console */\n\nimport path from 'path'\nimport chalk from 'chalk'\nimport esbuild, {BuildFailure} from 'esbuild'\nimport {_loadConfig, _loadPkgWithReporting} from './_core'\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, tsconfig = 'tsconfig.json'} = options\n\n const pkg = await _loadPkgWithReporting({cwd})\n const config = await _loadConfig({cwd})\n const ctx = await _resolveBuildContext({config, cwd, pkg, 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 throw new Error('missing files')\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 [exportPath, exp] of Object.entries(ctx.exports || {})) {\n if (!exp._exported) continue\n if (exp.require) _paths.require.push(exportPath)\n if (exp.import) _paths.import.push(exportPath)\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 console.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 console.log(chalk.red('error'), _err.detail || _err.text)\n console.log(`${_err.location.line} | ${_err.location.lineText}`)\n console.log(\n 'in',\n `./${_err.location.file}:${_err.location.line}:${_err.location.column}`\n )\n } else {\n console.log(_err.detail || _err.text)\n }\n\n console.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 }\n\n if (esbuildResult.warnings.length > 0) {\n console.warn(...esbuildResult.warnings)\n }\n }\n }\n}\n"],"names":["_getFilesize","file","stats","statSync","prettyBytes","size","_fileExists","fs","accessSync","_","_getFileInfo","cwd","filePath","p","path","resolve","exists","_printPackageTree","ctx","exports","logger","pkg","log","chalk","blue","name","green","version","tree","bin","_fileInfo","info","gray","red","Object","fromEntries","entries","filter","entry","_exported","map","exportPath","exp","source","default","browser","import","require","types","join","treeify","asTree","check","options","strict","tsconfig","_loadPkgWithReporting","config","_loadConfig","_resolveBuildContext","missingFiles","push","length","Error","_paths","external","keys","dependencies","concat","devDependencies","code","id","esbuildResult","esbuild","build","stdin","contents","loader","resolveDir","format","bundle","logLevel","outfile","platform","warnings","console","warn","err","errors","_err","location","detail","text","line","lineText","column","process","exit"],"mappings":"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"}