@sanity/pkg-utils 8.1.29 → 8.1.30-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.
- package/dist/_chunks-es/build.js.map +1 -1
- package/dist/_chunks-es/buildAction.js.map +1 -1
- package/dist/_chunks-es/check.js.map +1 -1
- package/dist/_chunks-es/checkAction.js.map +1 -1
- package/dist/_chunks-es/consoleSpy.js +3 -6
- package/dist/_chunks-es/consoleSpy.js.map +1 -1
- package/dist/_chunks-es/index.js.map +1 -1
- package/dist/_chunks-es/init.js.map +1 -1
- package/dist/_chunks-es/initAction.js.map +1 -1
- package/dist/_chunks-es/resolveRolldownConfig.js.map +1 -1
- package/dist/_chunks-es/watch.js.map +1 -1
- package/dist/_chunks-es/watchAction.js.map +1 -1
- package/dist/_chunks-es/watchConfigFiles.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sources":["../../src/node/resolveWatchTasks.ts","../../src/node/watch.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","import path from 'node:path'\nimport {switchMap} from 'rxjs'\nimport {loadConfig} from './core/config/loadConfig'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting'\nimport {createLogger} from './logger'\nimport {resolveBuildContext} from './resolveBuildContext'\nimport {resolveWatchTasks} from './resolveWatchTasks'\nimport {watchTaskHandlers} from './tasks'\nimport {type TaskHandler, type WatchTask} from './tasks/types'\n\n/** @public */\nexport async function watch(options: {\n cwd: string\n strict?: boolean\n tsconfig?: string\n}): Promise<void> {\n const {cwd, strict = false, tsconfig: tsconfigOption} = options\n\n const logger = createLogger()\n\n const {watchConfigFiles} = await import('./watchConfigFiles')\n const configFiles$ = await watchConfigFiles({cwd, logger})\n\n const ctx$ = configFiles$.pipe(\n switchMap(async (configFiles) => {\n const files = configFiles.map((f) => path.relative(cwd, f))\n\n const packageJsonPath = files.find((f) => f === 'package.json')\n\n if (!packageJsonPath) {\n throw new Error('missing package.json')\n }\n\n const config = await loadConfig({cwd})\n const pkg = await loadPkgWithReporting({cwd, logger, strict})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n return resolveBuildContext({config, cwd, logger, pkg, strict, tsconfig})\n }),\n )\n\n ctx$.subscribe(async (ctx) => {\n const watchTasks = resolveWatchTasks(ctx)\n\n for (const task of watchTasks) {\n const handler = watchTaskHandlers[task.type] as TaskHandler<WatchTask, unknown>\n const result$ = handler.exec(ctx, task)\n\n result$.subscribe({\n error: (err) => {\n ctx.logger.error(err)\n ctx.logger.log()\n\n process.exit(1)\n },\n next: (result) => {\n handler.complete(ctx, task, result)\n },\n complete: () => {\n ctx.logger.success(handler.name(ctx, task))\n ctx.logger.log()\n },\n })\n }\n })\n}\n"],"names":[],"mappings":";;;;;AAQO,SAAS,kBAAkB,KAAgC;AAChE,QAAM,EAAC,KAAK,OAAA,IAAU,KAChB,QAAqB,CAAA,GAErB,UAAU,OAAO,QAAQ,IAAI,WAAW,CAAA,CAAE,EAAE;AAAA,IAChD,CAAC,CAAC,OAAO,GAAG,OAAO,EAAC,OAAO,GAAG,IAAA;AAAA,EAAG,GAG7B,UAAwB;AAAA,IAC5B,MAAM;AAAA,IACN,SAAS,CAAA;AAAA,EAAC,GAGN,cAA+C,CAAA;AAErD,WAAS,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,IAAA;AAAA,EAG5B;AAGA,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,EAEL;AAGA,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,EACH;AAGA,aAAW,OAAO,SAAS;AACzB,UAAM,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,EACH;AAGA,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,EACH;AAGA,aAAW,OAAO,SAAS;AACzB,UAAM,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,EACH;AAEA,SAAI,QAAQ,QAAQ,UAClB,MAAM,KAAK,OAAO,GAGpB,MAAM,KAAK,GAAG,OAAO,OAAO,WAAW,CAAC,GAEjC;AACT;ACxHA,eAAsB,MAAM,SAIV;AAChB,QAAM,EAAC,KAAK,SAAS,IAAO,UAAU,mBAAkB,SAElD,SAAS,aAAA,GAET,EAAC,iBAAA,IAAoB,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"watch.js","sources":["../../src/node/resolveWatchTasks.ts","../../src/node/watch.ts"],"sourcesContent":["import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths.ts'\nimport type {DtsWatchTask} from './tasks/dts/types.ts'\nimport type {RollupTaskEntry, RollupWatchTask, WatchTask} from './tasks/types.ts'\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","import path from 'node:path'\nimport {switchMap} from 'rxjs'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {createLogger} from './logger.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {resolveWatchTasks} from './resolveWatchTasks.ts'\nimport {watchTaskHandlers} from './tasks/index.ts'\nimport {type TaskHandler, type WatchTask} from './tasks/types.ts'\n\n/** @public */\nexport async function watch(options: {\n cwd: string\n strict?: boolean\n tsconfig?: string\n}): Promise<void> {\n const {cwd, strict = false, tsconfig: tsconfigOption} = options\n\n const logger = createLogger()\n\n const {watchConfigFiles} = await import('./watchConfigFiles.ts')\n const configFiles$ = await watchConfigFiles({cwd, logger})\n\n const ctx$ = configFiles$.pipe(\n switchMap(async (configFiles) => {\n const files = configFiles.map((f) => path.relative(cwd, f))\n\n const packageJsonPath = files.find((f) => f === 'package.json')\n\n if (!packageJsonPath) {\n throw new Error('missing package.json')\n }\n\n const config = await loadConfig({cwd})\n const pkg = await loadPkgWithReporting({cwd, logger, strict})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n return resolveBuildContext({config, cwd, logger, pkg, strict, tsconfig})\n }),\n )\n\n ctx$.subscribe(async (ctx) => {\n const watchTasks = resolveWatchTasks(ctx)\n\n for (const task of watchTasks) {\n const handler = watchTaskHandlers[task.type] as TaskHandler<WatchTask, unknown>\n const result$ = handler.exec(ctx, task)\n\n result$.subscribe({\n error: (err) => {\n ctx.logger.error(err)\n ctx.logger.log()\n\n process.exit(1)\n },\n next: (result) => {\n handler.complete(ctx, task, result)\n },\n complete: () => {\n ctx.logger.success(handler.name(ctx, task))\n ctx.logger.log()\n },\n })\n }\n })\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchAction.js","sources":["../../src/cli/watchAction.ts"],"sourcesContent":["import {watch} from '../node/watch'\nimport {handleError} from './handleError'\n\nexport async function watchAction(options: {strict?: boolean; tsconfig?: string}): Promise<void> {\n try {\n await watch({\n cwd: process.cwd(),\n strict: options.strict,\n tsconfig: options.tsconfig,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":[],"mappings":";;AAGA,eAAsB,YAAY,SAA+D;AAC/F,MAAI;AACF,UAAM,MAAM;AAAA,MACV,KAAK,QAAQ,IAAA;AAAA,MACb,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,IAAA,CACnB;AAAA,EACH,SAAS,KAAK;AACZ,gBAAY,GAAG;AAAA,EACjB;AACF;"}
|
|
1
|
+
{"version":3,"file":"watchAction.js","sources":["../../src/cli/watchAction.ts"],"sourcesContent":["import {watch} from '../node/watch.ts'\nimport {handleError} from './handleError.ts'\n\nexport async function watchAction(options: {strict?: boolean; tsconfig?: string}): Promise<void> {\n try {\n await watch({\n cwd: process.cwd(),\n strict: options.strict,\n tsconfig: options.tsconfig,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":[],"mappings":";;AAGA,eAAsB,YAAY,SAA+D;AAC/F,MAAI;AACF,UAAM,MAAM;AAAA,MACV,KAAK,QAAQ,IAAA;AAAA,MACb,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,IAAA,CACnB;AAAA,EACH,SAAS,KAAK;AACZ,gBAAY,GAAG;AAAA,EACjB;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchConfigFiles.js","sources":["../../src/node/globFiles.ts","../../src/node/watchFiles.ts","../../src/node/watchConfigFiles.ts"],"sourcesContent":["import path from 'node:path'\nimport {globby} from 'globby'\n\nexport function globFiles(patterns: string[]): Promise<string[]> {\n return globby(patterns.map((pattern) => pattern.split(path.sep).join(path.posix.sep)))\n}\n","import * as chokidar from 'chokidar'\nimport type {EventName} from 'chokidar/handler.js'\nimport {Observable} from 'rxjs'\n\nexport interface FileEvent {\n type: EventName\n file: string\n}\n\nexport function watchFiles(patterns: string[]): Observable<FileEvent> {\n return new Observable((observer) => {\n const watcher = chokidar.watch(patterns, {\n ignoreInitial: true,\n })\n\n function handleFileEvent(type: EventName, file: string | Error) {\n if (type === 'error' || file instanceof Error) {\n observer.error(file)\n } else {\n observer.next({type, file})\n }\n }\n\n watcher.on('all', handleFileEvent)\n\n return () => {\n watcher.off('all', handleFileEvent)\n watcher.close()\n }\n })\n}\n","import path from 'node:path'\nimport type {Observable} from 'rxjs'\nimport {distinctUntilChanged, scan, startWith} from 'rxjs/operators'\nimport {globFiles} from './globFiles'\nimport type {Logger} from './logger'\nimport {watchFiles} from './watchFiles'\n\nexport async function watchConfigFiles(options: {\n cwd: string\n logger: Logger\n}): Promise<Observable<string[]>> {\n const {cwd, logger} = options\n\n const initialFiles = await globFiles([\n path.resolve(cwd, 'package.json'),\n path.resolve(cwd, 'package.config.cjs'),\n path.resolve(cwd, 'package.config.js'),\n path.resolve(cwd, 'package.config.ts'),\n path.resolve(cwd, 'package.config.mjs'),\n path.resolve(cwd, 'package.config.mts'),\n ])\n\n const fileEvent$ = watchFiles([\n path.resolve(cwd, 'package.json'),\n path.resolve(cwd, 'package.config.cjs'),\n path.resolve(cwd, 'package.config.js'),\n path.resolve(cwd, 'package.config.ts'),\n path.resolve(cwd, 'package.config.mjs'),\n path.resolve(cwd, 'package.config.mts'),\n ])\n\n return fileEvent$.pipe(\n scan((files, fileEvent) => {\n if (fileEvent.type === 'add') {\n return files.concat(fileEvent.file)\n }\n\n if (fileEvent.type === 'unlink') {\n return files.filter((f) => f !== fileEvent.file)\n }\n\n if (fileEvent.type === 'change') {\n logger.log(\n '--------------------------------------------------------------------------------',\n )\n logger.info(path.relative(cwd, fileEvent.file), 'changed')\n logger.log('')\n\n return files.slice(0) // trigger update\n }\n\n return files\n }, initialFiles),\n startWith(initialFiles),\n distinctUntilChanged(),\n )\n}\n"],"names":[],"mappings":";;;;;AAGO,SAAS,UAAU,UAAuC;AAC/D,SAAO,OAAO,SAAS,IAAI,CAAC,YAAY,QAAQ,MAAM,KAAK,GAAG,EAAE,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC;AACvF;ACIO,SAAS,WAAW,UAA2C;AACpE,SAAO,IAAI,WAAW,CAAC,aAAa;AAClC,UAAM,UAAU,SAAS,MAAM,UAAU;AAAA,MACvC,eAAe;AAAA,IAAA,CAChB;AAED,aAAS,gBAAgB,MAAiB,MAAsB;AAC1D,eAAS,WAAW,gBAAgB,QACtC,SAAS,MAAM,IAAI,IAEnB,SAAS,KAAK,EAAC,MAAM,MAAK;AAAA,IAE9B;AAEA,WAAA,QAAQ,GAAG,OAAO,eAAe,GAE1B,MAAM;AACX,cAAQ,IAAI,OAAO,eAAe,GAClC,QAAQ,MAAA;AAAA,IACV;AAAA,EACF,CAAC;AACH;ACvBA,eAAsB,iBAAiB,SAGL;AAChC,QAAM,EAAC,KAAK,OAAA,IAAU,SAEhB,eAAe,MAAM,UAAU;AAAA,IACnC,KAAK,QAAQ,KAAK,cAAc;AAAA,IAChC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtC,KAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrC,KAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,EAAA,CACvC;AAWD,SATmB,WAAW;AAAA,IAC5B,KAAK,QAAQ,KAAK,cAAc;AAAA,IAChC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtC,KAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrC,KAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,EAAA,CACvC,EAEiB;AAAA,IAChB,KAAK,CAAC,OAAO,cACP,UAAU,SAAS,QACd,MAAM,OAAO,UAAU,IAAI,IAGhC,UAAU,SAAS,WACd,MAAM,OAAO,CAAC,MAAM,MAAM,UAAU,IAAI,IAG7C,UAAU,SAAS,YACrB,OAAO;AAAA,MACL;AAAA,IAAA,GAEF,OAAO,KAAK,KAAK,SAAS,KAAK,UAAU,IAAI,GAAG,SAAS,GACzD,OAAO,IAAI,EAAE,GAEN,MAAM,MAAM,CAAC,KAGf,OACN,YAAY;AAAA,IACf,UAAU,YAAY;AAAA,IACtB,qBAAA;AAAA,EAAqB;AAEzB;"}
|
|
1
|
+
{"version":3,"file":"watchConfigFiles.js","sources":["../../src/node/globFiles.ts","../../src/node/watchFiles.ts","../../src/node/watchConfigFiles.ts"],"sourcesContent":["import path from 'node:path'\nimport {globby} from 'globby'\n\nexport function globFiles(patterns: string[]): Promise<string[]> {\n return globby(patterns.map((pattern) => pattern.split(path.sep).join(path.posix.sep)))\n}\n","import * as chokidar from 'chokidar'\nimport type {EventName} from 'chokidar/handler.js'\nimport {Observable} from 'rxjs'\n\nexport interface FileEvent {\n type: EventName\n file: string\n}\n\nexport function watchFiles(patterns: string[]): Observable<FileEvent> {\n return new Observable((observer) => {\n const watcher = chokidar.watch(patterns, {\n ignoreInitial: true,\n })\n\n function handleFileEvent(type: EventName, file: string | Error) {\n if (type === 'error' || file instanceof Error) {\n observer.error(file)\n } else {\n observer.next({type, file})\n }\n }\n\n watcher.on('all', handleFileEvent)\n\n return () => {\n watcher.off('all', handleFileEvent)\n watcher.close()\n }\n })\n}\n","import path from 'node:path'\nimport type {Observable} from 'rxjs'\nimport {distinctUntilChanged, scan, startWith} from 'rxjs/operators'\nimport {globFiles} from './globFiles.ts'\nimport type {Logger} from './logger.ts'\nimport {watchFiles} from './watchFiles.ts'\n\nexport async function watchConfigFiles(options: {\n cwd: string\n logger: Logger\n}): Promise<Observable<string[]>> {\n const {cwd, logger} = options\n\n const initialFiles = await globFiles([\n path.resolve(cwd, 'package.json'),\n path.resolve(cwd, 'package.config.cjs'),\n path.resolve(cwd, 'package.config.js'),\n path.resolve(cwd, 'package.config.ts'),\n path.resolve(cwd, 'package.config.mjs'),\n path.resolve(cwd, 'package.config.mts'),\n ])\n\n const fileEvent$ = watchFiles([\n path.resolve(cwd, 'package.json'),\n path.resolve(cwd, 'package.config.cjs'),\n path.resolve(cwd, 'package.config.js'),\n path.resolve(cwd, 'package.config.ts'),\n path.resolve(cwd, 'package.config.mjs'),\n path.resolve(cwd, 'package.config.mts'),\n ])\n\n return fileEvent$.pipe(\n scan((files, fileEvent) => {\n if (fileEvent.type === 'add') {\n return files.concat(fileEvent.file)\n }\n\n if (fileEvent.type === 'unlink') {\n return files.filter((f) => f !== fileEvent.file)\n }\n\n if (fileEvent.type === 'change') {\n logger.log(\n '--------------------------------------------------------------------------------',\n )\n logger.info(path.relative(cwd, fileEvent.file), 'changed')\n logger.log('')\n\n return files.slice(0) // trigger update\n }\n\n return files\n }, initialFiles),\n startWith(initialFiles),\n distinctUntilChanged(),\n )\n}\n"],"names":[],"mappings":";;;;;AAGO,SAAS,UAAU,UAAuC;AAC/D,SAAO,OAAO,SAAS,IAAI,CAAC,YAAY,QAAQ,MAAM,KAAK,GAAG,EAAE,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC;AACvF;ACIO,SAAS,WAAW,UAA2C;AACpE,SAAO,IAAI,WAAW,CAAC,aAAa;AAClC,UAAM,UAAU,SAAS,MAAM,UAAU;AAAA,MACvC,eAAe;AAAA,IAAA,CAChB;AAED,aAAS,gBAAgB,MAAiB,MAAsB;AAC1D,eAAS,WAAW,gBAAgB,QACtC,SAAS,MAAM,IAAI,IAEnB,SAAS,KAAK,EAAC,MAAM,MAAK;AAAA,IAE9B;AAEA,WAAA,QAAQ,GAAG,OAAO,eAAe,GAE1B,MAAM;AACX,cAAQ,IAAI,OAAO,eAAe,GAClC,QAAQ,MAAA;AAAA,IACV;AAAA,EACF,CAAC;AACH;ACvBA,eAAsB,iBAAiB,SAGL;AAChC,QAAM,EAAC,KAAK,OAAA,IAAU,SAEhB,eAAe,MAAM,UAAU;AAAA,IACnC,KAAK,QAAQ,KAAK,cAAc;AAAA,IAChC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtC,KAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrC,KAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,EAAA,CACvC;AAWD,SATmB,WAAW;AAAA,IAC5B,KAAK,QAAQ,KAAK,cAAc;AAAA,IAChC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtC,KAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrC,KAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtC,KAAK,QAAQ,KAAK,oBAAoB;AAAA,EAAA,CACvC,EAEiB;AAAA,IAChB,KAAK,CAAC,OAAO,cACP,UAAU,SAAS,QACd,MAAM,OAAO,UAAU,IAAI,IAGhC,UAAU,SAAS,WACd,MAAM,OAAO,CAAC,MAAM,MAAM,UAAU,IAAI,IAG7C,UAAU,SAAS,YACrB,OAAO;AAAA,MACL;AAAA,IAAA,GAEF,OAAO,KAAK,KAAK,SAAS,KAAK,UAAU,IAAI,GAAG,SAAS,GACzD,OAAO,IAAI,EAAE,GAEN,MAAM,MAAM,CAAC,KAGf,OACN,YAAY;AAAA,IACf,UAAU,YAAY;AAAA,IACtB,qBAAA;AAAA,EAAqB;AAEzB;"}
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cac } from "cac";
|
|
2
|
-
var version = "8.1.
|
|
2
|
+
var version = "8.1.30-canary.0";
|
|
3
3
|
const cli = cac();
|
|
4
4
|
cli.command("", "Check").alias("check").option("--strict", "Strict mode").option("--tsconfig [tsconfig]", "[string] tsconfig.json").action(async (options) => {
|
|
5
5
|
const { checkAction } = await import("./_chunks-es/checkAction.js");
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sources":["../src/cli/index.ts"],"sourcesContent":["import {cac} from 'cac'\nimport {version} from '../../package.json'\n\nconst cli = cac()\n\ncli\n .command('', 'Check')\n .alias('check') // alias to align with the action name\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .action(async (options) => {\n const {checkAction} = await import('./checkAction')\n\n return checkAction(options)\n })\n\ncli\n .command('build', 'Build package')\n .option('--emitDeclarationOnly', 'Emit d.ts only')\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .option('--check', 'Run the check command after build (same as running `pkg build && pkg check`)')\n .option('--clean', 'Clean the dist directory before building')\n .option('--quiet', 'Suppress all output except errors, warnings, and checks')\n .action(async (options) => {\n const {check = false, ...buildOptions} = options\n const {buildAction} = await import('./buildAction')\n\n await buildAction(buildOptions)\n\n if (check) {\n const {checkAction} = await import('./checkAction')\n\n await checkAction({\n strict: options.strict,\n tsconfig: options.tsconfig,\n })\n }\n })\n\ncli.command('init [path]', 'Initialize package').action(async (p) => {\n const {initAction} = await import('./initAction')\n\n return initAction({\n path: p,\n })\n})\n\ncli\n .command('watch', 'Watch package')\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .action(async (options) => {\n const {watchAction} = await import('./watchAction')\n\n return watchAction(options)\n })\n\n// Display help message when `-h` or `--help` appears\ncli.help()\n\n// Display version number when `-v` or `--version` appears\n// It's also used in help message\ncli.version(version)\n\ncli.parse()\n"],"names":[],"mappings":";;AAGA,MAAM,MAAM,IAAA;AAEZ,IACG,QAAQ,IAAI,OAAO,EACnB,MAAM,OAAO,EACb,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,YAAA,IAAe,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sources":["../src/cli/index.ts"],"sourcesContent":["import {cac} from 'cac'\nimport {version} from '../../package.json' with { type: 'json' }\n\nconst cli = cac()\n\ncli\n .command('', 'Check')\n .alias('check') // alias to align with the action name\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .action(async (options) => {\n const {checkAction} = await import('./checkAction.ts')\n\n return checkAction(options)\n })\n\ncli\n .command('build', 'Build package')\n .option('--emitDeclarationOnly', 'Emit d.ts only')\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .option('--check', 'Run the check command after build (same as running `pkg build && pkg check`)')\n .option('--clean', 'Clean the dist directory before building')\n .option('--quiet', 'Suppress all output except errors, warnings, and checks')\n .action(async (options) => {\n const {check = false, ...buildOptions} = options\n const {buildAction} = await import('./buildAction.ts')\n\n await buildAction(buildOptions)\n\n if (check) {\n const {checkAction} = await import('./checkAction.ts')\n\n await checkAction({\n strict: options.strict,\n tsconfig: options.tsconfig,\n })\n }\n })\n\ncli.command('init [path]', 'Initialize package').action(async (p) => {\n const {initAction} = await import('./initAction.ts')\n\n return initAction({\n path: p,\n })\n})\n\ncli\n .command('watch', 'Watch package')\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .action(async (options) => {\n const {watchAction} = await import('./watchAction.ts')\n\n return watchAction(options)\n })\n\n// Display help message when `-h` or `--help` appears\ncli.help()\n\n// Display version number when `-v` or `--version` appears\n// It's also used in help message\ncli.version(version)\n\ncli.parse()\n"],"names":[],"mappings":";;AAGA,MAAM,MAAM,IAAA;AAEZ,IACG,QAAQ,IAAI,OAAO,EACnB,MAAM,OAAO,EACb,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,YAAA,IAAe,MAAM,OAAO,6BAAkB;AAErD,SAAO,YAAY,OAAO;AAC5B,CAAC;AAEH,IACG,QAAQ,SAAS,eAAe,EAChC,OAAO,yBAAyB,gBAAgB,EAChD,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,WAAW,8EAA8E,EAChG,OAAO,WAAW,0CAA0C,EAC5D,OAAO,WAAW,yDAAyD,EAC3E,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,QAAQ,IAAO,GAAG,aAAA,IAAgB,SACnC,EAAC,YAAA,IAAe,MAAM,OAAO,6BAAkB;AAIrD,MAFA,MAAM,YAAY,YAAY,GAE1B,OAAO;AACT,UAAM,EAAC,YAAA,IAAe,MAAM,OAAO,6BAAkB;AAErD,UAAM,YAAY;AAAA,MAChB,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,IAAA,CACnB;AAAA,EACH;AACF,CAAC;AAEH,IAAI,QAAQ,eAAe,oBAAoB,EAAE,OAAO,OAAO,MAAM;AACnE,QAAM,EAAC,WAAA,IAAc,MAAM,OAAO,4BAAiB;AAEnD,SAAO,WAAW;AAAA,IAChB,MAAM;AAAA,EAAA,CACP;AACH,CAAC;AAED,IACG,QAAQ,SAAS,eAAe,EAChC,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,YAAA,IAAe,MAAM,OAAO,6BAAkB;AAErD,SAAO,YAAY,OAAO;AAC5B,CAAC;AAGH,IAAI,KAAA;AAIJ,IAAI,QAAQ,OAAO;AAEnB,IAAI,MAAA;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -294,9 +294,6 @@ interface PkgConfigOptions {
|
|
|
294
294
|
}
|
|
295
295
|
/** @public */
|
|
296
296
|
declare function defineConfig<const T extends PkgConfigOptions>(configOptions: T): T;
|
|
297
|
-
declare global {
|
|
298
|
-
var ___DEV___: boolean;
|
|
299
|
-
}
|
|
300
297
|
/** @alpha */
|
|
301
298
|
declare function loadConfig(options: {
|
|
302
299
|
cwd: string;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/node/core/config/defineConfig.ts"],"sourcesContent":["import type {PkgConfigOptions} from './types'\n\n/** @public */\nexport function defineConfig<const T extends PkgConfigOptions>(configOptions: T): T {\n return configOptions\n}\n"],"names":[],"mappings":";;;;;;;AAGO,SAAS,aAA+C,eAAqB;AAClF,SAAO;AACT;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/node/core/config/defineConfig.ts"],"sourcesContent":["import type {PkgConfigOptions} from './types.ts'\n\n/** @public */\nexport function defineConfig<const T extends PkgConfigOptions>(configOptions: T): T {\n return configOptions\n}\n"],"names":[],"mappings":";;;;;;;AAGO,SAAS,aAA+C,eAAqB;AAClF,SAAO;AACT;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/pkg-utils",
|
|
3
|
-
"version": "8.1.
|
|
3
|
+
"version": "8.1.30-canary.0",
|
|
4
4
|
"description": "Simple utilities for modern npm packages.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity-io",
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
"ts-node": "^10.9.2",
|
|
140
140
|
"typescript": "5.9.3",
|
|
141
141
|
"vitest": "^4.0.5",
|
|
142
|
-
"@sanity/pkg-utils": "8.1.
|
|
142
|
+
"@sanity/pkg-utils": "8.1.30-canary.0"
|
|
143
143
|
},
|
|
144
144
|
"peerDependencies": {
|
|
145
145
|
"babel-plugin-react-compiler": "*",
|
|
@@ -158,8 +158,8 @@
|
|
|
158
158
|
},
|
|
159
159
|
"scripts": {
|
|
160
160
|
"build": "run-s clean build:pkg check:pkg",
|
|
161
|
-
"build:pkg": "
|
|
162
|
-
"check:pkg": "
|
|
161
|
+
"build:pkg": "node scripts/build.ts",
|
|
162
|
+
"check:pkg": "node scripts/check.ts",
|
|
163
163
|
"clean": "rimraf dist test/env/__tmp__",
|
|
164
164
|
"commit": "cz",
|
|
165
165
|
"extract": "sanity-tsdoc etl --outDir etc/api/@sanity/pkg-utils --tsconfig tsconfig.dist.json",
|
|
@@ -172,6 +172,6 @@
|
|
|
172
172
|
"test": "vitest run",
|
|
173
173
|
"test:update-snapshots": "pnpm test run -- --update",
|
|
174
174
|
"typecheck": "tsc --build",
|
|
175
|
-
"watch": "
|
|
175
|
+
"watch": "node scripts/watch.ts"
|
|
176
176
|
}
|
|
177
177
|
}
|