@zitadel/cli 0.1.0-alpha.9 → 1.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +250 -62
  2. package/SKILLS.md +221 -37
  3. package/dist/branding-cygSBPkV.mjs +79 -0
  4. package/dist/branding-cygSBPkV.mjs.map +1 -0
  5. package/dist/claim-state-DlfD6Res.mjs +66 -0
  6. package/dist/claim-state-DlfD6Res.mjs.map +1 -0
  7. package/dist/commands/apply.mjs +27 -8
  8. package/dist/commands/apply.mjs.map +1 -1
  9. package/dist/commands/branding/eject.mjs +104 -0
  10. package/dist/commands/branding/eject.mjs.map +1 -0
  11. package/dist/commands/claim.mjs +415 -0
  12. package/dist/commands/claim.mjs.map +1 -0
  13. package/dist/commands/doctor.mjs +594 -41
  14. package/dist/commands/doctor.mjs.map +1 -1
  15. package/dist/commands/eject.mjs +18 -6
  16. package/dist/commands/eject.mjs.map +1 -1
  17. package/dist/commands/logs.mjs +2 -2
  18. package/dist/commands/plan.mjs +19 -6
  19. package/dist/commands/plan.mjs.map +1 -1
  20. package/dist/commands/reset.mjs +2 -2
  21. package/dist/commands/schemas/list.mjs +146 -0
  22. package/dist/commands/schemas/list.mjs.map +1 -0
  23. package/dist/commands/setup.mjs +629 -214
  24. package/dist/commands/setup.mjs.map +1 -1
  25. package/dist/commands/start.mjs +4 -4
  26. package/dist/commands/start.mjs.map +1 -1
  27. package/dist/commands/status.mjs +52 -13
  28. package/dist/commands/status.mjs.map +1 -1
  29. package/dist/commands/stop.mjs +3 -3
  30. package/dist/commands/stop.mjs.map +1 -1
  31. package/dist/designs-Ckz18Dpo.mjs +38 -0
  32. package/dist/designs-Ckz18Dpo.mjs.map +1 -0
  33. package/dist/{docker-CnGQK3ZK.mjs → docker-Ev1Ggt9l.mjs} +10 -6
  34. package/dist/docker-Ev1Ggt9l.mjs.map +1 -0
  35. package/dist/environment-rjRVkJjW.mjs +17 -0
  36. package/dist/environment-rjRVkJjW.mjs.map +1 -0
  37. package/dist/journey-guidance-BGrOX_gT.mjs +40 -0
  38. package/dist/journey-guidance-BGrOX_gT.mjs.map +1 -0
  39. package/dist/oclif-CanO3zdt.mjs +1769 -0
  40. package/dist/oclif-CanO3zdt.mjs.map +1 -0
  41. package/dist/{orca-U142Wrau.mjs → orca-66vAxeIe.mjs} +1666 -305
  42. package/dist/orca-66vAxeIe.mjs.map +1 -0
  43. package/dist/package-manager-DFdLcDx1.mjs +194 -0
  44. package/dist/package-manager-DFdLcDx1.mjs.map +1 -0
  45. package/dist/{ports-B09RjuHx.mjs → ports-BM20XIZb.mjs} +25 -20
  46. package/dist/ports-BM20XIZb.mjs.map +1 -0
  47. package/dist/{processes-Cw8TO1SY.mjs → processes-DKHPkU8O.mjs} +1 -1
  48. package/dist/{processes-Cw8TO1SY.mjs.map → processes-DKHPkU8O.mjs.map} +1 -1
  49. package/dist/{project-Cd0L3PtM.mjs → project-CHhot85s.mjs} +57 -4
  50. package/dist/project-CHhot85s.mjs.map +1 -0
  51. package/dist/sync-BBlACKzT.mjs +1633 -0
  52. package/dist/sync-BBlACKzT.mjs.map +1 -0
  53. package/dist/user-schema-DTuOsdKE.mjs +91 -0
  54. package/dist/user-schema-DTuOsdKE.mjs.map +1 -0
  55. package/oclif.manifest.json +406 -5
  56. package/package.json +10 -5
  57. package/dist/docker-CnGQK3ZK.mjs.map +0 -1
  58. package/dist/docker-guidance-ypN3IM3o.mjs +0 -21
  59. package/dist/docker-guidance-ypN3IM3o.mjs.map +0 -1
  60. package/dist/oclif-B7lBzh3R.mjs +0 -808
  61. package/dist/oclif-B7lBzh3R.mjs.map +0 -1
  62. package/dist/orca-U142Wrau.mjs.map +0 -1
  63. package/dist/ports-B09RjuHx.mjs.map +0 -1
  64. package/dist/project-Cd0L3PtM.mjs.map +0 -1
  65. package/dist/sync-BojoQm2P.mjs +0 -733
  66. package/dist/sync-BojoQm2P.mjs.map +0 -1
@@ -0,0 +1,146 @@
1
+ import { t as BaseCommand } from "../../oclif-CanO3zdt.mjs";
2
+ import { l as readZitadelSecret } from "../../project-CHhot85s.mjs";
3
+ import { t as environmentSchema } from "../../environment-rjRVkJjW.mjs";
4
+ import { cancel, isCancel, select, spinner } from "@clack/prompts";
5
+ import { Flags } from "@oclif/core";
6
+ import { createZitadelClient } from "@zitadel/api/client";
7
+ import { consola as consola$1 } from "consola";
8
+ //#region src/commands/schemas/list.ts
9
+ /**
10
+ * The `schemas list` topic command — inspect the revision history of a
11
+ * user-schema, filtered by `objectType`.
12
+ *
13
+ * Non-interactive: prints one row per revision (newest first) as a JSON payload
14
+ * or a plain-text table. Interactive: renders a `@clack/prompts` `select` menu
15
+ * of the same rows; on selection, fetches the full schema body via
16
+ * `getSchemaById` and pretty-prints it to stdout.
17
+ */
18
+ var SchemasList = class SchemasList extends BaseCommand {
19
+ static description = "List revisions of a user-schema by objectType.";
20
+ static flags = {
21
+ "object-type": Flags.string({
22
+ char: "t",
23
+ required: true,
24
+ description: "Filter revisions by objectType (e.g. human-user)."
25
+ }),
26
+ environment: Flags.string({
27
+ char: "e",
28
+ description: "Target environment (default: development).",
29
+ options: [...environmentSchema.options]
30
+ })
31
+ };
32
+ async run() {
33
+ const { flags } = await this.parse(SchemasList);
34
+ await this.toMeta(flags);
35
+ const { cwd, source, nonInteractive } = this.meta;
36
+ const secret = await readZitadelSecret(cwd);
37
+ consola$1.info(`Project ${secret.project_id}`);
38
+ consola$1.info(`Server ${source}`);
39
+ const client = createZitadelClient({
40
+ baseUrl: source,
41
+ token: secret.project_secret
42
+ });
43
+ const objectType = flags["object-type"];
44
+ const revisions = [];
45
+ let pageToken;
46
+ do {
47
+ const page = await client.listSchemas({
48
+ project_id: secret.project_id,
49
+ object_type: objectType,
50
+ limit: 100,
51
+ page_token: pageToken
52
+ });
53
+ revisions.push(...page.schemas);
54
+ pageToken = page.next_page_token ?? void 0;
55
+ } while (pageToken);
56
+ const revisionRows = revisions.map((r) => ({
57
+ id: r.id,
58
+ created_at: r.metadata.created_at
59
+ }));
60
+ if (revisions.length === 0) {
61
+ const message = `No revisions found for objectType "${objectType}".`;
62
+ consola$1.warn(message);
63
+ return this.emit({
64
+ status: "ok",
65
+ data: {
66
+ object_type: objectType,
67
+ revisions: [],
68
+ count: 0
69
+ },
70
+ pretty: message
71
+ });
72
+ }
73
+ if (nonInteractive) return this.emit({
74
+ status: "ok",
75
+ data: {
76
+ object_type: objectType,
77
+ revisions: revisionRows,
78
+ count: revisions.length
79
+ },
80
+ pretty: renderTable(objectType, revisions)
81
+ });
82
+ const picked = await select({
83
+ message: `Revisions of objectType "${objectType}" (newest first)`,
84
+ options: revisions.map((r, idx) => ({
85
+ value: r.id,
86
+ label: `${r.metadata.created_at} ${r.id}${idx === 0 ? " (latest)" : ""}`
87
+ }))
88
+ });
89
+ if (isCancel(picked)) {
90
+ cancel("No revision selected.");
91
+ return this.emit({
92
+ status: "ok",
93
+ data: {
94
+ object_type: objectType,
95
+ revisions: revisionRows,
96
+ count: revisions.length
97
+ },
98
+ pretty: ""
99
+ });
100
+ }
101
+ const s = spinner();
102
+ s.start(`Loading ${String(picked)}…`);
103
+ const body = await fetchSchemaRevision(client, String(picked));
104
+ s.stop(`Loaded ${String(picked)}`);
105
+ const pretty = JSON.stringify(body, null, 2);
106
+ return this.emit({
107
+ status: "ok",
108
+ data: {
109
+ object_type: objectType,
110
+ revisions: revisionRows,
111
+ selected: {
112
+ id: picked,
113
+ body
114
+ },
115
+ count: revisions.length
116
+ },
117
+ pretty
118
+ });
119
+ }
120
+ };
121
+ /**
122
+ * Fetch one schema revision body. The id is URL-encoded before it lands in
123
+ * the path: server-allocated ids are opaque today (`sch_…`), but ids can be
124
+ * full URLs when a schema carried an `$id` (the server-seeded defaults do),
125
+ * and an unencoded URL would break the `/schemas/:id` path. Mirrors the
126
+ * encoding the sync engine's schema syncer applies.
127
+ */
128
+ async function fetchSchemaRevision(client, id) {
129
+ return (await client.getSchemaById(encodeURIComponent(id))).schema;
130
+ }
131
+ function renderTable(objectType, revisions) {
132
+ const header = `Revisions of objectType "${objectType}" (${revisions.length}, newest first)`;
133
+ const idCol = Math.max(2, ...revisions.map((r) => r.id.length));
134
+ const createdCol = Math.max(10, ...revisions.map((r) => r.metadata.created_at.length));
135
+ const rows = revisions.map((r) => `${r.metadata.created_at.padEnd(createdCol)} ${r.id.padEnd(idCol)}`);
136
+ return [
137
+ header,
138
+ `${"created_at".padEnd(createdCol)} ${"id".padEnd(idCol)}`,
139
+ `${"-".repeat(createdCol)} ${"-".repeat(idCol)}`,
140
+ ...rows
141
+ ].join("\n");
142
+ }
143
+ //#endregion
144
+ export { SchemasList as default, fetchSchemaRevision };
145
+
146
+ //# sourceMappingURL=list.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.mjs","names":[],"sources":["../../../src/commands/schemas/list.ts"],"sourcesContent":["import { cancel, isCancel, select, spinner } from \"@clack/prompts\";\nimport { Flags } from \"@oclif/core\";\nimport { consola } from \"consola\";\n\nimport { createZitadelClient, type ZitadelClient } from \"@zitadel/api/client\";\nimport type {\n GetSchemaById200,\n ListSchemas200SchemasItem,\n} from \"@zitadel/api/generated/model\";\n\nimport { BaseCommand, type JsonEnvelope } from \"../../lib/oclif\";\nimport { environmentSchema } from \"../../lib/environment\";\nimport { readZitadelSecret } from \"../../lib/project\";\n\n/**\n * The `schemas list` topic command — inspect the revision history of a\n * user-schema, filtered by `objectType`.\n *\n * Non-interactive: prints one row per revision (newest first) as a JSON payload\n * or a plain-text table. Interactive: renders a `@clack/prompts` `select` menu\n * of the same rows; on selection, fetches the full schema body via\n * `getSchemaById` and pretty-prints it to stdout.\n */\nexport default class SchemasList extends BaseCommand {\n static override description = \"List revisions of a user-schema by objectType.\";\n static override flags = {\n \"object-type\": Flags.string({\n char: \"t\",\n required: true,\n description: \"Filter revisions by objectType (e.g. human-user).\",\n }),\n environment: Flags.string({\n char: \"e\",\n description: \"Target environment (default: development).\",\n options: [...environmentSchema.options],\n }),\n };\n\n async run(): Promise<JsonEnvelope> {\n const { flags } = await this.parse(SchemasList);\n await this.toMeta(flags);\n const { cwd, source, nonInteractive } = this.meta;\n\n const secret = await readZitadelSecret(cwd);\n consola.info(`Project ${secret.project_id}`);\n consola.info(`Server ${source}`);\n const client = createZitadelClient({\n baseUrl: source,\n token: secret.project_secret,\n });\n\n const objectType = flags[\"object-type\"];\n // The command shows the full revision history, so it drains the\n // cursor-paginated list at the max page size.\n const revisions: ListSchemas200SchemasItem[] = [];\n let pageToken: string | undefined;\n do {\n const page = await client.listSchemas({\n project_id: secret.project_id,\n object_type: objectType,\n limit: 100,\n page_token: pageToken,\n });\n revisions.push(...page.schemas);\n pageToken = page.next_page_token ?? undefined;\n } while (pageToken);\n\n // The envelope's row shape is a contract; project it explicitly so a field\n // added to the API later cannot leak into stdout.\n const revisionRows = revisions.map((r) => ({\n id: r.id,\n created_at: r.metadata.created_at,\n }));\n\n if (revisions.length === 0) {\n const message = `No revisions found for objectType \"${objectType}\".`;\n consola.warn(message);\n return this.emit({\n status: \"ok\",\n data: { object_type: objectType, revisions: [], count: 0 },\n pretty: message,\n });\n }\n\n // Server orders newest-first; the interactive picker inherits that order.\n if (nonInteractive) {\n return this.emit({\n status: \"ok\",\n data: {\n object_type: objectType,\n revisions: revisionRows,\n count: revisions.length,\n },\n pretty: renderTable(objectType, revisions),\n });\n }\n\n const picked = await select({\n message: `Revisions of objectType \"${objectType}\" (newest first)`,\n options: revisions.map((r, idx) => ({\n value: r.id,\n label: `${r.metadata.created_at} ${r.id}${idx === 0 ? \" (latest)\" : \"\"}`,\n })),\n });\n if (isCancel(picked)) {\n cancel(\"No revision selected.\");\n return this.emit({\n status: \"ok\",\n data: { object_type: objectType, revisions: revisionRows, count: revisions.length },\n pretty: \"\",\n });\n }\n\n const s = spinner();\n s.start(`Loading ${String(picked)}…`);\n const body = await fetchSchemaRevision(client, String(picked));\n s.stop(`Loaded ${String(picked)}`);\n\n const pretty = JSON.stringify(body, null, 2);\n\n return this.emit({\n status: \"ok\",\n data: {\n object_type: objectType,\n revisions: revisionRows,\n selected: { id: picked, body },\n count: revisions.length,\n },\n pretty,\n });\n }\n}\n\n/**\n * Fetch one schema revision body. The id is URL-encoded before it lands in\n * the path: server-allocated ids are opaque today (`sch_…`), but ids can be\n * full URLs when a schema carried an `$id` (the server-seeded defaults do),\n * and an unencoded URL would break the `/schemas/:id` path. Mirrors the\n * encoding the sync engine's schema syncer applies.\n */\nexport async function fetchSchemaRevision(client: ZitadelClient, id: string): Promise<unknown> {\n // Flat-by-id: authz resolves the project from RSI; no project_id query.\n // The response is the `{id, schema, metadata}` envelope; the revision body\n // callers want is the customer-authored document inside it.\n const body = (await client.getSchemaById(encodeURIComponent(id))) as GetSchemaById200;\n return body.schema;\n}\n\nfunction renderTable(\n objectType: string,\n revisions: ReadonlyArray<ListSchemas200SchemasItem>,\n): string {\n const header = `Revisions of objectType \"${objectType}\" (${revisions.length}, newest first)`;\n const idCol = Math.max(\"id\".length, ...revisions.map((r) => r.id.length));\n const createdCol = Math.max(\n \"created_at\".length,\n ...revisions.map((r) => r.metadata.created_at.length),\n );\n const rows = revisions.map(\n (r) => `${r.metadata.created_at.padEnd(createdCol)} ${r.id.padEnd(idCol)}`,\n );\n return [\n header,\n `${\"created_at\".padEnd(createdCol)} ${\"id\".padEnd(idCol)}`,\n `${\"-\".repeat(createdCol)} ${\"-\".repeat(idCol)}`,\n ...rows,\n ].join(\"\\n\");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,IAAqB,cAArB,MAAqB,oBAAoB,YAAY;CACnD,OAAgB,cAAc;CAC9B,OAAgB,QAAQ;EACtB,eAAe,MAAM,OAAO;GAC1B,MAAM;GACN,UAAU;GACV,aAAa;GACd,CAAC;EACF,aAAa,MAAM,OAAO;GACxB,MAAM;GACN,aAAa;GACb,SAAS,CAAC,GAAG,kBAAkB,QAAQ;GACxC,CAAC;EACH;CAED,MAAM,MAA6B;EACjC,MAAM,EAAE,UAAU,MAAM,KAAK,MAAM,YAAY;AAC/C,QAAM,KAAK,OAAO,MAAM;EACxB,MAAM,EAAE,KAAK,QAAQ,mBAAmB,KAAK;EAE7C,MAAM,SAAS,MAAM,kBAAkB,IAAI;AAC3C,YAAQ,KAAK,aAAa,OAAO,aAAa;AAC9C,YAAQ,KAAK,aAAa,SAAS;EACnC,MAAM,SAAS,oBAAoB;GACjC,SAAS;GACT,OAAO,OAAO;GACf,CAAC;EAEF,MAAM,aAAa,MAAM;EAGzB,MAAM,YAAyC,EAAE;EACjD,IAAI;AACJ,KAAG;GACD,MAAM,OAAO,MAAM,OAAO,YAAY;IACpC,YAAY,OAAO;IACnB,aAAa;IACb,OAAO;IACP,YAAY;IACb,CAAC;AACF,aAAU,KAAK,GAAG,KAAK,QAAQ;AAC/B,eAAY,KAAK,mBAAmB,KAAA;WAC7B;EAIT,MAAM,eAAe,UAAU,KAAK,OAAO;GACzC,IAAI,EAAE;GACN,YAAY,EAAE,SAAS;GACxB,EAAE;AAEH,MAAI,UAAU,WAAW,GAAG;GAC1B,MAAM,UAAU,sCAAsC,WAAW;AACjE,aAAQ,KAAK,QAAQ;AACrB,UAAO,KAAK,KAAK;IACf,QAAQ;IACR,MAAM;KAAE,aAAa;KAAY,WAAW,EAAE;KAAE,OAAO;KAAG;IAC1D,QAAQ;IACT,CAAC;;AAIJ,MAAI,eACF,QAAO,KAAK,KAAK;GACf,QAAQ;GACR,MAAM;IACJ,aAAa;IACb,WAAW;IACX,OAAO,UAAU;IAClB;GACD,QAAQ,YAAY,YAAY,UAAU;GAC3C,CAAC;EAGJ,MAAM,SAAS,MAAM,OAAO;GAC1B,SAAS,4BAA4B,WAAW;GAChD,SAAS,UAAU,KAAK,GAAG,SAAS;IAClC,OAAO,EAAE;IACT,OAAO,GAAG,EAAE,SAAS,WAAW,KAAK,EAAE,KAAK,QAAQ,IAAI,gBAAgB;IACzE,EAAE;GACJ,CAAC;AACF,MAAI,SAAS,OAAO,EAAE;AACpB,UAAO,wBAAwB;AAC/B,UAAO,KAAK,KAAK;IACf,QAAQ;IACR,MAAM;KAAE,aAAa;KAAY,WAAW;KAAc,OAAO,UAAU;KAAQ;IACnF,QAAQ;IACT,CAAC;;EAGJ,MAAM,IAAI,SAAS;AACnB,IAAE,MAAM,WAAW,OAAO,OAAO,CAAC,GAAG;EACrC,MAAM,OAAO,MAAM,oBAAoB,QAAQ,OAAO,OAAO,CAAC;AAC9D,IAAE,KAAK,UAAU,OAAO,OAAO,GAAG;EAElC,MAAM,SAAS,KAAK,UAAU,MAAM,MAAM,EAAE;AAE5C,SAAO,KAAK,KAAK;GACf,QAAQ;GACR,MAAM;IACJ,aAAa;IACb,WAAW;IACX,UAAU;KAAE,IAAI;KAAQ;KAAM;IAC9B,OAAO,UAAU;IAClB;GACD;GACD,CAAC;;;;;;;;;;AAWN,eAAsB,oBAAoB,QAAuB,IAA8B;AAK7F,SAAO,MADa,OAAO,cAAc,mBAAmB,GAAG,CAAC,EACpD;;AAGd,SAAS,YACP,YACA,WACQ;CACR,MAAM,SAAS,4BAA4B,WAAW,KAAK,UAAU,OAAO;CAC5E,MAAM,QAAQ,KAAK,IAAI,GAAa,GAAG,UAAU,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC;CACzE,MAAM,aAAa,KAAK,IACtB,IACA,GAAG,UAAU,KAAK,MAAM,EAAE,SAAS,WAAW,OAAO,CACtD;CACD,MAAM,OAAO,UAAU,KACpB,MAAM,GAAG,EAAE,SAAS,WAAW,OAAO,WAAW,CAAC,IAAI,EAAE,GAAG,OAAO,MAAM,GAC1E;AACD,QAAO;EACL;EACA,GAAG,aAAa,OAAO,WAAW,CAAC,IAAI,KAAK,OAAO,MAAM;EACzD,GAAG,IAAI,OAAO,WAAW,CAAC,IAAI,IAAI,OAAO,MAAM;EAC/C,GAAG;EACJ,CAAC,KAAK,KAAK"}