@fluidframework/runtime-utils 2.0.0-internal.2.3.0 → 2.0.0-internal.2.3.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/dist/dataStoreHelpers.d.ts +3 -1
- package/dist/dataStoreHelpers.d.ts.map +1 -1
- package/dist/dataStoreHelpers.js +4 -1
- package/dist/dataStoreHelpers.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/lib/dataStoreHelpers.d.ts +3 -1
- package/lib/dataStoreHelpers.d.ts.map +1 -1
- package/lib/dataStoreHelpers.js +4 -1
- package/lib/dataStoreHelpers.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/package.json +12 -13
- package/src/dataStoreHelpers.ts +5 -1
- package/src/packageVersion.ts +1 -1
|
@@ -13,7 +13,9 @@ export declare function responseToException(response: IResponse, request: IReque
|
|
|
13
13
|
export declare function packagePathToTelemetryProperty(packagePath: readonly string[] | undefined): ITaggedTelemetryPropertyType | undefined;
|
|
14
14
|
export declare function requestFluidObject<T = FluidObject>(router: IFluidRouter, url: string | IRequest): Promise<T>;
|
|
15
15
|
export declare const create404Response: (request: IRequest) => IResponse;
|
|
16
|
-
export declare function createResponseError(status: number, value: string, request: IRequest
|
|
16
|
+
export declare function createResponseError(status: number, value: string, request: IRequest, headers?: {
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
}): IResponse;
|
|
17
19
|
export declare type Factory = IFluidDataStoreFactory & Partial<IProvideFluidDataStoreRegistry>;
|
|
18
20
|
export declare function createDataStoreFactory(type: string, factory: Factory | Promise<Factory>): IFluidDataStoreFactory & IFluidDataStoreRegistry;
|
|
19
21
|
//# sourceMappingURL=dataStoreHelpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreHelpers.d.ts","sourceRoot":"","sources":["../src/dataStoreHelpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,EACH,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EACjC,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"dataStoreHelpers.d.ts","sourceRoot":"","sources":["../src/dataStoreHelpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,EACH,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EACjC,MAAM,qCAAqC,CAAC;AAW7C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAsBvD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,CAajF;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC1C,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC3C,4BAA4B,GAAG,SAAS,CAE1C;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,WAAW,EACpD,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAU5D;AAED,eAAO,MAAM,iBAAiB,YAAa,QAAQ,cAAmD,CAAC;AAEvG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,CAejI;AAED,oBAAY,OAAO,GAAG,sBAAsB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAEvF,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAChC,sBAAsB,GAAG,uBAAuB,CAQtD"}
|
package/dist/dataStoreHelpers.js
CHANGED
|
@@ -16,6 +16,7 @@ function exceptionToResponse(err) {
|
|
|
16
16
|
status: responseErr.code,
|
|
17
17
|
value: responseErr.message,
|
|
18
18
|
get stack() { return responseErr.stack; },
|
|
19
|
+
headers: responseErr.underlyingResponseHeaders,
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
22
|
// Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it
|
|
@@ -37,6 +38,7 @@ function responseToException(response, request) {
|
|
|
37
38
|
name: "Error",
|
|
38
39
|
code: response.status,
|
|
39
40
|
get stack() { var _a; return (_a = response.stack) !== null && _a !== void 0 ? _a : errWithStack.stack; },
|
|
41
|
+
underlyingResponseHeaders: response.headers,
|
|
40
42
|
};
|
|
41
43
|
return responseErr;
|
|
42
44
|
}
|
|
@@ -60,7 +62,7 @@ async function requestFluidObject(router, url) {
|
|
|
60
62
|
exports.requestFluidObject = requestFluidObject;
|
|
61
63
|
const create404Response = (request) => createResponseError(404, "not found", request);
|
|
62
64
|
exports.create404Response = create404Response;
|
|
63
|
-
function createResponseError(status, value, request) {
|
|
65
|
+
function createResponseError(status, value, request, headers) {
|
|
64
66
|
var _a;
|
|
65
67
|
(0, common_utils_1.assert)(status !== 200, 0x19b /* "Cannot not create response error on 200 status" */);
|
|
66
68
|
// Omit query string which could contain personal data (aka "PII")
|
|
@@ -72,6 +74,7 @@ function createResponseError(status, value, request) {
|
|
|
72
74
|
status,
|
|
73
75
|
value: urlNoQuery === undefined ? value : `${value}: ${urlNoQuery}`,
|
|
74
76
|
get stack() { return errWithStack.stack; },
|
|
77
|
+
headers,
|
|
75
78
|
};
|
|
76
79
|
}
|
|
77
80
|
exports.createResponseError = createResponseError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreHelpers.js","sourceRoot":"","sources":["../src/dataStoreHelpers.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,+DAAsD;AAYtD,qEAA2F;
|
|
1
|
+
{"version":3,"file":"dataStoreHelpers.js","sourceRoot":"","sources":["../src/dataStoreHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITaggedTelemetryPropertyType } from \"@fluidframework/common-definitions\";\nimport { assert } from \"@fluidframework/common-utils\";\nimport {\n FluidObject,\n IFluidRouter,\n IRequest,\n IResponse,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IFluidDataStoreFactory,\n IFluidDataStoreRegistry,\n IProvideFluidDataStoreRegistry,\n} from \"@fluidframework/runtime-definitions\";\nimport { generateErrorWithStack, TelemetryDataTag } from \"@fluidframework/telemetry-utils\";\n\ninterface IResponseException extends Error {\n errorFromRequestFluidObject: true;\n message: string;\n code: number;\n stack?: string;\n underlyingResponseHeaders?: { [key: string]: any; };\n}\n\nexport function exceptionToResponse(err: any): IResponse {\n const status = 500;\n if (err !== null && typeof err === \"object\" && err.errorFromRequestFluidObject === true) {\n const responseErr: IResponseException = err;\n return {\n mimeType: \"text/plain\",\n status: responseErr.code,\n value: responseErr.message,\n get stack() { return responseErr.stack; },\n headers: responseErr.underlyingResponseHeaders,\n };\n }\n\n // Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it\n const errWithStack = generateErrorWithStack();\n\n return {\n mimeType: \"text/plain\",\n status,\n value: `${err}`,\n get stack() { return ((err?.stack) as (string | undefined)) ?? errWithStack.stack; },\n };\n}\n\nexport function responseToException(response: IResponse, request: IRequest): Error {\n const message = response.value;\n const errWithStack = generateErrorWithStack();\n const responseErr: Error & IResponseException = {\n errorFromRequestFluidObject: true,\n message,\n name: \"Error\",\n code: response.status,\n get stack() { return response.stack ?? errWithStack.stack; },\n underlyingResponseHeaders: response.headers,\n };\n\n return responseErr;\n}\n\n/**\n * Takes a set of packages and joins them pkg1/pkg2... etc. Tags the field as a code artifact\n */\nexport function packagePathToTelemetryProperty(\n packagePath: readonly string[] | undefined,\n): ITaggedTelemetryPropertyType | undefined {\n return packagePath ? { value: packagePath.join(\"/\"), tag: TelemetryDataTag.CodeArtifact } : undefined;\n}\n\nexport async function requestFluidObject<T = FluidObject>(\n router: IFluidRouter, url: string | IRequest): Promise<T> {\n const request = typeof url === \"string\" ? { url } : url;\n const response = await router.request(request);\n\n if (response.status !== 200 || response.mimeType !== \"fluid/object\") {\n throw responseToException(response, request);\n }\n\n assert(response.value, 0x19a /* \"Invalid response value for Fluid object request\" */);\n return response.value as T;\n}\n\nexport const create404Response = (request: IRequest) => createResponseError(404, \"not found\", request);\n\nexport function createResponseError(status: number, value: string, request: IRequest, headers?: { [key: string]: any }): IResponse {\n assert(status !== 200, 0x19b /* \"Cannot not create response error on 200 status\" */);\n // Omit query string which could contain personal data (aka \"PII\")\n const urlNoQuery = request.url?.split(\"?\")[0];\n\n // Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it\n const errWithStack = generateErrorWithStack();\n\n return {\n mimeType: \"text/plain\",\n status,\n value: urlNoQuery === undefined ? value : `${value}: ${urlNoQuery}`,\n get stack() { return errWithStack.stack; },\n headers,\n };\n}\n\nexport type Factory = IFluidDataStoreFactory & Partial<IProvideFluidDataStoreRegistry>;\n\nexport function createDataStoreFactory(\n type: string,\n factory: Factory | Promise<Factory>,\n ): IFluidDataStoreFactory & IFluidDataStoreRegistry {\n return {\n type,\n get IFluidDataStoreFactory() { return this; },\n get IFluidDataStoreRegistry() { return this; },\n instantiateDataStore: async (context, existing) => (await factory).instantiateDataStore(context, existing),\n get: async (name: string) => (await factory).IFluidDataStoreRegistry?.get(name),\n };\n}\n"]}
|
package/dist/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/runtime-utils";
|
|
8
|
-
export declare const pkgVersion = "2.0.0-internal.2.3.
|
|
8
|
+
export declare const pkgVersion = "2.0.0-internal.2.3.1";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
package/dist/packageVersion.js
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.pkgVersion = exports.pkgName = void 0;
|
|
10
10
|
exports.pkgName = "@fluidframework/runtime-utils";
|
|
11
|
-
exports.pkgVersion = "2.0.0-internal.2.3.
|
|
11
|
+
exports.pkgVersion = "2.0.0-internal.2.3.1";
|
|
12
12
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,+BAA+B,CAAC;AAC1C,QAAA,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/runtime-utils\";\nexport const pkgVersion = \"2.0.0-internal.2.3.
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,+BAA+B,CAAC;AAC1C,QAAA,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/runtime-utils\";\nexport const pkgVersion = \"2.0.0-internal.2.3.1\";\n"]}
|
|
@@ -13,7 +13,9 @@ export declare function responseToException(response: IResponse, request: IReque
|
|
|
13
13
|
export declare function packagePathToTelemetryProperty(packagePath: readonly string[] | undefined): ITaggedTelemetryPropertyType | undefined;
|
|
14
14
|
export declare function requestFluidObject<T = FluidObject>(router: IFluidRouter, url: string | IRequest): Promise<T>;
|
|
15
15
|
export declare const create404Response: (request: IRequest) => IResponse;
|
|
16
|
-
export declare function createResponseError(status: number, value: string, request: IRequest
|
|
16
|
+
export declare function createResponseError(status: number, value: string, request: IRequest, headers?: {
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
}): IResponse;
|
|
17
19
|
export declare type Factory = IFluidDataStoreFactory & Partial<IProvideFluidDataStoreRegistry>;
|
|
18
20
|
export declare function createDataStoreFactory(type: string, factory: Factory | Promise<Factory>): IFluidDataStoreFactory & IFluidDataStoreRegistry;
|
|
19
21
|
//# sourceMappingURL=dataStoreHelpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreHelpers.d.ts","sourceRoot":"","sources":["../src/dataStoreHelpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,EACH,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EACjC,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"dataStoreHelpers.d.ts","sourceRoot":"","sources":["../src/dataStoreHelpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,EACH,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EACjC,MAAM,qCAAqC,CAAC;AAW7C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAsBvD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,CAajF;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC1C,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC3C,4BAA4B,GAAG,SAAS,CAE1C;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,WAAW,EACpD,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAU5D;AAED,eAAO,MAAM,iBAAiB,YAAa,QAAQ,cAAmD,CAAC;AAEvG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,CAejI;AAED,oBAAY,OAAO,GAAG,sBAAsB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAEvF,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAChC,sBAAsB,GAAG,uBAAuB,CAQtD"}
|
package/lib/dataStoreHelpers.js
CHANGED
|
@@ -13,6 +13,7 @@ export function exceptionToResponse(err) {
|
|
|
13
13
|
status: responseErr.code,
|
|
14
14
|
value: responseErr.message,
|
|
15
15
|
get stack() { return responseErr.stack; },
|
|
16
|
+
headers: responseErr.underlyingResponseHeaders,
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
// Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it
|
|
@@ -33,6 +34,7 @@ export function responseToException(response, request) {
|
|
|
33
34
|
name: "Error",
|
|
34
35
|
code: response.status,
|
|
35
36
|
get stack() { var _a; return (_a = response.stack) !== null && _a !== void 0 ? _a : errWithStack.stack; },
|
|
37
|
+
underlyingResponseHeaders: response.headers,
|
|
36
38
|
};
|
|
37
39
|
return responseErr;
|
|
38
40
|
}
|
|
@@ -52,7 +54,7 @@ export async function requestFluidObject(router, url) {
|
|
|
52
54
|
return response.value;
|
|
53
55
|
}
|
|
54
56
|
export const create404Response = (request) => createResponseError(404, "not found", request);
|
|
55
|
-
export function createResponseError(status, value, request) {
|
|
57
|
+
export function createResponseError(status, value, request, headers) {
|
|
56
58
|
var _a;
|
|
57
59
|
assert(status !== 200, 0x19b /* "Cannot not create response error on 200 status" */);
|
|
58
60
|
// Omit query string which could contain personal data (aka "PII")
|
|
@@ -64,6 +66,7 @@ export function createResponseError(status, value, request) {
|
|
|
64
66
|
status,
|
|
65
67
|
value: urlNoQuery === undefined ? value : `${value}: ${urlNoQuery}`,
|
|
66
68
|
get stack() { return errWithStack.stack; },
|
|
69
|
+
headers,
|
|
67
70
|
};
|
|
68
71
|
}
|
|
69
72
|
export function createDataStoreFactory(type, factory) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreHelpers.js","sourceRoot":"","sources":["../src/dataStoreHelpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAYtD,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"dataStoreHelpers.js","sourceRoot":"","sources":["../src/dataStoreHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITaggedTelemetryPropertyType } from \"@fluidframework/common-definitions\";\nimport { assert } from \"@fluidframework/common-utils\";\nimport {\n FluidObject,\n IFluidRouter,\n IRequest,\n IResponse,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IFluidDataStoreFactory,\n IFluidDataStoreRegistry,\n IProvideFluidDataStoreRegistry,\n} from \"@fluidframework/runtime-definitions\";\nimport { generateErrorWithStack, TelemetryDataTag } from \"@fluidframework/telemetry-utils\";\n\ninterface IResponseException extends Error {\n errorFromRequestFluidObject: true;\n message: string;\n code: number;\n stack?: string;\n underlyingResponseHeaders?: { [key: string]: any; };\n}\n\nexport function exceptionToResponse(err: any): IResponse {\n const status = 500;\n if (err !== null && typeof err === \"object\" && err.errorFromRequestFluidObject === true) {\n const responseErr: IResponseException = err;\n return {\n mimeType: \"text/plain\",\n status: responseErr.code,\n value: responseErr.message,\n get stack() { return responseErr.stack; },\n headers: responseErr.underlyingResponseHeaders,\n };\n }\n\n // Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it\n const errWithStack = generateErrorWithStack();\n\n return {\n mimeType: \"text/plain\",\n status,\n value: `${err}`,\n get stack() { return ((err?.stack) as (string | undefined)) ?? errWithStack.stack; },\n };\n}\n\nexport function responseToException(response: IResponse, request: IRequest): Error {\n const message = response.value;\n const errWithStack = generateErrorWithStack();\n const responseErr: Error & IResponseException = {\n errorFromRequestFluidObject: true,\n message,\n name: \"Error\",\n code: response.status,\n get stack() { return response.stack ?? errWithStack.stack; },\n underlyingResponseHeaders: response.headers,\n };\n\n return responseErr;\n}\n\n/**\n * Takes a set of packages and joins them pkg1/pkg2... etc. Tags the field as a code artifact\n */\nexport function packagePathToTelemetryProperty(\n packagePath: readonly string[] | undefined,\n): ITaggedTelemetryPropertyType | undefined {\n return packagePath ? { value: packagePath.join(\"/\"), tag: TelemetryDataTag.CodeArtifact } : undefined;\n}\n\nexport async function requestFluidObject<T = FluidObject>(\n router: IFluidRouter, url: string | IRequest): Promise<T> {\n const request = typeof url === \"string\" ? { url } : url;\n const response = await router.request(request);\n\n if (response.status !== 200 || response.mimeType !== \"fluid/object\") {\n throw responseToException(response, request);\n }\n\n assert(response.value, 0x19a /* \"Invalid response value for Fluid object request\" */);\n return response.value as T;\n}\n\nexport const create404Response = (request: IRequest) => createResponseError(404, \"not found\", request);\n\nexport function createResponseError(status: number, value: string, request: IRequest, headers?: { [key: string]: any }): IResponse {\n assert(status !== 200, 0x19b /* \"Cannot not create response error on 200 status\" */);\n // Omit query string which could contain personal data (aka \"PII\")\n const urlNoQuery = request.url?.split(\"?\")[0];\n\n // Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it\n const errWithStack = generateErrorWithStack();\n\n return {\n mimeType: \"text/plain\",\n status,\n value: urlNoQuery === undefined ? value : `${value}: ${urlNoQuery}`,\n get stack() { return errWithStack.stack; },\n headers,\n };\n}\n\nexport type Factory = IFluidDataStoreFactory & Partial<IProvideFluidDataStoreRegistry>;\n\nexport function createDataStoreFactory(\n type: string,\n factory: Factory | Promise<Factory>,\n ): IFluidDataStoreFactory & IFluidDataStoreRegistry {\n return {\n type,\n get IFluidDataStoreFactory() { return this; },\n get IFluidDataStoreRegistry() { return this; },\n instantiateDataStore: async (context, existing) => (await factory).instantiateDataStore(context, existing),\n get: async (name: string) => (await factory).IFluidDataStoreRegistry?.get(name),\n };\n}\n"]}
|
package/lib/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/runtime-utils";
|
|
8
|
-
export declare const pkgVersion = "2.0.0-internal.2.3.
|
|
8
|
+
export declare const pkgVersion = "2.0.0-internal.2.3.1";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
package/lib/packageVersion.js
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export const pkgName = "@fluidframework/runtime-utils";
|
|
8
|
-
export const pkgVersion = "2.0.0-internal.2.3.
|
|
8
|
+
export const pkgVersion = "2.0.0-internal.2.3.1";
|
|
9
9
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,+BAA+B,CAAC;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/runtime-utils\";\nexport const pkgVersion = \"2.0.0-internal.2.3.
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,+BAA+B,CAAC;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/runtime-utils\";\nexport const pkgVersion = \"2.0.0-internal.2.3.1\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/runtime-utils",
|
|
3
|
-
"version": "2.0.0-internal.2.3.
|
|
3
|
+
"version": "2.0.0-internal.2.3.1",
|
|
4
4
|
"description": "Collection of utility functions for Fluid Runtime",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -64,23 +64,23 @@
|
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
66
66
|
"@fluidframework/common-utils": "^1.0.0",
|
|
67
|
-
"@fluidframework/container-definitions": ">=2.0.0-internal.2.3.
|
|
68
|
-
"@fluidframework/container-runtime-definitions": ">=2.0.0-internal.2.3.
|
|
69
|
-
"@fluidframework/core-interfaces": ">=2.0.0-internal.2.3.
|
|
70
|
-
"@fluidframework/datastore-definitions": ">=2.0.0-internal.2.3.
|
|
71
|
-
"@fluidframework/garbage-collector": ">=2.0.0-internal.2.3.
|
|
67
|
+
"@fluidframework/container-definitions": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
|
|
68
|
+
"@fluidframework/container-runtime-definitions": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
|
|
69
|
+
"@fluidframework/core-interfaces": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
|
|
70
|
+
"@fluidframework/datastore-definitions": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
|
|
71
|
+
"@fluidframework/garbage-collector": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
|
|
72
72
|
"@fluidframework/protocol-base": "^0.1038.2000",
|
|
73
73
|
"@fluidframework/protocol-definitions": "^1.1.0",
|
|
74
|
-
"@fluidframework/runtime-definitions": ">=2.0.0-internal.2.3.
|
|
75
|
-
"@fluidframework/telemetry-utils": ">=2.0.0-internal.2.3.
|
|
74
|
+
"@fluidframework/runtime-definitions": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
|
|
75
|
+
"@fluidframework/telemetry-utils": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
78
|
"@fluid-tools/build-cli": "^0.7.0",
|
|
79
79
|
"@fluidframework/build-common": "^1.1.0",
|
|
80
80
|
"@fluidframework/build-tools": "^0.7.0",
|
|
81
81
|
"@fluidframework/eslint-config-fluid": "^2.0.0",
|
|
82
|
-
"@fluidframework/mocha-test-setup": ">=2.0.0-internal.2.3.
|
|
83
|
-
"@fluidframework/runtime-utils-previous": "npm:@fluidframework/runtime-utils@2.0.0-internal.2.
|
|
82
|
+
"@fluidframework/mocha-test-setup": ">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0",
|
|
83
|
+
"@fluidframework/runtime-utils-previous": "npm:@fluidframework/runtime-utils@2.0.0-internal.2.3.0",
|
|
84
84
|
"@microsoft/api-extractor": "^7.22.2",
|
|
85
85
|
"@rushstack/eslint-config": "^2.5.1",
|
|
86
86
|
"@types/mocha": "^9.1.1",
|
|
@@ -98,9 +98,8 @@
|
|
|
98
98
|
"typescript": "~4.5.5"
|
|
99
99
|
},
|
|
100
100
|
"typeValidation": {
|
|
101
|
-
"version": "2.0.0-internal.2.3.
|
|
102
|
-
"baselineRange": "
|
|
103
|
-
"baselineVersion": "2.0.0-internal.2.2.0",
|
|
101
|
+
"version": "2.0.0-internal.2.3.1",
|
|
102
|
+
"baselineRange": "2.0.0-internal.2.3.0",
|
|
104
103
|
"broken": {}
|
|
105
104
|
}
|
|
106
105
|
}
|
package/src/dataStoreHelpers.ts
CHANGED
|
@@ -23,6 +23,7 @@ interface IResponseException extends Error {
|
|
|
23
23
|
message: string;
|
|
24
24
|
code: number;
|
|
25
25
|
stack?: string;
|
|
26
|
+
underlyingResponseHeaders?: { [key: string]: any; };
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
export function exceptionToResponse(err: any): IResponse {
|
|
@@ -34,6 +35,7 @@ export function exceptionToResponse(err: any): IResponse {
|
|
|
34
35
|
status: responseErr.code,
|
|
35
36
|
value: responseErr.message,
|
|
36
37
|
get stack() { return responseErr.stack; },
|
|
38
|
+
headers: responseErr.underlyingResponseHeaders,
|
|
37
39
|
};
|
|
38
40
|
}
|
|
39
41
|
|
|
@@ -57,6 +59,7 @@ export function responseToException(response: IResponse, request: IRequest): Err
|
|
|
57
59
|
name: "Error",
|
|
58
60
|
code: response.status,
|
|
59
61
|
get stack() { return response.stack ?? errWithStack.stack; },
|
|
62
|
+
underlyingResponseHeaders: response.headers,
|
|
60
63
|
};
|
|
61
64
|
|
|
62
65
|
return responseErr;
|
|
@@ -86,7 +89,7 @@ export async function requestFluidObject<T = FluidObject>(
|
|
|
86
89
|
|
|
87
90
|
export const create404Response = (request: IRequest) => createResponseError(404, "not found", request);
|
|
88
91
|
|
|
89
|
-
export function createResponseError(status: number, value: string, request: IRequest): IResponse {
|
|
92
|
+
export function createResponseError(status: number, value: string, request: IRequest, headers?: { [key: string]: any }): IResponse {
|
|
90
93
|
assert(status !== 200, 0x19b /* "Cannot not create response error on 200 status" */);
|
|
91
94
|
// Omit query string which could contain personal data (aka "PII")
|
|
92
95
|
const urlNoQuery = request.url?.split("?")[0];
|
|
@@ -99,6 +102,7 @@ export function createResponseError(status: number, value: string, request: IReq
|
|
|
99
102
|
status,
|
|
100
103
|
value: urlNoQuery === undefined ? value : `${value}: ${urlNoQuery}`,
|
|
101
104
|
get stack() { return errWithStack.stack; },
|
|
105
|
+
headers,
|
|
102
106
|
};
|
|
103
107
|
}
|
|
104
108
|
|
package/src/packageVersion.ts
CHANGED