@vrplatform/api 1.3.1 → 2.0.0-experimental.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.
- package/build/main/cache.d.ts +2 -5
- package/build/main/cache.js.map +1 -1
- package/build/main/client-v2.d.ts +15 -0
- package/build/main/client-v2.js +96 -0
- package/build/main/client-v2.js.map +1 -0
- package/build/main/client.js +0 -6
- package/build/main/client.js.map +1 -1
- package/build/main/error.d.ts +2 -1
- package/build/main/error.js +1 -3
- package/build/main/error.js.map +1 -1
- package/build/main/generated/v1.d.ts +18460 -14526
- package/build/main/generated/v1.js.map +1 -1
- package/build/main/generated/v2.d.ts +20289 -0
- package/build/main/generated/v2.js +7 -0
- package/build/main/generated/v2.js.map +1 -0
- package/build/main/index.d.ts +5 -3
- package/build/main/index.js +26 -1
- package/build/main/index.js.map +1 -1
- package/build/main/ingest-compat/index.d.ts +13 -0
- package/build/main/ingest-compat/index.js +92 -0
- package/build/main/ingest-compat/index.js.map +1 -0
- package/build/main/ingest-compat/map.d.ts +6 -0
- package/build/main/ingest-compat/map.js +67 -0
- package/build/main/ingest-compat/map.js.map +1 -0
- package/build/main/ingest-compat/types.d.ts +7 -0
- package/build/main/ingest-compat/types.js +3 -0
- package/build/main/ingest-compat/types.js.map +1 -0
- package/build/main/tsconfig.main.tsbuildinfo +1 -1
- package/build/main/types-v2.d.ts +60 -0
- package/build/main/types-v2.js +3 -0
- package/build/main/types-v2.js.map +1 -0
- package/build/module/cache.d.ts +2 -5
- package/build/module/cache.js.map +1 -1
- package/build/module/client-v2.d.ts +15 -0
- package/build/module/client-v2.js +57 -0
- package/build/module/client-v2.js.map +1 -0
- package/build/module/client.js +0 -6
- package/build/module/client.js.map +1 -1
- package/build/module/error.d.ts +2 -1
- package/build/module/error.js +1 -3
- package/build/module/error.js.map +1 -1
- package/build/module/generated/v1.d.ts +18460 -14526
- package/build/module/generated/v1.js.map +1 -1
- package/build/module/generated/v2.d.ts +20289 -0
- package/build/module/generated/v2.js +6 -0
- package/build/module/generated/v2.js.map +1 -0
- package/build/module/index.d.ts +5 -3
- package/build/module/index.js +3 -1
- package/build/module/index.js.map +1 -1
- package/build/module/ingest-compat/index.d.ts +13 -0
- package/build/module/ingest-compat/index.js +75 -0
- package/build/module/ingest-compat/index.js.map +1 -0
- package/build/module/ingest-compat/map.d.ts +6 -0
- package/build/module/ingest-compat/map.js +64 -0
- package/build/module/ingest-compat/map.js.map +1 -0
- package/build/module/ingest-compat/types.d.ts +7 -0
- package/build/module/ingest-compat/types.js +2 -0
- package/build/module/ingest-compat/types.js.map +1 -0
- package/build/module/tsconfig.esm.tsbuildinfo +1 -1
- package/build/module/types-v2.d.ts +60 -0
- package/build/module/types-v2.js +2 -0
- package/build/module/types-v2.js.map +1 -0
- package/package.json +28 -21
- package/src/cache.ts +2 -2
- package/src/client-v2.ts +92 -0
- package/src/client.ts +2 -8
- package/src/error.ts +3 -4
- package/src/generated/v1.ts +18460 -14526
- package/src/generated/v2.ts +20290 -0
- package/src/index.ts +5 -3
- package/src/types-v2.ts +93 -0
- package/src/generated/openapi-fetch.ts +0 -433
- package/src/ingest/index.ts +0 -227
- package/src/ingest/types.ts +0 -91
package/build/main/cache.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
value: T;
|
|
3
|
-
expiresAt: number;
|
|
4
|
-
};
|
|
5
|
-
export type CacheResult<T, A> = {
|
|
1
|
+
type CacheResult<T, A> = {
|
|
6
2
|
current: (arg: A) => Promise<T>;
|
|
7
3
|
invalidate: () => void;
|
|
8
4
|
};
|
|
9
5
|
export declare function useCache<T, A>(fetchFn: (arg: A) => Promise<T>, expiryTimeMs: number): CacheResult<T, A>;
|
|
6
|
+
export {};
|
package/build/main/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"src/","sources":["cache.ts"],"names":[],"mappings":";;AAUA,4BA6CC;AA7CD,SAAgB,QAAQ,CACtB,OAA+B,EAC/B,YAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEpD,MAAM,cAAc,GAAG,KAAK,EAAE,GAAM,EAAc,EAAE;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,yCAAyC;QACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;YAChD,OAAO,WAAW,CAAC,KAAK,CAAC;QAC3B,CAAC;QAED,0EAA0E;QAC1E,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;QAE5C,kBAAkB;QAClB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC;YACjC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACrB,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;aACrC,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,GAAG,EAAE;YACf,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,cAAc;KACxB,CAAC;AACJ,CAAC","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"src/","sources":["cache.ts"],"names":[],"mappings":";;AAUA,4BA6CC;AA7CD,SAAgB,QAAQ,CACtB,OAA+B,EAC/B,YAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEpD,MAAM,cAAc,GAAG,KAAK,EAAE,GAAM,EAAc,EAAE;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,yCAAyC;QACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;YAChD,OAAO,WAAW,CAAC,KAAK,CAAC;QAC3B,CAAC;QAED,0EAA0E;QAC1E,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;QAE5C,kBAAkB;QAClB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC;YACjC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACrB,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;aACrC,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,GAAG,EAAE;YACf,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,cAAc;KACxB,CAAC;AACJ,CAAC","sourcesContent":["type CacheEntry<T> = {\n value: T;\n expiresAt: number;\n};\n\ntype CacheResult<T, A> = {\n current: (arg: A) => Promise<T>;\n invalidate: () => void;\n};\n\nexport function useCache<T, A>(\n fetchFn: (arg: A) => Promise<T>,\n expiryTimeMs: number\n): CacheResult<T, A> {\n const cacheMap = new Map<string, CacheEntry<T>>();\n const fetchPromises = new Map<string, Promise<T>>();\n\n const getCachedValue = async (arg: A): Promise<T> => {\n const cacheKey = JSON.stringify(arg);\n const now = Date.now();\n\n // If cache is valid, return cached value\n const cachedEntry = cacheMap.get(cacheKey);\n if (cachedEntry && now <= cachedEntry.expiresAt) {\n return cachedEntry.value;\n }\n\n // If there's already a fetch in progress for this key, return its promise\n const existingPromise = fetchPromises.get(cacheKey);\n if (existingPromise) return existingPromise;\n\n // Start new fetch\n try {\n const promise = fetchFn(arg);\n fetchPromises.set(cacheKey, promise);\n\n const freshValue = await promise;\n cacheMap.set(cacheKey, {\n value: freshValue,\n expiresAt: Date.now() + expiryTimeMs,\n });\n\n return freshValue;\n } finally {\n fetchPromises.delete(cacheKey);\n }\n };\n\n return {\n invalidate: () => {\n cacheMap.clear();\n fetchPromises.clear();\n },\n current: getCachedValue,\n };\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type RetryableFetchParams } from '@vrplatform/utils';
|
|
2
|
+
import type { ApiClientAuth } from './types';
|
|
3
|
+
import type { ApiClientV2 } from './types-v2';
|
|
4
|
+
export declare function useApiClientV2({ baseUrl: base, local, auth, sessionId: sid, testing, headers: h, ...retryableFetchParams }: {
|
|
5
|
+
attempts?: number;
|
|
6
|
+
auth?: ApiClientAuth | (() => ApiClientAuth);
|
|
7
|
+
baseUrl?: string;
|
|
8
|
+
sessionId?: string;
|
|
9
|
+
local?: boolean | number;
|
|
10
|
+
headers?: Record<string, string> | (() => Record<string, string>);
|
|
11
|
+
testing?: {
|
|
12
|
+
overwriteUri?: string;
|
|
13
|
+
getOverwriteTimestamp?: () => number | undefined;
|
|
14
|
+
};
|
|
15
|
+
} & RetryableFetchParams): ApiClientV2;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.useApiClientV2 = useApiClientV2;
|
|
40
|
+
const Sentry = __importStar(require("@sentry/core"));
|
|
41
|
+
const utils_1 = require("@vrplatform/utils");
|
|
42
|
+
const openapi_fetch_1 = __importDefault(require("openapi-fetch"));
|
|
43
|
+
const cache_1 = require("./cache");
|
|
44
|
+
const sec_1 = require("./sec");
|
|
45
|
+
function useApiClientV2({ baseUrl: base, local, auth, sessionId: sid, testing, headers: h, ...retryableFetchParams }) {
|
|
46
|
+
const baseUrl = (local
|
|
47
|
+
? `http://localhost:${typeof local === 'number' ? local : 8877}`
|
|
48
|
+
: base) || 'https://api.vrplatform.app';
|
|
49
|
+
const sessionId = sid || crypto.randomUUID();
|
|
50
|
+
const cache = (0, cache_1.useCache)(async (v) => (0, sec_1.generateApiKeySec)(v, testing?.getOverwriteTimestamp?.()), 60000);
|
|
51
|
+
const retryableFetch = (0, utils_1.useRetryableFetch)({
|
|
52
|
+
...retryableFetchParams,
|
|
53
|
+
onRetry(arg) {
|
|
54
|
+
cache.invalidate();
|
|
55
|
+
if (retryableFetchParams.onRetry)
|
|
56
|
+
retryableFetchParams.onRetry(arg);
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
const trace = Sentry.getTraceData();
|
|
60
|
+
const client = (0, openapi_fetch_1.default)({
|
|
61
|
+
baseUrl,
|
|
62
|
+
fetch(req) {
|
|
63
|
+
return retryableFetch(async () => {
|
|
64
|
+
let clone = req.clone();
|
|
65
|
+
if (testing?.overwriteUri)
|
|
66
|
+
clone = new Request(testing.overwriteUri, clone);
|
|
67
|
+
const a = (typeof auth === 'function' ? auth() : auth) || {};
|
|
68
|
+
if (sessionId)
|
|
69
|
+
clone.headers.set('X-Session-Id', sessionId);
|
|
70
|
+
if (a.sec)
|
|
71
|
+
clone.headers.set('X-Api-Key', `Sec ${await cache.current(a.sec)}`);
|
|
72
|
+
if (a.apiKey)
|
|
73
|
+
clone.headers.set('X-Api-Key', a.apiKey);
|
|
74
|
+
if (a.tenantId)
|
|
75
|
+
clone.headers.set('X-Team-Id', a.tenantId);
|
|
76
|
+
if (a.accessToken)
|
|
77
|
+
clone.headers.set('Authorization', a.accessToken.startsWith('Bearer ')
|
|
78
|
+
? a.accessToken
|
|
79
|
+
: `Bearer ${a.accessToken}`);
|
|
80
|
+
const additionalHeaders = h ? (typeof h === 'function' ? h() : h) : {};
|
|
81
|
+
for (const key in additionalHeaders) {
|
|
82
|
+
clone.headers.set(key, additionalHeaders[key]);
|
|
83
|
+
}
|
|
84
|
+
if (trace['sentry-trace'])
|
|
85
|
+
clone.headers.set('sentry-trace', trace['sentry-trace']);
|
|
86
|
+
if (trace.baggage)
|
|
87
|
+
clone.headers.set('baggage', trace.baggage);
|
|
88
|
+
return clone;
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
return Object.assign(client, {
|
|
93
|
+
sessionId,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=client-v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-v2.js","sourceRoot":"src/","sources":["client-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Sentry from '@sentry/core';\nimport {\n type RetryableFetchParams,\n useRetryableFetch,\n} from '@vrplatform/utils';\nimport createClient from 'openapi-fetch';\nimport { useCache } from './cache';\nimport type { paths as pathsV2 } from './generated/v2';\nimport { generateApiKeySec } from './sec';\nimport type { ApiClientAuth } from './types';\nimport type { ApiClientV2 } from './types-v2';\n\nexport function useApiClientV2({\n baseUrl: base,\n local,\n auth,\n sessionId: sid,\n testing,\n headers: h,\n ...retryableFetchParams\n}: {\n attempts?: number;\n auth?: ApiClientAuth | (() => ApiClientAuth);\n baseUrl?: string;\n sessionId?: string;\n local?: boolean | number;\n headers?: Record<string, string> | (() => Record<string, string>);\n testing?: {\n overwriteUri?: string;\n getOverwriteTimestamp?: () => number | undefined;\n };\n} & RetryableFetchParams): ApiClientV2 {\n const baseUrl =\n (local\n ? `http://localhost:${typeof local === 'number' ? local : 8877}`\n : base) || 'https://api.vrplatform.app';\n\n const sessionId = sid || crypto.randomUUID();\n const cache = useCache(\n async (v: string) =>\n generateApiKeySec(v, testing?.getOverwriteTimestamp?.()),\n 60_000\n );\n\n const retryableFetch = useRetryableFetch({\n ...retryableFetchParams,\n onRetry(arg) {\n cache.invalidate();\n if (retryableFetchParams.onRetry) retryableFetchParams.onRetry(arg);\n },\n });\n\n const trace = Sentry.getTraceData();\n const client = createClient<pathsV2>({\n baseUrl,\n fetch(req: any) {\n return retryableFetch(async () => {\n let clone: any = req.clone();\n if (testing?.overwriteUri)\n clone = new Request(testing.overwriteUri, clone);\n\n const a = (typeof auth === 'function' ? auth() : auth) || {};\n if (sessionId) clone.headers.set('X-Session-Id', sessionId);\n if (a.sec)\n clone.headers.set('X-Api-Key', `Sec ${await cache.current(a.sec)}`);\n if (a.apiKey) clone.headers.set('X-Api-Key', a.apiKey);\n if (a.tenantId) clone.headers.set('X-Team-Id', a.tenantId);\n if (a.accessToken)\n clone.headers.set(\n 'Authorization',\n a.accessToken.startsWith('Bearer ')\n ? a.accessToken\n : `Bearer ${a.accessToken}`\n );\n const additionalHeaders = h ? (typeof h === 'function' ? h() : h) : {};\n for (const key in additionalHeaders) {\n clone.headers.set(key, additionalHeaders[key]);\n }\n\n if (trace['sentry-trace'])\n clone.headers.set('sentry-trace', trace['sentry-trace']);\n if (trace.baggage) clone.headers.set('baggage', trace.baggage);\n\n return clone;\n });\n },\n });\n\n return Object.assign(client, {\n sessionId,\n });\n}\n"]}
|
package/build/main/client.js
CHANGED
|
@@ -62,12 +62,6 @@ testing, headers: h, ...retryableFetchParams }) {
|
|
|
62
62
|
const trace = Sentry.getTraceData();
|
|
63
63
|
const client = (0, openapi_fetch_1.default)({
|
|
64
64
|
baseUrl,
|
|
65
|
-
querySerializer: {
|
|
66
|
-
array: {
|
|
67
|
-
explode: false,
|
|
68
|
-
style: 'form',
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
65
|
fetch(req) {
|
|
72
66
|
return retryableFetch(async () => {
|
|
73
67
|
let clone = req.clone();
|
package/build/main/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"src/","sources":["client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"src/","sources":["client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,oCAiFC;AA5FD,qDAAuC;AACvC,6CAG2B;AAC3B,kEAAyC;AACzC,mCAAmC;AAEnC,+BAA0C;AAG1C,SAAgB,YAAY,CAAC,EAC3B,OAAO,EAAE,IAAI,EACb,KAAK,EACL,IAAI,EACJ,SAAS,EAAE,GAAG;AACd,cAAc;AACd,OAAO,EACP,OAAO,EAAE,CAAC,EACV,GAAG,oBAAoB,EAYD;IACtB,MAAM,OAAO,GACX,CAAC,KAAK;QACJ,CAAC,CAAC,oBAAoB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QAChE,CAAC,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC;IAE5C,MAAM,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7C,sEAAsE;IACtE,MAAM,KAAK,GAAG,IAAA,gBAAQ,EACpB,KAAK,EAAE,CAAS,EAAE,EAAE,CAClB,IAAA,uBAAiB,EAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,CAAC,EAC1D,KAAM,CACP,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,yBAAiB,EAAC;QACvC,GAAG,oBAAoB;QACvB,OAAO,CAAC,GAAG;YACT,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,oBAAoB,CAAC,OAAO;gBAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtE,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAQ;QACjC,OAAO;QACP,KAAK,CAAC,GAAQ;YACZ,OAAO,cAAc,CAAC,KAAK,IAAI,EAAE;gBAC/B,IAAI,KAAK,GAAQ,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,OAAO,EAAE,YAAY;oBACvB,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAEnD,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC7D,IAAI,SAAS;oBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;gBAC5D,IAAI,CAAC,CAAC,GAAG;oBACP,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtE,IAAI,CAAC,CAAC,MAAM;oBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBACvD,IAAI,CAAC,CAAC,QAAQ;oBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC3D,IAAI,CAAC,CAAC,WAAW;oBACf,KAAK,CAAC,OAAO,CAAC,GAAG,CACf,eAAe,EACf,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;wBACjC,CAAC,CAAC,CAAC,CAAC,WAAW;wBACf,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAC9B,CAAC;gBACJ,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBACpC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjD,CAAC;gBAED,IAAI,KAAK,CAAC,cAAc,CAAC;oBACvB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC3D,IAAI,KAAK,CAAC,OAAO;oBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE/D,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,aAAa,GAAc,MAAa,CAAC;IAC/C,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import * as Sentry from '@sentry/core';\nimport {\n type RetryableFetchParams,\n useRetryableFetch,\n} from '@vrplatform/utils';\nimport createClient from 'openapi-fetch';\nimport { useCache } from './cache';\nimport type { paths } from './generated/v1';\nimport { generateApiKeySec } from './sec';\nimport type { ApiClient, ApiClientAuth } from './types';\n\nexport function useApiClient({\n baseUrl: base,\n local,\n auth,\n sessionId: sid,\n // headers: h,\n testing,\n headers: h,\n ...retryableFetchParams\n}: {\n attempts?: number;\n auth?: ApiClientAuth | (() => ApiClientAuth);\n baseUrl?: string;\n sessionId?: string;\n local?: boolean | number;\n headers?: Record<string, string> | (() => Record<string, string>);\n testing?: {\n overwriteUri?: string;\n getOverwriteTimestamp?: () => number | undefined;\n };\n} & RetryableFetchParams) {\n const baseUrl =\n (local\n ? `http://localhost:${typeof local === 'number' ? local : 8877}`\n : base) || 'https://api.vrplatform.app';\n\n const sessionId = sid || crypto.randomUUID();\n // cache the sec key for 1 minute (its valid for 5 minutes on the API)\n const cache = useCache(\n async (v: string) =>\n generateApiKeySec(v, testing?.getOverwriteTimestamp?.()),\n 60_000\n );\n\n const retryableFetch = useRetryableFetch({\n ...retryableFetchParams,\n onRetry(arg) {\n cache.invalidate();\n if (retryableFetchParams.onRetry) retryableFetchParams.onRetry(arg);\n },\n });\n\n const trace = Sentry.getTraceData();\n const client = createClient<paths>({\n baseUrl,\n fetch(req: any) {\n return retryableFetch(async () => {\n let clone: any = req.clone();\n if (testing?.overwriteUri)\n clone = new Request(testing.overwriteUri, clone);\n\n const a = (typeof auth === 'function' ? auth() : auth) || {};\n if (sessionId) clone.headers.set('X-Session-Id', sessionId);\n if (a.sec)\n clone.headers.set('X-Api-Key', `Sec ${await cache.current(a.sec)}`);\n if (a.apiKey) clone.headers.set('X-Api-Key', a.apiKey);\n if (a.tenantId) clone.headers.set('X-Team-Id', a.tenantId);\n if (a.accessToken)\n clone.headers.set(\n 'Authorization',\n a.accessToken.startsWith('Bearer ')\n ? a.accessToken\n : `Bearer ${a.accessToken}`\n );\n const additionalHeaders = h ? (typeof h === 'function' ? h() : h) : {};\n for (const key in additionalHeaders) {\n clone.headers.set(key, additionalHeaders[key]);\n }\n\n if (trace['sentry-trace'])\n clone.headers.set('sentry-trace', trace['sentry-trace']);\n if (trace.baggage) clone.headers.set('baggage', trace.baggage);\n\n return clone;\n });\n },\n });\n\n const sessionClient: ApiClient = client as any;\n sessionClient.sessionId = sessionId;\n return sessionClient;\n}\n"]}
|
package/build/main/error.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { FetchResponse } from '
|
|
1
|
+
import type { FetchResponse } from 'openapi-fetch';
|
|
2
2
|
type E = {
|
|
3
3
|
code: string;
|
|
4
4
|
message: string;
|
|
5
5
|
issues?: {
|
|
6
6
|
message: string;
|
|
7
|
+
path?: Array<string | number>;
|
|
7
8
|
}[];
|
|
8
9
|
context?: any;
|
|
9
10
|
stack?: any;
|
package/build/main/error.js
CHANGED
|
@@ -9,9 +9,7 @@ class ApiClientError extends Error {
|
|
|
9
9
|
error.message = [
|
|
10
10
|
error.code,
|
|
11
11
|
error.issues
|
|
12
|
-
?.map((x) => [x.message, x.path?.join('->')]
|
|
13
|
-
.filter(utils_1.hasValue)
|
|
14
|
-
.join(' on '))
|
|
12
|
+
?.map((x) => [x.message, x.path?.join('->')].filter(utils_1.hasValue).join(' on '))
|
|
15
13
|
.join(', '),
|
|
16
14
|
]
|
|
17
15
|
.filter(utils_1.hasValue)
|
package/build/main/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"src/","sources":["error.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"src/","sources":["error.ts"],"names":[],"mappings":";;;AA6CA,oCAoBC;AAjED,6CAA6C;AAa7C,MAAa,cAAe,SAAQ,KAAK;IAMvC,YAAmB,KAAQ;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO;YAChB,KAAK,CAAC,OAAO,GAAG;gBACd,KAAK,CAAC,IAAI;gBACV,KAAK,CAAC,MAAM;oBACV,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACV,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC9D;qBACA,IAAI,CAAC,IAAI,CAAC;aACd;iBACE,MAAM,CAAC,gBAAQ,CAAC;iBAChB,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAZJ,UAAK,GAAL,KAAK,CAAG;QAczB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5C,CAAC;CACF;AAzBD,wCAyBC;AAOD,SAAgB,YAAY,CAC1B,QAAwB;IAExB,IAAI,QAAQ,YAAY,OAAO,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,KAAK,GAAM,QAAQ,CAAC,KAAK,CAAC;YAEhC,IAAI,KAAK;gBAAE,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAM,QAAQ,CAAC,KAAK,CAAC;IAEhC,IAAI,KAAK;QAAE,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC","sourcesContent":["import { hasValue } from '@vrplatform/utils';\nimport type { FetchResponse } from 'openapi-fetch';\n\ntype E = {\n code: string;\n message: string;\n issues?: {\n message: string;\n path?: Array<string | number>;\n }[];\n context?: any;\n stack?: any;\n};\nexport class ApiClientError extends Error {\n code: string;\n issues: {\n message: string;\n }[];\n context: any;\n constructor(public error: E) {\n if (!error.message)\n error.message = [\n error.code,\n error.issues\n ?.map((x) =>\n [x.message, x.path?.join('->')].filter(hasValue).join(' on ')\n )\n .join(', '),\n ]\n .filter(hasValue)\n .join(': ');\n super(error.message);\n\n this.code = error.code;\n this.issues = error.issues || [];\n this.context = error.context || {};\n if (error.stack) this.stack = error.stack;\n }\n}\nexport function throwIfError<T extends FetchResponse<any, any, any>>(\n response: T\n): NonNullable<T['data']>;\nexport function throwIfError<T extends FetchResponse<any, any, any>>(\n response: Promise<T>\n): Promise<NonNullable<T['data']>>;\nexport function throwIfError<T extends FetchResponse<any, any, any>>(\n response: Promise<T> | T\n): Promise<NonNullable<T['data']>> | NonNullable<T['data']> {\n if (response instanceof Promise) {\n return response.then((response) => {\n if (response.response.status === 503) {\n throw new Error('Worker resources exceeded.');\n }\n\n const error: E = response.error;\n\n if (error) throw new ApiClientError(error);\n return response.data;\n });\n }\n\n const error: E = response.error;\n\n if (error) throw new ApiClientError(error);\n return response.data;\n}\n"]}
|