@x12i/memorix-client-api 0.0.0-stage → 0.17.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/HANDOVER.md +97 -0
- package/dist/app.d.ts +64 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +412 -0
- package/dist/app.js.map +1 -0
- package/dist/authix.d.ts +9 -0
- package/dist/authix.d.ts.map +1 -0
- package/dist/authix.js +26 -0
- package/dist/authix.js.map +1 -0
- package/dist/catalog.d.ts +160 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +371 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +102 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +33 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +109 -0
- package/dist/config.js.map +1 -0
- package/dist/derived.d.ts +2 -0
- package/dist/derived.d.ts.map +1 -0
- package/dist/derived.js +35 -0
- package/dist/derived.js.map +1 -0
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +21 -0
- package/dist/errors.js.map +1 -0
- package/dist/fetch.d.ts +17 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/fetch.js +741 -0
- package/dist/fetch.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/live-ops-nav.d.ts +2 -0
- package/dist/live-ops-nav.d.ts.map +1 -0
- package/dist/live-ops-nav.js +42 -0
- package/dist/live-ops-nav.js.map +1 -0
- package/dist/live.d.ts +20 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +8 -0
- package/dist/live.js.map +1 -0
- package/dist/markdown.d.ts +19 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +102 -0
- package/dist/markdown.js.map +1 -0
- package/dist/peers.d.ts +51 -0
- package/dist/peers.d.ts.map +1 -0
- package/dist/peers.js +127 -0
- package/dist/peers.js.map +1 -0
- package/dist/processed.d.ts +22 -0
- package/dist/processed.d.ts.map +1 -0
- package/dist/processed.js +397 -0
- package/dist/processed.js.map +1 -0
- package/dist/project.d.ts +25 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +76 -0
- package/dist/project.js.map +1 -0
- package/dist/reads-live-routes.d.ts +4 -0
- package/dist/reads-live-routes.d.ts.map +1 -0
- package/dist/reads-live-routes.js +56 -0
- package/dist/reads-live-routes.js.map +1 -0
- package/dist/reads-live-ui.d.ts +3 -0
- package/dist/reads-live-ui.d.ts.map +1 -0
- package/dist/reads-live-ui.js +204 -0
- package/dist/reads-live-ui.js.map +1 -0
- package/dist/reads-ring.d.ts +29 -0
- package/dist/reads-ring.d.ts.map +1 -0
- package/dist/reads-ring.js +44 -0
- package/dist/reads-ring.js.map +1 -0
- package/dist/refs.d.ts +24 -0
- package/dist/refs.d.ts.map +1 -0
- package/dist/refs.js +354 -0
- package/dist/refs.js.map +1 -0
- package/dist/request-countex.d.ts +53 -0
- package/dist/request-countex.d.ts.map +1 -0
- package/dist/request-countex.js +171 -0
- package/dist/request-countex.js.map +1 -0
- package/dist/scope.d.ts +13 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +46 -0
- package/dist/scope.js.map +1 -0
- package/dist/scoper.d.ts +75 -0
- package/dist/scoper.d.ts.map +1 -0
- package/dist/scoper.js +475 -0
- package/dist/scoper.js.map +1 -0
- package/dist/shaped-refs.d.ts +23 -0
- package/dist/shaped-refs.d.ts.map +1 -0
- package/dist/shaped-refs.js +395 -0
- package/dist/shaped-refs.js.map +1 -0
- package/dist/skills.d.ts +102 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +609 -0
- package/dist/skills.js.map +1 -0
- package/dist/story.d.ts +43 -0
- package/dist/story.d.ts.map +1 -0
- package/dist/story.js +121 -0
- package/dist/story.js.map +1 -0
- package/dist/upstream.d.ts +13 -0
- package/dist/upstream.d.ts.map +1 -0
- package/dist/upstream.js +58 -0
- package/dist/upstream.js.map +1 -0
- package/openapi/openapi.json +480 -0
- package/package.json +67 -6
- package/README.md +0 -3
package/dist/story.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ContentTypeView } from "./catalog.js";
|
|
2
|
+
export declare const STORY_TYPE = "story";
|
|
3
|
+
export declare const STORY_AI_TYPE = "story-ai";
|
|
4
|
+
export type StoryVariant = "auto" | "ai" | "code";
|
|
5
|
+
export type StorySide = {
|
|
6
|
+
exists: boolean;
|
|
7
|
+
usable: boolean;
|
|
8
|
+
revision: number | null;
|
|
9
|
+
generatedAt: string | null;
|
|
10
|
+
};
|
|
11
|
+
export type StoryAiSide = StorySide & {
|
|
12
|
+
basedOnRevision: number | null;
|
|
13
|
+
stale: boolean;
|
|
14
|
+
};
|
|
15
|
+
export type StoryBlock = {
|
|
16
|
+
template: string;
|
|
17
|
+
served?: "ai" | "code";
|
|
18
|
+
fallbackReason?: "AI_MISSING" | "AI_UNUSABLE";
|
|
19
|
+
ai: StoryAiSide | null;
|
|
20
|
+
code: StorySide | null;
|
|
21
|
+
};
|
|
22
|
+
export type StoryChoice = {
|
|
23
|
+
block: StoryBlock;
|
|
24
|
+
record: Record<string, unknown> | null;
|
|
25
|
+
contentType: typeof STORY_TYPE | typeof STORY_AI_TYPE | null;
|
|
26
|
+
};
|
|
27
|
+
export declare function parseStoryVariant(raw: string | undefined): StoryVariant;
|
|
28
|
+
/** Templates in `story` presentation order. An unstamped content type has none. */
|
|
29
|
+
export declare function storyTemplates(contentType: ContentTypeView | null): Array<{
|
|
30
|
+
value: string;
|
|
31
|
+
label?: string;
|
|
32
|
+
}>;
|
|
33
|
+
/** A template the pack listed on content type `story`. Absent values means none are declared. */
|
|
34
|
+
export declare function declaredTemplate(contentType: ContentTypeView | null, template: string): boolean;
|
|
35
|
+
export declare function chooseStory(input: {
|
|
36
|
+
variant: StoryVariant;
|
|
37
|
+
template: string;
|
|
38
|
+
storyDeclared: boolean;
|
|
39
|
+
aiDeclared: boolean;
|
|
40
|
+
storyRows: Record<string, unknown>[];
|
|
41
|
+
aiRows: Record<string, unknown>[];
|
|
42
|
+
}): StoryChoice;
|
|
43
|
+
//# sourceMappingURL=story.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../src/story.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,aAAa,aAAa,CAAC;AAIxC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IACpC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;IAC9C,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvC,WAAW,EAAE,OAAO,UAAU,GAAG,OAAO,aAAa,GAAG,IAAI,CAAC;CAC9D,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAIvE;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAC5B,WAAW,EAAE,eAAe,GAAG,IAAI,GAClC,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAM1C;AAED,iGAAiG;AACjG,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI/F;AAkFD,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACnC,GAAG,WAAW,CAoBd"}
|
package/dist/story.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { ApiError } from "./errors.js";
|
|
2
|
+
export const STORY_TYPE = "story";
|
|
3
|
+
export const STORY_AI_TYPE = "story-ai";
|
|
4
|
+
const UNUSABLE_AI = new Set(["CODE_ONLY", "SKIPPED", "FAILED", "DEFERRED"]);
|
|
5
|
+
export function parseStoryVariant(raw) {
|
|
6
|
+
if (raw === undefined || raw === "auto")
|
|
7
|
+
return "auto";
|
|
8
|
+
if (raw === "ai" || raw === "code")
|
|
9
|
+
return raw;
|
|
10
|
+
throw new ApiError(400, "VALIDATION", "variant must be auto, ai, or code");
|
|
11
|
+
}
|
|
12
|
+
/** Templates in `story` presentation order. An unstamped content type has none. */
|
|
13
|
+
export function storyTemplates(contentType) {
|
|
14
|
+
const values = contentType?.presentation?.values ?? [];
|
|
15
|
+
return values.map((item) => ({
|
|
16
|
+
value: item.value,
|
|
17
|
+
...(item.label ? { label: item.label } : {}),
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
/** A template the pack listed on content type `story`. Absent values means none are declared. */
|
|
21
|
+
export function declaredTemplate(contentType, template) {
|
|
22
|
+
const values = contentType?.presentation?.values;
|
|
23
|
+
if (!values || values.length === 0)
|
|
24
|
+
return false;
|
|
25
|
+
return values.some((item) => item.value === template);
|
|
26
|
+
}
|
|
27
|
+
function recordOf(value) {
|
|
28
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
29
|
+
return null;
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
function deleted(row) {
|
|
33
|
+
const system = recordOf(row._system);
|
|
34
|
+
return system?.state === "deleted";
|
|
35
|
+
}
|
|
36
|
+
function templateOf(row) {
|
|
37
|
+
const data = recordOf(row.data);
|
|
38
|
+
return typeof data?.template === "string" ? data.template : undefined;
|
|
39
|
+
}
|
|
40
|
+
function revisionOf(row) {
|
|
41
|
+
return typeof row.revision === "number" ? row.revision : -1;
|
|
42
|
+
}
|
|
43
|
+
function generatedAtOf(row) {
|
|
44
|
+
const metadata = recordOf(row?._metadata);
|
|
45
|
+
return typeof metadata?.generatedAt === "string" ? metadata.generatedAt : null;
|
|
46
|
+
}
|
|
47
|
+
function inputPresent(row) {
|
|
48
|
+
const data = recordOf(row.data);
|
|
49
|
+
return Boolean(data && data.input !== undefined && data.input !== null);
|
|
50
|
+
}
|
|
51
|
+
function aiStatus(row) {
|
|
52
|
+
const metadata = recordOf(row._metadata);
|
|
53
|
+
const execution = recordOf(metadata?.aiExecution);
|
|
54
|
+
return typeof execution?.status === "string" ? execution.status : undefined;
|
|
55
|
+
}
|
|
56
|
+
function basedOnRevisionOf(row) {
|
|
57
|
+
const data = recordOf(row?.data);
|
|
58
|
+
const basedOn = recordOf(data?.basedOn);
|
|
59
|
+
return typeof basedOn?.revision === "number" ? basedOn.revision : null;
|
|
60
|
+
}
|
|
61
|
+
function latest(rows, template) {
|
|
62
|
+
let best = null;
|
|
63
|
+
for (const row of rows) {
|
|
64
|
+
if (deleted(row) || templateOf(row) !== template)
|
|
65
|
+
continue;
|
|
66
|
+
if (!best || revisionOf(row) > revisionOf(best))
|
|
67
|
+
best = row;
|
|
68
|
+
}
|
|
69
|
+
return best;
|
|
70
|
+
}
|
|
71
|
+
function codeSide(row) {
|
|
72
|
+
if (!row)
|
|
73
|
+
return { exists: false, usable: false, revision: null, generatedAt: null };
|
|
74
|
+
const revision = revisionOf(row);
|
|
75
|
+
return {
|
|
76
|
+
exists: true,
|
|
77
|
+
usable: inputPresent(row),
|
|
78
|
+
revision: revision >= 0 ? revision : null,
|
|
79
|
+
generatedAt: generatedAtOf(row),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function aiSide(row, codeRevision) {
|
|
83
|
+
const basedOnRevision = basedOnRevisionOf(row);
|
|
84
|
+
const stale = basedOnRevision !== null && codeRevision !== null && basedOnRevision < codeRevision;
|
|
85
|
+
if (!row) {
|
|
86
|
+
return { exists: false, usable: false, revision: null, generatedAt: null, basedOnRevision: null, stale: false };
|
|
87
|
+
}
|
|
88
|
+
const status = aiStatus(row);
|
|
89
|
+
const revision = revisionOf(row);
|
|
90
|
+
return {
|
|
91
|
+
exists: true,
|
|
92
|
+
usable: inputPresent(row) && typeof status === "string" && !UNUSABLE_AI.has(status),
|
|
93
|
+
revision: revision >= 0 ? revision : null,
|
|
94
|
+
generatedAt: generatedAtOf(row),
|
|
95
|
+
basedOnRevision,
|
|
96
|
+
stale,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export function chooseStory(input) {
|
|
100
|
+
const codeRow = input.storyDeclared ? latest(input.storyRows, input.template) : null;
|
|
101
|
+
const code = input.storyDeclared ? codeSide(codeRow) : null;
|
|
102
|
+
const aiRow = input.aiDeclared ? latest(input.aiRows, input.template) : null;
|
|
103
|
+
const ai = input.aiDeclared ? aiSide(aiRow, code?.revision ?? null) : null;
|
|
104
|
+
const block = { template: input.template, ai, code };
|
|
105
|
+
const aiUsable = Boolean(ai?.usable);
|
|
106
|
+
const codeUsable = Boolean(code?.usable);
|
|
107
|
+
const serveAi = input.variant !== "code" && aiUsable;
|
|
108
|
+
const serveCode = input.variant !== "ai" && codeUsable && !serveAi;
|
|
109
|
+
if (serveAi && aiRow) {
|
|
110
|
+
block.served = "ai";
|
|
111
|
+
return { block, record: aiRow, contentType: STORY_AI_TYPE };
|
|
112
|
+
}
|
|
113
|
+
if (serveCode && codeRow) {
|
|
114
|
+
block.served = "code";
|
|
115
|
+
if (input.variant === "auto")
|
|
116
|
+
block.fallbackReason = ai?.exists ? "AI_UNUSABLE" : "AI_MISSING";
|
|
117
|
+
return { block, record: codeRow, contentType: STORY_TYPE };
|
|
118
|
+
}
|
|
119
|
+
return { block, record: null, contentType: null };
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=story.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story.js","sourceRoot":"","sources":["../src/story.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ClientScope } from "./scope.js";
|
|
2
|
+
export type UpstreamCall = {
|
|
3
|
+
signal?: AbortSignal;
|
|
4
|
+
};
|
|
5
|
+
export type Upstream = {
|
|
6
|
+
get(path: string, scope: ClientScope, init?: UpstreamCall): Promise<unknown>;
|
|
7
|
+
post(path: string, scope: ClientScope, body: unknown, init?: UpstreamCall): Promise<unknown>;
|
|
8
|
+
};
|
|
9
|
+
export declare function subjectDirectoryPath(recordId: string): string;
|
|
10
|
+
export declare function createUpstream(memorixUrl: string, fetchImpl?: typeof fetch): Upstream;
|
|
11
|
+
export declare function asRecord(value: unknown): Record<string, unknown> | null;
|
|
12
|
+
export declare function requireRecord(value: unknown, message: string): Record<string, unknown>;
|
|
13
|
+
//# sourceMappingURL=upstream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream.d.ts","sourceRoot":"","sources":["../src/upstream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9F,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,KAAa,GAAG,QAAQ,CA6C5F;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGvE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAItF"}
|
package/dist/upstream.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ApiError, UpstreamError } from "./errors.js";
|
|
2
|
+
export function subjectDirectoryPath(recordId) {
|
|
3
|
+
const encoded = recordId.split("/").map((part) => encodeURIComponent(part)).join("/");
|
|
4
|
+
return `/api/data/subjects/${encoded}`;
|
|
5
|
+
}
|
|
6
|
+
export function createUpstream(memorixUrl, fetchImpl = fetch) {
|
|
7
|
+
const base = memorixUrl.replace(/\/$/, "");
|
|
8
|
+
async function call(method, path, scope, body, init) {
|
|
9
|
+
let res;
|
|
10
|
+
try {
|
|
11
|
+
res = await fetchImpl(`${base}${path}`, {
|
|
12
|
+
method,
|
|
13
|
+
headers: {
|
|
14
|
+
accept: "application/json",
|
|
15
|
+
"content-type": "application/json",
|
|
16
|
+
"x-memorix-org-id": scope.orgId,
|
|
17
|
+
"x-memorix-agent-ids": scope.agentIds.join(","),
|
|
18
|
+
"x-memorix-caller": scope.caller,
|
|
19
|
+
},
|
|
20
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
21
|
+
signal: init?.signal,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
26
|
+
throw new UpstreamError(502, { error: { code: "UPSTREAM", message } });
|
|
27
|
+
}
|
|
28
|
+
const text = await res.text();
|
|
29
|
+
let parsed = null;
|
|
30
|
+
if (text) {
|
|
31
|
+
try {
|
|
32
|
+
parsed = JSON.parse(text);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
parsed = { error: { code: "UPSTREAM", message: text } };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (!res.ok)
|
|
39
|
+
throw new UpstreamError(res.status, parsed);
|
|
40
|
+
return parsed;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
get: (path, scope, init) => call("GET", path, scope, undefined, init),
|
|
44
|
+
post: (path, scope, body, init) => call("POST", path, scope, body, init),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function asRecord(value) {
|
|
48
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
49
|
+
return null;
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
export function requireRecord(value, message) {
|
|
53
|
+
const record = asRecord(value);
|
|
54
|
+
if (!record)
|
|
55
|
+
throw new ApiError(502, "UPSTREAM", message);
|
|
56
|
+
return record;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=upstream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream.js","sourceRoot":"","sources":["../src/upstream.ts"],"names":[],"mappings":"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"}
|