@deltabox/toolchain 1.11.4 → 2.1.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/CHANGELOG.md +336 -4
- package/README.md +21 -14
- package/dist/_virtual/_rolldown/runtime.js +1 -1
- package/dist/changelog.d.ts +10 -6
- package/dist/changelog.js +1 -1
- package/dist/cli/commands/index.js +1 -1
- package/dist/cli/commands/providers.js +1 -1
- package/dist/cli/commands/reset.js +1 -1
- package/dist/cli/commands/shared.js +1 -1
- package/dist/cli/commands/sync.js +1 -1
- package/dist/cli/commands/watch.js +1 -1
- package/dist/cli/config-selection.d.ts +23 -0
- package/dist/cli/config-selection.js +1 -0
- package/dist/cli/context.js +1 -1
- package/dist/cli/index.d.ts +5 -3
- package/dist/cli/index.js +1 -1
- package/dist/cli/register.js +1 -1
- package/dist/config.d.ts +8 -8
- package/dist/config.js +1 -1
- package/dist/core.d.ts +7 -6
- package/dist/core.js +1 -1
- package/dist/globals.d.ts +31 -0
- package/dist/globals.js +1 -0
- package/dist/index.d.ts +33 -11
- package/dist/index.js +1 -1
- package/dist/migrate.d.ts +3 -2
- package/dist/migrate.js +1 -1
- package/dist/package.js +1 -1
- package/dist/packages/biome/src/index.d.ts +2 -1
- package/dist/packages/biome/src/index.js +1 -1
- package/dist/packages/changelog/src/cli/index.js +1 -1
- package/dist/packages/changelog/src/index.d.ts +11 -7
- package/dist/packages/changelog/src/index.js +1 -1
- package/dist/packages/changelog/src/run-workflows.d.ts +19 -4
- package/dist/packages/changelog/src/run-workflows.js +1 -1
- package/dist/packages/changelog/src/run.d.ts +4 -3
- package/dist/packages/changelog/src/run.js +1 -1
- package/dist/packages/changelog/src/sync.d.ts +7 -4
- package/dist/packages/changelog/src/sync.js +1 -1
- package/dist/packages/changelog/src/utils/args.js +1 -1
- package/dist/packages/changelog/src/utils/breaking.d.ts +16 -0
- package/dist/packages/changelog/src/utils/breaking.js +1 -0
- package/dist/packages/changelog/src/utils/format.d.ts +2 -1
- package/dist/packages/changelog/src/utils/format.js +5 -5
- package/dist/packages/changelog/src/utils/git.d.ts +3 -1
- package/dist/packages/changelog/src/utils/git.js +1 -1
- package/dist/packages/changelog/src/utils/reformat.d.ts +4 -1
- package/dist/packages/changelog/src/utils/reformat.js +4 -4
- package/dist/packages/changelog/src/utils/release-notes.d.ts +18 -0
- package/dist/packages/changelog/src/utils/release-notes.js +1 -0
- package/dist/packages/changelog/src/utils/summary.d.ts +29 -2
- package/dist/packages/changelog/src/utils/summary.js +3 -1
- package/dist/packages/changelog/src/utils/types.d.ts +39 -2
- package/dist/packages/changelog/src/utils/version.d.ts +1 -0
- package/dist/packages/changelog/src/utils/versioning.d.ts +30 -4
- package/dist/packages/changelog/src/utils/versioning.js +1 -1
- package/dist/packages/changelog/src/utils/write.js +1 -1
- package/dist/packages/changelog/src/workflows.d.ts +27 -7
- package/dist/packages/changelog/src/workflows.js +5 -5
- package/dist/packages/config/src/cli/index.js +1 -1
- package/dist/packages/config/src/collect.d.ts +10 -8
- package/dist/packages/config/src/collect.js +1 -1
- package/dist/packages/config/src/config-json.d.ts +4 -4
- package/dist/packages/config/src/config-json.js +1 -1
- package/dist/packages/config/src/engine.d.ts +14 -25
- package/dist/packages/config/src/engine.js +1 -1
- package/dist/packages/config/src/env-file.d.ts +4 -4
- package/dist/packages/config/src/env-file.js +2 -2
- package/dist/packages/config/src/env.d.ts +4 -6
- package/dist/packages/config/src/env.js +1 -1
- package/dist/packages/config/src/generators/cli.d.ts +6 -6
- package/dist/packages/config/src/generators/cli.js +1 -1
- package/dist/packages/config/src/generators/env.d.ts +9 -9
- package/dist/packages/config/src/generators/env.js +2 -2
- package/dist/packages/config/src/generators/index.d.ts +4 -4
- package/dist/packages/config/src/generators/index.js +1 -1
- package/dist/packages/config/src/generators/json.d.ts +5 -7
- package/dist/packages/config/src/generators/json.js +1 -1
- package/dist/packages/config/src/generators/markdown.d.ts +57 -35
- package/dist/packages/config/src/generators/markdown.js +18 -19
- package/dist/packages/config/src/generators/types.d.ts +28 -23
- package/dist/packages/config/src/generators/types.js +3 -3
- package/dist/packages/config/src/index.d.ts +9 -9
- package/dist/packages/config/src/index.js +1 -1
- package/dist/packages/config/src/schema.d.ts +31 -3
- package/dist/packages/config/src/schema.js +1 -1
- package/dist/packages/config/src/types.d.ts +134 -28
- package/dist/packages/core/src/editor-config.d.ts +14 -0
- package/dist/packages/core/src/editor-config.js +1 -0
- package/dist/packages/core/src/graph.js +1 -1
- package/dist/packages/core/src/index.d.ts +8 -7
- package/dist/packages/core/src/index.js +1 -1
- package/dist/packages/core/src/loader.d.ts +20 -2
- package/dist/packages/core/src/loader.js +1 -1
- package/dist/packages/core/src/manifest.d.ts +20 -1
- package/dist/packages/core/src/manifest.js +1 -1
- package/dist/packages/core/src/provider-registry.d.ts +48 -3
- package/dist/packages/core/src/provider-registry.js +1 -1
- package/dist/packages/core/src/reset.d.ts +15 -0
- package/dist/packages/core/src/reset.js +1 -1
- package/dist/packages/core/src/sync.d.ts +10 -0
- package/dist/packages/core/src/sync.js +1 -1
- package/dist/packages/core/src/watch.d.ts +9 -0
- package/dist/packages/core/src/watch.js +1 -1
- package/dist/packages/migrate/src/cli/index.js +1 -1
- package/dist/packages/migrate/src/index.d.ts +3 -2
- package/dist/packages/migrate/src/index.js +1 -1
- package/dist/packages/migrate/src/oxc.d.ts +13 -0
- package/dist/packages/migrate/src/oxc.js +1 -0
- package/dist/packages/migrate/src/registry.js +1 -1
- package/dist/packages/migrate/src/vite-target.js +1 -1
- package/dist/packages/migrate/src/vite.d.ts +25 -3
- package/dist/packages/migrate/src/vite.js +7 -2
- package/dist/packages/project/src/catalogs.d.ts +7 -0
- package/dist/packages/project/src/catalogs.js +1 -1
- package/dist/packages/project/src/cli/index.js +1 -1
- package/dist/packages/project/src/config.d.ts +6 -0
- package/dist/packages/project/src/config.js +1 -1
- package/dist/packages/project/src/index.d.ts +5 -4
- package/dist/packages/project/src/index.js +1 -1
- package/dist/packages/project/src/sync.js +1 -1
- package/dist/packages/project/src/typescript.d.ts +64 -12
- package/dist/packages/project/src/typescript.js +12 -7
- package/dist/packages/shared/src/changelog-breaking.d.ts +31 -0
- package/dist/packages/shared/src/changelog-groups.d.ts +59 -0
- package/dist/packages/shared/src/config-schema/biome.d.ts +10 -0
- package/dist/packages/shared/src/config-schema/biome.js +1 -0
- package/dist/packages/shared/src/config-schema/catalogs.d.ts +14 -0
- package/dist/packages/shared/src/config-schema/catalogs.js +1 -0
- package/dist/packages/shared/src/config-schema/changelog.d.ts +248 -0
- package/dist/packages/shared/src/config-schema/changelog.js +1 -0
- package/dist/packages/shared/src/config-schema/ci.d.ts +390 -0
- package/dist/packages/shared/src/config-schema/ci.js +1 -0
- package/dist/packages/shared/src/config-schema/format.d.ts +38 -0
- package/dist/packages/shared/src/config-schema/format.js +1 -0
- package/dist/packages/shared/src/config-schema/index.d.ts +1654 -0
- package/dist/packages/shared/src/config-schema/index.js +1 -0
- package/dist/packages/shared/src/config-schema/logger.d.ts +19 -0
- package/dist/packages/shared/src/config-schema/logger.js +1 -0
- package/dist/packages/shared/src/config-schema/meta.d.ts +16 -0
- package/dist/packages/shared/src/config-schema/meta.js +1 -0
- package/dist/packages/shared/src/config-schema/project.d.ts +35 -0
- package/dist/packages/shared/src/config-schema/project.js +1 -0
- package/dist/packages/shared/src/config-schema/providers.d.ts +9 -0
- package/dist/packages/shared/src/config-schema/providers.js +1 -0
- package/dist/packages/shared/src/config-schema/registry.d.ts +21 -0
- package/dist/packages/shared/src/config-schema/registry.js +1 -0
- package/dist/packages/shared/src/config-schema/templates.d.ts +81 -0
- package/dist/packages/shared/src/config-schema/templates.js +1 -0
- package/dist/packages/shared/src/config-schema/tsconfig.d.ts +30 -0
- package/dist/packages/shared/src/config-schema/tsconfig.js +1 -0
- package/dist/packages/shared/src/config-schema/vite.d.ts +26 -0
- package/dist/packages/shared/src/config-schema/vite.js +1 -0
- package/dist/packages/shared/src/config-schema/watch.d.ts +11 -0
- package/dist/packages/shared/src/config-schema/watch.js +1 -0
- package/dist/packages/shared/src/config-schema/workflow.d.ts +590 -0
- package/dist/packages/shared/src/config-schema/workflow.js +1 -0
- package/dist/packages/shared/src/config-types.d.ts +295 -90
- package/dist/packages/shared/src/fs-utils.js +1 -1
- package/dist/packages/shared/src/index.d.ts +27 -7
- package/dist/packages/shared/src/index.js +1 -1
- package/dist/packages/shared/src/logger.d.ts +26 -3
- package/dist/packages/shared/src/logger.js +1 -1
- package/dist/packages/shared/src/messages.d.ts +36 -0
- package/dist/packages/shared/src/messages.js +1 -0
- package/dist/packages/shared/src/object-utils.d.ts +5 -0
- package/dist/packages/shared/src/object-utils.js +1 -1
- package/dist/packages/shared/src/registry-policy.d.ts +17 -0
- package/dist/packages/shared/src/registry-policy.js +1 -0
- package/dist/packages/shared/src/toolchain.d.ts +90 -11
- package/dist/packages/shared/src/toolchain.js +1 -1
- package/dist/packages/shared/src/types.d.ts +6 -0
- package/dist/packages/shared/src/vite-defaults.d.ts +29 -0
- package/dist/packages/shared/src/vite-defaults.js +1 -0
- package/dist/packages/template/src/builtin.js +1 -1
- package/dist/packages/template/src/cli/index.js +1 -1
- package/dist/packages/template/src/global.d.ts +130 -0
- package/dist/packages/template/src/global.js +3 -0
- package/dist/packages/template/src/index.d.ts +3 -2
- package/dist/packages/template/src/index.js +1 -1
- package/dist/packages/template/src/online.d.ts +13 -4
- package/dist/packages/template/src/online.js +1 -1
- package/dist/packages/template/src/registry.d.ts +2 -1
- package/dist/packages/template/src/registry.js +1 -1
- package/dist/packages/template/src/scaffold.d.ts +5 -1
- package/dist/packages/template/src/scaffold.js +1 -1
- package/dist/packages/tsconfig/src/cli/generate/index.d.ts +3 -0
- package/dist/packages/tsconfig/src/cli/generate/index.js +1 -1
- package/dist/packages/tsconfig/src/cli/generate/utils.d.ts +10 -1
- package/dist/packages/tsconfig/src/cli/generate/utils.js +1 -1
- package/dist/packages/tsconfig/src/cli/index.js +1 -1
- package/dist/packages/tsconfig/src/index.d.ts +7 -4
- package/dist/packages/tsconfig/src/index.js +1 -1
- package/dist/packages/tsconfig/src/overrides.d.ts +74 -0
- package/dist/packages/tsconfig/src/overrides.js +1 -0
- package/dist/packages/tsconfig/src/resolve.d.ts +62 -0
- package/dist/packages/tsconfig/src/resolve.js +3 -0
- package/dist/packages/tsconfig/src/snapshots.d.ts +50 -0
- package/dist/packages/tsconfig/src/snapshots.js +1 -0
- package/dist/packages/tsconfig/src/sync.d.ts +14 -5
- package/dist/packages/tsconfig/src/sync.js +1 -1
- package/dist/packages/tsconfig/src/templates/tsconfig.default.js +1 -1
- package/dist/packages/tsconfig/src/templates.d.ts +12 -4
- package/dist/packages/tsconfig/src/templates.js +1 -1
- package/dist/packages/vite/src/index.d.ts +2 -2
- package/dist/packages/vite/src/index.js +1 -1
- package/dist/packages/vite/src/resolve.d.ts +13 -3
- package/dist/packages/vite/src/resolve.js +1 -1
- package/dist/packages/vite/src/sync.d.ts +46 -5
- package/dist/packages/vite/src/sync.js +5 -2
- package/dist/project.d.ts +4 -3
- package/dist/project.js +1 -1
- package/dist/providers.d.ts +11 -4
- package/dist/providers.js +1 -1
- package/dist/shared.d.ts +26 -6
- package/dist/shared.js +1 -1
- package/dist/sync.js +1 -1
- package/dist/template.d.ts +3 -2
- package/dist/template.js +1 -1
- package/dist/tooling.d.ts +21 -0
- package/dist/tooling.js +1 -0
- package/dist/tsconfig.d.ts +6 -3
- package/dist/tsconfig.js +1 -1
- package/dist/vite.d.ts +2 -2
- package/dist/vite.js +1 -1
- package/package.json +28 -23
- package/dist/packages/config/src/types.js +0 -1
- package/dist/packages/shared/src/config-schema.d.ts +0 -3928
- package/dist/packages/shared/src/config-schema.js +0 -1
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import __tsdown_shims_path from 'node:path';
|
|
2
2
|
import __tsdown_shims_url from 'node:url';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { ZodType } from "zod";
|
|
6
|
-
import { Schema } from "untyped";
|
|
3
|
+
import { ConfigEngineOptions, ConfigSchema } from "../types.js";
|
|
4
|
+
import { CollectVarsOptions } from "../collect.js";
|
|
7
5
|
//#region packages/config/src/generators/markdown.d.ts
|
|
8
|
-
export interface
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
export interface RenderMarkdownFrontmatter {
|
|
7
|
+
options: GenerateMarkdownOptions;
|
|
8
|
+
}
|
|
9
|
+
export interface RenderMarkdownOptions extends Pick<ConfigEngineOptions, 'baseGroup'> {
|
|
10
|
+
/** Output directory. Set false (or omit it) to disable writing. */
|
|
11
|
+
outputDir?: string | false;
|
|
12
|
+
/** Frontmatter toggle, raw body, or callback. */
|
|
13
|
+
frontmatter?: boolean | string | ((ctx: RenderMarkdownFrontmatter) => string);
|
|
14
|
+
/** Render every scope into one file instead of one file per scope. */
|
|
15
|
+
combined?: boolean;
|
|
16
|
+
/** Show env var equivalents (default true). */
|
|
17
|
+
includeEnv?: boolean;
|
|
18
|
+
/** Show CLI flag equivalents (default true). */
|
|
19
|
+
includeCli?: boolean;
|
|
11
20
|
/** Page outline (defaults to `[2, 3, 4]`). */
|
|
12
21
|
outline?: number[];
|
|
13
|
-
/** The base group hoisted out of the nested groups (default `base`). */
|
|
14
|
-
baseGroup?: string;
|
|
15
22
|
/** The scope whose env vars render as CLI flags (default `cli`). */
|
|
16
23
|
cliScope?: string;
|
|
17
24
|
/** Env-var prefix (default `APP_`). */
|
|
@@ -36,29 +43,34 @@ export interface RenderMarkdownOptions {
|
|
|
36
43
|
/** Shorthand flags keyed by env var name (for the CLI scope). */
|
|
37
44
|
shortFlags?: Record<string, string>;
|
|
38
45
|
/** Custom env-name -> dotted-path derivation. */
|
|
39
|
-
envPathOf?:
|
|
46
|
+
envPathOf?: CollectVarsOptions['envPathOf'];
|
|
47
|
+
/** Emit `- **Required**` lines (default true). */
|
|
48
|
+
includeRequired?: boolean;
|
|
49
|
+
/** Emit `- **Deprecated**` lines (default true). */
|
|
50
|
+
includeDeprecated?: boolean;
|
|
51
|
+
/** Emit `**Example(s):**` blocks (default true). */
|
|
52
|
+
includeExamples?: boolean;
|
|
53
|
+
/** Emit `- **Since**` lines (default true). */
|
|
54
|
+
includeSince?: boolean;
|
|
55
|
+
/** Emit `- **See**` lines (default true). */
|
|
56
|
+
includeSee?: boolean;
|
|
57
|
+
/** Emit `**Remarks:**` blocks (default true). */
|
|
58
|
+
includeRemarks?: boolean;
|
|
59
|
+
/** Emit `- **Experimental**` lines (default true). */
|
|
60
|
+
includeExperimental?: boolean;
|
|
61
|
+
/** Emit `- **Alpha**` lines (default true). */
|
|
62
|
+
includeAlpha?: boolean;
|
|
63
|
+
/** Emit `- **Beta**` lines (default true). */
|
|
64
|
+
includeBeta?: boolean;
|
|
40
65
|
}
|
|
41
66
|
export interface GenerateMarkdownOptions extends RenderMarkdownOptions {
|
|
67
|
+
/** Document title (default `Configuration`). */
|
|
68
|
+
title?: string;
|
|
42
69
|
/** Index file name (defaults to `index.md`). */
|
|
43
70
|
indexFilename?: string;
|
|
44
71
|
}
|
|
45
|
-
/**
|
|
46
|
-
export declare function
|
|
47
|
-
/** Render the index file: explains the env convention + lists required/core. */
|
|
48
|
-
export declare function renderConfigIndex(scopes: ConfigScopes, options?: RenderMarkdownOptions): string;
|
|
49
|
-
/** Generate the markdown reference (per-scope files + index) into `outDir`. */
|
|
50
|
-
export declare function generateConfigMarkdown(scopes: ConfigScopes, options: GenerateMarkdownOptions & {
|
|
51
|
-
outDir: string;
|
|
52
|
-
}): string[];
|
|
53
|
-
/** A section of a config-file reference (its key + options schema). */
|
|
54
|
-
export interface ConfigFileSection {
|
|
55
|
-
/** The config key, eg. `project`. */
|
|
56
|
-
key: string;
|
|
57
|
-
/** A short description shown under the heading. */
|
|
58
|
-
description?: string;
|
|
59
|
-
/** The section's options-object schema. */
|
|
60
|
-
schema: ZodType;
|
|
61
|
-
}
|
|
72
|
+
/** Generate markdown file contents (and optionally write them). */
|
|
73
|
+
export declare function generateConfigMarkdown(schema: ConfigSchema, options?: GenerateMarkdownOptions): Record<string, string>;
|
|
62
74
|
export interface RenderConfigFileOptions {
|
|
63
75
|
/** Document title (default `Configuration`). */
|
|
64
76
|
title?: string;
|
|
@@ -66,13 +78,23 @@ export interface RenderConfigFileOptions {
|
|
|
66
78
|
intro?: string;
|
|
67
79
|
/** Page outline (default `[2, 3, 4]`). */
|
|
68
80
|
outline?: number[];
|
|
81
|
+
/** Emit `- **Required**` lines (default true). */
|
|
82
|
+
includeRequired?: boolean;
|
|
83
|
+
/** Emit `- **Deprecated**` lines (default true). */
|
|
84
|
+
includeDeprecated?: boolean;
|
|
85
|
+
/** Emit `**Example(s):**` blocks (default true). */
|
|
86
|
+
includeExamples?: boolean;
|
|
87
|
+
/** Emit `- **Since**` lines (default true). */
|
|
88
|
+
includeSince?: boolean;
|
|
89
|
+
/** Emit `- **See**` lines (default true). */
|
|
90
|
+
includeSee?: boolean;
|
|
91
|
+
/** Emit `**Remarks:**` blocks (default true). */
|
|
92
|
+
includeRemarks?: boolean;
|
|
93
|
+
/** Emit `- **Experimental**` lines (default true). */
|
|
94
|
+
includeExperimental?: boolean;
|
|
95
|
+
/** Emit `- **Alpha**` lines (default true). */
|
|
96
|
+
includeAlpha?: boolean;
|
|
97
|
+
/** Emit `- **Beta**` lines (default true). */
|
|
98
|
+
includeBeta?: boolean;
|
|
69
99
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Render a single markdown reference for a config **file** (no environment-var
|
|
72
|
-
* language): one `## \`key\`` section per schema, with its fields, types,
|
|
73
|
-
* defaults and descriptions. Named sub-schemas (`$defs`) are resolved and
|
|
74
|
-
* expanded inline, so nested options (`changelog.versioning.target`, ...) are
|
|
75
|
-
* documented too. This is what a `dbx.config.ts`-style reference is generated from.
|
|
76
|
-
*/
|
|
77
|
-
export declare function renderConfigFileMarkdown(sections: ConfigFileSection[], options?: RenderConfigFileOptions): string;
|
|
78
100
|
//#endregion
|
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
import{default as e}from"node:path";import"node:url";import.meta.url;import{sanitizeText as t,titleCase as n}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{
|
|
2
|
-
`)
|
|
3
|
-
`),
|
|
1
|
+
import{default as e}from"node:path";import"node:url";import.meta.url;import{sanitizeText as t,titleCase as n}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{isSchemaType as r,isZodSchema as i,metaOf as a,normalizeConfigSchema as o,splitBaseSchema as s}from"../schema.js";import{collectVars as c}from"../collect.js";import{cliFlagLabel as l}from"./cli.js";import u from"node:fs";function d(e){return e==null?[]:(Array.isArray(e)?e:[e]).map(e=>t(String(e))).filter(Boolean)}function f(e,n){if(e===void 0||e===!1)return;let r=typeof n==`string`?t(n.trim()):``;return r?`- **Deprecated**: ${r}`:`- **Deprecated**`}function p(e){let t=d(e);return t.length===0?[]:[``,`**Example(s):**`,``,...t.flatMap((e,t)=>t?[``,e]:[e])]}function m(e,t){return t.includeRequired!==!1&&e?`- **Required**`:void 0}function h(e,n){let r=[];if(n.includeDeprecated!==!1){let t=f(e.deprecated,e.deprecationMessage);t&&r.push(t)}if(n.includeSince!==!1&&typeof e.since==`string`&&e.since.trim()&&r.push(`- **Since**: ${t(e.since.trim())}`),n.includeSee!==!1)for(let t of d(e.see))r.push(`- **See**: ${t}`);return n.includeExperimental!==!1&&e.experimental&&r.push(`- **Experimental**`),n.includeAlpha!==!1&&e.alpha&&r.push(`- **Alpha**`),n.includeBeta!==!1&&e.beta&&r.push(`- **Beta**`),r}function g(e,n){if(n.includeRemarks===!1)return[];let r=typeof e==`string`?t(e.trim()):``;return r?[``,`**Remarks:**`,``,...r.split(`
|
|
2
|
+
`)]:[]}function _(e,n,r,i){let a=[`${r} ${n}`];if(e.type===`object`&&e.properties)return a.push(...v(e,`${r}#`,i)),a;let o=typeof e.envName==`string`?e.envName:typeof e.env==`string`?e.env:void 0;i.includeEnv!==!1&&o&&a.push(`- **Env**: \`${o}\``),i.includeCli!==!1&&typeof e.cliFlag==`string`&&a.push(`- **CLI**: \`${e.cliFlag}\``);let s=m(e.required===!0,i);return s&&a.push(s),a.push(`- **Type**: \`${e.tsType??(Array.isArray(e.type)?e.type.join(` | `):e.type)??`any`}\``),a.push(...h(e,i)),e.default!==void 0&&a.push(`- **Default**: \`${JSON.stringify(e.default)}\``),e.description&&a.push(``,t(e.description)),a.push(...g(e.remarks,i)),i.includeExamples!==!1&&a.push(...p(e.example)),a}function v(e,t,n){let r=[];for(let[i,a]of Object.entries(e.properties??{})){let e=a.cliFlag??a.envName??a.env,o=n.useFlags&&e?l(e,n):`\`${i}\``;r.push(``,..._(a,o,t,n))}return r}function y(e,t,n){let r=e.frontmatter;return r===!1?[]:[`---`,...(typeof r==`function`?r({options:e}):typeof r==`string`?r:`title: ${t}\noutline: ${JSON.stringify(n)}`).split(`
|
|
3
|
+
`),`---`,``]}function b(e,t,r={}){let i=r.outline??[2,3,4],a={useFlags:e===(r.cliScope??`cli`),baseGroup:Array.isArray(r.baseGroup)?String(r.baseGroup[0]??`base`):String(r.baseGroup??`base`),...r.envPrefix?{envPrefix:r.envPrefix}:{},...r.shortFlags?{shortFlags:r.shortFlags}:{},...r.includeRequired===void 0?{}:{includeRequired:r.includeRequired},...r.includeDeprecated===void 0?{}:{includeDeprecated:r.includeDeprecated},...r.includeExamples===void 0?{}:{includeExamples:r.includeExamples},...r.includeSince===void 0?{}:{includeSince:r.includeSince},...r.includeSee===void 0?{}:{includeSee:r.includeSee},...r.includeRemarks===void 0?{}:{includeRemarks:r.includeRemarks},...r.includeExperimental===void 0?{}:{includeExperimental:r.includeExperimental},...r.includeAlpha===void 0?{}:{includeAlpha:r.includeAlpha},...r.includeBeta===void 0?{}:{includeBeta:r.includeBeta}},{base:o,groups:c}=s(t,a.baseGroup),l=`${n(e)} Configuration`,u=[...y(r,l,i),`# ${l}`,``,`Every setting below is configured through a config value.`,``,`## Base`,``,...v(o,`###`,a)];for(let[e,t]of Object.entries(c.properties??{}))u.push(``,`## ${n(e)}`,``,...v(t,`###`,a));return`${u.join(`
|
|
4
|
+
`).trim()}\n`}function x(e){return e===void 0?`—`:Array.isArray(e)?`\`${e.join(`,`)}\``:typeof e==`object`?`\`${JSON.stringify(e)}\``:`\`${String(e)}\``}function S(e,t,n){for(let r of Object.values(e.properties??{})){let e=r;if(e.type===`object`&&e.properties)S(r,t,n);else if(e.env){let r=e.envDefault??e.default;n.push({name:e.env,scope:t,...e.description?{description:e.description}:{},...r===void 0?{}:{default:r},...e.required===!0?{required:!0}:{},...e.secret?{secret:!0}:{},...e.public?{public:!0}:{}})}}}function C(e,t={}){let n=t.outline??[2,3,4],r=Array.isArray(t.baseGroup)?String(t.baseGroup[0]??`base`):String(t.baseGroup??`base`),i=t.labels??{},a=[],l=[],u=o(e);for(let[e,t]of Object.entries(u))S(s(t,r).base,e,l);for(let n of c(e,t.envPrefix??`APP_`,{envPathOf:t.envPathOf}))n.required&&n.name&&a.push({name:n.name,scope:n.scope,...n.description?{description:n.description}:{},...n.default===void 0?{}:{default:n.default}});let d=e=>[`| Variable | Default | Description |`,`| -------- | ------- | ----------- |`,...e.map(e=>`| \`${e.name}\` | ${x(e.default)} | ${(e.description??``).replace(/\n/g,` `).replace(/\|/g,`\\|`)} |`)].join(`
|
|
5
|
+
`),f=i.title??`Environment variables`,p=t.intro??`Environment variables are prefixed with \`${t.envPrefix??`APP_`}\`.
|
|
4
6
|
The underscore is a path separator, so every config value has an environment
|
|
5
|
-
variable equivalent.`,
|
|
6
|
-
`)}\n`:``;return
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
---
|
|
7
|
+
variable equivalent.`,m=t.requiredNote??`These variables have no safe default and **must** be set:`,h=t.coreNote??`The core (base) config values:`,g=t.references&&t.references.length?`\n## References\n\n${t.references.map(e=>`- [${e.label}](${e.href})`).join(`
|
|
8
|
+
`)}\n`:``;return`${y(t,f,n).join(`
|
|
9
|
+
`)}
|
|
10
|
+
# ${f}
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
${p}
|
|
12
13
|
|
|
13
|
-
${
|
|
14
|
-
|
|
15
|
-
## ${s.required??`Required`}
|
|
14
|
+
## ${i.required??`Required`}
|
|
16
15
|
|
|
17
|
-
${
|
|
16
|
+
${m}
|
|
18
17
|
|
|
19
|
-
${
|
|
18
|
+
${d(a)}
|
|
20
19
|
|
|
21
|
-
## ${
|
|
20
|
+
## ${i.core??`Core`}
|
|
22
21
|
|
|
23
|
-
${
|
|
22
|
+
${h}
|
|
24
23
|
|
|
25
|
-
${
|
|
26
|
-
${
|
|
27
|
-
`).trim()}\n`}export{
|
|
24
|
+
${d(l)}
|
|
25
|
+
${g}`}function w(e,t){let n=e=>i(e)?e.toJSONSchema({target:`draft-2020-12`}):void 0;if(Array.isArray(e))return t;let a=n(e);if(a){let[e]=Object.keys(t);return e?{[e]:a}:t}if(r(e))return t;let o={};for(let[r,i]of Object.entries(t)){let t=e[r];o[r]=!Array.isArray(t)&&n(t)||i}return o}function T(t,n={}){let r=n.outline??[2,3,4],i=o(t),a={};if(n.combined){let e=n.indexFilename??`index.md`;a[e]=P(w(t,i),{...n,outline:r})}else{for(let[e,t]of Object.entries(i))a[`${e}.md`]=b(e,t,{...n,outline:r});a[n.indexFilename??`index.md`]=C(t,{...n,outline:r})}if(typeof n.outputDir==`string`){u.mkdirSync(n.outputDir,{recursive:!0});for(let[t,r]of Object.entries(a))u.writeFileSync(e.resolve(n.outputDir,t),r,`utf-8`)}return a}function E(e){return e.$ref?e.$ref.split(`/`).pop()??void 0:void 0}function D(e,t){let n=E(e);return n&&t[n]?t[n]:e}function O(e){return typeof e==`string`?`'${e}'`:String(e)}function k(e,t){let n=D(e,t),r=e.required===!0||n.required===!0||void 0,i=e.deprecated??n.deprecated,a=e.deprecationMessage??n.deprecationMessage,o=e.example??n.example,s=e.since??n.since,c=e.see??n.see,l=e.remarks??n.remarks,u=e.experimental??n.experimental,d=e.alpha??n.alpha,f=e.beta??n.beta,p=[...n.anyOf??e.anyOf??[],...n.oneOf??e.oneOf??[]];for(let e of p){let n=D(e,t);r??=e.required===!0||n.required===!0||void 0,i??=e.deprecated??n.deprecated,a??=e.deprecationMessage??n.deprecationMessage,o??=e.example??n.example,s??=e.since??n.since,c??=e.see??n.see,l??=e.remarks??n.remarks,u??=e.experimental??n.experimental,d??=e.alpha??n.alpha,f??=e.beta??n.beta}return{...r===void 0?{}:{required:r},...i===void 0?{}:{deprecated:i},...a===void 0?{}:{deprecationMessage:a},...o===void 0?{}:{example:o},...s===void 0?{}:{since:s},...c===void 0?{}:{see:c},...l===void 0?{}:{remarks:l},...u===void 0?{}:{experimental:u},...d===void 0?{}:{alpha:d},...f===void 0?{}:{beta:f}}}function A(e,t){if(e.$ref){let n=D(e,t);return n.properties||n.anyOf||n.oneOf?E(e):A(n,t)}if(e.const!==void 0)return O(e.const);if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum.map(O).join(` | `);let n=e.anyOf??e.oneOf;if(n&&n.length>0)return n.map(e=>A(e,t)).join(` | `);if(e.properties)return`object`;let r=Array.isArray(e.type)?e.type:e.type?[e.type]:[];if(r.includes(`array`))return`Array<${A(e.items??{},t)}>`;if(r.includes(`object`)){let n=e.additionalProperties;return n&&n!==!0?`Record<string, ${A(n,t)}>`:`Record<string, unknown>`}return r.length===0?`unknown`:r.map(e=>e===`integer`?`number`:e).join(` | `)}function j(e,t,n){let r=E(e);if(r){if(n.has(r))return{properties:{},required:[]};n.add(r)}let i=D(e,t);if(i.properties)return{properties:i.properties,required:Array.isArray(i.required)?i.required:[]};let a=i.anyOf??i.oneOf;if(a){let e={},r=/* @__PURE__ */ new Set;for(let i of a){let a=j(i,t,n);Object.assign(e,a.properties);for(let e of a.required)r.add(e)}return{properties:e,required:[...r]}}return(Array.isArray(i.type)?i.type:i.type?[i.type]:[]).includes(`array`)&&i.items?j(i.items,t,n):{properties:{},required:[]}}function M(e,n,r,i,a,o,s){let c=D(n,i),l=k(n,i),u=[`${r} \`${e}\``],d=m(o||l.required===!0,s);d&&u.push(d),u.push(`- **Type**: \`${A(n,i)}\``),u.push(...h(l,s));let f=n.default??c.default;f!==void 0&&u.push(`- **Default**: \`${JSON.stringify(f)}\``);let _=t(n.description??c.description??``);_&&u.push(``,_),u.push(...g(l.remarks,s)),s.includeExamples!==!1&&u.push(...p(l.example));let v=j(n,i,a),y=r.length<6?`${r}#`:r;for(let[e,t]of Object.entries(v.properties))u.push(``,...M(e,t,y,i,a,v.required.includes(e),s));return u}function N(e,t,n,r,i){let a=[],o=Array.isArray(e.required)?e.required:[];for(let[s,c]of Object.entries(e.properties??{}))a.push(``,...M(s,c,t,n,r,o.includes(s),i));return a}function P(e,t={}){let n=t.title??`Configuration`,r=[...y(t,n,t.outline??[2,3,4]),`# ${n}`,``];t.intro&&r.push(t.intro,``);for(let[n,i]of Object.entries(e)){let e=i,o=e.$defs??{},s=D(e,o),c=a(s);r.push(`## \`${n}\``,``),c?.description&&r.push(c.description,``);let l=m(c?.required===!0,t);l&&r.push(l,``);let u=h(c??{},t);u.length>0&&r.push(...u,``);let d=g(c?.remarks,t);if(d.length>0&&r.push(...d,``),t.includeExamples!==!1){let e=p(c?.example);e.length>0&&r.push(...e,``)}r.push(...N(s,`###`,o,/* @__PURE__ */ new Set,t),``)}return`${r.join(`
|
|
26
|
+
`).trim()}\n`}export{T as generateConfigMarkdown};
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import __tsdown_shims_path from 'node:path';
|
|
2
2
|
import __tsdown_shims_url from 'node:url';
|
|
3
|
-
import {
|
|
4
|
-
import { Schema } from "untyped";
|
|
3
|
+
import { ConfigEngineOptions, ConfigSchema } from "../types.js";
|
|
5
4
|
//#region packages/config/src/generators/types.d.ts
|
|
6
|
-
export interface GenerateTypesOptions {
|
|
7
|
-
/** Output directory.
|
|
8
|
-
outputDir?: string;
|
|
9
|
-
/** The base group hoisted into `<Name>Base` (default `base`). */
|
|
10
|
-
baseGroup?: string;
|
|
5
|
+
export interface GenerateTypesOptions extends Pick<ConfigEngineOptions, 'baseGroup'> {
|
|
6
|
+
/** Output directory. `false` (or omitted) disables writing. */
|
|
7
|
+
outputDir?: string | false;
|
|
11
8
|
/**
|
|
12
9
|
* Per-scope main interface name. Defaults to `<PascalScope>Config`.
|
|
13
10
|
*/
|
|
@@ -28,21 +25,29 @@ export interface GenerateTypesOptions {
|
|
|
28
25
|
extension?: string;
|
|
29
26
|
/** A raw (verbatim) header prepended to every generated file. */
|
|
30
27
|
header?: string;
|
|
28
|
+
/** Emit `@required` JSDoc tags (default true). */
|
|
29
|
+
includeRequired?: boolean;
|
|
30
|
+
/** Emit `@deprecated` JSDoc tags (default true). */
|
|
31
|
+
includeDeprecated?: boolean;
|
|
32
|
+
/** Emit `@example` JSDoc tags (default true). */
|
|
33
|
+
includeExamples?: boolean;
|
|
34
|
+
/** Emit `@since` JSDoc tags (default true). */
|
|
35
|
+
includeSince?: boolean;
|
|
36
|
+
/** Emit `@see` JSDoc tags (default true). */
|
|
37
|
+
includeSee?: boolean;
|
|
38
|
+
/** Emit `@remarks` JSDoc tags (default true). */
|
|
39
|
+
includeRemarks?: boolean;
|
|
40
|
+
/** Emit `@experimental` JSDoc tags (default true). */
|
|
41
|
+
includeExperimental?: boolean;
|
|
42
|
+
/** Emit `@alpha` JSDoc tags (default true). */
|
|
43
|
+
includeAlpha?: boolean;
|
|
44
|
+
/** Emit `@beta` JSDoc tags (default true). */
|
|
45
|
+
includeBeta?: boolean;
|
|
46
|
+
/** Show the env var equivalent in JSDoc (default true). */
|
|
47
|
+
includeEnv?: boolean;
|
|
48
|
+
/** Show the CLI flag equivalent in JSDoc (default true). */
|
|
49
|
+
includeCli?: boolean;
|
|
31
50
|
}
|
|
32
|
-
/**
|
|
33
|
-
export declare function
|
|
34
|
-
/** Render the generated type file content for one scope. */
|
|
35
|
-
export declare function renderConfigTypes(scopeName: string, schema: Schema, options?: GenerateTypesOptions): string;
|
|
36
|
-
/**
|
|
37
|
-
* Render the import block for the generated file (empty when none are
|
|
38
|
-
* configured). Emitted once at the top of the file, after the header, so a
|
|
39
|
-
* hand-written override can reference imported types.
|
|
40
|
-
*/
|
|
41
|
-
export declare function renderConfigImports(options?: GenerateTypesOptions): string;
|
|
42
|
-
/** Render every config type file, keyed by scope name. */
|
|
43
|
-
export declare function renderAllConfigTypes(scopes: ConfigScopes, options?: GenerateTypesOptions): Record<string, string>;
|
|
44
|
-
/** Generate the config type files into `outputDir`. Returns the paths written. */
|
|
45
|
-
export declare function generateConfigTypes(scopes: ConfigScopes, options: GenerateTypesOptions & {
|
|
46
|
-
outputDir: string;
|
|
47
|
-
}): string[];
|
|
51
|
+
/** Generate config type file contents (and optionally write them). */
|
|
52
|
+
export declare function generateConfigTypes(schema: ConfigSchema, options?: GenerateTypesOptions): Record<string, string>;
|
|
48
53
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{default as e}from"node:path";import"node:url";import.meta.url;import{pascalCase as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{
|
|
1
|
+
import{default as e}from"node:path";import"node:url";import.meta.url;import{pascalCase as t}from"../../../shared/src/string-utils.js";import"../../../shared/src/index.js";import{isZodSchema as n,metaOf as r,normalizeConfigSchema as i,splitBaseSchema as a,zodToSchemaMap as o}from"../schema.js";import s from"node:fs";import{generateTypes as c}from"untyped";const l={addExport:!0,partial:!0};function u(e){let t=[],n=0,r=!1;for(let i of e.split(`
|
|
2
2
|
`)){let e=i.trim();if(r)t.push(i),e.endsWith(`*/`)&&(r=!1);else if(e.startsWith(`/*`))t.push(i),e.endsWith(`*/`)||(r=!0);else if(!(e===``&&n>0)){t.push(i);for(let e of i)e===`{`||e===`(`||e===`[`?n++:(e===`}`||e===`)`||e===`]`)&&n>0&&n--}}return t.join(`
|
|
3
|
-
`)}function
|
|
4
|
-
`)}function p(e,t={}){return Object.fromEntries(Object.entries(e).map(([e,n])=>[e,
|
|
3
|
+
`)}function d(e,t){return u(c(e,{...l,interfaceName:t}))}function f(e){let t=e.lastIndexOf(`}`);return t===-1?e:`${e.slice(0,t)} [key: string]: unknown;\n${e.slice(t)}`}function p(e){return e==null?[]:(Array.isArray(e)?e:[e]).map(e=>String(e)).filter(Boolean)}function m(e,t){let n=[];if(t.includeRequired!==!1&&e.required===!0&&n.push(`@required`),t.includeDeprecated!==!1&&e.deprecated!==void 0&&e.deprecated!==!1){let t=typeof e.deprecationMessage==`string`?e.deprecationMessage.trim():``;n.push(t?`@deprecated ${t}`:`@deprecated`)}if(t.includeExamples!==!1)for(let t of p(e.example))n.push(`@example ${t}`);if(t.includeSince!==!1&&typeof e.since==`string`&&e.since.trim()&&n.push(`@since ${e.since.trim()}`),t.includeSee!==!1)for(let t of p(e.see))n.push(`@see ${t}`);return t.includeRemarks!==!1&&typeof e.remarks==`string`&&e.remarks.trim()&&n.push(`@remarks ${e.remarks.trim()}`),t.includeExperimental!==!1&&e.experimental===!0&&n.push(`@experimental`),t.includeAlpha!==!1&&e.alpha===!0&&n.push(`@alpha`),t.includeBeta!==!1&&e.beta===!0&&n.push(`@beta`),n}function h(e,t){let n=e,{deprecated:r,deprecationMessage:i,example:a,since:o,see:s,remarks:c,experimental:l,alpha:u,beta:d,tags:f,...p}=n,g=n.required===!0,_=(Array.isArray(f)?f:[]).filter(e=>!(t.includeRequired===!1&&e===`@required`||t.includeDeprecated===!1&&e.startsWith(`@deprecated`)||t.includeExamples===!1&&e.startsWith(`@example`)||t.includeSince===!1&&e.startsWith(`@since`)||t.includeSee===!1&&e.startsWith(`@see`)||t.includeRemarks===!1&&e.startsWith(`@remarks`)||t.includeExperimental===!1&&e.startsWith(`@experimental`)||t.includeAlpha===!1&&e.startsWith(`@alpha`)||t.includeBeta===!1&&e.startsWith(`@beta`))),v=[.../* @__PURE__ */ new Set([..._,...m({required:g,deprecated:r,deprecationMessage:i,example:a,since:o,see:s,remarks:c,experimental:l,alpha:u,beta:d},t)])],y=typeof n.envName==`string`?n.envName:typeof n.env==`string`?n.env:``;t.includeEnv!==!1&&y&&v.push(`@env ${y}`),t.includeCli!==!1&&typeof n.cliFlag==`string`&&v.push(`@cli ${n.cliFlag}`);let b={...p};return g&&delete b.required,v.length>0&&(b.tags=v),b.properties&&typeof b.properties==`object`&&(b.properties=Object.fromEntries(Object.entries(b.properties).map(([e,n])=>[e,h(n,t)]))),b.items&&typeof b.items==`object`&&(b.items=h(b.items,t)),b}function g(e,t,n){let r=t,i=m({required:r.required,deprecated:r.deprecated,deprecationMessage:r.deprecationMessage,example:r.example,since:r.since,see:r.see,remarks:r.remarks,experimental:r.experimental,alpha:r.alpha,beta:r.beta},n);return i.length===0?e:`${[`/**`,...i.map(e=>` * ${e}`),` */`].join(`
|
|
4
|
+
`)}\n${e}`}function _(e,n,i={}){let o=Array.isArray(i.baseGroup)?String(i.baseGroup[0]??`base`):String(i.baseGroup??`base`),s=r(n),c=i.interfaceNames?.[e]??s?.typeName??s?.id??`${t(e)}Config`,l=i.aliases?.[e]??``,u=e=>i.header?`${i.header}\n\n${e}`:e,p=i.overrides?.[e];if(p!==void 0)return u(`${p.trimEnd()}\n${l}`.trimEnd());let m=n.allowExtraKeys===!0;if(!n.properties)return u(`${g(`export type ${c} = ${n.tsType??`unknown`};`,n,i)}\n${l}`);let _=h(n,i),{base:v,groups:y,hasBase:b}=a(_,o),x=Object.keys(y.properties??{});if(!b){let e=g(d(_,c),n,i);return m&&(e=f(e)),u(`${e}\n${l}`)}let S=d(v,`${c}Base`),C;return C=x.length>0?d(y,c).replace(`export interface ${c} {`,`export interface ${c} extends ${c}Base {`):`export interface ${c} extends ${c}Base {}\n`,C=g(C,n,i),m&&(C=f(C)),u(`${S}\n${C}\n${l}`)}function v(e,t={}){return n(e)?Object.fromEntries(Object.entries(o(e)).map(([e,n])=>[e,_(e,n,{...t,interfaceNames:{[e]:e,...t.interfaceNames}})])):Object.fromEntries(Object.entries(i(e)).map(([e,n])=>[e,_(e,n,t)]))}function y(t,n={}){let r=n.extension??`ts`,i=v(t,n);if(typeof n.outputDir==`string`)for(let[t,a]of Object.entries(i)){let i=e.join(n.outputDir,`${t}.${r}`);s.mkdirSync(e.dirname(i),{recursive:!0}),s.writeFileSync(i,a,`utf-8`)}return i}export{y as generateConfigTypes};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import __tsdown_shims_path from 'node:path';
|
|
2
2
|
import __tsdown_shims_url from 'node:url';
|
|
3
|
-
import { ConfigEngineOptions,
|
|
4
|
-
import {
|
|
3
|
+
import { ConfigBaseMeta, ConfigCliMeta, ConfigDef, ConfigEngineFlatten, ConfigEngineOptions, ConfigEnvMeta, ConfigGroup, ConfigMeta, ConfigSchema, ConfigSchemaInput, ConfigSchemaMap, ConfigSchemaType, ConfigScope, ConfigScopes, ConfigTypeMeta, ConfigValueType } from "./types.js";
|
|
4
|
+
import { CollectVarsOptions, DEFAULT_ENV_PREFIX, collectRequired, collectVars, pathOf } from "./collect.js";
|
|
5
5
|
import { BuildConfigJsonOptions, ConfigJsonDoc, ConfigJsonEntry, buildConfigJson } from "./config-json.js";
|
|
6
6
|
import { EnvFileOptions, generateEnvFile } from "./env-file.js";
|
|
7
7
|
import { CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, GenerateCliOptionsOptions, cliFlagLabel, cliFlagOf, cliShortOf, createCliArgsParser, flagOf, generateCliArgsOptions, generateCliOptions } from "./generators/cli.js";
|
|
8
|
-
import { GenerateEnvTypesOptions, generateEnv, generateEnvDts, generateEnvTypes } from "./generators/env.js";
|
|
8
|
+
import { GenerateEnvTypesOptions, generateConfigEnv, generateEnv, generateEnvDts, generateEnvTypes } from "./generators/env.js";
|
|
9
9
|
import { GenerateJsonSchemaOptions, generateConfigJsonSchema, generateJsonSchemaFile } from "./generators/json.js";
|
|
10
|
-
import {
|
|
11
|
-
import { GenerateTypesOptions, generateConfigTypes
|
|
10
|
+
import { GenerateMarkdownOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, generateConfigMarkdown } from "./generators/markdown.js";
|
|
11
|
+
import { GenerateTypesOptions, generateConfigTypes } from "./generators/types.js";
|
|
12
12
|
import { ConfigEngine, createConfigEngine } from "./engine.js";
|
|
13
|
-
import { EnvSource, EnvTree,
|
|
13
|
+
import { EnvSource, EnvTree, envBool, envInt, envList, envMap, envPathOf, envString, parseEnvTree, readEnvPath } from "./env.js";
|
|
14
14
|
import { FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, formatGenerated } from "./generated-format.js";
|
|
15
15
|
import "./generators/index.js";
|
|
16
16
|
import { findProjectRoot, monorepoRoot } from "./root.js";
|
|
17
|
-
import { SplitSchema, compileZodSchema,
|
|
17
|
+
import { SplitSchema, compileZodSchema, flattenBaseSchema, isSchemaType, isZodSchema, metaOf, normalizeConfigSchema, normalizeJsonSchemaMetadata, renderTsType, resolveUntypedSchema, splitBaseSchema, toSchemaType, zodToJsonSchema, zodToSchemaMap, zodToUntypedDefinition } from "./schema.js";
|
|
18
18
|
declare namespace index_d_exports {
|
|
19
|
-
export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef,
|
|
19
|
+
export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectVarsOptions, ConfigBaseMeta, ConfigCliMeta, ConfigDef, ConfigEngine, ConfigEngineFlatten, ConfigEngineOptions, ConfigEnvMeta, ConfigGroup, ConfigJsonDoc, ConfigJsonEntry, ConfigMeta, ConfigSchema, ConfigSchemaInput, ConfigSchemaMap, ConfigSchemaType, ConfigScope, ConfigScopes, ConfigTypeMeta, ConfigValueType, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, SplitSchema, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectRequired, collectVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliOptions, generateConfigEnv, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, isSchemaType, isZodSchema, metaOf, monorepoRoot, normalizeConfigSchema, normalizeJsonSchemaMetadata, parseEnvTree, pathOf, readEnvPath, renderTsType, resolveUntypedSchema, splitBaseSchema, toSchemaType, zodToJsonSchema, zodToSchemaMap, zodToUntypedDefinition };
|
|
20
20
|
}
|
|
21
21
|
//#endregion
|
|
22
|
-
export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef,
|
|
22
|
+
export { BuildConfigJsonOptions, CliArgsOptionConfig, CliArgsParser, CliArgsResult, CliArgsValues, CliFlagOptions, CliOptionDef, CollectVarsOptions, ConfigBaseMeta, ConfigCliMeta, ConfigDef, ConfigEngine, ConfigEngineFlatten, ConfigEngineOptions, ConfigEnvMeta, ConfigGroup, ConfigJsonDoc, ConfigJsonEntry, ConfigMeta, ConfigSchema, ConfigSchemaInput, ConfigSchemaMap, ConfigSchemaType, ConfigScope, ConfigScopes, ConfigTypeMeta, ConfigValueType, DEFAULT_ENV_PREFIX, EnvFileOptions, EnvSource, EnvTree, FormatGeneratedOptions, GENERATED_FORMAT_OPTIONS, GenerateCliOptionsOptions, GenerateEnvTypesOptions, GenerateJsonSchemaOptions, GenerateMarkdownOptions, GenerateTypesOptions, RenderConfigFileOptions, RenderMarkdownFrontmatter, RenderMarkdownOptions, SplitSchema, buildConfigJson, cliFlagLabel, cliFlagOf, cliShortOf, collectRequired, collectVars, compileZodSchema, createCliArgsParser, createConfigEngine, envBool, envInt, envList, envMap, envPathOf, envString, findProjectRoot, flagOf, flattenBaseSchema, formatGenerated, generateCliArgsOptions, generateCliOptions, generateConfigEnv, generateConfigJsonSchema, generateConfigMarkdown, generateConfigTypes, generateEnv, generateEnvDts, generateEnvFile, generateEnvTypes, generateJsonSchemaFile, index_d_exports, isSchemaType, isZodSchema, metaOf, monorepoRoot, normalizeConfigSchema, normalizeJsonSchemaMetadata, parseEnvTree, pathOf, readEnvPath, renderTsType, resolveUntypedSchema, splitBaseSchema, toSchemaType, zodToJsonSchema, zodToSchemaMap, zodToUntypedDefinition };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{compileZodSchema as t,
|
|
1
|
+
import"node:path";import"node:url";import.meta.url;import{__exportAll as e}from"../../../_virtual/_rolldown/runtime.js";import{compileZodSchema as t,flattenBaseSchema as n,isSchemaType as r,isZodSchema as i,metaOf as a,normalizeConfigSchema as o,normalizeJsonSchemaMetadata as s,renderTsType as c,resolveUntypedSchema as l,splitBaseSchema as u,toSchemaType as d,zodToJsonSchema as f,zodToSchemaMap as p,zodToUntypedDefinition as m}from"./schema.js";import{DEFAULT_ENV_PREFIX as h,collectRequired as g,collectVars as _,pathOf as v}from"./collect.js";import{buildConfigJson as y}from"./config-json.js";import{generateEnvFile as b}from"./env-file.js";import{cliFlagLabel as x,cliFlagOf as S,cliShortOf as C,createCliArgsParser as w,flagOf as T,generateCliArgsOptions as E,generateCliOptions as D}from"./generators/cli.js";import{generateConfigEnv as O,generateEnv as k,generateEnvDts as A,generateEnvTypes as j}from"./generators/env.js";import{generateConfigJsonSchema as M,generateJsonSchemaFile as N}from"./generators/json.js";import{generateConfigMarkdown as P}from"./generators/markdown.js";import{generateConfigTypes as F}from"./generators/types.js";import{findProjectRoot as I,monorepoRoot as L}from"./root.js";import{createConfigEngine as R}from"./engine.js";import{envBool as z,envInt as B,envList as V,envMap as H,envPathOf as U,envString as W,parseEnvTree as G,readEnvPath as K}from"./env.js";import{GENERATED_FORMAT_OPTIONS as q,formatGenerated as J}from"./generated-format.js";import"./generators/index.js";var Y=/* @__PURE__ */ e({DEFAULT_ENV_PREFIX:()=>h,GENERATED_FORMAT_OPTIONS:()=>q,buildConfigJson:()=>y,cliFlagLabel:()=>x,cliFlagOf:()=>S,cliShortOf:()=>C,collectRequired:()=>g,collectVars:()=>_,compileZodSchema:()=>t,createCliArgsParser:()=>w,createConfigEngine:()=>R,envBool:()=>z,envInt:()=>B,envList:()=>V,envMap:()=>H,envPathOf:()=>U,envString:()=>W,findProjectRoot:()=>I,flagOf:()=>T,flattenBaseSchema:()=>n,formatGenerated:()=>J,generateCliArgsOptions:()=>E,generateCliOptions:()=>D,generateConfigEnv:()=>O,generateConfigJsonSchema:()=>M,generateConfigMarkdown:()=>P,generateConfigTypes:()=>F,generateEnv:()=>k,generateEnvDts:()=>A,generateEnvFile:()=>b,generateEnvTypes:()=>j,generateJsonSchemaFile:()=>N,isSchemaType:()=>r,isZodSchema:()=>i,metaOf:()=>a,monorepoRoot:()=>L,normalizeConfigSchema:()=>o,normalizeJsonSchemaMetadata:()=>s,parseEnvTree:()=>G,pathOf:()=>v,readEnvPath:()=>K,renderTsType:()=>c,resolveUntypedSchema:()=>l,splitBaseSchema:()=>u,toSchemaType:()=>d,zodToJsonSchema:()=>f,zodToSchemaMap:()=>p,zodToUntypedDefinition:()=>m});export{h as DEFAULT_ENV_PREFIX,q as GENERATED_FORMAT_OPTIONS,y as buildConfigJson,x as cliFlagLabel,S as cliFlagOf,C as cliShortOf,g as collectRequired,_ as collectVars,t as compileZodSchema,w as createCliArgsParser,R as createConfigEngine,z as envBool,B as envInt,V as envList,H as envMap,U as envPathOf,W as envString,I as findProjectRoot,T as flagOf,n as flattenBaseSchema,J as formatGenerated,E as generateCliArgsOptions,D as generateCliOptions,O as generateConfigEnv,M as generateConfigJsonSchema,P as generateConfigMarkdown,F as generateConfigTypes,k as generateEnv,A as generateEnvDts,b as generateEnvFile,j as generateEnvTypes,N as generateJsonSchemaFile,r as isSchemaType,i as isZodSchema,a as metaOf,L as monorepoRoot,o as normalizeConfigSchema,s as normalizeJsonSchemaMetadata,G as parseEnvTree,v as pathOf,K as readEnvPath,c as renderTsType,l as resolveUntypedSchema,u as splitBaseSchema,Y as src_exports,d as toSchemaType,f as zodToJsonSchema,p as zodToSchemaMap,m as zodToUntypedDefinition};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import __tsdown_shims_path from 'node:path';
|
|
2
2
|
import __tsdown_shims_url from 'node:url';
|
|
3
|
-
import {
|
|
3
|
+
import { ConfigMeta, ConfigSchema, ConfigSchemaInput, ConfigSchemaMap, ConfigSchemaType } from "./types.js";
|
|
4
4
|
import { ZodType } from "zod";
|
|
5
5
|
import { Schema } from "untyped";
|
|
6
6
|
//#region packages/config/src/schema.d.ts
|
|
@@ -22,12 +22,36 @@ interface JsonSchemaNode {
|
|
|
22
22
|
additionalProperties?: JsonSchemaNode | boolean;
|
|
23
23
|
propertyNames?: JsonSchemaNode;
|
|
24
24
|
env?: string;
|
|
25
|
+
envName?: string;
|
|
26
|
+
envPath?: string;
|
|
27
|
+
path?: string;
|
|
28
|
+
cliFlag?: string;
|
|
29
|
+
cliFlagShort?: string;
|
|
30
|
+
typeName?: string;
|
|
31
|
+
id?: string;
|
|
25
32
|
scope?: string;
|
|
26
33
|
secret?: boolean;
|
|
27
34
|
public?: boolean;
|
|
35
|
+
deprecated?: boolean;
|
|
36
|
+
deprecationMessage?: string;
|
|
37
|
+
example?: string | string[];
|
|
38
|
+
since?: string;
|
|
39
|
+
see?: string | string[];
|
|
40
|
+
remarks?: string;
|
|
41
|
+
experimental?: boolean;
|
|
42
|
+
alpha?: boolean;
|
|
43
|
+
beta?: boolean;
|
|
28
44
|
}
|
|
29
|
-
/**
|
|
30
|
-
export declare function
|
|
45
|
+
/** Whether a value is a Zod schema. */
|
|
46
|
+
export declare function isZodSchema(value: unknown): value is ZodType;
|
|
47
|
+
/** Whether a value is a resolved untyped schema. */
|
|
48
|
+
export declare function isSchemaType(value: unknown): value is ConfigSchemaType;
|
|
49
|
+
/** Read the config metadata attached to a Zod leaf or an untyped schema node. */
|
|
50
|
+
export declare function metaOf(schema: ZodType | Schema): ConfigMeta | undefined;
|
|
51
|
+
/** Convert a Zod schema or untyped schema to the untyped representation. */
|
|
52
|
+
export declare function toSchemaType(schema: ConfigSchemaInput): ConfigSchemaType;
|
|
53
|
+
/** Normalize any supported schema shape into scoped untyped schemas. */
|
|
54
|
+
export declare function normalizeConfigSchema(schema: ConfigSchema): ConfigSchemaMap;
|
|
31
55
|
/**
|
|
32
56
|
* Render a JSON Schema node as a TypeScript type string. Nested `$defs` are
|
|
33
57
|
* referenced by name, unions become `A | B`, records become `Record<...>` and
|
|
@@ -43,6 +67,10 @@ export declare function compileZodSchema<T extends ZodType>(schema: T): T;
|
|
|
43
67
|
* `resolveSchema` synchronously.
|
|
44
68
|
*/
|
|
45
69
|
export declare function resolveUntypedSchema(input: Record<string, unknown>): Schema;
|
|
70
|
+
/** Normalize Zod's JSON Schema metadata into standard JSON Schema fields. */
|
|
71
|
+
export declare function normalizeJsonSchemaMetadata(node: unknown): void;
|
|
72
|
+
/** Lower a Zod schema and every named `$defs` entry into resolved schemas. */
|
|
73
|
+
export declare function zodToSchemaMap(zodSchema: ZodType): Record<string, ConfigSchemaType>;
|
|
46
74
|
/** Build the resolved untyped JSON Schema directly from a Zod config schema. */
|
|
47
75
|
export declare function zodToJsonSchema(zodSchema: ZodType): Schema;
|
|
48
76
|
/** A resolved untyped schema split into its base group and the remaining groups. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"node:path";import"node:url";import.meta.url;import{z as e}from"zod";const t={string:`string`,number:`number`,integer:`number`,boolean:`boolean`,null:`null`};function n(e){let t=e.meta?.();return t&&typeof t==`object
|
|
1
|
+
import"node:path";import"node:url";import.meta.url;import{z as e}from"zod";const t={string:`string`,number:`number`,integer:`number`,boolean:`boolean`,null:`null`};function n(e){return typeof e==`object`&&!!e&&`safeParse`in e}function r(e){return typeof e!=`object`||!e||Array.isArray(e)||n(e)?!1:`type`in e||`properties`in e||`tsType`in e||`id`in e}const i=[`id`,`description`,`required`,`deprecated`,`deprecationMessage`,`example`,`since`,`see`,`remarks`,`experimental`,`alpha`,`beta`,`secret`,`scope`,`public`,`defaultValue`,`envName`,`env`,`envPath`,`path`,`typeName`,`cliFlag`,`cliFlagShort`];function a(e){if(n(e)){let t=e.meta?.();return t&&typeof t==`object`?t:void 0}let t=e,r={};for(let e of i)e===`id`&&typeof t.id==`string`&&t.id.startsWith(`#`)||t[e]!==void 0&&(r[e]=t[e]);return Object.keys(r).length>0?r:void 0}function o(e){return n(e)?E(e):e}function s(e){let t={},n=/* @__PURE__ */ new Set,r={type:`object`,properties:t};for(let i of e){let a=i;if(a.properties&&Object.assign(t,a.properties),Array.isArray(a.required))for(let e of a.required)n.add(e);e.length===1&&(r=i)}return{...r,type:`object`,properties:t,...n.size>0?{required:[...n]}:{}}}function c(e){if(Array.isArray(e)){let t=s(e.map(o));return{[a(t)?.id??`config`]:t}}if(n(e)||r(e)){let t=o(e);return{[a(t)?.id??`config`]:t}}let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?s(r.map(o)):o(r);return t}function l(e){return!e||Object.keys(e).length===0}function u(e){return`'${String(e).replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}'`}function d(e,n={}){if(!e||l(e))return`unknown`;if(e.$ref){let t=e.$ref.split(`/`).pop()??`unknown`;return n[t]?t:`unknown`}if(e.const!==void 0)return typeof e.const==`string`?u(e.const):String(e.const);if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum.map(u).join(` | `);let r=e.anyOf??e.oneOf;if(Array.isArray(r)&&r.length>0)return r.map(e=>d(e,n)).join(` | `);if(e.properties){let t=Array.isArray(e.required)?e.required:[];return`{ ${Object.entries(e.properties).map(([e,r])=>`${e}${t.includes(e)?``:`?`}: ${d(r,n)}`).join(`; `)} }`}let i=Array.isArray(e.type)?e.type:e.type?[e.type]:[];if(i.includes(`array`))return`Array<${d(e.items,n)}>`;if(i.includes(`object`)){let t=e.additionalProperties;return t===void 0||t===!1?`Record<string, unknown>`:`Record<string, ${t===!0||l(t)?`unknown`:d(t,n)}>`}return i.length===0?`unknown`:i.map(e=>t[e]??`unknown`).join(` | `)}function f(e){return e.$ref?`any`:e.const===void 0?e.anyOf||e.oneOf?`any`:e.enum?`string`:Array.isArray(e.type)?e.type.find(e=>e!==`null`)??`string`:e.type??`string`:typeof e.const==`string`?`string`:typeof e.const}function p(e,t={}){if(!e)return{};let n=e.$ref?.split(`/`).pop(),r=n?t[n]:void 0,i=e.required===!0||r?.required===!0||void 0,a=e.env??r?.env,o=e.envName??r?.envName,s=e.envPath??r?.envPath,c=e.path??r?.path,l=e.cliFlag??r?.cliFlag,u=e.cliFlagShort??r?.cliFlagShort,d=e.typeName??r?.typeName,f=e.id??r?.id,p=e.deprecated??r?.deprecated,m=e.deprecationMessage??r?.deprecationMessage,h=e.example??r?.example,g=e.since??r?.since,_=e.see??r?.see,v=e.remarks??r?.remarks,y=e.experimental??r?.experimental,b=e.alpha??r?.alpha,x=e.beta??r?.beta;for(let n of[...e.anyOf??[],...e.oneOf??[]]){let e=n.$ref?.split(`/`).pop(),r=e?t[e]:void 0;i??=n.required===!0||r?.required===!0||void 0,a??=n.env??r?.env,o??=n.envName??r?.envName,s??=n.envPath??r?.envPath,c??=n.path??r?.path,l??=n.cliFlag??r?.cliFlag,u??=n.cliFlagShort??r?.cliFlagShort,d??=n.typeName??r?.typeName,f??=n.id??r?.id,p??=n.deprecated??r?.deprecated,m??=n.deprecationMessage??r?.deprecationMessage,h??=n.example??r?.example,g??=n.since??r?.since,_??=n.see??r?.see,v??=n.remarks??r?.remarks,y??=n.experimental??r?.experimental,b??=n.alpha??r?.alpha,x??=n.beta??r?.beta}return{...a===void 0?{}:{env:a},...o===void 0?{}:{envName:o},...s===void 0?{}:{envPath:s},...c===void 0?{}:{path:c},...l===void 0?{}:{cliFlag:l},...u===void 0?{}:{cliFlagShort:u},...d===void 0?{}:{typeName:d},...f===void 0?{}:{id:f},...i===void 0?{}:{required:i},...p===void 0?{}:{deprecated:p},...m===void 0?{}:{deprecationMessage:m},...h===void 0?{}:{example:h},...g===void 0?{}:{since:g},..._===void 0?{}:{see:_},...v===void 0?{}:{remarks:v},...y===void 0?{}:{experimental:y},...b===void 0?{}:{alpha:b},...x===void 0?{}:{beta:x}}}function m(e,t=!1,n={}){if(e.$ref){let r=e.$ref.split(`/`).pop()??`unknown`,i=n[r],a=e.description??i?.description;return{$schema:{type:`any`,tsType:r,...t?{tags:[`@required`]}:{},...a?{description:a}:{},...p(e,n)}}}if(e.properties){let r=t?{$schema:{tags:[`@required`]}}:{};e.description&&(r.$schema={...r.$schema,description:e.description});let i=p(e,n);(i.deprecated!==void 0||i.example!==void 0)&&(r.$schema={...r.$schema,...i});for(let[t,i]of Object.entries(e.properties))r[t]=m(i,e.required?.includes(t)??!1,n);return e.additionalProperties!==void 0&&e.additionalProperties!==!1&&(r.$schema={...r.$schema,allowExtraKeys:!0}),r}let r=f(e),i={};return e.defaultValue===void 0?e.default!==void 0&&(i.$default=e.default):i.$default=e.defaultValue,i.$schema={type:r,tsType:d(e,n),...r===`array`?{items:{type:f(e.items??{})}}:{},...t?{tags:[`@required`]}:{},...e.description?{description:e.description}:{},...e.env?{env:e.env}:{},...e.scope?{scope:e.scope}:{},...e.secret?{secret:!0}:{},...e.public?{public:!0}:{},...p(e,n),...e.defaultValue!==void 0&&e.default!==void 0?{envDefault:e.default}:{}},i}function h(e){let t=e.toJSONSchema();if(!t)return{};let n=t.$defs??{},r=t.$ref?.split(`/`).pop();return m(r&&n[r]?n[r]:t,!1,n)}function g(t){try{return e.compile(t)}catch{return t}}function _(e){return e!==null&&!Array.isArray(e)&&typeof e==`object`}function v(e){let t=typeof e;if(t!==`undefined`&&e!==null)return Array.isArray(e)?`array`:t}function y(e,t,n=`.`){return e?`${e}${n}${t}`:t}function b(e){return[...new Set(e.filter(e=>!!e))]}function x(e){if(e.type===`array`&&!(`items`in e)){let t=b((e.default??[]).map(e=>v(e)));e.items={type:t.length===0?`any`:t.length===1?t[0]:t}}if(e.default===void 0&&(`properties`in e||e.type===`object`||e.type===`any`)){let t=e.properties??{};e.default=Object.fromEntries(Object.entries(t).filter(([,e])=>`default`in e).map(([e,t])=>[e,t.default]))}}function S(e,t,n){if(n.cache.has(t))return n.cache.get(t);let r=`#${t.replace(/\./g,`/`)}`;if(!_(e)){let i=Array.isArray(e)?[...e]:e,a={type:v(e),id:r,default:i};return x(a),n.cache.set(t,a),a}let i={...e.$schema,id:r};n.cache.set(t,i);let a=Object.keys(e).filter(e=>e!==`$resolve`&&e!==`$schema`&&e!==`$default`);if(a.length>0){let r={};i.properties=r;for(let o of a)if(!r[o]){let a=r[o]=S(e[o],y(t,o),n);Array.isArray(a.tags)&&a.tags.includes(`@required`)&&(i.required=i.required||[],i.required.includes(o)||i.required.push(o))}}return i.default===void 0&&`$default`in e&&(i.default=e.$default),i.type||=v(i.default)||(i.properties?`object`:`any`),x(i),i}function C(e){return S(e,``,{root:e,cache:/* @__PURE__ */ new Map})}function w(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e;if(typeof t.deprecated==`string`&&(t.deprecationMessage=t.deprecated,t.deprecated=!0),`example`in t){let e=t.example;delete t.example,t.examples=Array.isArray(e)?e:[e]}for(let e of[`properties`,`$defs`]){let n=t[e];if(n&&typeof n==`object`&&!Array.isArray(n))for(let e of Object.values(n))w(e)}for(let e of[`items`,`additionalProperties`])w(t[e]);for(let e of[`anyOf`,`oneOf`,`allOf`]){let n=t[e];if(Array.isArray(n))for(let e of n)w(e)}}function T(e){let t=e.toJSONSchema();if(!t)return{};let n=t.$defs??{},r={};for(let[e,t]of Object.entries(n))r[e]=C(m(t,!1,n));let i=t.$ref?.split(`/`).pop()??t.id??a(e)?.id??`config`;return r[i]||(r[i]=C(m(t,!1,n))),r}function E(e){return C(h(e))}function D(e,t=`base`){let n=e.properties??{},r=n[t];if(r&&r.type===`object`&&r.properties){let{[t]:i,...a}=n,o=(e.required??[]).filter(e=>e!==t);return{base:r,groups:{...e,properties:a,...o.length>0?{required:o}:{}},hasBase:!0}}return{base:e,groups:{...e,properties:{}},hasBase:!1}}function O(e,t=`base`){let n=e.properties??{},r=n[t];if(r?.type!==`object`)return e;let i=r.properties;if(!i)return e;let{[t]:a,...o}=n;return{...e,properties:{...i,...o},required:[...(e.required??[]).filter(e=>e!==t),...r.required??[]]}}export{g as compileZodSchema,O as flattenBaseSchema,r as isSchemaType,n as isZodSchema,a as metaOf,c as normalizeConfigSchema,w as normalizeJsonSchemaMetadata,d as renderTsType,C as resolveUntypedSchema,D as splitBaseSchema,o as toSchemaType,E as zodToJsonSchema,T as zodToSchemaMap,h as zodToUntypedDefinition};
|