@sanity/cli-core 1.2.1 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/SanityCommand.js +3 -3
  2. package/dist/SanityCommand.js.map +1 -1
  3. package/dist/{index.d.ts → _exports/index.d.ts} +247 -124
  4. package/dist/_exports/index.js +40 -0
  5. package/dist/_exports/index.js.map +1 -0
  6. package/dist/config/cli/schemas.js +50 -50
  7. package/dist/config/cli/schemas.js.map +1 -1
  8. package/dist/config/findProjectRoot.js +3 -1
  9. package/dist/config/findProjectRoot.js.map +1 -1
  10. package/dist/config/findProjectRootSync.js +3 -1
  11. package/dist/config/findProjectRootSync.js.map +1 -1
  12. package/dist/config/studio/readStudioConfig.js +13 -11
  13. package/dist/config/studio/readStudioConfig.js.map +1 -1
  14. package/dist/config/studio/readStudioConfig.worker.js +1 -1
  15. package/dist/config/studio/readStudioConfig.worker.js.map +1 -1
  16. package/dist/exitCodes.js +17 -0
  17. package/dist/exitCodes.js.map +1 -0
  18. package/dist/services/apiClient.js +2 -2
  19. package/dist/services/apiClient.js.map +1 -1
  20. package/dist/services/cliTokenCache.js +25 -0
  21. package/dist/services/cliTokenCache.js.map +1 -0
  22. package/dist/services/cliUserConfig.js +89 -48
  23. package/dist/services/cliUserConfig.js.map +1 -1
  24. package/dist/services/getCliToken.js +12 -7
  25. package/dist/services/getCliToken.js.map +1 -1
  26. package/dist/{util → telemetry}/getCliTelemetry.js +1 -1
  27. package/dist/telemetry/getCliTelemetry.js.map +1 -0
  28. package/dist/telemetry/noopTelemetry.js +23 -0
  29. package/dist/telemetry/noopTelemetry.js.map +1 -0
  30. package/dist/telemetry/readNDJSON.js.map +1 -0
  31. package/dist/util/environment/getStudioEnvironmentVariables.js +3 -1
  32. package/dist/util/environment/getStudioEnvironmentVariables.js.map +1 -1
  33. package/dist/util/readJsonFileSync.js +26 -0
  34. package/dist/util/readJsonFileSync.js.map +1 -0
  35. package/dist/util/readPackageJson.js +17 -17
  36. package/dist/util/readPackageJson.js.map +1 -1
  37. package/dist/util/resolveLocalPackage.js +6 -2
  38. package/dist/util/resolveLocalPackage.js.map +1 -1
  39. package/dist/util/writeJsonFileSync.js +19 -0
  40. package/dist/util/writeJsonFileSync.js.map +1 -0
  41. package/package.json +22 -25
  42. package/dist/index.js +0 -39
  43. package/dist/index.js.map +0 -1
  44. package/dist/util/getCliTelemetry.js.map +0 -1
  45. package/dist/util/getUserConfig.js +0 -15
  46. package/dist/util/getUserConfig.js.map +0 -1
  47. package/dist/util/readNDJSON.js.map +0 -1
  48. package/dist/util/writeJsonFile.js +0 -19
  49. package/dist/util/writeJsonFile.js.map +0 -1
  50. /package/dist/{util → telemetry}/readNDJSON.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/cli-core",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "description": "Sanity CLI core package",
5
5
  "keywords": [
6
6
  "cli",
@@ -21,16 +21,17 @@
21
21
  "directory": "packages/@sanity/cli-core"
22
22
  },
23
23
  "files": [
24
- "./dist"
24
+ "./dist",
25
+ "!./dist/**/__tests__"
25
26
  ],
26
27
  "type": "module",
27
28
  "sideEffects": false,
28
- "main": "./dist/index.js",
29
- "types": "dist/index.d.ts",
29
+ "main": "./dist/_exports/index.js",
30
+ "types": "dist/_exports/index.d.ts",
30
31
  "exports": {
31
32
  ".": {
32
- "source": "./src/index.ts",
33
- "default": "./dist/index.js"
33
+ "source": "./src/_exports/index.ts",
34
+ "default": "./dist/_exports/index.js"
34
35
  },
35
36
  "./ux": {
36
37
  "source": "./src/_exports/ux.ts",
@@ -51,53 +52,49 @@
51
52
  },
52
53
  "dependencies": {
53
54
  "@inquirer/prompts": "^8.3.0",
54
- "@oclif/core": "^4.10.2",
55
+ "@oclif/core": "^4.10.5",
55
56
  "@rexxars/jiti": "^2.6.2",
56
- "@sanity/client": "^7.20.0",
57
+ "@sanity/client": "^7.21.0",
57
58
  "babel-plugin-react-compiler": "^1.0.0",
58
59
  "boxen": "^8.0.1",
59
- "configstore": "^7.0.0",
60
60
  "debug": "^4.4.3",
61
61
  "get-it": "^8.7.0",
62
- "get-tsconfig": "^4.13.6",
62
+ "get-tsconfig": "^4.13.7",
63
63
  "import-meta-resolve": "^4.2.0",
64
- "jsdom": "^29.0.0",
64
+ "jsdom": "^29.0.2",
65
65
  "json-lexer": "^1.2.0",
66
66
  "log-symbols": "^7.0.1",
67
67
  "ora": "^9.0.0",
68
68
  "read-package-up": "^12.0.0",
69
69
  "rxjs": "^7.8.2",
70
70
  "tsx": "^4.21.0",
71
- "vite": "^7.3.1",
71
+ "vite": "^7.3.2",
72
72
  "vite-node": "^5.3.0",
73
73
  "zod": "^4.3.6"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@eslint/compat": "^2.0.3",
77
- "@sanity/pkg-utils": "^10.4.11",
78
- "@sanity/telemetry": "^0.8.1",
79
- "@swc/cli": "^0.8.0",
80
- "@swc/core": "^1.15.18",
77
+ "@sanity/pkg-utils": "^10.4.14",
78
+ "@sanity/telemetry": "^0.9.0",
79
+ "@swc/cli": "^0.8.1",
80
+ "@swc/core": "^1.15.24",
81
81
  "@types/debug": "^4.1.13",
82
82
  "@types/jsdom": "^28.0.1",
83
- "@types/node": "^20.19.37",
84
- "eslint": "^9.39.4",
83
+ "@types/node": "^20.19.39",
84
+ "eslint": "^10.1.0",
85
85
  "publint": "^0.3.18",
86
- "sanity": "^5.17.1",
86
+ "sanity": "^5.20.0",
87
87
  "typescript": "^5.9.3",
88
- "vitest": "^4.1.0",
88
+ "vitest": "^4.1.2",
89
89
  "@repo/package.config": "0.0.1",
90
90
  "@repo/tsconfig": "3.70.0",
91
- "@sanity/eslint-config-cli": "1.0.1"
92
- },
93
- "peerDependencies": {
94
- "@sanity/telemetry": ">=0.8.1 <0.9.0"
91
+ "@sanity/eslint-config-cli": "1.1.0"
95
92
  },
96
93
  "engines": {
97
94
  "node": ">=20.19.1 <22 || >=22.12"
98
95
  },
99
96
  "scripts": {
100
- "build": "swc --delete-dir-on-start --strip-leading-paths --out-dir dist/ src --ignore '**/*.test.ts'",
97
+ "build": "swc --delete-dir-on-start --strip-leading-paths --out-dir dist/ src --ignore '**/*.test.ts' --ignore '**/__tests__/**'",
101
98
  "build:types": "pkg-utils build --emitDeclarationOnly",
102
99
  "check:types": "tsc --noEmit",
103
100
  "lint": "eslint .",
package/dist/index.js DELETED
@@ -1,39 +0,0 @@
1
- export * from './config/cli/getCliConfig.js';
2
- export * from './config/cli/getCliConfigSync.js';
3
- export * from './config/findProjectRoot.js';
4
- export * from './config/findProjectRootSync.js';
5
- export * from './config/studio/getStudioConfig.js';
6
- export * from './config/studio/getStudioWorkspaces.js';
7
- export * from './config/studio/isStudioConfig.js';
8
- export * from './config/util/findConfigsPaths.js';
9
- export * from './config/util/findStudioConfigPath.js';
10
- export * from './debug.js';
11
- export * from './errors/NonInteractiveError.js';
12
- export * from './errors/NotFoundError.js';
13
- export * from './errors/ProjectRootNotFoundError.js';
14
- export * from './loaders/studio/studioWorkerTask.js';
15
- export * from './loaders/tsx/tsxWorkerTask.js';
16
- export * from './SanityCommand.js';
17
- export * from './services/apiClient.js';
18
- export * from './services/cliUserConfig.js';
19
- export * from './services/getCliToken.js';
20
- export * from './telemetry/getTelemetryBaseInfo.js';
21
- export { doImport } from './util/doImport.js';
22
- export * from './util/environment/mockBrowserEnvironment.js';
23
- export { clearCliTelemetry, CLI_TELEMETRY_SYMBOL, getCliTelemetry, setCliTelemetry } from './util/getCliTelemetry.js';
24
- export * from './util/getSanityEnvVar.js';
25
- export * from './util/getSanityUrl.js';
26
- export * from './util/getUserConfig.js';
27
- export * from './util/importModule.js';
28
- export * from './util/isCi.js';
29
- export * from './util/isInteractive.js';
30
- export * from './util/isStaging.js';
31
- export * from './util/normalizePath.js';
32
- export * from './util/promisifyWorker.js';
33
- export * from './util/readPackageJson.js';
34
- export * from './util/resolveLocalPackage.js';
35
- export * from './util/safeStructuredClone.js';
36
- export * from './ux/colorizeJson.js';
37
- export * from './ux/timer.js';
38
-
39
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './config/cli/getCliConfig.js'\nexport * from './config/cli/getCliConfigSync.js'\nexport {type CliConfig} from './config/cli/types/cliConfig.js'\nexport {type UserViteConfig} from './config/cli/types/userViteConfig.js'\nexport * from './config/findProjectRoot.js'\nexport * from './config/findProjectRootSync.js'\nexport * from './config/studio/getStudioConfig.js'\nexport * from './config/studio/getStudioWorkspaces.js'\nexport * from './config/studio/isStudioConfig.js'\nexport * from './config/util/findConfigsPaths.js'\nexport * from './config/util/findStudioConfigPath.js'\nexport {type ProjectRootResult} from './config/util/recursivelyResolveProjectRoot.js'\nexport * from './debug.js'\nexport * from './errors/NonInteractiveError.js'\nexport * from './errors/NotFoundError.js'\nexport * from './errors/ProjectRootNotFoundError.js'\nexport * from './loaders/studio/studioWorkerTask.js'\nexport * from './loaders/tsx/tsxWorkerTask.js'\nexport * from './SanityCommand.js'\nexport * from './services/apiClient.js'\nexport * from './services/cliUserConfig.js'\nexport * from './services/getCliToken.js'\nexport * from './telemetry/getTelemetryBaseInfo.js'\nexport {\n type CLITelemetryStore,\n type ConsentInformation,\n type TelemetryUserProperties,\n} from './telemetry/types.js'\nexport {type Output, type SanityOrgUser} from './types.js'\nexport {doImport} from './util/doImport.js'\nexport * from './util/environment/mockBrowserEnvironment.js'\nexport {\n clearCliTelemetry,\n CLI_TELEMETRY_SYMBOL,\n getCliTelemetry,\n setCliTelemetry,\n} from './util/getCliTelemetry.js'\nexport * from './util/getSanityEnvVar.js'\nexport * from './util/getSanityUrl.js'\nexport * from './util/getUserConfig.js'\nexport * from './util/importModule.js'\nexport * from './util/isCi.js'\nexport * from './util/isInteractive.js'\nexport * from './util/isStaging.js'\nexport * from './util/normalizePath.js'\nexport * from './util/promisifyWorker.js'\nexport * from './util/readPackageJson.js'\nexport * from './util/resolveLocalPackage.js'\nexport * from './util/safeStructuredClone.js'\nexport * from './ux/colorizeJson.js'\nexport * from './ux/timer.js'\n"],"names":["doImport","clearCliTelemetry","CLI_TELEMETRY_SYMBOL","getCliTelemetry","setCliTelemetry"],"mappings":"AAAA,cAAc,+BAA8B;AAC5C,cAAc,mCAAkC;AAGhD,cAAc,8BAA6B;AAC3C,cAAc,kCAAiC;AAC/C,cAAc,qCAAoC;AAClD,cAAc,yCAAwC;AACtD,cAAc,oCAAmC;AACjD,cAAc,oCAAmC;AACjD,cAAc,wCAAuC;AAErD,cAAc,aAAY;AAC1B,cAAc,kCAAiC;AAC/C,cAAc,4BAA2B;AACzC,cAAc,uCAAsC;AACpD,cAAc,uCAAsC;AACpD,cAAc,iCAAgC;AAC9C,cAAc,qBAAoB;AAClC,cAAc,0BAAyB;AACvC,cAAc,8BAA6B;AAC3C,cAAc,4BAA2B;AACzC,cAAc,sCAAqC;AAOnD,SAAQA,QAAQ,QAAO,qBAAoB;AAC3C,cAAc,+CAA8C;AAC5D,SACEC,iBAAiB,EACjBC,oBAAoB,EACpBC,eAAe,EACfC,eAAe,QACV,4BAA2B;AAClC,cAAc,4BAA2B;AACzC,cAAc,yBAAwB;AACtC,cAAc,0BAAyB;AACvC,cAAc,yBAAwB;AACtC,cAAc,iBAAgB;AAC9B,cAAc,0BAAyB;AACvC,cAAc,sBAAqB;AACnC,cAAc,0BAAyB;AACvC,cAAc,4BAA2B;AACzC,cAAc,4BAA2B;AACzC,cAAc,gCAA+B;AAC7C,cAAc,gCAA+B;AAC7C,cAAc,uBAAsB;AACpC,cAAc,gBAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/util/getCliTelemetry.ts"],"sourcesContent":["import {ux} from '@oclif/core'\nimport {noopLogger} from '@sanity/telemetry'\n\nimport {type CLITelemetryStore} from '../telemetry/types.js'\n\n/**\n * @public\n * Symbol used to store CLI telemetry state on globalThis.\n * Use the accessor functions instead of accessing this directly.\n */\nexport const CLI_TELEMETRY_SYMBOL = Symbol.for('sanity.cli.telemetry')\n\ntype TraceErrorReporter = (error: Error) => void\n\ninterface CliTelemetryState {\n logger: CLITelemetryStore\n\n reportTraceError?: TraceErrorReporter\n}\n\ntype GlobalWithTelemetry = typeof globalThis & {\n [CLI_TELEMETRY_SYMBOL]?: CliTelemetryState\n}\n\nfunction getState(): CliTelemetryState | undefined {\n return (globalThis as GlobalWithTelemetry)[CLI_TELEMETRY_SYMBOL]\n}\n\n/**\n * @public\n */\nexport function getCliTelemetry(): CLITelemetryStore {\n const state = getState()\n // This should never happen, but if it does, we return a noop logger to avoid errors.\n if (!state) {\n ux.warn('CLI telemetry not initialized, returning noop logger')\n return noopLogger\n }\n\n return state.logger\n}\n\n/**\n * Sets the global CLI telemetry state.\n * @internal\n */\nexport function setCliTelemetry(\n telemetry: CLITelemetryStore,\n options?: {reportTraceError?: TraceErrorReporter},\n): void {\n ;(globalThis as GlobalWithTelemetry)[CLI_TELEMETRY_SYMBOL] = {\n logger: telemetry,\n reportTraceError: options?.reportTraceError,\n }\n}\n\n/**\n * Reports an error to the CLI command trace. Called from SanityCommand.catch()\n * for real command errors (not user aborts).\n * @internal\n */\nexport function reportCliTraceError(error: Error): void {\n getState()?.reportTraceError?.(error)\n}\n\n/**\n * Clears the global CLI telemetry store.\n * @internal\n */\nexport function clearCliTelemetry(): void {\n const global = globalThis as GlobalWithTelemetry\n delete global[CLI_TELEMETRY_SYMBOL]\n}\n"],"names":["ux","noopLogger","CLI_TELEMETRY_SYMBOL","Symbol","for","getState","globalThis","getCliTelemetry","state","warn","logger","setCliTelemetry","telemetry","options","reportTraceError","reportCliTraceError","error","clearCliTelemetry","global"],"mappings":"AAAA,SAAQA,EAAE,QAAO,cAAa;AAC9B,SAAQC,UAAU,QAAO,oBAAmB;AAI5C;;;;CAIC,GACD,OAAO,MAAMC,uBAAuBC,OAAOC,GAAG,CAAC,wBAAuB;AActE,SAASC;IACP,OAAO,AAACC,UAAkC,CAACJ,qBAAqB;AAClE;AAEA;;CAEC,GACD,OAAO,SAASK;IACd,MAAMC,QAAQH;IACd,qFAAqF;IACrF,IAAI,CAACG,OAAO;QACVR,GAAGS,IAAI,CAAC;QACR,OAAOR;IACT;IAEA,OAAOO,MAAME,MAAM;AACrB;AAEA;;;CAGC,GACD,OAAO,SAASC,gBACdC,SAA4B,EAC5BC,OAAiD;;IAE/CP,UAAkC,CAACJ,qBAAqB,GAAG;QAC3DQ,QAAQE;QACRE,kBAAkBD,SAASC;IAC7B;AACF;AAEA;;;;CAIC,GACD,OAAO,SAASC,oBAAoBC,KAAY;IAC9CX,YAAYS,mBAAmBE;AACjC;AAEA;;;CAGC,GACD,OAAO,SAASC;IACd,MAAMC,SAASZ;IACf,OAAOY,MAAM,CAAChB,qBAAqB;AACrC"}
@@ -1,15 +0,0 @@
1
- import ConfigStore from 'configstore';
2
- const sanityEnv = (process.env.SANITY_INTERNAL_ENV || '').toLowerCase();
3
- const configName = sanityEnv && sanityEnv !== 'production' ? `sanity-${sanityEnv}` : 'sanity';
4
- const defaults = {};
5
- let config;
6
- export const getUserConfig = ()=>{
7
- if (!config) {
8
- config = new ConfigStore(configName, defaults, {
9
- globalConfigPath: true
10
- });
11
- }
12
- return config;
13
- };
14
-
15
- //# sourceMappingURL=getUserConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/util/getUserConfig.ts"],"sourcesContent":["import ConfigStore from 'configstore'\n\nconst sanityEnv = (process.env.SANITY_INTERNAL_ENV || '').toLowerCase()\nconst configName = sanityEnv && sanityEnv !== 'production' ? `sanity-${sanityEnv}` : 'sanity'\nconst defaults = {}\nlet config: ConfigStore\n\nexport const getUserConfig = (): ConfigStore => {\n if (!config) {\n config = new ConfigStore(configName, defaults, {globalConfigPath: true})\n }\n\n return config\n}\n"],"names":["ConfigStore","sanityEnv","process","env","SANITY_INTERNAL_ENV","toLowerCase","configName","defaults","config","getUserConfig","globalConfigPath"],"mappings":"AAAA,OAAOA,iBAAiB,cAAa;AAErC,MAAMC,YAAY,AAACC,CAAAA,QAAQC,GAAG,CAACC,mBAAmB,IAAI,EAAC,EAAGC,WAAW;AACrE,MAAMC,aAAaL,aAAaA,cAAc,eAAe,CAAC,OAAO,EAAEA,WAAW,GAAG;AACrF,MAAMM,WAAW,CAAC;AAClB,IAAIC;AAEJ,OAAO,MAAMC,gBAAgB;IAC3B,IAAI,CAACD,QAAQ;QACXA,SAAS,IAAIR,YAAYM,YAAYC,UAAU;YAACG,kBAAkB;QAAI;IACxE;IAEA,OAAOF;AACT,EAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/util/readNDJSON.ts"],"sourcesContent":["import {readFile} from 'node:fs/promises'\n\n/**\n * Reads and parses an NDJSON (newline-delimited JSON) file containing telemetry events.\n *\n * @param filePath - Path to the NDJSON file\n * @returns Promise resolving to array of parsed telemetry events\n * @throws Error if file cannot be read or contains invalid JSON\n *\n * @internal\n */\nexport async function readNDJSON<T>(filePath: string): Promise<T[]> {\n const content = await readFile(filePath, 'utf8')\n\n if (!content.trim()) {\n return []\n }\n\n return content\n .trim()\n .split('\\n')\n .filter(Boolean)\n .map((line) => JSON.parse(line) as T)\n}\n"],"names":["readFile","readNDJSON","filePath","content","trim","split","filter","Boolean","map","line","JSON","parse"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,mBAAkB;AAEzC;;;;;;;;CAQC,GACD,OAAO,eAAeC,WAAcC,QAAgB;IAClD,MAAMC,UAAU,MAAMH,SAASE,UAAU;IAEzC,IAAI,CAACC,QAAQC,IAAI,IAAI;QACnB,OAAO,EAAE;IACX;IAEA,OAAOD,QACJC,IAAI,GACJC,KAAK,CAAC,MACNC,MAAM,CAACC,SACPC,GAAG,CAAC,CAACC,OAASC,KAAKC,KAAK,CAACF;AAC9B"}
@@ -1,19 +0,0 @@
1
- import { writeFile } from 'node:fs/promises';
2
- /**
3
- * Serialize the given `data` as JSON and write it to the given path.
4
- *
5
- * @param filePath - Path to JSON file to read
6
- * @internal
7
- */ export async function writeJsonFile(filePath, data, options = {}) {
8
- const { pretty = false } = options;
9
- try {
10
- const stringified = pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data);
11
- await writeFile(filePath, stringified, 'utf8');
12
- } catch (err) {
13
- throw new Error(`Failed to write "${filePath}"`, {
14
- cause: err
15
- });
16
- }
17
- }
18
-
19
- //# sourceMappingURL=writeJsonFile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/util/writeJsonFile.ts"],"sourcesContent":["import {writeFile} from 'node:fs/promises'\n\n/**\n * Serialize the given `data` as JSON and write it to the given path.\n *\n * @param filePath - Path to JSON file to read\n * @internal\n */\nexport async function writeJsonFile(\n filePath: string,\n data: unknown,\n options: {pretty?: boolean} = {},\n): Promise<void> {\n const {pretty = false} = options\n try {\n const stringified = pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data)\n await writeFile(filePath, stringified, 'utf8')\n } catch (err: unknown) {\n throw new Error(`Failed to write \"${filePath}\"`, {cause: err})\n }\n}\n"],"names":["writeFile","writeJsonFile","filePath","data","options","pretty","stringified","JSON","stringify","err","Error","cause"],"mappings":"AAAA,SAAQA,SAAS,QAAO,mBAAkB;AAE1C;;;;;CAKC,GACD,OAAO,eAAeC,cACpBC,QAAgB,EAChBC,IAAa,EACbC,UAA8B,CAAC,CAAC;IAEhC,MAAM,EAACC,SAAS,KAAK,EAAC,GAAGD;IACzB,IAAI;QACF,MAAME,cAAcD,SAASE,KAAKC,SAAS,CAACL,MAAM,MAAM,KAAKI,KAAKC,SAAS,CAACL;QAC5E,MAAMH,UAAUE,UAAUI,aAAa;IACzC,EAAE,OAAOG,KAAc;QACrB,MAAM,IAAIC,MAAM,CAAC,iBAAiB,EAAER,SAAS,CAAC,CAAC,EAAE;YAACS,OAAOF;QAAG;IAC9D;AACF"}
File without changes