@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/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { useIngest } from './ingest';
|
|
2
1
|
import type { ApiClient } from './types';
|
|
2
|
+
import type { ApiClientV2 } from './types-v2';
|
|
3
3
|
export * from './client';
|
|
4
|
+
export * from './client-v2';
|
|
4
5
|
export * from './error';
|
|
5
6
|
export * from './generated/v1';
|
|
6
|
-
export * from './
|
|
7
|
+
export * as v2 from './generated/v2';
|
|
7
8
|
export * from './types';
|
|
8
|
-
export
|
|
9
|
+
export * from './types-v2';
|
|
9
10
|
export type VRPlatformApi = ApiClient;
|
|
11
|
+
export type VRPlatformApiV2 = ApiClientV2;
|
package/build/main/index.js
CHANGED
|
@@ -10,13 +10,38 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
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
|
+
});
|
|
13
18
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
20
|
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
16
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.v2 = void 0;
|
|
17
40
|
__exportStar(require("./client"), exports);
|
|
41
|
+
__exportStar(require("./client-v2"), exports);
|
|
18
42
|
__exportStar(require("./error"), exports);
|
|
19
43
|
__exportStar(require("./generated/v1"), exports);
|
|
20
|
-
|
|
44
|
+
exports.v2 = __importStar(require("./generated/v2"));
|
|
21
45
|
__exportStar(require("./types"), exports);
|
|
46
|
+
__exportStar(require("./types-v2"), exports);
|
|
22
47
|
//# sourceMappingURL=index.js.map
|
package/build/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,iDAA+B;AAC/B,qDAAqC;AACrC,0CAAwB;AACxB,6CAA2B","sourcesContent":["import type { ApiClient } from './types';\nimport type { ApiClientV2 } from './types-v2';\n\nexport * from './client';\nexport * from './client-v2';\nexport * from './error';\nexport * from './generated/v1';\nexport * as v2 from './generated/v2';\nexport * from './types';\nexport * from './types-v2';\n\nexport type VRPlatformApi = ApiClient;\nexport type VRPlatformApiV2 = ApiClientV2;\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type IngestArg, type IngestFnArg, type PartialBy, type Source } from '../ingest';
|
|
2
|
+
import type { ApiClient } from '../types';
|
|
3
|
+
import type { ListingInput, PaymentInput, ReservationInput } from './types';
|
|
4
|
+
export * from './map';
|
|
5
|
+
export * from './types';
|
|
6
|
+
export declare function useIngestCompat(api: ApiClient, config: IngestArg): {
|
|
7
|
+
api: ApiClient;
|
|
8
|
+
readonly sessionId: string;
|
|
9
|
+
sources(changes: Source[], configOverwrites?: IngestFnArg): Promise<import("../ingest").TypedResponseData<undefined>[] | undefined>;
|
|
10
|
+
reservations(changes: PartialBy<Source<ReservationInput>, "type">[], configOverwrites?: IngestFnArg): Promise<import("../ingest").TypedResponseData<ReservationInput>[]>;
|
|
11
|
+
payments(changes: PartialBy<Source<PaymentInput>, "type">[], configOverwrites?: IngestFnArg): Promise<import("../ingest").TypedResponseData<PaymentInput>[] | undefined>;
|
|
12
|
+
listings(changes: PartialBy<Source<ListingInput>, "type">[], configOverwrites?: IngestFnArg): Promise<import("../ingest").TypedResponseData<ListingInput>[] | undefined>;
|
|
13
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useIngestCompat = useIngestCompat;
|
|
18
|
+
const ingest_1 = require("../ingest");
|
|
19
|
+
const map_1 = require("./map");
|
|
20
|
+
__exportStar(require("./map"), exports);
|
|
21
|
+
__exportStar(require("./types"), exports);
|
|
22
|
+
function useIngestCompat(api, config) {
|
|
23
|
+
const post = (0, ingest_1.usePostSources)(api, config);
|
|
24
|
+
return {
|
|
25
|
+
api,
|
|
26
|
+
get sessionId() {
|
|
27
|
+
return api.sessionId;
|
|
28
|
+
},
|
|
29
|
+
async sources(changes, configOverwrites) {
|
|
30
|
+
if (!changes.length)
|
|
31
|
+
return undefined;
|
|
32
|
+
return await post(changes, configOverwrites);
|
|
33
|
+
},
|
|
34
|
+
async reservations(changes, configOverwrites) {
|
|
35
|
+
if (!changes.length)
|
|
36
|
+
return [];
|
|
37
|
+
return await post(changes.map(({ transform, ...source }) => {
|
|
38
|
+
const data = map_1.mapTransform.reservation(transform.data);
|
|
39
|
+
return {
|
|
40
|
+
...source,
|
|
41
|
+
type: source.type || 'reservation',
|
|
42
|
+
description: source.description || data.confirmationCode,
|
|
43
|
+
uniqueRef: source.uniqueRef || data.uniqueRef,
|
|
44
|
+
date: source.date || data.bookedAt,
|
|
45
|
+
status: source.status || 'active',
|
|
46
|
+
transform: {
|
|
47
|
+
data,
|
|
48
|
+
type: 'reservation',
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}), configOverwrites);
|
|
52
|
+
},
|
|
53
|
+
async payments(changes, configOverwrites) {
|
|
54
|
+
if (!changes.length)
|
|
55
|
+
return undefined;
|
|
56
|
+
return await post(changes.map(({ transform, ...source }) => {
|
|
57
|
+
const data = map_1.mapTransform.payment(transform.data);
|
|
58
|
+
return {
|
|
59
|
+
...source,
|
|
60
|
+
type: source.type || 'payment',
|
|
61
|
+
description: source.description || data.description,
|
|
62
|
+
uniqueRef: source.uniqueRef || data.uniqueRef,
|
|
63
|
+
date: source.date || data.paidAt,
|
|
64
|
+
status: source.status || 'active',
|
|
65
|
+
transform: {
|
|
66
|
+
data,
|
|
67
|
+
type: 'payment',
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}), configOverwrites);
|
|
71
|
+
},
|
|
72
|
+
async listings(changes, configOverwrites) {
|
|
73
|
+
if (!changes.length)
|
|
74
|
+
return undefined;
|
|
75
|
+
return await post(changes.map(({ transform, ...source }) => {
|
|
76
|
+
const data = map_1.mapTransform.listing(transform.data);
|
|
77
|
+
return {
|
|
78
|
+
...source,
|
|
79
|
+
type: source.type || 'listing',
|
|
80
|
+
description: source.description || data.name,
|
|
81
|
+
uniqueRef: source.uniqueRef || data.uniqueRef,
|
|
82
|
+
status: source.status || 'active',
|
|
83
|
+
transform: {
|
|
84
|
+
data,
|
|
85
|
+
type: 'listing',
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}), configOverwrites);
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["ingest-compat/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type IngestArg,\n type IngestFnArg,\n type PartialBy,\n type Source,\n usePostSources,\n} from '../ingest';\nimport type { ApiClient } from '../types';\nimport { mapTransform } from './map';\nimport type { ListingInput, PaymentInput, ReservationInput } from './types';\n\nexport * from './map';\nexport * from './types';\n\nexport function useIngestCompat(api: ApiClient, config: IngestArg) {\n const post = usePostSources(api, config);\n return {\n api,\n get sessionId() {\n return api.sessionId;\n },\n async sources(changes: Source[], configOverwrites?: IngestFnArg) {\n if (!changes.length) return undefined;\n return await post(changes, configOverwrites);\n },\n async reservations(\n changes: PartialBy<Source<ReservationInput>, 'type'>[],\n configOverwrites?: IngestFnArg\n ) {\n if (!changes.length) return [];\n return await post<ReservationInput>(\n changes.map(({ transform, ...source }) => {\n const data = mapTransform.reservation(transform.data);\n return {\n ...source,\n type: source.type || 'reservation',\n description: source.description || data.confirmationCode,\n uniqueRef: source.uniqueRef || data.uniqueRef!,\n date: source.date || data.bookedAt,\n status: source.status || 'active',\n transform: {\n data,\n type: 'reservation',\n },\n };\n }),\n configOverwrites\n );\n },\n async payments(\n changes: PartialBy<Source<PaymentInput>, 'type'>[],\n configOverwrites?: IngestFnArg\n ) {\n if (!changes.length) return undefined;\n return await post<PaymentInput>(\n changes.map(({ transform, ...source }) => {\n const data = mapTransform.payment(transform.data);\n return {\n ...source,\n type: source.type || 'payment',\n description: source.description || data.description,\n uniqueRef: source.uniqueRef || data.uniqueRef!,\n date: source.date || data.paidAt,\n status: source.status || 'active',\n transform: {\n data,\n type: 'payment',\n },\n };\n }),\n configOverwrites\n );\n },\n async listings(\n changes: PartialBy<Source<ListingInput>, 'type'>[],\n configOverwrites?: IngestFnArg\n ) {\n if (!changes.length) return undefined;\n return await post<ListingInput>(\n changes.map(({ transform, ...source }) => {\n const data = mapTransform.listing(transform.data);\n return {\n ...source,\n type: source.type || 'listing',\n description: source.description || data.name,\n uniqueRef: source.uniqueRef || data.uniqueRef!,\n status: source.status || 'active',\n transform: {\n data,\n type: 'listing',\n },\n };\n }),\n configOverwrites\n );\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ListingInput, ListingOutput, PaymentInput, PaymentOutput, ReservationInput, ReservationOutput } from './types';
|
|
2
|
+
export declare const mapTransform: {
|
|
3
|
+
reservation: ({ id, uniqueRef, cancelledAt, status, listingConnectionId, listingConnectionRef, guestName, checkIn, checkOut, metadata, currency, bookedAt, bookingPlatform, pmsReferenceCode, bookerName, guests, confirmationCode, paymentLines, centTotal: _, nights: __, sourceId: ___, }: ReservationInput) => ReservationOutput;
|
|
4
|
+
payment: ({ currency, description, uniqueRef, payedAt, etaAt, metadata, lines, }: PaymentInput) => PaymentOutput;
|
|
5
|
+
listing: (item: ListingInput) => ListingOutput;
|
|
6
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapTransform = void 0;
|
|
4
|
+
exports.mapTransform = {
|
|
5
|
+
reservation: ({ id, uniqueRef, cancelledAt, status, listingConnectionId, listingConnectionRef, guestName, checkIn, checkOut, metadata, currency, bookedAt, bookingPlatform, pmsReferenceCode, bookerName, guests, confirmationCode, paymentLines, centTotal: _, nights: __, sourceId: ___, }) => ({
|
|
6
|
+
id,
|
|
7
|
+
uniqueRef,
|
|
8
|
+
cancelledAt,
|
|
9
|
+
status: status === 'inactive' ? null : status,
|
|
10
|
+
listingId: listingConnectionId?.toString() || listingConnectionRef?.toString(),
|
|
11
|
+
guestName,
|
|
12
|
+
checkIn,
|
|
13
|
+
checkOut,
|
|
14
|
+
metadata,
|
|
15
|
+
currency,
|
|
16
|
+
bookedAt,
|
|
17
|
+
bookingPlatform,
|
|
18
|
+
pmsReferenceCode,
|
|
19
|
+
bookerName,
|
|
20
|
+
guests,
|
|
21
|
+
confirmationCode,
|
|
22
|
+
lines: paymentLines?.map((line) => ({
|
|
23
|
+
type: line.type2,
|
|
24
|
+
amount: line.centTotal || 0,
|
|
25
|
+
uniqueRef: line.uniqueRef,
|
|
26
|
+
description: line.description,
|
|
27
|
+
metadata: line.metadata,
|
|
28
|
+
})) || [],
|
|
29
|
+
}),
|
|
30
|
+
payment: ({ currency, description, uniqueRef, payedAt, etaAt, metadata, lines, }) => ({
|
|
31
|
+
uniqueRef,
|
|
32
|
+
metadata,
|
|
33
|
+
currency,
|
|
34
|
+
paidAt: payedAt,
|
|
35
|
+
etaAt,
|
|
36
|
+
description: description ?? 'Payment',
|
|
37
|
+
lines: lines?.map((line) => ({
|
|
38
|
+
type: line.type2,
|
|
39
|
+
amount: line.centTotal || 0,
|
|
40
|
+
uniqueRef: line.uniqueRef,
|
|
41
|
+
description: line.description,
|
|
42
|
+
metadata: line.metadata,
|
|
43
|
+
})) || [],
|
|
44
|
+
}),
|
|
45
|
+
listing: (item) => {
|
|
46
|
+
let status = item.status === 'disabled'
|
|
47
|
+
? 'inactive'
|
|
48
|
+
: item.status === 'enabled'
|
|
49
|
+
? 'active'
|
|
50
|
+
: item.status;
|
|
51
|
+
if (!item.status && item.pmsStatus) {
|
|
52
|
+
status =
|
|
53
|
+
item.pmsStatus === 'disabled' || item.pmsStatus === 'inactive'
|
|
54
|
+
? 'inactive'
|
|
55
|
+
: item.pmsStatus === 'enabled' || item.pmsStatus === 'active'
|
|
56
|
+
? 'active'
|
|
57
|
+
: null;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
name: `${item.name}`,
|
|
61
|
+
status: status || 'active',
|
|
62
|
+
uniqueRef: item.uniqueRef,
|
|
63
|
+
defaultCurrency: item.defaultCurrency,
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"src/","sources":["ingest-compat/map.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RequestBody } from '../types';\nimport type {\n ListingInput,\n ListingOutput,\n PaymentInput,\n PaymentOutput,\n ReservationInput,\n ReservationOutput,\n} from './types';\n\nexport const mapTransform = {\n reservation: ({\n id,\n uniqueRef,\n cancelledAt,\n status,\n listingConnectionId,\n listingConnectionRef,\n guestName,\n checkIn,\n checkOut,\n metadata,\n currency,\n bookedAt,\n bookingPlatform,\n pmsReferenceCode,\n bookerName,\n guests,\n confirmationCode,\n paymentLines,\n centTotal: _,\n nights: __,\n sourceId: ___,\n }: ReservationInput): ReservationOutput => ({\n id,\n uniqueRef,\n cancelledAt,\n status: status === 'inactive' ? null : status,\n listingId:\n listingConnectionId?.toString() || listingConnectionRef?.toString(),\n guestName,\n checkIn,\n checkOut,\n metadata,\n currency,\n bookedAt,\n bookingPlatform,\n pmsReferenceCode,\n bookerName,\n guests,\n confirmationCode,\n lines:\n (paymentLines as any[])?.map<\n RequestBody<'post:/reservations/batch'>['data'][0]['lines'][0]\n >((line) => ({\n type: line.type2!,\n amount: line.centTotal || 0,\n uniqueRef: line.uniqueRef,\n description: line.description,\n metadata: line.metadata,\n })) || [],\n }),\n payment: ({\n currency,\n description,\n uniqueRef,\n payedAt,\n etaAt,\n metadata,\n lines,\n }: PaymentInput): PaymentOutput => ({\n uniqueRef,\n metadata,\n currency,\n paidAt: payedAt,\n etaAt,\n description: description ?? 'Payment',\n lines:\n (lines as any[])?.map<\n RequestBody<'post:/payments/batch'>['data'][0]['lines'][0]\n >((line) => ({\n type: line.type2!,\n amount: line.centTotal || 0,\n uniqueRef: line.uniqueRef,\n description: line.description,\n metadata: line.metadata,\n })) || [],\n }),\n listing: (item: ListingInput): ListingOutput => {\n let status =\n item.status === 'disabled'\n ? 'inactive'\n : item.status === 'enabled'\n ? 'active'\n : item.status;\n if (!item.status && item.pmsStatus) {\n status =\n item.pmsStatus === 'disabled' || item.pmsStatus === 'inactive'\n ? 'inactive'\n : item.pmsStatus === 'enabled' || item.pmsStatus === 'active'\n ? 'active'\n : null;\n }\n return {\n name: `${item.name}`,\n status: status || 'active',\n uniqueRef: item.uniqueRef,\n defaultCurrency: item.defaultCurrency,\n };\n },\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RequestBody } from '../types';
|
|
2
|
+
export type ReservationInput = Record<string, any>;
|
|
3
|
+
export type ReservationOutput = RequestBody<'post:/reservations/batch'>['data'][0];
|
|
4
|
+
export type PaymentInput = Record<string, any>;
|
|
5
|
+
export type PaymentOutput = RequestBody<'post:/payments/batch'>['data'][0];
|
|
6
|
+
export type ListingInput = Record<string, any>;
|
|
7
|
+
export type ListingOutput = RequestBody<'post:/listings/batch'>['data'][0];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"src/","sources":["ingest-compat/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { RequestBody } from '../types';\n\nexport type ReservationInput = Record<string, any>;\nexport type ReservationOutput =\n RequestBody<'post:/reservations/batch'>['data'][0];\nexport type PaymentInput = Record<string, any>;\nexport type PaymentOutput = RequestBody<'post:/payments/batch'>['data'][0];\nexport type ListingInput = Record<string, any>;\nexport type ListingOutput = RequestBody<'post:/listings/batch'>['data'][0];\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../../src/cache.ts","../../src/client.ts","../../src/
|
|
1
|
+
{"root":["../../src/cache.ts","../../src/client-v2.ts","../../src/client.ts","../../src/error.ts","../../src/index.ts","../../src/sec.ts","../../src/types-v2.ts","../../src/types.ts","../../src/generated/v1.ts","../../src/generated/v2.ts"],"version":"5.9.3"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type createClient from 'openapi-fetch';
|
|
2
|
+
import type { paths as pathsV2 } from './generated/v2';
|
|
3
|
+
export type ApiClientV2 = ReturnType<typeof createClient<pathsV2>> & {
|
|
4
|
+
sessionId: string;
|
|
5
|
+
};
|
|
6
|
+
type ResponseCombinationsV2 = {
|
|
7
|
+
[Path in keyof pathsV2]: {
|
|
8
|
+
[Method in keyof pathsV2[Path]]: pathsV2[Path][Method] extends never ? never : pathsV2[Path][Method] extends {
|
|
9
|
+
responses: {
|
|
10
|
+
200: {
|
|
11
|
+
content: {
|
|
12
|
+
'application/json': unknown;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
} ? `${Method & string}:${Path}` : never;
|
|
17
|
+
}[keyof pathsV2[Path]];
|
|
18
|
+
}[keyof pathsV2];
|
|
19
|
+
export type ResponseDataV2<T extends ResponseCombinationsV2> = T extends `${infer Method}:${infer Path}` ? Path extends keyof pathsV2 ? Method extends keyof pathsV2[Path] ? pathsV2[Path][Method] extends {
|
|
20
|
+
responses: {
|
|
21
|
+
200: {
|
|
22
|
+
content: {
|
|
23
|
+
'application/json': infer Data;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
} ? Data : never : never : never : never;
|
|
28
|
+
type RequestBodyCombinationsV2 = {
|
|
29
|
+
[Path in keyof pathsV2]: {
|
|
30
|
+
[Method in keyof pathsV2[Path]]: pathsV2[Path][Method] extends never ? never : pathsV2[Path][Method] extends {
|
|
31
|
+
requestBody: {
|
|
32
|
+
content: {
|
|
33
|
+
'application/json': unknown;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
} ? `${Method & string}:${Path}` : never;
|
|
37
|
+
}[keyof pathsV2[Path]];
|
|
38
|
+
}[keyof pathsV2];
|
|
39
|
+
export type RequestBodyV2<T extends RequestBodyCombinationsV2> = T extends `${infer Method}:${infer Path}` ? Path extends keyof pathsV2 ? Method extends keyof pathsV2[Path] ? pathsV2[Path][Method] extends {
|
|
40
|
+
requestBody: {
|
|
41
|
+
content: {
|
|
42
|
+
'application/json': infer Data;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
} ? Data : never : never : never : never;
|
|
46
|
+
type RequestParamCombinationsV2 = {
|
|
47
|
+
[Path in keyof pathsV2]: {
|
|
48
|
+
[Method in keyof pathsV2[Path]]: pathsV2[Path][Method] extends never ? never : pathsV2[Path][Method] extends {
|
|
49
|
+
parameters: {
|
|
50
|
+
query?: Record<string, unknown>;
|
|
51
|
+
};
|
|
52
|
+
} ? `${Method & string}:${Path}` : never;
|
|
53
|
+
}[keyof pathsV2[Path]];
|
|
54
|
+
}[keyof pathsV2];
|
|
55
|
+
export type RequestQueryV2<T extends RequestParamCombinationsV2> = T extends `${infer Method}:${infer Path}` ? Path extends keyof pathsV2 ? Method extends keyof pathsV2[Path] ? pathsV2[Path][Method] extends {
|
|
56
|
+
parameters: {
|
|
57
|
+
query?: infer Data;
|
|
58
|
+
};
|
|
59
|
+
} ? Data : never : never : never : never;
|
|
60
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-v2.js","sourceRoot":"src/","sources":["types-v2.ts"],"names":[],"mappings":"","sourcesContent":["import type createClient from 'openapi-fetch';\nimport type { paths as pathsV2 } from './generated/v2';\n\nexport type ApiClientV2 = ReturnType<typeof createClient<pathsV2>> & {\n sessionId: string;\n};\n\ntype ResponseCombinationsV2 = {\n [Path in keyof pathsV2]: {\n [Method in keyof pathsV2[Path]]: pathsV2[Path][Method] extends never\n ? never\n : pathsV2[Path][Method] extends {\n responses: {\n 200: { content: { 'application/json': unknown } };\n };\n }\n ? `${Method & string}:${Path}`\n : never;\n }[keyof pathsV2[Path]];\n}[keyof pathsV2];\n\nexport type ResponseDataV2<T extends ResponseCombinationsV2> =\n T extends `${infer Method}:${infer Path}`\n ? Path extends keyof pathsV2\n ? Method extends keyof pathsV2[Path]\n ? pathsV2[Path][Method] extends {\n responses: {\n 200: { content: { 'application/json': infer Data } };\n };\n }\n ? Data\n : never\n : never\n : never\n : never;\n\ntype RequestBodyCombinationsV2 = {\n [Path in keyof pathsV2]: {\n [Method in keyof pathsV2[Path]]: pathsV2[Path][Method] extends never\n ? never\n : pathsV2[Path][Method] extends {\n requestBody: {\n content: { 'application/json': unknown };\n };\n }\n ? `${Method & string}:${Path}`\n : never;\n }[keyof pathsV2[Path]];\n}[keyof pathsV2];\n\nexport type RequestBodyV2<T extends RequestBodyCombinationsV2> =\n T extends `${infer Method}:${infer Path}`\n ? Path extends keyof pathsV2\n ? Method extends keyof pathsV2[Path]\n ? pathsV2[Path][Method] extends {\n requestBody: {\n content: { 'application/json': infer Data };\n };\n }\n ? Data\n : never\n : never\n : never\n : never;\n\ntype RequestParamCombinationsV2 = {\n [Path in keyof pathsV2]: {\n [Method in keyof pathsV2[Path]]: pathsV2[Path][Method] extends never\n ? never\n : pathsV2[Path][Method] extends {\n parameters: {\n query?: Record<string, unknown>;\n };\n }\n ? `${Method & string}:${Path}`\n : never;\n }[keyof pathsV2[Path]];\n}[keyof pathsV2];\n\nexport type RequestQueryV2<T extends RequestParamCombinationsV2> =\n T extends `${infer Method}:${infer Path}`\n ? Path extends keyof pathsV2\n ? Method extends keyof pathsV2[Path]\n ? pathsV2[Path][Method] extends {\n parameters: {\n query?: infer Data;\n };\n }\n ? Data\n : never\n : never\n : never\n : never;\n"]}
|
package/build/module/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 {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"src/","sources":["cache.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,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,MAAM,UAAU,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,57 @@
|
|
|
1
|
+
import * as Sentry from '@sentry/core';
|
|
2
|
+
import { useRetryableFetch, } from '@vrplatform/utils';
|
|
3
|
+
import createClient from 'openapi-fetch';
|
|
4
|
+
import { useCache } from './cache';
|
|
5
|
+
import { generateApiKeySec } from './sec';
|
|
6
|
+
export function useApiClientV2({ baseUrl: base, local, auth, sessionId: sid, testing, headers: h, ...retryableFetchParams }) {
|
|
7
|
+
const baseUrl = (local
|
|
8
|
+
? `http://localhost:${typeof local === 'number' ? local : 8877}`
|
|
9
|
+
: base) || 'https://api.vrplatform.app';
|
|
10
|
+
const sessionId = sid || crypto.randomUUID();
|
|
11
|
+
const cache = useCache(async (v) => generateApiKeySec(v, testing?.getOverwriteTimestamp?.()), 60_000);
|
|
12
|
+
const retryableFetch = useRetryableFetch({
|
|
13
|
+
...retryableFetchParams,
|
|
14
|
+
onRetry(arg) {
|
|
15
|
+
cache.invalidate();
|
|
16
|
+
if (retryableFetchParams.onRetry)
|
|
17
|
+
retryableFetchParams.onRetry(arg);
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const trace = Sentry.getTraceData();
|
|
21
|
+
const client = createClient({
|
|
22
|
+
baseUrl,
|
|
23
|
+
fetch(req) {
|
|
24
|
+
return retryableFetch(async () => {
|
|
25
|
+
let clone = req.clone();
|
|
26
|
+
if (testing?.overwriteUri)
|
|
27
|
+
clone = new Request(testing.overwriteUri, clone);
|
|
28
|
+
const a = (typeof auth === 'function' ? auth() : auth) || {};
|
|
29
|
+
if (sessionId)
|
|
30
|
+
clone.headers.set('X-Session-Id', sessionId);
|
|
31
|
+
if (a.sec)
|
|
32
|
+
clone.headers.set('X-Api-Key', `Sec ${await cache.current(a.sec)}`);
|
|
33
|
+
if (a.apiKey)
|
|
34
|
+
clone.headers.set('X-Api-Key', a.apiKey);
|
|
35
|
+
if (a.tenantId)
|
|
36
|
+
clone.headers.set('X-Team-Id', a.tenantId);
|
|
37
|
+
if (a.accessToken)
|
|
38
|
+
clone.headers.set('Authorization', a.accessToken.startsWith('Bearer ')
|
|
39
|
+
? a.accessToken
|
|
40
|
+
: `Bearer ${a.accessToken}`);
|
|
41
|
+
const additionalHeaders = h ? (typeof h === 'function' ? h() : h) : {};
|
|
42
|
+
for (const key in additionalHeaders) {
|
|
43
|
+
clone.headers.set(key, additionalHeaders[key]);
|
|
44
|
+
}
|
|
45
|
+
if (trace['sentry-trace'])
|
|
46
|
+
clone.headers.set('sentry-trace', trace['sentry-trace']);
|
|
47
|
+
if (trace.baggage)
|
|
48
|
+
clone.headers.set('baggage', trace.baggage);
|
|
49
|
+
return clone;
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
return Object.assign(client, {
|
|
54
|
+
sessionId,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# 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/module/client.js
CHANGED
|
@@ -23,12 +23,6 @@ testing, headers: h, ...retryableFetchParams }) {
|
|
|
23
23
|
const trace = Sentry.getTraceData();
|
|
24
24
|
const client = createClient({
|
|
25
25
|
baseUrl,
|
|
26
|
-
querySerializer: {
|
|
27
|
-
array: {
|
|
28
|
-
explode: false,
|
|
29
|
-
style: 'form',
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
26
|
fetch(req) {
|
|
33
27
|
return retryableFetch(async () => {
|
|
34
28
|
let clone = req.clone();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"src/","sources":["client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG1C,MAAM,UAAU,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,QAAQ,CACpB,KAAK,EAAE,CAAS,EAAE,EAAE,CAClB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,CAAC,EAC1D,MAAM,CACP,CAAC;IAEF,MAAM,cAAc,GAAG,iBAAiB,CAAC;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,YAAY,CAAQ;QACjC,OAAO;QACP,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"src/","sources":["client.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 } 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/module/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/module/error.js
CHANGED
|
@@ -9,9 +9,7 @@ export 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(hasValue)
|
|
14
|
-
.join(' on '))
|
|
12
|
+
?.map((x) => [x.message, x.path?.join('->')].filter(hasValue).join(' on '))
|
|
15
13
|
.join(', '),
|
|
16
14
|
]
|
|
17
15
|
.filter(hasValue)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"src/","sources":["error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"src/","sources":["error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAa7C,MAAM,OAAO,cAAe,SAAQ,KAAK;IAMpB;IALnB,IAAI,CAAS;IACb,MAAM,CAEF;IACJ,OAAO,CAAM;IACb,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,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC9D;qBACA,IAAI,CAAC,IAAI,CAAC;aACd;iBACE,MAAM,CAAC,QAAQ,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;AAOD,MAAM,UAAU,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"]}
|