@spec0/cli 0.1.4 → 0.3.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/commands/api/changelog.d.ts +5 -1
- package/dist/commands/api/changelog.d.ts.map +1 -1
- package/dist/commands/api/changelog.js +23 -15
- package/dist/commands/api/changelog.js.map +1 -1
- package/dist/commands/api/list.d.ts +4 -3
- package/dist/commands/api/list.d.ts.map +1 -1
- package/dist/commands/api/list.js +10 -17
- package/dist/commands/api/list.js.map +1 -1
- package/dist/commands/api/show.d.ts.map +1 -1
- package/dist/commands/api/show.js +7 -2
- package/dist/commands/api/show.js.map +1 -1
- package/dist/commands/ci/generate.d.ts +4 -3
- package/dist/commands/ci/generate.d.ts.map +1 -1
- package/dist/commands/ci/generate.js +12 -12
- package/dist/commands/ci/generate.js.map +1 -1
- package/dist/commands/diff.d.ts +5 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +28 -15
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/lint.d.ts +5 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +11 -6
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/log.d.ts +4 -1
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +11 -5
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/mock/create.d.ts +6 -7
- package/dist/commands/mock/create.d.ts.map +1 -1
- package/dist/commands/mock/create.js +15 -10
- package/dist/commands/mock/create.js.map +1 -1
- package/dist/commands/mock/list.d.ts +2 -1
- package/dist/commands/mock/list.d.ts.map +1 -1
- package/dist/commands/mock/list.js +6 -4
- package/dist/commands/mock/list.js.map +1 -1
- package/dist/commands/mock/show.d.ts +4 -2
- package/dist/commands/mock/show.d.ts.map +1 -1
- package/dist/commands/mock/show.js +8 -5
- package/dist/commands/mock/show.js.map +1 -1
- package/dist/commands/mock/url.d.ts +3 -0
- package/dist/commands/mock/url.d.ts.map +1 -1
- package/dist/commands/mock/url.js +7 -3
- package/dist/commands/mock/url.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +70 -20
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/pull.d.ts +9 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +22 -7
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +7 -6
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/search.d.ts +4 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +15 -9
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/status.d.ts +5 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +14 -17
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync-status.d.ts +3 -2
- package/dist/commands/sync-status.d.ts.map +1 -1
- package/dist/commands/sync-status.js +12 -11
- package/dist/commands/sync-status.js.map +1 -1
- package/dist/commands/team/create.d.ts +9 -0
- package/dist/commands/team/create.d.ts.map +1 -0
- package/dist/commands/team/create.js +56 -0
- package/dist/commands/team/create.js.map +1 -0
- package/dist/commands/team/delete.d.ts +13 -0
- package/dist/commands/team/delete.d.ts.map +1 -0
- package/dist/commands/team/delete.js +68 -0
- package/dist/commands/team/delete.js.map +1 -0
- package/dist/commands/team/index.d.ts +10 -0
- package/dist/commands/team/index.d.ts.map +1 -0
- package/dist/commands/team/index.js +17 -0
- package/dist/commands/team/index.js.map +1 -0
- package/dist/commands/team/list.d.ts +8 -0
- package/dist/commands/team/list.d.ts.map +1 -0
- package/dist/commands/team/list.js +49 -0
- package/dist/commands/team/list.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +27 -1
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +45 -4
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/ref-resolver.d.ts +8 -10
- package/dist/lib/ref-resolver.d.ts.map +1 -1
- package/dist/lib/ref-resolver.js +10 -6
- package/dist/lib/ref-resolver.js.map +1 -1
- package/package.json +7 -8
- package/dist/types.d.ts +0 -664
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* spec0 team … — team management subcommands.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the `spec0 mock` group's split-per-verb shape (each verb owns its
|
|
5
|
+
* flags, exit codes, and output contract). Backed by V1 endpoints on
|
|
6
|
+
* `@spec0/sdk-public-platform.PublicTeamsService`.
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from "commander";
|
|
9
|
+
export declare function registerTeamCommands(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/team/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAKpD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* spec0 team … — team management subcommands.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the `spec0 mock` group's split-per-verb shape (each verb owns its
|
|
5
|
+
* flags, exit codes, and output contract). Backed by V1 endpoints on
|
|
6
|
+
* `@spec0/sdk-public-platform.PublicTeamsService`.
|
|
7
|
+
*/
|
|
8
|
+
import { registerTeamCreateCommand } from "./create.js";
|
|
9
|
+
import { registerTeamDeleteCommand } from "./delete.js";
|
|
10
|
+
import { registerTeamListCommand } from "./list.js";
|
|
11
|
+
export function registerTeamCommands(program) {
|
|
12
|
+
const team = program.command("team").description("Team management");
|
|
13
|
+
registerTeamCreateCommand(team);
|
|
14
|
+
registerTeamDeleteCommand(team);
|
|
15
|
+
registerTeamListCommand(team);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/team/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACpE,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* spec0 team list — one row per team in the org.
|
|
3
|
+
*
|
|
4
|
+
* Uses PublicTeamsService.listTeams (`/api/v1/public/teams`).
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
export declare function registerTeamListCommand(team: Command): void;
|
|
8
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/team/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,QA0CpD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* spec0 team list — one row per team in the org.
|
|
3
|
+
*
|
|
4
|
+
* Uses PublicTeamsService.listTeams (`/api/v1/public/teams`).
|
|
5
|
+
*/
|
|
6
|
+
import { PublicTeamsService } from "@spec0/sdk-public-platform";
|
|
7
|
+
import { configureSdkAuth, errorStatusCode, is401 } from "../../lib/api-client.js";
|
|
8
|
+
import { requireOrgContext } from "../../lib/auth-context.js";
|
|
9
|
+
import { ExitCode, exitCodeForHttpStatus } from "../../lib/exit-codes.js";
|
|
10
|
+
import { emit, fail, resolveOutputContext } from "../../lib/output/index.js";
|
|
11
|
+
import { renderTable } from "../../lib/output/table.js";
|
|
12
|
+
export function registerTeamListCommand(team) {
|
|
13
|
+
team
|
|
14
|
+
.command("list")
|
|
15
|
+
.description("List all teams in the org.")
|
|
16
|
+
.option("--org <uuid>", "Org id override")
|
|
17
|
+
.option("--output <format>", "Output format: text, json, or yaml (default: text)")
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
const outCtx = resolveOutputContext(opts);
|
|
20
|
+
let authCtx;
|
|
21
|
+
try {
|
|
22
|
+
authCtx = requireOrgContext(opts.org);
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
fail(outCtx, ExitCode.AUTH_MISSING, e.message, {
|
|
26
|
+
hint: "Set SPEC0_TOKEN + SPEC0_ORG_ID, or run 'spec0 auth login'.",
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
configureSdkAuth(authCtx);
|
|
30
|
+
try {
|
|
31
|
+
const rows = (await PublicTeamsService.listTeams());
|
|
32
|
+
emit(outCtx, rows, (data) => renderTable(data, [
|
|
33
|
+
{ key: "id", header: "Id" },
|
|
34
|
+
{ key: "name", header: "Name" },
|
|
35
|
+
{ key: "description", header: "Description" },
|
|
36
|
+
]));
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
if (is401(err)) {
|
|
40
|
+
fail(outCtx, ExitCode.AUTH_MISSING, "Token invalid or expired.", {
|
|
41
|
+
hint: "Run 'spec0 auth login' or refresh SPEC0_TOKEN.",
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const status = errorStatusCode(err);
|
|
45
|
+
fail(outCtx, status ? exitCodeForHttpStatus(status) : ExitCode.GENERIC, `team list failed: ${err.message}`);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/team/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAsB,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,IAAa;IACnD,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC;SACzC,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;SACjF,MAAM,CAAC,KAAK,EAAE,IAAsC,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,EAAG,CAAW,CAAC,OAAO,EAAE;gBACxD,IAAI,EAAE,4DAA4D;aACnE,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,kBAAkB,CAAC,SAAS,EAAE,CAAa,CAAC;YAChE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1B,WAAW,CAAC,IAA4C,EAAE;gBACxD,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC3B,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;gBAC/B,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE;aAC9C,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,EAAE,2BAA2B,EAAE;oBAC/D,IAAI,EAAE,gDAAgD;iBACvD,CAAC,CAAC;YACL,CAAC;YACD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CACF,MAAM,EACN,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EACzD,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,7 @@ import { registerInitCommand } from "./commands/init.js";
|
|
|
14
14
|
import { registerPublishCommand } from "./commands/publish.js";
|
|
15
15
|
import { registerPushCommand } from "./commands/push.js";
|
|
16
16
|
import { registerMockCommands } from "./commands/mock/index.js";
|
|
17
|
+
import { registerTeamCommands } from "./commands/team/index.js";
|
|
17
18
|
import { registerLintCommand } from "./commands/lint.js";
|
|
18
19
|
import { registerPullCommand } from "./commands/pull.js";
|
|
19
20
|
import { registerSearchCommand } from "./commands/search.js";
|
|
@@ -49,6 +50,7 @@ registerInitCommand(program);
|
|
|
49
50
|
registerPushCommand(program);
|
|
50
51
|
registerPublishCommand(program);
|
|
51
52
|
registerMockCommands(program);
|
|
53
|
+
registerTeamCommands(program);
|
|
52
54
|
registerLintCommand(program);
|
|
53
55
|
registerPullCommand(program);
|
|
54
56
|
registerSearchCommand(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAErE,2EAA2E;AAC3E,4EAA4E;AAC5E,oDAAoD;AACpD,iBAAiB,EAAE,CAAC;AACpB,IAAI,WAAW,EAAE,EAAE,CAAC;IAClB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,iFAAiF,CAAC;KAC9F,OAAO,CAAC,aAAa,EAAE,EAAE,eAAe,EAAE,mBAAmB,CAAC;KAC9D,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC;IACtC,kFAAkF;IAClF,wFAAwF;IACxF,qFAAqF;IACrF,yFAAyF;IACzF,qFAAqF;IACrF,wFAAwF;IACxF,uBAAuB;KACtB,uBAAuB,EAAE,CAAC;AAE7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,uEAAuE;AACvE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACnB,uBAAuB,CAAC,aAAa,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/lib/api-client.d.ts
CHANGED
|
@@ -30,8 +30,34 @@ export declare function createOrgApiClient(ctx: ResolvedOrgContext): {
|
|
|
30
30
|
deleteJson<T = unknown>(path: string, headers?: Record<string, string>): Promise<T>;
|
|
31
31
|
};
|
|
32
32
|
export { orgHeaders };
|
|
33
|
+
/**
|
|
34
|
+
* Configure the `@spec0/sdk-public-platform` global `OpenAPI` singleton from a
|
|
35
|
+
* resolved org context. The SDK's request builder formats URLs as
|
|
36
|
+
* `OpenAPI.BASE + <service-path>`, where service paths look like
|
|
37
|
+
* `/api/v1/public/apis`. The CLI's stored `apiUrl` is the platform host root
|
|
38
|
+
* with no context path, so we append `/api-management` here to match the legacy
|
|
39
|
+
* raw HTTP call sites (which prefixed `/api-management/api/v1/public/apis`).
|
|
40
|
+
*
|
|
41
|
+
* `OpenAPI.TOKEN` is set to the org API key — the SDK adds the
|
|
42
|
+
* `Authorization: Bearer <token>` header automatically. `X-Org-Id` rides on
|
|
43
|
+
* `OpenAPI.HEADERS` so it's sent on every SDK call.
|
|
44
|
+
*
|
|
45
|
+
* Call this once per command invocation after `requireOrgContext()`. It is
|
|
46
|
+
* idempotent and safe to invoke multiple times in the same process.
|
|
47
|
+
*/
|
|
48
|
+
export declare function configureSdkAuth(ctx: ResolvedOrgContext): void;
|
|
49
|
+
/**
|
|
50
|
+
* Extract the HTTP status code from either a `got`-style error
|
|
51
|
+
* (`err.response.statusCode`) or a SDK `ApiError` (`err.status`).
|
|
52
|
+
* Returns `undefined` if neither is present.
|
|
53
|
+
*/
|
|
54
|
+
export declare function errorStatusCode(err: unknown): number | undefined;
|
|
33
55
|
export declare function is401(err: unknown): boolean;
|
|
34
56
|
export declare function is402(err: unknown): boolean;
|
|
35
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Extract a human-readable error message from a backend error response.
|
|
59
|
+
* Handles both `got`-style errors (`err.response.body`) and SDK `ApiError`
|
|
60
|
+
* instances (`err.body`).
|
|
61
|
+
*/
|
|
36
62
|
export declare function extractErrorMessage(err: unknown): string | null;
|
|
37
63
|
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAY,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAY,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEzF;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS;QAShC,CAAC,kBAAkB,MAAM,YAAY,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;SASxD,CAAC,kBAAkB,MAAM,SAAS,OAAO,YAAY,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;QAU1E,CAAC,kBAAkB,MAAM,SAAS,OAAO,YAAY,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;WAUtE,CAAC,kBAAkB,MAAM,YAAY,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;EASzE;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB;;YASxC,CAAC,kBAAkB,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;kBAOlE,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;aAU/D,CAAC,kBACR,MAAM,QACN,OAAO,YACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;YAaC,CAAC,kBACP,MAAM,QACN,OAAO,YACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;kBAaO,CAAC,kBACb,MAAM,UACJ,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,YAC5D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;eAaI,CAAC,kBAAkB,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;EAQ5F;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAI9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGhE;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE3C;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAa/D"}
|
package/dist/lib/api-client.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Platform API HTTP client
|
|
3
3
|
*/
|
|
4
4
|
import got from "got";
|
|
5
|
+
import { ApiError, OpenAPI } from "@spec0/sdk-public-platform";
|
|
5
6
|
function orgHeaders(orgId, extra) {
|
|
6
7
|
return { "X-Org-Id": orgId, ...extra };
|
|
7
8
|
}
|
|
@@ -124,15 +125,55 @@ export function createOrgApiClient(ctx) {
|
|
|
124
125
|
};
|
|
125
126
|
}
|
|
126
127
|
export { orgHeaders };
|
|
128
|
+
/**
|
|
129
|
+
* Configure the `@spec0/sdk-public-platform` global `OpenAPI` singleton from a
|
|
130
|
+
* resolved org context. The SDK's request builder formats URLs as
|
|
131
|
+
* `OpenAPI.BASE + <service-path>`, where service paths look like
|
|
132
|
+
* `/api/v1/public/apis`. The CLI's stored `apiUrl` is the platform host root
|
|
133
|
+
* with no context path, so we append `/api-management` here to match the legacy
|
|
134
|
+
* raw HTTP call sites (which prefixed `/api-management/api/v1/public/apis`).
|
|
135
|
+
*
|
|
136
|
+
* `OpenAPI.TOKEN` is set to the org API key — the SDK adds the
|
|
137
|
+
* `Authorization: Bearer <token>` header automatically. `X-Org-Id` rides on
|
|
138
|
+
* `OpenAPI.HEADERS` so it's sent on every SDK call.
|
|
139
|
+
*
|
|
140
|
+
* Call this once per command invocation after `requireOrgContext()`. It is
|
|
141
|
+
* idempotent and safe to invoke multiple times in the same process.
|
|
142
|
+
*/
|
|
143
|
+
export function configureSdkAuth(ctx) {
|
|
144
|
+
OpenAPI.BASE = `${ctx.apiUrl}/api-management`;
|
|
145
|
+
OpenAPI.TOKEN = ctx.apiKey;
|
|
146
|
+
OpenAPI.HEADERS = { "X-Org-Id": ctx.orgId };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Extract the HTTP status code from either a `got`-style error
|
|
150
|
+
* (`err.response.statusCode`) or a SDK `ApiError` (`err.status`).
|
|
151
|
+
* Returns `undefined` if neither is present.
|
|
152
|
+
*/
|
|
153
|
+
export function errorStatusCode(err) {
|
|
154
|
+
if (err instanceof ApiError)
|
|
155
|
+
return err.status;
|
|
156
|
+
return err?.response?.statusCode;
|
|
157
|
+
}
|
|
127
158
|
export function is401(err) {
|
|
128
|
-
return err
|
|
159
|
+
return errorStatusCode(err) === 401;
|
|
129
160
|
}
|
|
130
161
|
export function is402(err) {
|
|
131
|
-
return err
|
|
162
|
+
return errorStatusCode(err) === 402;
|
|
132
163
|
}
|
|
133
|
-
/**
|
|
164
|
+
/**
|
|
165
|
+
* Extract a human-readable error message from a backend error response.
|
|
166
|
+
* Handles both `got`-style errors (`err.response.body`) and SDK `ApiError`
|
|
167
|
+
* instances (`err.body`).
|
|
168
|
+
*/
|
|
134
169
|
export function extractErrorMessage(err) {
|
|
135
|
-
|
|
170
|
+
let body;
|
|
171
|
+
if (err instanceof ApiError) {
|
|
172
|
+
body = err.body;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
body = err?.response?.body;
|
|
176
|
+
}
|
|
136
177
|
if (typeof body === "object" && body !== null) {
|
|
137
178
|
const b = body;
|
|
138
179
|
const msg = b["message"] ?? b["detail"] ?? b["error"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,GAAqB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,10 @@
|
|
|
6
6
|
* - `<api>[@<tag>]` — uses caller-supplied default org slug
|
|
7
7
|
* - `<uuid>` — API id (no org/api lookup needed)
|
|
8
8
|
*
|
|
9
|
-
* For commands that need an apiId from a name, call `resolveApiId(
|
|
10
|
-
*
|
|
9
|
+
* For commands that need an apiId from a name, call `resolveApiId(ref)` which
|
|
10
|
+
* hits `PublicApisService.listTeamApis` (`/api/v1/public/apis/team`) and caches
|
|
11
|
+
* per-process. Caller is responsible for `configureSdkAuth(...)` first.
|
|
11
12
|
*/
|
|
12
|
-
/** Minimal structural type — avoids dragging the full client surface in. */
|
|
13
|
-
interface ApiSummaryClient {
|
|
14
|
-
getJson(path: string): Promise<unknown>;
|
|
15
|
-
}
|
|
16
13
|
export type ResolvedRef = {
|
|
17
14
|
kind: "uuid";
|
|
18
15
|
apiId: string;
|
|
@@ -29,9 +26,10 @@ export interface ResolveOptions {
|
|
|
29
26
|
}
|
|
30
27
|
export declare function resolveRef(ref: string, opts?: ResolveOptions): ResolvedRef;
|
|
31
28
|
/**
|
|
32
|
-
* Resolve an apiId from a ref. UUIDs pass through; names hit
|
|
33
|
-
* Cached per-process so repeated calls in
|
|
29
|
+
* Resolve an apiId from a ref. UUIDs pass through; names hit
|
|
30
|
+
* `PublicApisService.listTeamApis`. Cached per-process so repeated calls in
|
|
31
|
+
* one command are free. Caller must have already invoked
|
|
32
|
+
* `configureSdkAuth(...)`.
|
|
34
33
|
*/
|
|
35
|
-
export declare function resolveApiId(
|
|
36
|
-
export {};
|
|
34
|
+
export declare function resolveApiId(ref: ResolvedRef): Promise<string>;
|
|
37
35
|
//# sourceMappingURL=ref-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/ref-resolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ref-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/ref-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,SAAS,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,WAAW,CAsB9E;AAID;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBpE"}
|
package/dist/lib/ref-resolver.js
CHANGED
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
* - `<api>[@<tag>]` — uses caller-supplied default org slug
|
|
7
7
|
* - `<uuid>` — API id (no org/api lookup needed)
|
|
8
8
|
*
|
|
9
|
-
* For commands that need an apiId from a name, call `resolveApiId(
|
|
10
|
-
*
|
|
9
|
+
* For commands that need an apiId from a name, call `resolveApiId(ref)` which
|
|
10
|
+
* hits `PublicApisService.listTeamApis` (`/api/v1/public/apis/team`) and caches
|
|
11
|
+
* per-process. Caller is responsible for `configureSdkAuth(...)` first.
|
|
11
12
|
*/
|
|
13
|
+
import { PublicApisService } from "@spec0/sdk-public-platform";
|
|
12
14
|
import { parseRegistryRef } from "./registry-ref.js";
|
|
13
15
|
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
14
16
|
export function resolveRef(ref, opts = {}) {
|
|
@@ -34,17 +36,19 @@ export function resolveRef(ref, opts = {}) {
|
|
|
34
36
|
}
|
|
35
37
|
const idCache = new Map(); // key = `${org}/${api}` → apiId
|
|
36
38
|
/**
|
|
37
|
-
* Resolve an apiId from a ref. UUIDs pass through; names hit
|
|
38
|
-
* Cached per-process so repeated calls in
|
|
39
|
+
* Resolve an apiId from a ref. UUIDs pass through; names hit
|
|
40
|
+
* `PublicApisService.listTeamApis`. Cached per-process so repeated calls in
|
|
41
|
+
* one command are free. Caller must have already invoked
|
|
42
|
+
* `configureSdkAuth(...)`.
|
|
39
43
|
*/
|
|
40
|
-
export async function resolveApiId(
|
|
44
|
+
export async function resolveApiId(ref) {
|
|
41
45
|
if (ref.kind === "uuid")
|
|
42
46
|
return ref.apiId;
|
|
43
47
|
const key = `${ref.org ?? ""}/${ref.api}`;
|
|
44
48
|
const cached = idCache.get(key);
|
|
45
49
|
if (cached)
|
|
46
50
|
return cached;
|
|
47
|
-
const rows =
|
|
51
|
+
const rows = await PublicApisService.listTeamApis();
|
|
48
52
|
const wantedName = ref.api.toLowerCase();
|
|
49
53
|
const hit = rows.find((r) => (r.apiName ?? "").toLowerCase() === wantedName);
|
|
50
54
|
if (!hit?.apiId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-resolver.js","sourceRoot":"","sources":["../../src/lib/ref-resolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ref-resolver.js","sourceRoot":"","sources":["../../src/lib/ref-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,OAAO,GAAG,iEAAiE,CAAC;AAWlF,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,OAAuB,EAAE;IAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAEpF,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9D,CAAC;IAED,uEAAuE;IACvE,IAAI,GAAG,GAAG,OAAO,CAAC;IAClB,IAAI,GAAuB,CAAC;IAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACd,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5B,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,gCAAgC;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAgB;IACjD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC;IAE1C,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC;IAC7E,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,4CAA4C,CAChH,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC,KAAK,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spec0/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Spec0 CLI — publish API specs, create mock servers, lint, and interact with the Spec0 platform",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"spec0": "./dist/index.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"
|
|
11
|
-
"sync:spec": "node dist/index.js pull spec0/cli-api -o openapi-spec/cli-api-spec.yaml && npm run generate:types",
|
|
12
|
-
"build": "npm run generate:types && tsc",
|
|
10
|
+
"build": "tsc",
|
|
13
11
|
"dev": "tsc --watch",
|
|
14
12
|
"start": "node dist/index.js",
|
|
15
13
|
"cli": "node dist/index.js",
|
|
16
14
|
"lint": "eslint src --ext .ts",
|
|
17
15
|
"pretest": "npm run build",
|
|
18
16
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest",
|
|
17
|
+
"test:integration": "npm run build && NODE_OPTIONS=--experimental-vm-modules jest --testPathPatterns=test/integration --testPathIgnorePatterns=/node_modules/",
|
|
19
18
|
"test:smoke": "npm run build && node scripts/smoke.mjs",
|
|
20
19
|
"docs": "npm run build && node scripts/generate-docs.mjs write",
|
|
21
20
|
"docs:check": "npm run build && node scripts/generate-docs.mjs check",
|
|
@@ -48,14 +47,15 @@
|
|
|
48
47
|
"license": "MIT",
|
|
49
48
|
"repository": {
|
|
50
49
|
"type": "git",
|
|
51
|
-
"url": "git+https://github.com/spec-0/
|
|
50
|
+
"url": "git+https://github.com/spec-0/cli.git"
|
|
52
51
|
},
|
|
53
52
|
"bugs": {
|
|
54
|
-
"url": "https://github.com/spec-0/
|
|
53
|
+
"url": "https://github.com/spec-0/cli/issues"
|
|
55
54
|
},
|
|
56
|
-
"homepage": "https://github.com/spec-0/
|
|
55
|
+
"homepage": "https://github.com/spec-0/cli#readme",
|
|
57
56
|
"dependencies": {
|
|
58
57
|
"@inquirer/prompts": "^7.2.0",
|
|
58
|
+
"@spec0/sdk-public-platform": "^1.2.0",
|
|
59
59
|
"@stoplight/spectral-core": "^1.22.0",
|
|
60
60
|
"@stoplight/spectral-parsers": "^1.0.0",
|
|
61
61
|
"@stoplight/spectral-rulesets": "^1.22.1",
|
|
@@ -81,7 +81,6 @@
|
|
|
81
81
|
"husky": "^9.1.7",
|
|
82
82
|
"jest": "^30.3.0",
|
|
83
83
|
"lint-staged": "^15.5.2",
|
|
84
|
-
"openapi-typescript": "^7.10.1",
|
|
85
84
|
"prettier": "^3.8.3",
|
|
86
85
|
"ts-jest": "^29.4.9",
|
|
87
86
|
"typescript": "^5.7.0",
|