@sanity/pkg-utils 3.2.1 → 3.2.2
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/dist/_chunks/{init-F_vsNarH.cjs → init-JUK_GqHH.cjs} +3 -1
- package/dist/_chunks/init-JUK_GqHH.cjs.map +1 -0
- package/dist/_chunks/{initAction-dKWPRJL7.cjs → initAction-Xi2rF6yS.cjs} +2 -2
- package/dist/_chunks/{initAction-dKWPRJL7.cjs.map → initAction-Xi2rF6yS.cjs.map} +1 -1
- package/dist/cli.cjs +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
- package/src/node/templates/default/template.ts +2 -0
- package/dist/_chunks/init-F_vsNarH.cjs.map +0 -1
|
@@ -341,6 +341,8 @@ const defaultTemplate = async _ref => {
|
|
|
341
341
|
terms: ["todo", "fixme"]
|
|
342
342
|
}],
|
|
343
343
|
"quote-props": ["warn", "consistent-as-needed"],
|
|
344
|
+
"simple-import-sort/exports": "warn",
|
|
345
|
+
"simple-import-sort/imports": "warn",
|
|
344
346
|
"strict": ["warn", "global"]
|
|
345
347
|
}
|
|
346
348
|
};
|
|
@@ -495,4 +497,4 @@ async function ensurePackagePath(packagePath) {
|
|
|
495
497
|
exports.createFromTemplate = createFromTemplate;
|
|
496
498
|
exports.defineTemplateOption = defineTemplateOption;
|
|
497
499
|
exports.init = init;
|
|
498
|
-
//# sourceMappingURL=init-
|
|
500
|
+
//# sourceMappingURL=init-JUK_GqHH.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-JUK_GqHH.cjs","sources":["../../src/node/core/template/createFromTemplate.ts","../../src/node/core/template/define.ts","../../src/node/isEmptyDirectory.ts","../../src/node/templates/default/template.ts","../../src/node/init.ts"],"sourcesContent":["import {writeFile} from 'fs/promises'\nimport {mkdirp} from 'mkdirp'\nimport {dirname, relative, resolve} from 'path'\nimport prompts from 'prompts'\n\nimport {Logger} from '../../logger'\nimport {PkgTemplate} from './types'\n\nconst promptsTypes = {\n string: 'text' as const,\n}\n\n/** @internal */\nexport async function createFromTemplate(options: {\n cwd: string\n logger: Logger\n packagePath: string\n template: PkgTemplate\n}): Promise<void> {\n const {cwd, logger, packagePath, template: templateOrResolver} = options\n\n const template =\n typeof templateOrResolver === 'function'\n ? await templateOrResolver({cwd, logger, packagePath})\n : templateOrResolver\n\n logger.log('create new package at', relative(cwd, packagePath))\n\n const templateOptions: Record<string, string> = {}\n\n for (const templateOption of template.options) {\n const templateValidate = templateOption.validate\n\n const res = await prompts(\n {\n type: promptsTypes[templateOption.type],\n name: templateOption.name,\n message: templateOption.description,\n validate: templateValidate ? (prev) => templateValidate(prev) : undefined,\n initial:\n typeof templateOption.initial === 'function'\n ? templateOption.initial(templateOptions)\n : templateOption.initial,\n },\n {onCancel: () => process.exit(0)},\n )\n\n templateOptions[templateOption.name] = templateOption.parse\n ? templateOption.parse(res[templateOption.name])\n : res[templateOption.name]\n }\n\n const features: Record<string, boolean> = {}\n\n for (const templateFeature of template.features) {\n const res = templateFeature.optional\n ? await prompts(\n {\n type: 'confirm',\n name: 'confirm',\n message: `use ${templateFeature.name}?`,\n initial: templateFeature.initial,\n },\n {onCancel: () => process.exit(0)},\n )\n : undefined\n\n features[templateFeature.name] = res?.confirm || !templateFeature.optional\n }\n\n const files = await template.getFiles(templateOptions, features)\n\n files.sort((a, b) => {\n return a.name.localeCompare(b.name)\n })\n\n for (const file of files) {\n const filePath = resolve(packagePath, file.name)\n\n await mkdirp(dirname(filePath))\n await writeFile(filePath, file.contents.trim() + '\\n')\n\n logger.success(`wrote ${relative(cwd, filePath)}`)\n }\n}\n","import {PkgTemplateOption} from './types'\n\n/** @public */\nexport function defineTemplateOption<T>(option: PkgTemplateOption<T>): PkgTemplateOption<T> {\n return option\n}\n","import {readdir} from 'fs/promises'\n\nexport async function isEmptyDirectory(dirPath: string): Promise<boolean> {\n return (await readdir(dirPath)).length === 0\n}\n","import getLatestVersion from 'get-latest-version'\nimport gitUrlParse from 'git-url-parse'\nimport {outdent} from 'outdent'\nimport parseGitConfig from 'parse-git-config'\nimport {resolve} from 'path'\nimport prettier, {Config as PrettierConfig} from 'prettier'\n\nimport {defineTemplateOption, isRecord, PackageJSON, PkgTemplate, PkgTemplateFile} from '../../core'\n\nconst RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\\/)?[a-z0-9-~][a-z0-9-._~]*$/i\n\nexport const defaultTemplate: PkgTemplate = async ({cwd, logger, packagePath}) => {\n const gitConfig = await parseGitConfig({cwd, type: 'global'})\n\n return {\n options: [\n defineTemplateOption<{owner: string; name: string}>({\n name: 'repo',\n type: 'string',\n description: 'git url',\n validate: (v) => {\n if (!v) return true\n\n try {\n gitUrlParse(v)\n\n return true\n } catch (err) {\n return 'invalid git url'\n }\n },\n parse: (v) => {\n if (!v) return null\n\n const result = gitUrlParse(v)\n\n return {source: result.source, owner: result.owner, name: result.name}\n },\n }),\n defineTemplateOption({\n name: 'pkgName',\n type: 'string',\n description: 'package name',\n initial: (options) => options.repo?.name || undefined,\n validate: (v) => {\n if (!v) return 'package name is required'\n\n const match = RE_NAME.exec(v)\n\n if (!match) {\n return 'invalid package name'\n }\n\n return true\n },\n parse: (v) => {\n if (!v) {\n throw new Error('package name is required')\n }\n\n const match = RE_NAME.exec(v)\n\n if (!match) {\n throw new Error('invalid package name')\n }\n\n const [scope, name] = v.split('/')\n\n return {scope, name, fullName: v}\n },\n }),\n defineTemplateOption({\n name: 'description',\n type: 'string',\n description: 'package description',\n }),\n defineTemplateOption({\n name: 'authorName',\n type: 'string',\n description: 'package author name',\n initial: gitConfig?.user?.name,\n }),\n defineTemplateOption({\n name: 'authorEmail',\n type: 'string',\n description: 'package author email',\n initial: gitConfig?.user?.email,\n }),\n defineTemplateOption({\n name: 'license',\n type: 'string',\n description: 'package license',\n initial: 'MIT',\n validate: (v) => {\n if (!v) return 'license is required'\n\n return true\n },\n }),\n ],\n\n features: [\n {\n name: 'eslint',\n optional: true,\n initial: true,\n },\n {\n name: 'prettier',\n optional: true,\n initial: true,\n },\n {\n name: 'typescript',\n optional: true,\n initial: true,\n },\n ],\n\n async getFiles(options, features) {\n const {pkgName, repo} = options\n const {fullName: name} = pkgName\n\n const author =\n [options.authorName, options.authorEmail && `<${options.authorEmail}>`]\n .filter(Boolean)\n .join(' ') ?? undefined\n\n const prettierConfig: PrettierConfig | undefined = features.prettier\n ? {\n bracketSpacing: false,\n plugins: ['prettier-plugin-packagejson'],\n printWidth: 100,\n quoteProps: 'consistent',\n semi: false,\n singleQuote: true,\n tabWidth: 2,\n overrides: [\n {\n files: ['*.yml'],\n options: {\n singleQuote: false,\n },\n },\n ],\n }\n : undefined\n\n const pkgJson: PackageJSON & {\n prettier?: PrettierConfig\n ['lint-staged']?: Record<string, string[]>\n } = {\n name,\n 'version': '0.0.0',\n 'description': options.description ?? undefined,\n 'keywords': [],\n 'homepage': undefined,\n 'bugs': undefined,\n 'repository': undefined,\n 'license': options.license,\n author,\n 'type': 'module',\n 'exports': {\n '.': {\n types: undefined,\n source: features.typescript ? './src/index.ts' : './src/index.js',\n import: './dist/index.js',\n require: './dist/index.cjs',\n default: './dist/index.js',\n },\n './package.json': './package.json',\n },\n 'main': './dist/index.cjs',\n 'module': './dist/index.js',\n 'source': features.typescript ? './src/index.ts' : './src/index.js',\n 'types': undefined,\n 'files': ['dist', 'src'],\n 'scripts': {\n 'build': 'run-s clean pkg:build pkg:check',\n 'clean': 'rimraf dist',\n 'format': features.prettier ? 'prettier --write --cache --ignore-unknown .' : undefined,\n 'pkg:build': 'pkg build --strict',\n 'pkg:check': 'pkg check --strict',\n },\n 'lint-staged': features.prettier\n ? {\n '*': ['prettier --write --cache --ignore-unknown'],\n }\n : undefined,\n // prettier: prettierConfig,\n 'dependencies': {},\n 'devDependencies': {\n '@sanity/pkg-utils': '*',\n '@typescript-eslint/eslint-plugin': undefined,\n '@typescript-eslint/parser': undefined,\n 'eslint': undefined,\n 'eslint-config-prettier': undefined,\n 'eslint-plugin-import': undefined,\n 'eslint-plugin-prettier': undefined,\n 'eslint-plugin-simple-import-sort': undefined,\n 'lint-staged': '*',\n 'npm-run-all': '*',\n 'prettier': features.prettier ? '*' : undefined,\n 'prettier-plugin-packagejson': features.prettier ? '*' : undefined,\n 'rimraf': '*',\n 'typescript': undefined,\n },\n 'engines': {\n node: '>=18.0.0',\n },\n }\n\n const files: PkgTemplateFile[] = []\n\n // .editorconfig\n files.push({\n name: '.editorconfig',\n contents: outdent`\n root = true\n\n [*]\n charset = utf-8\n indent_style = space\n indent_size = 2\n end_of_line = lf\n insert_final_newline = true\n trim_trailing_whitespace = true\n `,\n })\n\n // .gitignore\n files.push({\n name: '.gitignore',\n contents: outdent`\n *.local\n *.log\n *.tgz\n\n .DS_Store\n dist\n etc\n node_modules\n `,\n })\n\n if (features.prettier) {\n files.push({\n name: '.prettierignore',\n contents: outdent`\n dist\n pnpm-lock.yaml\n `,\n })\n\n files.push({\n name: '.prettierrc',\n contents: await format(\n resolve(packagePath, '.prettierrc.json'),\n JSON.stringify(prettierConfig, null, 2) + '\\n',\n prettierConfig,\n ),\n })\n }\n\n if (repo) {\n pkgJson.repository = {\n type: 'git',\n url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`,\n }\n pkgJson.bugs = {\n url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`,\n }\n pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`\n }\n\n if (features.typescript) {\n pkgJson.types = './dist/index.d.ts'\n\n const mainExport = pkgJson.exports?.['.']\n\n if (isRecord(mainExport)) {\n mainExport.types = './dist/index.d.ts'\n }\n\n pkgJson.scripts = {\n ...pkgJson.scripts,\n ['ts:check']: 'tsc --build',\n }\n\n const devDependencies = pkgJson.devDependencies\n\n if (isRecord(devDependencies)) {\n devDependencies['typescript'] = '*'\n }\n }\n\n if (features.eslint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const eslintConfig: any = {\n root: true,\n env: {\n browser: true,\n es6: true,\n node: true,\n },\n extends: [\n 'eslint:recommended',\n features.prettier ? 'plugin:prettier/recommended' : undefined,\n ].filter(Boolean),\n parserOptions: {\n ecmaVersion: 2020,\n sourceType: 'module',\n },\n plugins: [\n 'import',\n 'simple-import-sort',\n features.prettier ? 'prettier' : undefined,\n ].filter(Boolean),\n rules: {\n 'no-console': 'error',\n 'no-shadow': 'error',\n 'no-warning-comments': ['warn', {location: 'start', terms: ['todo', 'fixme']}],\n 'quote-props': ['warn', 'consistent-as-needed'],\n 'simple-import-sort/exports': 'warn',\n 'simple-import-sort/imports': 'warn',\n 'strict': ['warn', 'global'],\n },\n }\n\n files.push({\n name: '.eslintignore',\n contents: outdent`\n dist\n `,\n })\n\n pkgJson.scripts = {\n ...pkgJson.scripts,\n lint: features.typescript\n ? 'eslint . --ext .cjs,.js,.ts,.tsx'\n : 'eslint . --ext .cjs,.js',\n }\n\n pkgJson.devDependencies = {\n ...pkgJson.devDependencies,\n 'eslint': '*',\n 'eslint-config-prettier': features.prettier ? '*' : undefined,\n 'eslint-plugin-simple-import-sort': '*',\n 'eslint-plugin-import': '*',\n 'eslint-plugin-prettier': features.prettier ? '*' : undefined,\n }\n\n if (features.typescript) {\n pkgJson.devDependencies = {\n ...pkgJson.devDependencies,\n '@typescript-eslint/eslint-plugin': '*',\n '@typescript-eslint/parser': '*',\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const eslintConfigOverride: any = {\n files: ['**/*.ts', '**/*.tsx'],\n parser: '@typescript-eslint/parser',\n parserOptions: {\n project: ['./tsconfig.json'],\n },\n extends: [\n 'eslint:recommended',\n features.prettier ? 'plugin:prettier/recommended' : undefined,\n 'plugin:@typescript-eslint/eslint-recommended',\n 'plugin:@typescript-eslint/recommended',\n ].filter(Boolean),\n plugins: [\n 'import',\n '@typescript-eslint',\n 'simple-import-sort',\n features.prettier ? 'prettier' : undefined,\n ].filter(Boolean),\n rules: {\n '@typescript-eslint/explicit-module-boundary-types': 'error',\n '@typescript-eslint/interface-name-prefix': 'off',\n '@typescript-eslint/member-delimiter-style': 'off',\n '@typescript-eslint/no-empty-interface': 'off',\n },\n }\n\n eslintConfig.overrides = [eslintConfigOverride]\n }\n\n files.push({\n name: '.eslintrc.cjs',\n contents: await format(\n resolve(packagePath, '.eslintrc.cjs'),\n outdent`\n 'use strict'\n\n /** @type import('eslint').Linter.Config */\n module.exports = ${JSON.stringify(eslintConfig, null, 2)}\n `,\n prettierConfig,\n ),\n })\n }\n\n if (features.typescript) {\n files.push({\n name: 'tsconfig.settings.json',\n contents: await format(\n resolve(packagePath, 'tsconfig.settings.json'),\n outdent`\n {\n \"compilerOptions\": {\n // Completeness\n \"skipLibCheck\": true,\n\n // Interop constraints\n \"allowSyntheticDefaultImports\": true,\n \"esModuleInterop\": true,\n\n // Language and environment\n \"target\": \"ES2020\",\n\n // Modules\n \"module\": \"ES2020\",\n \"moduleResolution\": \"Node\",\n\n // Type checking\n \"alwaysStrict\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noImplicitAny\": true,\n \"noImplicitReturns\": true,\n \"noImplicitThis\": true,\n \"noUnusedLocals\": true,\n \"noUnusedParameters\": true,\n \"strict\": true,\n \"strictFunctionTypes\": true,\n \"strictNullChecks\": true,\n \"strictPropertyInitialization\": true\n }\n }\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'tsconfig.dist.json',\n contents: await format(\n resolve(packagePath, 'tsconfig.dist.json'),\n outdent`\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./src\"],\n \"exclude\": [\"./src/**/*.test.ts\"],\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"outDir\": \"./dist\",\n \"resolveJsonModule\": true\n }\n }\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'tsconfig.json',\n contents: await format(\n resolve(packagePath, 'tsconfig.json'),\n outdent`\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./**/*.cjs\", \"./**/*.ts\", \"./**/*.tsx\"],\n \"exclude\": [\"./node_modules\"],\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"outDir\": \"./dist\",\n \"noEmit\": true,\n \"allowJs\": true,\n \"resolveJsonModule\": true,\n }\n }\n `,\n prettierConfig,\n ),\n })\n }\n\n // source file\n if (features.typescript) {\n files.push({\n name: 'package.config.ts',\n contents: await format(\n resolve(packagePath, 'package.config.ts'),\n outdent`\n import {defineConfig} from '@sanity/pkg-utils'\n\n // https://github.com/sanity-io/pkg-utils#configuration\n export default defineConfig({\n // the path to the tsconfig file for distributed builds\n tsconfig: 'tsconfig.dist.json',\n })\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'src/index.ts',\n contents: await format(\n resolve(packagePath, 'src/index.ts'),\n outdent`\n /** @public */\n export function main(): void {\n //\n }\n `,\n prettierConfig,\n ),\n })\n } else {\n files.push({\n name: 'package.config.js',\n contents: await format(\n resolve(packagePath, 'package.config.js'),\n outdent`\n import {defineConfig} from '@sanity/pkg-utils'\n\n export default defineConfig({\n extract: {\n rules: {\n // do not require internal members to be prefixed with \\`_\\`\n 'ae-internal-missing-underscore': 'off',\n },\n },\n })\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'src/index.js',\n contents: await format(\n resolve(packagePath, 'src/index.js'),\n outdent`\n /** @public */\n export function main() {\n //\n }\n `,\n prettierConfig,\n ),\n })\n }\n\n // Resolve latest dependencies\n try {\n pkgJson.dependencies = await resolveLatestDeps(pkgJson.dependencies ?? {})\n } catch (error) {\n logger.warn(error instanceof Error ? error.message : error)\n }\n\n // Resolve latest devDependencies\n try {\n pkgJson.devDependencies = await resolveLatestDeps(pkgJson.devDependencies ?? {})\n } catch (error) {\n logger.warn(error instanceof Error ? error.message : error)\n }\n\n files.push({\n name: 'package.json',\n contents: await format(\n resolve(packagePath, 'package.json'),\n JSON.stringify(pkgJson, null, 2),\n prettierConfig,\n ),\n })\n\n return files\n },\n }\n}\n\nfunction format(filepath: string, input: string, prettierOptions: PrettierConfig | undefined) {\n return prettier.format(input, {...prettierOptions, plugins: [], filepath})\n}\n\nasync function resolveLatestDeps(deps: Record<string, string | undefined>) {\n const depsEntries = Object.entries(deps)\n const latestDeps: Record<string, string> = {}\n\n for (const entry of depsEntries) {\n const [name, version] = entry\n\n if (version) {\n const latestVersion = await getLatestVersion(name, version)\n\n latestDeps[name] = latestVersion ? `^${latestVersion}` : version\n }\n }\n\n return latestDeps\n}\n","import {lstat} from 'fs/promises'\nimport {mkdirp} from 'mkdirp'\nimport {resolve} from 'path'\n\nimport {createFromTemplate} from './core/template'\nimport {fileExists} from './fileExists'\nimport {isEmptyDirectory} from './isEmptyDirectory'\nimport {createLogger} from './logger'\nimport {defaultTemplate} from './templates'\n\n/** @public */\nexport async function init(options: {cwd: string; path: string}): Promise<void> {\n if (!options.cwd) {\n throw new Error('Missing required option: cwd')\n }\n\n if (!options.path) {\n throw new Error('Missing required option: path')\n }\n\n const logger = createLogger()\n\n const packagePath = resolve(options.cwd, options.path)\n\n await ensurePackagePath(packagePath)\n\n await createFromTemplate({\n cwd: options.cwd,\n logger,\n template: defaultTemplate,\n packagePath,\n })\n}\n\nasync function ensurePackagePath(packagePath: string): Promise<void> {\n const exists = fileExists(packagePath)\n\n if (!exists) {\n await mkdirp(packagePath)\n\n return\n }\n\n const dir = (await lstat(packagePath)).isDirectory()\n\n if (!dir) {\n throw new Error('the package path is a file, not a directory')\n }\n\n const empty = await isEmptyDirectory(packagePath)\n\n if (!empty) {\n throw new Error('the package directory is not empty')\n }\n}\n"],"names":["promptsTypes","string","createFromTemplate","options","cwd","logger","packagePath","template","templateOrResolver","log","relative","templateOptions","templateOption","templateValidate","validate","res","prompts","default","type","name","message","description","prev","initial","onCancel","process","exit","parse","features","templateFeature","optional","concat","confirm","files","getFiles","sort","a","b","localeCompare","file","filePath","resolve","mkdirp","dirname","writeFile","contents","trim","success","defineTemplateOption","option","isEmptyDirectory","dirPath","readdir","length","RE_NAME","defaultTemplate","_ref","_gitConfig$user","_gitConfig$user2","gitConfig","parseGitConfig","v","gitUrlParse","err","result","source","owner","_options$repo","repo","match","exec","Error","scope","split","fullName","user","email","_filter$join","_options$description","pkgName","author","authorName","authorEmail","filter","Boolean","join","prettierConfig","prettier","bracketSpacing","plugins","printWidth","quoteProps","semi","singleQuote","tabWidth","overrides","pkgJson","license","types","typescript","import","require","node","push","outdent","_templateObject","_taggedTemplateLiteral","_templateObject2","_templateObject3","format","JSON","stringify","repository","url","bugs","homepage","_pkgJson$exports","mainExport","exports","isRecord","scripts","devDependencies","eslint","eslintConfig","root","env","browser","es6","extends","parserOptions","ecmaVersion","sourceType","rules","location","terms","_templateObject4","lint","eslintConfigOverride","parser","project","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","_pkgJson$dependencies","dependencies","resolveLatestDeps","error","warn","_pkgJson$devDependenc","filepath","input","prettierOptions","deps","depsEntries","Object","entries","latestDeps","entry","version","latestVersion","getLatestVersion","init","path","createLogger","ensurePackagePath","exists","fileExists","dir","lstat","isDirectory","empty"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var init = require('./init-
|
|
3
|
+
var init = require('./init-JUK_GqHH.cjs');
|
|
4
4
|
var handleError = require('./handleError-esTdSrHu.cjs');
|
|
5
5
|
async function initAction(options) {
|
|
6
6
|
try {
|
|
@@ -13,4 +13,4 @@ async function initAction(options) {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
exports.initAction = initAction;
|
|
16
|
-
//# sourceMappingURL=initAction-
|
|
16
|
+
//# sourceMappingURL=initAction-Xi2rF6yS.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initAction-
|
|
1
|
+
{"version":3,"file":"initAction-Xi2rF6yS.cjs","sources":["../../src/cli/initAction.ts"],"sourcesContent":["import {init} from '../node/init'\nimport {handleError} from './handleError'\n\nexport async function initAction(options: {path: string}): Promise<void> {\n try {\n await init({\n cwd: process.cwd(),\n path: options.path,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["initAction","options","init","cwd","process","path","err","handleError"],"mappings":";;;;AAGA,eAAsBA,WAAWC,OAAwC,EAAA;EACnE,IAAA;IACF,MAAMC,SAAK,CAAA;MACTC,GAAA,EAAKC,QAAQD,GAAI,CAAA,CAAA;MACjBE,MAAMJ,OAAQ,CAAAI;IAAA,CACf,CAAA;WACMC,GAAK,EAAA;IACZC,WAAA,CAAAA,WAAA,CAAYD,GAAG,CAAA;EACjB;AACF;"}
|
package/dist/cli.cjs
CHANGED
|
@@ -7,7 +7,7 @@ function _interopDefaultCompat(e) {
|
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
9
|
var cac__default = /*#__PURE__*/_interopDefaultCompat(cac);
|
|
10
|
-
var version = "3.2.
|
|
10
|
+
var version = "3.2.2";
|
|
11
11
|
const cli = cac__default.default();
|
|
12
12
|
cli.command("", "Check").alias("check").option("--strict", "Strict mode").option("--tsconfig [tsconfig]", "[string] tsconfig.json").action(async options => {
|
|
13
13
|
const {
|
|
@@ -29,7 +29,7 @@ cli.command("init [path]", "Initialize package").action(async p => {
|
|
|
29
29
|
const {
|
|
30
30
|
initAction
|
|
31
31
|
} = await Promise.resolve().then(function () {
|
|
32
|
-
return require('./_chunks/initAction-
|
|
32
|
+
return require('./_chunks/initAction-Xi2rF6yS.cjs');
|
|
33
33
|
});
|
|
34
34
|
return initAction({
|
|
35
35
|
path: p
|
package/dist/index.cjs
CHANGED
|
@@ -7,7 +7,7 @@ var build = require('./_chunks/build-5-t0rNQ5.cjs');
|
|
|
7
7
|
var check = require('./_chunks/check-K-76aP0H.cjs');
|
|
8
8
|
var consoleSpy = require('./_chunks/consoleSpy-Njnvw7-i.cjs');
|
|
9
9
|
var logger = require('./_chunks/logger-_q9DVAFj.cjs');
|
|
10
|
-
var init = require('./_chunks/init-
|
|
10
|
+
var init = require('./_chunks/init-JUK_GqHH.cjs');
|
|
11
11
|
var index = require('./_chunks/index-jKQCY5H6.cjs');
|
|
12
12
|
var watch = require('./_chunks/watch-8dkaWImB.cjs');
|
|
13
13
|
function defineConfig(configOptions) {
|
package/dist/index.js
CHANGED
|
@@ -2159,5 +2159,5 @@ browser:runtime==="browser",// exportConditions: [runtime === 'node' ? 'node' :
|
|
|
2159
2159
|
extensions:[".cjs",".mjs",".js",".jsx",".json",".node"],preferBuiltins:true// runtime === 'node',
|
|
2160
2160
|
}),commonjs(),json(),esbuild({jsx:(_config$jsx=config===null||config===void 0?void 0:config.jsx)!==null&&_config$jsx!==void 0?_config$jsx:"automatic",jsxFactory:(_config$jsxFactory=config===null||config===void 0?void 0:config.jsxFactory)!==null&&_config$jsxFactory!==void 0?_config$jsxFactory:"createElement",jsxFragment:(_config$jsxFragment=config===null||config===void 0?void 0:config.jsxFragment)!==null&&_config$jsxFragment!==void 0?_config$jsxFragment:"Fragment",jsxImportSource:(_config$jsxImportSour=config===null||config===void 0?void 0:config.jsxImportSource)!==null&&_config$jsxImportSour!==void 0?_config$jsxImportSour:"react",target,tsconfig:ctx.ts.configPath||"tsconfig.json"}),getBabelOutputPlugin({babelrc:false,plugins:config===null||config===void 0||(_config$babel=config.babel)===null||_config$babel===void 0?void 0:_config$babel.plugins,presets:[["@babel/preset-env",{targets:pkg.browserslist||DEFAULT_BROWSERSLIST_QUERY,modules:false}]]}),minify&&terser({compress:true,output:{comments:(_node,comment)=>{const text=comment.value;const type=comment.type;if(type=="comment2"){return /@preserve|@license|@cc_on/i.test(text);}return false;}}})].filter(Boolean);const userPlugins=config===null||config===void 0||(_config$rollup=config.rollup)===null||_config$rollup===void 0?void 0:_config$rollup.plugins;const plugins=Array.isArray(userPlugins)?defaultPlugins.concat(userPlugins):resolveConfigProperty(config===null||config===void 0||(_config$rollup2=config.rollup)===null||_config$rollup2===void 0?void 0:_config$rollup2.plugins,defaultPlugins);return{inputOptions:{context:cwd,external:(id,importer)=>{if(exportIds!==null&&exportIds!==void 0&&exportIds.includes(id)){return true;}if(importer&&(id.startsWith(".")||id.startsWith("/"))){const idPath=path$1.resolve(path$1.dirname(importer),id);if(sourcePaths!==null&&sourcePaths!==void 0&&sourcePaths.includes(idPath)){logger.warn("detected self-referencing import \u2013 treating as external: ".concat(path$1.relative(cwd,idPath)));return true;}}const idParts=id.split("/");const name=idParts[0].startsWith("@")?"".concat(idParts[0],"/").concat(idParts[1]):idParts[0];if(name&&external.includes(name)){return true;}return false;},input:entries.reduce((acc,entry)=>{return{...acc,[entry.name]:entry.source};},{}),watch:{chokidar:{usePolling:true}},plugins,treeshake:{propertyReadSideEffects:false}},outputOptions:{chunkFileNames:()=>{const parts=outputExt.split(".");if(parts.length===3){return"_chunks/[name]-[hash].".concat(parts[2]);}return"_chunks/[name]-[hash]".concat(outputExt);},compact:minify,dir:outDir,entryFileNames:()=>{const parts=outputExt.split(".");if(parts.length===3){return"[name].".concat(parts[2]);}return"[name]".concat(outputExt);},esModule:true,format,interop:"compat",minifyInternalExports:minify,sourcemap:(_config$sourcemap=config===null||config===void 0?void 0:config.sourcemap)!==null&&_config$sourcemap!==void 0?_config$sourcemap:true,hoistTransitiveImports:false}};}const rollupTask={name:(ctx,task)=>{const bundleEntries=task.entries.filter(e=>e.path.includes("__$$bundle_"));const entries=task.entries.filter(e=>!e.path.includes("__$$bundle_"));const targetLines=task.target.length?[" target:",...task.target.map(t=>" - ".concat(chalk.yellow(t)))]:[];const bundlesLines=bundleEntries.length?[" bundles:",...bundleEntries.map(e=>[" - ","".concat(chalk.yellow(e.source)," ").concat(chalk.gray("\u2192")," ").concat(chalk.yellow(e.output))].join(""))]:[];const entriesLines=entries.length?[" entries:",...entries.map(e=>[" - ","".concat(chalk.cyan(path$1.join(ctx.pkg.name,e.path)),": "),"".concat(chalk.yellow(e.source)," ").concat(chalk.gray("\u2192")," ").concat(chalk.yellow(e.output))].join(""))]:[];return["Build javascript files..."," format: ".concat(chalk.yellow(task.format)),...targetLines,...bundlesLines,...entriesLines].join("\n");},exec:(ctx,task)=>{return new Observable(observer=>{execPromise(ctx,task).then(result=>{observer.next(result);observer.complete();}).catch(err=>observer.error(err));});},complete:()=>{},error:(_ctx,_task,err)=>{console.error(err);}};async function execPromise(ctx,task){const{distPath,files,logger}=ctx;const outDir=path$1.relative(ctx.cwd,distPath);const consoleSpy=createConsoleSpy({onRestored:messages=>{for(const msg of messages){const text=String(msg.args[0]);if(msg.code==="CIRCULAR_DEPENDENCY"){continue;}if(text.startsWith("Dynamic import can only")){continue;}if(text.startsWith("Sourcemap is likely to be incorrect")){continue;}if(msg.type==="log"){logger.info(...msg.args);}if(msg.type==="warn"){logger.warn(...msg.args);}if(msg.type==="error"){logger.error(...msg.args);}}}});try{const{inputOptions,outputOptions}=resolveRollupConfig(ctx,task);const bundle=await rollup({...inputOptions,onwarn(warning){consoleSpy.messages.push({type:"warn",code:warning.code,args:[warning.message]});}});const{output}=await bundle.generate(outputOptions);for(const chunkOrAsset of output){if(chunkOrAsset.type==="asset"){files.push({type:"asset",path:path$1.resolve(outDir,chunkOrAsset.fileName)});}else{files.push({type:"chunk",path:path$1.resolve(outDir,chunkOrAsset.fileName)});}}await bundle.write(outputOptions);await bundle.close();consoleSpy.restore();}catch(err){consoleSpy.restore();throw err;}}const rollupWatchTask={name:(ctx,task)=>"build javascript files (target ".concat(task.target.join(" + "),", format ").concat(task.format,")\n ").concat(task.entries.map(e=>"".concat(chalk.blue(path$1.join(ctx.pkg.name,e.path)),": ").concat(e.source," -> ").concat(e.output)).join("\n ")),exec:(ctx,task)=>{const{inputOptions,outputOptions}=resolveRollupConfig(ctx,task);return new Observable(observer=>{const watchOptions={...inputOptions,output:outputOptions};const watcher=watch$1(watchOptions);watcher.on("event",event=>{observer.next(event);});return()=>{watcher.close();};});},complete:(ctx,task,event)=>{const{logger}=ctx;if(event.code==="BUNDLE_END"){logger.success("build javascript files (target ".concat(task.target.join(" + "),", format ").concat(task.format,")\n ").concat(task.entries.map(e=>"".concat(chalk.blue(path$1.join(ctx.pkg.name,e.path)),": ").concat(e.source," -> ").concat(e.output)).join("\n ")));logger.log("");return;}if(event.code==="BUNDLE_START"){return;}if(event.code==="END"){return;}if(event.code==="ERROR"){logger.error(event.code,event);return;}if(event.code==="START"){return;}},error:(ctx,_task,err)=>{const{logger}=ctx;if(err instanceof Error){logger.log(err);}}};const buildTaskHandlers={"build:dts":dtsTask,"build:js":rollupTask,"node:reexport-cjs":nodeReexportCjsTask};const watchTaskHandlers={"watch:dts":dtsWatchTask,"watch:js":rollupWatchTask};async function build(options){var _config$legacyExports;const{cwd,emitDeclarationOnly,strict=false,tsconfig:tsconfigOption}=options;const logger=createLogger();const pkg=await loadPkgWithReporting({cwd,logger});const config=await loadConfig({cwd});const extMap=getPkgExtMap({legacyExports:(_config$legacyExports=config===null||config===void 0?void 0:config.legacyExports)!==null&&_config$legacyExports!==void 0?_config$legacyExports:false});const tsconfig=tsconfigOption||(config===null||config===void 0?void 0:config.tsconfig)||"tsconfig.json";const ctx=await resolveBuildContext({config,cwd,emitDeclarationOnly,extMap,logger,pkg,strict,tsconfig});const buildTasks=resolveBuildTasks(ctx);for(const task of buildTasks){const handler=buildTaskHandlers[task.type];const taskName=handler.name(ctx,task);const spinner=createSpinner(taskName);try{const result=await handler.exec(ctx,task).toPromise();spinner.complete();ctx.logger.log();handler.complete(ctx,task,result);}catch(err){spinner.error();if(err instanceof Error){const RE_CWD=new RegExp("".concat(cwd),"g");ctx.logger.error(err.message.replace(RE_CWD,"."));ctx.logger.log();}handler.error(ctx,task,err);process.exit(1);}}}function getFilesize(file){const stats=statSync(file);return prettyBytes(stats.size);}function getFileInfo(cwd,filePath){const p=path$1.resolve(cwd,filePath);const exists=fileExists(p);const size=exists?getFilesize(p):void 0;return{exists,size};}function printPackageTree(ctx){const{cwd,exports,logger,pkg}=ctx;if(!exports)return;logger.log("".concat(chalk.blue(pkg.name),"@").concat(chalk.green(pkg.version)));const tree={};if(pkg.type){tree.type=chalk.yellow(pkg.type);}if(pkg.bin){tree.bin=Object.fromEntries(Object.entries(pkg.bin).map(_ref93=>{let[name,file]=_ref93;return[chalk.cyan(name),fileInfo(file)];}));}function fileInfo(file){const info=getFileInfo(cwd,file);if(!info.size){return"".concat(chalk.gray(file)," ").concat(chalk.red("does not exist"));}return"".concat(chalk.yellow(file)," ").concat(chalk.gray(info.size));}tree.exports=Object.fromEntries(Object.entries(exports).filter(_ref94=>{let[,entry]=_ref94;return entry._exported;}).map(_ref95=>{let[exportPath,entry]=_ref95;const exp={types:void 0,source:fileInfo(entry.source),browser:void 0,require:void 0,node:void 0,import:void 0,default:fileInfo(entry.default)};if(entry.types){exp.types=fileInfo(entry.types);}else{delete exp.types;}if(entry.browser){exp.browser={source:fileInfo(entry.browser.source)};if(entry.browser.import)exp.browser.import=fileInfo(entry.browser.import);if(entry.browser.require)exp.browser.require=fileInfo(entry.browser.require);}else{delete exp.browser;}if(entry.require){exp.require=fileInfo(entry.require);}else{delete exp.require;}if(entry.node){exp.node={};if(entry.node.source)exp.node.source=fileInfo(entry.node.source);if(entry.node.import)exp.node.import=fileInfo(entry.node.import);if(entry.node.require)exp.node.require=fileInfo(entry.node.require);}else{delete exp.node;}if(entry.import){exp.import=fileInfo(entry.import);}else{delete exp.import;}return[chalk.cyan(path$1.join(pkg.name,exportPath)),exp];}));logger.log(treeify.asTree(tree,true,true));}async function check(options){var _config$legacyExports2;const{cwd,strict=false,tsconfig:tsconfigOption}=options;const logger=createLogger();const pkg=await loadPkgWithReporting({cwd,logger});const config=await loadConfig({cwd});const extMap=getPkgExtMap({legacyExports:(_config$legacyExports2=config===null||config===void 0?void 0:config.legacyExports)!==null&&_config$legacyExports2!==void 0?_config$legacyExports2:false});const tsconfig=tsconfigOption||(config===null||config===void 0?void 0:config.tsconfig)||"tsconfig.json";const ctx=await resolveBuildContext({config,cwd,extMap,logger,pkg,strict,tsconfig});printPackageTree(ctx);if(strict){const missingFiles=[];for(const[,exp]of Object.entries(ctx.exports||{})){if(exp.source&&!fileExists(path$1.resolve(cwd,exp.source))){missingFiles.push(exp.source);}if(exp.require&&!fileExists(path$1.resolve(cwd,exp.require))){missingFiles.push(exp.require);}if(exp.import&&!fileExists(path$1.resolve(cwd,exp.import))){missingFiles.push(exp.import);}if(exp.types&&!fileExists(path$1.resolve(cwd,exp.types))){missingFiles.push(exp.types);}}if(missingFiles.length){logger.error("missing files");process.exit(1);}const exportPaths={require:[],import:[]};for(const exp of Object.values(ctx.exports||{})){if(!exp._exported)continue;if(exp.require)exportPaths.require.push(exp.require);if(exp.import)exportPaths.import.push(exp.import);}const external=[...Object.keys(pkg.dependencies||{}),...Object.keys(pkg.devDependencies||{})];const consoleSpy=createConsoleSpy();if(exportPaths.import.length){checkExports(exportPaths.import,{cwd,external,format:"esm",logger});}if(exportPaths.require.length){checkExports(exportPaths.require,{cwd,external,format:"cjs",logger});}consoleSpy.restore();}}async function checkExports(exportPaths,options){const{cwd,external,format,logger}=options;const code=exportPaths.map(id=>format?"import('".concat(id,"');"):"require('".concat(id,"');")).join("\n");try{const esbuildResult=await esbuild$1.build({bundle:true,external,format,logLevel:"silent",// otherwise output maps to stdout as we're using stdin
|
|
2161
2161
|
outfile:"/dev/null",platform:"node",stdin:{contents:code,loader:"js",resolveDir:cwd}});if(esbuildResult.errors.length>0){for(const msg of esbuildResult.errors){printEsbuildMessage(logger.warn,msg);logger.log();}process.exit(1);}const esbuildWarnings=esbuildResult.warnings.filter(msg=>{!(msg.detail||msg.text).includes("does not affect esbuild's own target setting");});for(const msg of esbuildWarnings){printEsbuildMessage(logger.warn,msg);logger.log();}}catch(err){const{errors}=err;for(const msg of errors){printEsbuildMessage(logger.error,msg);logger.log();}process.exit(1);}}function printEsbuildMessage(log,msg){if(msg.location){log(["".concat(msg.detail||msg.text,"\n"),"".concat(msg.location.line," | ").concat(msg.location.lineText,"\n"),"in ./".concat(msg.location.file,":").concat(msg.location.line,":").concat(msg.location.column)].join(""));}else{log(msg.detail||msg.text);}}async function isEmptyDirectory(dirPath){return(await readdir(dirPath)).length===0;}const RE_NAME=/^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i;const defaultTemplate=async _ref96=>{var _gitConfig$user,_gitConfig$user2;let{cwd,logger,packagePath}=_ref96;const gitConfig=await parseGitConfig({cwd,type:"global"});return{options:[defineTemplateOption({name:"repo",type:"string",description:"git url",validate:v=>{if(!v)return true;try{gitUrlParse(v);return true;}catch(err){return"invalid git url";}},parse:v=>{if(!v)return null;const result=gitUrlParse(v);return{source:result.source,owner:result.owner,name:result.name};}}),defineTemplateOption({name:"pkgName",type:"string",description:"package name",initial:options=>{var _options$repo;return((_options$repo=options.repo)===null||_options$repo===void 0?void 0:_options$repo.name)||void 0;},validate:v=>{if(!v)return"package name is required";const match=RE_NAME.exec(v);if(!match){return"invalid package name";}return true;},parse:v=>{if(!v){throw new Error("package name is required");}const match=RE_NAME.exec(v);if(!match){throw new Error("invalid package name");}const[scope,name]=v.split("/");return{scope,name,fullName:v};}}),defineTemplateOption({name:"description",type:"string",description:"package description"}),defineTemplateOption({name:"authorName",type:"string",description:"package author name",initial:gitConfig===null||gitConfig===void 0||(_gitConfig$user=gitConfig.user)===null||_gitConfig$user===void 0?void 0:_gitConfig$user.name}),defineTemplateOption({name:"authorEmail",type:"string",description:"package author email",initial:gitConfig===null||gitConfig===void 0||(_gitConfig$user2=gitConfig.user)===null||_gitConfig$user2===void 0?void 0:_gitConfig$user2.email}),defineTemplateOption({name:"license",type:"string",description:"package license",initial:"MIT",validate:v=>{if(!v)return"license is required";return true;}})],features:[{name:"eslint",optional:true,initial:true},{name:"prettier",optional:true,initial:true},{name:"typescript",optional:true,initial:true}],async getFiles(options,features){var _filter$join,_options$description;const{pkgName,repo}=options;const{fullName:name}=pkgName;const author=(_filter$join=[options.authorName,options.authorEmail&&"<".concat(options.authorEmail,">")].filter(Boolean).join(" "))!==null&&_filter$join!==void 0?_filter$join:void 0;const prettierConfig=features.prettier?{bracketSpacing:false,plugins:["prettier-plugin-packagejson"],printWidth:100,quoteProps:"consistent",semi:false,singleQuote:true,tabWidth:2,overrides:[{files:["*.yml"],options:{singleQuote:false}}]}:void 0;const pkgJson={name,"version":"0.0.0","description":(_options$description=options.description)!==null&&_options$description!==void 0?_options$description:void 0,"keywords":[],"homepage":void 0,"bugs":void 0,"repository":void 0,"license":options.license,author,"type":"module","exports":{".":{types:void 0,source:features.typescript?"./src/index.ts":"./src/index.js",import:"./dist/index.js",require:"./dist/index.cjs",default:"./dist/index.js"},"./package.json":"./package.json"},"main":"./dist/index.cjs","module":"./dist/index.js","source":features.typescript?"./src/index.ts":"./src/index.js","types":void 0,"files":["dist","src"],"scripts":{"build":"run-s clean pkg:build pkg:check","clean":"rimraf dist","format":features.prettier?"prettier --write --cache --ignore-unknown .":void 0,"pkg:build":"pkg build --strict","pkg:check":"pkg check --strict"},"lint-staged":features.prettier?{"*":["prettier --write --cache --ignore-unknown"]}:void 0,// prettier: prettierConfig,
|
|
2162
|
-
"dependencies":{},"devDependencies":{"@sanity/pkg-utils":"*","@typescript-eslint/eslint-plugin":void 0,"@typescript-eslint/parser":void 0,"eslint":void 0,"eslint-config-prettier":void 0,"eslint-plugin-import":void 0,"eslint-plugin-prettier":void 0,"eslint-plugin-simple-import-sort":void 0,"lint-staged":"*","npm-run-all":"*","prettier":features.prettier?"*":void 0,"prettier-plugin-packagejson":features.prettier?"*":void 0,"rimraf":"*","typescript":void 0},"engines":{node:">=18.0.0"}};const files=[];files.push({name:".editorconfig",contents:outdent(_templateObject6||(_templateObject6=_taggedTemplateLiteral(["\n root = true\n\n [*]\n charset = utf-8\n indent_style = space\n indent_size = 2\n end_of_line = lf\n insert_final_newline = true\n trim_trailing_whitespace = true\n "])))});files.push({name:".gitignore",contents:outdent(_templateObject7||(_templateObject7=_taggedTemplateLiteral(["\n *.local\n *.log\n *.tgz\n\n .DS_Store\n dist\n etc\n node_modules\n "])))});if(features.prettier){files.push({name:".prettierignore",contents:outdent(_templateObject8||(_templateObject8=_taggedTemplateLiteral(["\n dist\n pnpm-lock.yaml\n "])))});files.push({name:".prettierrc",contents:await format(resolve(packagePath,".prettierrc.json"),JSON.stringify(prettierConfig,null,2)+"\n",prettierConfig)});}if(repo){pkgJson.repository={type:"git",url:"git+ssh://git@".concat(repo.source,"/").concat(repo.owner,"/").concat(repo.name,".git")};pkgJson.bugs={url:"https://".concat(repo.source,"/").concat(repo.owner,"/").concat(repo.name,"/issues")};pkgJson.homepage="https://".concat(repo.source,"/").concat(repo.owner,"/").concat(repo.name,"#readme");}if(features.typescript){var _pkgJson$exports;pkgJson.types="./dist/index.d.ts";const mainExport=(_pkgJson$exports=pkgJson.exports)===null||_pkgJson$exports===void 0?void 0:_pkgJson$exports["."];if(isRecord(mainExport)){mainExport.types="./dist/index.d.ts";}pkgJson.scripts={...pkgJson.scripts,["ts:check"]:"tsc --build"};const devDependencies=pkgJson.devDependencies;if(isRecord(devDependencies)){devDependencies["typescript"]="*";}}if(features.eslint){const eslintConfig={root:true,env:{browser:true,es6:true,node:true},extends:["eslint:recommended",features.prettier?"plugin:prettier/recommended":void 0].filter(Boolean),parserOptions:{ecmaVersion:2020,sourceType:"module"},plugins:["import","simple-import-sort",features.prettier?"prettier":void 0].filter(Boolean),rules:{"no-console":"error","no-shadow":"error","no-warning-comments":["warn",{location:"start",terms:["todo","fixme"]}],"quote-props":["warn","consistent-as-needed"],"strict":["warn","global"]}};files.push({name:".eslintignore",contents:outdent(_templateObject9||(_templateObject9=_taggedTemplateLiteral(["\n dist\n "])))});pkgJson.scripts={...pkgJson.scripts,lint:features.typescript?"eslint . --ext .cjs,.js,.ts,.tsx":"eslint . --ext .cjs,.js"};pkgJson.devDependencies={...pkgJson.devDependencies,"eslint":"*","eslint-config-prettier":features.prettier?"*":void 0,"eslint-plugin-simple-import-sort":"*","eslint-plugin-import":"*","eslint-plugin-prettier":features.prettier?"*":void 0};if(features.typescript){pkgJson.devDependencies={...pkgJson.devDependencies,"@typescript-eslint/eslint-plugin":"*","@typescript-eslint/parser":"*"};const eslintConfigOverride={files:["**/*.ts","**/*.tsx"],parser:"@typescript-eslint/parser",parserOptions:{project:["./tsconfig.json"]},extends:["eslint:recommended",features.prettier?"plugin:prettier/recommended":void 0,"plugin:@typescript-eslint/eslint-recommended","plugin:@typescript-eslint/recommended"].filter(Boolean),plugins:["import","@typescript-eslint","simple-import-sort",features.prettier?"prettier":void 0].filter(Boolean),rules:{"@typescript-eslint/explicit-module-boundary-types":"error","@typescript-eslint/interface-name-prefix":"off","@typescript-eslint/member-delimiter-style":"off","@typescript-eslint/no-empty-interface":"off"}};eslintConfig.overrides=[eslintConfigOverride];}files.push({name:".eslintrc.cjs",contents:await format(resolve(packagePath,".eslintrc.cjs"),outdent(_templateObject10||(_templateObject10=_taggedTemplateLiteral(["\n 'use strict'\n\n /** @type import('eslint').Linter.Config */\n module.exports = ","\n "])),JSON.stringify(eslintConfig,null,2)),prettierConfig)});}if(features.typescript){files.push({name:"tsconfig.settings.json",contents:await format(resolve(packagePath,"tsconfig.settings.json"),outdent(_templateObject11||(_templateObject11=_taggedTemplateLiteral(["\n {\n \"compilerOptions\": {\n // Completeness\n \"skipLibCheck\": true,\n\n // Interop constraints\n \"allowSyntheticDefaultImports\": true,\n \"esModuleInterop\": true,\n\n // Language and environment\n \"target\": \"ES2020\",\n\n // Modules\n \"module\": \"ES2020\",\n \"moduleResolution\": \"Node\",\n\n // Type checking\n \"alwaysStrict\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noImplicitAny\": true,\n \"noImplicitReturns\": true,\n \"noImplicitThis\": true,\n \"noUnusedLocals\": true,\n \"noUnusedParameters\": true,\n \"strict\": true,\n \"strictFunctionTypes\": true,\n \"strictNullChecks\": true,\n \"strictPropertyInitialization\": true\n }\n }\n "]))),prettierConfig)});files.push({name:"tsconfig.dist.json",contents:await format(resolve(packagePath,"tsconfig.dist.json"),outdent(_templateObject12||(_templateObject12=_taggedTemplateLiteral(["\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./src\"],\n \"exclude\": [\"./src/**/*.test.ts\"],\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"outDir\": \"./dist\",\n \"resolveJsonModule\": true\n }\n }\n "]))),prettierConfig)});files.push({name:"tsconfig.json",contents:await format(resolve(packagePath,"tsconfig.json"),outdent(_templateObject13||(_templateObject13=_taggedTemplateLiteral(["\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./**/*.cjs\", \"./**/*.ts\", \"./**/*.tsx\"],\n \"exclude\": [\"./node_modules\"],\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"outDir\": \"./dist\",\n \"noEmit\": true,\n \"allowJs\": true,\n \"resolveJsonModule\": true,\n }\n }\n "]))),prettierConfig)});}if(features.typescript){files.push({name:"package.config.ts",contents:await format(resolve(packagePath,"package.config.ts"),outdent(_templateObject14||(_templateObject14=_taggedTemplateLiteral(["\n import {defineConfig} from '@sanity/pkg-utils'\n\n // https://github.com/sanity-io/pkg-utils#configuration\n export default defineConfig({\n // the path to the tsconfig file for distributed builds\n tsconfig: 'tsconfig.dist.json',\n })\n "]))),prettierConfig)});files.push({name:"src/index.ts",contents:await format(resolve(packagePath,"src/index.ts"),outdent(_templateObject15||(_templateObject15=_taggedTemplateLiteral(["\n /** @public */\n export function main(): void {\n //\n }\n "]))),prettierConfig)});}else{files.push({name:"package.config.js",contents:await format(resolve(packagePath,"package.config.js"),outdent(_templateObject16||(_templateObject16=_taggedTemplateLiteral(["\n import {defineConfig} from '@sanity/pkg-utils'\n\n export default defineConfig({\n extract: {\n rules: {\n // do not require internal members to be prefixed with `_`\n 'ae-internal-missing-underscore': 'off',\n },\n },\n })\n "],["\n import {defineConfig} from '@sanity/pkg-utils'\n\n export default defineConfig({\n extract: {\n rules: {\n // do not require internal members to be prefixed with \\`_\\`\n 'ae-internal-missing-underscore': 'off',\n },\n },\n })\n "]))),prettierConfig)});files.push({name:"src/index.js",contents:await format(resolve(packagePath,"src/index.js"),outdent(_templateObject17||(_templateObject17=_taggedTemplateLiteral(["\n /** @public */\n export function main() {\n //\n }\n "]))),prettierConfig)});}try{var _pkgJson$dependencies;pkgJson.dependencies=await resolveLatestDeps((_pkgJson$dependencies=pkgJson.dependencies)!==null&&_pkgJson$dependencies!==void 0?_pkgJson$dependencies:{});}catch(error){logger.warn(error instanceof Error?error.message:error);}try{var _pkgJson$devDependenc;pkgJson.devDependencies=await resolveLatestDeps((_pkgJson$devDependenc=pkgJson.devDependencies)!==null&&_pkgJson$devDependenc!==void 0?_pkgJson$devDependenc:{});}catch(error){logger.warn(error instanceof Error?error.message:error);}files.push({name:"package.json",contents:await format(resolve(packagePath,"package.json"),JSON.stringify(pkgJson,null,2),prettierConfig)});return files;}};};function format(filepath,input,prettierOptions){return prettier.format(input,{...prettierOptions,plugins:[],filepath});}async function resolveLatestDeps(deps){const depsEntries=Object.entries(deps);const latestDeps={};for(const entry of depsEntries){const[name,version]=entry;if(version){const latestVersion=await getLatestVersion(name,version);latestDeps[name]=latestVersion?"^".concat(latestVersion):version;}}return latestDeps;}async function init(options){if(!options.cwd){throw new Error("Missing required option: cwd");}if(!options.path){throw new Error("Missing required option: path");}const logger=createLogger();const packagePath=resolve(options.cwd,options.path);await ensurePackagePath(packagePath);await createFromTemplate({cwd:options.cwd,logger,template:defaultTemplate,packagePath});}async function ensurePackagePath(packagePath){const exists=fileExists(packagePath);if(!exists){await mkdirp(packagePath);return;}const dir=(await lstat(packagePath)).isDirectory();if(!dir){throw new Error("the package path is a file, not a directory");}const empty=await isEmptyDirectory(packagePath);if(!empty){throw new Error("the package directory is not empty");}}function resolveWatchTasks(ctx){const{config,cwd,pkg,target}=ctx;const tasks=[];const exports=Object.entries(ctx.exports||{}).map(_ref97=>{let[_path,exp]=_ref97;return{_path,...exp};});const dtsTask={type:"watch:dts",entries:[]};const rollupTasks={};function addRollupTaskEntry(format,runtime,entry){const buildId="".concat(format,":").concat(runtime);if(rollupTasks[buildId]){rollupTasks[buildId].entries.push(entry);}else{rollupTasks[buildId]={type:"watch:js",buildId,entries:[entry],runtime,format,target:target[runtime]};}}for(const exp of exports){const importId=path$1.join(pkg.name,exp._path);if(exp.types){dtsTask.entries.push({importId,exportPath:exp._path,sourcePath:exp.source,targetPath:exp.types});}}for(const exp of exports){const output=exp.require;if(!output)continue;addRollupTaskEntry("commonjs",ctx.runtime,{path:exp._path,source:exp.source,output});}for(const exp of exports){var _exp$browser6,_exp$browser7;const output=(_exp$browser6=exp.browser)===null||_exp$browser6===void 0?void 0:_exp$browser6.require;if(!output)continue;addRollupTaskEntry("commonjs","browser",{path:exp._path,source:((_exp$browser7=exp.browser)===null||_exp$browser7===void 0?void 0:_exp$browser7.source)||exp.source,output});}for(const exp of exports){const output=exp.import;if(!output)continue;addRollupTaskEntry("esm",ctx.runtime,{path:exp._path,source:exp.source,output});}for(const exp of exports){var _exp$browser8,_exp$browser9;const output=(_exp$browser8=exp.browser)===null||_exp$browser8===void 0?void 0:_exp$browser8.import;if(!output)continue;addRollupTaskEntry("esm","browser",{path:exp._path,source:((_exp$browser9=exp.browser)===null||_exp$browser9===void 0?void 0:_exp$browser9.source)||exp.source,output});}if(dtsTask.entries.length){tasks.push(dtsTask);}tasks.push(...Object.values(rollupTasks));if(config!==null&&config!==void 0&&config.legacyExports){for(const exp of exports){if(exp._exported&&exp._path!=="."){var _exp$browser10;const relativeTargetPath=(((_exp$browser10=exp.browser)===null||_exp$browser10===void 0?void 0:_exp$browser10.import)||exp.import||"").replace(/\.[^/.]+$/,"");if(relativeTargetPath){fs$1.writeFileSync(path$1.resolve(cwd,"".concat(exp._path,".js")),["// AUTO-GENERATED \u2013 DO NOT EDIT","export * from '".concat(relativeTargetPath,"'"),""].join("\n"));}}}}return tasks;}function globFiles(patterns){return globby(patterns.map(pattern=>pattern.split(path$1.sep).join(path$1.posix.sep)));}function watchFiles(patterns){return new Observable(observer=>{const watcher=chokidar.watch(patterns,{ignoreInitial:true});function handleFileEvent(type,file){observer.next({type,file});}watcher.on("all",handleFileEvent);return()=>{watcher.off("all",handleFileEvent);watcher.close();};});}async function watchConfigFiles(options){const{cwd,logger}=options;const initialFiles=await globFiles([path$1.resolve(cwd,"package.json"),path$1.resolve(cwd,"package.config.cjs"),path$1.resolve(cwd,"package.config.js"),path$1.resolve(cwd,"package.config.ts")]);const fileEvent$=watchFiles([path$1.resolve(cwd,"package.json"),path$1.resolve(cwd,"package.config.cjs"),path$1.resolve(cwd,"package.config.js"),path$1.resolve(cwd,"package.config.ts")]);return fileEvent$.pipe(scan((files,fileEvent)=>{if(fileEvent.type==="add"){return files.concat(fileEvent.file);}if(fileEvent.type==="unlink"){return files.filter(f=>f!==fileEvent.file);}if(fileEvent.type==="change"){logger.log("--------------------------------------------------------------------------------");logger.info(path$1.relative(cwd,fileEvent.file),"changed");logger.log("");return files.slice(0);}return files;},initialFiles),startWith(initialFiles),distinctUntilChanged());}async function watch(options){const{cwd,strict=false,tsconfig:tsconfigOption}=options;const logger=createLogger();const configFiles$=await watchConfigFiles({cwd,logger});const ctx$=configFiles$.pipe(switchMap(async configFiles=>{var _config$legacyExports3;const files=configFiles.map(f=>path$1.relative(cwd,f));const packageJsonPath=files.find(f=>f==="package.json");if(!packageJsonPath){throw new Error("missing package.json");}const pkg=await loadPkgWithReporting({cwd,logger});const config=await loadConfig({cwd});const extMap=getPkgExtMap({legacyExports:(_config$legacyExports3=config===null||config===void 0?void 0:config.legacyExports)!==null&&_config$legacyExports3!==void 0?_config$legacyExports3:false});const tsconfig=tsconfigOption||(config===null||config===void 0?void 0:config.tsconfig)||"tsconfig.json";return resolveBuildContext({config,cwd,extMap,logger,pkg,strict,tsconfig});}));ctx$.subscribe(async ctx=>{const watchTasks=resolveWatchTasks(ctx);for(const task of watchTasks){const handler=watchTaskHandlers[task.type];const result$=handler.exec(ctx,task);result$.subscribe({error:err=>{ctx.logger.error(err);ctx.logger.log();process.exit(1);},next:result=>{handler.complete(ctx,task,result);},complete:()=>{ctx.logger.success(handler.name(ctx,task));ctx.logger.log();}});}});}export{DEFAULT_BROWSERSLIST_QUERY,DEFAULT_PKG_EXT_MAP,build,buildTaskHandlers,check,createFromTemplate,createLogger,defineConfig,defineTemplateOption,dtsTask,dtsWatchTask,getExtractMessagesConfig,getPkgExtMap,init,isRecord,loadConfig,loadPkg,loadPkgWithReporting,loadTSConfig,parseExports,resolveBuildTasks,resolveConfigProperty,rollupTask,rollupWatchTask,watch,watchTaskHandlers};
|
|
2162
|
+
"dependencies":{},"devDependencies":{"@sanity/pkg-utils":"*","@typescript-eslint/eslint-plugin":void 0,"@typescript-eslint/parser":void 0,"eslint":void 0,"eslint-config-prettier":void 0,"eslint-plugin-import":void 0,"eslint-plugin-prettier":void 0,"eslint-plugin-simple-import-sort":void 0,"lint-staged":"*","npm-run-all":"*","prettier":features.prettier?"*":void 0,"prettier-plugin-packagejson":features.prettier?"*":void 0,"rimraf":"*","typescript":void 0},"engines":{node:">=18.0.0"}};const files=[];files.push({name:".editorconfig",contents:outdent(_templateObject6||(_templateObject6=_taggedTemplateLiteral(["\n root = true\n\n [*]\n charset = utf-8\n indent_style = space\n indent_size = 2\n end_of_line = lf\n insert_final_newline = true\n trim_trailing_whitespace = true\n "])))});files.push({name:".gitignore",contents:outdent(_templateObject7||(_templateObject7=_taggedTemplateLiteral(["\n *.local\n *.log\n *.tgz\n\n .DS_Store\n dist\n etc\n node_modules\n "])))});if(features.prettier){files.push({name:".prettierignore",contents:outdent(_templateObject8||(_templateObject8=_taggedTemplateLiteral(["\n dist\n pnpm-lock.yaml\n "])))});files.push({name:".prettierrc",contents:await format(resolve(packagePath,".prettierrc.json"),JSON.stringify(prettierConfig,null,2)+"\n",prettierConfig)});}if(repo){pkgJson.repository={type:"git",url:"git+ssh://git@".concat(repo.source,"/").concat(repo.owner,"/").concat(repo.name,".git")};pkgJson.bugs={url:"https://".concat(repo.source,"/").concat(repo.owner,"/").concat(repo.name,"/issues")};pkgJson.homepage="https://".concat(repo.source,"/").concat(repo.owner,"/").concat(repo.name,"#readme");}if(features.typescript){var _pkgJson$exports;pkgJson.types="./dist/index.d.ts";const mainExport=(_pkgJson$exports=pkgJson.exports)===null||_pkgJson$exports===void 0?void 0:_pkgJson$exports["."];if(isRecord(mainExport)){mainExport.types="./dist/index.d.ts";}pkgJson.scripts={...pkgJson.scripts,["ts:check"]:"tsc --build"};const devDependencies=pkgJson.devDependencies;if(isRecord(devDependencies)){devDependencies["typescript"]="*";}}if(features.eslint){const eslintConfig={root:true,env:{browser:true,es6:true,node:true},extends:["eslint:recommended",features.prettier?"plugin:prettier/recommended":void 0].filter(Boolean),parserOptions:{ecmaVersion:2020,sourceType:"module"},plugins:["import","simple-import-sort",features.prettier?"prettier":void 0].filter(Boolean),rules:{"no-console":"error","no-shadow":"error","no-warning-comments":["warn",{location:"start",terms:["todo","fixme"]}],"quote-props":["warn","consistent-as-needed"],"simple-import-sort/exports":"warn","simple-import-sort/imports":"warn","strict":["warn","global"]}};files.push({name:".eslintignore",contents:outdent(_templateObject9||(_templateObject9=_taggedTemplateLiteral(["\n dist\n "])))});pkgJson.scripts={...pkgJson.scripts,lint:features.typescript?"eslint . --ext .cjs,.js,.ts,.tsx":"eslint . --ext .cjs,.js"};pkgJson.devDependencies={...pkgJson.devDependencies,"eslint":"*","eslint-config-prettier":features.prettier?"*":void 0,"eslint-plugin-simple-import-sort":"*","eslint-plugin-import":"*","eslint-plugin-prettier":features.prettier?"*":void 0};if(features.typescript){pkgJson.devDependencies={...pkgJson.devDependencies,"@typescript-eslint/eslint-plugin":"*","@typescript-eslint/parser":"*"};const eslintConfigOverride={files:["**/*.ts","**/*.tsx"],parser:"@typescript-eslint/parser",parserOptions:{project:["./tsconfig.json"]},extends:["eslint:recommended",features.prettier?"plugin:prettier/recommended":void 0,"plugin:@typescript-eslint/eslint-recommended","plugin:@typescript-eslint/recommended"].filter(Boolean),plugins:["import","@typescript-eslint","simple-import-sort",features.prettier?"prettier":void 0].filter(Boolean),rules:{"@typescript-eslint/explicit-module-boundary-types":"error","@typescript-eslint/interface-name-prefix":"off","@typescript-eslint/member-delimiter-style":"off","@typescript-eslint/no-empty-interface":"off"}};eslintConfig.overrides=[eslintConfigOverride];}files.push({name:".eslintrc.cjs",contents:await format(resolve(packagePath,".eslintrc.cjs"),outdent(_templateObject10||(_templateObject10=_taggedTemplateLiteral(["\n 'use strict'\n\n /** @type import('eslint').Linter.Config */\n module.exports = ","\n "])),JSON.stringify(eslintConfig,null,2)),prettierConfig)});}if(features.typescript){files.push({name:"tsconfig.settings.json",contents:await format(resolve(packagePath,"tsconfig.settings.json"),outdent(_templateObject11||(_templateObject11=_taggedTemplateLiteral(["\n {\n \"compilerOptions\": {\n // Completeness\n \"skipLibCheck\": true,\n\n // Interop constraints\n \"allowSyntheticDefaultImports\": true,\n \"esModuleInterop\": true,\n\n // Language and environment\n \"target\": \"ES2020\",\n\n // Modules\n \"module\": \"ES2020\",\n \"moduleResolution\": \"Node\",\n\n // Type checking\n \"alwaysStrict\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noImplicitAny\": true,\n \"noImplicitReturns\": true,\n \"noImplicitThis\": true,\n \"noUnusedLocals\": true,\n \"noUnusedParameters\": true,\n \"strict\": true,\n \"strictFunctionTypes\": true,\n \"strictNullChecks\": true,\n \"strictPropertyInitialization\": true\n }\n }\n "]))),prettierConfig)});files.push({name:"tsconfig.dist.json",contents:await format(resolve(packagePath,"tsconfig.dist.json"),outdent(_templateObject12||(_templateObject12=_taggedTemplateLiteral(["\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./src\"],\n \"exclude\": [\"./src/**/*.test.ts\"],\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"outDir\": \"./dist\",\n \"resolveJsonModule\": true\n }\n }\n "]))),prettierConfig)});files.push({name:"tsconfig.json",contents:await format(resolve(packagePath,"tsconfig.json"),outdent(_templateObject13||(_templateObject13=_taggedTemplateLiteral(["\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./**/*.cjs\", \"./**/*.ts\", \"./**/*.tsx\"],\n \"exclude\": [\"./node_modules\"],\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"outDir\": \"./dist\",\n \"noEmit\": true,\n \"allowJs\": true,\n \"resolveJsonModule\": true,\n }\n }\n "]))),prettierConfig)});}if(features.typescript){files.push({name:"package.config.ts",contents:await format(resolve(packagePath,"package.config.ts"),outdent(_templateObject14||(_templateObject14=_taggedTemplateLiteral(["\n import {defineConfig} from '@sanity/pkg-utils'\n\n // https://github.com/sanity-io/pkg-utils#configuration\n export default defineConfig({\n // the path to the tsconfig file for distributed builds\n tsconfig: 'tsconfig.dist.json',\n })\n "]))),prettierConfig)});files.push({name:"src/index.ts",contents:await format(resolve(packagePath,"src/index.ts"),outdent(_templateObject15||(_templateObject15=_taggedTemplateLiteral(["\n /** @public */\n export function main(): void {\n //\n }\n "]))),prettierConfig)});}else{files.push({name:"package.config.js",contents:await format(resolve(packagePath,"package.config.js"),outdent(_templateObject16||(_templateObject16=_taggedTemplateLiteral(["\n import {defineConfig} from '@sanity/pkg-utils'\n\n export default defineConfig({\n extract: {\n rules: {\n // do not require internal members to be prefixed with `_`\n 'ae-internal-missing-underscore': 'off',\n },\n },\n })\n "],["\n import {defineConfig} from '@sanity/pkg-utils'\n\n export default defineConfig({\n extract: {\n rules: {\n // do not require internal members to be prefixed with \\`_\\`\n 'ae-internal-missing-underscore': 'off',\n },\n },\n })\n "]))),prettierConfig)});files.push({name:"src/index.js",contents:await format(resolve(packagePath,"src/index.js"),outdent(_templateObject17||(_templateObject17=_taggedTemplateLiteral(["\n /** @public */\n export function main() {\n //\n }\n "]))),prettierConfig)});}try{var _pkgJson$dependencies;pkgJson.dependencies=await resolveLatestDeps((_pkgJson$dependencies=pkgJson.dependencies)!==null&&_pkgJson$dependencies!==void 0?_pkgJson$dependencies:{});}catch(error){logger.warn(error instanceof Error?error.message:error);}try{var _pkgJson$devDependenc;pkgJson.devDependencies=await resolveLatestDeps((_pkgJson$devDependenc=pkgJson.devDependencies)!==null&&_pkgJson$devDependenc!==void 0?_pkgJson$devDependenc:{});}catch(error){logger.warn(error instanceof Error?error.message:error);}files.push({name:"package.json",contents:await format(resolve(packagePath,"package.json"),JSON.stringify(pkgJson,null,2),prettierConfig)});return files;}};};function format(filepath,input,prettierOptions){return prettier.format(input,{...prettierOptions,plugins:[],filepath});}async function resolveLatestDeps(deps){const depsEntries=Object.entries(deps);const latestDeps={};for(const entry of depsEntries){const[name,version]=entry;if(version){const latestVersion=await getLatestVersion(name,version);latestDeps[name]=latestVersion?"^".concat(latestVersion):version;}}return latestDeps;}async function init(options){if(!options.cwd){throw new Error("Missing required option: cwd");}if(!options.path){throw new Error("Missing required option: path");}const logger=createLogger();const packagePath=resolve(options.cwd,options.path);await ensurePackagePath(packagePath);await createFromTemplate({cwd:options.cwd,logger,template:defaultTemplate,packagePath});}async function ensurePackagePath(packagePath){const exists=fileExists(packagePath);if(!exists){await mkdirp(packagePath);return;}const dir=(await lstat(packagePath)).isDirectory();if(!dir){throw new Error("the package path is a file, not a directory");}const empty=await isEmptyDirectory(packagePath);if(!empty){throw new Error("the package directory is not empty");}}function resolveWatchTasks(ctx){const{config,cwd,pkg,target}=ctx;const tasks=[];const exports=Object.entries(ctx.exports||{}).map(_ref97=>{let[_path,exp]=_ref97;return{_path,...exp};});const dtsTask={type:"watch:dts",entries:[]};const rollupTasks={};function addRollupTaskEntry(format,runtime,entry){const buildId="".concat(format,":").concat(runtime);if(rollupTasks[buildId]){rollupTasks[buildId].entries.push(entry);}else{rollupTasks[buildId]={type:"watch:js",buildId,entries:[entry],runtime,format,target:target[runtime]};}}for(const exp of exports){const importId=path$1.join(pkg.name,exp._path);if(exp.types){dtsTask.entries.push({importId,exportPath:exp._path,sourcePath:exp.source,targetPath:exp.types});}}for(const exp of exports){const output=exp.require;if(!output)continue;addRollupTaskEntry("commonjs",ctx.runtime,{path:exp._path,source:exp.source,output});}for(const exp of exports){var _exp$browser6,_exp$browser7;const output=(_exp$browser6=exp.browser)===null||_exp$browser6===void 0?void 0:_exp$browser6.require;if(!output)continue;addRollupTaskEntry("commonjs","browser",{path:exp._path,source:((_exp$browser7=exp.browser)===null||_exp$browser7===void 0?void 0:_exp$browser7.source)||exp.source,output});}for(const exp of exports){const output=exp.import;if(!output)continue;addRollupTaskEntry("esm",ctx.runtime,{path:exp._path,source:exp.source,output});}for(const exp of exports){var _exp$browser8,_exp$browser9;const output=(_exp$browser8=exp.browser)===null||_exp$browser8===void 0?void 0:_exp$browser8.import;if(!output)continue;addRollupTaskEntry("esm","browser",{path:exp._path,source:((_exp$browser9=exp.browser)===null||_exp$browser9===void 0?void 0:_exp$browser9.source)||exp.source,output});}if(dtsTask.entries.length){tasks.push(dtsTask);}tasks.push(...Object.values(rollupTasks));if(config!==null&&config!==void 0&&config.legacyExports){for(const exp of exports){if(exp._exported&&exp._path!=="."){var _exp$browser10;const relativeTargetPath=(((_exp$browser10=exp.browser)===null||_exp$browser10===void 0?void 0:_exp$browser10.import)||exp.import||"").replace(/\.[^/.]+$/,"");if(relativeTargetPath){fs$1.writeFileSync(path$1.resolve(cwd,"".concat(exp._path,".js")),["// AUTO-GENERATED \u2013 DO NOT EDIT","export * from '".concat(relativeTargetPath,"'"),""].join("\n"));}}}}return tasks;}function globFiles(patterns){return globby(patterns.map(pattern=>pattern.split(path$1.sep).join(path$1.posix.sep)));}function watchFiles(patterns){return new Observable(observer=>{const watcher=chokidar.watch(patterns,{ignoreInitial:true});function handleFileEvent(type,file){observer.next({type,file});}watcher.on("all",handleFileEvent);return()=>{watcher.off("all",handleFileEvent);watcher.close();};});}async function watchConfigFiles(options){const{cwd,logger}=options;const initialFiles=await globFiles([path$1.resolve(cwd,"package.json"),path$1.resolve(cwd,"package.config.cjs"),path$1.resolve(cwd,"package.config.js"),path$1.resolve(cwd,"package.config.ts")]);const fileEvent$=watchFiles([path$1.resolve(cwd,"package.json"),path$1.resolve(cwd,"package.config.cjs"),path$1.resolve(cwd,"package.config.js"),path$1.resolve(cwd,"package.config.ts")]);return fileEvent$.pipe(scan((files,fileEvent)=>{if(fileEvent.type==="add"){return files.concat(fileEvent.file);}if(fileEvent.type==="unlink"){return files.filter(f=>f!==fileEvent.file);}if(fileEvent.type==="change"){logger.log("--------------------------------------------------------------------------------");logger.info(path$1.relative(cwd,fileEvent.file),"changed");logger.log("");return files.slice(0);}return files;},initialFiles),startWith(initialFiles),distinctUntilChanged());}async function watch(options){const{cwd,strict=false,tsconfig:tsconfigOption}=options;const logger=createLogger();const configFiles$=await watchConfigFiles({cwd,logger});const ctx$=configFiles$.pipe(switchMap(async configFiles=>{var _config$legacyExports3;const files=configFiles.map(f=>path$1.relative(cwd,f));const packageJsonPath=files.find(f=>f==="package.json");if(!packageJsonPath){throw new Error("missing package.json");}const pkg=await loadPkgWithReporting({cwd,logger});const config=await loadConfig({cwd});const extMap=getPkgExtMap({legacyExports:(_config$legacyExports3=config===null||config===void 0?void 0:config.legacyExports)!==null&&_config$legacyExports3!==void 0?_config$legacyExports3:false});const tsconfig=tsconfigOption||(config===null||config===void 0?void 0:config.tsconfig)||"tsconfig.json";return resolveBuildContext({config,cwd,extMap,logger,pkg,strict,tsconfig});}));ctx$.subscribe(async ctx=>{const watchTasks=resolveWatchTasks(ctx);for(const task of watchTasks){const handler=watchTaskHandlers[task.type];const result$=handler.exec(ctx,task);result$.subscribe({error:err=>{ctx.logger.error(err);ctx.logger.log();process.exit(1);},next:result=>{handler.complete(ctx,task,result);},complete:()=>{ctx.logger.success(handler.name(ctx,task));ctx.logger.log();}});}});}export{DEFAULT_BROWSERSLIST_QUERY,DEFAULT_PKG_EXT_MAP,build,buildTaskHandlers,check,createFromTemplate,createLogger,defineConfig,defineTemplateOption,dtsTask,dtsWatchTask,getExtractMessagesConfig,getPkgExtMap,init,isRecord,loadConfig,loadPkg,loadPkgWithReporting,loadTSConfig,parseExports,resolveBuildTasks,resolveConfigProperty,rollupTask,rollupWatchTask,watch,watchTaskHandlers};
|
|
2163
2163
|
//# sourceMappingURL=index.js.map
|