@visual-platform/cli 0.0.0-stage → 0.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/dist/bin.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
package/dist/bin.js ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ import { main } from "./index.js";
3
+ process.exitCode = await main(process.argv.slice(2), {
4
+ out: (m) => console.log(m), err: (m) => console.error(m), env: process.env, cwd: process.cwd(), fetch,
5
+ });
6
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACnD,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK;CACtG,CAAC,CAAC"}
@@ -0,0 +1,56 @@
1
+ export type Io = {
2
+ out(msg: string): void;
3
+ err(msg: string): void;
4
+ env: Record<string, string | undefined>;
5
+ cwd: string;
6
+ fetch: typeof fetch;
7
+ };
8
+ /** Load definitions from a TS/JS module without building the customer's app (jiti). */
9
+ export declare function loadDefinitions(file: string, cwd: string): Promise<unknown[]>;
10
+ /** CLI entry. Returns the process exit code (0 ok, 1 validation/API failure, 2 usage). */
11
+ export declare function main(argv: string[], io: Io): Promise<number>;
12
+ type EventRef = {
13
+ name: string;
14
+ kind: string;
15
+ type: string;
16
+ };
17
+ type DataFieldRef = {
18
+ name: string;
19
+ type: string;
20
+ fields?: DataFieldRef[];
21
+ };
22
+ type DataInputRef = {
23
+ name: string;
24
+ shape: "list" | "object";
25
+ fields: DataFieldRef[];
26
+ };
27
+ export type Manifest = {
28
+ release: {
29
+ id: string;
30
+ sequence: number;
31
+ };
32
+ pages: {
33
+ pageKey: string;
34
+ locale: string;
35
+ slug: string;
36
+ events: EventRef[];
37
+ data?: DataInputRef[];
38
+ }[];
39
+ components: {
40
+ id: string;
41
+ key: string;
42
+ name: string;
43
+ props: {
44
+ name: string;
45
+ type: string;
46
+ label: string;
47
+ }[];
48
+ events: EventRef[];
49
+ locales: string[];
50
+ data?: DataInputRef[];
51
+ }[];
52
+ };
53
+ /** TypeScript source for `vp types pull` (ADR-032). Deterministic so the file diffs cleanly. */
54
+ export declare function renderTypes(m: Manifest): string;
55
+ export {};
56
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,EAAE,GAAG;IAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,KAAK,CAAA;CAAE,CAAC;AAmB/I,uFAAuF;AACvF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAOnF;AAiBD,0FAA0F;AAC1F,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6ElE;AAED,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7D,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC;AAC5E,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC;AACvF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,EAAE,CAAC;IACtG,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,EAAE,CAAC;CAC/K,CAAC;AA0BF,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CA0D/C"}
package/dist/index.js ADDED
@@ -0,0 +1,226 @@
1
+ import { eventValueType } from "@visual-platform/contracts";
2
+ import { validateDefinitions } from "@visual-platform/define";
3
+ import { createJiti } from "jiti";
4
+ import { resolve } from "node:path";
5
+ import { parseArgs } from "node:util";
6
+ const HELP = `vp — Visual Page Platform CLI
7
+
8
+ Usage:
9
+ vp definitions check [--file src/visual/definitions.ts]
10
+ vp definitions push --project <projectId> [--file …] [--api <adminUrl>] [--dry-run]
11
+ vp whoami [--api <adminUrl>]
12
+ vp classes pull [--out .visual/classes.txt] (env VISUAL_API_URL, VISUAL_PROJECT_ID, VISUAL_PROJECT_KEY)
13
+ Writes the Tailwind classes used by your published Studio content, for apps that build their own CSS:
14
+ Tailwind v4: @source "../.visual/classes.txt"; (in your CSS entry)
15
+ Tailwind v3: content: [..., "./.visual/classes.txt"] (tailwind.config.js)
16
+ vp types pull [--out src/visual/visual-types.ts] (same env)
17
+ Generates TypeScript types for the event names, pages and component props of the published release.
18
+
19
+ Auth: VP_TOKEN (personal access token with scope vp.registry.write for push).
20
+ Admin URL: --api or VP_API_URL (default http://localhost:3100).
21
+ The definitions file may export \`definitions\` (array) or any number of defineComponent() objects.`;
22
+ /** Load definitions from a TS/JS module without building the customer's app (jiti). */
23
+ export async function loadDefinitions(file, cwd) {
24
+ const path = resolve(cwd, file);
25
+ const jiti = createJiti(import.meta.url, { interopDefault: true });
26
+ const mod = (await jiti.import(path));
27
+ if (Array.isArray(mod.definitions))
28
+ return mod.definitions;
29
+ if (Array.isArray(mod.default))
30
+ return mod.default;
31
+ return Object.values(mod).filter((v) => typeof v === "object" && v !== null && "type" in v && "fields" in v);
32
+ }
33
+ function report(io, errors) {
34
+ for (const e of errors)
35
+ io.err(` ✘ ${e.type ?? "?"} ${e.path}: ${e.message}`);
36
+ }
37
+ async function api(io, base, path, init = {}) {
38
+ const token = io.env.VP_TOKEN;
39
+ if (!token)
40
+ throw new Error("VP_TOKEN is not set (create a personal access token in the admin)");
41
+ const res = await io.fetch(`${base.replace(/\/$/, "")}${path}`, {
42
+ ...init,
43
+ headers: { authorization: `Bearer ${token}`, "content-type": "application/json", "user-agent": "visual-platform-cli/0.1.0" },
44
+ });
45
+ const body = (await res.json().catch(() => ({})));
46
+ return { status: res.status, body };
47
+ }
48
+ /** CLI entry. Returns the process exit code (0 ok, 1 validation/API failure, 2 usage). */
49
+ export async function main(argv, io) {
50
+ const [group, cmd, ...rest] = argv;
51
+ const { values } = parseArgs({
52
+ args: group === "whoami" ? argv.slice(1) : rest,
53
+ options: { file: { type: "string" }, project: { type: "string" }, api: { type: "string" }, "dry-run": { type: "boolean" }, help: { type: "boolean" }, out: { type: "string" } },
54
+ allowPositionals: false,
55
+ });
56
+ const base = values.api ?? io.env.VP_API_URL ?? "http://localhost:3100";
57
+ try {
58
+ if (group === "whoami") {
59
+ const r = await api(io, base, "/api/v1/me");
60
+ if (r.status !== 200)
61
+ return io.err(`✘ ${r.body.error?.message ?? r.status}`), 1;
62
+ io.out(`user ${String(r.body.userId)} · ${r.body.bindings.length} role binding(s)`);
63
+ return 0;
64
+ }
65
+ if (group === "classes" && cmd === "pull") {
66
+ const apiUrl = (io.env.VISUAL_API_URL ?? "").replace(/\/+$/, "");
67
+ const projectId = io.env.VISUAL_PROJECT_ID;
68
+ if (!apiUrl || !projectId)
69
+ return io.err("✘ set VISUAL_API_URL and VISUAL_PROJECT_ID (and VISUAL_PROJECT_KEY)"), 2;
70
+ const res = await io.fetch(`${apiUrl}/v1/projects/${encodeURIComponent(projectId)}/classes`, { headers: io.env.VISUAL_PROJECT_KEY ? { "x-visual-key": io.env.VISUAL_PROJECT_KEY } : {} });
71
+ const body = (await res.json().catch(() => ({})));
72
+ if (!res.ok || !body.classes)
73
+ return io.err(`✘ ${body.error?.message ?? `HTTP ${res.status}`}`), 1;
74
+ const out = values.out ?? ".visual/classes.txt";
75
+ const { mkdir, writeFile } = await import("node:fs/promises");
76
+ const { dirname, resolve } = await import("node:path");
77
+ const file = resolve(io.cwd, out);
78
+ await mkdir(dirname(file), { recursive: true });
79
+ await writeFile(file, `${body.classes.join("\n")}\n`);
80
+ io.out(`✔ ${body.classes.length} classes from release #${body.release?.sequence ?? "?"} → ${out}`);
81
+ return 0;
82
+ }
83
+ if (group === "types" && cmd === "pull") {
84
+ const apiUrl = (io.env.VISUAL_API_URL ?? "").replace(/\/+$/, "");
85
+ const projectId = io.env.VISUAL_PROJECT_ID;
86
+ if (!apiUrl || !projectId)
87
+ return io.err("✘ set VISUAL_API_URL and VISUAL_PROJECT_ID (and VISUAL_PROJECT_KEY)"), 2;
88
+ const res = await io.fetch(`${apiUrl}/v1/projects/${encodeURIComponent(projectId)}/manifest`, { headers: io.env.VISUAL_PROJECT_KEY ? { "x-visual-key": io.env.VISUAL_PROJECT_KEY } : {} });
89
+ const body = (await res.json().catch(() => ({})));
90
+ if (!res.ok || !body.pages || !body.components)
91
+ return io.err(`✘ ${body.error?.message ?? `HTTP ${res.status}`}`), 1;
92
+ const out = values.out ?? "src/visual/visual-types.ts";
93
+ const { mkdir, writeFile } = await import("node:fs/promises");
94
+ const { dirname, resolve } = await import("node:path");
95
+ const file = resolve(io.cwd, out);
96
+ await mkdir(dirname(file), { recursive: true });
97
+ await writeFile(file, renderTypes(body));
98
+ const events = new Set([...body.pages, ...body.components].flatMap((x) => x.events.map((e) => e.name)));
99
+ io.out(`✔ ${events.size} event(s), ${new Set(body.pages.map((p) => p.pageKey)).size} page(s), ${body.components.length} component(s) from release #${body.release?.sequence ?? "?"} → ${out}`);
100
+ return 0;
101
+ }
102
+ if (group !== "definitions" || !["check", "push"].includes(cmd ?? "") || values.help)
103
+ return io.out(HELP), group ? 2 : 0;
104
+ const file = values.file ?? "src/visual/definitions.ts";
105
+ const defs = await loadDefinitions(file, io.cwd);
106
+ const local = validateDefinitions(defs);
107
+ if (!defs.length)
108
+ return io.err(`✘ no definitions found in ${file}`), 1;
109
+ if (!local.ok)
110
+ return io.err(`✘ ${defs.length} definition(s) in ${file} — invalid:`), report(io, local.errors), 1;
111
+ io.out(`✔ ${defs.length} definition(s) valid: ${defs.map((d) => d.type).join(", ")}`);
112
+ if (cmd === "check" || values["dry-run"])
113
+ return 0;
114
+ if (!values.project)
115
+ return io.err("✘ --project <projectId> is required for push"), 2;
116
+ const r = await api(io, base, `/api/v1/projects/${encodeURIComponent(values.project)}/definitions`, {
117
+ method: "PUT", body: JSON.stringify({ definitions: defs, sdkVersion: "0.1.0", source: io.env.GITHUB_SHA ?? io.env.CI_COMMIT_SHA ?? "local" }),
118
+ });
119
+ if (r.status !== 200) {
120
+ io.err(`✘ push failed (${r.status} ${r.body.error?.code ?? ""}): ${r.body.error?.message ?? ""}`);
121
+ if (Array.isArray(r.body.error?.details))
122
+ report(io, r.body.error.details);
123
+ return 1;
124
+ }
125
+ const b = r.body;
126
+ io.out(b.unchanged ? `✔ unchanged (${b.hash.slice(0, 19)}…)` : `✔ pushed ${defs.length} definition(s) (${b.hash.slice(0, 19)}…)`);
127
+ if (b.added.length)
128
+ io.out(` + ${b.added.join(", ")}`);
129
+ if (b.removed.length)
130
+ io.out(` - ${b.removed.join(", ")}`);
131
+ for (const w of b.warnings)
132
+ io.err(` ⚠ ${w}`);
133
+ return 0;
134
+ }
135
+ catch (e) {
136
+ io.err(`✘ ${e.message}`);
137
+ return 1;
138
+ }
139
+ }
140
+ const KEY = /^[A-Za-z_$][\w$]*$/;
141
+ const prop = (n) => (KEY.test(n) ? n : lit(n));
142
+ /** TS type of a data field (ADR-034). Everything optional: missing data falls back to Studio values. */
143
+ function fieldTs(f, depth = 0) {
144
+ switch (f.type) {
145
+ case "number": return "number";
146
+ case "boolean": return "boolean";
147
+ case "image": return "string | { url: string; alt?: string }";
148
+ case "link": return "string | { href: string }";
149
+ case "list": return `Array<${objTs(f.fields ?? [], depth + 1)}>`;
150
+ case "object": return objTs(f.fields ?? [], depth + 1);
151
+ default: return "string";
152
+ }
153
+ }
154
+ function objTs(fields, depth = 0) {
155
+ return fields.length && depth < 5 ? `{ ${fields.map((f) => `${prop(f.name)}?: ${fieldTs(f, depth)}`).join("; ")} }` : "Record<string, unknown>";
156
+ }
157
+ function dataTs(inputs) {
158
+ return inputs.length ? `{ ${inputs.map((d) => `${prop(d.name)}?: ${d.shape === "list" ? `Array<${objTs(d.fields)}>` : objTs(d.fields)}`).join("; ")} }` : "Record<string, never>";
159
+ }
160
+ const lit = (s) => JSON.stringify(s);
161
+ const union = (xs) => { const u = [...new Set(xs)].sort(); return u.length ? u.map(lit).join(" | ") : "never"; };
162
+ /** TypeScript source for `vp types pull` (ADR-032). Deterministic so the file diffs cleanly. */
163
+ export function renderTypes(m) {
164
+ const all = [...m.pages, ...m.components].flatMap((x) => x.events);
165
+ const byName = new Map();
166
+ for (const e of all)
167
+ byName.set(e.name, (byName.get(e.name) ?? new Set()).add(`${e.type}.${e.kind}`));
168
+ const pageKeys = [...new Set(m.pages.map((p) => p.pageKey))].sort();
169
+ const lines = [
170
+ `// Generated by \`vp types pull\` from release #${m.release.sequence}. Do not edit — re-run after publishing.`,
171
+ `import type { VisualEventHandler } from "@visual-platform/next/events";`,
172
+ ``,
173
+ `/** Event names bound in Studio. */`,
174
+ `export type VisualEventName = ${union(byName.keys())};`,
175
+ ``,
176
+ `/** Pass to <VisualEvents handlers={…}>. */`,
177
+ `export type VisualHandlers = {`,
178
+ ...[...byName.keys()].sort().map((n) => {
179
+ const uses = [...byName.get(n)].sort();
180
+ const types = [...new Set(uses.map((u) => { const [t, k] = u.split("."); return eventValueType(t, k); }))];
181
+ return ` /** ${uses.join(", ")} — e.value: ${types.join(" | ")} */\n ${n}?: VisualEventHandler<${types.join(" | ")}>;`;
182
+ }),
183
+ `};`,
184
+ ``,
185
+ `export type VisualPageKey = ${union(pageKeys)};`,
186
+ `export type VisualPages = {`,
187
+ ...pageKeys.map((k) => {
188
+ const ps = m.pages.filter((p) => p.pageKey === k);
189
+ return ` ${lit(k)}: { locales: ${union(ps.map((p) => p.locale))}; events: ${union(ps.flatMap((p) => p.events.map((e) => e.name)))} };`;
190
+ }),
191
+ `};`,
192
+ ``,
193
+ `/** Pass to <VisualPage data={…}> (ADR-034). */`,
194
+ `export type VisualPageData = {`,
195
+ ...pageKeys.map((k) => {
196
+ const merged = new Map();
197
+ for (const p of m.pages.filter((x) => x.pageKey === k))
198
+ for (const d of p.data ?? [])
199
+ if (!merged.has(d.name))
200
+ merged.set(d.name, d);
201
+ return ` ${lit(k)}: ${dataTs([...merged.values()])};`;
202
+ }),
203
+ `};`,
204
+ ``,
205
+ `/** Pass to <VisualComponent data={…}>. */`,
206
+ `export type VisualComponentData = {`,
207
+ ...m.components.map((c) => ` ${lit(c.key)}: ${dataTs(c.data ?? [])};`),
208
+ `};`,
209
+ ``,
210
+ `export type VisualComponentKey = ${union(m.components.map((c) => c.key))};`,
211
+ `export type VisualComponents = {`,
212
+ ...m.components.map((c) => [
213
+ ` /** ${c.name} — id ${c.id} */`,
214
+ ` ${lit(c.key)}: {`,
215
+ ` id: ${lit(c.id)};`,
216
+ ` locales: ${union(c.locales)};`,
217
+ ` props: { ${c.props.map((p) => `${/^[A-Za-z_$][\w$]*$/.test(p.name) ? p.name : lit(p.name)}?: string`).join("; ")}${c.props.length ? " " : ""}};`,
218
+ ` events: ${union(c.events.map((e) => e.name))};`,
219
+ ` };`,
220
+ ].join("\n")),
221
+ `};`,
222
+ ``,
223
+ ];
224
+ return lines.join("\n");
225
+ }
226
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;oGAeuF,CAAC;AAErG,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,GAAW;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAA4B,CAAC;IACjE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,GAAG,CAAC,WAAW,CAAC;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACnD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC;AAC5H,CAAC;AAED,SAAS,MAAM,CAAC,EAAM,EAAE,MAAsE;IAC5F,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,EAAM,EAAE,IAAY,EAAE,IAAY,EAAE,IAAI,GAAgB,EAAE;IAC3E,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACjG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;QAC9D,GAAG,IAAI;QACP,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,2BAA2B,EAAE;KAC7H,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA+F,CAAC;IAChJ,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc,EAAE,EAAM;IAC/C,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/C,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC/K,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,uBAAuB,CAAC;IACxE,IAAI,CAAC;QACH,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACjF,EAAE,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC,IAAI,CAAC,QAAsB,CAAC,MAAM,kBAAkB,CAAC,CAAC;YACnG,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS;gBAAE,OAAO,EAAE,CAAC,GAAG,CAAC,qEAAqE,CAAC,EAAE,CAAC,CAAC;YACnH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1L,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAyF,CAAC;YAC1I,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACnG,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,qBAAqB,CAAC;YAChD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,0BAA0B,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;YACnG,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,KAAK,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS;gBAAE,OAAO,EAAE,CAAC,GAAG,CAAC,qEAAqE,CAAC,EAAE,CAAC,CAAC;YACnH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3L,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAyD,CAAC;YAC1G,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACrH,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,4BAA4B,CAAC;YACvD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,IAAgB,CAAC,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxG,EAAE,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,cAAc,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,aAAa,IAAI,CAAC,UAAU,CAAC,MAAM,+BAA+B,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;YAC/L,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,KAAK,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,2BAA2B,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,qBAAqB,IAAI,aAAa,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClH,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,yBAAyB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5G,IAAI,GAAG,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC,GAAG,CAAC,8CAA8C,CAAC,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE;YAClG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,EAAE,CAAC;SAC9I,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACrB,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;YAClG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;gBAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAgB,CAAC,CAAC;YACpF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAoG,CAAC;QACjH,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAClI,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,EAAE,CAAC,GAAG,CAAC,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAWD,MAAM,GAAG,GAAG,oBAAoB,CAAC;AACjC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,wGAAwG;AACxG,SAAS,OAAO,CAAC,CAAe,EAAE,KAAK,GAAG,CAAC;IACzC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC/B,KAAK,SAAS,EAAE,OAAO,SAAS,CAAC;QACjC,KAAK,OAAO,EAAE,OAAO,wCAAwC,CAAC;QAC9D,KAAK,MAAM,EAAE,OAAO,2BAA2B,CAAC;QAChD,KAAK,MAAM,EAAE,OAAO,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QACjE,KAAK,QAAQ,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACvD,SAAS,OAAO,QAAQ,CAAC;IAC3B,CAAC;AACH,CAAC;AACD,SAAS,KAAK,CAAC,MAAsB,EAAE,KAAK,GAAG,CAAC;IAC9C,OAAO,MAAM,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC;AAClJ,CAAC;AACD,SAAS,MAAM,CAAC,MAAsB;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACpL,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,KAAK,GAAG,CAAC,EAAoB,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEnI,gGAAgG;AAChG,MAAM,UAAU,WAAW,CAAC,CAAW;IACrC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,GAAG;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG;QACZ,mDAAmD,CAAC,CAAC,OAAO,CAAC,QAAQ,0CAA0C;QAC/G,yEAAyE;QACzE,EAAE;QACF,qCAAqC;QACrC,iCAAiC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG;QACxD,EAAE;QACF,6CAA6C;QAC7C,gCAAgC;QAChC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,cAAc,CAAC,CAAE,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7G,OAAO,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3H,CAAC,CAAC;QACF,IAAI;QACJ,EAAE;QACF,+BAA+B,KAAK,CAAC,QAAQ,CAAC,GAAG;QACjD,6BAA6B;QAC7B,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;YAClD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1I,CAAC,CAAC;QACF,IAAI;QACJ,EAAE;QACF,iDAAiD;QACjD,gCAAgC;QAChC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC;gBAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE;oBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;wBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACrI,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC;QACzD,CAAC,CAAC;QACF,IAAI;QACJ,EAAE;QACF,4CAA4C;QAC5C,qCAAqC;QACrC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC;QACvE,IAAI;QACJ,EAAE;QACF,oCAAoC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;QAC5E,kCAAkC;QAClC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACzB,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,KAAK;YACjC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;YACpB,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;YACvB,gBAAgB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;YACnC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;YACrJ,eAAe,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;YACpD,MAAM;SACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,IAAI;QACJ,EAAE;KACH,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,39 @@
1
1
  {
2
2
  "name": "@visual-platform/cli",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.0",
4
+ "description": "Visual Page Platform — vp CLI: push component definitions, pull types and classes.",
5
+ "type": "module",
6
+ "license": "UNLICENSED",
7
+ "bin": {
8
+ "vp": "./dist/bin.js"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "dependencies": {
23
+ "@visual-platform/contracts": "0.1.0",
24
+ "@visual-platform/define": "^0.1.0",
25
+ "jiti": "^2.7.0"
26
+ },
27
+ "devDependencies": {
28
+ "@types/node": "^24.0.0",
29
+ "@visual-platform/typescript-config": "0.0.0",
30
+ "typescript": "^7.0.2",
31
+ "vitest": "^5.1.0"
32
+ },
33
+ "scripts": {
34
+ "build": "tsc -p tsconfig.build.json && chmod +x dist/bin.js",
35
+ "typecheck": "tsc -p tsconfig.json --noEmit",
36
+ "test": "vitest run",
37
+ "clean": "rm -rf dist .turbo"
38
+ }
6
39
  }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.