@stll/oxlint-config 1.7.0 → 1.9.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 (51) hide show
  1. package/README.md +9 -7
  2. package/dist/cloud-setup-cli.cjs +6 -1
  3. package/dist/cloud-setup-cli.cjs.map +1 -1
  4. package/dist/cloud-setup-cli.mjs +6 -1
  5. package/dist/cloud-setup-cli.mjs.map +1 -1
  6. package/dist/dependabot.d.cts +13 -7
  7. package/dist/dependabot.d.mts +13 -7
  8. package/dist/engine-support.d.cts +4 -5
  9. package/dist/engine-support.d.mts +4 -5
  10. package/dist/index.d.cts +11 -11
  11. package/dist/index.d.mts +11 -11
  12. package/dist/publish-build-target-nuxt-helper.d.cts +3 -4
  13. package/dist/publish-build-target-nuxt-helper.d.mts +3 -4
  14. package/dist/publish-build-target-vite-dts-helper.d.cts +2 -2
  15. package/dist/publish-build-target-vite-dts-helper.d.mts +2 -2
  16. package/dist/publish-build-target-vite-dts-helper2.cjs +47 -4
  17. package/dist/publish-build-target-vite-dts-helper2.cjs.map +1 -1
  18. package/dist/publish-build-target-vite-dts-helper2.mjs +47 -4
  19. package/dist/publish-build-target-vite-dts-helper2.mjs.map +1 -1
  20. package/dist/publish-contract-cli.cjs +2 -2
  21. package/dist/publish-contract-cli.cjs.map +1 -1
  22. package/dist/publish-contract-cli.mjs +2 -2
  23. package/dist/publish-contract-cli.mjs.map +1 -1
  24. package/dist/quarantine-policy.d.cts +9 -9
  25. package/dist/quarantine-policy.d.mts +9 -9
  26. package/dist/toolchain-bun.cjs +34 -0
  27. package/dist/toolchain-bun.cjs.map +1 -0
  28. package/dist/toolchain-bun.mjs +23 -0
  29. package/dist/toolchain-bun.mjs.map +1 -0
  30. package/dist/toolchain-dependabot.cjs +6 -3
  31. package/dist/toolchain-dependabot.cjs.map +1 -1
  32. package/dist/toolchain-dependabot.mjs +6 -3
  33. package/dist/toolchain-dependabot.mjs.map +1 -1
  34. package/dist/toolchain-guard.cjs +8 -3
  35. package/dist/toolchain-guard.cjs.map +1 -1
  36. package/dist/toolchain-guard.mjs +8 -3
  37. package/dist/toolchain-guard.mjs.map +1 -1
  38. package/dist/toolchain-inputs.cjs +61 -9
  39. package/dist/toolchain-inputs.cjs.map +1 -1
  40. package/dist/toolchain-inputs.mjs +61 -9
  41. package/dist/toolchain-inputs.mjs.map +1 -1
  42. package/dist/toolchain-schema.cjs +77 -2
  43. package/dist/toolchain-schema.cjs.map +1 -1
  44. package/dist/toolchain-schema.mjs +77 -3
  45. package/dist/toolchain-schema.mjs.map +1 -1
  46. package/dist/typecheck-parity.cjs +2 -1
  47. package/dist/typecheck-parity.cjs.map +1 -1
  48. package/dist/typecheck-parity.mjs +2 -1
  49. package/dist/typecheck-parity.mjs.map +1 -1
  50. package/package.json +5 -5
  51. package/toolchain.json +12 -7
package/README.md CHANGED
@@ -75,10 +75,12 @@ Shared-pin Dependabot ignores must contain only `dependency-name` and
75
75
  `version-update:semver-minor`, and `version-update:semver-patch`. This ignores
76
76
  version updates while preserving security update pull requests.
77
77
 
78
- Set `packageManager` to `bun@` followed by the policy's `bun` value, and pin
79
- `bun-types` to that same value. Dependency pins can live in default or named
80
- catalogs, including Bun's `workspaces` catalogs. Bun image tags, version
81
- files, and mise/asdf entries also inherit the policy pin.
78
+ The policy's `bun` value is the minimum Bun. Set `packageManager` to `bun@`
79
+ followed by one exact release at or above it, and pin `bun-types` to that same
80
+ release. Dependency pins can live in default or named catalogs, including
81
+ Bun's `workspaces` catalogs. Bun image tags, version files, and mise/asdf
82
+ entries also inherit the repository's pin, so a repository can take a newer
83
+ Bun without a policy release.
82
84
 
83
85
  Configure `oven-sh/setup-bun` with a tracked manifest as its version source:
84
86
 
@@ -686,7 +688,7 @@ including `engines`, are rejected. Real npm and pnpm pack tests compare the
686
688
  modeled contract with each tarball manifest.
687
689
 
688
690
  Build adapters use the installed configuration loaders and bind their behavior to
689
- tsdown 0.22.9, Vite 8.1.5, or @nuxt/module-builder 1.0.3 (unbuild 3.6.1 and
691
+ tsdown 0.23.1, Vite 8.3.4, or @nuxt/module-builder 1.0.3 (unbuild 3.6.1 and
690
692
  mkdist 2.4.1). They record final transform targets, including separate Nuxt module
691
693
  and runtime entries. No syntax lowering records `esnext`.
692
694
  Only exact single build invocations (`tsdown`, `vite build`, or
@@ -715,8 +717,8 @@ export default {
715
717
  };
716
718
  ```
717
719
 
718
- This adapter requires consumer-installed `vite-plugin-dts` 5.0.3 and its
719
- `unplugin-dts` 1.0.3 implementation. Its dependency scope must provide TypeScript
720
+ This adapter requires consumer-installed `vite-plugin-dts` 5.1.2 and its
721
+ `unplugin-dts` 1.1.2 implementation. Its dependency scope must provide TypeScript
720
722
  6.0.3 as `typescript` or the plugin's `@typescript/typescript6` fallback.
721
723
  Unsupported versions fail explicitly.
722
724
  The resolver proves a direct helper import and call in a literal plugin array;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_generated_file = require("./generated-file.cjs");
4
4
  const require_toolchain_inputs = require("./toolchain-inputs.cjs");
5
+ const require_toolchain_bun = require("./toolchain-bun.cjs");
5
6
  const require_toolchain_guard = require("./toolchain-guard.cjs");
6
7
  const require_toolchain_schema = require("./toolchain-schema.cjs");
7
8
  let node_fs_promises = require("node:fs/promises");
@@ -56,7 +57,11 @@ const main = async () => {
56
57
  if (cloud === void 0) throw new Error("requires an explicit cloud declaration");
57
58
  const nodeVersion = files[".node-version"];
58
59
  if (nodeVersion === void 0) throw new Error("requires tracked root .node-version");
59
- const policy = require_toolchain_schema.parseToolchainPolicy(JSON.parse(await (0, node_fs_promises.readFile)(new URL("../toolchain.json", require("url").pathToFileURL(__filename).href), "utf8")));
60
+ const sharedPolicy = require_toolchain_schema.parseToolchainPolicy(JSON.parse(await (0, node_fs_promises.readFile)(new URL("../toolchain.json", require("url").pathToFileURL(__filename).href), "utf8")));
61
+ const policy = {
62
+ ...sharedPolicy,
63
+ bun: require_toolchain_bun.repositoryBun(sharedPolicy.bun, files["package.json"])
64
+ };
60
65
  const script = require_toolchain_inputs.generateCloudSetup({
61
66
  policy,
62
67
  cloud,
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-setup-cli.cjs","names":["checkGeneratedOutput","open","constants","cloudClaudeSettingsPath","cloudSessionStartFix","realpath","readToolchainInputs","join","cloudSetupPath","generationDiagnostics","parseToolchainConfiguration","parseToolchainPolicy","readFile","generateCloudSetup","mergeCloudClaudeSettings","writeGeneratedFile"],"sources":["../src/cloud-setup-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { constants } from \"node:fs\";\nimport { open, readFile, realpath } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport { cloudSetupPath, generateCloudSetup } from \"./cloud-setup\";\nimport {\n cloudClaudeSettingsPath,\n cloudSessionStartFix,\n mergeCloudClaudeSettings,\n} from \"./cloud-setup-claude\";\nimport {\n checkGeneratedOutput,\n generationDiagnostics,\n writeGeneratedFile,\n} from \"./generated-file\";\nimport {\n parseToolchainConfiguration,\n readToolchainInputs,\n} from \"./toolchain-guard\";\nimport { parseToolchainPolicy } from \"./toolchain-schema\";\n\nconst usage =\n \"Usage: stll-cloud-setup (run from repository root)\\n stll-cloud-setup --help\";\nconst readClaudeSettings = async (destination: string) => {\n try {\n if ((await checkGeneratedOutput(destination)) === undefined)\n return undefined;\n const input = await open(\n destination,\n constants.O_RDONLY | constants.O_NOFOLLOW,\n );\n try {\n const opened = await input.stat();\n if (!opened.isFile() || opened.nlink !== 1)\n throw new Error(\n \"settings must be a single-link regular repository file\",\n );\n return { text: await input.readFile(\"utf8\"), mode: opened.mode & 0o777 };\n } finally {\n await input.close();\n }\n } catch (error) {\n throw new Error(\n `cannot safely merge ${cloudClaudeSettingsPath}: ${error instanceof Error ? error.message : String(error)}; ${cloudSessionStartFix}`,\n );\n }\n};\n\nconst main = async () => {\n const args = process.argv.slice(2);\n if (args.length === 1 && args.at(0) === \"--help\") {\n process.stdout.write(`${usage}\\n`);\n return;\n }\n if (args.length !== 0) throw new Error(usage);\n const root = await realpath(process.cwd());\n const { files, diagnostics } = readToolchainInputs(root);\n const destination = join(root, cloudSetupPath);\n const settingsDestination = join(root, cloudClaudeSettingsPath);\n // Validate settings separately to retain actionable merge diagnostics.\n const settings = await readClaudeSettings(settingsDestination);\n const remainingDiagnostics = await generationDiagnostics({\n diagnostics,\n outputs: [\n { relative: cloudSetupPath, destination },\n { relative: cloudClaudeSettingsPath, destination: settingsDestination },\n ],\n });\n if (remainingDiagnostics.length > 0)\n throw new Error(\n remainingDiagnostics\n .map(\n ({ path, message }) =>\n `${path}: ${message}${path === cloudClaudeSettingsPath ? `; ${cloudSessionStartFix}` : \"\"}`,\n )\n .join(\"\\n\"),\n );\n const text = files[\"stll-toolchain.json\"];\n if (text === undefined)\n throw new Error(\"requires tracked stll-toolchain.json\");\n const { cloud, rustExceptions } = parseToolchainConfiguration(\n JSON.parse(text),\n );\n if (cloud === undefined)\n throw new Error(\"requires an explicit cloud declaration\");\n const nodeVersion = files[\".node-version\"];\n if (nodeVersion === undefined)\n throw new Error(\"requires tracked root .node-version\");\n const policy = parseToolchainPolicy(\n JSON.parse(\n await readFile(new URL(\"../toolchain.json\", import.meta.url), \"utf8\"),\n ),\n );\n const script = generateCloudSetup({\n policy,\n cloud,\n nodeVersion: nodeVersion.trim(),\n files,\n rustExceptions,\n });\n const mergedSettings = mergeCloudClaudeSettings(settings?.text);\n await writeGeneratedFile({ destination, text: script, mode: 0o755 });\n if (mergedSettings !== settings?.text)\n await writeGeneratedFile({\n destination: settingsDestination,\n text: mergedSettings,\n mode: settings?.mode ?? 0o644,\n });\n process.stdout.write(\n `Generated ${cloudSetupPath} and ${cloudClaudeSettingsPath}\\n`,\n );\n};\n\nmain().catch((error: unknown) => {\n process.stderr.write(\n `cloud-setup: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n process.exitCode = 1;\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"cloud-setup-cli.cjs","names":["checkGeneratedOutput","open","constants","cloudClaudeSettingsPath","cloudSessionStartFix","realpath","readToolchainInputs","join","cloudSetupPath","generationDiagnostics","parseToolchainConfiguration","parseToolchainPolicy","readFile","repositoryBun","generateCloudSetup","mergeCloudClaudeSettings","writeGeneratedFile"],"sources":["../src/cloud-setup-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { constants } from \"node:fs\";\nimport { open, readFile, realpath } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport { cloudSetupPath, generateCloudSetup } from \"./cloud-setup\";\nimport {\n cloudClaudeSettingsPath,\n cloudSessionStartFix,\n mergeCloudClaudeSettings,\n} from \"./cloud-setup-claude\";\nimport {\n checkGeneratedOutput,\n generationDiagnostics,\n writeGeneratedFile,\n} from \"./generated-file\";\nimport { repositoryBun } from \"./toolchain-bun\";\nimport {\n parseToolchainConfiguration,\n readToolchainInputs,\n} from \"./toolchain-guard\";\nimport { parseToolchainPolicy } from \"./toolchain-schema\";\n\nconst usage =\n \"Usage: stll-cloud-setup (run from repository root)\\n stll-cloud-setup --help\";\nconst readClaudeSettings = async (destination: string) => {\n try {\n if ((await checkGeneratedOutput(destination)) === undefined)\n return undefined;\n const input = await open(\n destination,\n constants.O_RDONLY | constants.O_NOFOLLOW,\n );\n try {\n const opened = await input.stat();\n if (!opened.isFile() || opened.nlink !== 1)\n throw new Error(\n \"settings must be a single-link regular repository file\",\n );\n return { text: await input.readFile(\"utf8\"), mode: opened.mode & 0o777 };\n } finally {\n await input.close();\n }\n } catch (error) {\n throw new Error(\n `cannot safely merge ${cloudClaudeSettingsPath}: ${error instanceof Error ? error.message : String(error)}; ${cloudSessionStartFix}`,\n );\n }\n};\n\nconst main = async () => {\n const args = process.argv.slice(2);\n if (args.length === 1 && args.at(0) === \"--help\") {\n process.stdout.write(`${usage}\\n`);\n return;\n }\n if (args.length !== 0) throw new Error(usage);\n const root = await realpath(process.cwd());\n const { files, diagnostics } = readToolchainInputs(root);\n const destination = join(root, cloudSetupPath);\n const settingsDestination = join(root, cloudClaudeSettingsPath);\n // Validate settings separately to retain actionable merge diagnostics.\n const settings = await readClaudeSettings(settingsDestination);\n const remainingDiagnostics = await generationDiagnostics({\n diagnostics,\n outputs: [\n { relative: cloudSetupPath, destination },\n { relative: cloudClaudeSettingsPath, destination: settingsDestination },\n ],\n });\n if (remainingDiagnostics.length > 0)\n throw new Error(\n remainingDiagnostics\n .map(\n ({ path, message }) =>\n `${path}: ${message}${path === cloudClaudeSettingsPath ? `; ${cloudSessionStartFix}` : \"\"}`,\n )\n .join(\"\\n\"),\n );\n const text = files[\"stll-toolchain.json\"];\n if (text === undefined)\n throw new Error(\"requires tracked stll-toolchain.json\");\n const { cloud, rustExceptions } = parseToolchainConfiguration(\n JSON.parse(text),\n );\n if (cloud === undefined)\n throw new Error(\"requires an explicit cloud declaration\");\n const nodeVersion = files[\".node-version\"];\n if (nodeVersion === undefined)\n throw new Error(\"requires tracked root .node-version\");\n const sharedPolicy = parseToolchainPolicy(\n JSON.parse(\n await readFile(new URL(\"../toolchain.json\", import.meta.url), \"utf8\"),\n ),\n );\n const policy = {\n ...sharedPolicy,\n bun: repositoryBun(sharedPolicy.bun, files[\"package.json\"]),\n };\n const script = generateCloudSetup({\n policy,\n cloud,\n nodeVersion: nodeVersion.trim(),\n files,\n rustExceptions,\n });\n const mergedSettings = mergeCloudClaudeSettings(settings?.text);\n await writeGeneratedFile({ destination, text: script, mode: 0o755 });\n if (mergedSettings !== settings?.text)\n await writeGeneratedFile({\n destination: settingsDestination,\n text: mergedSettings,\n mode: settings?.mode ?? 0o644,\n });\n process.stdout.write(\n `Generated ${cloudSetupPath} and ${cloudClaudeSettingsPath}\\n`,\n );\n};\n\nmain().catch((error: unknown) => {\n process.stderr.write(\n `cloud-setup: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n process.exitCode = 1;\n});\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { n as generationDiagnostics, r as writeGeneratedFile, t as checkGeneratedOutput } from "./generated-file.mjs";
3
3
  import { C as cloudSetupPath, S as mergeCloudClaudeSettings, v as cloudClaudeSettingsPath, w as generateCloudSetup, y as cloudSessionStartFix } from "./toolchain-inputs.mjs";
4
+ import { t as repositoryBun } from "./toolchain-bun.mjs";
4
5
  import { n as parseToolchainConfiguration, r as readToolchainInputs } from "./toolchain-guard.mjs";
5
6
  import { t as parseToolchainPolicy } from "./toolchain-schema.mjs";
6
7
  import { open, readFile, realpath } from "node:fs/promises";
@@ -55,7 +56,11 @@ const main = async () => {
55
56
  if (cloud === void 0) throw new Error("requires an explicit cloud declaration");
56
57
  const nodeVersion = files[".node-version"];
57
58
  if (nodeVersion === void 0) throw new Error("requires tracked root .node-version");
58
- const policy = parseToolchainPolicy(JSON.parse(await readFile(new URL("../toolchain.json", import.meta.url), "utf8")));
59
+ const sharedPolicy = parseToolchainPolicy(JSON.parse(await readFile(new URL("../toolchain.json", import.meta.url), "utf8")));
60
+ const policy = {
61
+ ...sharedPolicy,
62
+ bun: repositoryBun(sharedPolicy.bun, files["package.json"])
63
+ };
59
64
  const script = generateCloudSetup({
60
65
  policy,
61
66
  cloud,
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-setup-cli.mjs","names":[],"sources":["../src/cloud-setup-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { constants } from \"node:fs\";\nimport { open, readFile, realpath } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport { cloudSetupPath, generateCloudSetup } from \"./cloud-setup\";\nimport {\n cloudClaudeSettingsPath,\n cloudSessionStartFix,\n mergeCloudClaudeSettings,\n} from \"./cloud-setup-claude\";\nimport {\n checkGeneratedOutput,\n generationDiagnostics,\n writeGeneratedFile,\n} from \"./generated-file\";\nimport {\n parseToolchainConfiguration,\n readToolchainInputs,\n} from \"./toolchain-guard\";\nimport { parseToolchainPolicy } from \"./toolchain-schema\";\n\nconst usage =\n \"Usage: stll-cloud-setup (run from repository root)\\n stll-cloud-setup --help\";\nconst readClaudeSettings = async (destination: string) => {\n try {\n if ((await checkGeneratedOutput(destination)) === undefined)\n return undefined;\n const input = await open(\n destination,\n constants.O_RDONLY | constants.O_NOFOLLOW,\n );\n try {\n const opened = await input.stat();\n if (!opened.isFile() || opened.nlink !== 1)\n throw new Error(\n \"settings must be a single-link regular repository file\",\n );\n return { text: await input.readFile(\"utf8\"), mode: opened.mode & 0o777 };\n } finally {\n await input.close();\n }\n } catch (error) {\n throw new Error(\n `cannot safely merge ${cloudClaudeSettingsPath}: ${error instanceof Error ? error.message : String(error)}; ${cloudSessionStartFix}`,\n );\n }\n};\n\nconst main = async () => {\n const args = process.argv.slice(2);\n if (args.length === 1 && args.at(0) === \"--help\") {\n process.stdout.write(`${usage}\\n`);\n return;\n }\n if (args.length !== 0) throw new Error(usage);\n const root = await realpath(process.cwd());\n const { files, diagnostics } = readToolchainInputs(root);\n const destination = join(root, cloudSetupPath);\n const settingsDestination = join(root, cloudClaudeSettingsPath);\n // Validate settings separately to retain actionable merge diagnostics.\n const settings = await readClaudeSettings(settingsDestination);\n const remainingDiagnostics = await generationDiagnostics({\n diagnostics,\n outputs: [\n { relative: cloudSetupPath, destination },\n { relative: cloudClaudeSettingsPath, destination: settingsDestination },\n ],\n });\n if (remainingDiagnostics.length > 0)\n throw new Error(\n remainingDiagnostics\n .map(\n ({ path, message }) =>\n `${path}: ${message}${path === cloudClaudeSettingsPath ? `; ${cloudSessionStartFix}` : \"\"}`,\n )\n .join(\"\\n\"),\n );\n const text = files[\"stll-toolchain.json\"];\n if (text === undefined)\n throw new Error(\"requires tracked stll-toolchain.json\");\n const { cloud, rustExceptions } = parseToolchainConfiguration(\n JSON.parse(text),\n );\n if (cloud === undefined)\n throw new Error(\"requires an explicit cloud declaration\");\n const nodeVersion = files[\".node-version\"];\n if (nodeVersion === undefined)\n throw new Error(\"requires tracked root .node-version\");\n const policy = parseToolchainPolicy(\n JSON.parse(\n await readFile(new URL(\"../toolchain.json\", import.meta.url), \"utf8\"),\n ),\n );\n const script = generateCloudSetup({\n policy,\n cloud,\n nodeVersion: nodeVersion.trim(),\n files,\n rustExceptions,\n });\n const mergedSettings = mergeCloudClaudeSettings(settings?.text);\n await writeGeneratedFile({ destination, text: script, mode: 0o755 });\n if (mergedSettings !== settings?.text)\n await writeGeneratedFile({\n destination: settingsDestination,\n text: mergedSettings,\n mode: settings?.mode ?? 0o644,\n });\n process.stdout.write(\n `Generated ${cloudSetupPath} and ${cloudClaudeSettingsPath}\\n`,\n );\n};\n\nmain().catch((error: unknown) => {\n process.stderr.write(\n `cloud-setup: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n process.exitCode = 1;\n});\n"],"mappings":";;;;;;;;;AAsBA,MAAM,QACJ;AACF,MAAM,qBAAqB,OAAO,gBAAwB;CACxD,IAAI;EACF,IAAK,MAAM,qBAAqB,WAAW,MAAO,KAAA,GAChD,OAAO,KAAA;EACT,MAAM,QAAQ,MAAM,KAClB,aACA,UAAU,WAAW,UAAU,UACjC;EACA,IAAI;GACF,MAAM,SAAS,MAAM,MAAM,KAAK;GAChC,IAAI,CAAC,OAAO,OAAO,KAAK,OAAO,UAAU,GACvC,MAAM,IAAI,MACR,wDACF;GACF,OAAO;IAAE,MAAM,MAAM,MAAM,SAAS,MAAM;IAAG,MAAM,OAAO,OAAO;GAAM;EACzE,UAAU;GACR,MAAM,MAAM,MAAM;EACpB;CACF,SAAS,OAAO;EACd,MAAM,IAAI,MACR,uBAAuB,wBAAwB,IAAI,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,IAAI,sBAChH;CACF;AACF;AAEA,MAAM,OAAO,YAAY;CACvB,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;CACjC,IAAI,KAAK,WAAW,KAAK,KAAK,GAAG,CAAC,MAAM,UAAU;EAChD,QAAQ,OAAO,MAAM,GAAG,MAAM,GAAG;EACjC;CACF;CACA,IAAI,KAAK,WAAW,GAAG,MAAM,IAAI,MAAM,KAAK;CAC5C,MAAM,OAAO,MAAM,SAAS,QAAQ,IAAI,CAAC;CACzC,MAAM,EAAE,OAAO,gBAAgB,oBAAoB,IAAI;CACvD,MAAM,cAAc,KAAK,MAAM,cAAc;CAC7C,MAAM,sBAAsB,KAAK,MAAM,uBAAuB;CAE9D,MAAM,WAAW,MAAM,mBAAmB,mBAAmB;CAC7D,MAAM,uBAAuB,MAAM,sBAAsB;EACvD;EACA,SAAS,CACP;GAAE,UAAU;GAAgB;EAAY,GACxC;GAAE,UAAU;GAAyB,aAAa;EAAoB,CACxE;CACF,CAAC;CACD,IAAI,qBAAqB,SAAS,GAChC,MAAM,IAAI,MACR,qBACG,KACE,EAAE,MAAM,cACP,GAAG,KAAK,IAAI,UAAU,SAAA,0BAAmC,KAAK,yBAAyB,IAC3F,CAAC,CACA,KAAK,IAAI,CACd;CACF,MAAM,OAAO,MAAM;CACnB,IAAI,SAAS,KAAA,GACX,MAAM,IAAI,MAAM,sCAAsC;CACxD,MAAM,EAAE,OAAO,mBAAmB,4BAChC,KAAK,MAAM,IAAI,CACjB;CACA,IAAI,UAAU,KAAA,GACZ,MAAM,IAAI,MAAM,wCAAwC;CAC1D,MAAM,cAAc,MAAM;CAC1B,IAAI,gBAAgB,KAAA,GAClB,MAAM,IAAI,MAAM,qCAAqC;CACvD,MAAM,SAAS,qBACb,KAAK,MACH,MAAM,SAAS,IAAI,IAAI,qBAAqB,YAAY,GAAG,GAAG,MAAM,CACtE,CACF;CACA,MAAM,SAAS,mBAAmB;EAChC;EACA;EACA,aAAa,YAAY,KAAK;EAC9B;EACA;CACF,CAAC;CACD,MAAM,iBAAiB,yBAAyB,UAAU,IAAI;CAC9D,MAAM,mBAAmB;EAAE;EAAa,MAAM;EAAQ,MAAM;CAAM,CAAC;CACnE,IAAI,mBAAmB,UAAU,MAC/B,MAAM,mBAAmB;EACvB,aAAa;EACb,MAAM;EACN,MAAM,UAAU,QAAQ;CAC1B,CAAC;CACH,QAAQ,OAAO,MACb,aAAa,eAAe,OAAO,wBAAwB,GAC7D;AACF;AAEA,KAAK,CAAC,CAAC,OAAO,UAAmB;CAC/B,QAAQ,OAAO,MACb,gBAAgB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GACzE;CACA,QAAQ,WAAW;AACrB,CAAC"}
1
+ {"version":3,"file":"cloud-setup-cli.mjs","names":[],"sources":["../src/cloud-setup-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { constants } from \"node:fs\";\nimport { open, readFile, realpath } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport { cloudSetupPath, generateCloudSetup } from \"./cloud-setup\";\nimport {\n cloudClaudeSettingsPath,\n cloudSessionStartFix,\n mergeCloudClaudeSettings,\n} from \"./cloud-setup-claude\";\nimport {\n checkGeneratedOutput,\n generationDiagnostics,\n writeGeneratedFile,\n} from \"./generated-file\";\nimport { repositoryBun } from \"./toolchain-bun\";\nimport {\n parseToolchainConfiguration,\n readToolchainInputs,\n} from \"./toolchain-guard\";\nimport { parseToolchainPolicy } from \"./toolchain-schema\";\n\nconst usage =\n \"Usage: stll-cloud-setup (run from repository root)\\n stll-cloud-setup --help\";\nconst readClaudeSettings = async (destination: string) => {\n try {\n if ((await checkGeneratedOutput(destination)) === undefined)\n return undefined;\n const input = await open(\n destination,\n constants.O_RDONLY | constants.O_NOFOLLOW,\n );\n try {\n const opened = await input.stat();\n if (!opened.isFile() || opened.nlink !== 1)\n throw new Error(\n \"settings must be a single-link regular repository file\",\n );\n return { text: await input.readFile(\"utf8\"), mode: opened.mode & 0o777 };\n } finally {\n await input.close();\n }\n } catch (error) {\n throw new Error(\n `cannot safely merge ${cloudClaudeSettingsPath}: ${error instanceof Error ? error.message : String(error)}; ${cloudSessionStartFix}`,\n );\n }\n};\n\nconst main = async () => {\n const args = process.argv.slice(2);\n if (args.length === 1 && args.at(0) === \"--help\") {\n process.stdout.write(`${usage}\\n`);\n return;\n }\n if (args.length !== 0) throw new Error(usage);\n const root = await realpath(process.cwd());\n const { files, diagnostics } = readToolchainInputs(root);\n const destination = join(root, cloudSetupPath);\n const settingsDestination = join(root, cloudClaudeSettingsPath);\n // Validate settings separately to retain actionable merge diagnostics.\n const settings = await readClaudeSettings(settingsDestination);\n const remainingDiagnostics = await generationDiagnostics({\n diagnostics,\n outputs: [\n { relative: cloudSetupPath, destination },\n { relative: cloudClaudeSettingsPath, destination: settingsDestination },\n ],\n });\n if (remainingDiagnostics.length > 0)\n throw new Error(\n remainingDiagnostics\n .map(\n ({ path, message }) =>\n `${path}: ${message}${path === cloudClaudeSettingsPath ? `; ${cloudSessionStartFix}` : \"\"}`,\n )\n .join(\"\\n\"),\n );\n const text = files[\"stll-toolchain.json\"];\n if (text === undefined)\n throw new Error(\"requires tracked stll-toolchain.json\");\n const { cloud, rustExceptions } = parseToolchainConfiguration(\n JSON.parse(text),\n );\n if (cloud === undefined)\n throw new Error(\"requires an explicit cloud declaration\");\n const nodeVersion = files[\".node-version\"];\n if (nodeVersion === undefined)\n throw new Error(\"requires tracked root .node-version\");\n const sharedPolicy = parseToolchainPolicy(\n JSON.parse(\n await readFile(new URL(\"../toolchain.json\", import.meta.url), \"utf8\"),\n ),\n );\n const policy = {\n ...sharedPolicy,\n bun: repositoryBun(sharedPolicy.bun, files[\"package.json\"]),\n };\n const script = generateCloudSetup({\n policy,\n cloud,\n nodeVersion: nodeVersion.trim(),\n files,\n rustExceptions,\n });\n const mergedSettings = mergeCloudClaudeSettings(settings?.text);\n await writeGeneratedFile({ destination, text: script, mode: 0o755 });\n if (mergedSettings !== settings?.text)\n await writeGeneratedFile({\n destination: settingsDestination,\n text: mergedSettings,\n mode: settings?.mode ?? 0o644,\n });\n process.stdout.write(\n `Generated ${cloudSetupPath} and ${cloudClaudeSettingsPath}\\n`,\n );\n};\n\nmain().catch((error: unknown) => {\n process.stderr.write(\n `cloud-setup: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n process.exitCode = 1;\n});\n"],"mappings":";;;;;;;;;;AAuBA,MAAM,QACJ;AACF,MAAM,qBAAqB,OAAO,gBAAwB;CACxD,IAAI;EACF,IAAK,MAAM,qBAAqB,WAAW,MAAO,KAAA,GAChD,OAAO,KAAA;EACT,MAAM,QAAQ,MAAM,KAClB,aACA,UAAU,WAAW,UAAU,UACjC;EACA,IAAI;GACF,MAAM,SAAS,MAAM,MAAM,KAAK;GAChC,IAAI,CAAC,OAAO,OAAO,KAAK,OAAO,UAAU,GACvC,MAAM,IAAI,MACR,wDACF;GACF,OAAO;IAAE,MAAM,MAAM,MAAM,SAAS,MAAM;IAAG,MAAM,OAAO,OAAO;GAAM;EACzE,UAAU;GACR,MAAM,MAAM,MAAM;EACpB;CACF,SAAS,OAAO;EACd,MAAM,IAAI,MACR,uBAAuB,wBAAwB,IAAI,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,IAAI,sBAChH;CACF;AACF;AAEA,MAAM,OAAO,YAAY;CACvB,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;CACjC,IAAI,KAAK,WAAW,KAAK,KAAK,GAAG,CAAC,MAAM,UAAU;EAChD,QAAQ,OAAO,MAAM,GAAG,MAAM,GAAG;EACjC;CACF;CACA,IAAI,KAAK,WAAW,GAAG,MAAM,IAAI,MAAM,KAAK;CAC5C,MAAM,OAAO,MAAM,SAAS,QAAQ,IAAI,CAAC;CACzC,MAAM,EAAE,OAAO,gBAAgB,oBAAoB,IAAI;CACvD,MAAM,cAAc,KAAK,MAAM,cAAc;CAC7C,MAAM,sBAAsB,KAAK,MAAM,uBAAuB;CAE9D,MAAM,WAAW,MAAM,mBAAmB,mBAAmB;CAC7D,MAAM,uBAAuB,MAAM,sBAAsB;EACvD;EACA,SAAS,CACP;GAAE,UAAU;GAAgB;EAAY,GACxC;GAAE,UAAU;GAAyB,aAAa;EAAoB,CACxE;CACF,CAAC;CACD,IAAI,qBAAqB,SAAS,GAChC,MAAM,IAAI,MACR,qBACG,KACE,EAAE,MAAM,cACP,GAAG,KAAK,IAAI,UAAU,SAAA,0BAAmC,KAAK,yBAAyB,IAC3F,CAAC,CACA,KAAK,IAAI,CACd;CACF,MAAM,OAAO,MAAM;CACnB,IAAI,SAAS,KAAA,GACX,MAAM,IAAI,MAAM,sCAAsC;CACxD,MAAM,EAAE,OAAO,mBAAmB,4BAChC,KAAK,MAAM,IAAI,CACjB;CACA,IAAI,UAAU,KAAA,GACZ,MAAM,IAAI,MAAM,wCAAwC;CAC1D,MAAM,cAAc,MAAM;CAC1B,IAAI,gBAAgB,KAAA,GAClB,MAAM,IAAI,MAAM,qCAAqC;CACvD,MAAM,eAAe,qBACnB,KAAK,MACH,MAAM,SAAS,IAAI,IAAI,qBAAqB,YAAY,GAAG,GAAG,MAAM,CACtE,CACF;CACA,MAAM,SAAS;EACb,GAAG;EACH,KAAK,cAAc,aAAa,KAAK,MAAM,eAAe;CAC5D;CACA,MAAM,SAAS,mBAAmB;EAChC;EACA;EACA,aAAa,YAAY,KAAK;EAC9B;EACA;CACF,CAAC;CACD,MAAM,iBAAiB,yBAAyB,UAAU,IAAI;CAC9D,MAAM,mBAAmB;EAAE;EAAa,MAAM;EAAQ,MAAM;CAAM,CAAC;CACnE,IAAI,mBAAmB,UAAU,MAC/B,MAAM,mBAAmB;EACvB,aAAa;EACb,MAAM;EACN,MAAM,UAAU,QAAQ;CAC1B,CAAC;CACH,QAAQ,OAAO,MACb,aAAa,eAAe,OAAO,wBAAwB,GAC7D;AACF;AAEA,KAAK,CAAC,CAAC,OAAO,UAAmB;CAC/B,QAAQ,OAAO,MACb,gBAAgB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GACzE;CACA,QAAQ,WAAW;AACrB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  //#region src/toolchain-dependabot.d.ts
2
- declare const supportedDependabotEcosystems: readonly ["bazel", "bun", "bundler", "cargo", "composer", "conda", "deno", "devcontainers", "docker", "docker-compose", "dotnet-sdk", "elm", "gitsubmodule", "github-actions", "gomod", "gradle", "helm", "julia", "maven", "mix", "nix", "npm", "nuget", "opentofu", "pip", "pre-commit", "pub", "rust-toolchain", "sbt", "swift", "terraform", "uv", "vcpkg"];
2
+ export declare const supportedDependabotEcosystems: readonly ["bazel", "bun", "bundler", "cargo", "composer", "conda", "deno", "devcontainers", "docker", "docker-compose", "dotnet-sdk", "elm", "gitsubmodule", "github-actions", "gomod", "gradle", "helm", "julia", "maven", "mix", "nix", "npm", "nuget", "opentofu", "pip", "pre-commit", "pub", "rust-toolchain", "sbt", "swift", "terraform", "uv", "vcpkg"];
3
3
  type DependabotEcosystem = (typeof supportedDependabotEcosystems)[number];
4
4
  type DependabotPolicy = {
5
5
  schedule: {
@@ -11,6 +11,9 @@ type DependabotPolicy = {
11
11
  cooldown: {
12
12
  defaultDays: number;
13
13
  };
14
+ actionGroups: Record<string, {
15
+ patterns: readonly string[];
16
+ }>;
14
17
  groups: Record<string, {
15
18
  patterns: readonly string[];
16
19
  updateTypes: readonly string[];
@@ -19,7 +22,7 @@ type DependabotPolicy = {
19
22
  ignoredActions: readonly string[];
20
23
  ignoredImages: readonly string[];
21
24
  };
22
- declare const dependabotIgnoreUpdateTypes: readonly ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"];
25
+ export declare const dependabotIgnoreUpdateTypes: readonly ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"];
23
26
  type DependabotIgnoreUpdateType = (typeof dependabotIgnoreUpdateTypes)[number];
24
27
  /** A reviewed repository decision to skip some version updates of one dependency. */
25
28
  type DependabotIgnoreDeclaration = {
@@ -31,7 +34,7 @@ type DependabotIgnoreDeclaration = {
31
34
  readonly reason: string;
32
35
  };
33
36
  /** Parse `dependabotIgnores` from stll-toolchain.json; malformed decisions fail closed. */
34
- declare const parseDependabotIgnores: (input: unknown) => DependabotIgnoreDeclaration[];
37
+ export declare const parseDependabotIgnores: (input: unknown) => DependabotIgnoreDeclaration[];
35
38
  type CheckDependabotOptions = {
36
39
  files: Record<string, string>;
37
40
  policy: DependabotPolicy;
@@ -39,7 +42,7 @@ type CheckDependabotOptions = {
39
42
  ignores?: readonly DependabotIgnoreDeclaration[] | undefined;
40
43
  };
41
44
  /** Repository declarations own coverage only; shared policy owns every update option. */
42
- declare const parseDependabotInput: (input: unknown) => {
45
+ export declare const parseDependabotInput: (input: unknown) => {
43
46
  ecosystem: "bazel" | "bun" | "bundler" | "cargo" | "composer" | "conda" | "deno" | "devcontainers" | "docker" | "docker-compose" | "dotnet-sdk" | "elm" | "github-actions" | "gitsubmodule" | "gomod" | "gradle" | "helm" | "julia" | "maven" | "mix" | "nix" | "npm" | "nuget" | "opentofu" | "pip" | "pre-commit" | "pub" | "rust-toolchain" | "sbt" | "swift" | "terraform" | "uv" | "vcpkg";
44
47
  directories: string[];
45
48
  }[];
@@ -47,7 +50,7 @@ type GenerateDependabotOptions = CheckDependabotOptions & {
47
50
  updates?: ReturnType<typeof parseDependabotInput> | undefined;
48
51
  };
49
52
  /** Generate canonical YAML from the same ecosystem enumeration used by the guard. */
50
- declare const generateDependabotConfig: ({ files, policy, updates: declarations, ignores }: GenerateDependabotOptions) => string;
53
+ export declare const generateDependabotConfig: ({ files, policy, updates: declarations, ignores }: GenerateDependabotOptions) => string;
51
54
  //#endregion
52
55
  //#region src/toolchain-formatter.d.ts
53
56
  type FormatterStyle = Readonly<Record<string, unknown>>;
@@ -60,7 +63,7 @@ type FormatterPolicy = {
60
63
  //#endregion
61
64
  //#region src/toolchain-schema.d.ts
62
65
  /** Reject unsupported or incomplete installed policies before inspecting a consumer. */
63
- declare const parseToolchainPolicy: (input: unknown) => {
66
+ export declare const parseToolchainPolicy: (input: unknown) => {
64
67
  bun: string;
65
68
  formatter: FormatterPolicy;
66
69
  typescript: string;
@@ -129,6 +132,9 @@ declare const parseToolchainPolicy: (input: unknown) => {
129
132
  cooldown: {
130
133
  defaultDays: number;
131
134
  };
135
+ actionGroups: Record<string, {
136
+ patterns: string[];
137
+ }>;
132
138
  groups: Record<string, {
133
139
  patterns: string[];
134
140
  updateTypes: string[];
@@ -139,5 +145,5 @@ declare const parseToolchainPolicy: (input: unknown) => {
139
145
  };
140
146
  };
141
147
  //#endregion
142
- export { type DependabotEcosystem, type DependabotIgnoreDeclaration, type DependabotIgnoreUpdateType, dependabotIgnoreUpdateTypes, generateDependabotConfig, parseDependabotIgnores, parseDependabotInput, parseToolchainPolicy, supportedDependabotEcosystems };
148
+ export type { DependabotEcosystem, DependabotIgnoreDeclaration, DependabotIgnoreUpdateType };
143
149
  //# sourceMappingURL=dependabot.d.cts.map
@@ -1,5 +1,5 @@
1
1
  //#region src/toolchain-dependabot.d.ts
2
- declare const supportedDependabotEcosystems: readonly ["bazel", "bun", "bundler", "cargo", "composer", "conda", "deno", "devcontainers", "docker", "docker-compose", "dotnet-sdk", "elm", "gitsubmodule", "github-actions", "gomod", "gradle", "helm", "julia", "maven", "mix", "nix", "npm", "nuget", "opentofu", "pip", "pre-commit", "pub", "rust-toolchain", "sbt", "swift", "terraform", "uv", "vcpkg"];
2
+ export declare const supportedDependabotEcosystems: readonly ["bazel", "bun", "bundler", "cargo", "composer", "conda", "deno", "devcontainers", "docker", "docker-compose", "dotnet-sdk", "elm", "gitsubmodule", "github-actions", "gomod", "gradle", "helm", "julia", "maven", "mix", "nix", "npm", "nuget", "opentofu", "pip", "pre-commit", "pub", "rust-toolchain", "sbt", "swift", "terraform", "uv", "vcpkg"];
3
3
  type DependabotEcosystem = (typeof supportedDependabotEcosystems)[number];
4
4
  type DependabotPolicy = {
5
5
  schedule: {
@@ -11,6 +11,9 @@ type DependabotPolicy = {
11
11
  cooldown: {
12
12
  defaultDays: number;
13
13
  };
14
+ actionGroups: Record<string, {
15
+ patterns: readonly string[];
16
+ }>;
14
17
  groups: Record<string, {
15
18
  patterns: readonly string[];
16
19
  updateTypes: readonly string[];
@@ -19,7 +22,7 @@ type DependabotPolicy = {
19
22
  ignoredActions: readonly string[];
20
23
  ignoredImages: readonly string[];
21
24
  };
22
- declare const dependabotIgnoreUpdateTypes: readonly ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"];
25
+ export declare const dependabotIgnoreUpdateTypes: readonly ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"];
23
26
  type DependabotIgnoreUpdateType = (typeof dependabotIgnoreUpdateTypes)[number];
24
27
  /** A reviewed repository decision to skip some version updates of one dependency. */
25
28
  type DependabotIgnoreDeclaration = {
@@ -31,7 +34,7 @@ type DependabotIgnoreDeclaration = {
31
34
  readonly reason: string;
32
35
  };
33
36
  /** Parse `dependabotIgnores` from stll-toolchain.json; malformed decisions fail closed. */
34
- declare const parseDependabotIgnores: (input: unknown) => DependabotIgnoreDeclaration[];
37
+ export declare const parseDependabotIgnores: (input: unknown) => DependabotIgnoreDeclaration[];
35
38
  type CheckDependabotOptions = {
36
39
  files: Record<string, string>;
37
40
  policy: DependabotPolicy;
@@ -39,7 +42,7 @@ type CheckDependabotOptions = {
39
42
  ignores?: readonly DependabotIgnoreDeclaration[] | undefined;
40
43
  };
41
44
  /** Repository declarations own coverage only; shared policy owns every update option. */
42
- declare const parseDependabotInput: (input: unknown) => {
45
+ export declare const parseDependabotInput: (input: unknown) => {
43
46
  ecosystem: "bazel" | "bun" | "bundler" | "cargo" | "composer" | "conda" | "deno" | "devcontainers" | "docker" | "docker-compose" | "dotnet-sdk" | "elm" | "github-actions" | "gitsubmodule" | "gomod" | "gradle" | "helm" | "julia" | "maven" | "mix" | "nix" | "npm" | "nuget" | "opentofu" | "pip" | "pre-commit" | "pub" | "rust-toolchain" | "sbt" | "swift" | "terraform" | "uv" | "vcpkg";
44
47
  directories: string[];
45
48
  }[];
@@ -47,7 +50,7 @@ type GenerateDependabotOptions = CheckDependabotOptions & {
47
50
  updates?: ReturnType<typeof parseDependabotInput> | undefined;
48
51
  };
49
52
  /** Generate canonical YAML from the same ecosystem enumeration used by the guard. */
50
- declare const generateDependabotConfig: ({ files, policy, updates: declarations, ignores }: GenerateDependabotOptions) => string;
53
+ export declare const generateDependabotConfig: ({ files, policy, updates: declarations, ignores }: GenerateDependabotOptions) => string;
51
54
  //#endregion
52
55
  //#region src/toolchain-formatter.d.ts
53
56
  type FormatterStyle = Readonly<Record<string, unknown>>;
@@ -60,7 +63,7 @@ type FormatterPolicy = {
60
63
  //#endregion
61
64
  //#region src/toolchain-schema.d.ts
62
65
  /** Reject unsupported or incomplete installed policies before inspecting a consumer. */
63
- declare const parseToolchainPolicy: (input: unknown) => {
66
+ export declare const parseToolchainPolicy: (input: unknown) => {
64
67
  bun: string;
65
68
  formatter: FormatterPolicy;
66
69
  typescript: string;
@@ -129,6 +132,9 @@ declare const parseToolchainPolicy: (input: unknown) => {
129
132
  cooldown: {
130
133
  defaultDays: number;
131
134
  };
135
+ actionGroups: Record<string, {
136
+ patterns: string[];
137
+ }>;
132
138
  groups: Record<string, {
133
139
  patterns: string[];
134
140
  updateTypes: string[];
@@ -139,5 +145,5 @@ declare const parseToolchainPolicy: (input: unknown) => {
139
145
  };
140
146
  };
141
147
  //#endregion
142
- export { type DependabotEcosystem, type DependabotIgnoreDeclaration, type DependabotIgnoreUpdateType, dependabotIgnoreUpdateTypes, generateDependabotConfig, parseDependabotIgnores, parseDependabotInput, parseToolchainPolicy, supportedDependabotEcosystems };
148
+ export type { DependabotEcosystem, DependabotIgnoreDeclaration, DependabotIgnoreUpdateType };
143
149
  //# sourceMappingURL=dependabot.d.mts.map
@@ -1,21 +1,20 @@
1
1
  //#region src/engine-support.d.ts
2
- type EnginePackage = {
2
+ export type EnginePackage = {
3
3
  name: string;
4
4
  node?: string;
5
5
  changesetsManaged: boolean;
6
6
  };
7
- type EngineSupportInput = {
7
+ export type EngineSupportInput = {
8
8
  base: ReadonlyMap<string, EnginePackage>;
9
9
  head: ReadonlyMap<string, EnginePackage>;
10
10
  majorReleases: ReadonlySet<string>;
11
11
  };
12
- type EngineSupportFailure = {
12
+ export type EngineSupportFailure = {
13
13
  packageName: string;
14
14
  baseRange: string;
15
15
  headRange: string;
16
16
  };
17
17
  /** Returns engine-support changes that require a pending major release. */
18
- declare const checkEngineSupport: ({ base, head, majorReleases }: EngineSupportInput) => EngineSupportFailure[];
18
+ export declare const checkEngineSupport: ({ base, head, majorReleases }: EngineSupportInput) => EngineSupportFailure[];
19
19
  //#endregion
20
- export { EnginePackage, EngineSupportFailure, EngineSupportInput, checkEngineSupport };
21
20
  //# sourceMappingURL=engine-support.d.cts.map
@@ -1,21 +1,20 @@
1
1
  //#region src/engine-support.d.ts
2
- type EnginePackage = {
2
+ export type EnginePackage = {
3
3
  name: string;
4
4
  node?: string;
5
5
  changesetsManaged: boolean;
6
6
  };
7
- type EngineSupportInput = {
7
+ export type EngineSupportInput = {
8
8
  base: ReadonlyMap<string, EnginePackage>;
9
9
  head: ReadonlyMap<string, EnginePackage>;
10
10
  majorReleases: ReadonlySet<string>;
11
11
  };
12
- type EngineSupportFailure = {
12
+ export type EngineSupportFailure = {
13
13
  packageName: string;
14
14
  baseRange: string;
15
15
  headRange: string;
16
16
  };
17
17
  /** Returns engine-support changes that require a pending major release. */
18
- declare const checkEngineSupport: ({ base, head, majorReleases }: EngineSupportInput) => EngineSupportFailure[];
18
+ export declare const checkEngineSupport: ({ base, head, majorReleases }: EngineSupportInput) => EngineSupportFailure[];
19
19
  //#endregion
20
- export { EnginePackage, EngineSupportFailure, EngineSupportInput, checkEngineSupport };
21
20
  //# sourceMappingURL=engine-support.d.mts.map
package/dist/index.d.cts CHANGED
@@ -4,7 +4,7 @@ type Rules = NonNullable<OxlintConfig["rules"]>;
4
4
  type JsPlugins = NonNullable<OxlintConfig["jsPlugins"]>;
5
5
  type Options = NonNullable<OxlintConfig["options"]>;
6
6
  type Plugins = NonNullable<OxlintConfig["plugins"]>;
7
- type LibraryOptions = {
7
+ export type LibraryOptions = {
8
8
  jsPlugins?: JsPlugins;
9
9
  ignorePatterns?: string[];
10
10
  options?: Options;
@@ -15,11 +15,11 @@ type LibraryOptions = {
15
15
  files: [string, ...string[]];
16
16
  };
17
17
  };
18
- declare const stellaLowercasePluginSpecifier = "@stll/oxlint-config/plugin";
19
- declare const noRawColorsPluginSpecifier = "@stll/oxlint-config/no-raw-colors";
20
- declare const libraryIgnorePatterns: string[];
21
- declare const libraryPlugins: ("eslint" | "import" | "oxc" | "promise" | "typescript" | "unicorn")[];
22
- declare const reactCompilerRules: {
18
+ export declare const stellaLowercasePluginSpecifier = "@stll/oxlint-config/plugin";
19
+ export declare const noRawColorsPluginSpecifier = "@stll/oxlint-config/no-raw-colors";
20
+ export declare const libraryIgnorePatterns: string[];
21
+ export declare const libraryPlugins: ("eslint" | "import" | "oxc" | "promise" | "typescript" | "unicorn")[];
22
+ export declare const reactCompilerRules: {
23
23
  "react/capitalized-calls": "error";
24
24
  "react/error-boundaries": "error";
25
25
  "react/exhaustive-effect-dependencies": "error";
@@ -43,7 +43,7 @@ declare const reactCompilerRules: {
43
43
  "react/use-memo": "error";
44
44
  "react/void-use-memo": "error";
45
45
  };
46
- declare const libraryRules: {
46
+ export declare const libraryRules: {
47
47
  "no-console": "off";
48
48
  "no-shadow": "error";
49
49
  "require-await": "error";
@@ -132,7 +132,7 @@ declare const libraryRules: {
132
132
  "func-names": "off";
133
133
  "default-case": "off";
134
134
  };
135
- declare const reactRules: {
135
+ export declare const reactRules: {
136
136
  "react/capitalized-calls": "error";
137
137
  "react/error-boundaries": "error";
138
138
  "react/exhaustive-effect-dependencies": "error";
@@ -175,7 +175,7 @@ declare const reactRules: {
175
175
  "react/no-will-update-set-state": "off";
176
176
  "react/void-dom-elements-no-children": "off";
177
177
  };
178
- declare const libraryOverrides: {
178
+ export declare const libraryOverrides: {
179
179
  files: string[];
180
180
  rules: {
181
181
  "no-console": "off";
@@ -183,8 +183,8 @@ declare const libraryOverrides: {
183
183
  "no-non-null-assertion": "off";
184
184
  };
185
185
  }[];
186
- declare const library: (options?: LibraryOptions) => OxlintConfig;
186
+ export declare const library: (options?: LibraryOptions) => OxlintConfig;
187
187
  declare const _default: OxlintConfig;
188
188
  //#endregion
189
- export { LibraryOptions, _default as default, library, libraryIgnorePatterns, libraryOverrides, libraryPlugins, libraryRules, noRawColorsPluginSpecifier, reactCompilerRules, reactRules, stellaLowercasePluginSpecifier };
189
+ export { _default as default };
190
190
  //# sourceMappingURL=index.d.cts.map
package/dist/index.d.mts CHANGED
@@ -4,7 +4,7 @@ type Rules = NonNullable<OxlintConfig["rules"]>;
4
4
  type JsPlugins = NonNullable<OxlintConfig["jsPlugins"]>;
5
5
  type Options = NonNullable<OxlintConfig["options"]>;
6
6
  type Plugins = NonNullable<OxlintConfig["plugins"]>;
7
- type LibraryOptions = {
7
+ export type LibraryOptions = {
8
8
  jsPlugins?: JsPlugins;
9
9
  ignorePatterns?: string[];
10
10
  options?: Options;
@@ -15,11 +15,11 @@ type LibraryOptions = {
15
15
  files: [string, ...string[]];
16
16
  };
17
17
  };
18
- declare const stellaLowercasePluginSpecifier = "@stll/oxlint-config/plugin";
19
- declare const noRawColorsPluginSpecifier = "@stll/oxlint-config/no-raw-colors";
20
- declare const libraryIgnorePatterns: string[];
21
- declare const libraryPlugins: ("eslint" | "import" | "oxc" | "promise" | "typescript" | "unicorn")[];
22
- declare const reactCompilerRules: {
18
+ export declare const stellaLowercasePluginSpecifier = "@stll/oxlint-config/plugin";
19
+ export declare const noRawColorsPluginSpecifier = "@stll/oxlint-config/no-raw-colors";
20
+ export declare const libraryIgnorePatterns: string[];
21
+ export declare const libraryPlugins: ("eslint" | "import" | "oxc" | "promise" | "typescript" | "unicorn")[];
22
+ export declare const reactCompilerRules: {
23
23
  "react/capitalized-calls": "error";
24
24
  "react/error-boundaries": "error";
25
25
  "react/exhaustive-effect-dependencies": "error";
@@ -43,7 +43,7 @@ declare const reactCompilerRules: {
43
43
  "react/use-memo": "error";
44
44
  "react/void-use-memo": "error";
45
45
  };
46
- declare const libraryRules: {
46
+ export declare const libraryRules: {
47
47
  "no-console": "off";
48
48
  "no-shadow": "error";
49
49
  "require-await": "error";
@@ -132,7 +132,7 @@ declare const libraryRules: {
132
132
  "func-names": "off";
133
133
  "default-case": "off";
134
134
  };
135
- declare const reactRules: {
135
+ export declare const reactRules: {
136
136
  "react/capitalized-calls": "error";
137
137
  "react/error-boundaries": "error";
138
138
  "react/exhaustive-effect-dependencies": "error";
@@ -175,7 +175,7 @@ declare const reactRules: {
175
175
  "react/no-will-update-set-state": "off";
176
176
  "react/void-dom-elements-no-children": "off";
177
177
  };
178
- declare const libraryOverrides: {
178
+ export declare const libraryOverrides: {
179
179
  files: string[];
180
180
  rules: {
181
181
  "no-console": "off";
@@ -183,8 +183,8 @@ declare const libraryOverrides: {
183
183
  "no-non-null-assertion": "off";
184
184
  };
185
185
  }[];
186
- declare const library: (options?: LibraryOptions) => OxlintConfig;
186
+ export declare const library: (options?: LibraryOptions) => OxlintConfig;
187
187
  declare const _default: OxlintConfig;
188
188
  //#endregion
189
- export { LibraryOptions, _default as default, library, libraryIgnorePatterns, libraryOverrides, libraryPlugins, libraryRules, noRawColorsPluginSpecifier, reactCompilerRules, reactRules, stellaLowercasePluginSpecifier };
189
+ export { _default as default };
190
190
  //# sourceMappingURL=index.d.mts.map
@@ -1,10 +1,9 @@
1
1
  //#region src/publish-build-target-nuxt-helper.d.ts
2
2
  /** Configure both module and runtime JavaScript without replacing Nuxt entries. */
3
- declare const nuxtModuleTarget: (target: string | string[]) => (context: unknown) => void;
3
+ export declare const nuxtModuleTarget: (target: string | string[]) => (context: unknown) => void;
4
4
  /** Read immutable target data across ESM and CommonJS without executing the callback. */
5
- declare const nuxtModuleTargetTargets: (value: unknown) => string[] | undefined;
5
+ export declare const nuxtModuleTargetTargets: (value: unknown) => string[] | undefined;
6
6
  /** Recognize the same declared target data across ESM and CommonJS modules. */
7
- declare const isNuxtModuleTargetHook: (value: unknown) => boolean;
7
+ export declare const isNuxtModuleTargetHook: (value: unknown) => boolean;
8
8
  //#endregion
9
- export { isNuxtModuleTargetHook, nuxtModuleTarget, nuxtModuleTargetTargets };
10
9
  //# sourceMappingURL=publish-build-target-nuxt-helper.d.cts.map
@@ -1,10 +1,9 @@
1
1
  //#region src/publish-build-target-nuxt-helper.d.ts
2
2
  /** Configure both module and runtime JavaScript without replacing Nuxt entries. */
3
- declare const nuxtModuleTarget: (target: string | string[]) => (context: unknown) => void;
3
+ export declare const nuxtModuleTarget: (target: string | string[]) => (context: unknown) => void;
4
4
  /** Read immutable target data across ESM and CommonJS without executing the callback. */
5
- declare const nuxtModuleTargetTargets: (value: unknown) => string[] | undefined;
5
+ export declare const nuxtModuleTargetTargets: (value: unknown) => string[] | undefined;
6
6
  /** Recognize the same declared target data across ESM and CommonJS modules. */
7
- declare const isNuxtModuleTargetHook: (value: unknown) => boolean;
7
+ export declare const isNuxtModuleTargetHook: (value: unknown) => boolean;
8
8
  //#endregion
9
- export { isNuxtModuleTargetHook, nuxtModuleTarget, nuxtModuleTargetTargets };
10
9
  //# sourceMappingURL=publish-build-target-nuxt-helper.d.mts.map
@@ -18,7 +18,7 @@ type DeclarationOnlyDtsOptions = {
18
18
  directory: string;
19
19
  } & ReviewedViteDtsOptions;
20
20
  /** The actual build uses this closed factory and its guarded declaration hooks. */
21
- declare const declarationOnlyDts: ({ directory, ...options }: DeclarationOnlyDtsOptions) => Plugin;
21
+ export declare const declarationOnlyDts: ({ directory, ...options }: DeclarationOnlyDtsOptions) => Plugin;
22
22
  //#endregion
23
- export { declarationOnlyDts };
23
+ export {};
24
24
  //# sourceMappingURL=publish-build-target-vite-dts-helper.d.cts.map
@@ -18,7 +18,7 @@ type DeclarationOnlyDtsOptions = {
18
18
  directory: string;
19
19
  } & ReviewedViteDtsOptions;
20
20
  /** The actual build uses this closed factory and its guarded declaration hooks. */
21
- declare const declarationOnlyDts: ({ directory, ...options }: DeclarationOnlyDtsOptions) => Plugin;
21
+ export declare const declarationOnlyDts: ({ directory, ...options }: DeclarationOnlyDtsOptions) => Plugin;
22
22
  //#endregion
23
- export { declarationOnlyDts };
23
+ export {};
24
24
  //# sourceMappingURL=publish-build-target-vite-dts-helper.d.mts.map