@sanity/pkg-utils 2.2.17 → 2.3.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.
- package/README.md +16 -7
- package/dist/_chunks/{build-45e5ded8.cjs → build-0aed2000.cjs} +11 -8
- package/dist/_chunks/{build-45e5ded8.cjs.map → build-0aed2000.cjs.map} +1 -1
- package/dist/_chunks/{buildAction-afc0a1a6.cjs → buildAction-196fba7b.cjs} +2 -2
- package/dist/_chunks/{buildAction-afc0a1a6.cjs.map → buildAction-196fba7b.cjs.map} +1 -1
- package/dist/_chunks/{check-33e163bb.cjs → check-2deafe2a.cjs} +22 -19
- package/dist/_chunks/{check-33e163bb.cjs.map → check-2deafe2a.cjs.map} +1 -1
- package/dist/_chunks/{checkAction-6fd7b2bc.cjs → checkAction-7ac5a05e.cjs} +2 -2
- package/dist/_chunks/{checkAction-6fd7b2bc.cjs.map → checkAction-7ac5a05e.cjs.map} +1 -1
- package/dist/_chunks/{index-f3c22a05.cjs → index-984e18d1.cjs} +4 -2
- package/dist/_chunks/{index-f3c22a05.cjs.map → index-984e18d1.cjs.map} +1 -1
- package/dist/_chunks/init-ab36343b.cjs +469 -0
- package/dist/_chunks/init-ab36343b.cjs.map +1 -0
- package/dist/_chunks/initAction-d18cf4f2.cjs +16 -0
- package/dist/_chunks/initAction-d18cf4f2.cjs.map +1 -0
- package/dist/_chunks/logger-c593f06b.cjs +97 -0
- package/dist/_chunks/logger-c593f06b.cjs.map +1 -0
- package/dist/_chunks/{resolveBuildContext-6666f1ab.cjs → resolveBuildContext-5ef90110.cjs} +10 -91
- package/dist/_chunks/resolveBuildContext-5ef90110.cjs.map +1 -0
- package/dist/_chunks/{watch-2bff1357.cjs → watch-63a93eb0.cjs} +10 -7
- package/dist/_chunks/{watch-2bff1357.cjs.map → watch-63a93eb0.cjs.map} +1 -1
- package/dist/_chunks/{watchAction-39b0210b.cjs → watchAction-95c0b481.cjs} +2 -2
- package/dist/_chunks/{watchAction-39b0210b.cjs.map → watchAction-95c0b481.cjs.map} +1 -1
- package/dist/cli.cjs +14 -4
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +12 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +87 -0
- package/dist/index.js +449 -8
- package/dist/index.js.map +1 -1
- package/package.json +23 -15
- package/src/cli/index.ts +8 -0
- package/src/cli/initAction.ts +13 -0
- package/src/node/core/index.ts +1 -0
- package/src/node/core/pkg/types.ts +13 -0
- package/src/node/core/template/createFromTemplate.ts +85 -0
- package/src/node/core/template/define.ts +6 -0
- package/src/node/core/template/index.ts +3 -0
- package/src/node/core/template/types.ts +45 -0
- package/src/node/index.ts +1 -0
- package/src/node/init.ts +55 -0
- package/src/node/isEmptyDirectory.ts +5 -0
- package/src/node/templates/default/index.ts +1 -0
- package/src/node/templates/default/template.ts +553 -0
- package/src/node/templates/index.ts +1 -0
- package/dist/_chunks/resolveBuildContext-6666f1ab.cjs.map +0 -1
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
import getLatestVersion from 'get-latest-version'
|
|
2
|
+
import gitUrlParse from 'git-url-parse'
|
|
3
|
+
import {outdent} from 'outdent'
|
|
4
|
+
import parseGitConfig from 'parse-git-config'
|
|
5
|
+
import {resolve} from 'path'
|
|
6
|
+
import prettier, {Config as PrettierConfig} from 'prettier'
|
|
7
|
+
|
|
8
|
+
import {defineTemplateOption, isRecord, PackageJSON, PkgTemplate, PkgTemplateFile} from '../../core'
|
|
9
|
+
|
|
10
|
+
const RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i
|
|
11
|
+
|
|
12
|
+
export const defaultTemplate: PkgTemplate = async ({cwd, logger, packagePath}) => {
|
|
13
|
+
const gitConfig = await parseGitConfig({cwd, type: 'global'})
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
options: [
|
|
17
|
+
defineTemplateOption<{owner: string; name: string}>({
|
|
18
|
+
name: 'repo',
|
|
19
|
+
type: 'string',
|
|
20
|
+
description: 'git url',
|
|
21
|
+
validate: (v) => {
|
|
22
|
+
if (!v) return true
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
gitUrlParse(v)
|
|
26
|
+
|
|
27
|
+
return true
|
|
28
|
+
} catch (err) {
|
|
29
|
+
return 'invalid git url'
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
parse: (v) => {
|
|
33
|
+
if (!v) return null
|
|
34
|
+
|
|
35
|
+
const result = gitUrlParse(v)
|
|
36
|
+
|
|
37
|
+
return {source: result.source, owner: result.owner, name: result.name}
|
|
38
|
+
},
|
|
39
|
+
}),
|
|
40
|
+
defineTemplateOption({
|
|
41
|
+
name: 'pkgName',
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'package name',
|
|
44
|
+
initial: (options) => options.repo?.name || undefined,
|
|
45
|
+
validate: (v) => {
|
|
46
|
+
if (!v) return 'package name is required'
|
|
47
|
+
|
|
48
|
+
const match = RE_NAME.exec(v)
|
|
49
|
+
|
|
50
|
+
if (!match) {
|
|
51
|
+
return 'invalid package name'
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return true
|
|
55
|
+
},
|
|
56
|
+
parse: (v) => {
|
|
57
|
+
if (!v) {
|
|
58
|
+
throw new Error('package name is required')
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const match = RE_NAME.exec(v)
|
|
62
|
+
|
|
63
|
+
if (!match) {
|
|
64
|
+
throw new Error('invalid package name')
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const [scope, name] = v.split('/')
|
|
68
|
+
|
|
69
|
+
return {scope, name, fullName: v}
|
|
70
|
+
},
|
|
71
|
+
}),
|
|
72
|
+
defineTemplateOption({
|
|
73
|
+
name: 'description',
|
|
74
|
+
type: 'string',
|
|
75
|
+
description: 'package description',
|
|
76
|
+
}),
|
|
77
|
+
defineTemplateOption({
|
|
78
|
+
name: 'authorName',
|
|
79
|
+
type: 'string',
|
|
80
|
+
description: 'package author name',
|
|
81
|
+
initial: gitConfig?.user?.name,
|
|
82
|
+
}),
|
|
83
|
+
defineTemplateOption({
|
|
84
|
+
name: 'authorEmail',
|
|
85
|
+
type: 'string',
|
|
86
|
+
description: 'package author email',
|
|
87
|
+
initial: gitConfig?.user?.email,
|
|
88
|
+
}),
|
|
89
|
+
defineTemplateOption({
|
|
90
|
+
name: 'license',
|
|
91
|
+
type: 'string',
|
|
92
|
+
description: 'package license',
|
|
93
|
+
initial: 'MIT',
|
|
94
|
+
validate: (v) => {
|
|
95
|
+
if (!v) return 'license is required'
|
|
96
|
+
|
|
97
|
+
return true
|
|
98
|
+
},
|
|
99
|
+
}),
|
|
100
|
+
],
|
|
101
|
+
|
|
102
|
+
features: [
|
|
103
|
+
{
|
|
104
|
+
name: 'eslint',
|
|
105
|
+
optional: true,
|
|
106
|
+
initial: true,
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'typescript',
|
|
110
|
+
optional: true,
|
|
111
|
+
initial: true,
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
|
|
115
|
+
async getFiles(options, features) {
|
|
116
|
+
const {pkgName, repo} = options
|
|
117
|
+
const {fullName: name} = pkgName
|
|
118
|
+
|
|
119
|
+
const author =
|
|
120
|
+
[options.authorName, options.authorEmail && `<${options.authorEmail}>`]
|
|
121
|
+
.filter(Boolean)
|
|
122
|
+
.join(' ') ?? undefined
|
|
123
|
+
|
|
124
|
+
const prettierConfig: PrettierConfig = {
|
|
125
|
+
bracketSpacing: false,
|
|
126
|
+
printWidth: 100,
|
|
127
|
+
semi: false,
|
|
128
|
+
singleQuote: true,
|
|
129
|
+
tabWidth: 2,
|
|
130
|
+
plugins: ['prettier-plugin-packagejson'],
|
|
131
|
+
overrides: [
|
|
132
|
+
{
|
|
133
|
+
files: ['*.yml'],
|
|
134
|
+
options: {
|
|
135
|
+
singleQuote: false,
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const pkgJson: PackageJSON & {
|
|
142
|
+
prettier?: PrettierConfig
|
|
143
|
+
['lint-staged']?: Record<string, string[]>
|
|
144
|
+
} = {
|
|
145
|
+
name,
|
|
146
|
+
version: '0.0.0',
|
|
147
|
+
description: options.description ?? undefined,
|
|
148
|
+
keywords: [],
|
|
149
|
+
license: options.license,
|
|
150
|
+
author,
|
|
151
|
+
type: 'module',
|
|
152
|
+
exports: {
|
|
153
|
+
'.': {
|
|
154
|
+
types: undefined,
|
|
155
|
+
source: features.typescript ? './src/index.ts' : './src/index.js',
|
|
156
|
+
require: './dist/index.cjs',
|
|
157
|
+
import: './dist/index.js',
|
|
158
|
+
default: './dist/index.js',
|
|
159
|
+
},
|
|
160
|
+
'./package.json': './package.json',
|
|
161
|
+
},
|
|
162
|
+
main: './dist/index.cjs',
|
|
163
|
+
module: './dist/index.js',
|
|
164
|
+
source: features.typescript ? './src/index.ts' : './src/index.js',
|
|
165
|
+
files: ['dist', 'src'],
|
|
166
|
+
scripts: {
|
|
167
|
+
build: 'run-s clean pkg:build pkg:check',
|
|
168
|
+
clean: 'rimraf dist',
|
|
169
|
+
format: 'prettier --write --cache --ignore-unknown .',
|
|
170
|
+
'pkg:build': 'pkg build --strict',
|
|
171
|
+
'pkg:check': 'pkg check --strict',
|
|
172
|
+
},
|
|
173
|
+
prettier: prettierConfig,
|
|
174
|
+
'lint-staged': {
|
|
175
|
+
'*': ['prettier --write --cache --ignore-unknown'],
|
|
176
|
+
},
|
|
177
|
+
dependencies: {},
|
|
178
|
+
devDependencies: {
|
|
179
|
+
'@sanity/pkg-utils': '*',
|
|
180
|
+
'lint-staged': '*',
|
|
181
|
+
'npm-run-all': '*',
|
|
182
|
+
prettier: '*',
|
|
183
|
+
'prettier-plugin-packagejson': '*',
|
|
184
|
+
rimraf: '*',
|
|
185
|
+
},
|
|
186
|
+
engines: {
|
|
187
|
+
node: '>=18.0.0',
|
|
188
|
+
},
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const files: PkgTemplateFile[] = []
|
|
192
|
+
|
|
193
|
+
// .editorconfig
|
|
194
|
+
files.push({
|
|
195
|
+
name: '.editorconfig',
|
|
196
|
+
contents: outdent`
|
|
197
|
+
root = true
|
|
198
|
+
|
|
199
|
+
[*]
|
|
200
|
+
charset = utf-8
|
|
201
|
+
indent_style = space
|
|
202
|
+
indent_size = 2
|
|
203
|
+
end_of_line = lf
|
|
204
|
+
insert_final_newline = true
|
|
205
|
+
trim_trailing_whitespace = true
|
|
206
|
+
`,
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
// .gitignore
|
|
210
|
+
files.push({
|
|
211
|
+
name: '.gitignore',
|
|
212
|
+
contents: outdent`
|
|
213
|
+
*.local
|
|
214
|
+
*.log
|
|
215
|
+
|
|
216
|
+
.DS_Store
|
|
217
|
+
etc
|
|
218
|
+
dist
|
|
219
|
+
node_modules
|
|
220
|
+
`,
|
|
221
|
+
})
|
|
222
|
+
|
|
223
|
+
files.push({
|
|
224
|
+
name: '.prettierignore',
|
|
225
|
+
contents: outdent`
|
|
226
|
+
/dist
|
|
227
|
+
/pnpm-lock.yaml
|
|
228
|
+
`,
|
|
229
|
+
})
|
|
230
|
+
|
|
231
|
+
if (repo) {
|
|
232
|
+
pkgJson.repository = {
|
|
233
|
+
type: 'git',
|
|
234
|
+
url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`,
|
|
235
|
+
}
|
|
236
|
+
pkgJson.bugs = {
|
|
237
|
+
url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`,
|
|
238
|
+
}
|
|
239
|
+
pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
if (features.typescript) {
|
|
243
|
+
pkgJson.types = './dist/index.d.ts'
|
|
244
|
+
|
|
245
|
+
const mainExport = pkgJson.exports?.['.']
|
|
246
|
+
|
|
247
|
+
if (isRecord(mainExport)) {
|
|
248
|
+
mainExport.types = './dist/index.d.ts'
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
pkgJson.scripts = {
|
|
252
|
+
...pkgJson.scripts,
|
|
253
|
+
['type:check']: 'tsc --build',
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
const devDependencies = pkgJson.devDependencies
|
|
257
|
+
|
|
258
|
+
if (isRecord(devDependencies)) {
|
|
259
|
+
devDependencies['typescript'] = '*'
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (features.eslint) {
|
|
264
|
+
const eslintConfig: any = {
|
|
265
|
+
root: true,
|
|
266
|
+
env: {
|
|
267
|
+
browser: true,
|
|
268
|
+
es6: true,
|
|
269
|
+
node: true,
|
|
270
|
+
},
|
|
271
|
+
extends: ['eslint:recommended', 'plugin:prettier/recommended'],
|
|
272
|
+
parserOptions: {
|
|
273
|
+
ecmaVersion: 2020,
|
|
274
|
+
sourceType: 'module',
|
|
275
|
+
},
|
|
276
|
+
plugins: ['import', 'prettier'],
|
|
277
|
+
rules: {
|
|
278
|
+
'no-console': 'error',
|
|
279
|
+
'no-shadow': 'error',
|
|
280
|
+
'no-warning-comments': ['warn', {location: 'start', terms: ['todo', 'fixme']}],
|
|
281
|
+
},
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
files.push({
|
|
285
|
+
name: '.eslintignore',
|
|
286
|
+
contents: outdent`
|
|
287
|
+
/dist
|
|
288
|
+
`,
|
|
289
|
+
})
|
|
290
|
+
|
|
291
|
+
pkgJson.scripts = {
|
|
292
|
+
...pkgJson.scripts,
|
|
293
|
+
lint: features.typescript
|
|
294
|
+
? 'eslint . --ext .cjs,.js,.ts,.tsx'
|
|
295
|
+
: 'eslint . --ext .cjs,.js',
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
pkgJson.devDependencies = {
|
|
299
|
+
...pkgJson.devDependencies,
|
|
300
|
+
eslint: '*',
|
|
301
|
+
'eslint-config-prettier': '*',
|
|
302
|
+
'eslint-plugin-import': '*',
|
|
303
|
+
'eslint-plugin-prettier': '*',
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
if (features.typescript) {
|
|
307
|
+
pkgJson.devDependencies = {
|
|
308
|
+
...pkgJson.devDependencies,
|
|
309
|
+
'@typescript-eslint/eslint-plugin': '*',
|
|
310
|
+
'@typescript-eslint/parser': '*',
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
const eslintConfigOverride: any = {
|
|
314
|
+
files: ['**/*.ts', '**/*.tsx'],
|
|
315
|
+
parser: '@typescript-eslint/parser',
|
|
316
|
+
parserOptions: {
|
|
317
|
+
project: ['./tsconfig.json'],
|
|
318
|
+
},
|
|
319
|
+
extends: [
|
|
320
|
+
'eslint:recommended',
|
|
321
|
+
'plugin:prettier/recommended',
|
|
322
|
+
'plugin:@typescript-eslint/eslint-recommended',
|
|
323
|
+
'plugin:@typescript-eslint/recommended',
|
|
324
|
+
].filter(Boolean),
|
|
325
|
+
plugins: ['import', '@typescript-eslint', 'prettier'].filter(Boolean),
|
|
326
|
+
rules: {
|
|
327
|
+
'@typescript-eslint/explicit-module-boundary-types': 'error',
|
|
328
|
+
'@typescript-eslint/interface-name-prefix': 'off',
|
|
329
|
+
'@typescript-eslint/member-delimiter-style': 'off',
|
|
330
|
+
'@typescript-eslint/no-empty-interface': 'off',
|
|
331
|
+
},
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
eslintConfig.overrides = [eslintConfigOverride]
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
files.push({
|
|
338
|
+
name: '.eslintrc.cjs',
|
|
339
|
+
contents: format(
|
|
340
|
+
resolve(packagePath, '.eslintrc.cjs'),
|
|
341
|
+
outdent`
|
|
342
|
+
'use strict'
|
|
343
|
+
|
|
344
|
+
/** @type import('eslint').Linter.Config */
|
|
345
|
+
module.exports = ${JSON.stringify(eslintConfig, null, 2)}
|
|
346
|
+
`,
|
|
347
|
+
prettierConfig
|
|
348
|
+
),
|
|
349
|
+
})
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
if (features.typescript) {
|
|
353
|
+
files.push({
|
|
354
|
+
name: 'tsconfig.settings.json',
|
|
355
|
+
contents: format(
|
|
356
|
+
resolve(packagePath, 'tsconfig.settings.json'),
|
|
357
|
+
outdent`
|
|
358
|
+
{
|
|
359
|
+
"compilerOptions": {
|
|
360
|
+
"module": "ES2020",
|
|
361
|
+
"target": "ES2020",
|
|
362
|
+
"declaration": true,
|
|
363
|
+
"declarationMap": true,
|
|
364
|
+
"sourceMap": true,
|
|
365
|
+
|
|
366
|
+
// Strict type-checking
|
|
367
|
+
"strict": true,
|
|
368
|
+
"noImplicitAny": true,
|
|
369
|
+
"strictNullChecks": true,
|
|
370
|
+
"strictFunctionTypes": true,
|
|
371
|
+
"strictPropertyInitialization": true,
|
|
372
|
+
"noImplicitThis": true,
|
|
373
|
+
"alwaysStrict": true,
|
|
374
|
+
|
|
375
|
+
// Additional checks
|
|
376
|
+
"noUnusedLocals": true,
|
|
377
|
+
"noUnusedParameters": true,
|
|
378
|
+
"noImplicitReturns": true,
|
|
379
|
+
"noFallthroughCasesInSwitch": true,
|
|
380
|
+
"skipLibCheck": true,
|
|
381
|
+
|
|
382
|
+
// Module resolution
|
|
383
|
+
"moduleResolution": "node",
|
|
384
|
+
"allowSyntheticDefaultImports": true,
|
|
385
|
+
"esModuleInterop": true
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
`,
|
|
389
|
+
prettierConfig
|
|
390
|
+
),
|
|
391
|
+
})
|
|
392
|
+
|
|
393
|
+
files.push({
|
|
394
|
+
name: 'tsconfig.dist.json',
|
|
395
|
+
contents: format(
|
|
396
|
+
resolve(packagePath, 'tsconfig.dist.json'),
|
|
397
|
+
outdent`
|
|
398
|
+
{
|
|
399
|
+
"extends": "./tsconfig.settings",
|
|
400
|
+
"include": ["./src"],
|
|
401
|
+
"compilerOptions": {
|
|
402
|
+
"rootDir": ".",
|
|
403
|
+
"outDir": "./dist",
|
|
404
|
+
"emitDeclarationOnly": true,
|
|
405
|
+
"resolveJsonModule": true
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
`,
|
|
409
|
+
prettierConfig
|
|
410
|
+
),
|
|
411
|
+
})
|
|
412
|
+
|
|
413
|
+
files.push({
|
|
414
|
+
name: 'tsconfig.json',
|
|
415
|
+
contents: format(
|
|
416
|
+
resolve(packagePath, 'tsconfig.json'),
|
|
417
|
+
outdent`
|
|
418
|
+
{
|
|
419
|
+
"extends": "./tsconfig.settings",
|
|
420
|
+
"include": ["./*.cjs", "./*.ts", "./package.config.ts", "./src"],
|
|
421
|
+
"compilerOptions": {
|
|
422
|
+
"rootDir": ".",
|
|
423
|
+
"outDir": "./dist",
|
|
424
|
+
"noEmit": true,
|
|
425
|
+
"allowJs": true,
|
|
426
|
+
"resolveJsonModule": true,
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
`,
|
|
430
|
+
prettierConfig
|
|
431
|
+
),
|
|
432
|
+
})
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// source file
|
|
436
|
+
if (features.typescript) {
|
|
437
|
+
files.push({
|
|
438
|
+
name: 'package.config.ts',
|
|
439
|
+
contents: format(
|
|
440
|
+
resolve(packagePath, 'package.config.ts'),
|
|
441
|
+
outdent`
|
|
442
|
+
import {defineConfig} from '@sanity/pkg-utils'
|
|
443
|
+
|
|
444
|
+
export default defineConfig({
|
|
445
|
+
extract: {
|
|
446
|
+
rules: {
|
|
447
|
+
// do not require internal members to be prefixed with \`_\`
|
|
448
|
+
'ae-internal-missing-underscore': 'off',
|
|
449
|
+
},
|
|
450
|
+
},
|
|
451
|
+
|
|
452
|
+
// the path to the tsconfig file for distributed builds
|
|
453
|
+
tsconfig: 'tsconfig.dist.json',
|
|
454
|
+
})
|
|
455
|
+
`,
|
|
456
|
+
prettierConfig
|
|
457
|
+
),
|
|
458
|
+
})
|
|
459
|
+
|
|
460
|
+
files.push({
|
|
461
|
+
name: 'src/index.ts',
|
|
462
|
+
contents: format(
|
|
463
|
+
resolve(packagePath, 'src/index.ts'),
|
|
464
|
+
outdent`
|
|
465
|
+
/** @public */
|
|
466
|
+
export function main(): void {
|
|
467
|
+
//
|
|
468
|
+
}
|
|
469
|
+
`,
|
|
470
|
+
prettierConfig
|
|
471
|
+
),
|
|
472
|
+
})
|
|
473
|
+
} else {
|
|
474
|
+
files.push({
|
|
475
|
+
name: 'package.config.js',
|
|
476
|
+
contents: format(
|
|
477
|
+
resolve(packagePath, 'package.config.js'),
|
|
478
|
+
outdent`
|
|
479
|
+
import {defineConfig} from '@sanity/pkg-utils'
|
|
480
|
+
|
|
481
|
+
export default defineConfig({
|
|
482
|
+
extract: {
|
|
483
|
+
rules: {
|
|
484
|
+
// do not require internal members to be prefixed with \`_\`
|
|
485
|
+
'ae-internal-missing-underscore': 'off',
|
|
486
|
+
},
|
|
487
|
+
},
|
|
488
|
+
})
|
|
489
|
+
`,
|
|
490
|
+
prettierConfig
|
|
491
|
+
),
|
|
492
|
+
})
|
|
493
|
+
|
|
494
|
+
files.push({
|
|
495
|
+
name: 'src/index.js',
|
|
496
|
+
contents: format(
|
|
497
|
+
resolve(packagePath, 'src/index.js'),
|
|
498
|
+
outdent`
|
|
499
|
+
/** @public */
|
|
500
|
+
export function main() {
|
|
501
|
+
//
|
|
502
|
+
}
|
|
503
|
+
`,
|
|
504
|
+
prettierConfig
|
|
505
|
+
),
|
|
506
|
+
})
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
// Resolve latest dependencies
|
|
510
|
+
try {
|
|
511
|
+
pkgJson.dependencies = await resolveLatestDeps(pkgJson.dependencies ?? {})
|
|
512
|
+
} catch (error) {
|
|
513
|
+
logger.warn(error instanceof Error ? error.message : error)
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
// Resolve latest devDependencies
|
|
517
|
+
try {
|
|
518
|
+
pkgJson.devDependencies = await resolveLatestDeps(pkgJson.devDependencies ?? {})
|
|
519
|
+
} catch (error) {
|
|
520
|
+
logger.warn(error instanceof Error ? error.message : error)
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
files.push({
|
|
524
|
+
name: 'package.json',
|
|
525
|
+
contents: format(
|
|
526
|
+
resolve(packagePath, 'package.json'),
|
|
527
|
+
JSON.stringify(pkgJson, null, 2),
|
|
528
|
+
prettierConfig
|
|
529
|
+
),
|
|
530
|
+
})
|
|
531
|
+
|
|
532
|
+
return files
|
|
533
|
+
},
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
function format(filepath: string, input: string, prettierOptions: PrettierConfig) {
|
|
538
|
+
return prettier.format(input, {...prettierOptions, filepath})
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
async function resolveLatestDeps(deps: Record<string, string>) {
|
|
542
|
+
const depsEntries = Object.entries(deps)
|
|
543
|
+
const latestDeps: Record<string, string> = {}
|
|
544
|
+
|
|
545
|
+
for (const entry of depsEntries) {
|
|
546
|
+
const [name, version] = entry
|
|
547
|
+
const latestVersion = await getLatestVersion(name, version)
|
|
548
|
+
|
|
549
|
+
latestDeps[name] = latestVersion ? `^${latestVersion}` : version
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
return latestDeps
|
|
553
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './default'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveBuildContext-6666f1ab.cjs","sources":["../../src/node/fileExists.ts","../../src/node/core/config/findConfigFile.ts","../../src/node/core/config/loadConfig.ts","../../src/node/core/config/resolveConfigProperty.ts","../../src/node/core/defaults.ts","../../src/node/core/isRecord.ts","../../src/node/core/pkg/validatePkg.ts","../../src/node/core/pkg/loadPkg.ts","../../src/node/core/pkg/helpers.ts","../../src/node/core/pkg/loadPkgWithReporting.ts","../../src/node/core/pkg/validateExports.ts","../../src/node/core/pkg/parseExports.ts","../../src/node/core/pkg/pkgExt.ts","../../src/node/core/ts/loadTSConfig.ts","../../src/node/logger.ts","../../src/node/core/findCommonPath.ts","../../src/node/resolveBrowserslistVersions.ts","../../src/node/resolveBrowserTarget.ts","../../src/node/resolveNodeTarget.ts","../../src/node/resolveBuildContext.ts"],"sourcesContent":["import {statSync} from 'fs'\n\n/** @internal */\nexport function fileExists(filePath: string): boolean {\n try {\n statSync(filePath)\n\n return true\n } catch (_) {\n return false\n }\n}\n","import findConfig from 'find-config'\nimport path from 'path'\n\nimport {fileExists} from '../../fileExists'\n\nconst CONFIG_FILE_NAMES = [\n 'package.config.ts',\n 'package.config.js',\n 'package.config.cjs',\n 'package.config.mjs',\n]\n\n/** @internal */\nexport function findConfigFile(cwd: string): 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 = fileExists(configPath)\n\n if (exists) {\n return configPath\n }\n }\n\n return undefined\n}\n","import {register} from 'esbuild-register/dist/node'\nimport path from 'path'\nimport pkgUp from 'pkg-up'\n\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 const esbuildOptions = {extensions: ['.js', '.mjs', '.ts']}\n\n const {unregister} = globalThis.__DEV__ ? {unregister: () => undefined} : register(esbuildOptions)\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}\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","/** @public */\nexport const DEFAULT_BROWSERSLIST_QUERY = [\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","/** @internal */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && !Array.isArray(value) && typeof value === 'object'\n}\n","import {z} from 'zod'\n\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.union([\n z.custom<`./${string}.json`>((val) => /^\\.\\/.*\\.json$/.test(val as string)),\n z.object({\n types: z.optional(z.string()),\n source: z.string(),\n require: z.optional(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.optional(z.string()),\n require: z.optional(z.string()),\n import: z.optional(z.string()),\n })\n ),\n import: z.optional(z.string()),\n default: z.string(),\n }),\n ])\n )\n ),\n browserslist: z.optional(z.array(z.string())),\n})\n\nexport function validatePkg(input: unknown): PackageJSON {\n return pkgSchema.parse(input)\n}\n","import fs from 'fs/promises'\nimport pkgUp from 'pkg-up'\n\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 const raw = JSON.parse(buf.toString())\n\n validatePkg(raw)\n\n return raw\n}\n","/** @internal */\nexport function assertFirst<T>(a: T, arr: T[]): boolean {\n const aIdx = arr.indexOf(a)\n\n // if not found, then we don't care\n if (aIdx === -1) {\n return true\n }\n\n return aIdx === 0\n}\n\n/** @internal */\nexport function assertLast<T>(a: T, arr: T[]): boolean {\n const aIdx = arr.indexOf(a)\n\n // if not found, then we don't care\n if (aIdx === -1) {\n return true\n }\n\n return aIdx === arr.length - 1\n}\n\n/** @internal */\nexport function assertOrder<T>(a: T, b: T, arr: T[]): boolean {\n const aIdx = arr.indexOf(a)\n const bIdx = arr.indexOf(b)\n\n // if either is not found, then we don't care\n if (aIdx === -1 || bIdx === -1) {\n return true\n }\n\n return aIdx < bIdx\n}\n","import chalk from 'chalk'\nimport {ZodError} from 'zod'\n\nimport {Logger} from '../../logger'\nimport {assertFirst, assertLast, assertOrder} from './helpers'\nimport {loadPkg} from './loadPkg'\nimport {PackageJSON} from './types'\n\n/** @internal */\nexport async function loadPkgWithReporting(options: {\n cwd: string\n logger: Logger\n}): Promise<PackageJSON> {\n const {cwd, logger} = options\n\n try {\n const pkg = await loadPkg({cwd})\n\n // validate exports\n if (pkg.exports) {\n const _exports = Object.entries(pkg.exports)\n\n for (const [expPath, exp] of _exports) {\n if (typeof exp === 'string') {\n continue\n }\n\n const keys = Object.keys(exp)\n\n if (!assertFirst('types', keys)) {\n logger.warn(`exports[\"${expPath}\"]: the \\`types\\` property should be the first property`)\n }\n\n if (!assertOrder('require', 'import', keys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`require\\` property should come before the \\`import\\` property`\n )\n }\n\n if (!assertOrder('require', 'node', keys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`require\\` property should come before the \\`node\\` property`\n )\n }\n\n if (!assertOrder('node', 'import', keys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`node\\` property should come before \\`import\\` property`\n )\n }\n\n if (!assertLast('default', keys)) {\n logger.warn(`exports[\"${expPath}\"]: the \\`default\\` property should be the last property`)\n }\n }\n }\n\n return pkg\n } catch (err) {\n if (err instanceof ZodError) {\n for (const issue of err.issues) {\n if (issue.code === 'invalid_type') {\n logger.error(\n [\n `\\`${formatPath(issue.path)}\\` `,\n `in \\`./package.json\\` must be of type ${chalk.magenta(issue.expected)} `,\n `(received ${chalk.magenta(issue.received)})`,\n ].join('')\n )\n continue\n }\n\n logger.error(issue)\n }\n } else {\n logger.error(err)\n }\n\n process.exit(1)\n }\n}\n\nfunction formatPath(segments: Array<string | number>) {\n return segments\n .map((s, idx) => {\n if (idx === 0) return s\n\n if (typeof s === 'number') {\n return `[${s}]`\n }\n\n if (s.startsWith('.')) {\n return `[\"${s}\"]`\n }\n\n return `.${s}`\n })\n .join('')\n}\n","import {PkgExport} from '../config'\nimport {PkgExtMap} from './pkgExt'\nimport {PackageJSON} from './types'\n\nexport function validateExports(\n _exports: (PkgExport & {_path: string})[],\n options: {extMap: PkgExtMap; pkg: PackageJSON}\n): string[] {\n const {extMap, pkg} = options\n const ext = extMap[pkg.type || 'commonjs']\n\n const errors: string[] = []\n\n for (const exp of _exports) {\n if (exp.require && !exp.require.endsWith(ext.commonjs)) {\n errors.push(\n `package.json with \\`type: \"${pkg.type}\"\\` - \\`exports[\"${exp._path}\"].require\\` must end with \"${ext.commonjs}\"`\n )\n }\n\n if (exp.import && !exp.import.endsWith(ext.esm)) {\n errors.push(\n `package.json with \\`type: \"${pkg.type}\"\\` - \\`exports[\"${exp._path}\"].import\\` must end with \"${ext.esm}\"`\n )\n }\n }\n\n return errors\n}\n","import {PkgExport} from '../config'\nimport {isRecord} from '../isRecord'\nimport {PkgExtMap} from './pkgExt'\nimport {PackageJSON} from './types'\nimport {validateExports} from './validateExports'\n\n/** @internal */\nexport function parseExports(options: {\n extMap: PkgExtMap\n pkg: PackageJSON\n strict: boolean\n}): (PkgExport & {_path: string})[] {\n const {extMap, pkg, strict} = 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 require: pkg.main,\n import: pkg.module,\n default: pkg.module || pkg.main || '',\n }\n\n const extraExports: (PkgExport & {_path: string})[] = []\n\n const errors: string[] = []\n\n if (pkg.exports) {\n if (strict && !pkg.exports['./package.json']) {\n errors.push('package.json: `exports[\"./package.json\"] must be declared.')\n }\n\n for (const [exportPath, exportEntry] of Object.entries(pkg.exports)) {\n if (exportPath.endsWith('.json')) {\n if (exportPath === './package.json') {\n if (exportEntry !== './package.json') {\n errors.push('package.json: `exports[\"./package.json\"] must be \"./package.json\".')\n }\n }\n } else if (isRecord(exportEntry)) {\n if (exportPath === '.') {\n if (\n exportEntry.require &&\n rootExport.require &&\n exportEntry.require !== rootExport.require\n ) {\n errors.push(\n 'package.json: mismatch between \"main\" and \"exports.require\". These must be equal.'\n )\n }\n\n if (exportEntry.import && rootExport.import && exportEntry.import !== rootExport.import) {\n errors.push(\n 'package.json: mismatch between \"module\" and \"exports.import\" These must be equal.'\n )\n }\n\n if (exportEntry.types && rootExport.types && exportEntry.types !== rootExport.types) {\n errors.push(\n 'package.json: mismatch between \"types\" and \"exports.types\". These must be equal.'\n )\n }\n\n if (exportEntry.source && rootExport.source && exportEntry.source !== rootExport.source) {\n errors.push(\n 'package.json: mismatch between \"source\" and \"exports.source\". These must be equal.'\n )\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 errors.push('package.json: exports must be an object')\n }\n }\n }\n\n const _exports = [rootExport, ...extraExports]\n\n errors.push(...validateExports(_exports, {extMap, pkg}))\n\n if (errors.length) {\n throw new Error('\\n- ' + errors.join('\\n- '))\n }\n\n return _exports\n}\n","/** @internal */\nexport interface PkgExtMap {\n commonjs: {commonjs: string; esm: string}\n module: {commonjs: string; esm: string}\n}\n\n/** @internal */\nexport const DEFAULT_PKG_EXT_MAP: PkgExtMap = {\n // pkg.type: \"commonjs\"\n commonjs: {\n commonjs: '.js',\n esm: '.mjs',\n },\n\n // pkg.type: \"module\"\n module: {\n commonjs: '.cjs',\n esm: '.js',\n },\n}\n\n/** @internal */\nexport function getPkgExtMap(options: {legacyExports: boolean}): PkgExtMap {\n const {legacyExports} = options\n\n const ret = {...DEFAULT_PKG_EXT_MAP}\n\n // Fall back to legacy file extensions for package.json with `\"type\": \"commonjs\"`\n // NOTE: Not supported by Node 14+ and will be removed in a future version\n if (legacyExports) {\n ret['commonjs'] = {\n commonjs: '.js',\n esm: '.esm.js',\n }\n }\n\n return ret\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 chalk from 'chalk'\n\n/** @internal */\nexport interface Logger {\n log: (...args: unknown[]) => void\n info: (...args: unknown[]) => void\n warn: (...args: unknown[]) => void\n error: (...args: unknown[]) => void\n success: (...args: unknown[]) => void\n}\n\n/** @internal */\nexport function createLogger(): Logger {\n return {\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('[warning]'), ...args)\n },\n error: (...args) => {\n console.log(chalk.red('[error]'), ...args)\n },\n success: (...args) => {\n console.log(chalk.green('[success]'), ...args)\n },\n /* eslint-enable no-console */\n }\n}\n","import path from 'path'\n\nexport function pathContains(containerPath: string, itemPath: string): boolean {\n return !path.relative(containerPath, itemPath).startsWith('..')\n}\n\nexport function findCommonDirPath(filePaths: string[]): string | undefined {\n let ret: string | undefined = undefined\n\n for (const filePath of filePaths) {\n let dirPath = path.dirname(filePath)\n\n if (!ret) {\n ret = dirPath\n continue\n }\n\n while (dirPath !== ret) {\n dirPath = path.dirname(dirPath)\n\n if (dirPath === ret) {\n break\n }\n\n if (pathContains(dirPath, ret)) {\n ret = dirPath\n break\n }\n\n if (dirPath === '.') return undefined\n }\n }\n\n return ret\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'\n\nimport {\n BuildContext,\n DEFAULT_BROWSERSLIST_QUERY,\n loadTSConfig,\n PackageJSON,\n parseExports,\n PkgConfigOptions,\n PkgExports,\n PkgExtMap,\n PkgRuntime,\n resolveConfigProperty,\n} from './core'\nimport {findCommonDirPath, pathContains} from './core/findCommonPath'\nimport {Logger} from './logger'\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 emitDeclarationOnly?: boolean\n extMap: PkgExtMap\n logger: Logger\n pkg: PackageJSON\n strict: boolean\n tsconfig: string\n}): Promise<BuildContext> {\n const {\n config,\n cwd,\n emitDeclarationOnly = false,\n extMap,\n logger,\n pkg,\n strict,\n tsconfig: tsconfigPath,\n } = options\n const tsconfig = await loadTSConfig({cwd, tsconfigPath})\n const targetVersions = resolveBrowserslistVersions(pkg.browserslist || DEFAULT_BROWSERSLIST_QUERY)\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({extMap, pkg, strict}).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 // Merge externals if an array is provided, replace if it's a function\n const external =\n config && Array.isArray(config.external)\n ? [...parsedExternal, ...config.external]\n : resolveConfigProperty(config?.external, parsedExternal)\n\n const outputPaths = Object.values(exports)\n .flatMap((exportEntry) => {\n return [\n exportEntry.import,\n exportEntry.require,\n exportEntry.browser?.import,\n exportEntry.browser?.require,\n exportEntry.node?.source && exportEntry.node.import,\n exportEntry.node?.source && exportEntry.node.require,\n ].filter(Boolean) as string[]\n })\n .map((p) => path.resolve(cwd, p))\n\n const commonDistPath = findCommonDirPath(outputPaths)\n\n if (commonDistPath === cwd) {\n throw new Error(\n 'all output files must share a common parent directory which is not the root package directory'\n )\n }\n\n if (commonDistPath && !pathContains(cwd, commonDistPath)) {\n throw new Error('all output files must be located within the package')\n }\n\n const configDistPath = config?.dist ? path.resolve(cwd, config.dist) : undefined\n\n if (\n configDistPath &&\n commonDistPath &&\n configDistPath !== commonDistPath &&\n !pathContains(configDistPath, commonDistPath)\n ) {\n logger.log(`did you mean to configure \\`dist: './${path.relative(cwd, commonDistPath)}'\\`?`)\n\n throw new Error('all output files must be located with the configured `dist` path')\n }\n\n const distPath = configDistPath || commonDistPath\n\n if (!distPath) {\n throw new Error('could not detect `dist` path')\n }\n\n const ctx: BuildContext = {\n config,\n cwd,\n distPath,\n emitDeclarationOnly,\n exports,\n external,\n extMap,\n files: [],\n logger,\n pkg,\n runtime: config?.runtime ?? '*',\n strict,\n target,\n ts: {\n config: tsconfig,\n configPath: tsconfigPath,\n },\n }\n\n return ctx\n}\n"],"names":["fileExists","filePath","statSync","_","CONFIG_FILE_NAMES","findConfigFile","cwd","pkgJsonPath","findConfig","default","pkgPath","path","dirname","fileName","configPath","resolve","exists","loadConfig","options","pkgUp","root","configFile","startsWith","esbuildOptions","extensions","unregister","globalThis","__DEV__","register","mod","require","resolveConfigProperty","prop","initialValue","DEFAULT_BROWSERSLIST_QUERY","isRecord","value","Boolean","Array","isArray","pkgSchema","z","object","type","optional","enum","name","string","version","license","bin","record","dependencies","devDependencies","peerDependencies","source","main","browser","module","types","exports","union","custom","val","test","import","node","browserslist","array","validatePkg","input","parse","loadPkg","Error","buf","fs","readFile","raw","JSON","toString","assertFirst","a","arr","aIdx","indexOf","assertLast","length","assertOrder","b","bIdx","loadPkgWithReporting","logger","pkg","_exports","Object","entries","expPath","exp","keys","warn","concat","err","ZodError","issue","issues","code","error","formatPath","chalk","magenta","expected","received","join","process","exit","segments","map","s","idx","validateExports","extMap","ext","errors","endsWith","commonjs","push","_path","esm","parseExports","strict","rootExport","_exported","extraExports","exportPath","exportEntry","assign","extraExport","DEFAULT_PKG_EXT_MAP","getPkgExtMap","legacyExports","ret","loadTSConfig","tsconfigPath","ts","sys","readConfigFile","parseJsonConfigFileContent","config","createLogger","log","console","arguments","info","_len","args","_key","blue","_len2","_key2","yellow","_len3","_key3","red","success","_len4","_key4","green","pathContains","containerPath","itemPath","relative","findCommonDirPath","filePaths","dirPath","sortAsNumber","aVersion","Number","bVersion","resolveBrowserslistVersions","query","result","key","split","andChr","filter","andFf","chrome","edge","ff","iosSaf","saf","opera","versions","sort","resolveBrowserTarget","target","resolveNodeTarget","resolveBuildContext","_ref","emitDeclarationOnly","tsconfig","targetVersions","nodeTarget","webTarget","parsedExports","reduce","acc","x","parsedExternal","external","outputPaths","values","flatMap","_a","_b","_c","_d","p","commonDistPath","configDistPath","dist","distPath","ctx","files","runtime"],"mappings":"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"}
|