@scalar/cli 2.0.1 → 2.5.1

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 (83) hide show
  1. package/README.md +68 -24
  2. package/chunks/action-37EV4UHW.js +125 -0
  3. package/chunks/action-4XI7XJR4.js +204 -0
  4. package/chunks/action-5IU77OII.js +60 -0
  5. package/chunks/action-B3KKREWQ.js +64 -0
  6. package/chunks/action-CH24QGTE.js +86 -0
  7. package/chunks/action-F3UX5E3M.js +522 -0
  8. package/chunks/action-FDB7NEOK.js +81 -0
  9. package/chunks/action-FIXBOJEW.js +244 -0
  10. package/chunks/action-G26LSVZ7.js +40 -0
  11. package/chunks/action-H3RTILLM.js +46 -0
  12. package/chunks/action-HGBBV353.js +86 -0
  13. package/chunks/action-IUE4IOWO.js +2142 -0
  14. package/chunks/action-JZLZ7ZAD.js +110 -0
  15. package/chunks/action-LA6KVAXQ.js +374 -0
  16. package/chunks/action-M7RQKBSB.js +169 -0
  17. package/chunks/action-MSLBC2SO.js +92 -0
  18. package/chunks/action-NVSZT2ZD.js +37 -0
  19. package/chunks/action-OGQSTRMX.js +37 -0
  20. package/chunks/action-PAGJ5PWC.js +60 -0
  21. package/chunks/action-QE2ZQQX7.js +250 -0
  22. package/chunks/action-QPUSPD5M.js +54 -0
  23. package/chunks/action-R7IMFHQ5.js +147 -0
  24. package/chunks/action-SH4UUXPL.js +60 -0
  25. package/chunks/action-SNLCIBQC.js +84 -0
  26. package/chunks/action-SQG3JAII.js +150 -0
  27. package/chunks/action-UZQJNYK4.js +18 -0
  28. package/chunks/action-VC4DCVST.js +68 -0
  29. package/chunks/action-VTVFY2MP.js +181 -0
  30. package/chunks/action-WFWYGY7O.js +67 -0
  31. package/chunks/action-XMNX5ZYT.js +197 -0
  32. package/chunks/agent-HCQRMHQ5.js +132 -0
  33. package/chunks/asyncapi-QM76O55R.js +105 -0
  34. package/chunks/build.action-P7FCIMYU.js +108 -0
  35. package/chunks/chunk-24WAOKGG.js +105 -0
  36. package/chunks/chunk-3L6DLIXJ.js +25530 -0
  37. package/chunks/chunk-3MZYUBJ6.js +49 -0
  38. package/chunks/chunk-3ZJYGGAA.js +30 -0
  39. package/chunks/chunk-4NHMAG6F.js +21 -0
  40. package/chunks/chunk-4ORL4MST.js +16 -0
  41. package/chunks/chunk-4ZDQXWBT.js +26 -0
  42. package/chunks/chunk-6ZMT63IV.js +19 -0
  43. package/chunks/chunk-7AGLC7WV.js +107 -0
  44. package/chunks/chunk-AEFPCC4U.js +16 -0
  45. package/chunks/chunk-AO3F5XWR.js +3147 -0
  46. package/chunks/chunk-B2MHTD3R.js +90 -0
  47. package/chunks/chunk-CISTON3A.js +153 -0
  48. package/chunks/chunk-COBPBRQF.js +25 -0
  49. package/chunks/chunk-F467BYYR.js +568 -0
  50. package/chunks/chunk-GSGZHE26.js +352 -0
  51. package/chunks/chunk-HCPN3KNF.js +637 -0
  52. package/chunks/chunk-HPL3ZZ2P.js +1726 -0
  53. package/chunks/chunk-IKT5F47M.js +17344 -0
  54. package/chunks/chunk-JFIXNSPP.js +26 -0
  55. package/chunks/chunk-K4DTP5TV.js +32 -0
  56. package/chunks/chunk-K74E42RV.js +7311 -0
  57. package/chunks/chunk-KHDYYVYF.js +16 -0
  58. package/chunks/chunk-LFU5ZUAP.js +350 -0
  59. package/chunks/chunk-M37TP6U2.js +445 -0
  60. package/chunks/chunk-OQKDBLOZ.js +741 -0
  61. package/chunks/chunk-P7H7GY5A.js +14 -0
  62. package/chunks/chunk-PBXZN65A.js +63911 -0
  63. package/chunks/chunk-PT5TI77I.js +34 -0
  64. package/chunks/chunk-Q7DOQHZN.js +404 -0
  65. package/chunks/chunk-T5HJUAWB.js +242 -0
  66. package/chunks/chunk-T7B6WNZC.js +18 -0
  67. package/chunks/chunk-UGGNHILG.js +38 -0
  68. package/chunks/chunk-VNYE4R7N.js +499 -0
  69. package/chunks/chunk-X5T526CE.js +23 -0
  70. package/chunks/chunk-XCSR4RIT.js +210 -0
  71. package/chunks/chunk-Z2KMGFE6.js +295 -0
  72. package/chunks/create.action-HDD2WUON.js +108 -0
  73. package/chunks/delete.action-7GOZY7ID.js +88 -0
  74. package/chunks/delete.action-VE66JFDS.js +96 -0
  75. package/chunks/get.action-2745EB4N.js +86 -0
  76. package/chunks/list.action-3VTXQJRA.js +116 -0
  77. package/chunks/list.action-4QDCZLSZ.js +95 -0
  78. package/chunks/publish.action-ULQLZKWU.js +190 -0
  79. package/chunks/update.action-6QEFP7NA.js +95 -0
  80. package/chunks/update.action-OROQSP2S.js +101 -0
  81. package/docs.html +352 -250
  82. package/index.js +664 -99064
  83. package/package.json +17 -11
@@ -0,0 +1,96 @@
1
+ import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
2
+ import {
3
+ apiService
4
+ } from "./chunk-AO3F5XWR.js";
5
+ import {
6
+ BaseCollections
7
+ } from "./chunk-F467BYYR.js";
8
+ import {
9
+ getDatabaseClient
10
+ } from "./chunk-Z2KMGFE6.js";
11
+ import "./chunk-HCPN3KNF.js";
12
+ import "./chunk-B2MHTD3R.js";
13
+ import {
14
+ sdkSchema
15
+ } from "./chunk-3L6DLIXJ.js";
16
+ import "./chunk-P7H7GY5A.js";
17
+ import "./chunk-HPL3ZZ2P.js";
18
+ import {
19
+ getAuthData
20
+ } from "./chunk-M37TP6U2.js";
21
+ import "./chunk-4ZDQXWBT.js";
22
+ import {
23
+ teamSchema
24
+ } from "./chunk-VNYE4R7N.js";
25
+ import "./chunk-OQKDBLOZ.js";
26
+ import "./chunk-K74E42RV.js";
27
+ import "./chunk-CISTON3A.js";
28
+ import "./chunk-Q7DOQHZN.js";
29
+ import "./chunk-4ORL4MST.js";
30
+ import {
31
+ output
32
+ } from "./chunk-T5HJUAWB.js";
33
+ import "./chunk-GSGZHE26.js";
34
+ import {
35
+ external_exports,
36
+ namespaceSchema,
37
+ slugSchema
38
+ } from "./chunk-IKT5F47M.js";
39
+ import "./chunk-3MZYUBJ6.js";
40
+
41
+ // src/domains/sdk/delete.action.ts
42
+ import { select } from "@clack/prompts";
43
+ async function deleteAction(opts) {
44
+ const { error, data } = external_exports.object({
45
+ slug: slugSchema.optional(),
46
+ namespace: namespaceSchema.optional()
47
+ }).safeParse(opts);
48
+ if (error)
49
+ return output.error().title("Invalid input").message(error.issues[0].message).exit("error");
50
+ const auth = await getAuthData();
51
+ auth.addEventListener((state) => Object.assign(auth, state));
52
+ const db = await getDatabaseClient();
53
+ const client = await apiService();
54
+ const team = await db.getOne({
55
+ collectionPath: BaseCollections.Teams,
56
+ query: {
57
+ uid: auth.teamUid
58
+ },
59
+ schema: teamSchema
60
+ });
61
+ if (team.error)
62
+ return output.error().title("An error occurred when fetching your team.").message(team.message).exit("error");
63
+ const namespace = data.namespace || team.data.namespaces.at(0);
64
+ if (!namespace) {
65
+ return output.error().title("Missing namespace").message(
66
+ "Could not find a valid namespace for your SDK. Please specify a namespace or contact support."
67
+ ).exit("error");
68
+ }
69
+ const sdks = await db.getMany({
70
+ collectionPath: BaseCollections.Sdks(team.data.uid),
71
+ query: {
72
+ namespace
73
+ },
74
+ schema: sdkSchema.array()
75
+ });
76
+ if (sdks.error) return output.error().title(sdks.message).exit("error");
77
+ const sdkUid = sdks.data.find((sdk) => sdk.slug === data.slug)?.uid || await select({
78
+ message: "Please select an SDK to delete",
79
+ options: sdks.data.map((sdk) => ({
80
+ value: sdk.uid,
81
+ label: sdk.slug
82
+ }))
83
+ });
84
+ if (!sdkUid) {
85
+ return output.error().title("No SDK found").message("Please provide a valid SDK slug").exit("error");
86
+ }
87
+ const logger = output.info().loader("Deleting the SDK");
88
+ const response = await client.sdks.delete(sdkUid);
89
+ if (response.error) {
90
+ return output.error().title("Something went wrong").message(response.message).exit("error");
91
+ }
92
+ logger.update("loader", 0, { content: "SDK deleted successfully!" }).exit("success");
93
+ }
94
+ export {
95
+ deleteAction
96
+ };
@@ -0,0 +1,86 @@
1
+ import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
2
+ import {
3
+ fetchFromRegistry
4
+ } from "./chunk-UGGNHILG.js";
5
+ import "./chunk-COBPBRQF.js";
6
+ import {
7
+ registry
8
+ } from "./chunk-XCSR4RIT.js";
9
+ import {
10
+ getAuthData
11
+ } from "./chunk-M37TP6U2.js";
12
+ import "./chunk-4ZDQXWBT.js";
13
+ import "./chunk-VNYE4R7N.js";
14
+ import "./chunk-OQKDBLOZ.js";
15
+ import "./chunk-CISTON3A.js";
16
+ import "./chunk-Q7DOQHZN.js";
17
+ import "./chunk-4ORL4MST.js";
18
+ import {
19
+ output
20
+ } from "./chunk-T5HJUAWB.js";
21
+ import "./chunk-GSGZHE26.js";
22
+ import {
23
+ docVersionSchema,
24
+ external_exports
25
+ } from "./chunk-IKT5F47M.js";
26
+ import "./chunk-3MZYUBJ6.js";
27
+
28
+ // src/domains/schema/get.action.ts
29
+ import fs from "node:fs/promises";
30
+ var versionSchema = external_exports.union([docVersionSchema, external_exports.literal("latest")]);
31
+ async function getAction(namespace, slug, args) {
32
+ if (!namespace) {
33
+ output.error().title("Invalid input").message("Please provide namespace of the schema").exit("error");
34
+ return;
35
+ }
36
+ if (!slug) {
37
+ output.error().title("Invalid input").message("Please provide slug of the schema").exit("error");
38
+ return;
39
+ }
40
+ const result = external_exports.object({
41
+ version: versionSchema,
42
+ format: external_exports.enum(["json", "yaml"]),
43
+ output: external_exports.string().min(1).optional()
44
+ }).safeParse({
45
+ version: args.version ?? "latest",
46
+ format: args.format,
47
+ output: args.output
48
+ });
49
+ if (result.error) {
50
+ output.error().title("Invalid input").message(result.error.issues[0].message).exit("error");
51
+ return;
52
+ }
53
+ const auth = await getAuthData();
54
+ auth.addEventListener((state) => Object.assign(auth, state));
55
+ const fetchResult = await fetchFromRegistry(
56
+ registry(namespace).schemas(slug).url({
57
+ version: result.data.version,
58
+ format: result.data.format
59
+ }),
60
+ auth.accessToken
61
+ );
62
+ if (fetchResult.error) {
63
+ output.error().title("Unable to download schema").message(fetchResult.message).exit("error");
64
+ return;
65
+ }
66
+ const document = fetchResult.data;
67
+ const withTrailingNewline = document.endsWith("\n") ? document : `${document}
68
+ `;
69
+ if (result.data.output) {
70
+ try {
71
+ await fs.writeFile(result.data.output, withTrailingNewline, "utf8");
72
+ } catch (error) {
73
+ const message = error instanceof Error && error.message.length > 0 ? error.message : `Could not write to ${result.data.output}.`;
74
+ output.error().title("Unable to write schema to file").message(message).exit("error");
75
+ return;
76
+ }
77
+ output.info().line(
78
+ `Downloaded ${namespace}/${slug}@${result.data.version} (${result.data.format})`
79
+ ).line(`Written to ${result.data.output}`).print();
80
+ return;
81
+ }
82
+ process.stdout.write(withTrailingNewline);
83
+ }
84
+ export {
85
+ getAction
86
+ };
@@ -0,0 +1,116 @@
1
+ import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
2
+ import {
3
+ formatAbsoluteTime
4
+ } from "./chunk-AEFPCC4U.js";
5
+ import {
6
+ BaseCollections
7
+ } from "./chunk-F467BYYR.js";
8
+ import {
9
+ getDatabaseClient
10
+ } from "./chunk-Z2KMGFE6.js";
11
+ import "./chunk-HCPN3KNF.js";
12
+ import "./chunk-B2MHTD3R.js";
13
+ import {
14
+ sdkBuildSchema,
15
+ sdkSchema
16
+ } from "./chunk-3L6DLIXJ.js";
17
+ import "./chunk-P7H7GY5A.js";
18
+ import {
19
+ getAuthData
20
+ } from "./chunk-M37TP6U2.js";
21
+ import "./chunk-4ZDQXWBT.js";
22
+ import {
23
+ teamSchema
24
+ } from "./chunk-VNYE4R7N.js";
25
+ import "./chunk-OQKDBLOZ.js";
26
+ import "./chunk-K74E42RV.js";
27
+ import "./chunk-CISTON3A.js";
28
+ import "./chunk-Q7DOQHZN.js";
29
+ import "./chunk-4ORL4MST.js";
30
+ import {
31
+ output,
32
+ printTable
33
+ } from "./chunk-T5HJUAWB.js";
34
+ import "./chunk-GSGZHE26.js";
35
+ import {
36
+ external_exports,
37
+ namespaceSchema
38
+ } from "./chunk-IKT5F47M.js";
39
+ import "./chunk-3MZYUBJ6.js";
40
+
41
+ // src/domains/sdk/list.action.ts
42
+ import as from "ansis";
43
+ async function listAction(args) {
44
+ const { error, data } = external_exports.object({
45
+ namespace: namespaceSchema.optional()
46
+ }).safeParse({
47
+ namespace: args.namespace
48
+ });
49
+ if (error)
50
+ return output.error().title("Invalid input").message(error.issues[0].message).exit("error");
51
+ const auth = await getAuthData();
52
+ auth.addEventListener((state) => Object.assign(auth, state));
53
+ const client = await getDatabaseClient();
54
+ const team = await client.getOne({
55
+ collectionPath: BaseCollections.Teams,
56
+ query: {
57
+ uid: auth.teamUid
58
+ },
59
+ schema: teamSchema
60
+ });
61
+ if (team.error)
62
+ return output.error().title("An error occurred when fetching your team.").message(team.message).exit("error");
63
+ const namespace = data.namespace || team.data.namespaces.at(0);
64
+ if (!namespace) {
65
+ return output.error().title("Missing namespace").message(
66
+ "Could not find a valid namespace for your API. Please specify a namespace or contact support."
67
+ ).exit("error");
68
+ }
69
+ const sdks = await client.getMany({
70
+ collectionPath: BaseCollections.Sdks(team.data.uid),
71
+ query: {
72
+ namespace
73
+ },
74
+ schema: sdkSchema.array()
75
+ });
76
+ if (sdks.error) return output.error().title(sdks.message).exit("error");
77
+ if (sdks.data.length === 0) {
78
+ output.info().title(`No SDKs found for namespace "${namespace}".`).print();
79
+ return;
80
+ }
81
+ const builds = await client.getMany({
82
+ collectionPath: BaseCollections.SdkBuilds(team.data.uid),
83
+ query: {},
84
+ schema: sdkBuildSchema.array()
85
+ });
86
+ const lastBuiltAt = /* @__PURE__ */ new Map();
87
+ if (!builds.error) {
88
+ for (const build of builds.data) {
89
+ if (build.createdAt > (lastBuiltAt.get(build.sdk.uid) ?? 0)) {
90
+ lastBuiltAt.set(build.sdk.uid, build.createdAt);
91
+ }
92
+ }
93
+ }
94
+ printTable(
95
+ [
96
+ { name: "title", title: "Title", alignment: "left", maxLen: 40 },
97
+ { name: "name", title: "Name", alignment: "left", color: "blue" },
98
+ { name: "version", title: "Version", alignment: "left" },
99
+ { name: "access", title: "Access", alignment: "left" },
100
+ { name: "lastBuild", title: "Last Build", alignment: "left" }
101
+ ],
102
+ sdks.data.map((sdk) => {
103
+ const builtAt = lastBuiltAt.get(sdk.uid);
104
+ return {
105
+ title: sdk.title || as.dim("\u2014"),
106
+ name: `@${sdk.namespace}/${sdk.slug}`,
107
+ version: sdk.currentVersion,
108
+ access: sdk.isPrivate ? as.green("Private") : as.yellow("Public"),
109
+ lastBuild: builtAt ? as.dim(formatAbsoluteTime(builtAt * 1e3)) : as.dim("Never")
110
+ };
111
+ })
112
+ );
113
+ }
114
+ export {
115
+ listAction
116
+ };
@@ -0,0 +1,95 @@
1
+ import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
2
+ import {
3
+ apiService
4
+ } from "./chunk-AO3F5XWR.js";
5
+ import {
6
+ BaseCollections
7
+ } from "./chunk-F467BYYR.js";
8
+ import {
9
+ getDatabaseClient
10
+ } from "./chunk-Z2KMGFE6.js";
11
+ import "./chunk-HCPN3KNF.js";
12
+ import "./chunk-B2MHTD3R.js";
13
+ import "./chunk-3L6DLIXJ.js";
14
+ import "./chunk-P7H7GY5A.js";
15
+ import "./chunk-HPL3ZZ2P.js";
16
+ import {
17
+ getAuthData
18
+ } from "./chunk-M37TP6U2.js";
19
+ import "./chunk-4ZDQXWBT.js";
20
+ import {
21
+ teamSchema
22
+ } from "./chunk-VNYE4R7N.js";
23
+ import "./chunk-OQKDBLOZ.js";
24
+ import "./chunk-K74E42RV.js";
25
+ import "./chunk-CISTON3A.js";
26
+ import "./chunk-Q7DOQHZN.js";
27
+ import "./chunk-4ORL4MST.js";
28
+ import {
29
+ output,
30
+ printTable
31
+ } from "./chunk-T5HJUAWB.js";
32
+ import "./chunk-GSGZHE26.js";
33
+ import {
34
+ compareVersionsDesc,
35
+ external_exports,
36
+ namespaceSchema
37
+ } from "./chunk-IKT5F47M.js";
38
+ import "./chunk-3MZYUBJ6.js";
39
+
40
+ // src/domains/schema/list.action.ts
41
+ import as from "ansis";
42
+ async function listAction(args) {
43
+ const { error, data } = external_exports.object({
44
+ namespace: namespaceSchema.optional()
45
+ }).safeParse({
46
+ namespace: args.namespace
47
+ });
48
+ if (error)
49
+ return output.error().title("Invalid input").message(error.issues[0].message).exit("error");
50
+ const auth = await getAuthData();
51
+ auth.addEventListener((state) => Object.assign(auth, state));
52
+ const client = await getDatabaseClient();
53
+ const team = await client.getOne({
54
+ collectionPath: BaseCollections.Teams,
55
+ query: {
56
+ uid: auth.teamUid
57
+ },
58
+ schema: teamSchema
59
+ });
60
+ if (team.error)
61
+ return output.error().title("An error occurred when fetching your team.").message(team.message).exit("error");
62
+ const namespace = data.namespace || team.data.namespaces.at(0);
63
+ if (!namespace) {
64
+ return output.error().title("Missing namespace").message(
65
+ "Could not find a valid namespace for your API. Please specify a namespace or contact support."
66
+ ).exit("error");
67
+ }
68
+ const apiClient = await apiService();
69
+ const schemas = await apiClient.managedSchemas.getSchemas(namespace);
70
+ if (schemas.error) return output.error().title(schemas.message).exit("error");
71
+ if (schemas.data.length === 0) {
72
+ output.info().title(`No schemas found for namespace "${namespace}".`).print();
73
+ return;
74
+ }
75
+ printTable(
76
+ [
77
+ { name: "title", title: "Title", alignment: "left", maxLen: 40 },
78
+ { name: "name", title: "Name", alignment: "left", color: "blue" },
79
+ { name: "version", title: "Version", alignment: "left" },
80
+ { name: "access", title: "Access", alignment: "left" }
81
+ ],
82
+ schemas.data.map((schema) => {
83
+ const latestVersion = [...schema.versions].sort((a, b) => compareVersionsDesc(a.version, b.version)).at(0);
84
+ return {
85
+ title: schema.title || as.dim("\u2014"),
86
+ name: `@${schema.namespace}/${schema.slug}`,
87
+ version: latestVersion?.version ?? as.dim("\u2014"),
88
+ access: schema.isPrivate ? as.green("Private") : as.yellow("Public")
89
+ };
90
+ })
91
+ );
92
+ }
93
+ export {
94
+ listAction
95
+ };
@@ -0,0 +1,190 @@
1
+ import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
2
+ import {
3
+ dashboardUrl,
4
+ registryUrl
5
+ } from "./chunk-COBPBRQF.js";
6
+ import {
7
+ registry
8
+ } from "./chunk-XCSR4RIT.js";
9
+ import {
10
+ getFileOrUrl,
11
+ isDocument,
12
+ safeNormalize
13
+ } from "./chunk-24WAOKGG.js";
14
+ import {
15
+ DEFAULT_FETCH_CONCURRENCY
16
+ } from "./chunk-K4DTP5TV.js";
17
+ import {
18
+ apiService
19
+ } from "./chunk-AO3F5XWR.js";
20
+ import {
21
+ BaseCollections
22
+ } from "./chunk-F467BYYR.js";
23
+ import {
24
+ getDatabaseClient
25
+ } from "./chunk-Z2KMGFE6.js";
26
+ import "./chunk-HCPN3KNF.js";
27
+ import "./chunk-B2MHTD3R.js";
28
+ import "./chunk-3L6DLIXJ.js";
29
+ import "./chunk-P7H7GY5A.js";
30
+ import "./chunk-HPL3ZZ2P.js";
31
+ import {
32
+ getAuthData
33
+ } from "./chunk-M37TP6U2.js";
34
+ import "./chunk-4ZDQXWBT.js";
35
+ import {
36
+ teamSchema
37
+ } from "./chunk-VNYE4R7N.js";
38
+ import "./chunk-OQKDBLOZ.js";
39
+ import "./chunk-K74E42RV.js";
40
+ import {
41
+ RegistryAsset
42
+ } from "./chunk-CISTON3A.js";
43
+ import "./chunk-Q7DOQHZN.js";
44
+ import {
45
+ isUrl
46
+ } from "./chunk-4ORL4MST.js";
47
+ import {
48
+ output
49
+ } from "./chunk-T5HJUAWB.js";
50
+ import "./chunk-GSGZHE26.js";
51
+ import {
52
+ docVersionSchema,
53
+ external_exports,
54
+ namespaceSchema,
55
+ slugSchema
56
+ } from "./chunk-IKT5F47M.js";
57
+ import "./chunk-3MZYUBJ6.js";
58
+
59
+ // src/domains/schema/publish.action.ts
60
+ import { text } from "@clack/prompts";
61
+ import as from "ansis";
62
+ import { bundle } from "@scalar/json-magic/bundle";
63
+ import { fetchUrls, readFiles } from "@scalar/json-magic/bundle/plugins/node";
64
+ async function publishAction(file, args) {
65
+ const { error, data } = external_exports.object({
66
+ slug: slugSchema.optional(),
67
+ file: external_exports.string().min(1, "Please provide a valid file path or URL for your document.").optional(),
68
+ title: external_exports.string().max(50).optional(),
69
+ namespace: namespaceSchema.optional(),
70
+ private: external_exports.boolean().optional(),
71
+ version: docVersionSchema.optional(),
72
+ force: external_exports.coerce.boolean(),
73
+ bundle: external_exports.coerce.boolean().optional(),
74
+ fetchLimit: external_exports.coerce.number().optional(),
75
+ urlMap: external_exports.coerce.boolean().default(false),
76
+ treeShake: external_exports.coerce.boolean().default(false)
77
+ }).safeParse({
78
+ file,
79
+ title: args.title,
80
+ slug: args.slug,
81
+ namespace: args.namespace,
82
+ private: args.private,
83
+ version: args.version,
84
+ force: args.force
85
+ });
86
+ if (error)
87
+ return output.error().title("Invalid input").message(error.issues[0].message).exit("error");
88
+ const auth = await getAuthData();
89
+ auth.addEventListener((state) => Object.assign(auth, state));
90
+ const db = await getDatabaseClient();
91
+ const team = await db.getOne({
92
+ collectionPath: BaseCollections.Teams,
93
+ query: {
94
+ uid: auth.teamUid
95
+ },
96
+ schema: teamSchema
97
+ });
98
+ if (team.error)
99
+ return output.error().title("An error occurred when fetching your team.").message(team.message).exit("error");
100
+ const namespace = data.namespace || team.data.namespaces.at(0);
101
+ if (!namespace) {
102
+ return output.error().title("Missing namespace").message(
103
+ "Could not find a valid namespace for your API. Please specify a namespace or contact support."
104
+ ).exit("error");
105
+ }
106
+ const client = await apiService();
107
+ const namespaceSchemaRes = await client.managedSchemas.getSchemas(namespace);
108
+ if (namespaceSchemaRes.error)
109
+ return output.error().title(namespaceSchemaRes.message).exit("error");
110
+ const apiFile = data.file || (await text({
111
+ message: "Please enter a file path or URL for your document",
112
+ placeholder: "./api.yaml",
113
+ validate(value) {
114
+ if (value.length === 0) return "File path or URL is required!";
115
+ }
116
+ })).toString();
117
+ const content = await getFileOrUrl(apiFile);
118
+ const result = safeNormalize(content);
119
+ if (!isDocument(result)) {
120
+ return output.error().title("Invalid file").message(
121
+ isUrl(apiFile) ? "Could not fetch or parse the document from the URL." : "Could not read or parse the document file."
122
+ ).exit("error");
123
+ }
124
+ const slug = data.slug || (await text({
125
+ message: "Please provide a slug identifier for your schema",
126
+ validate(value) {
127
+ if (value.length === 0) return "Slug is required.";
128
+ if (slugSchema.safeParse(value)?.error)
129
+ return "Please enter a valid slug (e.g. my-schema)";
130
+ }
131
+ })).toString();
132
+ const matchingSchema = namespaceSchemaRes.data.find(
133
+ (schema2) => schema2.slug === slug
134
+ );
135
+ const documentTitle = result?.info?.title;
136
+ const providedTitle = data.title ?? documentTitle;
137
+ const title = matchingSchema || providedTitle ? providedTitle : (await text({
138
+ message: "Please provide a title for your schema",
139
+ validate(value) {
140
+ if (value.length === 0) return "Title is required.";
141
+ }
142
+ })).toString();
143
+ const version = data.version || (await text({
144
+ message: "What is the version of your document (e.g. 0.1.0)?",
145
+ validate(value) {
146
+ if (value.length === 0) return "Version is required.";
147
+ if (docVersionSchema.safeParse(value)?.error)
148
+ return "Version must be a non-empty string";
149
+ }
150
+ })).toString();
151
+ const logger = output.info().line().loader(`Publishing ${slug} to Scalar registry...`);
152
+ const bundlingPlugins = [readFiles()];
153
+ if (data.bundle) {
154
+ bundlingPlugins.push(
155
+ fetchUrls({
156
+ limit: data.fetchLimit ?? DEFAULT_FETCH_CONCURRENCY
157
+ })
158
+ );
159
+ }
160
+ const bundledDocument = await bundle(result, {
161
+ plugins: bundlingPlugins,
162
+ treeShake: data.treeShake,
163
+ urlMap: data.urlMap
164
+ });
165
+ const document = JSON.stringify(bundledDocument);
166
+ const publishRes = matchingSchema ? await client.managedSchemas.createVersion(namespace, slug, {
167
+ document,
168
+ version,
169
+ force: data.force
170
+ }) : await client.managedSchemas.create(namespace, {
171
+ title: title || "Untitled",
172
+ version,
173
+ slug,
174
+ isPrivate: data.private,
175
+ document
176
+ });
177
+ if (publishRes.error)
178
+ return output.error().title(publishRes.message).exit("error");
179
+ const schema = registry(namespace).schemas(slug);
180
+ const schemaUrl = dashboardUrl(
181
+ RegistryAsset.Schemas,
182
+ matchingSchema?.uid ?? publishRes.data.uid
183
+ );
184
+ logger.update("loader", 0, {
185
+ content: `Successfully published v${version} for ${slug}.`
186
+ }).line().line(`${as.green("\u279C")} ${as.white.bold("View in dashboard:")}`).line(as.cyan(schemaUrl)).line().line(`${as.green("\u279C")} ${as.white.bold("Registry Preview:")}`).line(as.cyan(registryUrl(schema.url({ version })))).line().line(`${as.green("\u279C")} ${as.white.bold("Registry YAML:")}`).line(as.cyan(registryUrl(schema.url({ version, format: "yaml" })))).line().line(`${as.green("\u279C")} ${as.white.bold("Registry JSON:")}`).line(as.cyan(registryUrl(schema.url({ version, format: "json" })))).print();
187
+ }
188
+ export {
189
+ publishAction
190
+ };
@@ -0,0 +1,95 @@
1
+ import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
2
+ import {
3
+ apiService
4
+ } from "./chunk-AO3F5XWR.js";
5
+ import {
6
+ BaseCollections
7
+ } from "./chunk-F467BYYR.js";
8
+ import {
9
+ getDatabaseClient
10
+ } from "./chunk-Z2KMGFE6.js";
11
+ import "./chunk-HCPN3KNF.js";
12
+ import "./chunk-B2MHTD3R.js";
13
+ import "./chunk-3L6DLIXJ.js";
14
+ import "./chunk-P7H7GY5A.js";
15
+ import "./chunk-HPL3ZZ2P.js";
16
+ import {
17
+ getAuthData
18
+ } from "./chunk-M37TP6U2.js";
19
+ import "./chunk-4ZDQXWBT.js";
20
+ import {
21
+ teamSchema
22
+ } from "./chunk-VNYE4R7N.js";
23
+ import "./chunk-OQKDBLOZ.js";
24
+ import "./chunk-K74E42RV.js";
25
+ import "./chunk-CISTON3A.js";
26
+ import "./chunk-Q7DOQHZN.js";
27
+ import "./chunk-4ORL4MST.js";
28
+ import {
29
+ output
30
+ } from "./chunk-T5HJUAWB.js";
31
+ import "./chunk-GSGZHE26.js";
32
+ import {
33
+ external_exports,
34
+ namespaceSchema,
35
+ slugSchema
36
+ } from "./chunk-IKT5F47M.js";
37
+ import "./chunk-3MZYUBJ6.js";
38
+
39
+ // src/domains/schema/update.action.ts
40
+ import { select } from "@clack/prompts";
41
+ async function updateAction(opts) {
42
+ const { error, data } = external_exports.object({
43
+ slug: slugSchema.optional(),
44
+ namespace: namespaceSchema.optional(),
45
+ title: external_exports.string().max(50).optional(),
46
+ description: external_exports.string().optional(),
47
+ isPrivate: external_exports.boolean().optional()
48
+ }).safeParse(opts);
49
+ if (error)
50
+ return output.error().title("Invalid input").message(error.issues[0].message).exit("error");
51
+ const auth = await getAuthData();
52
+ auth.addEventListener((state) => Object.assign(auth, state));
53
+ const db = await getDatabaseClient();
54
+ const client = await apiService();
55
+ const team = await db.getOne({
56
+ collectionPath: BaseCollections.Teams,
57
+ query: {
58
+ uid: auth.teamUid
59
+ },
60
+ schema: teamSchema
61
+ });
62
+ if (team.error)
63
+ return output.error().title("An error occurred when fetching your team.").message(team.message).exit("error");
64
+ const namespace = data.namespace || team.data.namespaces.at(0);
65
+ if (!namespace) {
66
+ return output.error().title("Missing namespace").message(
67
+ "Could not find a valid namespace for your schema. Please specify a namespace or contact support."
68
+ ).exit("error");
69
+ }
70
+ const schemas = await client.managedSchemas.getSchemas(namespace);
71
+ if (schemas.error) return output.error().title(schemas.message).exit("error");
72
+ const schemaSlug = schemas.data.find((schema) => schema.slug === data.slug)?.slug || await select({
73
+ message: "Please select a schema to update",
74
+ options: schemas.data.map((schema) => ({
75
+ value: schema.slug,
76
+ label: schema.slug
77
+ }))
78
+ });
79
+ if (!schemaSlug) {
80
+ return output.error().title("No schema found").message("Please provide a valid schema slug").exit("error");
81
+ }
82
+ const logger = output.info().loader("Updating the schema");
83
+ const response = await client.managedSchemas.update(namespace, schemaSlug, {
84
+ title: data.title,
85
+ description: data.description,
86
+ isPrivate: data.isPrivate
87
+ });
88
+ if (response.error) {
89
+ return output.error().title("Something went wrong").message(response.message).exit("error");
90
+ }
91
+ logger.update("loader", 0, { content: "Schema updated successfully!" }).exit("success");
92
+ }
93
+ export {
94
+ updateAction
95
+ };