@sanity/pkg-utils 7.4.0 → 7.4.1-canary.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.
Files changed (70) hide show
  1. package/dist/_chunks-cjs/findConfigFile.cjs +24 -0
  2. package/dist/_chunks-cjs/findConfigFile.cjs.map +1 -0
  3. package/dist/_chunks-cjs/index.cjs +231 -1910
  4. package/dist/_chunks-cjs/index.cjs.map +1 -1
  5. package/dist/_chunks-cjs/index2.cjs +781 -0
  6. package/dist/_chunks-cjs/index2.cjs.map +1 -0
  7. package/dist/_chunks-cjs/index3.cjs +50 -0
  8. package/dist/_chunks-cjs/index3.cjs.map +1 -0
  9. package/dist/_chunks-cjs/printPackageTree.cjs +42 -0
  10. package/dist/_chunks-cjs/printPackageTree.cjs.map +1 -0
  11. package/dist/_chunks-cjs/resolveBuildContext.cjs +176 -0
  12. package/dist/_chunks-cjs/resolveBuildContext.cjs.map +1 -0
  13. package/dist/_chunks-cjs/resolveBuildTasks.cjs +111 -0
  14. package/dist/_chunks-cjs/resolveBuildTasks.cjs.map +1 -0
  15. package/dist/_chunks-cjs/resolveConfigProperty.cjs +6 -0
  16. package/dist/_chunks-cjs/resolveConfigProperty.cjs.map +1 -0
  17. package/dist/_chunks-cjs/resolveWatchTasks.cjs +79 -0
  18. package/dist/_chunks-cjs/resolveWatchTasks.cjs.map +1 -0
  19. package/dist/_chunks-cjs/template.cjs +446 -0
  20. package/dist/_chunks-cjs/template.cjs.map +1 -0
  21. package/dist/_chunks-cjs/validatePkg.cjs +71 -0
  22. package/dist/_chunks-cjs/validatePkg.cjs.map +1 -0
  23. package/dist/_chunks-cjs/watchConfigFiles.cjs +59 -0
  24. package/dist/_chunks-cjs/watchConfigFiles.cjs.map +1 -0
  25. package/dist/_chunks-es/build.js +7 -107
  26. package/dist/_chunks-es/build.js.map +1 -1
  27. package/dist/_chunks-es/check.js +23 -44
  28. package/dist/_chunks-es/check.js.map +1 -1
  29. package/dist/_chunks-es/fileExists.js +12 -0
  30. package/dist/_chunks-es/fileExists.js.map +1 -0
  31. package/dist/_chunks-es/findConfigFile.js +23 -0
  32. package/dist/_chunks-es/findConfigFile.js.map +1 -0
  33. package/dist/_chunks-es/index.js +180 -754
  34. package/dist/_chunks-es/index.js.map +1 -1
  35. package/dist/_chunks-es/index2.js +769 -0
  36. package/dist/_chunks-es/index2.js.map +1 -0
  37. package/dist/_chunks-es/index3.js +51 -0
  38. package/dist/_chunks-es/index3.js.map +1 -0
  39. package/dist/_chunks-es/init.js +9 -493
  40. package/dist/_chunks-es/init.js.map +1 -1
  41. package/dist/_chunks-es/loadPkgWithReporting.js +100 -0
  42. package/dist/_chunks-es/loadPkgWithReporting.js.map +1 -0
  43. package/dist/_chunks-es/{isRecord.js → logger.js} +2 -15
  44. package/dist/_chunks-es/logger.js.map +1 -0
  45. package/dist/_chunks-es/printPackageTree.js +44 -0
  46. package/dist/_chunks-es/printPackageTree.js.map +1 -0
  47. package/dist/_chunks-es/resolveBuildContext.js +177 -0
  48. package/dist/_chunks-es/resolveBuildContext.js.map +1 -0
  49. package/dist/_chunks-es/resolveBuildTasks.js +109 -0
  50. package/dist/_chunks-es/resolveBuildTasks.js.map +1 -0
  51. package/dist/_chunks-es/resolveConfigProperty.js +7 -0
  52. package/dist/_chunks-es/resolveConfigProperty.js.map +1 -0
  53. package/dist/_chunks-es/resolveRolldownConfig.js +1 -1
  54. package/dist/_chunks-es/resolveWatchTasks.js +77 -0
  55. package/dist/_chunks-es/resolveWatchTasks.js.map +1 -0
  56. package/dist/_chunks-es/template.js +449 -0
  57. package/dist/_chunks-es/template.js.map +1 -0
  58. package/dist/_chunks-es/validatePkg.js +72 -0
  59. package/dist/_chunks-es/validatePkg.js.map +1 -0
  60. package/dist/_chunks-es/watch.js +9 -115
  61. package/dist/_chunks-es/watch.js.map +1 -1
  62. package/dist/_chunks-es/watchConfigFiles.js +45 -0
  63. package/dist/_chunks-es/watchConfigFiles.js.map +1 -0
  64. package/dist/cli.js +1 -1
  65. package/dist/index.js +4 -7
  66. package/dist/index.js.map +1 -1
  67. package/package.json +2 -2
  68. package/dist/_chunks-es/consoleSpy.js +0 -541
  69. package/dist/_chunks-es/consoleSpy.js.map +0 -1
  70. package/dist/_chunks-es/isRecord.js.map +0 -1
@@ -0,0 +1,77 @@
1
+ import path from "node:path";
2
+ import { getTargetPaths } from "./index.js";
3
+ function resolveWatchTasks(ctx) {
4
+ const { pkg, target } = ctx, tasks = [], exports = Object.entries(ctx.exports || {}).map(
5
+ ([_path, exp]) => ({ _path, ...exp })
6
+ ), dtsTask = {
7
+ type: "watch:dts",
8
+ entries: []
9
+ }, rollupTasks = {};
10
+ function addRollupTaskEntry(format, runtime, entry) {
11
+ const buildId = `${format}:${runtime}`;
12
+ rollupTasks[buildId] ? rollupTasks[buildId].entries.push(entry) : rollupTasks[buildId] = {
13
+ type: "watch:js",
14
+ buildId,
15
+ entries: [entry],
16
+ runtime,
17
+ format,
18
+ target: target[runtime]
19
+ };
20
+ }
21
+ for (const exp of exports) {
22
+ const importId = path.join(pkg.name, exp._path);
23
+ exp.source?.endsWith(".ts") && dtsTask.entries.push({
24
+ importId,
25
+ exportPath: exp._path,
26
+ sourcePath: exp.source,
27
+ targetPaths: getTargetPaths(pkg.type, exp)
28
+ }), exp.browser?.source?.endsWith(".ts") && dtsTask.entries.push({
29
+ importId,
30
+ exportPath: exp._path,
31
+ sourcePath: exp.browser.source,
32
+ targetPaths: getTargetPaths(pkg.type, exp.browser)
33
+ }), exp.node?.source?.endsWith(".ts") && dtsTask.entries.push({
34
+ importId,
35
+ exportPath: exp._path,
36
+ sourcePath: exp.node.source,
37
+ targetPaths: getTargetPaths(pkg.type, exp.node)
38
+ });
39
+ }
40
+ for (const exp of exports) {
41
+ const output = exp.require;
42
+ output && addRollupTaskEntry("commonjs", ctx.runtime, {
43
+ path: exp._path,
44
+ source: exp.source,
45
+ output
46
+ });
47
+ }
48
+ for (const exp of exports) {
49
+ const output = exp.browser?.require;
50
+ output && addRollupTaskEntry("commonjs", "browser", {
51
+ path: exp._path,
52
+ source: exp.browser?.source || exp.source,
53
+ output
54
+ });
55
+ }
56
+ for (const exp of exports) {
57
+ const output = exp.import;
58
+ output && addRollupTaskEntry("esm", ctx.runtime, {
59
+ path: exp._path,
60
+ source: exp.source,
61
+ output
62
+ });
63
+ }
64
+ for (const exp of exports) {
65
+ const output = exp.browser?.import;
66
+ output && addRollupTaskEntry("esm", "browser", {
67
+ path: exp._path,
68
+ source: exp.browser?.source || exp.source,
69
+ output
70
+ });
71
+ }
72
+ return dtsTask.entries.length && tasks.push(dtsTask), tasks.push(...Object.values(rollupTasks)), tasks;
73
+ }
74
+ export {
75
+ resolveWatchTasks
76
+ };
77
+ //# sourceMappingURL=resolveWatchTasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveWatchTasks.js","sources":["../../src/node/resolveWatchTasks.ts"],"sourcesContent":["import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types'\nimport type {BuildContext} from './core/contexts/buildContext'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths'\nimport type {DtsWatchTask} from './tasks/dts/types'\nimport type {RollupTaskEntry, RollupWatchTask, WatchTask} from './tasks/types'\n\n/** @internal */\nexport function resolveWatchTasks(ctx: BuildContext): WatchTask[] {\n const {pkg, target} = ctx\n const tasks: WatchTask[] = []\n\n const exports = Object.entries(ctx.exports || {}).map(\n ([_path, exp]) => ({_path, ...exp}) as PkgExport & {_path: string},\n )\n\n const dtsTask: DtsWatchTask = {\n type: 'watch:dts',\n entries: [],\n }\n\n const rollupTasks: Record<string, RollupWatchTask> = {}\n\n function addRollupTaskEntry(format: PkgFormat, runtime: PkgRuntime, entry: RollupTaskEntry) {\n const buildId = `${format}:${runtime}`\n\n if (rollupTasks[buildId]) {\n rollupTasks[buildId].entries.push(entry)\n } else {\n rollupTasks[buildId] = {\n type: 'watch:js',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n\n // Parse `dts` tasks\n for (const exp of exports) {\n const importId = path.join(pkg.name, exp._path)\n\n if (exp.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.source,\n targetPaths: getTargetPaths(pkg.type, exp),\n })\n }\n\n if (exp.browser?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.browser.source,\n targetPaths: getTargetPaths(pkg.type, exp.browser),\n })\n }\n\n if (exp.node?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.node.source,\n targetPaths: getTargetPaths(pkg.type, exp.node),\n })\n }\n }\n\n // Parse rollup:commonjs:* tasks\n for (const exp of exports) {\n const output = exp.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:commonjs:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:* tasks\n for (const exp of exports) {\n const output = exp.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n if (dtsTask.entries.length) {\n tasks.push(dtsTask)\n }\n\n tasks.push(...Object.values(rollupTasks))\n\n return tasks\n}\n"],"names":[],"mappings":";;AAQO,SAAS,kBAAkB,KAAgC;AAChE,QAAM,EAAC,KAAK,OAAM,IAAI,KAChB,QAAqB,CAErB,GAAA,UAAU,OAAO,QAAQ,IAAI,WAAW,CAAA,CAAE,EAAE;AAAA,IAChD,CAAC,CAAC,OAAO,GAAG,OAAO,EAAC,OAAO,GAAG,IAAG;AAAA,KAG7B,UAAwB;AAAA,IAC5B,MAAM;AAAA,IACN,SAAS,CAAA;AAAA,EACX,GAEM,cAA+C,CAAC;AAE7C,WAAA,mBAAmB,QAAmB,SAAqB,OAAwB;AAC1F,UAAM,UAAU,GAAG,MAAM,IAAI,OAAO;AAEhC,gBAAY,OAAO,IACrB,YAAY,OAAO,EAAE,QAAQ,KAAK,KAAK,IAEvC,YAAY,OAAO,IAAI;AAAA,MACrB,MAAM;AAAA,MACN;AAAA,MACA,SAAS,CAAC,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA,QAAQ,OAAO,OAAO;AAAA,IACxB;AAAA,EAAA;AAKJ,aAAW,OAAO,SAAS;AACzB,UAAM,WAAW,KAAK,KAAK,IAAI,MAAM,IAAI,KAAK;AAE1C,QAAI,QAAQ,SAAS,KAAK,KAC5B,QAAQ,QAAQ,KAAK;AAAA,MACnB;AAAA,MACA,YAAY,IAAI;AAAA,MAChB,YAAY,IAAI;AAAA,MAChB,aAAa,eAAe,IAAI,MAAM,GAAG;AAAA,IAAA,CAC1C,GAGC,IAAI,SAAS,QAAQ,SAAS,KAAK,KACrC,QAAQ,QAAQ,KAAK;AAAA,MACnB;AAAA,MACA,YAAY,IAAI;AAAA,MAChB,YAAY,IAAI,QAAQ;AAAA,MACxB,aAAa,eAAe,IAAI,MAAM,IAAI,OAAO;AAAA,IAAA,CAClD,GAGC,IAAI,MAAM,QAAQ,SAAS,KAAK,KAClC,QAAQ,QAAQ,KAAK;AAAA,MACnB;AAAA,MACA,YAAY,IAAI;AAAA,MAChB,YAAY,IAAI,KAAK;AAAA,MACrB,aAAa,eAAe,IAAI,MAAM,IAAI,IAAI;AAAA,IAAA,CAC/C;AAAA,EAAA;AAKL,aAAW,OAAO,SAAS;AACzB,UAAM,SAAS,IAAI;AAEd,cAEL,mBAAmB,YAAY,IAAI,SAAS;AAAA,MAC1C,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI;AAAA,MACZ;AAAA,IAAA,CACD;AAAA,EAAA;AAIH,aAAW,OAAO,SAAS;AACnB,UAAA,SAAS,IAAI,SAAS;AAEvB,cAEL,mBAAmB,YAAY,WAAW;AAAA,MACxC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,SAAS,UAAU,IAAI;AAAA,MACnC;AAAA,IAAA,CACD;AAAA,EAAA;AAIH,aAAW,OAAO,SAAS;AACzB,UAAM,SAAS,IAAI;AAEd,cAEL,mBAAmB,OAAO,IAAI,SAAS;AAAA,MACrC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI;AAAA,MACZ;AAAA,IAAA,CACD;AAAA,EAAA;AAIH,aAAW,OAAO,SAAS;AACnB,UAAA,SAAS,IAAI,SAAS;AAEvB,cAEL,mBAAmB,OAAO,WAAW;AAAA,MACnC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,SAAS,UAAU,IAAI;AAAA,MACnC;AAAA,IAAA,CACD;AAAA,EAAA;AAGH,SAAI,QAAQ,QAAQ,UAClB,MAAM,KAAK,OAAO,GAGpB,MAAM,KAAK,GAAG,OAAO,OAAO,WAAW,CAAC,GAEjC;AACT;"}
@@ -0,0 +1,449 @@
1
+ import { execSync } from "node:child_process";
2
+ import { resolve } from "node:path";
3
+ import getLatestVersion from "get-latest-version";
4
+ import gitUrlParse from "git-url-parse";
5
+ import { outdent } from "outdent";
6
+ import { format } from "prettier";
7
+ import { defineTemplateOption, isRecord } from "./index.js";
8
+ const overridableDefaults = {
9
+ endOfLine: "lf",
10
+ tabWidth: 2,
11
+ useTabs: !1
12
+ }, config = {
13
+ ...overridableDefaults,
14
+ printWidth: 100,
15
+ semi: !1,
16
+ singleQuote: !0,
17
+ quoteProps: "consistent",
18
+ bracketSpacing: !1,
19
+ plugins: ["prettier-plugin-packagejson"],
20
+ overrides: [
21
+ {
22
+ files: ["*.json5"],
23
+ options: {
24
+ quoteProps: "preserve",
25
+ singleQuote: !1
26
+ }
27
+ },
28
+ {
29
+ files: ["*.yml"],
30
+ options: {
31
+ singleQuote: !1
32
+ }
33
+ }
34
+ ]
35
+ }, RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i, defaultTemplate = async ({ cwd, logger, packagePath }) => {
36
+ const gitConfig = getGitUserConfig(cwd);
37
+ return {
38
+ options: [
39
+ defineTemplateOption({
40
+ name: "repo",
41
+ type: "string",
42
+ description: "git url",
43
+ validate: (v) => {
44
+ if (!v) return !0;
45
+ try {
46
+ return gitUrlParse(v), !0;
47
+ } catch {
48
+ return "invalid git url";
49
+ }
50
+ },
51
+ parse: (v) => {
52
+ if (!v) return null;
53
+ const result = gitUrlParse(v);
54
+ return { source: result.source, owner: result.owner, name: result.name };
55
+ }
56
+ }),
57
+ defineTemplateOption({
58
+ name: "pkgName",
59
+ type: "string",
60
+ description: "package name",
61
+ initial: (options) => options.repo?.name || void 0,
62
+ validate: (v) => v ? RE_NAME.exec(v) ? !0 : "invalid package name" : "package name is required",
63
+ parse: (v) => {
64
+ if (!v)
65
+ throw new Error("package name is required");
66
+ if (!RE_NAME.exec(v))
67
+ throw new Error("invalid package name");
68
+ const [scope, name] = v.split("/");
69
+ return { scope, name, fullName: v };
70
+ }
71
+ }),
72
+ defineTemplateOption({
73
+ name: "description",
74
+ type: "string",
75
+ description: "package description"
76
+ }),
77
+ defineTemplateOption({
78
+ name: "authorName",
79
+ type: "string",
80
+ description: "package author name",
81
+ initial: gitConfig.user
82
+ }),
83
+ defineTemplateOption({
84
+ name: "authorEmail",
85
+ type: "string",
86
+ description: "package author email",
87
+ initial: gitConfig.email
88
+ }),
89
+ defineTemplateOption({
90
+ name: "license",
91
+ type: "string",
92
+ description: "package license",
93
+ initial: "MIT",
94
+ validate: (v) => v ? !0 : "license is required"
95
+ })
96
+ ],
97
+ features: [
98
+ {
99
+ name: "eslint",
100
+ optional: !0,
101
+ initial: !0
102
+ },
103
+ {
104
+ name: "prettier",
105
+ optional: !0,
106
+ initial: !0
107
+ },
108
+ {
109
+ name: "typescript",
110
+ optional: !0,
111
+ initial: !0
112
+ }
113
+ ],
114
+ async getFiles(options, features) {
115
+ const { pkgName, repo } = options, { fullName: name } = pkgName, author = [options.authorName, options.authorEmail && `<${options.authorEmail}>`].filter(Boolean).join(" ") ?? void 0, pkgJson = {
116
+ name,
117
+ version: "0.0.0",
118
+ description: options.description ?? void 0,
119
+ keywords: [],
120
+ homepage: void 0,
121
+ bugs: void 0,
122
+ repository: void 0,
123
+ license: options.license,
124
+ author,
125
+ sideEffects: !1,
126
+ type: "module",
127
+ exports: {
128
+ ".": {
129
+ source: features.typescript ? "./src/index.ts" : "./src/index.js",
130
+ require: "./dist/index.cjs",
131
+ default: "./dist/index.js"
132
+ },
133
+ "./package.json": "./package.json"
134
+ },
135
+ main: "./dist/index.cjs",
136
+ module: "./dist/index.js",
137
+ types: void 0,
138
+ files: ["dist", "src"],
139
+ scripts: {
140
+ build: "pkg build --strict --clean --check",
141
+ format: features.prettier ? "prettier --write --cache --ignore-unknown ." : void 0
142
+ },
143
+ "lint-staged": features.prettier ? {
144
+ "*": ["prettier --write --cache --ignore-unknown"]
145
+ } : void 0,
146
+ browserslist: "extends @sanity/browserslist-config",
147
+ prettier: features.prettier ? "@sanity/prettier-config" : void 0,
148
+ dependencies: {},
149
+ devDependencies: {
150
+ "@sanity/pkg-utils": "^6",
151
+ "@sanity/prettier-config": features.prettier ? "^1" : void 0,
152
+ "@typescript-eslint/eslint-plugin": void 0,
153
+ "@typescript-eslint/parser": void 0,
154
+ eslint: void 0,
155
+ "eslint-config-prettier": void 0,
156
+ "eslint-plugin-import": void 0,
157
+ "eslint-plugin-prettier": void 0,
158
+ "eslint-plugin-simple-import-sort": void 0,
159
+ "lint-staged": "^15",
160
+ prettier: features.prettier ? "^3" : void 0,
161
+ typescript: void 0
162
+ },
163
+ engines: {
164
+ node: ">=18.0.0"
165
+ }
166
+ }, files = [];
167
+ if (files.push({
168
+ name: ".editorconfig",
169
+ contents: outdent`
170
+ root = true
171
+
172
+ [*]
173
+ charset = utf-8
174
+ indent_style = space
175
+ indent_size = 2
176
+ end_of_line = lf
177
+ insert_final_newline = true
178
+ trim_trailing_whitespace = true
179
+ `
180
+ }), files.push({
181
+ name: ".gitignore",
182
+ contents: outdent`
183
+ *.local
184
+ *.log
185
+ *.tgz
186
+
187
+ .DS_Store
188
+ dist
189
+ etc
190
+ node_modules
191
+ `
192
+ }), features.prettier && files.push({
193
+ name: ".prettierignore",
194
+ contents: outdent`
195
+ dist
196
+ pnpm-lock.yaml
197
+ `
198
+ }), repo && (pkgJson.repository = {
199
+ type: "git",
200
+ url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`
201
+ }, pkgJson.bugs = {
202
+ url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`
203
+ }, pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`), features.typescript) {
204
+ pkgJson.types = "./dist/index.d.ts", pkgJson.scripts = {
205
+ ...pkgJson.scripts,
206
+ "ts:check": "tsc --noEmit"
207
+ };
208
+ const devDependencies = pkgJson.devDependencies;
209
+ isRecord(devDependencies) && (devDependencies.typescript = "^5.4");
210
+ }
211
+ if (features.eslint) {
212
+ const eslintConfig = {
213
+ root: !0,
214
+ env: {
215
+ browser: !0,
216
+ es6: !0,
217
+ node: !0
218
+ },
219
+ extends: [
220
+ "eslint:recommended",
221
+ features.prettier ? "plugin:prettier/recommended" : void 0
222
+ ].filter(Boolean),
223
+ parserOptions: {
224
+ ecmaVersion: 2020,
225
+ sourceType: "module"
226
+ },
227
+ plugins: [
228
+ "import",
229
+ "simple-import-sort",
230
+ features.prettier ? "prettier" : void 0
231
+ ].filter(Boolean),
232
+ rules: {
233
+ "no-console": "error",
234
+ "no-shadow": "error",
235
+ "no-warning-comments": ["warn", { location: "start", terms: ["todo", "fixme"] }],
236
+ "quote-props": ["warn", "consistent-as-needed"],
237
+ "simple-import-sort/exports": "warn",
238
+ "simple-import-sort/imports": "warn",
239
+ strict: ["warn", "global"]
240
+ }
241
+ };
242
+ if (files.push({
243
+ name: ".eslintignore",
244
+ contents: outdent`
245
+ dist
246
+ `
247
+ }), pkgJson.scripts = {
248
+ ...pkgJson.scripts,
249
+ lint: features.typescript ? "eslint . --ext .cjs,.js,.ts,.tsx" : "eslint . --ext .cjs,.js"
250
+ }, pkgJson.devDependencies = {
251
+ ...pkgJson.devDependencies,
252
+ eslint: "^8",
253
+ "eslint-config-prettier": features.prettier ? "^9" : void 0,
254
+ "eslint-plugin-import": "^2",
255
+ "eslint-plugin-prettier": features.prettier ? "^5" : void 0,
256
+ "eslint-plugin-simple-import-sort": "^12"
257
+ }, features.typescript) {
258
+ pkgJson.devDependencies = {
259
+ ...pkgJson.devDependencies,
260
+ "@typescript-eslint/eslint-plugin": "^7",
261
+ "@typescript-eslint/parser": "^7"
262
+ };
263
+ const eslintConfigOverride = {
264
+ files: ["**/*.ts", "**/*.tsx"],
265
+ parser: "@typescript-eslint/parser",
266
+ parserOptions: {
267
+ project: ["./tsconfig.json"]
268
+ },
269
+ extends: [
270
+ "eslint:recommended",
271
+ features.prettier ? "plugin:prettier/recommended" : void 0,
272
+ "plugin:@typescript-eslint/eslint-recommended",
273
+ "plugin:@typescript-eslint/recommended"
274
+ ].filter(Boolean),
275
+ plugins: [
276
+ "import",
277
+ "@typescript-eslint",
278
+ "simple-import-sort",
279
+ features.prettier ? "prettier" : void 0
280
+ ].filter(Boolean),
281
+ rules: {
282
+ "@typescript-eslint/explicit-module-boundary-types": "error",
283
+ "@typescript-eslint/interface-name-prefix": "off",
284
+ "@typescript-eslint/member-delimiter-style": "off",
285
+ "@typescript-eslint/no-empty-interface": "off"
286
+ }
287
+ };
288
+ eslintConfig.overrides = [eslintConfigOverride];
289
+ }
290
+ files.push({
291
+ name: ".eslintrc.cjs",
292
+ contents: await prettierFormat(
293
+ resolve(packagePath, ".eslintrc.cjs"),
294
+ outdent`
295
+ 'use strict'
296
+
297
+ /** @type import('eslint').Linter.Config */
298
+ module.exports = ${JSON.stringify(eslintConfig, null, 2)}
299
+ `,
300
+ config
301
+ )
302
+ });
303
+ }
304
+ features.typescript && (files.push({
305
+ name: "tsconfig.settings.json",
306
+ contents: await prettierFormat(
307
+ resolve(packagePath, "tsconfig.settings.json"),
308
+ outdent`
309
+ {
310
+ "extends": "@sanity/pkg-utils/tsconfig/strictest.json",
311
+ "compilerOptions": {
312
+ "rootDir": ".",
313
+ "outDir": "./dist"
314
+ }
315
+ }
316
+ `,
317
+ config
318
+ )
319
+ }), files.push({
320
+ name: "tsconfig.dist.json",
321
+ contents: await prettierFormat(
322
+ resolve(packagePath, "tsconfig.dist.json"),
323
+ outdent`
324
+ {
325
+ "extends": "./tsconfig.settings",
326
+ "include": ["./src"],
327
+ "exclude": ["./src/**/*.test.ts"]
328
+ }
329
+ `,
330
+ config
331
+ )
332
+ }), files.push({
333
+ name: "tsconfig.json",
334
+ contents: await prettierFormat(
335
+ resolve(packagePath, "tsconfig.json"),
336
+ outdent`
337
+ {
338
+ "extends": "./tsconfig.settings",
339
+ "include": ["./**/*.cjs", "./**/*.ts", "./**/*.tsx"],
340
+ "exclude": ["./node_modules"]
341
+ }
342
+ `,
343
+ config
344
+ )
345
+ })), features.typescript ? (files.push({
346
+ name: "package.config.ts",
347
+ contents: await prettierFormat(
348
+ resolve(packagePath, "package.config.ts"),
349
+ outdent`
350
+ import {defineConfig} from '@sanity/pkg-utils'
351
+
352
+ // https://github.com/sanity-io/pkg-utils#configuration
353
+ export default defineConfig({
354
+ // the path to the tsconfig file for distributed builds
355
+ tsconfig: 'tsconfig.dist.json',
356
+ })
357
+ `,
358
+ config
359
+ )
360
+ }), files.push({
361
+ name: "src/index.ts",
362
+ contents: await prettierFormat(
363
+ resolve(packagePath, "src/index.ts"),
364
+ outdent`
365
+ /** @public */
366
+ export function main(): void {
367
+ //
368
+ }
369
+ `,
370
+ config
371
+ )
372
+ })) : (files.push({
373
+ name: "package.config.js",
374
+ contents: await prettierFormat(
375
+ resolve(packagePath, "package.config.js"),
376
+ outdent`
377
+ import {defineConfig} from '@sanity/pkg-utils'
378
+
379
+ export default defineConfig({
380
+ extract: {
381
+ rules: {
382
+ // do not require internal members to be prefixed with \`_\`
383
+ 'ae-internal-missing-underscore': 'off',
384
+ },
385
+ },
386
+ })
387
+ `,
388
+ config
389
+ )
390
+ }), files.push({
391
+ name: "src/index.js",
392
+ contents: await prettierFormat(
393
+ resolve(packagePath, "src/index.js"),
394
+ outdent`
395
+ /** @public */
396
+ export function main() {
397
+ //
398
+ }
399
+ `,
400
+ config
401
+ )
402
+ }));
403
+ try {
404
+ pkgJson.dependencies = await resolveLatestDeps(pkgJson.dependencies ?? {});
405
+ } catch (error) {
406
+ logger.warn(error instanceof Error ? error.message : error);
407
+ }
408
+ try {
409
+ pkgJson.devDependencies = await resolveLatestDeps(pkgJson.devDependencies ?? {});
410
+ } catch (error) {
411
+ logger.warn(error instanceof Error ? error.message : error);
412
+ }
413
+ return files.push({
414
+ name: "package.json",
415
+ contents: await prettierFormat(
416
+ resolve(packagePath, "package.json"),
417
+ JSON.stringify(pkgJson, null, 2),
418
+ config
419
+ )
420
+ }), files;
421
+ }
422
+ };
423
+ };
424
+ function prettierFormat(filepath, input, prettierOptions) {
425
+ return format(input, { ...prettierOptions, plugins: [], filepath });
426
+ }
427
+ async function resolveLatestDeps(deps) {
428
+ const depsEntries = Object.entries(deps), latestDeps = {};
429
+ for (const entry of depsEntries) {
430
+ const [name, version] = entry;
431
+ if (version) {
432
+ const latestVersion = await getLatestVersion(name, version);
433
+ latestDeps[name] = latestVersion ? `^${latestVersion}` : version;
434
+ }
435
+ }
436
+ return latestDeps;
437
+ }
438
+ function getGitUserConfig(cwd) {
439
+ let user, email;
440
+ try {
441
+ user = execSync("git config user.name", { encoding: "utf8", cwd }).trim() || void 0, email = execSync("git config user.email", { encoding: "utf8", cwd }).trim() || void 0;
442
+ } catch {
443
+ }
444
+ return { user, email };
445
+ }
446
+ export {
447
+ defaultTemplate
448
+ };
449
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sources":["../../node_modules/.pnpm/@sanity+prettier-config@1.0.4_prettier@3.5.3/node_modules/@sanity/prettier-config/dist/index.js","../../src/node/templates/default/template.ts"],"sourcesContent":["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 {execSync} from 'node:child_process'\nimport {resolve} from 'node:path'\nimport prettierConfig from '@sanity/prettier-config'\nimport getLatestVersion from 'get-latest-version'\nimport gitUrlParse from 'git-url-parse'\nimport {outdent} from 'outdent'\nimport {format, type Config as PrettierConfig} from 'prettier'\nimport {isRecord} from '../../core/isRecord'\nimport type {PackageJSON} from '../../core/pkg/types'\nimport {defineTemplateOption} from '../../core/template/define'\nimport {type PkgTemplate, type PkgTemplateFile} from '../../core/template/types'\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 try {\n gitUrlParse(v)\n\n return true\n } catch {\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,\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/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 --noEmit',\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 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/pkg-utils/tsconfig/strictest.json\",\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, version)\n\n latestDeps[name] = latestVersion ? `^${latestVersion}` : version\n }\n }\n\n return latestDeps\n}\n\nfunction getGitUserConfig(cwd: string): {user?: string; email?: string} {\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"],"names":["prettierConfig"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,72 @@
1
+ import { z } from "zod";
2
+ const pkgSchema = z.object({
3
+ type: z.optional(z.enum(["commonjs", "module"])),
4
+ name: z.string(),
5
+ version: z.string(),
6
+ license: z.string(),
7
+ bin: z.optional(z.record(z.string())),
8
+ dependencies: z.optional(z.record(z.string())),
9
+ devDependencies: z.optional(z.record(z.string())),
10
+ peerDependencies: z.optional(z.record(z.string())),
11
+ source: z.optional(z.string()),
12
+ main: z.optional(z.string()),
13
+ browser: z.optional(z.record(z.string())),
14
+ module: z.optional(z.string()),
15
+ types: z.optional(z.string()),
16
+ exports: z.optional(
17
+ z.record(
18
+ z.union([
19
+ z.custom((val) => /^\.\/.*\.json$/.test(val)),
20
+ z.custom((val) => /^\.\/.*\.css$/.test(val)),
21
+ z.object({
22
+ types: z.optional(z.string()),
23
+ source: z.optional(z.string()),
24
+ browser: z.optional(
25
+ z.object({
26
+ source: z.string(),
27
+ import: z.optional(z.string()),
28
+ require: z.optional(z.string())
29
+ })
30
+ ),
31
+ node: z.optional(
32
+ z.object({
33
+ source: z.optional(z.string()),
34
+ import: z.optional(z.string()),
35
+ require: z.optional(z.string())
36
+ })
37
+ ),
38
+ import: z.optional(z.string()),
39
+ require: z.optional(z.string()),
40
+ default: z.string()
41
+ }),
42
+ z.object({
43
+ types: z.optional(z.string()),
44
+ svelte: z.string(),
45
+ default: z.optional(z.string())
46
+ })
47
+ ])
48
+ )
49
+ ),
50
+ browserslist: z.optional(z.union([z.string(), z.array(z.string())])),
51
+ sideEffects: z.optional(z.union([z.boolean(), z.array(z.string())])),
52
+ // @TODO type this properly
53
+ typesVersions: z.optional(z.any())
54
+ }), typoMap = /* @__PURE__ */ new Map();
55
+ for (const key of pkgSchema.keyof()._def.values)
56
+ typoMap.set(key.toUpperCase(), key);
57
+ function validatePkg(input) {
58
+ const pkg = pkgSchema.parse(input), invalidKey = Object.keys(input).find((key) => {
59
+ const needle = key.toUpperCase();
60
+ return typoMap.has(needle) ? typoMap.get(needle) !== key : !1;
61
+ });
62
+ if (invalidKey)
63
+ throw new TypeError(
64
+ `
65
+ - package.json: "${invalidKey}" is not a valid key. Did you mean "${typoMap.get(invalidKey.toUpperCase())}"?`
66
+ );
67
+ return pkg;
68
+ }
69
+ export {
70
+ validatePkg
71
+ };
72
+ //# sourceMappingURL=validatePkg.js.map