@sanity/pkg-utils 11.0.17 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MIGRATE.md +152 -0
- package/README.md +110 -55
- package/dist/buildAction-DFrmHzYY.js +146 -0
- package/dist/buildAction-DFrmHzYY.js.map +1 -0
- package/dist/checkAction-BMxszLZS.js +140 -0
- package/dist/checkAction-BMxszLZS.js.map +1 -0
- package/dist/cli.js +22 -28
- package/dist/cli.js.map +1 -1
- package/dist/createApiExtractorConfig-CJoZqw8e.js +30 -0
- package/dist/createApiExtractorConfig-CJoZqw8e.js.map +1 -0
- package/dist/createTSDocConfig-CwaWneTR.js +25 -0
- package/dist/createTSDocConfig-CwaWneTR.js.map +1 -0
- package/dist/getExtractMessagesConfig-CXljwFbQ.js +75 -0
- package/dist/getExtractMessagesConfig-CXljwFbQ.js.map +1 -0
- package/dist/handleError-83GwKIFM.js +40 -0
- package/dist/handleError-83GwKIFM.js.map +1 -0
- package/dist/index.d.ts +141 -195
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +203 -11
- package/dist/index.js.map +1 -1
- package/dist/initAction-Cv0oRwWP.js +618 -0
- package/dist/initAction-Cv0oRwWP.js.map +1 -0
- package/dist/printExtractMessages-DyaYtByp.js +33 -0
- package/dist/printExtractMessages-DyaYtByp.js.map +1 -0
- package/dist/resolveBuildContext-CwqbTV6p.js +713 -0
- package/dist/resolveBuildContext-CwqbTV6p.js.map +1 -0
- package/dist/resolveTsdownConfig-2OdGF-dM.js +258 -0
- package/dist/resolveTsdownConfig-2OdGF-dM.js.map +1 -0
- package/dist/spinner-DAHe7SuT.js +15 -0
- package/dist/spinner-DAHe7SuT.js.map +1 -0
- package/dist/watchAction-uRPAvgLE.js +179 -0
- package/dist/watchAction-uRPAvgLE.js.map +1 -0
- package/dist/watchConfigFiles-AGBDblwf.js +43 -0
- package/dist/watchConfigFiles-AGBDblwf.js.map +1 -0
- package/package.json +10 -24
- package/dist/_chunks-es/buildAction.js +0 -195
- package/dist/_chunks-es/buildAction.js.map +0 -1
- package/dist/_chunks-es/checkAction.js +0 -198
- package/dist/_chunks-es/checkAction.js.map +0 -1
- package/dist/_chunks-es/createApiExtractorConfig.js +0 -52
- package/dist/_chunks-es/createApiExtractorConfig.js.map +0 -1
- package/dist/_chunks-es/createTSDocConfig.js +0 -31
- package/dist/_chunks-es/createTSDocConfig.js.map +0 -1
- package/dist/_chunks-es/defaults.js +0 -36
- package/dist/_chunks-es/defaults.js.map +0 -1
- package/dist/_chunks-es/define.js +0 -7
- package/dist/_chunks-es/define.js.map +0 -1
- package/dist/_chunks-es/extractModuleBlocks.js +0 -48
- package/dist/_chunks-es/extractModuleBlocks.js.map +0 -1
- package/dist/_chunks-es/fileExists.js +0 -12
- package/dist/_chunks-es/fileExists.js.map +0 -1
- package/dist/_chunks-es/getExtractMessagesConfig.js +0 -83
- package/dist/_chunks-es/getExtractMessagesConfig.js.map +0 -1
- package/dist/_chunks-es/handleError.js +0 -32
- package/dist/_chunks-es/handleError.js.map +0 -1
- package/dist/_chunks-es/index.js +0 -825
- package/dist/_chunks-es/index.js.map +0 -1
- package/dist/_chunks-es/initAction.js +0 -654
- package/dist/_chunks-es/initAction.js.map +0 -1
- package/dist/_chunks-es/printExtractMessages.js +0 -44
- package/dist/_chunks-es/printExtractMessages.js.map +0 -1
- package/dist/_chunks-es/resolveBuildContext.js +0 -717
- package/dist/_chunks-es/resolveBuildContext.js.map +0 -1
- package/dist/_chunks-es/resolveRolldownConfig.js +0 -117
- package/dist/_chunks-es/resolveRolldownConfig.js.map +0 -1
- package/dist/_chunks-es/spinner.js +0 -16
- package/dist/_chunks-es/spinner.js.map +0 -1
- package/dist/_chunks-es/watchAction.js +0 -160
- package/dist/_chunks-es/watchAction.js.map +0 -1
- package/dist/_chunks-es/watchConfigFiles.js +0 -49
- package/dist/_chunks-es/watchConfigFiles.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initAction-Cv0oRwWP.js","names":["prettierConfig"],"sources":["../src/node/core/template/createFromTemplate.ts","../src/node/core/template/define.ts","../src/node/isEmptyDirectory.ts","../../../../node_modules/.pnpm/@sanity+prettier-config@3.0.0_prettier@3.9.6/node_modules/@sanity/prettier-config/dist/index.js","../../../../node_modules/.pnpm/parse-github-url@1.0.4/node_modules/parse-github-url/parse-url.js","../../../../node_modules/.pnpm/parse-github-url@1.0.4/node_modules/parse-github-url/index.js","../src/node/templates/default/template.ts","../src/node/init.ts","../src/cli/initAction.ts"],"sourcesContent":["import {writeFile} from 'node:fs/promises'\nimport {dirname, relative, resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport prompts from 'prompts'\nimport type {Logger} from '../../logger.ts'\nimport type {PkgTemplate} from './types.ts'\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 type {PkgTemplateOption} from './types.ts'\n\n/** @public */\nexport function defineTemplateOption<T>(option: PkgTemplateOption<T>): PkgTemplateOption<T> {\n return option\n}\n","import {readdir} from 'node:fs/promises'\n\nexport async function isEmptyDirectory(dirPath: string): Promise<boolean> {\n return (await readdir(dirPath)).length === 0\n}\n","const overridableDefaults = {\n endOfLine: \"lf\",\n tabWidth: 2,\n useTabs: !1\n}, json5 = {\n files: [\"*.json5\"],\n options: {\n quoteProps: \"preserve\",\n singleQuote: !1\n }\n}, yaml = {\n files: [\"*.yml\"],\n options: {\n singleQuote: !1\n }\n}, config = {\n ...overridableDefaults,\n printWidth: 100,\n semi: !1,\n singleQuote: !0,\n quoteProps: \"consistent\",\n bracketSpacing: !1,\n plugins: [\"prettier-plugin-packagejson\"],\n overrides: [json5, yaml]\n};\nexport {\n config as default\n};\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nvar urlModule = require('url');\nvar URLCtor = typeof URL === 'undefined' ? urlModule.URL || null : URL;\nvar legacyURLParse = URLCtor ? null : urlModule.parse;\n\nfunction parseWHATWG(str) {\n\ttry {\n\t\tvar u = new URLCtor(str);\n\t\tvar auth = null;\n\t\tif (u.username) {\n\t\t\tauth = u.password ? u.username + ':' + u.password : u.username;\n\t\t}\n\t\tvar host = u.host || null;\n\t\tvar hostname = u.hostname || null;\n\t\tvar pathname = u.pathname || null;\n\t\tvar path = u.pathname + (u.search || '') || null;\n\n\t\t// For non-special schemes without '//' (e.g. 'github:user/repo', 'foo:bar'),\n\t\t// the WHATWG URL API produces an opaque path (host is empty). Replicate the\n\t\t// legacy url.parse() behavior: treat the first path segment as the host.\n\t\tif (!host && pathname && str.indexOf('//') === -1) {\n\t\t\tvar slashIdx = pathname.indexOf('/');\n\t\t\tif (slashIdx === -1) {\n\t\t\t\t// e.g. 'foo:bar' — no path segment, only a host-like token → null path\n\t\t\t\thost = pathname;\n\t\t\t\thostname = pathname;\n\t\t\t\tpathname = null;\n\t\t\t\tpath = null;\n\t\t\t} else {\n\t\t\t\t// e.g. 'github:user/repo' — first segment is host, rest is path\n\t\t\t\thost = pathname.slice(0, slashIdx);\n\t\t\t\thostname = host;\n\t\t\t\tpathname = pathname.slice(slashIdx);\n\t\t\t\tpath = pathname + (u.search || '');\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tauth: auth,\n\t\t\thash: u.hash || null,\n\t\t\thost: host,\n\t\t\thostname: hostname,\n\t\t\thref: u.href,\n\t\t\tpath: path,\n\t\t\tpathname: pathname,\n\t\t\tport: u.port || null,\n\t\t\tprotocol: u.protocol || null,\n\t\t\tquery: u.search ? u.search.slice(1) : null,\n\t\t\tsearch: u.search || null,\n\t\t\tslashes: str.indexOf('//') === -1 ? null : true\n\t\t};\n\t} catch (_) {\n\t\t// Fall back for non-standard strings (bare paths, git@ URLs, etc.)\n\t\tvar hashIdx = str.indexOf('#');\n\t\tvar hash = hashIdx === -1 ? null : str.slice(hashIdx);\n\t\tvar pathPart = hashIdx === -1 ? str : str.slice(0, hashIdx);\n\t\tvar queryIdx = pathPart.indexOf('?');\n\t\tvar search = queryIdx === -1 ? null : pathPart.slice(queryIdx);\n\t\tvar pathnamePart = queryIdx === -1 ? pathPart : pathPart.slice(0, queryIdx);\n\t\treturn {\n\t\t\tauth: null,\n\t\t\thash: hash,\n\t\t\thost: null,\n\t\t\thostname: null,\n\t\t\thref: str,\n\t\t\tpath: pathPart || null,\n\t\t\tpathname: pathnamePart || null,\n\t\t\tport: null,\n\t\t\tprotocol: null,\n\t\t\tquery: search ? search.slice(1) : null,\n\t\t\tsearch: search,\n\t\t\tslashes: null\n\t\t};\n\t}\n}\n\nmodule.exports = URLCtor ? parseWHATWG : legacyURLParse;\n","/*!\n * parse-github-url <https://github.com/jonschlinkert/parse-github-url>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar parseURL = require('./parse-url');\nvar cache = { __proto__: null };\n\nfunction isChecksum(str) {\n\treturn (/^[a-f0-9]{40}$/i).test(str);\n}\n\nfunction getBranch(str, obj) {\n\tvar segs = str.split('#');\n\tvar branch;\n\tif (segs.length > 1) {\n\t\tbranch = segs[segs.length - 1];\n\t}\n\tif (!branch && obj.hash && obj.hash.charAt(0) === '#') {\n\t\tbranch = obj.hash.slice(1);\n\t}\n\treturn branch || 'master';\n}\n\nfunction trimSlash(path) {\n\treturn path.charAt(0) === '/' ? path.slice(1) : path;\n}\n\nfunction name(str) {\n\treturn str ? str.replace(/\\.git$/, '') : null;\n}\n\nfunction owner(str) {\n\tif (!str) {\n\t\treturn null;\n\t}\n\tvar idx = str.indexOf(':');\n\tif (idx > -1) {\n\t\treturn str.slice(idx + 1);\n\t}\n\treturn str;\n}\n\n/**\n * Extract the host from a git@ URL using the WHATWG URL API.\n */\nfunction getGitAtHost(str) {\n\tvar transformed = 'http://' + str.replace(/git@([^:]+):/, '$1/');\n\treturn parseURL(transformed).host || null;\n}\n\nfunction parse(str) {\n\tif (typeof str !== 'string' || !str.length) {\n\t\treturn null;\n\t}\n\n\tif (str.indexOf('git@gist') !== -1 || str.indexOf('//gist') !== -1) {\n\t\treturn null;\n\t}\n\n\t// parse the URL\n\tvar obj = parseURL(str);\n\tif (typeof obj.path !== 'string' || !obj.path.length || typeof obj.pathname !== 'string' || !obj.pathname.length) {\n\t\treturn null;\n\t}\n\n\tif (!obj.host && (/^git@/).test(str) === true) {\n\t\t// return the correct host for git@ URLs\n\t\tobj.host = getGitAtHost(str);\n\t}\n\n\tobj.path = trimSlash(obj.path);\n\tobj.pathname = trimSlash(obj.pathname);\n\tobj.filepath = null;\n\n\tif (obj.path.indexOf('repos') === 0) {\n\t\tobj.path = obj.path.slice(6);\n\t}\n\n\tvar seg = obj.path.split('/').filter(Boolean);\n\tvar hasBlob = seg[2] === 'blob';\n\tif (hasBlob && !isChecksum(seg[3])) {\n\t\tobj.branch = seg[3];\n\t\tif (seg.length > 4) {\n\t\t\tobj.filepath = seg.slice(4).join('/');\n\t\t}\n\t}\n\n\tvar blob = str.indexOf('blob');\n\tif (hasBlob && blob !== -1) {\n\t\tobj.blob = str.slice(blob + 5);\n\t}\n\n\tvar hasTree = seg[2] === 'tree';\n\tvar tree = str.indexOf('tree');\n\tif (hasTree && tree !== -1) {\n\t\tvar idx = tree + 5;\n\t\tvar branch = str.slice(idx);\n\t\tvar slash = branch.indexOf('/');\n\t\tif (slash !== -1) {\n\t\t\tbranch = branch.slice(0, slash);\n\t\t}\n\t\tobj.branch = branch;\n\t}\n\n\tobj.owner = owner(seg[0]);\n\tobj.name = name(seg[1]);\n\n\tif (seg.length > 1 && obj.owner && obj.name) {\n\t\tobj.repo = obj.owner + '/' + obj.name;\n\t} else {\n\t\tvar href = obj.href.split(':');\n\t\tif (href.length === 2 && obj.href.indexOf('//') === -1) {\n\t\t\tobj.repo = obj.repo || href[href.length - 1];\n\t\t\tvar repoSegments = obj.repo.split('/');\n\t\t\tobj.owner = repoSegments[0];\n\t\t\tobj.name = repoSegments[1];\n\n\t\t} else {\n\t\t\tvar match = obj.href.match(/\\/([^/]*)$/);\n\t\t\tobj.owner = match ? match[1] : null;\n\t\t\tobj.repo = null;\n\t\t}\n\n\t\tif (obj.repo && (!obj.owner || !obj.name)) {\n\t\t\tvar segs = obj.repo.split('/');\n\t\t\tif (segs.length === 2) {\n\t\t\t\tobj.owner = segs[0];\n\t\t\t\tobj.name = segs[1];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!obj.branch) {\n\t\tobj.branch = seg[2] || getBranch(obj.path, obj);\n\t\tif (seg.length > 3) {\n\t\t\tobj.filepath = seg.slice(3).join('/');\n\t\t}\n\t}\n\n\tobj.host = obj.host || 'github.com';\n\tobj.owner = obj.owner || null;\n\tobj.name = obj.name || null;\n\tobj.repository = obj.repo;\n\treturn obj;\n}\n\nmodule.exports = function parseGithubUrl(str) {\n\tif (!cache[str]) {\n\t\tcache[str] = parse(str);\n\t}\n\treturn cache[str];\n};\n","import {execSync} from 'node:child_process'\nimport {resolve} from 'node:path'\nimport type {PackageJSON} from '@sanity/parse-package-json'\nimport prettierConfig from '@sanity/prettier-config'\nimport {getLatestVersion} from 'get-latest-version'\nimport {outdent} from 'outdent'\nimport parseGithubUrl from 'parse-github-url'\nimport {format, type Config as PrettierConfig} from 'prettier'\nimport {isRecord} from '../../core/isRecord.ts'\nimport {defineTemplateOption} from '../../core/template/define.ts'\nimport {type PkgTemplate, type PkgTemplateFile} from '../../core/template/types.ts'\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 = getGitUserConfig(cwd)\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 const result = parseGithubUrl(v)\n\n if (!result?.host || !result.owner || !result.name) {\n return 'invalid git url'\n }\n\n return true\n },\n parse: (v) => {\n if (!v) return null\n\n const result = parseGithubUrl(v)\n\n if (!result?.host || !result.owner || !result.name) {\n throw new Error('invalid git url')\n }\n\n return {source: result.host, 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,\n }),\n defineTemplateOption({\n name: 'authorEmail',\n type: 'string',\n description: 'package author email',\n initial: gitConfig.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 pkgJson: PackageJSON & {\n prettier?: '@sanity/prettier-config'\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 'sideEffects': false,\n 'type': 'module',\n 'exports': {\n '.': {\n source: features['typescript'] ? './src/index.ts' : './src/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 'types': undefined,\n 'files': ['dist', 'src'],\n 'scripts': {\n build: 'pkg build --strict --clean --check',\n format: features['prettier'] ? 'prettier --write --cache --ignore-unknown .' : undefined,\n },\n 'lint-staged': features['prettier']\n ? {\n '*': ['prettier --write --cache --ignore-unknown'],\n }\n : undefined,\n 'browserslist': 'extends @sanity/browserslist-config',\n 'prettier': features['prettier'] ? '@sanity/prettier-config' : undefined,\n 'dependencies': {},\n 'devDependencies': {\n '@sanity/tsconfig': features['typescript'] ? '^1' : undefined,\n '@sanity/pkg-utils': '^9',\n '@sanity/prettier-config': features['prettier'] ? '^1' : undefined,\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': '^15',\n 'prettier': features['prettier'] ? '^3' : undefined,\n 'typescript': undefined,\n },\n 'engines': {\n node: '>=20.19 <22 || >=22.12',\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\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 pkgJson.scripts = {\n ...pkgJson.scripts,\n ['ts:check']: 'tsc --noEmit',\n }\n\n const devDependencies = pkgJson.devDependencies\n\n if (isRecord(devDependencies)) {\n devDependencies['typescript'] = '^5.9'\n }\n }\n\n if (features['eslint']) {\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': '^8',\n 'eslint-config-prettier': features['prettier'] ? '^9' : undefined,\n 'eslint-plugin-import': '^2',\n 'eslint-plugin-prettier': features['prettier'] ? '^5' : undefined,\n 'eslint-plugin-simple-import-sort': '^12',\n }\n\n if (features['typescript']) {\n pkgJson.devDependencies = {\n ...pkgJson.devDependencies,\n '@typescript-eslint/eslint-plugin': '^7',\n '@typescript-eslint/parser': '^7',\n }\n\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 prettierFormat(\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 prettierFormat(\n resolve(packagePath, 'tsconfig.settings.json'),\n outdent`\n {\n \"extends\": \"@sanity/tsconfig/strictest\",\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"outDir\": \"./dist\"\n }\n }\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'tsconfig.dist.json',\n contents: await prettierFormat(\n resolve(packagePath, 'tsconfig.dist.json'),\n outdent`\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./src\"],\n \"exclude\": [\"./src/**/*.test.ts\"]\n }\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'tsconfig.json',\n contents: await prettierFormat(\n resolve(packagePath, 'tsconfig.json'),\n outdent`\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./**/*.cjs\", \"./**/*.ts\", \"./**/*.tsx\"],\n \"exclude\": [\"./node_modules\"]\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 prettierFormat(\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 prettierFormat(\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 prettierFormat(\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 prettierFormat(\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 prettierFormat(\n resolve(packagePath, 'package.json'),\n JSON.stringify(pkgJson, null, 2),\n prettierConfig,\n ),\n })\n\n return files\n },\n }\n}\n\nfunction prettierFormat(\n filepath: string,\n input: string,\n prettierOptions: PrettierConfig | undefined,\n) {\n return 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, {range: version})\n\n latestDeps[name] = latestVersion ? `^${latestVersion}` : version\n }\n }\n\n return latestDeps\n}\n\nfunction getGitUserConfig(cwd: string): {user: string | undefined; email: string | undefined} {\n let user: string | undefined\n let email: string | undefined\n\n try {\n user = execSync('git config user.name', {encoding: 'utf8', cwd}).trim() || undefined\n email = execSync('git config user.email', {encoding: 'utf8', cwd}).trim() || undefined\n } catch {\n /* ignore */\n }\n\n return {user, email}\n}\n","import {lstat} from 'node:fs/promises'\nimport {resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport {createFromTemplate} from './core/template/index.ts'\nimport {fileExists} from './fileExists.ts'\nimport {isEmptyDirectory} from './isEmptyDirectory.ts'\nimport {createLogger} from './logger.ts'\nimport {defaultTemplate} from './templates/default/template.ts'\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","import {init} from '../node/init.ts'\nimport {handleError} from './handleError.ts'\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"],"x_google_ignoreList":[3,4,5],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { ExtractorLogLevel } from "@microsoft/api-extractor";
|
|
4
|
+
function printExtractMessages(ctx, messages) {
|
|
5
|
+
let { cwd, logger } = ctx, warnings = messages.filter((msg) => msg.logLevel === ExtractorLogLevel.Warning);
|
|
6
|
+
warnings.length && logger.log();
|
|
7
|
+
for (let msg of warnings) {
|
|
8
|
+
let sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath);
|
|
9
|
+
msg.messageId !== "TS6307" && logger.log([
|
|
10
|
+
chalk.cyan(sourceFilePath || "?"),
|
|
11
|
+
`:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,
|
|
12
|
+
` - ${chalk.yellow("warning")} ${chalk.gray(msg.messageId)}\n`,
|
|
13
|
+
msg.text,
|
|
14
|
+
"\n"
|
|
15
|
+
].join(""));
|
|
16
|
+
}
|
|
17
|
+
let errors = messages.filter((msg) => msg.logLevel === ExtractorLogLevel.Error);
|
|
18
|
+
!warnings.length && errors.length && logger.log("");
|
|
19
|
+
for (let msg of errors) {
|
|
20
|
+
let sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath);
|
|
21
|
+
logger.log([
|
|
22
|
+
chalk.cyan(sourceFilePath || "?"),
|
|
23
|
+
`:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,
|
|
24
|
+
` - ${chalk.red("error")} ${chalk.gray(msg.messageId)}\n`,
|
|
25
|
+
msg.text,
|
|
26
|
+
"\n"
|
|
27
|
+
].join(""));
|
|
28
|
+
}
|
|
29
|
+
errors.length && process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
export { printExtractMessages };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=printExtractMessages-DyaYtByp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printExtractMessages-DyaYtByp.js","names":[],"sources":["../src/node/printExtractMessages.ts"],"sourcesContent":["import path from 'node:path'\nimport {ExtractorLogLevel, type ExtractorMessage} from '@microsoft/api-extractor'\nimport chalk from 'chalk'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\n\nexport function printExtractMessages(ctx: BuildContext, messages: ExtractorMessage[]): void {\n const {cwd, logger} = ctx\n\n const warnings = messages.filter((msg) => msg.logLevel === ExtractorLogLevel.Warning)\n\n if (warnings.length) {\n logger.log()\n }\n\n for (const msg of warnings) {\n const sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath)\n\n if (msg.messageId === 'TS6307') {\n // Ignore this warning:\n // > TS6307: <filename> is not in project file list.\n // > Projects must list all files or use an 'include' pattern.\n continue\n }\n\n logger.log(\n [\n chalk.cyan(sourceFilePath || '?'),\n `:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,\n ` - ${chalk.yellow('warning')} ${chalk.gray(msg.messageId)}\\n`,\n msg.text,\n '\\n',\n ].join(''),\n )\n }\n\n const errors: ExtractorMessage[] = messages.filter(\n (msg) => msg.logLevel === ExtractorLogLevel.Error,\n )\n\n if (!warnings.length && errors.length) {\n logger.log('')\n }\n\n for (const msg of errors) {\n const sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath)\n\n logger.log(\n [\n chalk.cyan(sourceFilePath || '?'),\n `:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,\n ` - ${chalk.red('error')} ${chalk.gray(msg.messageId)}\\n`,\n msg.text,\n '\\n',\n ].join(''),\n )\n }\n\n if (errors.length) {\n process.exit(1)\n }\n}\n"],"mappings":";;;AAKA,SAAgB,qBAAqB,KAAmB,UAAoC;CAC1F,IAAM,EAAC,KAAK,WAAU,KAEhB,WAAW,SAAS,QAAQ,QAAQ,IAAI,aAAa,kBAAkB,OAAO;CAEpF,AAAI,SAAS,UACX,OAAO,IAAI;CAGb,KAAK,IAAM,OAAO,UAAU;EAC1B,IAAM,iBAAiB,IAAI,kBAAkB,KAAK,SAAS,KAAK,IAAI,cAAc;EAE9E,IAAI,cAAc,YAOtB,OAAO,IACL;GACE,MAAM,KAAK,kBAAkB,GAAG;GAChC,IAAI,MAAM,OAAO,IAAI,cAAc,EAAE,GAAG,MAAM,OAAO,IAAI,gBAAgB;GACzE,MAAM,MAAM,OAAO,SAAS,EAAE,GAAG,MAAM,KAAK,IAAI,SAAS,EAAE;GAC3D,IAAI;GACJ;EACF,CAAC,CAAC,KAAK,EAAE,CACX;CACF;CAEA,IAAM,SAA6B,SAAS,QACzC,QAAQ,IAAI,aAAa,kBAAkB,KAC9C;CAEA,AAAI,CAAC,SAAS,UAAU,OAAO,UAC7B,OAAO,IAAI,EAAE;CAGf,KAAK,IAAM,OAAO,QAAQ;EACxB,IAAM,iBAAiB,IAAI,kBAAkB,KAAK,SAAS,KAAK,IAAI,cAAc;EAElF,OAAO,IACL;GACE,MAAM,KAAK,kBAAkB,GAAG;GAChC,IAAI,MAAM,OAAO,IAAI,cAAc,EAAE,GAAG,MAAM,OAAO,IAAI,gBAAgB;GACzE,MAAM,MAAM,IAAI,OAAO,EAAE,GAAG,MAAM,KAAK,IAAI,SAAS,EAAE;GACtD,IAAI;GACJ;EACF,CAAC,CAAC,KAAK,EAAE,CACX;CACF;CAEA,AAAI,OAAO,UACT,QAAQ,KAAK,CAAC;AAElB"}
|