@zitadel/config 0.1.0-alpha.14 → 0.1.0-alpha.16

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.
@@ -0,0 +1,344 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "FlowDefinition",
4
+ "description": "Admin-authored configuration for a flow. A flow definition is a directed graph of steps backed by a user schema. The flow engine selects a definition based on `purpose` and `audience`, then walks the graph by evaluating `transitions` against client submissions. This schema describes the configuration shape only. Runtime emission to the client (capability dictionaries, branding, localized text) is a separate concern and is not modelled here.",
5
+ "type": "object",
6
+ "required": [
7
+ "name",
8
+ "status",
9
+ "user_schema",
10
+ "purposes",
11
+ "steps"
12
+ ],
13
+ "additionalProperties": false,
14
+ "properties": {
15
+ "$schema": {
16
+ "type": "string",
17
+ "description": "Editor affordance: path or URL of this meta-schema so editors validate and autocomplete the file (scaffolded flow files point at `.zitadel/meta/flow-definition.json`). Ignored by the platform."
18
+ },
19
+ "name": {
20
+ "type": "string",
21
+ "pattern": "^[a-z][a-z0-9-]*$",
22
+ "examples": [
23
+ "standard-login",
24
+ "combined-auth"
25
+ ],
26
+ "description": "Stable identifier for this flow, used as the target of cross-flow `switch` and `pivot` transitions. Renaming is not supported — the `name` is part of the public contract another definition may reference. Acts as the human display label as well; no separate slug."
27
+ },
28
+ "status": {
29
+ "type": "string",
30
+ "enum": [
31
+ "active",
32
+ "draft"
33
+ ],
34
+ "description": "Lifecycle state. - active: the engine can select this definition for new flows. - draft: never selected for new flows; existing flows referencing it must handle it gracefully."
35
+ },
36
+ "user_schema": {
37
+ "type": "string",
38
+ "examples": [
39
+ "sch_01KWHF18816ZQESRCS7Z2STJ05"
40
+ ],
41
+ "description": "Server-assigned identifier of the user schema this flow operates on, as returned by `POST /schemas`. Opaque to the client — the shape is a server implementation detail. Step `fields` reference property names defined in that schema; the engine resolves field type, validation, and implicit transition outcomes from the schema's `x-*` annotations at runtime."
42
+ },
43
+ "purposes": {
44
+ "type": "object",
45
+ "minProperties": 1,
46
+ "propertyNames": {
47
+ "$ref": "#/$defs/Purpose"
48
+ },
49
+ "additionalProperties": {
50
+ "type": "string",
51
+ "description": "Name of an entry-point step within this definition."
52
+ },
53
+ "examples": [
54
+ {
55
+ "login": "identify"
56
+ },
57
+ {
58
+ "login": "identify",
59
+ "register": "identify"
60
+ }
61
+ ],
62
+ "description": "Maps each purpose this definition handles to the step that begins the flow for that purpose. Every value must match a `name` in `steps`; the check is enforced by the engine, not by this schema."
63
+ },
64
+ "audience": {
65
+ "$ref": "#/$defs/Audience",
66
+ "description": "Scopes which requests this definition applies to. Omitted or empty arrays mean project-wide. The engine ranks matches by specificity (app > team > project-wide)."
67
+ },
68
+ "steps": {
69
+ "type": "array",
70
+ "minItems": 1,
71
+ "items": {
72
+ "$ref": "#/$defs/Step"
73
+ },
74
+ "description": "Step graph. Order is for human readability; actual sequencing is determined entirely by `transitions`. Every step's `name` must be unique within this array."
75
+ }
76
+ },
77
+ "$defs": {
78
+ "Purpose": {
79
+ "type": "string",
80
+ "enum": [
81
+ "login",
82
+ "register",
83
+ "recovery",
84
+ "profiling",
85
+ "reauth",
86
+ "link_account"
87
+ ],
88
+ "description": "What the user is trying to accomplish. - login: authenticate an existing user. - register: create a new user. - recovery: recover access (e.g. password reset). - profiling: collect required profile fields after authentication. - reauth: re-verify factors on an active session for step-up. - link_account: attach an external identity to an existing user."
89
+ },
90
+ "Audience": {
91
+ "type": "object",
92
+ "additionalProperties": false,
93
+ "properties": {
94
+ "team_ids": {
95
+ "type": "array",
96
+ "uniqueItems": true,
97
+ "items": {
98
+ "type": "string"
99
+ },
100
+ "examples": [
101
+ [
102
+ "team_acme"
103
+ ]
104
+ ],
105
+ "description": "Restrict to specific teams (organizations)."
106
+ },
107
+ "app_ids": {
108
+ "type": "array",
109
+ "uniqueItems": true,
110
+ "items": {
111
+ "type": "string"
112
+ },
113
+ "examples": [
114
+ [
115
+ "app_dashboard"
116
+ ]
117
+ ],
118
+ "description": "Restrict to specific applications."
119
+ }
120
+ }
121
+ },
122
+ "Step": {
123
+ "type": "object",
124
+ "required": [
125
+ "name"
126
+ ],
127
+ "additionalProperties": false,
128
+ "properties": {
129
+ "name": {
130
+ "type": "string",
131
+ "pattern": "^[a-z][a-z0-9-]*$",
132
+ "examples": [
133
+ "identify",
134
+ "authenticate",
135
+ "done"
136
+ ],
137
+ "description": "Unique step identifier within this definition. Slug-shaped so it is safe to use as a transition `target` and as a value in `purposes`. Referenced by other steps in the same definition."
138
+ },
139
+ "fields": {
140
+ "type": "array",
141
+ "uniqueItems": true,
142
+ "items": {
143
+ "type": "string"
144
+ },
145
+ "examples": [
146
+ [
147
+ "email"
148
+ ],
149
+ [
150
+ "email",
151
+ "password"
152
+ ]
153
+ ],
154
+ "description": "Schema property names to collect from the user on this step. Each entry must resolve to a property in the definition's `user_schema`, or use the reserved token `x-auth-methods#<method>` (e.g. `x-auth-methods#password`) to collect a credential proof for a method enabled at the schema root. The engine reads the schema's `x-*` annotations to derive: - field type and validation (rendered into the runtime payload), - implicit transition outcomes - e.g. a property with a non-empty `x-unique` scope makes `user_not_found` a valid `transitions` key on this step."
155
+ },
156
+ "actions": {
157
+ "type": "array",
158
+ "items": {
159
+ "$ref": "#/$defs/Action"
160
+ },
161
+ "description": "Ordered list of actions the user can take on this step. The `name` is what the client echoes back on submit. Every action's name must have a matching key in `transitions`; the engine rejects submissions for actions without a defined transition."
162
+ },
163
+ "gates": {
164
+ "type": "object",
165
+ "additionalProperties": {
166
+ "$ref": "#/$defs/Gate"
167
+ },
168
+ "description": "Security challenges that must be satisfied before this step's submission is accepted. Keyed by gate name (free identifier; referenced as the key in the runtime `step.gates` dictionary). The engine may inject additional gates at runtime based on policy or risk evaluation."
169
+ },
170
+ "sso_providers": {
171
+ "type": "array",
172
+ "items": {
173
+ "$ref": "#/$defs/SSOProvider"
174
+ },
175
+ "description": "Identity providers available on this step. When non-empty, the step must define a `transitions.callback` entry — the engine handles the reserved `sso` action transparently (redirect to the IdP, code exchange, user resolution) and fires `callback` on this step when the IdP returns. The flow author never writes a `transitions.sso`."
176
+ },
177
+ "on_success": {
178
+ "type": "string",
179
+ "enum": [
180
+ "create_user"
181
+ ],
182
+ "description": "Server-side mutation to run after the step's fields validate and before the transition fires. - create_user: materialize the user from collected schema fields. Used by register flows."
183
+ },
184
+ "complete": {
185
+ "type": "string",
186
+ "enum": [
187
+ "redirect",
188
+ "show"
189
+ ],
190
+ "description": "Marks this step as terminal. A terminal step has no `fields`, `actions`, `transitions`, `gates`, or `sso_providers`. - redirect: client navigates to a `redirect_uri` resolved from the originating protocol request (OIDC, SAML). - show: client renders the step as a success or info screen."
191
+ },
192
+ "transitions": {
193
+ "type": "object",
194
+ "additionalProperties": {
195
+ "$ref": "#/$defs/Transition"
196
+ },
197
+ "description": "Maps action names and engine-emitted outcomes to the next state. Keys are either: - an action name declared in this step's `actions`, or - a reserved outcome the engine produces: - `user_not_found` - emitted when a unique field (`x-unique`) does not match an existing user. - `user_already_exists` - emitted when registration matches an existing user. - `callback` - emitted when an external system returns control to the flow (SSO callback, device authorization poll, etc.). A transition's `action` field controls whether the target is interpreted as a step in this definition (default) or as the name of another definition to switch or pivot into."
198
+ }
199
+ }
200
+ },
201
+ "Action": {
202
+ "type": "object",
203
+ "additionalProperties": false,
204
+ "properties": {
205
+ "name": {
206
+ "type": "string",
207
+ "minLength": 1,
208
+ "examples": [
209
+ "submit",
210
+ "passkey",
211
+ "email_fallback"
212
+ ],
213
+ "description": "Action identifier, echoed back by the client on submit and matched against `transitions`. The name `back` is reserved for engine-injected back navigation."
214
+ },
215
+ "kind": {
216
+ "type": "string",
217
+ "enum": [
218
+ "submit",
219
+ "passkey",
220
+ "passkey_register",
221
+ "navigate"
222
+ ],
223
+ "description": "How the engine handles the action. - submit: collect the step's fields and run validate/dispatch/on_success. - passkey: issue a WebAuthn assertion challenge; the matching transition fires once the assertion verifies. - passkey_register: issue a WebAuthn registration challenge; the matching transition fires once the attestation verifies. - navigate: route through the transition without running the input pipeline. (`back` exists on the wire but is engine-injected; declaring it is rejected.)"
224
+ },
225
+ "primary": {
226
+ "type": "boolean",
227
+ "default": false,
228
+ "description": "Marks this as the default/primary action. The runtime template uses this hint to choose visual emphasis. At most one action per step should be primary; this is not enforced here."
229
+ },
230
+ "text_key": {
231
+ "type": "string",
232
+ "examples": [
233
+ "actions.signin.submit"
234
+ ],
235
+ "description": "Optional localization key override for the action's label. When omitted, the engine derives a key from the step and action names. Display text is resolved client-side from a locale dictionary, never by the engine."
236
+ }
237
+ },
238
+ "description": "Configuration for a user-invokable action on a step.",
239
+ "required": [
240
+ "name",
241
+ "kind"
242
+ ]
243
+ },
244
+ "Gate": {
245
+ "type": "object",
246
+ "required": [
247
+ "kind",
248
+ "provider"
249
+ ],
250
+ "additionalProperties": false,
251
+ "properties": {
252
+ "kind": {
253
+ "type": "string",
254
+ "enum": [
255
+ "captcha"
256
+ ],
257
+ "description": "The gate category. Only `captcha` is currently defined. Authenticator ceremonies (e.g. passkey) are modelled as credential auth_attempts via `x-credential` on a field, not as gates."
258
+ },
259
+ "provider": {
260
+ "type": "string",
261
+ "examples": [
262
+ "altcha",
263
+ "turnstile",
264
+ "hcaptcha"
265
+ ],
266
+ "description": "Provider identifier within the gate kind — e.g. `altcha`, `turnstile`, `hcaptcha`. The engine looks up an implementation in its provider registry."
267
+ },
268
+ "config": {
269
+ "type": "object",
270
+ "additionalProperties": true,
271
+ "examples": [
272
+ {
273
+ "site_key": "0x4AAAAAAAxxxxxxxxxxxxxx"
274
+ }
275
+ ],
276
+ "description": "Provider-specific configuration consumed by the implementation when issuing the per-render challenge. Opaque to the engine."
277
+ }
278
+ }
279
+ },
280
+ "SSOProvider": {
281
+ "type": "object",
282
+ "required": [
283
+ "id",
284
+ "name",
285
+ "template"
286
+ ],
287
+ "additionalProperties": false,
288
+ "properties": {
289
+ "id": {
290
+ "type": "string",
291
+ "examples": [
292
+ "google",
293
+ "corp_idp"
294
+ ],
295
+ "description": "Provider instance identifier. Echoed back by the client when the user picks a provider; routed to the corresponding configured IdP at the engine."
296
+ },
297
+ "name": {
298
+ "type": "string",
299
+ "examples": [
300
+ "Google",
301
+ "Acme SSO"
302
+ ],
303
+ "description": "Display name surfaced to the user. Localized client-side if a matching text key exists in the locale dictionary."
304
+ },
305
+ "template": {
306
+ "type": "string",
307
+ "examples": [
308
+ "google",
309
+ "entraid",
310
+ "github"
311
+ ],
312
+ "description": "Hint for rendering (logo, brand colors) — e.g. `google`, `entraid`, `github`. Consumed by the runtime template, not by the engine."
313
+ }
314
+ }
315
+ },
316
+ "Transition": {
317
+ "type": "object",
318
+ "required": [
319
+ "target"
320
+ ],
321
+ "additionalProperties": false,
322
+ "properties": {
323
+ "target": {
324
+ "type": "string",
325
+ "examples": [
326
+ "authenticate",
327
+ "register",
328
+ "recovery"
329
+ ],
330
+ "description": "When `action` is omitted, the `name` of a step in the same definition. When `action` is `switch` or `pivot`, the `name` of another flow definition in the same project."
331
+ },
332
+ "action": {
333
+ "type": ["string", "null"],
334
+ "enum": [
335
+ "switch",
336
+ "pivot",
337
+ null
338
+ ],
339
+ "description": "How to interpret `target`. - Omitted: transition to a step in the current definition. - `switch`: replace the current flow with the target flow. No return; the current flow is discarded. Typical use: navigating between peer flows like login ↔ register. - `pivot`: push the target flow onto the stack. The current flow is paused; when the target flow completes the engine auto-pops back. Typical use: login → recovery → back to login."
340
+ }
341
+ }
342
+ }
343
+ }
344
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "UserProperty",
4
+ "type": "object",
5
+ "allOf": [
6
+ {
7
+ "$ref": "https://json-schema.org/draft/2020-12/schema"
8
+ }
9
+ ],
10
+ "additionalProperties": true,
11
+ "properties": {
12
+ "$schema": {
13
+ "type": "string",
14
+ "const": "https://json-schema.org/draft/2020-12/schema",
15
+ "description": "The JSON Schema version used for this schema."
16
+ },
17
+ "x-verify": {
18
+ "oneOf": [
19
+ {
20
+ "type": "string"
21
+ },
22
+ {
23
+ "type": "null"
24
+ }
25
+ ],
26
+ "description": "The verification method for this property, if applicable"
27
+ },
28
+ "x-unique": {
29
+ "oneOf": [
30
+ {
31
+ "type": "string",
32
+ "enum": [
33
+ "unspecified",
34
+ "project",
35
+ "team"
36
+ ]
37
+ },
38
+ {
39
+ "type": "null"
40
+ }
41
+ ],
42
+ "description": "The level of uniqueness for this property, if applicable"
43
+ },
44
+ "x-claim": {
45
+ "oneOf": [
46
+ {
47
+ "type": "string"
48
+ },
49
+ {
50
+ "type": "null"
51
+ }
52
+ ],
53
+ "description": "The claim name for this property, if applicable"
54
+ },
55
+ "x-editable": {
56
+ "type": "boolean",
57
+ "default": true,
58
+ "description": "Whether this property is editable by the user or not"
59
+ },
60
+ "x-sensitive": {
61
+ "type": "boolean",
62
+ "default": false,
63
+ "description": "Whether this property contains sensitive information or not"
64
+ },
65
+ "x-mfa": {
66
+ "type": "boolean",
67
+ "default": false,
68
+ "description": "Whether this property is used for multi-factor authentication or not"
69
+ },
70
+ "properties": {
71
+ "type": "object",
72
+ "description": "A map of additional properties for the user definition, where the key is the property name and the value is the property schema",
73
+ "additionalProperties": true
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "title": "UserSchema",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "required": [
6
+ "metaSchema",
7
+ "kind",
8
+ "x-auth-methods"
9
+ ],
10
+ "allOf": [
11
+ {
12
+ "$ref": "https://json-schema.org/draft/2020-12/schema"
13
+ }
14
+ ],
15
+ "additionalProperties": true,
16
+ "properties": {
17
+ "$schema": {
18
+ "type": "string",
19
+ "const": "https://json-schema.org/draft/2020-12/schema",
20
+ "description": "The JSON Schema version used for this schema."
21
+ },
22
+ "objectType": {
23
+ "type": "string",
24
+ "maxLength": 256,
25
+ "description": "The type of user this schema describes. This is a customer chosen name.",
26
+ "example": "human-user"
27
+ },
28
+ "kind": {
29
+ "type": "string",
30
+ "const": "user-schema",
31
+ "description": "Discriminator value for a user schema create request."
32
+ },
33
+ "metaSchema": {
34
+ "type": "string",
35
+ "maxLength": 1024,
36
+ "format": "uri",
37
+ "description": "The user Schema version used for this schema."
38
+ },
39
+ "x-auth-methods": {
40
+ "$ref": "auth-methods.json"
41
+ },
42
+ "properties": {
43
+ "type": "object",
44
+ "description": "A map of additional properties for the user definition, where the key is the property name and the value is the property schema",
45
+ "additionalProperties": {
46
+ "$ref": "user-property.json"
47
+ }
48
+ }
49
+ }
50
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zitadel/config",
3
- "version": "0.1.0-alpha.14",
3
+ "version": "0.1.0-alpha.16",
4
4
  "description": "Versioned Zitadel local config schemas and defaults",
5
5
  "homepage": "https://github.com/zitadel/nextgen/tree/main/packages/config#readme",
6
6
  "bugs": {
@@ -16,6 +16,8 @@
16
16
  "dist",
17
17
  "defaults/*.json",
18
18
  "defaults/*.md",
19
+ "defaults/presets/*/*.json",
20
+ "meta-schemas/*.json",
19
21
  "LICENSE"
20
22
  ],
21
23
  "type": "module",
@@ -35,6 +37,21 @@
35
37
  "types": "./dist/schemas.d.mts",
36
38
  "import": "./dist/schemas.mjs"
37
39
  },
40
+ "./normalize": {
41
+ "@zitadel/source": "./src/normalize.ts",
42
+ "types": "./dist/normalize.d.mts",
43
+ "import": "./dist/normalize.mjs"
44
+ },
45
+ "./validate": {
46
+ "@zitadel/source": "./src/validate.ts",
47
+ "types": "./dist/validate.d.mts",
48
+ "import": "./dist/validate.mjs"
49
+ },
50
+ "./meta-schemas": {
51
+ "@zitadel/source": "./src/meta-schemas.ts",
52
+ "types": "./dist/meta-schemas.d.mts",
53
+ "import": "./dist/meta-schemas.mjs"
54
+ },
38
55
  "./defaults/default-human-user.json": "./defaults/default-human-user.json",
39
56
  "./defaults/default-login.json": "./defaults/default-login.json",
40
57
  "./package.json": "./package.json"
@@ -43,9 +60,10 @@
43
60
  "access": "public"
44
61
  },
45
62
  "dependencies": {
46
- "@zitadel/api": "0.1.0-alpha.14"
63
+ "@zitadel/api": "0.1.0-alpha.16"
47
64
  },
48
65
  "devDependencies": {
66
+ "ajv": "^8.20.0",
49
67
  "tsdown": "^0.21.10",
50
68
  "tslib": "^2.8.1",
51
69
  "vitest": "^4.1.7"
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults-B2iIPSSl.mjs","names":["defaultHumanUserSchemaTemplate","defaultLoginFlowTemplate"],"sources":["../defaults/default-human-user.json","../defaults/default-login.json","../src/readmes.ts","../src/defaults.ts"],"sourcesContent":["","","import { readFileSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\n\n/**\n * README content the CLI copies to `.zitadel/schemas/README.md` during setup.\n * Source of truth is `packages/config/defaults/README-schemas.md`; the Go\n * server-side embed reads the same file (see `defaults.go`).\n */\nexport function schemasReadmeContent(): string {\n return readFileSync(readmeUrl(\"README-schemas.md\"), \"utf8\");\n}\n\n/**\n * README content the CLI copies to `.zitadel/flows/README.md` during setup.\n * Source of truth is `packages/config/defaults/README-flows.md`.\n */\nexport function flowsReadmeContent(): string {\n return readFileSync(readmeUrl(\"README-flows.md\"), \"utf8\");\n}\n\nfunction readmeUrl(filename: string): string {\n return fileURLToPath(new URL(`../defaults/${filename}`, import.meta.url));\n}\n","import type {\n CreateFlowDefinitionBodyFlowDefinition,\n CreateSchemaBody,\n} from \"@zitadel/api/generated/model\";\n\nimport defaultHumanUserSchemaTemplate from \"../defaults/default-human-user.json\" with {\n type: \"json\",\n};\nimport defaultLoginFlowTemplate from \"../defaults/default-login.json\" with {\n type: \"json\",\n};\n\nexport { flowsReadmeContent, schemasReadmeContent } from \"./readmes.js\";\n\nexport const DEFAULT_BUILTIN_SCHEMA_BASE = \"https://nextgen.com/api/schemas\";\nexport const DEFAULT_FLOW_SCHEMA_URI = \"https://nextgen.com/flow-definition.json\";\nexport const DEFAULT_SCHEMA_CONFIG_PATH = \".zitadel/schemas/default-human-user.json\";\nexport const DEFAULT_FLOW_CONFIG_PATH = \".zitadel/flows/default-login.json\";\n\nexport type DefaultConfigRenderOptions = {\n builtinSchemaBase?: string;\n userSchemaUrl?: string;\n};\n\nexport function defaultHumanUserSchemaUrl(\n builtinSchemaBase = DEFAULT_BUILTIN_SCHEMA_BASE,\n): string {\n return `${trimTrailingSlash(builtinSchemaBase)}/default-human-user.json`;\n}\n\nexport function getDefaultHumanUserSchema(\n options: DefaultConfigRenderOptions = {},\n): CreateSchemaBody {\n const builtinSchemaBase = trimTrailingSlash(\n options.builtinSchemaBase ?? DEFAULT_BUILTIN_SCHEMA_BASE,\n );\n return renderTemplate(defaultHumanUserSchemaTemplate, {\n SERVER_URL: builtinSchemaBase,\n USER_SCHEMA_URL: options.userSchemaUrl ?? defaultHumanUserSchemaUrl(builtinSchemaBase),\n }) as CreateSchemaBody;\n}\n\nexport function getDefaultLoginFlow(\n options: DefaultConfigRenderOptions = {},\n): CreateFlowDefinitionBodyFlowDefinition {\n const builtinSchemaBase = trimTrailingSlash(\n options.builtinSchemaBase ?? DEFAULT_BUILTIN_SCHEMA_BASE,\n );\n return renderTemplate(defaultLoginFlowTemplate, {\n SERVER_URL: builtinSchemaBase,\n USER_SCHEMA_URL: options.userSchemaUrl ?? defaultHumanUserSchemaUrl(builtinSchemaBase),\n }) as CreateFlowDefinitionBodyFlowDefinition;\n}\n\nfunction renderTemplate(value: unknown, replacements: Record<string, string>): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => renderTemplate(item, replacements));\n }\n if (value !== null && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value).map(([key, item]) => [key, renderTemplate(item, replacements)]),\n );\n }\n if (typeof value === \"string\") {\n return value.replaceAll(/\\$\\{([A-Z_]+)\\}/g, (match, name: string) => {\n return replacements[name] ?? match;\n });\n }\n return value;\n}\n\nfunction trimTrailingSlash(value: string): string {\n return value.replace(/\\/+$/u, \"\");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEQA,SAAgB,uBAA+B;AAC7C,QAAO,aAAa,UAAU,oBAAoB,EAAE,OAAO;;;;;;AAO7D,SAAgB,qBAA6B;AAC3C,QAAO,aAAa,UAAU,kBAAkB,EAAE,OAAO;;AAG3D,SAAS,UAAU,UAA0B;AAC3C,QAAO,cAAc,IAAI,IAAI,eAAe,YAAY,OAAO,KAAK,IAAI,CAAC;;;;ACP3E,MAAa,8BAA8B;AAC3C,MAAa,0BAA0B;AACvC,MAAa,6BAA6B;AAC1C,MAAa,2BAA2B;AAOxC,SAAgB,0BACd,oBAAoB,6BACZ;AACR,QAAO,GAAG,kBAAkB,kBAAkB,CAAC;;AAGjD,SAAgB,0BACd,UAAsC,EAAE,EACtB;CAClB,MAAM,oBAAoB,kBACxB,QAAQ,qBAAA,kCACT;AACD,QAAO,eAAeA,4BAAgC;EACpD,YAAY;EACZ,iBAAiB,QAAQ,iBAAiB,0BAA0B,kBAAkB;EACvF,CAAC;;AAGJ,SAAgB,oBACd,UAAsC,EAAE,EACA;CACxC,MAAM,oBAAoB,kBACxB,QAAQ,qBAAA,kCACT;AACD,QAAO,eAAeC,uBAA0B;EAC9C,YAAY;EACZ,iBAAiB,QAAQ,iBAAiB,0BAA0B,kBAAkB;EACvF,CAAC;;AAGJ,SAAS,eAAe,OAAgB,cAA+C;AACrF,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,MAAM,KAAK,SAAS,eAAe,MAAM,aAAa,CAAC;AAEhE,KAAI,UAAU,QAAQ,OAAO,UAAU,SACrC,QAAO,OAAO,YACZ,OAAO,QAAQ,MAAM,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,KAAK,eAAe,MAAM,aAAa,CAAC,CAAC,CACtF;AAEH,KAAI,OAAO,UAAU,SACnB,QAAO,MAAM,WAAW,qBAAqB,OAAO,SAAiB;AACnE,SAAO,aAAa,SAAS;GAC7B;AAEJ,QAAO;;AAGT,SAAS,kBAAkB,OAAuB;AAChD,QAAO,MAAM,QAAQ,SAAS,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults-DzfOT2_7.d.mts","names":[],"sources":["../src/readmes.ts","../src/defaults.ts"],"mappings":";;;;;;AAQA;;iBAAgB,oBAAA,CAAA;;;AAQhB;;iBAAgB,kBAAA,CAAA;;;cCFH,2BAAA;AAAA,cACA,uBAAA;AAAA,cACA,0BAAA;AAAA,cACA,wBAAA;AAAA,KAED,0BAAA;EACV,iBAAA;EACA,aAAA;AAAA;AAAA,iBAGc,yBAAA,CACd,iBAAA;AAAA,iBAKc,yBAAA,CACd,OAAA,GAAS,0BAAA,GACR,gBAAA;AAAA,iBAUa,mBAAA,CACd,OAAA,GAAS,0BAAA,GACR,sCAAA"}