@missioncontrolio/client 0.0.9 → 0.0.11
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/README.md +31 -0
- package/dist/client/autoCancelOrderHandler.d.ts +7 -0
- package/dist/client/autoCancelOrderHandler.js +95 -0
- package/dist/client/clientBuilder.d.ts +22 -0
- package/dist/client/clientBuilder.js +74 -0
- package/dist/client/generated/client.d.ts +20 -0
- package/{src/client/generated/client.ts → dist/client/generated/client.js} +14 -79
- package/dist/client/generated/models/index.d.ts +282 -0
- package/dist/client/generated/models/index.js +625 -0
- package/dist/client/generated/order/cancelOrder/index.d.ts +8 -0
- package/dist/client/generated/order/cancelOrder/index.js +17 -0
- package/dist/client/generated/order/claimReservation/index.d.ts +7 -0
- package/dist/client/generated/order/claimReservation/index.js +8 -0
- package/dist/client/generated/order/claimReservation/item/index.d.ts +8 -0
- package/dist/client/generated/order/claimReservation/item/index.js +17 -0
- package/dist/client/generated/order/createOrder/index.d.ts +8 -0
- package/dist/client/generated/order/createOrder/index.js +17 -0
- package/dist/client/generated/order/index.d.ts +25 -0
- package/dist/client/generated/order/index.js +32 -0
- package/dist/client/generated/order/reportOrder/index.d.ts +8 -0
- package/dist/client/generated/order/reportOrder/index.js +17 -0
- package/dist/client/generated/partner/index.d.ts +12 -0
- package/dist/client/generated/partner/index.js +14 -0
- package/dist/client/generated/priceList/index.d.ts +12 -0
- package/dist/client/generated/priceList/index.js +14 -0
- package/dist/client/generated/product/hasStock/index.d.ts +8 -0
- package/dist/client/generated/product/hasStock/index.js +17 -0
- package/dist/client/generated/product/index.d.ts +35 -0
- package/dist/client/generated/product/index.js +42 -0
- package/dist/client/generated/product/item/index.d.ts +7 -0
- package/dist/client/generated/product/item/index.js +7 -0
- package/dist/client/generated/product/item/redemptionInstructions/index.d.ts +8 -0
- package/dist/client/generated/product/item/redemptionInstructions/index.js +15 -0
- package/dist/client/generated/publisher/index.d.ts +12 -0
- package/dist/client/generated/publisher/index.js +14 -0
- package/dist/client/generated/region/index.d.ts +14 -0
- package/dist/client/generated/region/index.js +14 -0
- package/dist/client/generated/reservation/index.d.ts +11 -0
- package/dist/client/generated/reservation/index.js +25 -0
- package/dist/client/generated/reservation/item/cancel/index.d.ts +8 -0
- package/dist/client/generated/reservation/item/cancel/index.js +14 -0
- package/dist/client/generated/reservation/item/index.d.ts +11 -0
- package/dist/client/generated/reservation/item/index.js +20 -0
- package/dist/client/generatedAssets/assetPack/index.d.ts +7 -0
- package/dist/client/generatedAssets/assetPack/index.js +8 -0
- package/dist/client/generatedAssets/assetPack/item/index.d.ts +7 -0
- package/dist/client/generatedAssets/assetPack/item/index.js +9 -0
- package/dist/client/generatedAssets/assetPack/item/item/index.d.ts +11 -0
- package/dist/client/generatedAssets/assetPack/item/item/index.js +21 -0
- package/dist/client/generatedAssets/assetPack/item/item/item/index.d.ts +8 -0
- package/dist/client/generatedAssets/assetPack/item/item/item/index.js +14 -0
- package/dist/client/generatedAssets/assetsClient.d.ts +8 -0
- package/dist/client/generatedAssets/assetsClient.js +38 -0
- package/dist/client/generatedAssets/models/index.d.ts +54 -0
- package/dist/client/generatedAssets/models/index.js +117 -0
- package/dist/client/missionControlEnvironment.d.ts +7 -0
- package/dist/client/missionControlEnvironment.js +26 -0
- package/dist/client/missionControlHandlers.d.ts +2 -0
- package/dist/client/missionControlHandlers.js +34 -0
- package/dist/client/missionControlHeaders.d.ts +3 -0
- package/dist/client/missionControlHeaders.js +3 -0
- package/dist/client/nonIdempotentPaths.d.ts +1 -0
- package/dist/client/nonIdempotentPaths.js +5 -0
- package/dist/client/partnerIdHandler.d.ts +8 -0
- package/dist/client/partnerIdHandler.js +14 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +3 -0
- package/package.json +15 -3
- package/.env.local.example +0 -9
- package/src/client/autoCancelOrderHandler.ts +0 -135
- package/src/client/clientBuilder.ts +0 -139
- package/src/client/generated/kiota-lock.json +0 -34
- package/src/client/generated/models/index.ts +0 -1723
- package/src/client/generated/order/cancelOrder/index.ts +0 -53
- package/src/client/generated/order/claimReservation/index.ts +0 -34
- package/src/client/generated/order/claimReservation/item/index.ts +0 -53
- package/src/client/generated/order/createOrder/index.ts +0 -53
- package/src/client/generated/order/index.ts +0 -112
- package/src/client/generated/order/reportOrder/index.ts +0 -53
- package/src/client/generated/partner/index.ts +0 -55
- package/src/client/generated/priceList/index.ts +0 -55
- package/src/client/generated/product/hasStock/index.ts +0 -53
- package/src/client/generated/product/index.ts +0 -119
- package/src/client/generated/publisher/index.ts +0 -55
- package/src/client/generated/region/index.ts +0 -63
- package/src/client/generated/reservation/index.ts +0 -71
- package/src/client/generated/reservation/item/cancel/index.ts +0 -48
- package/src/client/generated/reservation/item/index.ts +0 -62
- package/src/client/missionControlEnvironment.ts +0 -32
- package/src/client/missionControlHandlers.ts +0 -61
- package/src/client/missionControlHeaders.ts +0 -10
- package/src/client/nonIdempotentPaths.ts +0 -9
- package/src/client/partnerIdHandler.ts +0 -33
- package/tests/autoCancelOrderHandler.test.ts +0 -263
- package/tests/clientBuilder.test.ts +0 -154
- package/tests/integration/fixture.ts +0 -50
- package/tests/integration/partner.test.ts +0 -32
- package/tests/integration/priceList.test.ts +0 -28
- package/tests/integration/product.test.ts +0 -30
- package/tests/integration/publisher.test.ts +0 -30
- package/tests/integration/region.test.ts +0 -36
- package/tests/integration/setup.ts +0 -22
- package/tests/missionControlEnvironment.test.ts +0 -66
- package/tests/missionControlHeaders.test.ts +0 -20
- package/tsconfig.json +0 -18
- package/vitest.config.ts +0 -8
- package/vitest.integration.config.ts +0 -9
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createAssetPackDetailFromDiscriminatorValue, createProblemDetailsFromDiscriminatorValue } from '../../../../models/index.js';
|
|
2
|
+
export const WithAssetPackItemRequestBuilderUriTemplate = "{+baseurl}/AssetPack/{publisherId}/{productId}/{assetPackId}";
|
|
3
|
+
export const WithAssetPackItemRequestBuilderRequestsMetadata = {
|
|
4
|
+
get: {
|
|
5
|
+
uriTemplate: WithAssetPackItemRequestBuilderUriTemplate,
|
|
6
|
+
responseBodyContentType: "application/json, text/plain;q=0.9",
|
|
7
|
+
errorMappings: {
|
|
8
|
+
400: createProblemDetailsFromDiscriminatorValue,
|
|
9
|
+
500: createProblemDetailsFromDiscriminatorValue,
|
|
10
|
+
},
|
|
11
|
+
adapterMethodName: "send",
|
|
12
|
+
responseBodyFactory: createAssetPackDetailFromDiscriminatorValue,
|
|
13
|
+
},
|
|
14
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type AssetPackRequestBuilder } from './assetPack/index.js';
|
|
2
|
+
import { type BaseRequestBuilder, type KeysToExcludeForNavigationMetadata, type NavigationMetadata, type RequestAdapter } from '@microsoft/kiota-abstractions';
|
|
3
|
+
export interface AssetsClient extends BaseRequestBuilder<AssetsClient> {
|
|
4
|
+
get assetPack(): AssetPackRequestBuilder;
|
|
5
|
+
}
|
|
6
|
+
export declare function createAssetsClient(requestAdapter: RequestAdapter): AssetsClient;
|
|
7
|
+
export declare const AssetsClientUriTemplate = "{+baseurl}";
|
|
8
|
+
export declare const AssetsClientNavigationMetadata: Record<Exclude<keyof AssetsClient, KeysToExcludeForNavigationMetadata>, NavigationMetadata>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AssetPackRequestBuilderNavigationMetadata } from './assetPack/index.js';
|
|
2
|
+
import { apiClientProxifier } from '@microsoft/kiota-abstractions';
|
|
3
|
+
import { FormParseNodeFactory, FormSerializationWriterFactory } from '@microsoft/kiota-serialization-form';
|
|
4
|
+
import { JsonParseNodeFactory, JsonSerializationWriterFactory } from '@microsoft/kiota-serialization-json';
|
|
5
|
+
import { MultipartSerializationWriterFactory } from '@microsoft/kiota-serialization-multipart';
|
|
6
|
+
import { TextParseNodeFactory, TextSerializationWriterFactory } from '@microsoft/kiota-serialization-text';
|
|
7
|
+
export function createAssetsClient(requestAdapter) {
|
|
8
|
+
if (requestAdapter === undefined) {
|
|
9
|
+
throw new Error("requestAdapter cannot be undefined");
|
|
10
|
+
}
|
|
11
|
+
const serializationWriterFactory = requestAdapter.getSerializationWriterFactory();
|
|
12
|
+
const parseNodeFactoryRegistry = requestAdapter.getParseNodeFactory();
|
|
13
|
+
const backingStoreFactory = requestAdapter.getBackingStoreFactory();
|
|
14
|
+
if (parseNodeFactoryRegistry.registerDefaultDeserializer) {
|
|
15
|
+
parseNodeFactoryRegistry.registerDefaultDeserializer(JsonParseNodeFactory, backingStoreFactory);
|
|
16
|
+
parseNodeFactoryRegistry.registerDefaultDeserializer(TextParseNodeFactory, backingStoreFactory);
|
|
17
|
+
parseNodeFactoryRegistry.registerDefaultDeserializer(FormParseNodeFactory, backingStoreFactory);
|
|
18
|
+
}
|
|
19
|
+
if (serializationWriterFactory.registerDefaultSerializer) {
|
|
20
|
+
serializationWriterFactory.registerDefaultSerializer(JsonSerializationWriterFactory);
|
|
21
|
+
serializationWriterFactory.registerDefaultSerializer(TextSerializationWriterFactory);
|
|
22
|
+
serializationWriterFactory.registerDefaultSerializer(FormSerializationWriterFactory);
|
|
23
|
+
serializationWriterFactory.registerDefaultSerializer(MultipartSerializationWriterFactory);
|
|
24
|
+
}
|
|
25
|
+
if (requestAdapter.baseUrl === undefined || requestAdapter.baseUrl === null || requestAdapter.baseUrl === "") {
|
|
26
|
+
requestAdapter.baseUrl = "https://api.missioncontrol.io/assets/partnerApi/v1";
|
|
27
|
+
}
|
|
28
|
+
const pathParameters = {
|
|
29
|
+
"baseurl": requestAdapter.baseUrl,
|
|
30
|
+
};
|
|
31
|
+
return apiClientProxifier(requestAdapter, pathParameters, AssetsClientNavigationMetadata, undefined);
|
|
32
|
+
}
|
|
33
|
+
export const AssetsClientUriTemplate = "{+baseurl}";
|
|
34
|
+
export const AssetsClientNavigationMetadata = {
|
|
35
|
+
assetPack: {
|
|
36
|
+
navigationMetadata: AssetPackRequestBuilderNavigationMetadata,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type AdditionalDataHolder, type ApiError, type Guid, type Parsable, type ParseNode, type SerializationWriter } from '@microsoft/kiota-abstractions';
|
|
2
|
+
export interface Asset extends Parsable {
|
|
3
|
+
embargo?: Date | null;
|
|
4
|
+
fileName?: string | null;
|
|
5
|
+
folder?: string | null;
|
|
6
|
+
height?: number | null;
|
|
7
|
+
lastModified?: Date | null;
|
|
8
|
+
url?: string | null;
|
|
9
|
+
width?: number | null;
|
|
10
|
+
}
|
|
11
|
+
export interface AssetPack extends Parsable {
|
|
12
|
+
countryCodes?: string[] | null;
|
|
13
|
+
id?: string | null;
|
|
14
|
+
lastModified?: Date | null;
|
|
15
|
+
name?: string | null;
|
|
16
|
+
productId?: Guid | null;
|
|
17
|
+
productName?: string | null;
|
|
18
|
+
}
|
|
19
|
+
export interface AssetPackDetail extends Parsable {
|
|
20
|
+
assets?: Asset[] | null;
|
|
21
|
+
countryCodes?: string[] | null;
|
|
22
|
+
id?: string | null;
|
|
23
|
+
lastModified?: Date | null;
|
|
24
|
+
name?: string | null;
|
|
25
|
+
productId?: Guid | null;
|
|
26
|
+
productName?: string | null;
|
|
27
|
+
}
|
|
28
|
+
export interface AssetPackListResult extends Parsable {
|
|
29
|
+
pageCount?: number | null;
|
|
30
|
+
result?: AssetPack[] | null;
|
|
31
|
+
totalCount?: number | null;
|
|
32
|
+
}
|
|
33
|
+
export declare function createAssetFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
|
|
34
|
+
export declare function createAssetPackDetailFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
|
|
35
|
+
export declare function createAssetPackFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
|
|
36
|
+
export declare function createAssetPackListResultFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
|
|
37
|
+
export declare function createProblemDetailsFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
|
|
38
|
+
export declare function deserializeIntoAsset(asset?: Partial<Asset> | undefined): Record<string, (node: ParseNode) => void>;
|
|
39
|
+
export declare function deserializeIntoAssetPack(assetPack?: Partial<AssetPack> | undefined): Record<string, (node: ParseNode) => void>;
|
|
40
|
+
export declare function deserializeIntoAssetPackDetail(assetPackDetail?: Partial<AssetPackDetail> | undefined): Record<string, (node: ParseNode) => void>;
|
|
41
|
+
export declare function deserializeIntoAssetPackListResult(assetPackListResult?: Partial<AssetPackListResult> | undefined): Record<string, (node: ParseNode) => void>;
|
|
42
|
+
export declare function deserializeIntoProblemDetails(problemDetails?: Partial<ProblemDetails> | undefined): Record<string, (node: ParseNode) => void>;
|
|
43
|
+
export interface ProblemDetails extends AdditionalDataHolder, ApiError, Parsable {
|
|
44
|
+
detail?: string | null;
|
|
45
|
+
instance?: string | null;
|
|
46
|
+
status?: number | null;
|
|
47
|
+
title?: string | null;
|
|
48
|
+
type?: string | null;
|
|
49
|
+
}
|
|
50
|
+
export declare function serializeAsset(writer: SerializationWriter, asset?: Partial<Asset> | undefined | null, isSerializingDerivedType?: boolean): void;
|
|
51
|
+
export declare function serializeAssetPack(writer: SerializationWriter, assetPack?: Partial<AssetPack> | undefined | null, isSerializingDerivedType?: boolean): void;
|
|
52
|
+
export declare function serializeAssetPackDetail(writer: SerializationWriter, assetPackDetail?: Partial<AssetPackDetail> | undefined | null, isSerializingDerivedType?: boolean): void;
|
|
53
|
+
export declare function serializeAssetPackListResult(writer: SerializationWriter, assetPackListResult?: Partial<AssetPackListResult> | undefined | null, isSerializingDerivedType?: boolean): void;
|
|
54
|
+
export declare function serializeProblemDetails(writer: SerializationWriter, problemDetails?: Partial<ProblemDetails> | undefined | null, isSerializingDerivedType?: boolean): void;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
export function createAssetFromDiscriminatorValue(parseNode) {
|
|
2
|
+
return deserializeIntoAsset;
|
|
3
|
+
}
|
|
4
|
+
export function createAssetPackDetailFromDiscriminatorValue(parseNode) {
|
|
5
|
+
return deserializeIntoAssetPackDetail;
|
|
6
|
+
}
|
|
7
|
+
export function createAssetPackFromDiscriminatorValue(parseNode) {
|
|
8
|
+
return deserializeIntoAssetPack;
|
|
9
|
+
}
|
|
10
|
+
export function createAssetPackListResultFromDiscriminatorValue(parseNode) {
|
|
11
|
+
return deserializeIntoAssetPackListResult;
|
|
12
|
+
}
|
|
13
|
+
export function createProblemDetailsFromDiscriminatorValue(parseNode) {
|
|
14
|
+
return deserializeIntoProblemDetails;
|
|
15
|
+
}
|
|
16
|
+
export function deserializeIntoAsset(asset = {}) {
|
|
17
|
+
return {
|
|
18
|
+
"embargo": n => { asset.embargo = n.getDateValue(); },
|
|
19
|
+
"fileName": n => { asset.fileName = n.getStringValue(); },
|
|
20
|
+
"folder": n => { asset.folder = n.getStringValue(); },
|
|
21
|
+
"height": n => { asset.height = n.getNumberValue(); },
|
|
22
|
+
"lastModified": n => { asset.lastModified = n.getDateValue(); },
|
|
23
|
+
"url": n => { asset.url = n.getStringValue(); },
|
|
24
|
+
"width": n => { asset.width = n.getNumberValue(); },
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function deserializeIntoAssetPack(assetPack = {}) {
|
|
28
|
+
return {
|
|
29
|
+
"countryCodes": n => { assetPack.countryCodes = n.getCollectionOfPrimitiveValues("string"); },
|
|
30
|
+
"id": n => { assetPack.id = n.getStringValue(); },
|
|
31
|
+
"lastModified": n => { assetPack.lastModified = n.getDateValue(); },
|
|
32
|
+
"name": n => { assetPack.name = n.getStringValue(); },
|
|
33
|
+
"productId": n => { assetPack.productId = n.getGuidValue(); },
|
|
34
|
+
"productName": n => { assetPack.productName = n.getStringValue(); },
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function deserializeIntoAssetPackDetail(assetPackDetail = {}) {
|
|
38
|
+
return {
|
|
39
|
+
"assets": n => { assetPackDetail.assets = n.getCollectionOfObjectValues(createAssetFromDiscriminatorValue); },
|
|
40
|
+
"countryCodes": n => { assetPackDetail.countryCodes = n.getCollectionOfPrimitiveValues("string"); },
|
|
41
|
+
"id": n => { assetPackDetail.id = n.getStringValue(); },
|
|
42
|
+
"lastModified": n => { assetPackDetail.lastModified = n.getDateValue(); },
|
|
43
|
+
"name": n => { assetPackDetail.name = n.getStringValue(); },
|
|
44
|
+
"productId": n => { assetPackDetail.productId = n.getGuidValue(); },
|
|
45
|
+
"productName": n => { assetPackDetail.productName = n.getStringValue(); },
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function deserializeIntoAssetPackListResult(assetPackListResult = {}) {
|
|
49
|
+
return {
|
|
50
|
+
"pageCount": n => { assetPackListResult.pageCount = n.getNumberValue(); },
|
|
51
|
+
"result": n => { assetPackListResult.result = n.getCollectionOfObjectValues(createAssetPackFromDiscriminatorValue); },
|
|
52
|
+
"totalCount": n => { assetPackListResult.totalCount = n.getNumberValue(); },
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function deserializeIntoProblemDetails(problemDetails = {}) {
|
|
56
|
+
return {
|
|
57
|
+
"detail": n => { problemDetails.detail = n.getStringValue(); },
|
|
58
|
+
"instance": n => { problemDetails.instance = n.getStringValue(); },
|
|
59
|
+
"status": n => { problemDetails.status = n.getNumberValue(); },
|
|
60
|
+
"title": n => { problemDetails.title = n.getStringValue(); },
|
|
61
|
+
"type": n => { problemDetails.type = n.getStringValue(); },
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function serializeAsset(writer, asset = {}, isSerializingDerivedType = false) {
|
|
65
|
+
if (!asset || isSerializingDerivedType) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
writer.writeDateValue("embargo", asset.embargo);
|
|
69
|
+
writer.writeStringValue("fileName", asset.fileName);
|
|
70
|
+
writer.writeStringValue("folder", asset.folder);
|
|
71
|
+
writer.writeNumberValue("height", asset.height);
|
|
72
|
+
writer.writeDateValue("lastModified", asset.lastModified);
|
|
73
|
+
writer.writeStringValue("url", asset.url);
|
|
74
|
+
writer.writeNumberValue("width", asset.width);
|
|
75
|
+
}
|
|
76
|
+
export function serializeAssetPack(writer, assetPack = {}, isSerializingDerivedType = false) {
|
|
77
|
+
if (!assetPack || isSerializingDerivedType) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
writer.writeCollectionOfPrimitiveValues("countryCodes", assetPack.countryCodes);
|
|
81
|
+
writer.writeStringValue("id", assetPack.id);
|
|
82
|
+
writer.writeDateValue("lastModified", assetPack.lastModified);
|
|
83
|
+
writer.writeStringValue("name", assetPack.name);
|
|
84
|
+
writer.writeGuidValue("productId", assetPack.productId);
|
|
85
|
+
writer.writeStringValue("productName", assetPack.productName);
|
|
86
|
+
}
|
|
87
|
+
export function serializeAssetPackDetail(writer, assetPackDetail = {}, isSerializingDerivedType = false) {
|
|
88
|
+
if (!assetPackDetail || isSerializingDerivedType) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
writer.writeCollectionOfObjectValues("assets", assetPackDetail.assets, serializeAsset);
|
|
92
|
+
writer.writeCollectionOfPrimitiveValues("countryCodes", assetPackDetail.countryCodes);
|
|
93
|
+
writer.writeStringValue("id", assetPackDetail.id);
|
|
94
|
+
writer.writeDateValue("lastModified", assetPackDetail.lastModified);
|
|
95
|
+
writer.writeStringValue("name", assetPackDetail.name);
|
|
96
|
+
writer.writeGuidValue("productId", assetPackDetail.productId);
|
|
97
|
+
writer.writeStringValue("productName", assetPackDetail.productName);
|
|
98
|
+
}
|
|
99
|
+
export function serializeAssetPackListResult(writer, assetPackListResult = {}, isSerializingDerivedType = false) {
|
|
100
|
+
if (!assetPackListResult || isSerializingDerivedType) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
writer.writeNumberValue("pageCount", assetPackListResult.pageCount);
|
|
104
|
+
writer.writeCollectionOfObjectValues("result", assetPackListResult.result, serializeAssetPack);
|
|
105
|
+
writer.writeNumberValue("totalCount", assetPackListResult.totalCount);
|
|
106
|
+
}
|
|
107
|
+
export function serializeProblemDetails(writer, problemDetails = {}, isSerializingDerivedType = false) {
|
|
108
|
+
if (!problemDetails || isSerializingDerivedType) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
writer.writeStringValue("detail", problemDetails.detail);
|
|
112
|
+
writer.writeStringValue("instance", problemDetails.instance);
|
|
113
|
+
writer.writeNumberValue("status", problemDetails.status);
|
|
114
|
+
writer.writeStringValue("title", problemDetails.title);
|
|
115
|
+
writer.writeStringValue("type", problemDetails.type);
|
|
116
|
+
writer.writeAdditionalData(problemDetails.additionalData);
|
|
117
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare enum MissionControlEnvironment {
|
|
2
|
+
Sandbox = "Sandbox",
|
|
3
|
+
Production = "Production"
|
|
4
|
+
}
|
|
5
|
+
export declare function getBaseUrl(env: MissionControlEnvironment): string;
|
|
6
|
+
export declare function getAssetsBaseUrl(env: MissionControlEnvironment): string;
|
|
7
|
+
export declare function getScope(env: MissionControlEnvironment): string;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export var MissionControlEnvironment;
|
|
2
|
+
(function (MissionControlEnvironment) {
|
|
3
|
+
MissionControlEnvironment["Sandbox"] = "Sandbox";
|
|
4
|
+
MissionControlEnvironment["Production"] = "Production";
|
|
5
|
+
})(MissionControlEnvironment || (MissionControlEnvironment = {}));
|
|
6
|
+
const settings = {
|
|
7
|
+
[MissionControlEnvironment.Sandbox]: {
|
|
8
|
+
baseUrl: "https://api.sandbox.missioncontrol.io/partnerApi/v2",
|
|
9
|
+
assetsBaseUrl: "https://api.sandbox.missioncontrol.io/assets/partnerApi/v1",
|
|
10
|
+
scope: "api://38fbfaea-5648-4b51-ac09-d5d90117beff/.default",
|
|
11
|
+
},
|
|
12
|
+
[MissionControlEnvironment.Production]: {
|
|
13
|
+
baseUrl: "https://api.missioncontrol.io/partnerApi/v2",
|
|
14
|
+
assetsBaseUrl: "https://api.missioncontrol.io/assets/partnerApi/v1",
|
|
15
|
+
scope: "api://1b6f40bc-e051-4b7e-987f-47a4a19fa5ef/.default",
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
export function getBaseUrl(env) {
|
|
19
|
+
return settings[env].baseUrl;
|
|
20
|
+
}
|
|
21
|
+
export function getAssetsBaseUrl(env) {
|
|
22
|
+
return settings[env].assetsBaseUrl;
|
|
23
|
+
}
|
|
24
|
+
export function getScope(env) {
|
|
25
|
+
return settings[env].scope;
|
|
26
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { MiddlewareFactory, RetryHandler, RetryHandlerOptions, } from "@microsoft/kiota-http-fetchlibrary";
|
|
2
|
+
import { nonIdempotentPaths } from "./nonIdempotentPaths.js";
|
|
3
|
+
import { AutoCancelOrderHandler } from "./autoCancelOrderHandler.js";
|
|
4
|
+
import { PartnerIdHandler } from "./partnerIdHandler.js";
|
|
5
|
+
function isNoRetryEndpoint(url) {
|
|
6
|
+
try {
|
|
7
|
+
const { pathname } = new URL(url);
|
|
8
|
+
return nonIdempotentPaths.some((prefix) => pathname.toLowerCase().startsWith(prefix.toLowerCase()));
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function createHandlers(defaultPartnerId) {
|
|
15
|
+
const retryOptions = new RetryHandlerOptions({
|
|
16
|
+
shouldRetry: (_delay, _attempt, request, _options, response) => {
|
|
17
|
+
if (isNoRetryEndpoint(request))
|
|
18
|
+
return false;
|
|
19
|
+
return (response.status === 429 ||
|
|
20
|
+
response.status === 503 ||
|
|
21
|
+
response.status === 504);
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const middlewares = MiddlewareFactory.getDefaultMiddlewares();
|
|
25
|
+
const retryIndex = middlewares.findIndex((m) => m instanceof RetryHandler);
|
|
26
|
+
if (retryIndex !== -1) {
|
|
27
|
+
middlewares[retryIndex] = new RetryHandler(retryOptions);
|
|
28
|
+
}
|
|
29
|
+
if (defaultPartnerId) {
|
|
30
|
+
middlewares.unshift(new PartnerIdHandler(defaultPartnerId));
|
|
31
|
+
}
|
|
32
|
+
middlewares.unshift(new AutoCancelOrderHandler());
|
|
33
|
+
return middlewares;
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const nonIdempotentPaths: readonly ["/Order/createOrder", "/Order/claimReservation", "/Order/reportOrder"];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RequestOption } from "@microsoft/kiota-abstractions";
|
|
2
|
+
import type { Middleware } from "@microsoft/kiota-http-fetchlibrary";
|
|
3
|
+
export declare class PartnerIdHandler implements Middleware {
|
|
4
|
+
private readonly defaultPartnerId;
|
|
5
|
+
next: Middleware | undefined;
|
|
6
|
+
constructor(defaultPartnerId: string);
|
|
7
|
+
execute(url: string, requestInit: RequestInit, requestOptions?: Record<string, RequestOption>): Promise<Response>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MissionControlHeaders } from "./missionControlHeaders.js";
|
|
2
|
+
export class PartnerIdHandler {
|
|
3
|
+
constructor(defaultPartnerId) {
|
|
4
|
+
this.defaultPartnerId = defaultPartnerId;
|
|
5
|
+
}
|
|
6
|
+
async execute(url, requestInit, requestOptions) {
|
|
7
|
+
const headers = new Headers(requestInit.headers);
|
|
8
|
+
if (!headers.has(MissionControlHeaders.PartnerId)) {
|
|
9
|
+
headers.set(MissionControlHeaders.PartnerId, this.defaultPartnerId);
|
|
10
|
+
requestInit = { ...requestInit, headers };
|
|
11
|
+
}
|
|
12
|
+
return this.next.execute(url, requestInit, requestOptions);
|
|
13
|
+
}
|
|
14
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ClientBuilder, type MissionControlClient } from "./client/clientBuilder.js";
|
|
2
|
+
export { MissionControlEnvironment, getAssetsBaseUrl, getBaseUrl, getScope, } from "./client/missionControlEnvironment.js";
|
|
3
|
+
export type { Client } from "./client/generated/client.js";
|
|
4
|
+
export { createClient } from "./client/generated/client.js";
|
|
5
|
+
export type * from "./client/generated/models/index.js";
|
|
6
|
+
export type { AssetsClient } from "./client/generatedAssets/assetsClient.js";
|
|
7
|
+
export type { Asset, AssetPack, AssetPackDetail, AssetPackListResult, } from "./client/generatedAssets/models/index.js";
|
package/dist/index.js
ADDED
package/package.json
CHANGED
|
@@ -6,15 +6,27 @@
|
|
|
6
6
|
"homepage": "https://github.com/PandoMC/sdk/tree/main/node",
|
|
7
7
|
"repository": "github:PandoMC/sdk",
|
|
8
8
|
"type": "module",
|
|
9
|
-
"main": "index.js",
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
10
21
|
"scripts": {
|
|
11
|
-
"build": "tsc",
|
|
22
|
+
"build": "tsc && tsc-alias --resolve-full-paths --resolve-full-extension .js",
|
|
12
23
|
"test": "vitest run",
|
|
13
24
|
"test:watch": "vitest",
|
|
14
25
|
"test:integration": "vitest run --config vitest.integration.config.ts"
|
|
15
26
|
},
|
|
16
27
|
"devDependencies": {
|
|
17
28
|
"@types/node": "^26.0.1",
|
|
29
|
+
"tsc-alias": "^1.9.0",
|
|
18
30
|
"typescript": "^6.0.3",
|
|
19
31
|
"vitest": "^4.1.9"
|
|
20
32
|
},
|
|
@@ -23,5 +35,5 @@
|
|
|
23
35
|
"@microsoft/kiota-authentication-azure": "^1.0.0-preview.103",
|
|
24
36
|
"@microsoft/kiota-bundle": "^1.0.0-preview.103"
|
|
25
37
|
},
|
|
26
|
-
"version": "0.0.
|
|
38
|
+
"version": "0.0.11"
|
|
27
39
|
}
|
package/.env.local.example
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
MC_TENANT_ID=<your-azure-ad-tenant-id>
|
|
2
|
-
MC_CLIENT_ID=<your-client-id>
|
|
3
|
-
MC_CLIENT_SECRET=<your-client-secret>
|
|
4
|
-
MC_PARTNER_ID=<your-partner-id>
|
|
5
|
-
MC_BASE_URL=https://api.sandbox.missioncontrol.io
|
|
6
|
-
MC_SCOPE=api://<app-id>/.default
|
|
7
|
-
MC_PRODUCT_ID=<your-product-id>
|
|
8
|
-
MC_REGION_ID=<your-region-id>
|
|
9
|
-
MC_PUBLISHER_ID=<your-publisher-id>
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import type { RequestOption } from "@microsoft/kiota-abstractions";
|
|
2
|
-
import type { Middleware } from "@microsoft/kiota-http-fetchlibrary";
|
|
3
|
-
import { MissionControlHeaders } from "./missionControlHeaders";
|
|
4
|
-
import { nonIdempotentPaths } from "./nonIdempotentPaths";
|
|
5
|
-
|
|
6
|
-
const CANCEL_TIMEOUT_MS = 30_000;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* A Kiota middleware that automatically attempts to cancel an order when a request to one of
|
|
10
|
-
* the order-mutation endpoints fails with a server error (5xx) or a network/connection error.
|
|
11
|
-
*
|
|
12
|
-
* Affected endpoints: `createOrder`, `claimReservation`, `reportOrder`.
|
|
13
|
-
*
|
|
14
|
-
* The cancellation attempt is best-effort. If it fails the original error is still propagated
|
|
15
|
-
* to the caller unchanged.
|
|
16
|
-
*/
|
|
17
|
-
export class AutoCancelOrderHandler implements Middleware {
|
|
18
|
-
next: Middleware | undefined;
|
|
19
|
-
|
|
20
|
-
async execute(
|
|
21
|
-
url: string,
|
|
22
|
-
requestInit: RequestInit,
|
|
23
|
-
requestOptions?: Record<string, RequestOption>,
|
|
24
|
-
): Promise<Response> {
|
|
25
|
-
if (!isAutoCancelEndpoint(url)) {
|
|
26
|
-
return this.next!.execute(url, requestInit, requestOptions);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Buffer the request body before the inner handler consumes it.
|
|
30
|
-
const requestBody =
|
|
31
|
-
requestInit.body != null ? String(requestInit.body) : null;
|
|
32
|
-
|
|
33
|
-
let response: Response;
|
|
34
|
-
try {
|
|
35
|
-
response = await this.next!.execute(url, requestInit, requestOptions);
|
|
36
|
-
} catch (err) {
|
|
37
|
-
// Network/connection error — attempt a best-effort cancel.
|
|
38
|
-
await this.tryCancelOrderAsync(url, requestInit, requestBody);
|
|
39
|
-
throw err;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (isServerError(response)) {
|
|
43
|
-
await this.tryCancelOrderAsync(url, requestInit, requestBody);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return response;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
private async tryCancelOrderAsync(
|
|
50
|
-
originalUrl: string,
|
|
51
|
-
originalInit: RequestInit,
|
|
52
|
-
requestBody: string | null,
|
|
53
|
-
): Promise<void> {
|
|
54
|
-
try {
|
|
55
|
-
const requestId = extractRequestId(requestBody);
|
|
56
|
-
if (requestId == null) return;
|
|
57
|
-
|
|
58
|
-
const cancelUrl = buildCancelUrl(originalUrl);
|
|
59
|
-
if (cancelUrl == null) return;
|
|
60
|
-
|
|
61
|
-
const headers = new Headers();
|
|
62
|
-
headers.set("Content-Type", "application/json");
|
|
63
|
-
|
|
64
|
-
// Copy auth and partner-id headers so the cancel request is properly authenticated
|
|
65
|
-
// and attributed — the inner middleware handles retry and other cross-cutting concerns.
|
|
66
|
-
const originalHeaders = new Headers(originalInit.headers);
|
|
67
|
-
const auth = originalHeaders.get("Authorization");
|
|
68
|
-
if (auth) headers.set("Authorization", auth);
|
|
69
|
-
const partnerId = originalHeaders.get(MissionControlHeaders.PartnerId);
|
|
70
|
-
if (partnerId) headers.set(MissionControlHeaders.PartnerId, partnerId);
|
|
71
|
-
|
|
72
|
-
const cancelInit: RequestInit = {
|
|
73
|
-
method: "POST",
|
|
74
|
-
headers,
|
|
75
|
-
body: JSON.stringify({ originalRequestId: requestId }),
|
|
76
|
-
signal: AbortSignal.timeout(CANCEL_TIMEOUT_MS),
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
await this.next!.execute(cancelUrl, cancelInit, undefined);
|
|
80
|
-
} catch {
|
|
81
|
-
// Best-effort: swallow failures so the original error propagates.
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function isAutoCancelEndpoint(url: string): boolean {
|
|
87
|
-
try {
|
|
88
|
-
const path = new URL(url).pathname;
|
|
89
|
-
// Use includes so this works regardless of any base-path prefix
|
|
90
|
-
// (e.g. /partnerApi/v2/Order/createOrder).
|
|
91
|
-
return nonIdempotentPaths.some((prefix) =>
|
|
92
|
-
path.toLowerCase().includes(prefix.toLowerCase()),
|
|
93
|
-
);
|
|
94
|
-
} catch {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function isServerError(response: Response): boolean {
|
|
100
|
-
return response.status >= 500;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
function extractRequestId(json: string | null): string | null {
|
|
104
|
-
if (!json) return null;
|
|
105
|
-
try {
|
|
106
|
-
const parsed: unknown = JSON.parse(json);
|
|
107
|
-
if (
|
|
108
|
-
parsed != null &&
|
|
109
|
-
typeof parsed === "object" &&
|
|
110
|
-
"requestId" in parsed &&
|
|
111
|
-
typeof (parsed as Record<string, unknown>).requestId === "string"
|
|
112
|
-
) {
|
|
113
|
-
return (parsed as Record<string, unknown>).requestId as string;
|
|
114
|
-
}
|
|
115
|
-
} catch {
|
|
116
|
-
// Malformed body — nothing to extract.
|
|
117
|
-
}
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
function buildCancelUrl(url: string): string | null {
|
|
122
|
-
try {
|
|
123
|
-
const parsed = new URL(url);
|
|
124
|
-
const path = parsed.pathname;
|
|
125
|
-
const orderIndex = path.toLowerCase().indexOf("/order/");
|
|
126
|
-
if (orderIndex < 0) return null;
|
|
127
|
-
|
|
128
|
-
parsed.pathname =
|
|
129
|
-
path.slice(0, orderIndex + "/Order/".length) + "cancelOrder";
|
|
130
|
-
parsed.search = "";
|
|
131
|
-
return parsed.toString();
|
|
132
|
-
} catch {
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
}
|