@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.
- package/README.md +134 -0
- package/bin/pkg-utils.js +2 -0
- package/dist/_chunks/_handleError-869dec25.js +22 -0
- package/dist/_chunks/_handleError-869dec25.js.map +1 -0
- package/dist/{__resolveBuildContext-6eae01b8.cjs → _chunks/_resolveBuildContext-ef196a3e.js} +138 -48
- package/dist/_chunks/_resolveBuildContext-ef196a3e.js.map +1 -0
- package/dist/{_build-ca3c98fa.cjs → _chunks/build-8b5bd627.js} +4 -11
- package/dist/_chunks/build-8b5bd627.js.map +1 -0
- package/dist/{_buildAction-9dfec4e0.cjs → _chunks/buildAction-87c64945.js} +14 -8
- package/dist/_chunks/buildAction-87c64945.js.map +1 -0
- package/dist/{_check-999d6370.cjs → _chunks/check-7d728336.js} +2 -2
- package/dist/_chunks/check-7d728336.js.map +1 -0
- package/dist/{_checkAction-1e3718d5.cjs → _chunks/checkAction-2342707c.js} +14 -8
- package/dist/_chunks/checkAction-2342707c.js.map +1 -0
- package/dist/{_index-af5d7ae6.cjs → _chunks/index-4a1fe6d6.js} +9 -19
- package/dist/_chunks/index-4a1fe6d6.js.map +1 -0
- package/dist/{_watch-98f2f5d3.cjs → _chunks/watch-ccb7daf2.js} +4 -11
- package/dist/_chunks/watch-ccb7daf2.js.map +1 -0
- package/dist/{_watchAction-c065319c.cjs → _chunks/watchAction-b7c1e241.js} +14 -8
- package/dist/_chunks/watchAction-b7c1e241.js.map +1 -0
- package/dist/{cli.cjs → cli.js} +5 -5
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +3 -4
- package/dist/index.esm.js +5389 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +64 -5265
- package/dist/index.js.map +1 -1
- package/package.json +11 -12
- package/src/cli/_handleError.ts +11 -0
- package/src/cli/buildAction.ts +9 -4
- package/src/cli/checkAction.ts +10 -5
- package/src/cli/watchAction.ts +9 -4
- package/src/node/_core/_constants.ts +7 -3
- package/src/node/_core/_findCommonPath.test.ts +9 -0
- package/src/node/_core/_findCommonPath.ts +35 -0
- package/src/node/_core/config/types.ts +2 -2
- package/src/node/_core/contexts/buildContext.ts +1 -2
- package/src/node/_core/pkg/_loadPkgWithReporting.ts +23 -3
- package/src/node/_core/pkg/_validateExports.ts +10 -12
- package/src/node/_resolveBuildContext.ts +70 -29
- package/src/node/_resolveBuildTasks.ts +3 -8
- package/src/node/_resolveWatchTasks.ts +3 -8
- package/src/node/_tasks/rollup/_resolveRollupConfig.ts +4 -6
- package/src/node/_tasks/rollup/_rollupTask.ts +2 -1
- package/bin/pkg-utils.cjs +0 -2
- package/dist/__resolveBuildContext-6eae01b8.cjs.map +0 -1
- package/dist/_build-ca3c98fa.cjs.map +0 -1
- package/dist/_buildAction-9dfec4e0.cjs.map +0 -1
- package/dist/_check-999d6370.cjs.map +0 -1
- package/dist/_checkAction-1e3718d5.cjs.map +0 -1
- package/dist/_index-af5d7ae6.cjs.map +0 -1
- package/dist/_watch-98f2f5d3.cjs.map +0 -1
- package/dist/_watchAction-c065319c.cjs.map +0 -1
- package/dist/cli.cjs.map +0 -1
- package/dist/index.cjs +0 -109
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
32
|
-
"pkg-utils": "./bin/pkg-utils.
|
|
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
|
|
42
|
-
"check:pkg": "node
|
|
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
|
|
51
|
+
"watch": "node -r esbuild-register scripts/watch"
|
|
53
52
|
},
|
|
54
53
|
"dependencies": {
|
|
55
54
|
"@babel/core": "^7.19.0",
|
package/src/cli/buildAction.ts
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
try {
|
|
6
|
+
await build({
|
|
7
|
+
cwd: process.cwd(),
|
|
8
|
+
tsconfig: options.tsconfig,
|
|
9
|
+
})
|
|
10
|
+
} catch (err) {
|
|
11
|
+
_handleError(err)
|
|
12
|
+
}
|
|
8
13
|
}
|
package/src/cli/checkAction.ts
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
}
|
package/src/cli/watchAction.ts
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
//
|
|
3
|
+
// pkg.type: "commonjs"
|
|
4
4
|
commonjs: {
|
|
5
5
|
commonjs: '.js',
|
|
6
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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 (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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: () => `
|
|
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,
|
|
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 +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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"}
|