@ninedeploy/schemas 0.3.0 → 0.5.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.
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Curated runtime version catalog — the single source of truth for every
3
+ * language version NineDeploy suggests anywhere in the product (Manifest
4
+ * Creator presets, the CLI's `starterManifest`, the runtime version picker).
5
+ *
6
+ * Why this file exists: these versions used to be hand-written literals
7
+ * duplicated across `apps/web` and `packages/sdk`. Nobody owned them, so
8
+ * they drifted until the shipped defaults pinned runtimes that had gone
9
+ * end-of-life. Everything now derives from this one table.
10
+ *
11
+ * The catalog is *advisory*, never a constraint. `runtime.version` in the
12
+ * manifest schema stays free-form (`^\d+(?:\.\d+){0,2}$`), so an operator
13
+ * can pin any version their build needs — including an EOL one. What the
14
+ * catalog buys us is a sensible default plus an honest warning when the
15
+ * pinned version is no longer supported upstream.
16
+ *
17
+ * ── Maintaining this file ────────────────────────────────────────────────
18
+ * Bump `RUNTIME_CATALOG_REVIEWED` whenever you touch the table, and check
19
+ * it against upstream release schedules:
20
+ * Node https://nodejs.org/en/about/previous-releases
21
+ * Python https://devguide.python.org/versions/
22
+ * Go https://go.dev/doc/devel/release
23
+ * Ruby https://www.ruby-lang.org/en/downloads/branches/
24
+ * PHP https://www.php.net/supported-versions.php
25
+ * Java https://adoptium.net/support/
26
+ * Rust https://www.rust-lang.org/
27
+ */
28
+ import type { RuntimeType } from './ninedeployManifest.js';
29
+ /**
30
+ * ISO date the table below was last checked against upstream schedules.
31
+ * Surfaced in the UI so a stale catalog is visible rather than silent.
32
+ */
33
+ export declare const RUNTIME_CATALOG_REVIEWED = "2026-08-26";
34
+ /**
35
+ * Upstream support state of a version, ordered from healthiest to worst.
36
+ *
37
+ * - `current` — newest stable release; ahead of the recommended pin.
38
+ * - `lts` — long-term-support line; the safe production choice.
39
+ * - `maintenance` — still supported, but no longer the primary line.
40
+ * - `security` — security fixes only; no bug fixes.
41
+ * - `eol` — unsupported upstream. Usable, but nothing gets patched.
42
+ */
43
+ export type RuntimeSupport = 'current' | 'lts' | 'maintenance' | 'security' | 'eol';
44
+ export interface RuntimeVersionOption {
45
+ /** Value written into `runtime.version` — matches the manifest regex. */
46
+ version: string;
47
+ /** Human label for the picker, e.g. "24 — Active LTS". */
48
+ label: string;
49
+ support: RuntimeSupport;
50
+ /** ISO date support ends (or ended). Omitted when upstream has not set one. */
51
+ eol?: string;
52
+ }
53
+ export interface RuntimeVersionCatalogEntry {
54
+ /** Display name used in advisory messages, e.g. "Node.js". */
55
+ name: string;
56
+ /** The version presets and the "recommended" hint use. Must appear in `options`. */
57
+ recommended: string;
58
+ /** Newest first — the picker renders them in this order. */
59
+ options: readonly RuntimeVersionOption[];
60
+ }
61
+ /**
62
+ * Versions offered per runtime. Only runtimes we can meaningfully pin appear
63
+ * here; `auto` and `static` have no version axis and are absent by design.
64
+ *
65
+ * Each list keeps a couple of EOL entries on purpose: teams migrating an
66
+ * existing app need to reproduce their current runtime before they can move
67
+ * off it, and an undocumented version they have to guess at is worse than a
68
+ * documented one carrying a warning.
69
+ */
70
+ export declare const RUNTIME_VERSION_CATALOG: Partial<Record<RuntimeType, RuntimeVersionCatalogEntry>>;
71
+ /** Versions offered for a runtime type. Empty for types with no version axis. */
72
+ export declare function runtimeVersionOptions(type: RuntimeType): readonly RuntimeVersionOption[];
73
+ /**
74
+ * The version presets pin for a runtime, or `undefined` when the type has no
75
+ * version axis (`auto`, `static`) — in which case the manifest should omit
76
+ * `runtime.version` entirely and let Nixpacks decide.
77
+ */
78
+ export declare function recommendedRuntimeVersion(type: RuntimeType): string | undefined;
79
+ /**
80
+ * Resolve an operator-typed version to its catalog entry.
81
+ *
82
+ * Matching is longest-prefix on dot boundaries, so `20.18.1` resolves to
83
+ * Node's `20` entry and `3.12.4` to Python's `3.12` — pinning a patch
84
+ * release still yields the right support status. The dot boundary is what
85
+ * keeps `2` from matching `20`.
86
+ */
87
+ export declare function findRuntimeVersion(type: RuntimeType, version: string): RuntimeVersionOption | undefined;
88
+ /** A note to show next to the version field. `error` is not a blocker — only a warning. */
89
+ export interface RuntimeVersionAdvisory {
90
+ level: 'error' | 'warn' | 'info';
91
+ message: string;
92
+ }
93
+ /**
94
+ * Describe the health of a pinned version, or `null` when there is nothing
95
+ * worth saying (supported version, no version pinned, runtime with no
96
+ * version axis).
97
+ *
98
+ * Deliberately never rejects: an EOL pin is a warning, not an error, because
99
+ * reproducing a legacy runtime is a legitimate reason to deploy one.
100
+ */
101
+ export declare function runtimeVersionAdvisory(type: RuntimeType, version: string | undefined): RuntimeVersionAdvisory | null;
102
+ //# sourceMappingURL=runtimeVersions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeVersions.d.ts","sourceRoot":"","sources":["../src/runtimeVersions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,wBAAwB,eAAe,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,KAAK,GAAG,aAAa,GAAG,UAAU,GAAG,KAAK,CAAC;AAEpF,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,0BAA0B;IACzC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC,CA4E5F,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,oBAAoB,EAAE,CAExF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,GACd,oBAAoB,GAAG,SAAS,CAIlC;AAED,2FAA2F;AAC3F,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,sBAAsB,GAAG,IAAI,CA+B/B"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * ISO date the table below was last checked against upstream schedules.
3
+ * Surfaced in the UI so a stale catalog is visible rather than silent.
4
+ */
5
+ export const RUNTIME_CATALOG_REVIEWED = '2026-08-26';
6
+ /**
7
+ * Versions offered per runtime. Only runtimes we can meaningfully pin appear
8
+ * here; `auto` and `static` have no version axis and are absent by design.
9
+ *
10
+ * Each list keeps a couple of EOL entries on purpose: teams migrating an
11
+ * existing app need to reproduce their current runtime before they can move
12
+ * off it, and an undocumented version they have to guess at is worse than a
13
+ * documented one carrying a warning.
14
+ */
15
+ export const RUNTIME_VERSION_CATALOG = {
16
+ node: {
17
+ name: 'Node.js',
18
+ recommended: '24',
19
+ options: [
20
+ { version: '26', label: '26 — Current', support: 'current', eol: '2029-04-30' },
21
+ { version: '24', label: '24 — Active LTS', support: 'lts', eol: '2028-04-30' },
22
+ { version: '22', label: '22 — Maintenance LTS', support: 'maintenance', eol: '2027-04-30' },
23
+ { version: '20', label: '20 — end-of-life', support: 'eol', eol: '2026-04-30' },
24
+ { version: '18', label: '18 — end-of-life', support: 'eol', eol: '2025-04-30' },
25
+ ],
26
+ },
27
+ python: {
28
+ name: 'Python',
29
+ recommended: '3.14',
30
+ options: [
31
+ { version: '3.14', label: '3.14 — latest stable', support: 'current', eol: '2030-10-31' },
32
+ { version: '3.13', label: '3.13 — bugfix', support: 'maintenance', eol: '2029-10-31' },
33
+ { version: '3.12', label: '3.12 — security fixes only', support: 'security', eol: '2028-10-31' },
34
+ { version: '3.11', label: '3.11 — security fixes only', support: 'security', eol: '2027-10-31' },
35
+ ],
36
+ },
37
+ go: {
38
+ name: 'Go',
39
+ recommended: '1.27',
40
+ options: [
41
+ { version: '1.27', label: '1.27 — latest stable', support: 'current' },
42
+ { version: '1.26', label: '1.26 — supported', support: 'maintenance' },
43
+ { version: '1.25', label: '1.25 — end-of-life', support: 'eol' },
44
+ { version: '1.24', label: '1.24 — end-of-life', support: 'eol' },
45
+ ],
46
+ },
47
+ ruby: {
48
+ name: 'Ruby',
49
+ recommended: '3.4',
50
+ options: [
51
+ { version: '4.0', label: '4.0 — latest stable', support: 'current' },
52
+ { version: '3.4', label: '3.4 — normal maintenance', support: 'maintenance' },
53
+ { version: '3.3', label: '3.3 — security fixes only', support: 'security', eol: '2027-03-31' },
54
+ { version: '3.2', label: '3.2 — end-of-life', support: 'eol', eol: '2026-04-01' },
55
+ ],
56
+ },
57
+ php: {
58
+ name: 'PHP',
59
+ recommended: '8.4',
60
+ options: [
61
+ { version: '8.5', label: '8.5 — active support', support: 'current', eol: '2029-12-31' },
62
+ { version: '8.4', label: '8.4 — active support', support: 'maintenance', eol: '2028-12-31' },
63
+ { version: '8.3', label: '8.3 — security fixes only', support: 'security', eol: '2027-12-31' },
64
+ { version: '8.2', label: '8.2 — security fixes only', support: 'security', eol: '2026-12-31' },
65
+ { version: '8.1', label: '8.1 — end-of-life', support: 'eol', eol: '2025-12-31' },
66
+ ],
67
+ },
68
+ java: {
69
+ name: 'Java',
70
+ recommended: '25',
71
+ options: [
72
+ { version: '26', label: '26 — latest feature release (non-LTS)', support: 'current' },
73
+ { version: '25', label: '25 — LTS', support: 'lts', eol: '2031-09-30' },
74
+ { version: '21', label: '21 — LTS', support: 'lts', eol: '2029-12-31' },
75
+ { version: '17', label: '17 — LTS', support: 'maintenance', eol: '2027-10-31' },
76
+ ],
77
+ },
78
+ rust: {
79
+ name: 'Rust',
80
+ // Rust ships a new stable every six weeks and backports nothing, so any
81
+ // version below the newest stable is unsupported by definition. Expect
82
+ // this list to need a bump more often than the others.
83
+ recommended: '1.98',
84
+ options: [
85
+ { version: '1.98', label: '1.98 — latest stable', support: 'current' },
86
+ { version: '1.97', label: '1.97 — superseded', support: 'eol' },
87
+ { version: '1.96', label: '1.96 — superseded', support: 'eol' },
88
+ { version: '1.95', label: '1.95 — superseded', support: 'eol' },
89
+ ],
90
+ },
91
+ };
92
+ /** Versions offered for a runtime type. Empty for types with no version axis. */
93
+ export function runtimeVersionOptions(type) {
94
+ return RUNTIME_VERSION_CATALOG[type]?.options ?? [];
95
+ }
96
+ /**
97
+ * The version presets pin for a runtime, or `undefined` when the type has no
98
+ * version axis (`auto`, `static`) — in which case the manifest should omit
99
+ * `runtime.version` entirely and let Nixpacks decide.
100
+ */
101
+ export function recommendedRuntimeVersion(type) {
102
+ return RUNTIME_VERSION_CATALOG[type]?.recommended;
103
+ }
104
+ /**
105
+ * Resolve an operator-typed version to its catalog entry.
106
+ *
107
+ * Matching is longest-prefix on dot boundaries, so `20.18.1` resolves to
108
+ * Node's `20` entry and `3.12.4` to Python's `3.12` — pinning a patch
109
+ * release still yields the right support status. The dot boundary is what
110
+ * keeps `2` from matching `20`.
111
+ */
112
+ export function findRuntimeVersion(type, version) {
113
+ return [...runtimeVersionOptions(type)]
114
+ .sort((a, b) => b.version.length - a.version.length)
115
+ .find((o) => version === o.version || version.startsWith(`${o.version}.`));
116
+ }
117
+ /**
118
+ * Describe the health of a pinned version, or `null` when there is nothing
119
+ * worth saying (supported version, no version pinned, runtime with no
120
+ * version axis).
121
+ *
122
+ * Deliberately never rejects: an EOL pin is a warning, not an error, because
123
+ * reproducing a legacy runtime is a legitimate reason to deploy one.
124
+ */
125
+ export function runtimeVersionAdvisory(type, version) {
126
+ const entry = RUNTIME_VERSION_CATALOG[type];
127
+ if (!entry || !version)
128
+ return null;
129
+ const match = findRuntimeVersion(type, version);
130
+ if (!match) {
131
+ return {
132
+ level: 'info',
133
+ message: `${entry.name} ${version} is not in NineDeploy's catalog (last reviewed ${RUNTIME_CATALOG_REVIEWED}). The build will still try it — Nixpacks resolves the version itself.`,
134
+ };
135
+ }
136
+ // One shared clause for both levels: upstream dates are a label, not a
137
+ // tense, so the same wording works whether the date is past or future.
138
+ const support = match.eol ? ` Upstream support: ${match.eol}.` : '';
139
+ if (match.support === 'eol') {
140
+ return {
141
+ level: 'error',
142
+ message: `${entry.name} ${match.version} is end-of-life and no longer receives security patches. You can still deploy it — ${entry.recommended} is the recommended pin.${support}`,
143
+ };
144
+ }
145
+ if (match.support === 'security') {
146
+ return {
147
+ level: 'warn',
148
+ message: `${entry.name} ${match.version} receives security fixes only — no bug fixes. Recommended pin: ${entry.recommended}.${support}`,
149
+ };
150
+ }
151
+ return null;
152
+ }
153
+ //# sourceMappingURL=runtimeVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeVersions.js","sourceRoot":"","sources":["../src/runtimeVersions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"secretScan.d.ts","sourceRoot":"","sources":["../src/secretScan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;2CAE2C;AAC3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,aAAa,CAkExD,CAAC;AAEF,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAmBxD;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5C"}
1
+ {"version":3,"file":"secretScan.d.ts","sourceRoot":"","sources":["../src/secretScan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;2CAE2C;AAC3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,aAAa,CAqExD,CAAC;AAEF,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAYD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAqBxD;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5C"}
@@ -52,8 +52,11 @@ export const SECRET_PATTERNS = [
52
52
  },
53
53
  {
54
54
  id: 'openai-secret',
55
- description: 'OpenAI API key (sk-…)',
56
- regex: /\bsk-[A-Za-z0-9]{48,}\b/,
55
+ description: 'OpenAI API key (sk-… / sk-proj-…)',
56
+ // `(?!ant-)` keeps Anthropic keys single-matched under the anthropic-key
57
+ // rule; `proj-` is the current project-key prefix whose character set
58
+ // includes `-`/`_`.
59
+ regex: /\bsk-(?!ant-)(?:proj-)?[A-Za-z0-9_-]{40,}\b/,
57
60
  },
58
61
  {
59
62
  id: 'anthropic-key',
@@ -81,6 +84,15 @@ export const SECRET_PATTERNS = [
81
84
  regex: /\bBearer\s+eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/,
82
85
  },
83
86
  ];
87
+ // The scan appends the `g` flag to every pattern — a pattern that already
88
+ // declared it would produce `gg` and throw Invalid flag at scan time. Fail
89
+ // at import instead, where a developer sees it immediately.
90
+ for (const p of SECRET_PATTERNS) {
91
+ /* v8 ignore next 3 — developer-error guard, not reachable via valid patterns */
92
+ if (p.regex.flags.includes('g')) {
93
+ throw new Error(`secret pattern "${p.id}" must not declare the g flag (the scanner adds it)`);
94
+ }
95
+ }
84
96
  /**
85
97
  * Run every secret pattern across `text` and return every hit.
86
98
  *
@@ -90,20 +102,21 @@ export const SECRET_PATTERNS = [
90
102
  export function scanForSecrets(text) {
91
103
  const hits = [];
92
104
  for (const pattern of SECRET_PATTERNS) {
93
- // Reset stateful `g` regexes (defensive — none of ours use `g` today).
94
- pattern.regex.lastIndex = 0;
95
- const match = pattern.regex.exec(text);
96
- if (!match || match.index === undefined)
97
- continue;
98
- const start = match.index;
99
- const end = start + match[0].length;
100
- hits.push({
101
- patternId: pattern.id,
102
- description: pattern.description,
103
- start,
104
- end,
105
- redacted: redact(match[0]),
106
- });
105
+ // matchAll requires the `g` flag; build a per-call global copy so the
106
+ // module-level regexes never carry stateful lastIndex between scans,
107
+ // and so EVERY occurrence is reported (the contract says "every hit").
108
+ const global = new RegExp(pattern.regex.source, `${pattern.regex.flags}g`);
109
+ for (const match of text.matchAll(global)) {
110
+ const start = match.index;
111
+ const end = start + match[0].length;
112
+ hits.push({
113
+ patternId: pattern.id,
114
+ description: pattern.description,
115
+ start,
116
+ end,
117
+ redacted: redact(match[0]),
118
+ });
119
+ }
107
120
  }
108
121
  // Sort by start position so the redacted-log line reads in document order.
109
122
  return hits.sort((a, b) => a.start - b.start);
@@ -1 +1 @@
1
- {"version":3,"file":"secretScan.js","sourceRoot":"","sources":["../src/secretScan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secretScan.js","sourceRoot":"","sources":["../src/secretScan.ts"],"names":[],"mappings":"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"}
package/dist/service.d.ts CHANGED
@@ -229,6 +229,7 @@ export declare const deployment: z.ZodObject<{
229
229
  failed: "failed";
230
230
  queued: "queued";
231
231
  running: "running";
232
+ superseded: "superseded";
232
233
  }>;
233
234
  commitSha: z.ZodNullable<z.ZodString>;
234
235
  message: z.ZodNullable<z.ZodString>;
@@ -239,6 +240,60 @@ export declare const deployment: z.ZodObject<{
239
240
  createdAt: z.ZodString;
240
241
  }, z.core.$strip>;
241
242
  export type Deployment = z.infer<typeof deployment>;
243
+ /**
244
+ * A single row in the global deploy queue (`GET /v1/services/queue`).
245
+ *
246
+ * Same fields as `Deployment` plus the service + project metadata the
247
+ * panel needs to render "what is happening and what is coming next"
248
+ * without a follow-up round-trip. `imageDigest` is populated for image
249
+ * deploys where `commitSha` is null.
250
+ */
251
+ export declare const queueItem: z.ZodObject<{
252
+ id: z.ZodNumber;
253
+ serviceId: z.ZodNumber;
254
+ serviceName: z.ZodString;
255
+ status: z.ZodEnum<{
256
+ building: "building";
257
+ deploying: "deploying";
258
+ queued: "queued";
259
+ }>;
260
+ commitSha: z.ZodNullable<z.ZodString>;
261
+ imageDigest: z.ZodNullable<z.ZodString>;
262
+ message: z.ZodNullable<z.ZodString>;
263
+ author: z.ZodNullable<z.ZodString>;
264
+ trigger: z.ZodString;
265
+ startedAt: z.ZodNullable<z.ZodString>;
266
+ finishedAt: z.ZodNullable<z.ZodString>;
267
+ createdAt: z.ZodString;
268
+ }, z.core.$strip>;
269
+ export type QueueItem = z.infer<typeof queueItem>;
270
+ export declare const queueResponse: z.ZodObject<{
271
+ items: z.ZodArray<z.ZodObject<{
272
+ id: z.ZodNumber;
273
+ serviceId: z.ZodNumber;
274
+ serviceName: z.ZodString;
275
+ status: z.ZodEnum<{
276
+ building: "building";
277
+ deploying: "deploying";
278
+ queued: "queued";
279
+ }>;
280
+ commitSha: z.ZodNullable<z.ZodString>;
281
+ imageDigest: z.ZodNullable<z.ZodString>;
282
+ message: z.ZodNullable<z.ZodString>;
283
+ author: z.ZodNullable<z.ZodString>;
284
+ trigger: z.ZodString;
285
+ startedAt: z.ZodNullable<z.ZodString>;
286
+ finishedAt: z.ZodNullable<z.ZodString>;
287
+ createdAt: z.ZodString;
288
+ }, z.core.$strip>>;
289
+ count: z.ZodNumber;
290
+ byStatus: z.ZodObject<{
291
+ queued: z.ZodNumber;
292
+ building: z.ZodNumber;
293
+ deploying: z.ZodNumber;
294
+ }, z.core.$strip>;
295
+ }, z.core.$strip>;
296
+ export type QueueResponse = z.infer<typeof queueResponse>;
242
297
  export declare const createDomain: z.ZodObject<{
243
298
  hostname: z.ZodString;
244
299
  path: z.ZodDefault<z.ZodString>;
@@ -544,6 +599,7 @@ export declare const backup: z.ZodObject<{
544
599
  }>;
545
600
  status: z.ZodString;
546
601
  sizeBytes: z.ZodNumber;
602
+ label: z.ZodNullable<z.ZodString>;
547
603
  hasRemoteCopy: z.ZodOptional<z.ZodBoolean>;
548
604
  createdAt: z.ZodString;
549
605
  }, z.core.$strip>;
@@ -558,6 +614,7 @@ export declare const backupWithDb: z.ZodObject<{
558
614
  }>;
559
615
  status: z.ZodString;
560
616
  sizeBytes: z.ZodNumber;
617
+ label: z.ZodNullable<z.ZodString>;
561
618
  hasRemoteCopy: z.ZodOptional<z.ZodBoolean>;
562
619
  createdAt: z.ZodString;
563
620
  databaseName: z.ZodNullable<z.ZodString>;
@@ -623,12 +680,135 @@ export declare const template: z.ZodObject<{
623
680
  }>>>;
624
681
  cmd: z.ZodOptional<z.ZodArray<z.ZodString>>;
625
682
  dockerSocket: z.ZodOptional<z.ZodBoolean>;
683
+ composeContent: z.ZodOptional<z.ZodString>;
684
+ composeService: z.ZodOptional<z.ZodString>;
626
685
  }, z.core.$strip>;
627
686
  export type Template = z.infer<typeof template>;
628
687
  /**
629
- * One canonical Hub installation request. Image, internal port, volume,
630
- * command, Docker socket and database mapping are intentionally absent: they
631
- * are privileged registry-owned fields resolved by the server.
688
+ * Community template contribution (G-13). A `*.json`
689
+ * file dropped into `<dataDir>/community-templates/` is
690
+ * parsed against the `template` schema and surfaced in
691
+ * the `community.list` response. Files that fail to
692
+ * parse are reported in `errors` (one entry per file)
693
+ * so a single bad contribution does not hide the rest.
694
+ */
695
+ export declare const communityTemplateEntrySchema: z.ZodObject<{
696
+ id: z.ZodString;
697
+ template: z.ZodObject<{
698
+ id: z.ZodString;
699
+ name: z.ZodString;
700
+ tagline: z.ZodString;
701
+ description: z.ZodString;
702
+ category: z.ZodString;
703
+ emoji: z.ZodString;
704
+ image: z.ZodString;
705
+ port: z.ZodNumber;
706
+ volumeMount: z.ZodOptional<z.ZodNullable<z.ZodString>>;
707
+ env: z.ZodOptional<z.ZodArray<z.ZodObject<{
708
+ key: z.ZodString;
709
+ value: z.ZodString;
710
+ secret: z.ZodOptional<z.ZodBoolean>;
711
+ }, z.core.$strip>>>;
712
+ website: z.ZodOptional<z.ZodString>;
713
+ docs: z.ZodOptional<z.ZodString>;
714
+ featured: z.ZodOptional<z.ZodBoolean>;
715
+ runtimeVerified: z.ZodOptional<z.ZodBoolean>;
716
+ verifiedAt: z.ZodOptional<z.ZodISODate>;
717
+ requires: z.ZodOptional<z.ZodString>;
718
+ dbEngine: z.ZodOptional<z.ZodEnum<{
719
+ clickhouse: "clickhouse";
720
+ mariadb: "mariadb";
721
+ meilisearch: "meilisearch";
722
+ mongo: "mongo";
723
+ mysql: "mysql";
724
+ postgres: "postgres";
725
+ rabbitmq: "rabbitmq";
726
+ redis: "redis";
727
+ valkey: "valkey";
728
+ }>>;
729
+ databaseEnv: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
730
+ database: "database";
731
+ host: "host";
732
+ hostPort: "hostPort";
733
+ password: "password";
734
+ port: "port";
735
+ url: "url";
736
+ username: "username";
737
+ }>>>;
738
+ cmd: z.ZodOptional<z.ZodArray<z.ZodString>>;
739
+ dockerSocket: z.ZodOptional<z.ZodBoolean>;
740
+ composeContent: z.ZodOptional<z.ZodString>;
741
+ composeService: z.ZodOptional<z.ZodString>;
742
+ }, z.core.$strip>;
743
+ file: z.ZodString;
744
+ bytes: z.ZodNumber;
745
+ mtime: z.ZodNumber;
746
+ }, z.core.$strip>;
747
+ export type CommunityTemplateEntry = z.infer<typeof communityTemplateEntrySchema>;
748
+ export declare const communityTemplateListResultSchema: z.ZodObject<{
749
+ entries: z.ZodArray<z.ZodObject<{
750
+ id: z.ZodString;
751
+ template: z.ZodObject<{
752
+ id: z.ZodString;
753
+ name: z.ZodString;
754
+ tagline: z.ZodString;
755
+ description: z.ZodString;
756
+ category: z.ZodString;
757
+ emoji: z.ZodString;
758
+ image: z.ZodString;
759
+ port: z.ZodNumber;
760
+ volumeMount: z.ZodOptional<z.ZodNullable<z.ZodString>>;
761
+ env: z.ZodOptional<z.ZodArray<z.ZodObject<{
762
+ key: z.ZodString;
763
+ value: z.ZodString;
764
+ secret: z.ZodOptional<z.ZodBoolean>;
765
+ }, z.core.$strip>>>;
766
+ website: z.ZodOptional<z.ZodString>;
767
+ docs: z.ZodOptional<z.ZodString>;
768
+ featured: z.ZodOptional<z.ZodBoolean>;
769
+ runtimeVerified: z.ZodOptional<z.ZodBoolean>;
770
+ verifiedAt: z.ZodOptional<z.ZodISODate>;
771
+ requires: z.ZodOptional<z.ZodString>;
772
+ dbEngine: z.ZodOptional<z.ZodEnum<{
773
+ clickhouse: "clickhouse";
774
+ mariadb: "mariadb";
775
+ meilisearch: "meilisearch";
776
+ mongo: "mongo";
777
+ mysql: "mysql";
778
+ postgres: "postgres";
779
+ rabbitmq: "rabbitmq";
780
+ redis: "redis";
781
+ valkey: "valkey";
782
+ }>>;
783
+ databaseEnv: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
784
+ database: "database";
785
+ host: "host";
786
+ hostPort: "hostPort";
787
+ password: "password";
788
+ port: "port";
789
+ url: "url";
790
+ username: "username";
791
+ }>>>;
792
+ cmd: z.ZodOptional<z.ZodArray<z.ZodString>>;
793
+ dockerSocket: z.ZodOptional<z.ZodBoolean>;
794
+ composeContent: z.ZodOptional<z.ZodString>;
795
+ composeService: z.ZodOptional<z.ZodString>;
796
+ }, z.core.$strip>;
797
+ file: z.ZodString;
798
+ bytes: z.ZodNumber;
799
+ mtime: z.ZodNumber;
800
+ }, z.core.$strip>>;
801
+ errors: z.ZodArray<z.ZodObject<{
802
+ file: z.ZodString;
803
+ error: z.ZodString;
804
+ }, z.core.$strip>>;
805
+ totalBytes: z.ZodNumber;
806
+ }, z.core.$strip>;
807
+ export type CommunityTemplateListResult = z.infer<typeof communityTemplateListResultSchema>;
808
+ /**
809
+ * One canonical Hub installation request. Internal port, volume, command,
810
+ * Docker socket and database mapping are intentionally absent: they are
811
+ * privileged registry-owned fields resolved by the server.
632
812
  */
633
813
  export declare const deployTemplate: z.ZodObject<{
634
814
  name: z.ZodOptional<z.ZodString>;
@@ -638,6 +818,7 @@ export declare const deployTemplate: z.ZodObject<{
638
818
  healthPath: z.ZodOptional<z.ZodString>;
639
819
  cpuShares: z.ZodOptional<z.ZodNumber>;
640
820
  memLimitMb: z.ZodOptional<z.ZodNumber>;
821
+ image: z.ZodOptional<z.ZodString>;
641
822
  env: z.ZodOptional<z.ZodArray<z.ZodObject<{
642
823
  key: z.ZodString;
643
824
  value: z.ZodString;
@@ -647,6 +828,13 @@ export declare const deployTemplate: z.ZodObject<{
647
828
  }, z.core.$strip>;
648
829
  export type DeployTemplateInput = z.input<typeof deployTemplate>;
649
830
  export type DeployTemplate = z.infer<typeof deployTemplate>;
831
+ /**
832
+ * Whether an image reference keeps the template's registry repository while
833
+ * changing only the tag (`directus/directus:latest` → `directus/directus:11.5`).
834
+ * Digest references and cross-repository swaps are refused: the Hub override
835
+ * exists to pin a version, not to run an arbitrary image under a template's name.
836
+ */
837
+ export declare function sameImageRepository(templateImage: string, override: string): boolean;
650
838
  export declare const domainEntry: z.ZodObject<{
651
839
  id: z.ZodNumber;
652
840
  hostname: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;EAAuC,CAAC;AAChE,eAAO,MAAM,SAAS;;;;EAA6C,CAAC;AAKpE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsDxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;;;4EAG4E;AAC5E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0CxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,2EAA2E;AAC3E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE/D,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiElB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAG9C,eAAO,MAAM,YAAY;;;;;;;;;;;;;iBAQvB,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE7D,eAAO,MAAM,MAAM;;;;;;;;;;iBAUjB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAE5C,eAAO,MAAM,aAAa;;iBAExB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;iBAUrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;iBAapB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;iBAQxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAG1D,eAAO,MAAM,YAAY;;;;;;;;;;iBAiBvB,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE7D,uDAAuD;AACvD,eAAO,MAAM,WAAW;;;;;;;;iBAQtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;iBAejB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAG5C,eAAO,MAAM,aAAa;;;iBAOxB,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE/D,eAAO,MAAM,OAAO;;;;;;;;iBAQlB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAE9C,8EAA8E;AAC9E,eAAO,MAAM,cAAc;;;;;;;;;iBAAyC,CAAC;AACrE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAG5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;iBAWzB,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEjE,eAAO,MAAM,aAAa;;;;iBAIxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;iBAmB1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D;;uEAEuE;AACvE,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAErE,eAAO,MAAM,UAAU;;;;;;;;;iBAKrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAGpD,eAAO,MAAM,YAAY;;;;;iBAKvB,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE7D,eAAO,MAAM,MAAM;;;;;iBAKjB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAO5C;;;mBAGmB;AACnB,eAAO,MAAM,6BAA6B;;;;;;;iBAatC,CAAC;AACL,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE/F,kFAAkF;AAClF,eAAO,MAAM,6BAA6B;;;iBAOtC,CAAC;AACL,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE/F,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB;;;;;;;;iBAQlC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAG9E,eAAO,MAAM,SAAS;;;iBAGpB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAGvD,eAAO,MAAM,QAAQ;;;;;;;iBAOnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,aAAa;;;;;;;;;;;;iBASxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;iBAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,YAAY;;;;;;iBAGvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGxD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4BxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAG1D,eAAO,MAAM,MAAM;;;;;;;;;;;;;iBAYjB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAE5C,eAAO,MAAM,YAAY;;;;;;;;;;;;;;iBAAyD,CAAC;AACnF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;oEACoE;AACpE,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAGzE,eAAO,MAAM,eAAe;;;;;;;;;iBAS1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0DnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI5C,CAAC;AACH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE5F;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;iBAoBzB,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CASpF;AAGD,eAAO,MAAM,WAAW;;;;;;;;;;;;;iBAatB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW;;;;;;;;;;iBAMtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGtD,eAAO,MAAM,eAAe;;;;;;;;;iBAM1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,eAAe;;;iBAK1B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAEnE,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAGrE,eAAO,MAAM,kBAAkB;;;;;;;;;iBAAkB,CAAC;AAClD,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAEjD,eAAO,MAAM,kBAAkB;;;iBAAkB,CAAC;AAClD,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAE3D,eAAO,MAAM,mBAAmB;;iBAAmB,CAAC;AACpD,MAAM,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAG7D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;iBAM1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAG9D,eAAO,MAAM,YAAY;;;iBAA2E,CAAC;AACrG,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE7D,eAAO,MAAM,WAAW;;;;;;;iBAOtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGtD,eAAO,MAAM,YAAY;;;;;;EAA0D,CAAC;AACpF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,cAAc;;;;EAAqC,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBAanB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;iBASzB,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEjE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;iBAA2B,CAAC;AACvD,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEjE,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAGpE,eAAO,MAAM,eAAe;;;;;;;;iBAQ1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,qBAAqB;;;;;;;;iBAA4B,CAAC;AAC/D,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE/E,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAM1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAU7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}