@sanity/pkg-utils 7.4.1-canary.0 → 7.5.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 (75) hide show
  1. package/dist/_chunks-cjs/index.cjs +2022 -260
  2. package/dist/_chunks-cjs/index.cjs.map +1 -1
  3. package/dist/_chunks-es/build.js +106 -17
  4. package/dist/_chunks-es/build.js.map +1 -1
  5. package/dist/_chunks-es/check.js +125 -37
  6. package/dist/_chunks-es/check.js.map +1 -1
  7. package/dist/_chunks-es/consoleSpy.js +541 -0
  8. package/dist/_chunks-es/consoleSpy.js.map +1 -0
  9. package/dist/_chunks-es/index.js +774 -180
  10. package/dist/_chunks-es/index.js.map +1 -1
  11. package/dist/_chunks-es/init.js +493 -9
  12. package/dist/_chunks-es/init.js.map +1 -1
  13. package/dist/_chunks-es/{logger.js → isRecord.js} +15 -2
  14. package/dist/_chunks-es/isRecord.js.map +1 -0
  15. package/dist/_chunks-es/resolveRolldownConfig.js +1 -1
  16. package/dist/_chunks-es/spinner.js +16 -0
  17. package/dist/_chunks-es/spinner.js.map +1 -0
  18. package/dist/_chunks-es/watch.js +115 -9
  19. package/dist/_chunks-es/watch.js.map +1 -1
  20. package/dist/cli.d.ts +1 -1
  21. package/dist/cli.js +1 -1
  22. package/dist/index.d.cts +408 -487
  23. package/dist/index.d.ts +408 -487
  24. package/dist/index.js +7 -4
  25. package/dist/index.js.map +1 -1
  26. package/package.json +2 -2
  27. package/dist/_chunks-cjs/findConfigFile.cjs +0 -24
  28. package/dist/_chunks-cjs/findConfigFile.cjs.map +0 -1
  29. package/dist/_chunks-cjs/index2.cjs +0 -781
  30. package/dist/_chunks-cjs/index2.cjs.map +0 -1
  31. package/dist/_chunks-cjs/index3.cjs +0 -50
  32. package/dist/_chunks-cjs/index3.cjs.map +0 -1
  33. package/dist/_chunks-cjs/printPackageTree.cjs +0 -42
  34. package/dist/_chunks-cjs/printPackageTree.cjs.map +0 -1
  35. package/dist/_chunks-cjs/resolveBuildContext.cjs +0 -176
  36. package/dist/_chunks-cjs/resolveBuildContext.cjs.map +0 -1
  37. package/dist/_chunks-cjs/resolveBuildTasks.cjs +0 -111
  38. package/dist/_chunks-cjs/resolveBuildTasks.cjs.map +0 -1
  39. package/dist/_chunks-cjs/resolveConfigProperty.cjs +0 -6
  40. package/dist/_chunks-cjs/resolveConfigProperty.cjs.map +0 -1
  41. package/dist/_chunks-cjs/resolveWatchTasks.cjs +0 -79
  42. package/dist/_chunks-cjs/resolveWatchTasks.cjs.map +0 -1
  43. package/dist/_chunks-cjs/template.cjs +0 -446
  44. package/dist/_chunks-cjs/template.cjs.map +0 -1
  45. package/dist/_chunks-cjs/validatePkg.cjs +0 -71
  46. package/dist/_chunks-cjs/validatePkg.cjs.map +0 -1
  47. package/dist/_chunks-cjs/watchConfigFiles.cjs +0 -59
  48. package/dist/_chunks-cjs/watchConfigFiles.cjs.map +0 -1
  49. package/dist/_chunks-es/fileExists.js +0 -12
  50. package/dist/_chunks-es/fileExists.js.map +0 -1
  51. package/dist/_chunks-es/findConfigFile.js +0 -23
  52. package/dist/_chunks-es/findConfigFile.js.map +0 -1
  53. package/dist/_chunks-es/index2.js +0 -769
  54. package/dist/_chunks-es/index2.js.map +0 -1
  55. package/dist/_chunks-es/index3.js +0 -51
  56. package/dist/_chunks-es/index3.js.map +0 -1
  57. package/dist/_chunks-es/loadPkgWithReporting.js +0 -100
  58. package/dist/_chunks-es/loadPkgWithReporting.js.map +0 -1
  59. package/dist/_chunks-es/logger.js.map +0 -1
  60. package/dist/_chunks-es/printPackageTree.js +0 -44
  61. package/dist/_chunks-es/printPackageTree.js.map +0 -1
  62. package/dist/_chunks-es/resolveBuildContext.js +0 -177
  63. package/dist/_chunks-es/resolveBuildContext.js.map +0 -1
  64. package/dist/_chunks-es/resolveBuildTasks.js +0 -109
  65. package/dist/_chunks-es/resolveBuildTasks.js.map +0 -1
  66. package/dist/_chunks-es/resolveConfigProperty.js +0 -7
  67. package/dist/_chunks-es/resolveConfigProperty.js.map +0 -1
  68. package/dist/_chunks-es/resolveWatchTasks.js +0 -77
  69. package/dist/_chunks-es/resolveWatchTasks.js.map +0 -1
  70. package/dist/_chunks-es/template.js +0 -449
  71. package/dist/_chunks-es/template.js.map +0 -1
  72. package/dist/_chunks-es/validatePkg.js +0 -72
  73. package/dist/_chunks-es/validatePkg.js.map +0 -1
  74. package/dist/_chunks-es/watchConfigFiles.js +0 -45
  75. package/dist/_chunks-es/watchConfigFiles.js.map +0 -1
@@ -1,15 +1,499 @@
1
- import { readdir, lstat } from "node:fs/promises";
2
- import { resolve } from "node:path";
3
- import { fileExists } from "./fileExists.js";
4
- import { createLogger } from "./logger.js";
1
+ import { writeFile, readdir, lstat } from "node:fs/promises";
2
+ import { relative, resolve, dirname } from "node:path";
3
+ import { mkdirp } from "mkdirp";
4
+ import prompts from "prompts";
5
+ import { isRecord, fileExists, createLogger } from "./isRecord.js";
6
+ import { execSync } from "node:child_process";
7
+ import getLatestVersion from "get-latest-version";
8
+ import gitUrlParse from "git-url-parse";
9
+ import { outdent } from "outdent";
10
+ import { format } from "prettier";
11
+ function defineTemplateOption(option) {
12
+ return option;
13
+ }
14
+ const promptsTypes = {
15
+ string: "text"
16
+ };
17
+ async function createFromTemplate(options) {
18
+ const { cwd, logger, packagePath, template: templateOrResolver } = options, template = typeof templateOrResolver == "function" ? await templateOrResolver({ cwd, logger, packagePath }) : templateOrResolver;
19
+ logger.log("create new package at", relative(cwd, packagePath));
20
+ const templateOptions = {};
21
+ for (const templateOption of template.options) {
22
+ const templateValidate = templateOption.validate, res = await prompts(
23
+ {
24
+ type: promptsTypes[templateOption.type],
25
+ name: templateOption.name,
26
+ message: templateOption.description,
27
+ validate: templateValidate ? (prev) => templateValidate(prev) : void 0,
28
+ initial: typeof templateOption.initial == "function" ? templateOption.initial(templateOptions) : templateOption.initial
29
+ },
30
+ { onCancel: () => process.exit(0) }
31
+ );
32
+ templateOptions[templateOption.name] = templateOption.parse ? templateOption.parse(res[templateOption.name]) : res[templateOption.name];
33
+ }
34
+ const features = {};
35
+ for (const templateFeature of template.features) {
36
+ const res = templateFeature.optional ? await prompts(
37
+ {
38
+ type: "confirm",
39
+ name: "confirm",
40
+ message: `use ${templateFeature.name}?`,
41
+ initial: templateFeature.initial
42
+ },
43
+ { onCancel: () => process.exit(0) }
44
+ ) : void 0;
45
+ features[templateFeature.name] = res?.confirm || !templateFeature.optional;
46
+ }
47
+ const files = await template.getFiles(templateOptions, features);
48
+ files.sort((a, b) => a.name.localeCompare(b.name));
49
+ for (const file of files) {
50
+ const filePath = resolve(packagePath, file.name);
51
+ await mkdirp(dirname(filePath)), await writeFile(filePath, file.contents.trim() + `
52
+ `), logger.success(`wrote ${relative(cwd, filePath)}`);
53
+ }
54
+ }
5
55
  async function isEmptyDirectory(dirPath) {
6
56
  return (await readdir(dirPath)).length === 0;
7
57
  }
58
+ const overridableDefaults = {
59
+ endOfLine: "lf",
60
+ tabWidth: 2,
61
+ useTabs: !1
62
+ }, config = {
63
+ ...overridableDefaults,
64
+ printWidth: 100,
65
+ semi: !1,
66
+ singleQuote: !0,
67
+ quoteProps: "consistent",
68
+ bracketSpacing: !1,
69
+ plugins: ["prettier-plugin-packagejson"],
70
+ overrides: [
71
+ {
72
+ files: ["*.json5"],
73
+ options: {
74
+ quoteProps: "preserve",
75
+ singleQuote: !1
76
+ }
77
+ },
78
+ {
79
+ files: ["*.yml"],
80
+ options: {
81
+ singleQuote: !1
82
+ }
83
+ }
84
+ ]
85
+ }, RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i, defaultTemplate = async ({ cwd, logger, packagePath }) => {
86
+ const gitConfig = getGitUserConfig(cwd);
87
+ return {
88
+ options: [
89
+ {
90
+ name: "repo",
91
+ type: "string",
92
+ description: "git url",
93
+ validate: (v) => {
94
+ if (!v) return !0;
95
+ try {
96
+ return gitUrlParse(v), !0;
97
+ } catch {
98
+ return "invalid git url";
99
+ }
100
+ },
101
+ parse: (v) => {
102
+ if (!v) return null;
103
+ const result = gitUrlParse(v);
104
+ return { source: result.source, owner: result.owner, name: result.name };
105
+ }
106
+ },
107
+ {
108
+ name: "pkgName",
109
+ type: "string",
110
+ description: "package name",
111
+ initial: (options) => options.repo?.name || void 0,
112
+ validate: (v) => v ? RE_NAME.exec(v) ? !0 : "invalid package name" : "package name is required",
113
+ parse: (v) => {
114
+ if (!v)
115
+ throw new Error("package name is required");
116
+ if (!RE_NAME.exec(v))
117
+ throw new Error("invalid package name");
118
+ const [scope, name] = v.split("/");
119
+ return { scope, name, fullName: v };
120
+ }
121
+ },
122
+ {
123
+ name: "description",
124
+ type: "string",
125
+ description: "package description"
126
+ },
127
+ {
128
+ name: "authorName",
129
+ type: "string",
130
+ description: "package author name",
131
+ initial: gitConfig.user
132
+ },
133
+ {
134
+ name: "authorEmail",
135
+ type: "string",
136
+ description: "package author email",
137
+ initial: gitConfig.email
138
+ },
139
+ {
140
+ name: "license",
141
+ type: "string",
142
+ description: "package license",
143
+ initial: "MIT",
144
+ validate: (v) => v ? !0 : "license is required"
145
+ }
146
+ ],
147
+ features: [
148
+ {
149
+ name: "eslint",
150
+ optional: !0,
151
+ initial: !0
152
+ },
153
+ {
154
+ name: "prettier",
155
+ optional: !0,
156
+ initial: !0
157
+ },
158
+ {
159
+ name: "typescript",
160
+ optional: !0,
161
+ initial: !0
162
+ }
163
+ ],
164
+ async getFiles(options, features) {
165
+ const { pkgName, repo } = options, { fullName: name } = pkgName, author = [options.authorName, options.authorEmail && `<${options.authorEmail}>`].filter(Boolean).join(" ") ?? void 0, pkgJson = {
166
+ name,
167
+ version: "0.0.0",
168
+ description: options.description ?? void 0,
169
+ keywords: [],
170
+ homepage: void 0,
171
+ bugs: void 0,
172
+ repository: void 0,
173
+ license: options.license,
174
+ author,
175
+ sideEffects: !1,
176
+ type: "module",
177
+ exports: {
178
+ ".": {
179
+ source: features.typescript ? "./src/index.ts" : "./src/index.js",
180
+ require: "./dist/index.cjs",
181
+ default: "./dist/index.js"
182
+ },
183
+ "./package.json": "./package.json"
184
+ },
185
+ main: "./dist/index.cjs",
186
+ module: "./dist/index.js",
187
+ types: void 0,
188
+ files: ["dist", "src"],
189
+ scripts: {
190
+ build: "pkg build --strict --clean --check",
191
+ format: features.prettier ? "prettier --write --cache --ignore-unknown ." : void 0
192
+ },
193
+ "lint-staged": features.prettier ? {
194
+ "*": ["prettier --write --cache --ignore-unknown"]
195
+ } : void 0,
196
+ browserslist: "extends @sanity/browserslist-config",
197
+ prettier: features.prettier ? "@sanity/prettier-config" : void 0,
198
+ dependencies: {},
199
+ devDependencies: {
200
+ "@sanity/pkg-utils": "^6",
201
+ "@sanity/prettier-config": features.prettier ? "^1" : void 0,
202
+ "@typescript-eslint/eslint-plugin": void 0,
203
+ "@typescript-eslint/parser": void 0,
204
+ eslint: void 0,
205
+ "eslint-config-prettier": void 0,
206
+ "eslint-plugin-import": void 0,
207
+ "eslint-plugin-prettier": void 0,
208
+ "eslint-plugin-simple-import-sort": void 0,
209
+ "lint-staged": "^15",
210
+ prettier: features.prettier ? "^3" : void 0,
211
+ typescript: void 0
212
+ },
213
+ engines: {
214
+ node: ">=18.0.0"
215
+ }
216
+ }, files = [];
217
+ if (files.push({
218
+ name: ".editorconfig",
219
+ contents: outdent`
220
+ root = true
221
+
222
+ [*]
223
+ charset = utf-8
224
+ indent_style = space
225
+ indent_size = 2
226
+ end_of_line = lf
227
+ insert_final_newline = true
228
+ trim_trailing_whitespace = true
229
+ `
230
+ }), files.push({
231
+ name: ".gitignore",
232
+ contents: outdent`
233
+ *.local
234
+ *.log
235
+ *.tgz
236
+
237
+ .DS_Store
238
+ dist
239
+ etc
240
+ node_modules
241
+ `
242
+ }), features.prettier && files.push({
243
+ name: ".prettierignore",
244
+ contents: outdent`
245
+ dist
246
+ pnpm-lock.yaml
247
+ `
248
+ }), repo && (pkgJson.repository = {
249
+ type: "git",
250
+ url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`
251
+ }, pkgJson.bugs = {
252
+ url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`
253
+ }, pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`), features.typescript) {
254
+ pkgJson.types = "./dist/index.d.ts", pkgJson.scripts = {
255
+ ...pkgJson.scripts,
256
+ "ts:check": "tsc --noEmit"
257
+ };
258
+ const devDependencies = pkgJson.devDependencies;
259
+ isRecord(devDependencies) && (devDependencies.typescript = "^5.4");
260
+ }
261
+ if (features.eslint) {
262
+ const eslintConfig = {
263
+ root: !0,
264
+ env: {
265
+ browser: !0,
266
+ es6: !0,
267
+ node: !0
268
+ },
269
+ extends: [
270
+ "eslint:recommended",
271
+ features.prettier ? "plugin:prettier/recommended" : void 0
272
+ ].filter(Boolean),
273
+ parserOptions: {
274
+ ecmaVersion: 2020,
275
+ sourceType: "module"
276
+ },
277
+ plugins: [
278
+ "import",
279
+ "simple-import-sort",
280
+ features.prettier ? "prettier" : void 0
281
+ ].filter(Boolean),
282
+ rules: {
283
+ "no-console": "error",
284
+ "no-shadow": "error",
285
+ "no-warning-comments": ["warn", { location: "start", terms: ["todo", "fixme"] }],
286
+ "quote-props": ["warn", "consistent-as-needed"],
287
+ "simple-import-sort/exports": "warn",
288
+ "simple-import-sort/imports": "warn",
289
+ strict: ["warn", "global"]
290
+ }
291
+ };
292
+ if (files.push({
293
+ name: ".eslintignore",
294
+ contents: outdent`
295
+ dist
296
+ `
297
+ }), pkgJson.scripts = {
298
+ ...pkgJson.scripts,
299
+ lint: features.typescript ? "eslint . --ext .cjs,.js,.ts,.tsx" : "eslint . --ext .cjs,.js"
300
+ }, pkgJson.devDependencies = {
301
+ ...pkgJson.devDependencies,
302
+ eslint: "^8",
303
+ "eslint-config-prettier": features.prettier ? "^9" : void 0,
304
+ "eslint-plugin-import": "^2",
305
+ "eslint-plugin-prettier": features.prettier ? "^5" : void 0,
306
+ "eslint-plugin-simple-import-sort": "^12"
307
+ }, features.typescript) {
308
+ pkgJson.devDependencies = {
309
+ ...pkgJson.devDependencies,
310
+ "@typescript-eslint/eslint-plugin": "^7",
311
+ "@typescript-eslint/parser": "^7"
312
+ };
313
+ const eslintConfigOverride = {
314
+ files: ["**/*.ts", "**/*.tsx"],
315
+ parser: "@typescript-eslint/parser",
316
+ parserOptions: {
317
+ project: ["./tsconfig.json"]
318
+ },
319
+ extends: [
320
+ "eslint:recommended",
321
+ features.prettier ? "plugin:prettier/recommended" : void 0,
322
+ "plugin:@typescript-eslint/eslint-recommended",
323
+ "plugin:@typescript-eslint/recommended"
324
+ ].filter(Boolean),
325
+ plugins: [
326
+ "import",
327
+ "@typescript-eslint",
328
+ "simple-import-sort",
329
+ features.prettier ? "prettier" : void 0
330
+ ].filter(Boolean),
331
+ rules: {
332
+ "@typescript-eslint/explicit-module-boundary-types": "error",
333
+ "@typescript-eslint/interface-name-prefix": "off",
334
+ "@typescript-eslint/member-delimiter-style": "off",
335
+ "@typescript-eslint/no-empty-interface": "off"
336
+ }
337
+ };
338
+ eslintConfig.overrides = [eslintConfigOverride];
339
+ }
340
+ files.push({
341
+ name: ".eslintrc.cjs",
342
+ contents: await prettierFormat(
343
+ resolve(packagePath, ".eslintrc.cjs"),
344
+ outdent`
345
+ 'use strict'
346
+
347
+ /** @type import('eslint').Linter.Config */
348
+ module.exports = ${JSON.stringify(eslintConfig, null, 2)}
349
+ `,
350
+ config
351
+ )
352
+ });
353
+ }
354
+ features.typescript && (files.push({
355
+ name: "tsconfig.settings.json",
356
+ contents: await prettierFormat(
357
+ resolve(packagePath, "tsconfig.settings.json"),
358
+ outdent`
359
+ {
360
+ "extends": "@sanity/pkg-utils/tsconfig/strictest.json",
361
+ "compilerOptions": {
362
+ "rootDir": ".",
363
+ "outDir": "./dist"
364
+ }
365
+ }
366
+ `,
367
+ config
368
+ )
369
+ }), files.push({
370
+ name: "tsconfig.dist.json",
371
+ contents: await prettierFormat(
372
+ resolve(packagePath, "tsconfig.dist.json"),
373
+ outdent`
374
+ {
375
+ "extends": "./tsconfig.settings",
376
+ "include": ["./src"],
377
+ "exclude": ["./src/**/*.test.ts"]
378
+ }
379
+ `,
380
+ config
381
+ )
382
+ }), files.push({
383
+ name: "tsconfig.json",
384
+ contents: await prettierFormat(
385
+ resolve(packagePath, "tsconfig.json"),
386
+ outdent`
387
+ {
388
+ "extends": "./tsconfig.settings",
389
+ "include": ["./**/*.cjs", "./**/*.ts", "./**/*.tsx"],
390
+ "exclude": ["./node_modules"]
391
+ }
392
+ `,
393
+ config
394
+ )
395
+ })), features.typescript ? (files.push({
396
+ name: "package.config.ts",
397
+ contents: await prettierFormat(
398
+ resolve(packagePath, "package.config.ts"),
399
+ outdent`
400
+ import {defineConfig} from '@sanity/pkg-utils'
401
+
402
+ // https://github.com/sanity-io/pkg-utils#configuration
403
+ export default defineConfig({
404
+ // the path to the tsconfig file for distributed builds
405
+ tsconfig: 'tsconfig.dist.json',
406
+ })
407
+ `,
408
+ config
409
+ )
410
+ }), files.push({
411
+ name: "src/index.ts",
412
+ contents: await prettierFormat(
413
+ resolve(packagePath, "src/index.ts"),
414
+ outdent`
415
+ /** @public */
416
+ export function main(): void {
417
+ //
418
+ }
419
+ `,
420
+ config
421
+ )
422
+ })) : (files.push({
423
+ name: "package.config.js",
424
+ contents: await prettierFormat(
425
+ resolve(packagePath, "package.config.js"),
426
+ outdent`
427
+ import {defineConfig} from '@sanity/pkg-utils'
428
+
429
+ export default defineConfig({
430
+ extract: {
431
+ rules: {
432
+ // do not require internal members to be prefixed with \`_\`
433
+ 'ae-internal-missing-underscore': 'off',
434
+ },
435
+ },
436
+ })
437
+ `,
438
+ config
439
+ )
440
+ }), files.push({
441
+ name: "src/index.js",
442
+ contents: await prettierFormat(
443
+ resolve(packagePath, "src/index.js"),
444
+ outdent`
445
+ /** @public */
446
+ export function main() {
447
+ //
448
+ }
449
+ `,
450
+ config
451
+ )
452
+ }));
453
+ try {
454
+ pkgJson.dependencies = await resolveLatestDeps(pkgJson.dependencies ?? {});
455
+ } catch (error) {
456
+ logger.warn(error instanceof Error ? error.message : error);
457
+ }
458
+ try {
459
+ pkgJson.devDependencies = await resolveLatestDeps(pkgJson.devDependencies ?? {});
460
+ } catch (error) {
461
+ logger.warn(error instanceof Error ? error.message : error);
462
+ }
463
+ return files.push({
464
+ name: "package.json",
465
+ contents: await prettierFormat(
466
+ resolve(packagePath, "package.json"),
467
+ JSON.stringify(pkgJson, null, 2),
468
+ config
469
+ )
470
+ }), files;
471
+ }
472
+ };
473
+ };
474
+ function prettierFormat(filepath, input, prettierOptions) {
475
+ return format(input, { ...prettierOptions, plugins: [], filepath });
476
+ }
477
+ async function resolveLatestDeps(deps) {
478
+ const depsEntries = Object.entries(deps), latestDeps = {};
479
+ for (const entry of depsEntries) {
480
+ const [name, version] = entry;
481
+ if (version) {
482
+ const latestVersion = await getLatestVersion(name, version);
483
+ latestDeps[name] = latestVersion ? `^${latestVersion}` : version;
484
+ }
485
+ }
486
+ return latestDeps;
487
+ }
488
+ function getGitUserConfig(cwd) {
489
+ let user, email;
490
+ try {
491
+ user = execSync("git config user.name", { encoding: "utf8", cwd }).trim() || void 0, email = execSync("git config user.email", { encoding: "utf8", cwd }).trim() || void 0;
492
+ } catch {
493
+ }
494
+ return { user, email };
495
+ }
8
496
  async function init(options) {
9
- const [{ createFromTemplate }, { defaultTemplate }] = await Promise.all([
10
- import("./index3.js"),
11
- import("./template.js")
12
- ]);
13
497
  if (!options.cwd)
14
498
  throw new Error("Missing required option: cwd");
15
499
  if (!options.path)
@@ -23,7 +507,6 @@ async function init(options) {
23
507
  });
24
508
  }
25
509
  async function ensurePackagePath(packagePath) {
26
- const { mkdirp } = await import("mkdirp");
27
510
  if (!fileExists(packagePath)) {
28
511
  await mkdirp(packagePath);
29
512
  return;
@@ -34,6 +517,7 @@ async function ensurePackagePath(packagePath) {
34
517
  throw new Error("the package directory is not empty");
35
518
  }
36
519
  export {
520
+ defineTemplateOption,
37
521
  init
38
522
  };
39
523
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sources":["../../src/node/isEmptyDirectory.ts","../../src/node/init.ts"],"sourcesContent":["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 {lstat} from 'node:fs/promises'\nimport {resolve} from 'node:path'\nimport {fileExists} from './fileExists'\nimport {isEmptyDirectory} from './isEmptyDirectory'\nimport {createLogger} from './logger'\n\n/** @public */\nexport async function init(options: {cwd: string; path: string}): Promise<void> {\n const [{createFromTemplate}, {defaultTemplate}] = await Promise.all([\n import('./core/template'),\n import('./templates/default/template'),\n ])\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 {mkdirp} = await import('mkdirp')\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":[],"mappings":";;;;AAEA,eAAsB,iBAAiB,SAAmC;AACxE,UAAQ,MAAM,QAAQ,OAAO,GAAG,WAAW;AAC7C;ACGA,eAAsB,KAAK,SAAqD;AACxE,QAAA,CAAC,EAAC,sBAAqB,EAAC,iBAAgB,IAAI,MAAM,QAAQ,IAAI;AAAA,IAClE,OAAO,aAAiB;AAAA,IACxB,OAAO,eAA8B;AAAA,EAAA,CACtC;AACD,MAAI,CAAC,QAAQ;AACL,UAAA,IAAI,MAAM,8BAA8B;AAGhD,MAAI,CAAC,QAAQ;AACL,UAAA,IAAI,MAAM,+BAA+B;AAG3C,QAAA,SAAS,gBAET,cAAc,QAAQ,QAAQ,KAAK,QAAQ,IAAI;AAErD,QAAM,kBAAkB,WAAW,GAEnC,MAAM,mBAAmB;AAAA,IACvB,KAAK,QAAQ;AAAA,IACb;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EAAA,CACD;AACH;AAEA,eAAe,kBAAkB,aAAoC;AACnE,QAAM,EAAC,OAAA,IAAU,MAAM,OAAO,QAAQ;AAGlC,MAAA,CAFW,WAAW,WAAW,GAExB;AACX,UAAM,OAAO,WAAW;AAExB;AAAA,EAAA;AAKF,MAAI,EAFS,MAAM,MAAM,WAAW,GAAG,YAAY;AAG3C,UAAA,IAAI,MAAM,6CAA6C;AAK3D,MAAA,CAFU,MAAM,iBAAiB,WAAW;AAGxC,UAAA,IAAI,MAAM,oCAAoC;AAExD;"}
1
+ {"version":3,"file":"init.js","sources":["../../src/node/core/template/define.ts","../../src/node/core/template/createFromTemplate.ts","../../src/node/isEmptyDirectory.ts","../../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","../../src/node/init.ts"],"sourcesContent":["import type {PkgTemplateOption} from './types'\n\n/** @public */\nexport function defineTemplateOption<T>(option: PkgTemplateOption<T>): PkgTemplateOption<T> {\n return option\n}\n","import {writeFile} from 'node:fs/promises'\nimport {dirname, relative, resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport prompts from 'prompts'\nimport type {Logger} from '../../logger'\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 {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 {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","import {lstat} from 'node:fs/promises'\nimport {resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport {createFromTemplate} from './core/template'\nimport {fileExists} from './fileExists'\nimport {isEmptyDirectory} from './isEmptyDirectory'\nimport {createLogger} from './logger'\nimport {defaultTemplate} from './templates/default/template'\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":["prettierConfig"],"mappings":"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","x_google_ignoreList":[3]}
@@ -1,4 +1,12 @@
1
+ import { statSync } from "node:fs";
1
2
  import chalk from "chalk";
3
+ function fileExists(filePath) {
4
+ try {
5
+ return statSync(filePath), !0;
6
+ } catch {
7
+ return !1;
8
+ }
9
+ }
2
10
  function createLogger() {
3
11
  return {
4
12
  log: (...args) => {
@@ -18,7 +26,12 @@ function createLogger() {
18
26
  }
19
27
  };
20
28
  }
29
+ function isRecord(value) {
30
+ return !!value && !Array.isArray(value) && typeof value == "object";
31
+ }
21
32
  export {
22
- createLogger
33
+ createLogger,
34
+ fileExists,
35
+ isRecord
23
36
  };
24
- //# sourceMappingURL=logger.js.map
37
+ //# sourceMappingURL=isRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isRecord.js","sources":["../../src/node/fileExists.ts","../../src/node/logger.ts","../../src/node/core/isRecord.ts"],"sourcesContent":["import {statSync} from 'node:fs'\n\n/** @internal */\nexport function fileExists(filePath: string): boolean {\n try {\n statSync(filePath)\n\n return true\n } catch {\n return false\n }\n}\n","// oxlint-disable no-console\nimport chalk from 'chalk'\n\n/** @alpha */\nexport interface Logger {\n log: (...args: unknown[]) => void\n info: (...args: unknown[]) => void\n warn: (...args: unknown[]) => void\n error: (...args: unknown[]) => void\n success: (...args: unknown[]) => void\n}\n\n/** @alpha */\nexport function createLogger(): Logger {\n return {\n log: (...args) => {\n console.log(...args)\n },\n info: (...args) => {\n console.log(chalk.blue('[info]'), ...args)\n },\n warn: (...args) => {\n console.log(chalk.yellow('[warning]'), ...args)\n },\n error: (...args) => {\n console.log(chalk.red('[error]'), ...args)\n },\n success: (...args) => {\n console.log(chalk.green('[success]'), ...args)\n },\n }\n}\n","/** @internal */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && !Array.isArray(value) && typeof value === 'object'\n}\n"],"names":[],"mappings":";;AAGO,SAAS,WAAW,UAA2B;AAChD,MAAA;AACF,WAAA,SAAS,QAAQ,GAEV;AAAA,EAAA,QACD;AACC,WAAA;AAAA,EAAA;AAEX;ACEO,SAAS,eAAuB;AAC9B,SAAA;AAAA,IACL,KAAK,IAAI,SAAS;AACR,cAAA,IAAI,GAAG,IAAI;AAAA,IACrB;AAAA,IACA,MAAM,IAAI,SAAS;AACjB,cAAQ,IAAI,MAAM,KAAK,QAAQ,GAAG,GAAG,IAAI;AAAA,IAC3C;AAAA,IACA,MAAM,IAAI,SAAS;AACjB,cAAQ,IAAI,MAAM,OAAO,WAAW,GAAG,GAAG,IAAI;AAAA,IAChD;AAAA,IACA,OAAO,IAAI,SAAS;AAClB,cAAQ,IAAI,MAAM,IAAI,SAAS,GAAG,GAAG,IAAI;AAAA,IAC3C;AAAA,IACA,SAAS,IAAI,SAAS;AACpB,cAAQ,IAAI,MAAM,MAAM,WAAW,GAAG,GAAG,IAAI;AAAA,IAAA;AAAA,EAEjD;AACF;AC9BO,SAAS,SAAS,OAAkD;AAClE,SAAA,CAAA,CAAQ,SAAU,CAAC,MAAM,QAAQ,KAAK,KAAK,OAAO,SAAU;AACrE;"}
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { dts } from "rolldown-plugin-dts";
3
- import { pkgExtMap } from "./index.js";
3
+ import { pkgExtMap } from "./consoleSpy.js";
4
4
  function resolveRolldownConfig(ctx, buildTask) {
5
5
  const { format, runtime, target } = buildTask, { config, cwd, exports: _exports, external, distPath, logger, pkg, ts } = ctx, outputExt = pkgExtMap[pkg.type || "commonjs"][format], outDir = path.relative(cwd, distPath), pathAliases = Object.fromEntries(
6
6
  Object.entries(ts.config?.options.paths || {}).map(([key, val]) => [key, path.resolve(cwd, ts.config?.options.baseUrl || ".", val[0])])
@@ -0,0 +1,16 @@
1
+ import chalk from "chalk";
2
+ function createSpinner(msg) {
3
+ const startTime = Date.now();
4
+ return console.log(msg), {
5
+ complete: () => {
6
+ console.log(`${chalk.green("[success]")} ${chalk.gray(`${Date.now() - startTime}ms`)}`);
7
+ },
8
+ error: () => {
9
+ console.log(`${chalk.red("[error]")} ${chalk.gray(`${Date.now() - startTime}ms`)}`);
10
+ }
11
+ };
12
+ }
13
+ export {
14
+ createSpinner
15
+ };
16
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sources":["../../src/node/spinner.ts"],"sourcesContent":["// oxlint-disable no-console\nimport chalk from 'chalk'\n\nexport function createSpinner(msg: string): {complete: () => void; error: () => void} {\n const startTime = Date.now()\n\n console.log(msg)\n\n return {\n complete: () => {\n console.log(`${chalk.green('[success]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n error: () => {\n console.log(`${chalk.red('[error]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n }\n}\n"],"names":[],"mappings":";AAGO,SAAS,cAAc,KAAwD;AAC9E,QAAA,YAAY,KAAK,IAAI;AAEnB,SAAA,QAAA,IAAI,GAAG,GAER;AAAA,IACL,UAAU,MAAM;AACd,cAAQ,IAAI,GAAG,MAAM,MAAM,WAAW,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;AAAA,IACxF;AAAA,IACA,OAAO,MAAM;AACX,cAAQ,IAAI,GAAG,MAAM,IAAI,SAAS,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;AAAA,IAAA;AAAA,EAEtF;AACF;"}