@sanity/pkg-utils 6.8.10-canary.0 → 6.8.10-canary.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks-cjs/init.cjs +25 -52
- package/dist/_chunks-cjs/init.cjs.map +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/index.js +28 -54
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/node/templates/default/template.ts +13 -13
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var fs = require("node:fs/promises"), path = require("node:path"), mkdirp = require("mkdirp"), prompts = require("prompts"), logger = require("./logger.cjs"), getLatestVersion = require("get-latest-version"), gitUrlParse = require("git-url-parse"), outdent = require("outdent"), parseGitConfig = require("parse-git-config"), prettier = require("prettier");
|
|
2
|
+
var fs = require("node:fs/promises"), path = require("node:path"), mkdirp = require("mkdirp"), prompts = require("prompts"), logger = require("./logger.cjs"), prettierConfig = require("@sanity/prettier-config"), getLatestVersion = require("get-latest-version"), gitUrlParse = require("git-url-parse"), outdent = require("outdent"), parseGitConfig = require("parse-git-config"), prettier = require("prettier");
|
|
3
3
|
function _interopDefaultCompat(e) {
|
|
4
4
|
return e && typeof e == "object" && "default" in e ? e : { default: e };
|
|
5
5
|
}
|
|
6
|
-
var prompts__default = /* @__PURE__ */ _interopDefaultCompat(prompts), getLatestVersion__default = /* @__PURE__ */ _interopDefaultCompat(getLatestVersion), gitUrlParse__default = /* @__PURE__ */ _interopDefaultCompat(gitUrlParse), parseGitConfig__default = /* @__PURE__ */ _interopDefaultCompat(parseGitConfig), prettier__default = /* @__PURE__ */ _interopDefaultCompat(prettier);
|
|
6
|
+
var prompts__default = /* @__PURE__ */ _interopDefaultCompat(prompts), prettierConfig__default = /* @__PURE__ */ _interopDefaultCompat(prettierConfig), getLatestVersion__default = /* @__PURE__ */ _interopDefaultCompat(getLatestVersion), gitUrlParse__default = /* @__PURE__ */ _interopDefaultCompat(gitUrlParse), parseGitConfig__default = /* @__PURE__ */ _interopDefaultCompat(parseGitConfig), prettier__default = /* @__PURE__ */ _interopDefaultCompat(prettier);
|
|
7
7
|
const promptsTypes = {
|
|
8
8
|
string: "text"
|
|
9
9
|
};
|
|
@@ -51,34 +51,7 @@ function defineTemplateOption(option) {
|
|
|
51
51
|
async function isEmptyDirectory(dirPath) {
|
|
52
52
|
return (await fs.readdir(dirPath)).length === 0;
|
|
53
53
|
}
|
|
54
|
-
const
|
|
55
|
-
endOfLine: "lf",
|
|
56
|
-
tabWidth: 2,
|
|
57
|
-
useTabs: !1
|
|
58
|
-
}, config = {
|
|
59
|
-
...overridableDefaults,
|
|
60
|
-
printWidth: 100,
|
|
61
|
-
semi: !1,
|
|
62
|
-
singleQuote: !0,
|
|
63
|
-
quoteProps: "consistent",
|
|
64
|
-
bracketSpacing: !1,
|
|
65
|
-
plugins: ["prettier-plugin-packagejson"],
|
|
66
|
-
overrides: [
|
|
67
|
-
{
|
|
68
|
-
files: ["*.json5"],
|
|
69
|
-
options: {
|
|
70
|
-
quoteProps: "preserve",
|
|
71
|
-
singleQuote: !1
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
files: ["*.yml"],
|
|
76
|
-
options: {
|
|
77
|
-
singleQuote: !1
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
]
|
|
81
|
-
}, RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i, defaultTemplate = async ({ cwd, logger: logger$1, packagePath }) => {
|
|
54
|
+
const RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i, defaultTemplate = async ({ cwd, logger: logger$1, packagePath }) => {
|
|
82
55
|
const gitConfig = await parseGitConfig__default.default({ cwd, type: "global" });
|
|
83
56
|
return {
|
|
84
57
|
options: [
|
|
@@ -191,11 +164,12 @@ const overridableDefaults = {
|
|
|
191
164
|
"lint-staged": features.prettier ? {
|
|
192
165
|
"*": ["prettier --write --cache --ignore-unknown"]
|
|
193
166
|
} : void 0,
|
|
194
|
-
prettier: features.prettier ? "@sanity/prettier-config" : void 0,
|
|
195
167
|
browserslist: "extends @sanity/browserslist-config",
|
|
168
|
+
prettier: features.prettier ? "@sanity/prettier-config" : void 0,
|
|
196
169
|
dependencies: {},
|
|
197
170
|
devDependencies: {
|
|
198
|
-
"@sanity/pkg-utils": "
|
|
171
|
+
"@sanity/pkg-utils": "^6",
|
|
172
|
+
"@sanity/prettier-config": features.prettier ? "^1" : void 0,
|
|
199
173
|
"@typescript-eslint/eslint-plugin": void 0,
|
|
200
174
|
"@typescript-eslint/parser": void 0,
|
|
201
175
|
eslint: void 0,
|
|
@@ -203,9 +177,8 @@ const overridableDefaults = {
|
|
|
203
177
|
"eslint-plugin-import": void 0,
|
|
204
178
|
"eslint-plugin-prettier": void 0,
|
|
205
179
|
"eslint-plugin-simple-import-sort": void 0,
|
|
206
|
-
"lint-staged": "
|
|
207
|
-
prettier: features.prettier ? "
|
|
208
|
-
"@sanity/prettier-config": features.prettier ? "*" : void 0,
|
|
180
|
+
"lint-staged": "^15",
|
|
181
|
+
prettier: features.prettier ? "^3" : void 0,
|
|
209
182
|
typescript: void 0
|
|
210
183
|
},
|
|
211
184
|
engines: {
|
|
@@ -254,7 +227,7 @@ const overridableDefaults = {
|
|
|
254
227
|
"ts:check": "tsc --build"
|
|
255
228
|
};
|
|
256
229
|
const devDependencies = pkgJson.devDependencies;
|
|
257
|
-
logger.isRecord(devDependencies) && (devDependencies.typescript = "
|
|
230
|
+
logger.isRecord(devDependencies) && (devDependencies.typescript = "^5.4");
|
|
258
231
|
}
|
|
259
232
|
if (features.eslint) {
|
|
260
233
|
const eslintConfig = {
|
|
@@ -297,16 +270,16 @@ const overridableDefaults = {
|
|
|
297
270
|
lint: features.typescript ? "eslint . --ext .cjs,.js,.ts,.tsx" : "eslint . --ext .cjs,.js"
|
|
298
271
|
}, pkgJson.devDependencies = {
|
|
299
272
|
...pkgJson.devDependencies,
|
|
300
|
-
eslint: "
|
|
301
|
-
"eslint-config-prettier": features.prettier ? "
|
|
302
|
-
"eslint-plugin-
|
|
303
|
-
"eslint-plugin-
|
|
304
|
-
"eslint-plugin-
|
|
273
|
+
eslint: "^8",
|
|
274
|
+
"eslint-config-prettier": features.prettier ? "^9" : void 0,
|
|
275
|
+
"eslint-plugin-import": "^2",
|
|
276
|
+
"eslint-plugin-prettier": features.prettier ? "^5" : void 0,
|
|
277
|
+
"eslint-plugin-simple-import-sort": "^12"
|
|
305
278
|
}, features.typescript) {
|
|
306
279
|
pkgJson.devDependencies = {
|
|
307
280
|
...pkgJson.devDependencies,
|
|
308
|
-
"@typescript-eslint/eslint-plugin": "
|
|
309
|
-
"@typescript-eslint/parser": "
|
|
281
|
+
"@typescript-eslint/eslint-plugin": "^7",
|
|
282
|
+
"@typescript-eslint/parser": "^7"
|
|
310
283
|
};
|
|
311
284
|
const eslintConfigOverride = {
|
|
312
285
|
files: ["**/*.ts", "**/*.tsx"],
|
|
@@ -345,7 +318,7 @@ const overridableDefaults = {
|
|
|
345
318
|
/** @type import('eslint').Linter.Config */
|
|
346
319
|
module.exports = ${JSON.stringify(eslintConfig, null, 2)}
|
|
347
320
|
`,
|
|
348
|
-
|
|
321
|
+
prettierConfig__default.default
|
|
349
322
|
)
|
|
350
323
|
});
|
|
351
324
|
}
|
|
@@ -385,7 +358,7 @@ const overridableDefaults = {
|
|
|
385
358
|
}
|
|
386
359
|
}
|
|
387
360
|
`,
|
|
388
|
-
|
|
361
|
+
prettierConfig__default.default
|
|
389
362
|
)
|
|
390
363
|
}), files.push({
|
|
391
364
|
name: "tsconfig.dist.json",
|
|
@@ -403,7 +376,7 @@ const overridableDefaults = {
|
|
|
403
376
|
}
|
|
404
377
|
}
|
|
405
378
|
`,
|
|
406
|
-
|
|
379
|
+
prettierConfig__default.default
|
|
407
380
|
)
|
|
408
381
|
}), files.push({
|
|
409
382
|
name: "tsconfig.json",
|
|
@@ -423,7 +396,7 @@ const overridableDefaults = {
|
|
|
423
396
|
}
|
|
424
397
|
}
|
|
425
398
|
`,
|
|
426
|
-
|
|
399
|
+
prettierConfig__default.default
|
|
427
400
|
)
|
|
428
401
|
})), features.typescript ? (files.push({
|
|
429
402
|
name: "package.config.ts",
|
|
@@ -438,7 +411,7 @@ const overridableDefaults = {
|
|
|
438
411
|
tsconfig: 'tsconfig.dist.json',
|
|
439
412
|
})
|
|
440
413
|
`,
|
|
441
|
-
|
|
414
|
+
prettierConfig__default.default
|
|
442
415
|
)
|
|
443
416
|
}), files.push({
|
|
444
417
|
name: "src/index.ts",
|
|
@@ -450,7 +423,7 @@ const overridableDefaults = {
|
|
|
450
423
|
//
|
|
451
424
|
}
|
|
452
425
|
`,
|
|
453
|
-
|
|
426
|
+
prettierConfig__default.default
|
|
454
427
|
)
|
|
455
428
|
})) : (files.push({
|
|
456
429
|
name: "package.config.js",
|
|
@@ -468,7 +441,7 @@ const overridableDefaults = {
|
|
|
468
441
|
},
|
|
469
442
|
})
|
|
470
443
|
`,
|
|
471
|
-
|
|
444
|
+
prettierConfig__default.default
|
|
472
445
|
)
|
|
473
446
|
}), files.push({
|
|
474
447
|
name: "src/index.js",
|
|
@@ -480,7 +453,7 @@ const overridableDefaults = {
|
|
|
480
453
|
//
|
|
481
454
|
}
|
|
482
455
|
`,
|
|
483
|
-
|
|
456
|
+
prettierConfig__default.default
|
|
484
457
|
)
|
|
485
458
|
}));
|
|
486
459
|
try {
|
|
@@ -498,7 +471,7 @@ const overridableDefaults = {
|
|
|
498
471
|
contents: await format(
|
|
499
472
|
path.resolve(packagePath, "package.json"),
|
|
500
473
|
JSON.stringify(pkgJson, null, 2),
|
|
501
|
-
|
|
474
|
+
prettierConfig__default.default
|
|
502
475
|
)
|
|
503
476
|
}), files;
|
|
504
477
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.cjs","sources":["../../src/node/core/template/createFromTemplate.ts","../../src/node/core/template/define.ts","../../src/node/isEmptyDirectory.ts","../../node_modules/.pnpm/@sanity+prettier-config@1.0.2_prettier@3.2.5/node_modules/@sanity/prettier-config/dist/index.js","../../src/node/templates/default/template.ts","../../src/node/init.ts"],"sourcesContent":["import {writeFile} from 'node:fs/promises'\nimport {dirname, relative, resolve} from 'node:path'\n\nimport {mkdirp} from 'mkdirp'\nimport prompts from 'prompts'\n\nimport type {Logger} from '../../logger'\nimport type {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 type {PkgTemplateOption} from './types'\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}, 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: [\n {\n files: [\"*.json5\"],\n options: {\n quoteProps: \"preserve\",\n singleQuote: !1\n }\n },\n {\n files: [\"*.yml\"],\n options: {\n singleQuote: !1\n }\n }\n ]\n};\nexport {\n config as default\n};\n//# sourceMappingURL=index.js.map\n","import {resolve} from 'node:path'\n\nimport prettierConfig from '@sanity/prettier-config'\nimport getLatestVersion from 'get-latest-version'\nimport gitUrlParse from 'git-url-parse'\nimport {outdent} from 'outdent'\nimport parseGitConfig from 'parse-git-config'\nimport prettier, {type Config as PrettierConfig} from 'prettier'\n\nimport {\n defineTemplateOption,\n isRecord,\n type PackageJSON,\n type PkgTemplate,\n type PkgTemplateFile,\n} 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 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 'prettier': features['prettier'] ? '@sanity/prettier-config' : undefined,\n 'browserslist': 'extends @sanity/browserslist-config',\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 'prettier': features['prettier'] ? '*' : undefined,\n '@sanity/prettier-config': features['prettier'] ? '*' : undefined,\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\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 --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 'node:fs/promises'\nimport {resolve} from 'node:path'\n\nimport {mkdirp} from 'mkdirp'\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":["logger","relative","prompts","resolve","mkdirp","dirname","writeFile","readdir","parseGitConfig","gitUrlParse","outdent","isRecord","prettierConfig","prettier","getLatestVersion","createLogger","fileExists","lstat"],"mappings":"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","x_google_ignoreList":[3]}
|
|
1
|
+
{"version":3,"file":"init.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 'node:fs/promises'\nimport {dirname, relative, resolve} from 'node:path'\n\nimport {mkdirp} from 'mkdirp'\nimport prompts from 'prompts'\n\nimport type {Logger} from '../../logger'\nimport type {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 type {PkgTemplateOption} from './types'\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","import {resolve} from 'node:path'\n\nimport prettierConfig from '@sanity/prettier-config'\nimport getLatestVersion from 'get-latest-version'\nimport gitUrlParse from 'git-url-parse'\nimport {outdent} from 'outdent'\nimport parseGitConfig from 'parse-git-config'\nimport prettier, {type Config as PrettierConfig} from 'prettier'\n\nimport {\n defineTemplateOption,\n isRecord,\n type PackageJSON,\n type PkgTemplate,\n type PkgTemplateFile,\n} 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 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/pkg-utils': '^6',\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: '>=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\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 --build',\n }\n\n const devDependencies = pkgJson.devDependencies\n\n if (isRecord(devDependencies)) {\n devDependencies['typescript'] = '^5.4'\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': '^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 // 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 'node:fs/promises'\nimport {resolve} from 'node:path'\n\nimport {mkdirp} from 'mkdirp'\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":["logger","relative","prompts","resolve","mkdirp","dirname","writeFile","readdir","parseGitConfig","gitUrlParse","outdent","isRecord","prettierConfig","prettier","getLatestVersion","createLogger","fileExists","lstat"],"mappings":"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"}
|
package/dist/cli.cjs
CHANGED
|
@@ -3,7 +3,7 @@ var cac = require("cac");
|
|
|
3
3
|
function _interopDefaultCompat(e) {
|
|
4
4
|
return e && typeof e == "object" && "default" in e ? e : { default: e };
|
|
5
5
|
}
|
|
6
|
-
var cac__default = /* @__PURE__ */ _interopDefaultCompat(cac), version = "6.8.10-canary.
|
|
6
|
+
var cac__default = /* @__PURE__ */ _interopDefaultCompat(cac), version = "6.8.10-canary.1";
|
|
7
7
|
const cli = cac__default.default();
|
|
8
8
|
cli.command("", "Check").alias("check").option("--strict", "Strict mode").option("--tsconfig [tsconfig]", "[string] tsconfig.json").action(async (options) => {
|
|
9
9
|
const { checkAction } = await Promise.resolve().then(function() {
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { z, ZodError } from "zod";
|
|
|
8
8
|
import chalk from "chalk";
|
|
9
9
|
import fs, { writeFile, readFile, readdir, lstat } from "node:fs/promises";
|
|
10
10
|
import browserslist from "browserslist";
|
|
11
|
-
import config
|
|
11
|
+
import config from "@sanity/browserslist-config";
|
|
12
12
|
import ts from "typescript";
|
|
13
13
|
import { errorMap } from "zod-validation-error";
|
|
14
14
|
import { Observable, switchMap } from "rxjs";
|
|
@@ -33,6 +33,7 @@ import esbuild$1 from "esbuild";
|
|
|
33
33
|
import treeify from "treeify";
|
|
34
34
|
import prettyBytes from "pretty-bytes";
|
|
35
35
|
import prompts from "prompts";
|
|
36
|
+
import prettierConfig from "@sanity/prettier-config";
|
|
36
37
|
import getLatestVersion from "get-latest-version";
|
|
37
38
|
import gitUrlParse from "git-url-parse";
|
|
38
39
|
import { outdent } from "outdent";
|
|
@@ -81,7 +82,7 @@ async function loadConfig(options) {
|
|
|
81
82
|
function resolveConfigProperty(prop, initialValue) {
|
|
82
83
|
return prop ? typeof prop == "function" ? prop(initialValue) : prop : initialValue;
|
|
83
84
|
}
|
|
84
|
-
const DEFAULT_BROWSERSLIST_QUERY = config
|
|
85
|
+
const DEFAULT_BROWSERSLIST_QUERY = config;
|
|
85
86
|
function isRecord(value) {
|
|
86
87
|
return !!value && !Array.isArray(value) && typeof value == "object";
|
|
87
88
|
}
|
|
@@ -1035,7 +1036,7 @@ async function extractTypes(options) {
|
|
|
1035
1036
|
messageCallback(message) {
|
|
1036
1037
|
messages.push(message), message.handled = !0;
|
|
1037
1038
|
}
|
|
1038
|
-
}), typesPath = path.resolve(distPath, filePath), typesBuf = await fs.readFile(typesPath),
|
|
1039
|
+
}), typesPath = path.resolve(distPath, filePath), typesBuf = await fs.readFile(typesPath), prettierConfig2 = await prettier.resolveConfig(typesPath);
|
|
1039
1040
|
await mkdirp(path.dirname(typesPath));
|
|
1040
1041
|
const moduleBlocks = await extractModuleBlocksFromTypes({
|
|
1041
1042
|
extractResult: extractorResult,
|
|
@@ -1043,7 +1044,7 @@ async function extractTypes(options) {
|
|
|
1043
1044
|
}), code = [typesBuf.toString(), ...moduleBlocks].join(`
|
|
1044
1045
|
|
|
1045
1046
|
`), prettyCode = await prettier.format(code, {
|
|
1046
|
-
...
|
|
1047
|
+
...prettierConfig2,
|
|
1047
1048
|
filepath: typesPath
|
|
1048
1049
|
});
|
|
1049
1050
|
for (const expFilePath of filePaths) {
|
|
@@ -1591,34 +1592,7 @@ function printEsbuildMessage(log, msg) {
|
|
|
1591
1592
|
async function isEmptyDirectory(dirPath) {
|
|
1592
1593
|
return (await readdir(dirPath)).length === 0;
|
|
1593
1594
|
}
|
|
1594
|
-
const
|
|
1595
|
-
endOfLine: "lf",
|
|
1596
|
-
tabWidth: 2,
|
|
1597
|
-
useTabs: !1
|
|
1598
|
-
}, config = {
|
|
1599
|
-
...overridableDefaults,
|
|
1600
|
-
printWidth: 100,
|
|
1601
|
-
semi: !1,
|
|
1602
|
-
singleQuote: !0,
|
|
1603
|
-
quoteProps: "consistent",
|
|
1604
|
-
bracketSpacing: !1,
|
|
1605
|
-
plugins: ["prettier-plugin-packagejson"],
|
|
1606
|
-
overrides: [
|
|
1607
|
-
{
|
|
1608
|
-
files: ["*.json5"],
|
|
1609
|
-
options: {
|
|
1610
|
-
quoteProps: "preserve",
|
|
1611
|
-
singleQuote: !1
|
|
1612
|
-
}
|
|
1613
|
-
},
|
|
1614
|
-
{
|
|
1615
|
-
files: ["*.yml"],
|
|
1616
|
-
options: {
|
|
1617
|
-
singleQuote: !1
|
|
1618
|
-
}
|
|
1619
|
-
}
|
|
1620
|
-
]
|
|
1621
|
-
}, RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i, defaultTemplate = async ({ cwd, logger, packagePath }) => {
|
|
1595
|
+
const RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i, defaultTemplate = async ({ cwd, logger, packagePath }) => {
|
|
1622
1596
|
const gitConfig = await parseGitConfig({ cwd, type: "global" });
|
|
1623
1597
|
return {
|
|
1624
1598
|
options: [
|
|
@@ -1731,11 +1705,12 @@ const overridableDefaults = {
|
|
|
1731
1705
|
"lint-staged": features.prettier ? {
|
|
1732
1706
|
"*": ["prettier --write --cache --ignore-unknown"]
|
|
1733
1707
|
} : void 0,
|
|
1734
|
-
prettier: features.prettier ? "@sanity/prettier-config" : void 0,
|
|
1735
1708
|
browserslist: "extends @sanity/browserslist-config",
|
|
1709
|
+
prettier: features.prettier ? "@sanity/prettier-config" : void 0,
|
|
1736
1710
|
dependencies: {},
|
|
1737
1711
|
devDependencies: {
|
|
1738
|
-
"@sanity/pkg-utils": "
|
|
1712
|
+
"@sanity/pkg-utils": "^6",
|
|
1713
|
+
"@sanity/prettier-config": features.prettier ? "^1" : void 0,
|
|
1739
1714
|
"@typescript-eslint/eslint-plugin": void 0,
|
|
1740
1715
|
"@typescript-eslint/parser": void 0,
|
|
1741
1716
|
eslint: void 0,
|
|
@@ -1743,9 +1718,8 @@ const overridableDefaults = {
|
|
|
1743
1718
|
"eslint-plugin-import": void 0,
|
|
1744
1719
|
"eslint-plugin-prettier": void 0,
|
|
1745
1720
|
"eslint-plugin-simple-import-sort": void 0,
|
|
1746
|
-
"lint-staged": "
|
|
1747
|
-
prettier: features.prettier ? "
|
|
1748
|
-
"@sanity/prettier-config": features.prettier ? "*" : void 0,
|
|
1721
|
+
"lint-staged": "^15",
|
|
1722
|
+
prettier: features.prettier ? "^3" : void 0,
|
|
1749
1723
|
typescript: void 0
|
|
1750
1724
|
},
|
|
1751
1725
|
engines: {
|
|
@@ -1794,7 +1768,7 @@ const overridableDefaults = {
|
|
|
1794
1768
|
"ts:check": "tsc --build"
|
|
1795
1769
|
};
|
|
1796
1770
|
const devDependencies = pkgJson.devDependencies;
|
|
1797
|
-
isRecord(devDependencies) && (devDependencies.typescript = "
|
|
1771
|
+
isRecord(devDependencies) && (devDependencies.typescript = "^5.4");
|
|
1798
1772
|
}
|
|
1799
1773
|
if (features.eslint) {
|
|
1800
1774
|
const eslintConfig = {
|
|
@@ -1837,16 +1811,16 @@ const overridableDefaults = {
|
|
|
1837
1811
|
lint: features.typescript ? "eslint . --ext .cjs,.js,.ts,.tsx" : "eslint . --ext .cjs,.js"
|
|
1838
1812
|
}, pkgJson.devDependencies = {
|
|
1839
1813
|
...pkgJson.devDependencies,
|
|
1840
|
-
eslint: "
|
|
1841
|
-
"eslint-config-prettier": features.prettier ? "
|
|
1842
|
-
"eslint-plugin-
|
|
1843
|
-
"eslint-plugin-
|
|
1844
|
-
"eslint-plugin-
|
|
1814
|
+
eslint: "^8",
|
|
1815
|
+
"eslint-config-prettier": features.prettier ? "^9" : void 0,
|
|
1816
|
+
"eslint-plugin-import": "^2",
|
|
1817
|
+
"eslint-plugin-prettier": features.prettier ? "^5" : void 0,
|
|
1818
|
+
"eslint-plugin-simple-import-sort": "^12"
|
|
1845
1819
|
}, features.typescript) {
|
|
1846
1820
|
pkgJson.devDependencies = {
|
|
1847
1821
|
...pkgJson.devDependencies,
|
|
1848
|
-
"@typescript-eslint/eslint-plugin": "
|
|
1849
|
-
"@typescript-eslint/parser": "
|
|
1822
|
+
"@typescript-eslint/eslint-plugin": "^7",
|
|
1823
|
+
"@typescript-eslint/parser": "^7"
|
|
1850
1824
|
};
|
|
1851
1825
|
const eslintConfigOverride = {
|
|
1852
1826
|
files: ["**/*.ts", "**/*.tsx"],
|
|
@@ -1885,7 +1859,7 @@ const overridableDefaults = {
|
|
|
1885
1859
|
/** @type import('eslint').Linter.Config */
|
|
1886
1860
|
module.exports = ${JSON.stringify(eslintConfig, null, 2)}
|
|
1887
1861
|
`,
|
|
1888
|
-
|
|
1862
|
+
prettierConfig
|
|
1889
1863
|
)
|
|
1890
1864
|
});
|
|
1891
1865
|
}
|
|
@@ -1925,7 +1899,7 @@ const overridableDefaults = {
|
|
|
1925
1899
|
}
|
|
1926
1900
|
}
|
|
1927
1901
|
`,
|
|
1928
|
-
|
|
1902
|
+
prettierConfig
|
|
1929
1903
|
)
|
|
1930
1904
|
}), files.push({
|
|
1931
1905
|
name: "tsconfig.dist.json",
|
|
@@ -1943,7 +1917,7 @@ const overridableDefaults = {
|
|
|
1943
1917
|
}
|
|
1944
1918
|
}
|
|
1945
1919
|
`,
|
|
1946
|
-
|
|
1920
|
+
prettierConfig
|
|
1947
1921
|
)
|
|
1948
1922
|
}), files.push({
|
|
1949
1923
|
name: "tsconfig.json",
|
|
@@ -1963,7 +1937,7 @@ const overridableDefaults = {
|
|
|
1963
1937
|
}
|
|
1964
1938
|
}
|
|
1965
1939
|
`,
|
|
1966
|
-
|
|
1940
|
+
prettierConfig
|
|
1967
1941
|
)
|
|
1968
1942
|
})), features.typescript ? (files.push({
|
|
1969
1943
|
name: "package.config.ts",
|
|
@@ -1978,7 +1952,7 @@ const overridableDefaults = {
|
|
|
1978
1952
|
tsconfig: 'tsconfig.dist.json',
|
|
1979
1953
|
})
|
|
1980
1954
|
`,
|
|
1981
|
-
|
|
1955
|
+
prettierConfig
|
|
1982
1956
|
)
|
|
1983
1957
|
}), files.push({
|
|
1984
1958
|
name: "src/index.ts",
|
|
@@ -1990,7 +1964,7 @@ const overridableDefaults = {
|
|
|
1990
1964
|
//
|
|
1991
1965
|
}
|
|
1992
1966
|
`,
|
|
1993
|
-
|
|
1967
|
+
prettierConfig
|
|
1994
1968
|
)
|
|
1995
1969
|
})) : (files.push({
|
|
1996
1970
|
name: "package.config.js",
|
|
@@ -2008,7 +1982,7 @@ const overridableDefaults = {
|
|
|
2008
1982
|
},
|
|
2009
1983
|
})
|
|
2010
1984
|
`,
|
|
2011
|
-
|
|
1985
|
+
prettierConfig
|
|
2012
1986
|
)
|
|
2013
1987
|
}), files.push({
|
|
2014
1988
|
name: "src/index.js",
|
|
@@ -2020,7 +1994,7 @@ const overridableDefaults = {
|
|
|
2020
1994
|
//
|
|
2021
1995
|
}
|
|
2022
1996
|
`,
|
|
2023
|
-
|
|
1997
|
+
prettierConfig
|
|
2024
1998
|
)
|
|
2025
1999
|
}));
|
|
2026
2000
|
try {
|
|
@@ -2038,7 +2012,7 @@ const overridableDefaults = {
|
|
|
2038
2012
|
contents: await format(
|
|
2039
2013
|
resolve(packagePath, "package.json"),
|
|
2040
2014
|
JSON.stringify(pkgJson, null, 2),
|
|
2041
|
-
|
|
2015
|
+
prettierConfig
|
|
2042
2016
|
)
|
|
2043
2017
|
}), files;
|
|
2044
2018
|
}
|