@scalepad/sdk-core 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/catalog.d.ts +14 -0
- package/dist/catalog.js +263 -0
- package/dist/catalog.js.map +1 -0
- package/dist/generated.d.ts +105 -0
- package/dist/generated.js +159 -0
- package/dist/generated.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime.d.ts +37 -0
- package/dist/runtime.js +88 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema.d.ts +6693 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -0
- package/package.json +17 -0
- package/src/catalog.ts +277 -0
- package/src/generated.ts +303 -0
- package/src/index.ts +87 -0
- package/src/runtime.ts +132 -0
- package/src/schema.ts +6694 -0
- package/tsconfig.json +9 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { GeneratedCoreClient } from "./generated.js";
|
|
2
|
+
export { coreOperations } from "./catalog.js";
|
|
3
|
+
export { GeneratedCoreClient } from "./generated.js";
|
|
4
|
+
export { BaseApiError as ScalepadApiError } from "./runtime.js";
|
|
5
|
+
function buildListQuery(query = {}) {
|
|
6
|
+
const params = {};
|
|
7
|
+
if (query.pageSize != null) {
|
|
8
|
+
params.page_size = String(query.pageSize);
|
|
9
|
+
}
|
|
10
|
+
if (query.cursor) {
|
|
11
|
+
params.cursor = query.cursor;
|
|
12
|
+
}
|
|
13
|
+
if (query.sort) {
|
|
14
|
+
params.sort = query.sort;
|
|
15
|
+
}
|
|
16
|
+
for (const [field, expression] of Object.entries(query.filters ?? {})) {
|
|
17
|
+
params[`filter[${field}]`] = expression;
|
|
18
|
+
}
|
|
19
|
+
return params;
|
|
20
|
+
}
|
|
21
|
+
export class ScalepadCoreClient {
|
|
22
|
+
generated;
|
|
23
|
+
constructor(config) {
|
|
24
|
+
this.generated = new GeneratedCoreClient(config);
|
|
25
|
+
}
|
|
26
|
+
listClients(query = {}) {
|
|
27
|
+
return this.generated.listClients(buildListQuery(query));
|
|
28
|
+
}
|
|
29
|
+
getClient(id) {
|
|
30
|
+
return this.generated.getClientsById({ id });
|
|
31
|
+
}
|
|
32
|
+
listIntegrationConfigurations() {
|
|
33
|
+
return this.generated.listIntegrationsConfigurations();
|
|
34
|
+
}
|
|
35
|
+
listHardwareAssets(query = {}) {
|
|
36
|
+
return this.generated.listAssetsHardware(buildListQuery(query));
|
|
37
|
+
}
|
|
38
|
+
listTickets(query = {}) {
|
|
39
|
+
return this.generated.listServiceTickets(buildListQuery(query));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function createCoreClient(config) {
|
|
43
|
+
return new ScalepadCoreClient(config);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EASpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAqD,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAuF,MAAM,cAAc,CAAC;AAmBrJ,SAAS,cAAc,CAAC,QAAmB,EAAE;IAC3C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACtE,MAAM,CAAC,UAAU,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,kBAAkB;IACZ,SAAS,CAAsB;IAEhD,YAAmB,MAAwB;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAEM,WAAW,CAAC,QAAmB,EAAE;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAqB,CAAC,CAAC;IAC/E,CAAC;IAEM,SAAS,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEM,6BAA6B;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,EAAE,CAAC;IACzD,CAAC;IAEM,kBAAkB,CAAC,QAAmB,EAAE;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAA4B,CAAC,CAAC;IAC7F,CAAC;IAEM,WAAW,CAAC,QAAmB,EAAE;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAqB,CAAC,CAAC;IACtF,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
2
|
+
export interface JsonObject {
|
|
3
|
+
[key: string]: JsonValue;
|
|
4
|
+
}
|
|
5
|
+
export interface JsonArray extends Array<JsonValue> {
|
|
6
|
+
}
|
|
7
|
+
export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
|
|
8
|
+
export type FetchLike = typeof fetch;
|
|
9
|
+
export type QueryArrayValue = string | number | boolean;
|
|
10
|
+
export type QueryValue = string | number | boolean | null | undefined | ReadonlyArray<QueryArrayValue>;
|
|
11
|
+
export type QueryParams = Record<string, QueryValue>;
|
|
12
|
+
export declare class BaseApiError extends Error {
|
|
13
|
+
readonly status: number;
|
|
14
|
+
readonly payload: unknown;
|
|
15
|
+
constructor(message: string, status: number, payload: unknown);
|
|
16
|
+
}
|
|
17
|
+
export interface BaseClientConfig {
|
|
18
|
+
apiKey: string;
|
|
19
|
+
baseUrl?: string;
|
|
20
|
+
fetchImpl?: FetchLike;
|
|
21
|
+
userAgent?: string;
|
|
22
|
+
maxRetries?: number;
|
|
23
|
+
}
|
|
24
|
+
export declare class BaseApiClient {
|
|
25
|
+
private readonly apiKey;
|
|
26
|
+
private readonly baseUrl;
|
|
27
|
+
private readonly fetchImpl;
|
|
28
|
+
private readonly userAgent;
|
|
29
|
+
private readonly maxRetries;
|
|
30
|
+
constructor(config: BaseClientConfig);
|
|
31
|
+
protected requestJson(request: {
|
|
32
|
+
method: string;
|
|
33
|
+
path: string;
|
|
34
|
+
query?: QueryParams;
|
|
35
|
+
body?: JsonValue;
|
|
36
|
+
}): Promise<unknown>;
|
|
37
|
+
}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export class BaseApiError extends Error {
|
|
2
|
+
status;
|
|
3
|
+
payload;
|
|
4
|
+
constructor(message, status, payload) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = "BaseApiError";
|
|
7
|
+
this.status = status;
|
|
8
|
+
this.payload = payload;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const DEFAULT_BASE_URL = "https://api.scalepad.com";
|
|
12
|
+
function delay(ms) {
|
|
13
|
+
return new Promise((resolve) => {
|
|
14
|
+
setTimeout(resolve, ms);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
async function parseResponseBody(response) {
|
|
18
|
+
if (response.status === 204 || response.status === 205) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
22
|
+
if (contentType.includes("application/json")) {
|
|
23
|
+
return response.json();
|
|
24
|
+
}
|
|
25
|
+
const text = await response.text();
|
|
26
|
+
return text.length === 0 ? null : text;
|
|
27
|
+
}
|
|
28
|
+
function appendQuery(url, query) {
|
|
29
|
+
if (!query) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
for (const [key, value] of Object.entries(query)) {
|
|
33
|
+
if (value == null) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (Array.isArray(value)) {
|
|
37
|
+
url.searchParams.set(key, value.join(","));
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
url.searchParams.set(key, String(value));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class BaseApiClient {
|
|
44
|
+
apiKey;
|
|
45
|
+
baseUrl;
|
|
46
|
+
fetchImpl;
|
|
47
|
+
userAgent;
|
|
48
|
+
maxRetries;
|
|
49
|
+
constructor(config) {
|
|
50
|
+
this.apiKey = config.apiKey;
|
|
51
|
+
this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
|
|
52
|
+
this.fetchImpl = config.fetchImpl ?? fetch;
|
|
53
|
+
this.userAgent = config.userAgent ?? "@scalepad/cli";
|
|
54
|
+
this.maxRetries = config.maxRetries ?? 3;
|
|
55
|
+
}
|
|
56
|
+
async requestJson(request) {
|
|
57
|
+
const url = new URL(request.path, this.baseUrl);
|
|
58
|
+
appendQuery(url, request.query);
|
|
59
|
+
let attempt = 0;
|
|
60
|
+
while (true) {
|
|
61
|
+
const response = await this.fetchImpl(url, {
|
|
62
|
+
method: request.method,
|
|
63
|
+
headers: {
|
|
64
|
+
accept: "application/json",
|
|
65
|
+
...(request.body != null ? { "content-type": "application/json" } : {}),
|
|
66
|
+
"x-api-key": this.apiKey,
|
|
67
|
+
"user-agent": this.userAgent
|
|
68
|
+
},
|
|
69
|
+
body: request.body != null ? JSON.stringify(request.body) : undefined
|
|
70
|
+
});
|
|
71
|
+
if (response.ok) {
|
|
72
|
+
return parseResponseBody(response);
|
|
73
|
+
}
|
|
74
|
+
if (response.status === 429 && attempt < this.maxRetries) {
|
|
75
|
+
attempt += 1;
|
|
76
|
+
const retryAfterSeconds = Number(response.headers.get("retry-after"));
|
|
77
|
+
const waitMs = Number.isFinite(retryAfterSeconds) && retryAfterSeconds > 0
|
|
78
|
+
? retryAfterSeconds * 1000
|
|
79
|
+
: 500 * (2 ** (attempt - 1));
|
|
80
|
+
await delay(waitMs);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const payload = await parseResponseBody(response);
|
|
84
|
+
throw new BaseApiError(`API request failed with status ${response.status}`, response.status, payload);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|