@fluidframework/synthesize 2.0.0-dev.7.3.0.210328 → 2.0.0-dev.7.3.0.211848
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/{IFluidDependencySynthesizer.js → IFluidDependencySynthesizer.cjs} +1 -1
- package/dist/IFluidDependencySynthesizer.cjs.map +1 -0
- package/dist/{dependencyContainer.js → dependencyContainer.cjs} +2 -2
- package/dist/dependencyContainer.cjs.map +1 -0
- package/dist/{index.js → index.cjs} +3 -3
- package/dist/index.cjs.map +1 -0
- package/dist/test/{dependencyContainer.spec.js → dependencyContainer.spec.cjs} +42 -42
- package/dist/test/dependencyContainer.spec.cjs.map +1 -0
- package/dist/test/types/{validateSynthesizePrevious.generated.js → validateSynthesizePrevious.generated.cjs} +1 -1
- package/dist/test/types/validateSynthesizePrevious.generated.cjs.map +1 -0
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/{types.js → types.cjs} +1 -1
- package/dist/types.cjs.map +1 -0
- package/lib/{IFluidDependencySynthesizer.js → IFluidDependencySynthesizer.mjs} +1 -1
- package/lib/IFluidDependencySynthesizer.mjs.map +1 -0
- package/lib/{dependencyContainer.js → dependencyContainer.mjs} +2 -2
- package/lib/dependencyContainer.mjs.map +1 -0
- package/lib/{index.js → index.mjs} +3 -3
- package/lib/index.mjs.map +1 -0
- package/lib/types.mjs +2 -0
- package/lib/types.mjs.map +1 -0
- package/package.json +29 -16
- package/dist/IFluidDependencySynthesizer.js.map +0 -1
- package/dist/dependencyContainer.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/test/dependencyContainer.spec.js.map +0 -1
- package/dist/test/tsconfig.tsbuildinfo +0 -1
- package/dist/test/types/validateSynthesizePrevious.generated.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/lib/IFluidDependencySynthesizer.js.map +0 -1
- package/lib/dependencyContainer.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/types.js +0 -2
- package/lib/types.js.map +0 -1
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.IFluidDependencySynthesizer = void 0;
|
|
8
8
|
exports.IFluidDependencySynthesizer = "IFluidDependencySynthesizer";
|
|
9
|
-
//# sourceMappingURL=IFluidDependencySynthesizer.
|
|
9
|
+
//# sourceMappingURL=IFluidDependencySynthesizer.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IFluidDependencySynthesizer.cjs","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIU,QAAA,2BAA2B,GACvC,6BAA6B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AsyncFluidObjectProvider, FluidObjectSymbolProvider } from \"./types\";\n\nexport const IFluidDependencySynthesizer: keyof IProvideFluidDependencySynthesizer =\n\t\"IFluidDependencySynthesizer\";\n\nexport interface IProvideFluidDependencySynthesizer {\n\tIFluidDependencySynthesizer: IFluidDependencySynthesizer;\n}\n\n/**\n * IFluidDependencySynthesizer can generate FluidObjects based on the IProvideFluidObject pattern.\n * It allow for registering providers and uses synthesize to generate a new object with the optional\n * and required types.\n */\nexport interface IFluidDependencySynthesizer extends IProvideFluidDependencySynthesizer {\n\t/**\n\t * synthesize takes optional and required types and returns an object that will fulfill the\n\t * defined types based off objects that has been previously registered.\n\t *\n\t * @param optionalTypes - optional types to be in the Scope object\n\t * @param requiredTypes - required types that need to be in the Scope object\n\t */\n\tsynthesize<O, R = undefined | Record<string, never>>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R>;\n\n\t/**\n\t * Check if a given type is registered\n\t * @param type - Type to check\n\t */\n\thas(type: string): boolean;\n}\n"]}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.DependencyContainer = void 0;
|
|
8
8
|
const core_utils_1 = require("@fluidframework/core-utils");
|
|
9
|
-
const IFluidDependencySynthesizer_1 = require("./IFluidDependencySynthesizer");
|
|
9
|
+
const IFluidDependencySynthesizer_1 = require("./IFluidDependencySynthesizer.cjs");
|
|
10
10
|
/**
|
|
11
11
|
* DependencyContainer is similar to a IoC Container. It takes providers and will
|
|
12
12
|
* synthesize an object based on them when requested.
|
|
@@ -156,4 +156,4 @@ class DependencyContainer {
|
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
exports.DependencyContainer = DependencyContainer;
|
|
159
|
-
//# sourceMappingURL=dependencyContainer.
|
|
159
|
+
//# sourceMappingURL=dependencyContainer.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyContainer.cjs","sourceRoot":"","sources":["../src/dependencyContainer.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 { LazyPromise } from \"@fluidframework/core-utils\";\nimport {\n\tAsyncFluidObjectProvider,\n\tFluidObjectSymbolProvider,\n\tFluidObjectProvider,\n\tAsyncOptionalFluidObjectProvider,\n\tAsyncRequiredFluidObjectProvider,\n} from \"./types\";\nimport { IFluidDependencySynthesizer } from \"./IFluidDependencySynthesizer\";\n\n/**\n * DependencyContainer is similar to a IoC Container. It takes providers and will\n * synthesize an object based on them when requested.\n */\nexport class DependencyContainer<TMap> implements IFluidDependencySynthesizer {\n\tprivate readonly providers = new Map<keyof TMap, FluidObjectProvider<any>>();\n\tprivate readonly parents: IFluidDependencySynthesizer[];\n\tpublic get IFluidDependencySynthesizer() {\n\t\treturn this;\n\t}\n\n\tpublic constructor(...parents: (IFluidDependencySynthesizer | undefined)[]) {\n\t\tthis.parents = parents.filter((v): v is IFluidDependencySynthesizer => v !== undefined);\n\t}\n\n\t/**\n\t * Add a new provider\n\t * @param type - Name of the Type T being provided\n\t * @param provider - A provider that will resolve the T correctly when asked\n\t * @throws - If passing a type that's already registered\n\t */\n\tpublic register<T extends keyof TMap = keyof TMap>(\n\t\ttype: T,\n\t\tprovider: FluidObjectProvider<Pick<TMap, T>>,\n\t): void {\n\t\tif (this.providers.has(type)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Attempting to register a provider of type ${String(type)} that already exists`,\n\t\t\t);\n\t\t}\n\n\t\tthis.providers.set(type, provider);\n\t}\n\n\t/**\n\t * Remove a provider\n\t * @param type - Name of the provider to remove\n\t */\n\tpublic unregister(type: keyof TMap): void {\n\t\tif (this.providers.has(type)) {\n\t\t\tthis.providers.delete(type);\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n\t */\n\tpublic synthesize<O, R = undefined | Record<string, never>>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R> {\n\t\tconst base: AsyncFluidObjectProvider<O, R> = {} as any;\n\t\tthis.generateRequired<R>(base, requiredTypes);\n\t\tthis.generateOptional<O>(base, optionalTypes);\n\t\tObject.defineProperty(base, IFluidDependencySynthesizer, { get: () => this });\n\t\treturn base;\n\t}\n\n\t/**\n\t * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n\t * @param excludeParents - If true, exclude checking parent registries\n\t */\n\tpublic has(type: string, excludeParents?: boolean): boolean {\n\t\tif (this.providers.has(type as keyof TMap)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (excludeParents !== true) {\n\t\t\treturn this.parents.some((p: IFluidDependencySynthesizer) => p.has(type));\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t * @deprecated Needed for backwards compatability.\n\t */\n\tprivate getProvider(provider: string & keyof TMap) {\n\t\t// this was removed, but some partners have trouble with back compat where they\n\t\t// use invalid patterns with FluidObject and IFluidDependencySynthesizer\n\t\t// this is just for back compat until those are removed\n\t\tif (this.has(provider)) {\n\t\t\tif (this.providers.has(provider)) {\n\t\t\t\treturn this.providers.get(provider);\n\t\t\t}\n\t\t\tfor (const parent of this.parents) {\n\t\t\t\tif (parent instanceof DependencyContainer) {\n\t\t\t\t\treturn parent.getProvider(provider);\n\t\t\t\t} else {\n\t\t\t\t\t// older implementations of the IFluidDependencySynthesizer exposed getProvider\n\t\t\t\t\tconst maybeGetProvider: { getProvider?(provider: string & keyof TMap) } =\n\t\t\t\t\t\tparent as any;\n\t\t\t\t\tif (maybeGetProvider?.getProvider !== undefined) {\n\t\t\t\t\t\treturn maybeGetProvider.getProvider(provider);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate generateRequired<T>(\n\t\tbase: AsyncRequiredFluidObjectProvider<T>,\n\t\ttypes: Required<FluidObjectSymbolProvider<T>>,\n\t) {\n\t\tif (types === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n\t\t\tconst provider = this.resolveProvider(key);\n\t\t\tif (provider === undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Object attempted to be created without registered required provider ${String(\n\t\t\t\t\t\tkey,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tObject.defineProperty(base, key, provider);\n\t\t}\n\t}\n\n\tprivate generateOptional<T>(\n\t\tbase: AsyncOptionalFluidObjectProvider<T>,\n\t\ttypes: FluidObjectSymbolProvider<T>,\n\t) {\n\t\tif (types === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n\t\t\t// back-compat: in 0.56 we allow undefined in the types, but we didn't before\n\t\t\t// this will keep runtime back compat, eventually we should support undefined properties\n\t\t\t// rather than properties that return promises that resolve to undefined\n\t\t\tconst provider = this.resolveProvider(key) ?? { get: async () => undefined };\n\t\t\tObject.defineProperty(base, key, provider);\n\t\t}\n\t}\n\n\tprivate resolveProvider<T extends keyof TMap>(t: T): PropertyDescriptor | undefined {\n\t\t// If we have the provider return it\n\t\tconst provider = this.providers.get(t);\n\t\tif (provider === undefined) {\n\t\t\tfor (const parent of this.parents) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\tconst sp = { [t]: t } as FluidObjectSymbolProvider<Pick<TMap, T>>;\n\t\t\t\tconst syn = parent.synthesize<Pick<TMap, T>, Record<string, unknown>>(sp, {});\n\t\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(syn, t);\n\t\t\t\tif (descriptor !== undefined) {\n\t\t\t\t\treturn descriptor;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// The double nested gets are required for lazy loading the provider resolution\n\t\tif (typeof provider === \"function\") {\n\t\t\treturn {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t\t\tget() {\n\t\t\t\t\tif (provider && typeof provider === \"function\") {\n\t\t\t\t\t\treturn Promise.resolve(this[IFluidDependencySynthesizer])\n\t\t\t\t\t\t\t.then(async (fds): Promise<any> => provider(fds))\n\t\t\t\t\t\t\t.then((p) => p?.[t]);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tif (provider) {\n\t\t\t\t\treturn new LazyPromise(async () => {\n\t\t\t\t\t\treturn Promise.resolve(provider).then((p) => {\n\t\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\treturn p[t];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.IFluidDependencySynthesizer = exports.DependencyContainer = void 0;
|
|
8
|
-
var dependencyContainer_1 = require("./dependencyContainer");
|
|
8
|
+
var dependencyContainer_1 = require("./dependencyContainer.cjs");
|
|
9
9
|
Object.defineProperty(exports, "DependencyContainer", { enumerable: true, get: function () { return dependencyContainer_1.DependencyContainer; } });
|
|
10
|
-
var IFluidDependencySynthesizer_1 = require("./IFluidDependencySynthesizer");
|
|
10
|
+
var IFluidDependencySynthesizer_1 = require("./IFluidDependencySynthesizer.cjs");
|
|
11
11
|
Object.defineProperty(exports, "IFluidDependencySynthesizer", { enumerable: true, get: function () { return IFluidDependencySynthesizer_1.IFluidDependencySynthesizer; } });
|
|
12
|
-
//# sourceMappingURL=index.
|
|
12
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iEAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,iFAGuC;AAFtC,0IAAA,2BAA2B,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { DependencyContainer } from \"./dependencyContainer\";\nexport {\n\tIFluidDependencySynthesizer,\n\tIProvideFluidDependencySynthesizer,\n} from \"./IFluidDependencySynthesizer\";\nexport {\n\tAsyncFluidObjectProvider,\n\tAsyncOptionalFluidObjectProvider,\n\tAsyncRequiredFluidObjectProvider,\n\tFluidObjectProvider,\n\tFluidObjectSymbolProvider,\n} from \"./types\";\n"]}
|
|
@@ -8,7 +8,7 @@ const assert_1 = require("assert");
|
|
|
8
8
|
const core_interfaces_1 = require("@fluidframework/core-interfaces");
|
|
9
9
|
const datastore_1 = require("@fluidframework/datastore");
|
|
10
10
|
const core_utils_1 = require("@fluidframework/core-utils");
|
|
11
|
-
const
|
|
11
|
+
const index_1 = require("../index.cjs");
|
|
12
12
|
const mockHandleContext = {
|
|
13
13
|
absolutePath: "",
|
|
14
14
|
isAttached: false,
|
|
@@ -44,7 +44,7 @@ describe("Routerlicious", () => {
|
|
|
44
44
|
describe("Aqueduct", () => {
|
|
45
45
|
describe("DependencyContainer", () => {
|
|
46
46
|
it(`One Optional Provider registered via value`, async () => {
|
|
47
|
-
const dc = new
|
|
47
|
+
const dc = new index_1.DependencyContainer();
|
|
48
48
|
const mock = new MockLoadable();
|
|
49
49
|
dc.register(core_interfaces_1.IFluidLoadable, mock);
|
|
50
50
|
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
@@ -54,7 +54,7 @@ describe("Routerlicious", () => {
|
|
|
54
54
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
55
55
|
});
|
|
56
56
|
it(`One Optional Provider registered via Promise value`, async () => {
|
|
57
|
-
const dc = new
|
|
57
|
+
const dc = new index_1.DependencyContainer();
|
|
58
58
|
const mock = new MockLoadable();
|
|
59
59
|
dc.register(core_interfaces_1.IFluidLoadable, Promise.resolve(mock));
|
|
60
60
|
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
@@ -64,7 +64,7 @@ describe("Routerlicious", () => {
|
|
|
64
64
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
65
65
|
});
|
|
66
66
|
it(`One Optional Provider registered via factory`, async () => {
|
|
67
|
-
const dc = new
|
|
67
|
+
const dc = new index_1.DependencyContainer();
|
|
68
68
|
const mock = new MockLoadable();
|
|
69
69
|
const factory = () => mock;
|
|
70
70
|
dc.register(core_interfaces_1.IFluidLoadable, factory);
|
|
@@ -75,7 +75,7 @@ describe("Routerlicious", () => {
|
|
|
75
75
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
76
76
|
});
|
|
77
77
|
it(`One Optional Provider registered via Promise factory`, async () => {
|
|
78
|
-
const dc = new
|
|
78
|
+
const dc = new index_1.DependencyContainer();
|
|
79
79
|
const mock = new MockLoadable();
|
|
80
80
|
const factory = async () => mock;
|
|
81
81
|
dc.register(core_interfaces_1.IFluidLoadable, factory);
|
|
@@ -86,7 +86,7 @@ describe("Routerlicious", () => {
|
|
|
86
86
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
87
87
|
});
|
|
88
88
|
it(`One Optional Provider registered via LazyPromise factory`, async () => {
|
|
89
|
-
const dc = new
|
|
89
|
+
const dc = new index_1.DependencyContainer();
|
|
90
90
|
const mock = new MockLoadable();
|
|
91
91
|
let lazyPromiseFlag = false;
|
|
92
92
|
const lazyFactory = new core_utils_1.LazyPromise(async () => {
|
|
@@ -106,7 +106,7 @@ describe("Routerlicious", () => {
|
|
|
106
106
|
});
|
|
107
107
|
});
|
|
108
108
|
it(`One Required Provider registered via value`, async () => {
|
|
109
|
-
const dc = new
|
|
109
|
+
const dc = new index_1.DependencyContainer();
|
|
110
110
|
const mock = new MockLoadable();
|
|
111
111
|
dc.register(core_interfaces_1.IFluidLoadable, mock);
|
|
112
112
|
const s = dc.synthesize(undefined, {
|
|
@@ -118,7 +118,7 @@ describe("Routerlicious", () => {
|
|
|
118
118
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
119
119
|
});
|
|
120
120
|
it(`One Required Provider registered via Promise value`, async () => {
|
|
121
|
-
const dc = new
|
|
121
|
+
const dc = new index_1.DependencyContainer();
|
|
122
122
|
const mock = new MockLoadable();
|
|
123
123
|
dc.register(core_interfaces_1.IFluidLoadable, Promise.resolve(mock));
|
|
124
124
|
const s = dc.synthesize(undefined, {
|
|
@@ -130,7 +130,7 @@ describe("Routerlicious", () => {
|
|
|
130
130
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
131
131
|
});
|
|
132
132
|
it(`One Required Provider registered via factory`, async () => {
|
|
133
|
-
const dc = new
|
|
133
|
+
const dc = new index_1.DependencyContainer();
|
|
134
134
|
const mock = new MockLoadable();
|
|
135
135
|
const factory = () => mock;
|
|
136
136
|
dc.register(core_interfaces_1.IFluidLoadable, factory);
|
|
@@ -143,7 +143,7 @@ describe("Routerlicious", () => {
|
|
|
143
143
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
144
144
|
});
|
|
145
145
|
it(`One Required Provider registered via Promise factory`, async () => {
|
|
146
|
-
const dc = new
|
|
146
|
+
const dc = new index_1.DependencyContainer();
|
|
147
147
|
const mock = new MockLoadable();
|
|
148
148
|
const factory = async () => mock;
|
|
149
149
|
dc.register(core_interfaces_1.IFluidLoadable, factory);
|
|
@@ -156,7 +156,7 @@ describe("Routerlicious", () => {
|
|
|
156
156
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
157
157
|
});
|
|
158
158
|
it(`One Required Provider registered via LazyPromise factory`, async () => {
|
|
159
|
-
const dc = new
|
|
159
|
+
const dc = new index_1.DependencyContainer();
|
|
160
160
|
const mock = new MockLoadable();
|
|
161
161
|
let lazyPromiseFlag = false;
|
|
162
162
|
const lazyFactory = new core_utils_1.LazyPromise(async () => {
|
|
@@ -178,7 +178,7 @@ describe("Routerlicious", () => {
|
|
|
178
178
|
});
|
|
179
179
|
});
|
|
180
180
|
it(`Two Optional Modules all registered`, async () => {
|
|
181
|
-
const dc = new
|
|
181
|
+
const dc = new index_1.DependencyContainer();
|
|
182
182
|
const loadableMock = new MockLoadable();
|
|
183
183
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
184
184
|
const routerMock = new MockFluidRouter();
|
|
@@ -192,7 +192,7 @@ describe("Routerlicious", () => {
|
|
|
192
192
|
(0, assert_1.strict)(router === routerMock, "IFluidRouter is expected");
|
|
193
193
|
});
|
|
194
194
|
it(`Two Optional Modules one registered`, async () => {
|
|
195
|
-
const dc = new
|
|
195
|
+
const dc = new index_1.DependencyContainer();
|
|
196
196
|
const loadableMock = new MockLoadable();
|
|
197
197
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
198
198
|
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter }, undefined);
|
|
@@ -203,7 +203,7 @@ describe("Routerlicious", () => {
|
|
|
203
203
|
(0, assert_1.strict)(!router, "Optional IFluidRouter was not registered");
|
|
204
204
|
});
|
|
205
205
|
it(`Two Optional Modules none registered`, async () => {
|
|
206
|
-
const dc = new
|
|
206
|
+
const dc = new index_1.DependencyContainer();
|
|
207
207
|
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter }, undefined);
|
|
208
208
|
const loadable = await s.IFluidLoadable;
|
|
209
209
|
(0, assert_1.strict)(!loadable, "Optional IFluidLoadable was not registered");
|
|
@@ -211,7 +211,7 @@ describe("Routerlicious", () => {
|
|
|
211
211
|
(0, assert_1.strict)(!router, "Optional IFluidRouter was not registered");
|
|
212
212
|
});
|
|
213
213
|
it(`Two Required Modules all registered`, async () => {
|
|
214
|
-
const dc = new
|
|
214
|
+
const dc = new index_1.DependencyContainer();
|
|
215
215
|
const loadableMock = new MockLoadable();
|
|
216
216
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
217
217
|
const routerMock = new MockFluidRouter();
|
|
@@ -225,16 +225,16 @@ describe("Routerlicious", () => {
|
|
|
225
225
|
(0, assert_1.strict)(router === routerMock, "IFluidRouter is expected");
|
|
226
226
|
});
|
|
227
227
|
it(`Required Provider not registered should throw`, async () => {
|
|
228
|
-
const dc = new
|
|
228
|
+
const dc = new index_1.DependencyContainer();
|
|
229
229
|
assert_1.strict.throws(() => dc.synthesize(undefined, {
|
|
230
230
|
IFluidLoadable: core_interfaces_1.IFluidLoadable,
|
|
231
231
|
}), Error);
|
|
232
232
|
});
|
|
233
233
|
it(`Optional Provider found in Parent`, async () => {
|
|
234
|
-
const parentDc = new
|
|
234
|
+
const parentDc = new index_1.DependencyContainer();
|
|
235
235
|
const mock = new MockLoadable();
|
|
236
236
|
parentDc.register(core_interfaces_1.IFluidLoadable, mock);
|
|
237
|
-
const dc = new
|
|
237
|
+
const dc = new index_1.DependencyContainer(parentDc);
|
|
238
238
|
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
239
239
|
const loadable = await s.IFluidLoadable;
|
|
240
240
|
(0, assert_1.strict)(loadable, "Optional IFluidLoadable was registered");
|
|
@@ -242,10 +242,10 @@ describe("Routerlicious", () => {
|
|
|
242
242
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
243
243
|
});
|
|
244
244
|
it(`Optional Modules found in Parent and Child`, async () => {
|
|
245
|
-
const parentDc = new
|
|
245
|
+
const parentDc = new index_1.DependencyContainer();
|
|
246
246
|
const loadableMock = new MockLoadable();
|
|
247
247
|
parentDc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
248
|
-
const dc = new
|
|
248
|
+
const dc = new index_1.DependencyContainer(parentDc);
|
|
249
249
|
const routerMock = new MockFluidRouter();
|
|
250
250
|
dc.register(core_interfaces_1.IFluidRouter, routerMock);
|
|
251
251
|
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter }, undefined);
|
|
@@ -257,9 +257,9 @@ describe("Routerlicious", () => {
|
|
|
257
257
|
(0, assert_1.strict)(router === routerMock, "IFluidRouter is expected");
|
|
258
258
|
});
|
|
259
259
|
it(`Optional Provider found in Parent and Child resolves Child`, async () => {
|
|
260
|
-
const parentDc = new
|
|
260
|
+
const parentDc = new index_1.DependencyContainer();
|
|
261
261
|
parentDc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
262
|
-
const dc = new
|
|
262
|
+
const dc = new index_1.DependencyContainer(parentDc);
|
|
263
263
|
const loadableMock = new MockLoadable();
|
|
264
264
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
265
265
|
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
@@ -268,10 +268,10 @@ describe("Routerlicious", () => {
|
|
|
268
268
|
(0, assert_1.strict)(loadable === loadableMock, "IFluidLoadable is expected");
|
|
269
269
|
});
|
|
270
270
|
it(`Required Provider found in Parent`, async () => {
|
|
271
|
-
const parentDc = new
|
|
271
|
+
const parentDc = new index_1.DependencyContainer();
|
|
272
272
|
const mock = new MockLoadable();
|
|
273
273
|
parentDc.register(core_interfaces_1.IFluidLoadable, mock);
|
|
274
|
-
const dc = new
|
|
274
|
+
const dc = new index_1.DependencyContainer(parentDc);
|
|
275
275
|
const s = dc.synthesize(undefined, {
|
|
276
276
|
IFluidLoadable: core_interfaces_1.IFluidLoadable,
|
|
277
277
|
});
|
|
@@ -281,10 +281,10 @@ describe("Routerlicious", () => {
|
|
|
281
281
|
(0, assert_1.strict)(loadable?.handle.absolutePath === mock.handle.absolutePath, "IFluidLoadable is valid");
|
|
282
282
|
});
|
|
283
283
|
it(`Required Modules found in Parent and Child`, async () => {
|
|
284
|
-
const parentDc = new
|
|
284
|
+
const parentDc = new index_1.DependencyContainer();
|
|
285
285
|
const loadableMock = new MockLoadable();
|
|
286
286
|
parentDc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
287
|
-
const dc = new
|
|
287
|
+
const dc = new index_1.DependencyContainer(parentDc);
|
|
288
288
|
const routerMock = new MockFluidRouter();
|
|
289
289
|
dc.register(core_interfaces_1.IFluidRouter, routerMock);
|
|
290
290
|
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter });
|
|
@@ -296,9 +296,9 @@ describe("Routerlicious", () => {
|
|
|
296
296
|
(0, assert_1.strict)(router === routerMock, "IFluidRouter is expected");
|
|
297
297
|
});
|
|
298
298
|
it(`Required Provider found in Parent and Child resolves Child`, async () => {
|
|
299
|
-
const parentDc = new
|
|
299
|
+
const parentDc = new index_1.DependencyContainer();
|
|
300
300
|
parentDc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
301
|
-
const dc = new
|
|
301
|
+
const dc = new index_1.DependencyContainer(parentDc);
|
|
302
302
|
const loadableMock = new MockLoadable();
|
|
303
303
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
304
304
|
const s = dc.synthesize(undefined, {
|
|
@@ -309,30 +309,30 @@ describe("Routerlicious", () => {
|
|
|
309
309
|
(0, assert_1.strict)(loadable === loadableMock, "IFluidLoadable is expected");
|
|
310
310
|
});
|
|
311
311
|
it(`Registering`, async () => {
|
|
312
|
-
const dc = new
|
|
312
|
+
const dc = new index_1.DependencyContainer();
|
|
313
313
|
dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
314
314
|
(0, assert_1.strict)(dc.has(core_interfaces_1.IFluidLoadable), "DependencyContainer has IFluidLoadable");
|
|
315
315
|
});
|
|
316
316
|
it(`Registering the same type twice throws`, async () => {
|
|
317
|
-
const dc = new
|
|
317
|
+
const dc = new index_1.DependencyContainer();
|
|
318
318
|
dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
319
319
|
assert_1.strict.throws(() => dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable()), Error);
|
|
320
320
|
});
|
|
321
321
|
it(`Registering then Unregistering`, async () => {
|
|
322
|
-
const dc = new
|
|
322
|
+
const dc = new index_1.DependencyContainer();
|
|
323
323
|
dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
324
324
|
dc.unregister(core_interfaces_1.IFluidLoadable);
|
|
325
325
|
(0, assert_1.strict)(!dc.has(core_interfaces_1.IFluidLoadable), "DependencyContainer doesn't have IFluidLoadable");
|
|
326
326
|
});
|
|
327
327
|
it(`Registering then Unregistering then Registering`, async () => {
|
|
328
|
-
const dc = new
|
|
328
|
+
const dc = new index_1.DependencyContainer();
|
|
329
329
|
dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
330
330
|
dc.unregister(core_interfaces_1.IFluidLoadable);
|
|
331
331
|
dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
332
332
|
(0, assert_1.strict)(dc.has(core_interfaces_1.IFluidLoadable), "DependencyContainer has IFluidLoadable");
|
|
333
333
|
});
|
|
334
334
|
it(`has() resolves correctly in all variations`, async () => {
|
|
335
|
-
const dc = new
|
|
335
|
+
const dc = new index_1.DependencyContainer();
|
|
336
336
|
dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
337
337
|
dc.register(core_interfaces_1.IFluidRouter, new MockFluidRouter());
|
|
338
338
|
(0, assert_1.strict)(dc.has(core_interfaces_1.IFluidLoadable), "Manager has IFluidLoadable");
|
|
@@ -340,10 +340,10 @@ describe("Routerlicious", () => {
|
|
|
340
340
|
(0, assert_1.strict)(dc.has(core_interfaces_1.IFluidLoadable) && dc.has(core_interfaces_1.IFluidRouter), "Manager has IFluidLoadable & IFluidRouter");
|
|
341
341
|
});
|
|
342
342
|
it(`Child has Parent modules`, async () => {
|
|
343
|
-
const parentDc = new
|
|
343
|
+
const parentDc = new index_1.DependencyContainer();
|
|
344
344
|
const loadableMock = new MockLoadable();
|
|
345
345
|
parentDc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
346
|
-
const dc = new
|
|
346
|
+
const dc = new index_1.DependencyContainer(parentDc);
|
|
347
347
|
const routerMock = new MockFluidRouter();
|
|
348
348
|
dc.register(core_interfaces_1.IFluidRouter, routerMock);
|
|
349
349
|
(0, assert_1.strict)(dc.has(core_interfaces_1.IFluidLoadable), "has includes parent registered");
|
|
@@ -352,7 +352,7 @@ describe("Routerlicious", () => {
|
|
|
352
352
|
(0, assert_1.strict)(!dc.has(core_interfaces_1.IFluidHandle), "does not include not registered");
|
|
353
353
|
});
|
|
354
354
|
it(`Parent Resolved from Child`, async () => {
|
|
355
|
-
const parentDc = new
|
|
355
|
+
const parentDc = new index_1.DependencyContainer();
|
|
356
356
|
const loadableToHandle = async (fds) => {
|
|
357
357
|
const loadable = fds.synthesize(undefined, {
|
|
358
358
|
IFluidLoadable: core_interfaces_1.IFluidLoadable,
|
|
@@ -360,20 +360,20 @@ describe("Routerlicious", () => {
|
|
|
360
360
|
return (await loadable.IFluidLoadable).handle;
|
|
361
361
|
};
|
|
362
362
|
parentDc.register(core_interfaces_1.IFluidHandle, loadableToHandle);
|
|
363
|
-
const dc = new
|
|
363
|
+
const dc = new index_1.DependencyContainer(parentDc);
|
|
364
364
|
const loadableMock = new MockLoadable();
|
|
365
365
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
366
366
|
const deps = dc.synthesize({ IFluidHandle: core_interfaces_1.IFluidHandle }, undefined);
|
|
367
367
|
(0, assert_1.strict)((await deps.IFluidHandle) !== undefined, "handle undefined");
|
|
368
368
|
});
|
|
369
369
|
it(`Undefined Provider is not Undefined`, async () => {
|
|
370
|
-
const dc = new
|
|
370
|
+
const dc = new index_1.DependencyContainer();
|
|
371
371
|
const deps = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, {});
|
|
372
372
|
(0, assert_1.strict)(deps.IFluidLoadable !== undefined, "handle undefined");
|
|
373
373
|
(0, assert_1.strict)((await deps.IFluidLoadable) === undefined, "handle undefined");
|
|
374
374
|
});
|
|
375
375
|
it(`test getProvider backcompat`, async () => {
|
|
376
|
-
const dc = new
|
|
376
|
+
const dc = new index_1.DependencyContainer();
|
|
377
377
|
const loadableMock = new MockLoadable();
|
|
378
378
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
379
379
|
const testGetProvider = (deps, scenario) => {
|
|
@@ -382,9 +382,9 @@ describe("Routerlicious", () => {
|
|
|
382
382
|
assert_1.strict.equal(provider, loadableMock, scenario);
|
|
383
383
|
};
|
|
384
384
|
testGetProvider(dc, "direct");
|
|
385
|
-
testGetProvider(new
|
|
385
|
+
testGetProvider(new index_1.DependencyContainer(dc), "parent");
|
|
386
386
|
testGetProvider(new PassThru(dc), "pass thru");
|
|
387
|
-
testGetProvider(new
|
|
387
|
+
testGetProvider(new index_1.DependencyContainer(new PassThru(dc)), "pass thru as child");
|
|
388
388
|
});
|
|
389
389
|
});
|
|
390
390
|
});
|
|
@@ -407,4 +407,4 @@ class PassThru {
|
|
|
407
407
|
}
|
|
408
408
|
}
|
|
409
409
|
}
|
|
410
|
-
//# sourceMappingURL=dependencyContainer.spec.
|
|
410
|
+
//# sourceMappingURL=dependencyContainer.spec.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyContainer.spec.cjs","sourceRoot":"","sources":["../../src/test/dependencyContainer.spec.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 { strict as assert } from \"assert\";\n\nimport {\n\tIFluidLoadable,\n\tIFluidHandleContext,\n\tIFluidHandle,\n\tIProvideFluidLoadable,\n\tIProvideFluidRouter,\n\tIProvideFluidHandle,\n\tFluidObject,\n\tIFluidRouter,\n} from \"@fluidframework/core-interfaces\";\nimport { FluidObjectHandle } from \"@fluidframework/datastore\";\n\nimport { LazyPromise } from \"@fluidframework/core-utils\";\nimport { DependencyContainer } from \"../index\";\nimport { IFluidDependencySynthesizer } from \"../IFluidDependencySynthesizer\";\nimport { AsyncFluidObjectProvider, FluidObjectProvider, FluidObjectSymbolProvider } from \"../types\";\n\nconst mockHandleContext: IFluidHandleContext = {\n\tabsolutePath: \"\",\n\tisAttached: false,\n\tIFluidHandleContext: undefined as any,\n\n\tattachGraph: () => {\n\t\tthrow new Error(\"Method not implemented.\");\n\t},\n\tresolveHandle: () => {\n\t\tthrow new Error(\"Method not implemented.\");\n\t},\n};\n\nclass MockLoadable implements IFluidLoadable {\n\tpublic get IFluidLoadable() {\n\t\treturn this;\n\t}\n\tpublic get handle() {\n\t\treturn new FluidObjectHandle(this, \"\", mockHandleContext);\n\t}\n}\n\nclass MockFluidRouter implements IFluidRouter {\n\tpublic get IFluidRouter() {\n\t\treturn this;\n\t}\n\tpublic async request() {\n\t\treturn {\n\t\t\tmimeType: \"\",\n\t\t\tstatus: 200,\n\t\t\tvalue: \"\",\n\t\t};\n\t}\n}\n\ndescribe(\"Routerlicious\", () => {\n\tdescribe(\"Aqueduct\", () => {\n\t\tdescribe(\"DependencyContainer\", () => {\n\t\t\tit(`One Optional Provider registered via value`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, mock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Optional Provider registered via Promise value`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, Promise.resolve(mock));\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Optional Provider registered via factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tconst factory = () => mock;\n\t\t\t\tdc.register(IFluidLoadable, factory);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Optional Provider registered via Promise factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tconst factory = async () => mock;\n\t\t\t\tdc.register(IFluidLoadable, factory);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Optional Provider registered via LazyPromise factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tlet lazyPromiseFlag = false;\n\t\t\t\tconst lazyFactory = new LazyPromise(async () => {\n\t\t\t\t\tlazyPromiseFlag = true;\n\t\t\t\t\treturn mock;\n\t\t\t\t});\n\t\t\t\tdc.register(IFluidLoadable, lazyFactory);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable_promise = s.IFluidLoadable;\n\t\t\t\t// This stacking of promises is done in order to make sure that the loadable_promise would have been executed by the time the assertion is done\n\t\t\t\tawait Promise.resolve().then(async () => {\n\t\t\t\t\tassert(!lazyPromiseFlag, \"Optional IFluidLoadable was correctly lazy loaded\");\n\t\t\t\t\tconst loadable = await loadable_promise;\n\t\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\t\tassert(\n\t\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via value`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, mock);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via Promise value`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, Promise.resolve(mock));\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tconst factory = () => mock;\n\t\t\t\tdc.register(IFluidLoadable, factory);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via Promise factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tconst factory = async () => mock;\n\t\t\t\tdc.register(IFluidLoadable, factory);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via LazyPromise factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tlet lazyPromiseFlag = false;\n\t\t\t\tconst lazyFactory = new LazyPromise(async () => {\n\t\t\t\t\tlazyPromiseFlag = true;\n\t\t\t\t\treturn mock;\n\t\t\t\t});\n\t\t\t\tdc.register(IFluidLoadable, lazyFactory);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable_promise = s.IFluidLoadable;\n\t\t\t\t// This stacking of promises is done in order to make sure that the loadable_promise would have been executed by the time the assertion is done\n\t\t\t\tawait Promise.resolve().then(async () => {\n\t\t\t\t\tassert(!lazyPromiseFlag, \"Required IFluidLoadable was correctly lazy loaded\");\n\t\t\t\t\tconst loadable = await loadable_promise;\n\t\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\t\tassert(\n\t\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(`Two Optional Modules all registered`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(router, \"Optional IFluidRouter was registered\");\n\t\t\t\tassert(router === routerMock, \"IFluidRouter is expected\");\n\t\t\t});\n\n\t\t\tit(`Two Optional Modules one registered`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(!router, \"Optional IFluidRouter was not registered\");\n\t\t\t});\n\n\t\t\tit(`Two Optional Modules none registered`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(!loadable, \"Optional IFluidLoadable was not registered\");\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(!router, \"Optional IFluidRouter was not registered\");\n\t\t\t});\n\n\t\t\tit(`Two Required Modules all registered`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidRouter>(\n\t\t\t\t\tundefined,\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(router, \"Required IFluidRouter was registered\");\n\t\t\t\tassert(router === routerMock, \"IFluidRouter is expected\");\n\t\t\t});\n\n\t\t\tit(`Required Provider not registered should throw`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\n\t\t\t\tassert.throws(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tdc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\t\t\tIFluidLoadable,\n\t\t\t\t\t\t}),\n\t\t\t\t\tError,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`Optional Provider found in Parent`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, mock);\n\t\t\t\tconst dc = new DependencyContainer(parentDc);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`Optional Modules found in Parent and Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidRouter>>(parentDc);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(router, \"Optional IFluidRouter was registered\");\n\t\t\t\tassert(router === routerMock, \"IFluidRouter is expected\");\n\t\t\t});\n\n\t\t\tit(`Optional Provider found in Parent and Child resolves Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tparentDc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\t\t\t});\n\n\t\t\tit(`Required Provider found in Parent`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, mock);\n\t\t\t\tconst dc = new DependencyContainer(parentDc);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`Required Modules found in Parent and Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidRouter>>(parentDc);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidRouter>(\n\t\t\t\t\tundefined,\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(router, \"Required IFluidRouter was registered\");\n\t\t\t\tassert(router === routerMock, \"IFluidRouter is expected\");\n\t\t\t});\n\n\t\t\tit(`Required Provider found in Parent and Child resolves Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tparentDc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\t\t\t});\n\n\t\t\tit(`Registering`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tassert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n\t\t\t});\n\n\t\t\tit(`Registering the same type twice throws`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tassert.throws(() => dc.register(IFluidLoadable, new MockLoadable()), Error);\n\t\t\t});\n\n\t\t\tit(`Registering then Unregistering`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tdc.unregister(IFluidLoadable);\n\t\t\t\tassert(!dc.has(IFluidLoadable), \"DependencyContainer doesn't have IFluidLoadable\");\n\t\t\t});\n\n\t\t\tit(`Registering then Unregistering then Registering`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tdc.unregister(IFluidLoadable);\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tassert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n\t\t\t});\n\n\t\t\tit(`has() resolves correctly in all variations`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tdc.register(IFluidRouter, new MockFluidRouter());\n\t\t\t\tassert(dc.has(IFluidLoadable), \"Manager has IFluidLoadable\");\n\t\t\t\tassert(dc.has(IFluidRouter), \"Manager has IFluidRouter\");\n\t\t\t\tassert(\n\t\t\t\t\tdc.has(IFluidLoadable) && dc.has(IFluidRouter),\n\t\t\t\t\t\"Manager has IFluidLoadable & IFluidRouter\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`Child has Parent modules`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidRouter>>(parentDc);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tassert(dc.has(IFluidLoadable), \"has includes parent registered\");\n\t\t\t\tassert(\n\t\t\t\t\t!dc.has(IFluidLoadable, true),\n\t\t\t\t\t\"has does not include excluded parent registered\",\n\t\t\t\t);\n\t\t\t\tassert(dc.has(IFluidRouter), \"has includes registered\");\n\t\t\t\tassert(!dc.has(IFluidHandle), \"does not include not registered\");\n\t\t\t});\n\n\t\t\tit(`Parent Resolved from Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidHandle>>();\n\t\t\t\tconst loadableToHandle: FluidObjectProvider<IProvideFluidHandle> = async (\n\t\t\t\t\tfds: IFluidDependencySynthesizer,\n\t\t\t\t) => {\n\t\t\t\t\tconst loadable = fds.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\t\tIFluidLoadable,\n\t\t\t\t\t});\n\t\t\t\t\treturn (await loadable.IFluidLoadable).handle;\n\t\t\t\t};\n\t\t\t\tparentDc.register(IFluidHandle, loadableToHandle);\n\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\n\t\t\t\tconst deps = dc.synthesize<IFluidHandle>({ IFluidHandle }, undefined);\n\t\t\t\tassert((await deps.IFluidHandle) !== undefined, \"handle undefined\");\n\t\t\t});\n\n\t\t\tit(`Undefined Provider is not Undefined`, async () => {\n\t\t\t\tconst dc = new DependencyContainer();\n\t\t\t\tconst deps = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, {});\n\t\t\t\tassert(deps.IFluidLoadable !== undefined, \"handle undefined\");\n\t\t\t\tassert((await deps.IFluidLoadable) === undefined, \"handle undefined\");\n\t\t\t});\n\n\t\t\tit(`test getProvider backcompat`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst testGetProvider = (deps: IFluidDependencySynthesizer, scenario: string) => {\n\t\t\t\t\tconst old = deps as any as {\n\t\t\t\t\t\tgetProvider(\n\t\t\t\t\t\t\tkey: \"IFluidLoadable\",\n\t\t\t\t\t\t): FluidObjectProvider<FluidObject<IFluidLoadable>>;\n\t\t\t\t\t};\n\t\t\t\t\tconst provider = old.getProvider(\"IFluidLoadable\");\n\t\t\t\t\tassert.equal(provider, loadableMock, scenario);\n\t\t\t\t};\n\t\t\t\ttestGetProvider(dc, \"direct\");\n\t\t\t\ttestGetProvider(new DependencyContainer(dc), \"parent\");\n\t\t\t\ttestGetProvider(new PassThru<FluidObject<IFluidLoadable>>(dc), \"pass thru\");\n\t\t\t\ttestGetProvider(\n\t\t\t\t\tnew DependencyContainer(new PassThru<FluidObject<IFluidLoadable>>(dc)),\n\t\t\t\t\t\"pass thru as child\",\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n});\n\nclass PassThru<TMap> implements IFluidDependencySynthesizer {\n\tconstructor(private readonly parent: IFluidDependencySynthesizer) {}\n\tsynthesize<O, R = Record<string, never> | undefined>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R> {\n\t\treturn this.parent.synthesize(optionalTypes, requiredTypes);\n\t}\n\thas(type: string): boolean {\n\t\treturn this.parent.has(type);\n\t}\n\treadonly IFluidDependencySynthesizer = this;\n\n\tgetProvider<K extends keyof TMap>(key: K): FluidObjectProvider<TMap[K]> | undefined {\n\t\tconst maybe = this.parent as any as Partial<this>;\n\t\tif (maybe.getProvider) {\n\t\t\treturn maybe.getProvider(key);\n\t\t}\n\t}\n}\n"]}
|
|
@@ -18,4 +18,4 @@ use_current_InterfaceDeclaration_IFluidDependencySynthesizer(get_old_InterfaceDe
|
|
|
18
18
|
use_old_InterfaceDeclaration_IFluidDependencySynthesizer(get_current_InterfaceDeclaration_IFluidDependencySynthesizer());
|
|
19
19
|
use_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer(get_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer());
|
|
20
20
|
use_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer(get_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer());
|
|
21
|
-
//# sourceMappingURL=validateSynthesizePrevious.generated.
|
|
21
|
+
//# sourceMappingURL=validateSynthesizePrevious.generated.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateSynthesizePrevious.generated.cjs","sourceRoot":"","sources":["../../../src/test/types/validateSynthesizePrevious.generated.ts"],"names":[],"mappings":";;AAgCA,yDAAyD,CACrD,qDAAqD,EAAE,CAAC,CAAC;AAW7D,qDAAqD,CACjD,yDAAyD,EAAE,CAAC,CAAC;AAWjE,iEAAiE,CAC7D,6DAA6D,EAAE,CAAC,CAAC;AAWrE,6DAA6D,CACzD,iEAAiE,EAAE,CAAC,CAAC;AAWzE,iEAAiE,CAC7D,6DAA6D,EAAE,CAAC,CAAC;AAWrE,6DAA6D,CACzD,iEAAiE,EAAE,CAAC,CAAC;AAWzE,gDAAgD,CAC5C,4CAA4C,EAAE,CAAC,CAAC;AAWpD,4CAA4C,CACxC,gDAAgD,EAAE,CAAC,CAAC;AAWxD,oDAAoD,CAChD,gDAAgD,EAAE,CAAC,CAAC;AAWxD,gDAAgD,CAC5C,oDAAoD,EAAE,CAAC,CAAC;AAW5D,0DAA0D,CACtD,sDAAsD,EAAE,CAAC,CAAC;AAW9D,sDAAsD,CAClD,0DAA0D,EAAE,CAAC,CAAC;AAWlE,2DAA2D,CACvD,uDAAuD,EAAE,CAAC,CAAC;AAW/D,uDAAuD,CACnD,2DAA2D,EAAE,CAAC,CAAC;AAWnE,4DAA4D,CACxD,wDAAwD,EAAE,CAAC,CAAC;AAWhE,wDAAwD,CACpD,4DAA4D,EAAE,CAAC,CAAC;AAWpE,mEAAmE,CAC/D,+DAA+D,EAAE,CAAC,CAAC;AAWvE,+DAA+D,CAC3D,mEAAmE,EAAE,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/*\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n * Generated by fluid-type-test-generator in @fluidframework/build-tools.\n */\nimport type * as old from \"@fluidframework/synthesize-previous\";\nimport type * as current from \"../../index\";\n\n\n// See 'build-tools/src/type-test-generator/compatibility.ts' for more information.\ntype TypeOnly<T> = T extends number\n\t? number\n\t: T extends string\n\t? string\n\t: T extends boolean | bigint | symbol\n\t? T\n\t: {\n\t\t\t[P in keyof T]: TypeOnly<T[P]>;\n\t };\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncFluidObjectProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_AsyncFluidObjectProvider():\n TypeOnly<old.AsyncFluidObjectProvider<any,any>>;\ndeclare function use_current_TypeAliasDeclaration_AsyncFluidObjectProvider(\n use: TypeOnly<current.AsyncFluidObjectProvider<any,any>>): void;\nuse_current_TypeAliasDeclaration_AsyncFluidObjectProvider(\n get_old_TypeAliasDeclaration_AsyncFluidObjectProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncFluidObjectProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_AsyncFluidObjectProvider():\n TypeOnly<current.AsyncFluidObjectProvider<any,any>>;\ndeclare function use_old_TypeAliasDeclaration_AsyncFluidObjectProvider(\n use: TypeOnly<old.AsyncFluidObjectProvider<any,any>>): void;\nuse_old_TypeAliasDeclaration_AsyncFluidObjectProvider(\n get_current_TypeAliasDeclaration_AsyncFluidObjectProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncOptionalFluidObjectProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider():\n TypeOnly<old.AsyncOptionalFluidObjectProvider<any>>;\ndeclare function use_current_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider(\n use: TypeOnly<current.AsyncOptionalFluidObjectProvider<any>>): void;\nuse_current_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider(\n get_old_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncOptionalFluidObjectProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider():\n TypeOnly<current.AsyncOptionalFluidObjectProvider<any>>;\ndeclare function use_old_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider(\n use: TypeOnly<old.AsyncOptionalFluidObjectProvider<any>>): void;\nuse_old_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider(\n get_current_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncRequiredFluidObjectProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider():\n TypeOnly<old.AsyncRequiredFluidObjectProvider<any>>;\ndeclare function use_current_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider(\n use: TypeOnly<current.AsyncRequiredFluidObjectProvider<any>>): void;\nuse_current_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider(\n get_old_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncRequiredFluidObjectProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider():\n TypeOnly<current.AsyncRequiredFluidObjectProvider<any>>;\ndeclare function use_old_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider(\n use: TypeOnly<old.AsyncRequiredFluidObjectProvider<any>>): void;\nuse_old_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider(\n get_current_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_DependencyContainer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_DependencyContainer():\n TypeOnly<old.DependencyContainer<any>>;\ndeclare function use_current_ClassDeclaration_DependencyContainer(\n use: TypeOnly<current.DependencyContainer<any>>): void;\nuse_current_ClassDeclaration_DependencyContainer(\n get_old_ClassDeclaration_DependencyContainer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_DependencyContainer\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_DependencyContainer():\n TypeOnly<current.DependencyContainer<any>>;\ndeclare function use_old_ClassDeclaration_DependencyContainer(\n use: TypeOnly<old.DependencyContainer<any>>): void;\nuse_old_ClassDeclaration_DependencyContainer(\n get_current_ClassDeclaration_DependencyContainer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_FluidObjectProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_FluidObjectProvider():\n TypeOnly<old.FluidObjectProvider<any>>;\ndeclare function use_current_TypeAliasDeclaration_FluidObjectProvider(\n use: TypeOnly<current.FluidObjectProvider<any>>): void;\nuse_current_TypeAliasDeclaration_FluidObjectProvider(\n get_old_TypeAliasDeclaration_FluidObjectProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_FluidObjectProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_FluidObjectProvider():\n TypeOnly<current.FluidObjectProvider<any>>;\ndeclare function use_old_TypeAliasDeclaration_FluidObjectProvider(\n use: TypeOnly<old.FluidObjectProvider<any>>): void;\nuse_old_TypeAliasDeclaration_FluidObjectProvider(\n get_current_TypeAliasDeclaration_FluidObjectProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_FluidObjectSymbolProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_FluidObjectSymbolProvider():\n TypeOnly<old.FluidObjectSymbolProvider<any>>;\ndeclare function use_current_TypeAliasDeclaration_FluidObjectSymbolProvider(\n use: TypeOnly<current.FluidObjectSymbolProvider<any>>): void;\nuse_current_TypeAliasDeclaration_FluidObjectSymbolProvider(\n get_old_TypeAliasDeclaration_FluidObjectSymbolProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_FluidObjectSymbolProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_FluidObjectSymbolProvider():\n TypeOnly<current.FluidObjectSymbolProvider<any>>;\ndeclare function use_old_TypeAliasDeclaration_FluidObjectSymbolProvider(\n use: TypeOnly<old.FluidObjectSymbolProvider<any>>): void;\nuse_old_TypeAliasDeclaration_FluidObjectSymbolProvider(\n get_current_TypeAliasDeclaration_FluidObjectSymbolProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_IFluidDependencySynthesizer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidDependencySynthesizer():\n TypeOnly<typeof old.IFluidDependencySynthesizer>;\ndeclare function use_current_VariableDeclaration_IFluidDependencySynthesizer(\n use: TypeOnly<typeof current.IFluidDependencySynthesizer>): void;\nuse_current_VariableDeclaration_IFluidDependencySynthesizer(\n get_old_VariableDeclaration_IFluidDependencySynthesizer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_IFluidDependencySynthesizer\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidDependencySynthesizer():\n TypeOnly<typeof current.IFluidDependencySynthesizer>;\ndeclare function use_old_VariableDeclaration_IFluidDependencySynthesizer(\n use: TypeOnly<typeof old.IFluidDependencySynthesizer>): void;\nuse_old_VariableDeclaration_IFluidDependencySynthesizer(\n get_current_VariableDeclaration_IFluidDependencySynthesizer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IFluidDependencySynthesizer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidDependencySynthesizer():\n TypeOnly<old.IFluidDependencySynthesizer>;\ndeclare function use_current_InterfaceDeclaration_IFluidDependencySynthesizer(\n use: TypeOnly<current.IFluidDependencySynthesizer>): void;\nuse_current_InterfaceDeclaration_IFluidDependencySynthesizer(\n get_old_InterfaceDeclaration_IFluidDependencySynthesizer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IFluidDependencySynthesizer\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidDependencySynthesizer():\n TypeOnly<current.IFluidDependencySynthesizer>;\ndeclare function use_old_InterfaceDeclaration_IFluidDependencySynthesizer(\n use: TypeOnly<old.IFluidDependencySynthesizer>): void;\nuse_old_InterfaceDeclaration_IFluidDependencySynthesizer(\n get_current_InterfaceDeclaration_IFluidDependencySynthesizer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IProvideFluidDependencySynthesizer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer():\n TypeOnly<old.IProvideFluidDependencySynthesizer>;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer(\n use: TypeOnly<current.IProvideFluidDependencySynthesizer>): void;\nuse_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer(\n get_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IProvideFluidDependencySynthesizer\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer():\n TypeOnly<current.IProvideFluidDependencySynthesizer>;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer(\n use: TypeOnly<old.IProvideFluidDependencySynthesizer>): void;\nuse_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer(\n get_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer());\n"]}
|
package/dist/tsdoc-metadata.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IFluidDependencySynthesizer } from \".\";\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type mapped to a string representation\n * of that property.\n *\n * @example\n *\n * ```typescript\n * { IFoo: \"IFoo\" }\n * ```\n */\nexport type FluidObjectSymbolProvider<T> = {\n\t[P in keyof T]?: P;\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type mapped to an object that implements\n * the property.\n */\nexport type AsyncRequiredFluidObjectProvider<T> = T extends undefined\n\t? Record<string, never>\n\t: {\n\t\t\t[P in keyof T]: Promise<NonNullable<Exclude<T[P], undefined | null>>>;\n\t };\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type, mapped to an object that implements\n * the property or undefined.\n */\nexport type AsyncOptionalFluidObjectProvider<T> = T extends undefined\n\t? Record<string, never>\n\t: {\n\t\t\t[P in keyof T]?: Promise<T[P] | undefined>;\n\t };\n\n/**\n * Combined type for Optional and Required Async Fluid object Providers\n */\nexport type AsyncFluidObjectProvider<O, R = undefined> = AsyncOptionalFluidObjectProvider<O> &\n\tAsyncRequiredFluidObjectProvider<R>;\n\n/**\n * Multiple ways to provide a Fluid object.\n */\nexport type FluidObjectProvider<T> =\n\t| NonNullable<T>\n\t| Promise<NonNullable<T>>\n\t| ((dependencyContainer: IFluidDependencySynthesizer) => NonNullable<T>)\n\t| ((dependencyContainer: IFluidDependencySynthesizer) => Promise<NonNullable<T>>);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IFluidDependencySynthesizer.mjs","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,2BAA2B,GACvC,6BAA6B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AsyncFluidObjectProvider, FluidObjectSymbolProvider } from \"./types\";\n\nexport const IFluidDependencySynthesizer: keyof IProvideFluidDependencySynthesizer =\n\t\"IFluidDependencySynthesizer\";\n\nexport interface IProvideFluidDependencySynthesizer {\n\tIFluidDependencySynthesizer: IFluidDependencySynthesizer;\n}\n\n/**\n * IFluidDependencySynthesizer can generate FluidObjects based on the IProvideFluidObject pattern.\n * It allow for registering providers and uses synthesize to generate a new object with the optional\n * and required types.\n */\nexport interface IFluidDependencySynthesizer extends IProvideFluidDependencySynthesizer {\n\t/**\n\t * synthesize takes optional and required types and returns an object that will fulfill the\n\t * defined types based off objects that has been previously registered.\n\t *\n\t * @param optionalTypes - optional types to be in the Scope object\n\t * @param requiredTypes - required types that need to be in the Scope object\n\t */\n\tsynthesize<O, R = undefined | Record<string, never>>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R>;\n\n\t/**\n\t * Check if a given type is registered\n\t * @param type - Type to check\n\t */\n\thas(type: string): boolean;\n}\n"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { LazyPromise } from "@fluidframework/core-utils";
|
|
6
|
-
import { IFluidDependencySynthesizer } from "./IFluidDependencySynthesizer";
|
|
6
|
+
import { IFluidDependencySynthesizer } from "./IFluidDependencySynthesizer.mjs";
|
|
7
7
|
/**
|
|
8
8
|
* DependencyContainer is similar to a IoC Container. It takes providers and will
|
|
9
9
|
* synthesize an object based on them when requested.
|
|
@@ -152,4 +152,4 @@ export class DependencyContainer {
|
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
//# sourceMappingURL=dependencyContainer.
|
|
155
|
+
//# sourceMappingURL=dependencyContainer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyContainer.mjs","sourceRoot":"","sources":["../src/dependencyContainer.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 { LazyPromise } from \"@fluidframework/core-utils\";\nimport {\n\tAsyncFluidObjectProvider,\n\tFluidObjectSymbolProvider,\n\tFluidObjectProvider,\n\tAsyncOptionalFluidObjectProvider,\n\tAsyncRequiredFluidObjectProvider,\n} from \"./types\";\nimport { IFluidDependencySynthesizer } from \"./IFluidDependencySynthesizer\";\n\n/**\n * DependencyContainer is similar to a IoC Container. It takes providers and will\n * synthesize an object based on them when requested.\n */\nexport class DependencyContainer<TMap> implements IFluidDependencySynthesizer {\n\tprivate readonly providers = new Map<keyof TMap, FluidObjectProvider<any>>();\n\tprivate readonly parents: IFluidDependencySynthesizer[];\n\tpublic get IFluidDependencySynthesizer() {\n\t\treturn this;\n\t}\n\n\tpublic constructor(...parents: (IFluidDependencySynthesizer | undefined)[]) {\n\t\tthis.parents = parents.filter((v): v is IFluidDependencySynthesizer => v !== undefined);\n\t}\n\n\t/**\n\t * Add a new provider\n\t * @param type - Name of the Type T being provided\n\t * @param provider - A provider that will resolve the T correctly when asked\n\t * @throws - If passing a type that's already registered\n\t */\n\tpublic register<T extends keyof TMap = keyof TMap>(\n\t\ttype: T,\n\t\tprovider: FluidObjectProvider<Pick<TMap, T>>,\n\t): void {\n\t\tif (this.providers.has(type)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Attempting to register a provider of type ${String(type)} that already exists`,\n\t\t\t);\n\t\t}\n\n\t\tthis.providers.set(type, provider);\n\t}\n\n\t/**\n\t * Remove a provider\n\t * @param type - Name of the provider to remove\n\t */\n\tpublic unregister(type: keyof TMap): void {\n\t\tif (this.providers.has(type)) {\n\t\t\tthis.providers.delete(type);\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n\t */\n\tpublic synthesize<O, R = undefined | Record<string, never>>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R> {\n\t\tconst base: AsyncFluidObjectProvider<O, R> = {} as any;\n\t\tthis.generateRequired<R>(base, requiredTypes);\n\t\tthis.generateOptional<O>(base, optionalTypes);\n\t\tObject.defineProperty(base, IFluidDependencySynthesizer, { get: () => this });\n\t\treturn base;\n\t}\n\n\t/**\n\t * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n\t * @param excludeParents - If true, exclude checking parent registries\n\t */\n\tpublic has(type: string, excludeParents?: boolean): boolean {\n\t\tif (this.providers.has(type as keyof TMap)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (excludeParents !== true) {\n\t\t\treturn this.parents.some((p: IFluidDependencySynthesizer) => p.has(type));\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t * @deprecated Needed for backwards compatability.\n\t */\n\tprivate getProvider(provider: string & keyof TMap) {\n\t\t// this was removed, but some partners have trouble with back compat where they\n\t\t// use invalid patterns with FluidObject and IFluidDependencySynthesizer\n\t\t// this is just for back compat until those are removed\n\t\tif (this.has(provider)) {\n\t\t\tif (this.providers.has(provider)) {\n\t\t\t\treturn this.providers.get(provider);\n\t\t\t}\n\t\t\tfor (const parent of this.parents) {\n\t\t\t\tif (parent instanceof DependencyContainer) {\n\t\t\t\t\treturn parent.getProvider(provider);\n\t\t\t\t} else {\n\t\t\t\t\t// older implementations of the IFluidDependencySynthesizer exposed getProvider\n\t\t\t\t\tconst maybeGetProvider: { getProvider?(provider: string & keyof TMap) } =\n\t\t\t\t\t\tparent as any;\n\t\t\t\t\tif (maybeGetProvider?.getProvider !== undefined) {\n\t\t\t\t\t\treturn maybeGetProvider.getProvider(provider);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate generateRequired<T>(\n\t\tbase: AsyncRequiredFluidObjectProvider<T>,\n\t\ttypes: Required<FluidObjectSymbolProvider<T>>,\n\t) {\n\t\tif (types === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n\t\t\tconst provider = this.resolveProvider(key);\n\t\t\tif (provider === undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Object attempted to be created without registered required provider ${String(\n\t\t\t\t\t\tkey,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tObject.defineProperty(base, key, provider);\n\t\t}\n\t}\n\n\tprivate generateOptional<T>(\n\t\tbase: AsyncOptionalFluidObjectProvider<T>,\n\t\ttypes: FluidObjectSymbolProvider<T>,\n\t) {\n\t\tif (types === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n\t\t\t// back-compat: in 0.56 we allow undefined in the types, but we didn't before\n\t\t\t// this will keep runtime back compat, eventually we should support undefined properties\n\t\t\t// rather than properties that return promises that resolve to undefined\n\t\t\tconst provider = this.resolveProvider(key) ?? { get: async () => undefined };\n\t\t\tObject.defineProperty(base, key, provider);\n\t\t}\n\t}\n\n\tprivate resolveProvider<T extends keyof TMap>(t: T): PropertyDescriptor | undefined {\n\t\t// If we have the provider return it\n\t\tconst provider = this.providers.get(t);\n\t\tif (provider === undefined) {\n\t\t\tfor (const parent of this.parents) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\tconst sp = { [t]: t } as FluidObjectSymbolProvider<Pick<TMap, T>>;\n\t\t\t\tconst syn = parent.synthesize<Pick<TMap, T>, Record<string, unknown>>(sp, {});\n\t\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(syn, t);\n\t\t\t\tif (descriptor !== undefined) {\n\t\t\t\t\treturn descriptor;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// The double nested gets are required for lazy loading the provider resolution\n\t\tif (typeof provider === \"function\") {\n\t\t\treturn {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t\t\tget() {\n\t\t\t\t\tif (provider && typeof provider === \"function\") {\n\t\t\t\t\t\treturn Promise.resolve(this[IFluidDependencySynthesizer])\n\t\t\t\t\t\t\t.then(async (fds): Promise<any> => provider(fds))\n\t\t\t\t\t\t\t.then((p) => p?.[t]);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tif (provider) {\n\t\t\t\t\treturn new LazyPromise(async () => {\n\t\t\t\t\t\treturn Promise.resolve(provider).then((p) => {\n\t\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\treturn p[t];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { DependencyContainer } from "./dependencyContainer";
|
|
6
|
-
export { IFluidDependencySynthesizer, } from "./IFluidDependencySynthesizer";
|
|
7
|
-
//# sourceMappingURL=index.
|
|
5
|
+
export { DependencyContainer } from "./dependencyContainer.mjs";
|
|
6
|
+
export { IFluidDependencySynthesizer, } from "./IFluidDependencySynthesizer.mjs";
|
|
7
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,mBAAmB,EAAE;OACvB,EACN,2BAA2B,GAE3B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { DependencyContainer } from \"./dependencyContainer\";\nexport {\n\tIFluidDependencySynthesizer,\n\tIProvideFluidDependencySynthesizer,\n} from \"./IFluidDependencySynthesizer\";\nexport {\n\tAsyncFluidObjectProvider,\n\tAsyncOptionalFluidObjectProvider,\n\tAsyncRequiredFluidObjectProvider,\n\tFluidObjectProvider,\n\tFluidObjectSymbolProvider,\n} from \"./types\";\n"]}
|
package/lib/types.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IFluidDependencySynthesizer } from \".\";\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type mapped to a string representation\n * of that property.\n *\n * @example\n *\n * ```typescript\n * { IFoo: \"IFoo\" }\n * ```\n */\nexport type FluidObjectSymbolProvider<T> = {\n\t[P in keyof T]?: P;\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type mapped to an object that implements\n * the property.\n */\nexport type AsyncRequiredFluidObjectProvider<T> = T extends undefined\n\t? Record<string, never>\n\t: {\n\t\t\t[P in keyof T]: Promise<NonNullable<Exclude<T[P], undefined | null>>>;\n\t };\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type, mapped to an object that implements\n * the property or undefined.\n */\nexport type AsyncOptionalFluidObjectProvider<T> = T extends undefined\n\t? Record<string, never>\n\t: {\n\t\t\t[P in keyof T]?: Promise<T[P] | undefined>;\n\t };\n\n/**\n * Combined type for Optional and Required Async Fluid object Providers\n */\nexport type AsyncFluidObjectProvider<O, R = undefined> = AsyncOptionalFluidObjectProvider<O> &\n\tAsyncRequiredFluidObjectProvider<R>;\n\n/**\n * Multiple ways to provide a Fluid object.\n */\nexport type FluidObjectProvider<T> =\n\t| NonNullable<T>\n\t| Promise<NonNullable<T>>\n\t| ((dependencyContainer: IFluidDependencySynthesizer) => NonNullable<T>)\n\t| ((dependencyContainer: IFluidDependencySynthesizer) => Promise<NonNullable<T>>);\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/synthesize",
|
|
3
|
-
"version": "2.0.0-dev.7.3.0.
|
|
3
|
+
"version": "2.0.0-dev.7.3.0.211848",
|
|
4
4
|
"description": "A library for synthesizing scope objects.",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -11,8 +11,20 @@
|
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"author": "Microsoft and contributors",
|
|
13
13
|
"sideEffects": false,
|
|
14
|
-
"
|
|
15
|
-
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"import": {
|
|
17
|
+
"types": "./lib/index.d.ts",
|
|
18
|
+
"default": "./lib/index.mjs"
|
|
19
|
+
},
|
|
20
|
+
"require": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"default": "./dist/index.cjs"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"main": "dist/index.cjs",
|
|
27
|
+
"module": "lib/index.mjs",
|
|
16
28
|
"types": "dist/index.d.ts",
|
|
17
29
|
"files": [
|
|
18
30
|
"dist/**/*",
|
|
@@ -23,12 +35,12 @@
|
|
|
23
35
|
"cache-dir": "nyc/.cache",
|
|
24
36
|
"exclude": [
|
|
25
37
|
"src/test/**/*.ts",
|
|
26
|
-
"dist/test/**/*.
|
|
38
|
+
"dist/test/**/*.cjs"
|
|
27
39
|
],
|
|
28
40
|
"exclude-after-remap": false,
|
|
29
41
|
"include": [
|
|
30
42
|
"src/**/*.ts",
|
|
31
|
-
"dist/**/*.
|
|
43
|
+
"dist/**/*.cjs"
|
|
32
44
|
],
|
|
33
45
|
"report-dir": "nyc/report",
|
|
34
46
|
"reporter": [
|
|
@@ -39,18 +51,18 @@
|
|
|
39
51
|
"temp-directory": "nyc/.nyc_output"
|
|
40
52
|
},
|
|
41
53
|
"dependencies": {
|
|
42
|
-
"@fluidframework/core-utils": "2.0.0-dev.7.3.0.
|
|
54
|
+
"@fluidframework/core-utils": "2.0.0-dev.7.3.0.211848"
|
|
43
55
|
},
|
|
44
56
|
"devDependencies": {
|
|
45
|
-
"@fluid-tools/build-cli": "
|
|
57
|
+
"@fluid-tools/build-cli": "0.28.0-210888",
|
|
46
58
|
"@fluidframework/build-common": "^2.0.3",
|
|
47
|
-
"@fluidframework/build-tools": "
|
|
48
|
-
"@fluidframework/core-interfaces": "2.0.0-dev.7.3.0.
|
|
49
|
-
"@fluidframework/datastore": "2.0.0-dev.7.3.0.
|
|
59
|
+
"@fluidframework/build-tools": "0.28.0-210888",
|
|
60
|
+
"@fluidframework/core-interfaces": "2.0.0-dev.7.3.0.211848",
|
|
61
|
+
"@fluidframework/datastore": "2.0.0-dev.7.3.0.211848",
|
|
50
62
|
"@fluidframework/eslint-config-fluid": "^3.1.0",
|
|
51
|
-
"@fluidframework/mocha-test-setup": "2.0.0-dev.7.3.0.
|
|
63
|
+
"@fluidframework/mocha-test-setup": "2.0.0-dev.7.3.0.211848",
|
|
52
64
|
"@fluidframework/synthesize-previous": "npm:@fluidframework/synthesize@2.0.0-internal.7.2.0",
|
|
53
|
-
"@microsoft/api-extractor": "^7.
|
|
65
|
+
"@microsoft/api-extractor": "^7.38.3",
|
|
54
66
|
"@types/mocha": "^9.1.1",
|
|
55
67
|
"@types/node": "^16.18.38",
|
|
56
68
|
"c8": "^7.7.1",
|
|
@@ -62,6 +74,7 @@
|
|
|
62
74
|
"moment": "^2.21.0",
|
|
63
75
|
"prettier": "~3.0.3",
|
|
64
76
|
"rimraf": "^4.4.0",
|
|
77
|
+
"tsc-multi": "^1.1.0",
|
|
65
78
|
"typescript": "~5.1.6"
|
|
66
79
|
},
|
|
67
80
|
"typeValidation": {
|
|
@@ -72,10 +85,10 @@
|
|
|
72
85
|
"build:commonjs": "fluid-build . --task commonjs",
|
|
73
86
|
"build:compile": "fluid-build . --task compile",
|
|
74
87
|
"build:docs": "api-extractor run --local",
|
|
75
|
-
"build:esnext": "tsc --
|
|
76
|
-
"build:test": "tsc --
|
|
88
|
+
"build:esnext": "tsc-multi --config ../../../common/build/build-common/tsc-multi.esm.json",
|
|
89
|
+
"build:test": "tsc-multi --config ./tsc-multi.test.json",
|
|
77
90
|
"ci:build:docs": "api-extractor run",
|
|
78
|
-
"clean": "rimraf --glob dist lib \"
|
|
91
|
+
"clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
|
|
79
92
|
"eslint": "eslint --format stylish src",
|
|
80
93
|
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
81
94
|
"format": "npm run prettier:fix",
|
|
@@ -87,7 +100,7 @@
|
|
|
87
100
|
"test:coverage": "c8 npm test",
|
|
88
101
|
"test:mocha": "mocha --ignore \"dist/test/types/*\" --recursive dist/test -r node_modules/@fluidframework/mocha-test-setup",
|
|
89
102
|
"test:mocha:verbose": "cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha",
|
|
90
|
-
"tsc": "tsc",
|
|
103
|
+
"tsc": "tsc-multi --config ../../../common/build/build-common/tsc-multi.cjs.json",
|
|
91
104
|
"typetests:gen": "fluid-type-test-generator",
|
|
92
105
|
"typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
|
|
93
106
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IFluidDependencySynthesizer.js","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIU,QAAA,2BAA2B,GACvC,6BAA6B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AsyncFluidObjectProvider, FluidObjectSymbolProvider } from \"./types\";\n\nexport const IFluidDependencySynthesizer: keyof IProvideFluidDependencySynthesizer =\n\t\"IFluidDependencySynthesizer\";\n\nexport interface IProvideFluidDependencySynthesizer {\n\tIFluidDependencySynthesizer: IFluidDependencySynthesizer;\n}\n\n/**\n * IFluidDependencySynthesizer can generate FluidObjects based on the IProvideFluidObject pattern.\n * It allow for registering providers and uses synthesize to generate a new object with the optional\n * and required types.\n */\nexport interface IFluidDependencySynthesizer extends IProvideFluidDependencySynthesizer {\n\t/**\n\t * synthesize takes optional and required types and returns an object that will fulfill the\n\t * defined types based off objects that has been previously registered.\n\t *\n\t * @param optionalTypes - optional types to be in the Scope object\n\t * @param requiredTypes - required types that need to be in the Scope object\n\t */\n\tsynthesize<O, R = undefined | Record<string, never>>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R>;\n\n\t/**\n\t * Check if a given type is registered\n\t * @param type - Type to check\n\t */\n\thas(type: string): boolean;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyContainer.js","sourceRoot":"","sources":["../src/dependencyContainer.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 { LazyPromise } from \"@fluidframework/core-utils\";\nimport {\n\tAsyncFluidObjectProvider,\n\tFluidObjectSymbolProvider,\n\tFluidObjectProvider,\n\tAsyncOptionalFluidObjectProvider,\n\tAsyncRequiredFluidObjectProvider,\n} from \"./types\";\nimport { IFluidDependencySynthesizer } from \"./IFluidDependencySynthesizer\";\n\n/**\n * DependencyContainer is similar to a IoC Container. It takes providers and will\n * synthesize an object based on them when requested.\n */\nexport class DependencyContainer<TMap> implements IFluidDependencySynthesizer {\n\tprivate readonly providers = new Map<keyof TMap, FluidObjectProvider<any>>();\n\tprivate readonly parents: IFluidDependencySynthesizer[];\n\tpublic get IFluidDependencySynthesizer() {\n\t\treturn this;\n\t}\n\n\tpublic constructor(...parents: (IFluidDependencySynthesizer | undefined)[]) {\n\t\tthis.parents = parents.filter((v): v is IFluidDependencySynthesizer => v !== undefined);\n\t}\n\n\t/**\n\t * Add a new provider\n\t * @param type - Name of the Type T being provided\n\t * @param provider - A provider that will resolve the T correctly when asked\n\t * @throws - If passing a type that's already registered\n\t */\n\tpublic register<T extends keyof TMap = keyof TMap>(\n\t\ttype: T,\n\t\tprovider: FluidObjectProvider<Pick<TMap, T>>,\n\t): void {\n\t\tif (this.providers.has(type)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Attempting to register a provider of type ${String(type)} that already exists`,\n\t\t\t);\n\t\t}\n\n\t\tthis.providers.set(type, provider);\n\t}\n\n\t/**\n\t * Remove a provider\n\t * @param type - Name of the provider to remove\n\t */\n\tpublic unregister(type: keyof TMap): void {\n\t\tif (this.providers.has(type)) {\n\t\t\tthis.providers.delete(type);\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n\t */\n\tpublic synthesize<O, R = undefined | Record<string, never>>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R> {\n\t\tconst base: AsyncFluidObjectProvider<O, R> = {} as any;\n\t\tthis.generateRequired<R>(base, requiredTypes);\n\t\tthis.generateOptional<O>(base, optionalTypes);\n\t\tObject.defineProperty(base, IFluidDependencySynthesizer, { get: () => this });\n\t\treturn base;\n\t}\n\n\t/**\n\t * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n\t * @param excludeParents - If true, exclude checking parent registries\n\t */\n\tpublic has(type: string, excludeParents?: boolean): boolean {\n\t\tif (this.providers.has(type as keyof TMap)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (excludeParents !== true) {\n\t\t\treturn this.parents.some((p: IFluidDependencySynthesizer) => p.has(type));\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t * @deprecated Needed for backwards compatability.\n\t */\n\tprivate getProvider(provider: string & keyof TMap) {\n\t\t// this was removed, but some partners have trouble with back compat where they\n\t\t// use invalid patterns with FluidObject and IFluidDependencySynthesizer\n\t\t// this is just for back compat until those are removed\n\t\tif (this.has(provider)) {\n\t\t\tif (this.providers.has(provider)) {\n\t\t\t\treturn this.providers.get(provider);\n\t\t\t}\n\t\t\tfor (const parent of this.parents) {\n\t\t\t\tif (parent instanceof DependencyContainer) {\n\t\t\t\t\treturn parent.getProvider(provider);\n\t\t\t\t} else {\n\t\t\t\t\t// older implementations of the IFluidDependencySynthesizer exposed getProvider\n\t\t\t\t\tconst maybeGetProvider: { getProvider?(provider: string & keyof TMap) } =\n\t\t\t\t\t\tparent as any;\n\t\t\t\t\tif (maybeGetProvider?.getProvider !== undefined) {\n\t\t\t\t\t\treturn maybeGetProvider.getProvider(provider);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate generateRequired<T>(\n\t\tbase: AsyncRequiredFluidObjectProvider<T>,\n\t\ttypes: Required<FluidObjectSymbolProvider<T>>,\n\t) {\n\t\tif (types === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n\t\t\tconst provider = this.resolveProvider(key);\n\t\t\tif (provider === undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Object attempted to be created without registered required provider ${String(\n\t\t\t\t\t\tkey,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tObject.defineProperty(base, key, provider);\n\t\t}\n\t}\n\n\tprivate generateOptional<T>(\n\t\tbase: AsyncOptionalFluidObjectProvider<T>,\n\t\ttypes: FluidObjectSymbolProvider<T>,\n\t) {\n\t\tif (types === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n\t\t\t// back-compat: in 0.56 we allow undefined in the types, but we didn't before\n\t\t\t// this will keep runtime back compat, eventually we should support undefined properties\n\t\t\t// rather than properties that return promises that resolve to undefined\n\t\t\tconst provider = this.resolveProvider(key) ?? { get: async () => undefined };\n\t\t\tObject.defineProperty(base, key, provider);\n\t\t}\n\t}\n\n\tprivate resolveProvider<T extends keyof TMap>(t: T): PropertyDescriptor | undefined {\n\t\t// If we have the provider return it\n\t\tconst provider = this.providers.get(t);\n\t\tif (provider === undefined) {\n\t\t\tfor (const parent of this.parents) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\tconst sp = { [t]: t } as FluidObjectSymbolProvider<Pick<TMap, T>>;\n\t\t\t\tconst syn = parent.synthesize<Pick<TMap, T>, Record<string, unknown>>(sp, {});\n\t\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(syn, t);\n\t\t\t\tif (descriptor !== undefined) {\n\t\t\t\t\treturn descriptor;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// The double nested gets are required for lazy loading the provider resolution\n\t\tif (typeof provider === \"function\") {\n\t\t\treturn {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t\t\tget() {\n\t\t\t\t\tif (provider && typeof provider === \"function\") {\n\t\t\t\t\t\treturn Promise.resolve(this[IFluidDependencySynthesizer])\n\t\t\t\t\t\t\t.then(async (fds): Promise<any> => provider(fds))\n\t\t\t\t\t\t\t.then((p) => p?.[t]);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tif (provider) {\n\t\t\t\t\treturn new LazyPromise(async () => {\n\t\t\t\t\t\treturn Promise.resolve(provider).then((p) => {\n\t\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\treturn p[t];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,6EAGuC;AAFtC,0IAAA,2BAA2B,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { DependencyContainer } from \"./dependencyContainer\";\nexport {\n\tIFluidDependencySynthesizer,\n\tIProvideFluidDependencySynthesizer,\n} from \"./IFluidDependencySynthesizer\";\nexport {\n\tAsyncFluidObjectProvider,\n\tAsyncOptionalFluidObjectProvider,\n\tAsyncRequiredFluidObjectProvider,\n\tFluidObjectProvider,\n\tFluidObjectSymbolProvider,\n} from \"./types\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyContainer.spec.js","sourceRoot":"","sources":["../../src/test/dependencyContainer.spec.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 { strict as assert } from \"assert\";\n\nimport {\n\tIFluidLoadable,\n\tIFluidHandleContext,\n\tIFluidHandle,\n\tIProvideFluidLoadable,\n\tIProvideFluidRouter,\n\tIProvideFluidHandle,\n\tFluidObject,\n\tIFluidRouter,\n} from \"@fluidframework/core-interfaces\";\nimport { FluidObjectHandle } from \"@fluidframework/datastore\";\n\nimport { LazyPromise } from \"@fluidframework/core-utils\";\nimport { DependencyContainer } from \"..\";\nimport { IFluidDependencySynthesizer } from \"../IFluidDependencySynthesizer\";\nimport { AsyncFluidObjectProvider, FluidObjectProvider, FluidObjectSymbolProvider } from \"../types\";\n\nconst mockHandleContext: IFluidHandleContext = {\n\tabsolutePath: \"\",\n\tisAttached: false,\n\tIFluidHandleContext: undefined as any,\n\n\tattachGraph: () => {\n\t\tthrow new Error(\"Method not implemented.\");\n\t},\n\tresolveHandle: () => {\n\t\tthrow new Error(\"Method not implemented.\");\n\t},\n};\n\nclass MockLoadable implements IFluidLoadable {\n\tpublic get IFluidLoadable() {\n\t\treturn this;\n\t}\n\tpublic get handle() {\n\t\treturn new FluidObjectHandle(this, \"\", mockHandleContext);\n\t}\n}\n\nclass MockFluidRouter implements IFluidRouter {\n\tpublic get IFluidRouter() {\n\t\treturn this;\n\t}\n\tpublic async request() {\n\t\treturn {\n\t\t\tmimeType: \"\",\n\t\t\tstatus: 200,\n\t\t\tvalue: \"\",\n\t\t};\n\t}\n}\n\ndescribe(\"Routerlicious\", () => {\n\tdescribe(\"Aqueduct\", () => {\n\t\tdescribe(\"DependencyContainer\", () => {\n\t\t\tit(`One Optional Provider registered via value`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, mock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Optional Provider registered via Promise value`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, Promise.resolve(mock));\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Optional Provider registered via factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tconst factory = () => mock;\n\t\t\t\tdc.register(IFluidLoadable, factory);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Optional Provider registered via Promise factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tconst factory = async () => mock;\n\t\t\t\tdc.register(IFluidLoadable, factory);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Optional Provider registered via LazyPromise factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tlet lazyPromiseFlag = false;\n\t\t\t\tconst lazyFactory = new LazyPromise(async () => {\n\t\t\t\t\tlazyPromiseFlag = true;\n\t\t\t\t\treturn mock;\n\t\t\t\t});\n\t\t\t\tdc.register(IFluidLoadable, lazyFactory);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable_promise = s.IFluidLoadable;\n\t\t\t\t// This stacking of promises is done in order to make sure that the loadable_promise would have been executed by the time the assertion is done\n\t\t\t\tawait Promise.resolve().then(async () => {\n\t\t\t\t\tassert(!lazyPromiseFlag, \"Optional IFluidLoadable was correctly lazy loaded\");\n\t\t\t\t\tconst loadable = await loadable_promise;\n\t\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\t\tassert(\n\t\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via value`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, mock);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via Promise value`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, Promise.resolve(mock));\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tconst factory = () => mock;\n\t\t\t\tdc.register(IFluidLoadable, factory);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via Promise factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tconst factory = async () => mock;\n\t\t\t\tdc.register(IFluidLoadable, factory);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`One Required Provider registered via LazyPromise factory`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tlet lazyPromiseFlag = false;\n\t\t\t\tconst lazyFactory = new LazyPromise(async () => {\n\t\t\t\t\tlazyPromiseFlag = true;\n\t\t\t\t\treturn mock;\n\t\t\t\t});\n\t\t\t\tdc.register(IFluidLoadable, lazyFactory);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable_promise = s.IFluidLoadable;\n\t\t\t\t// This stacking of promises is done in order to make sure that the loadable_promise would have been executed by the time the assertion is done\n\t\t\t\tawait Promise.resolve().then(async () => {\n\t\t\t\t\tassert(!lazyPromiseFlag, \"Required IFluidLoadable was correctly lazy loaded\");\n\t\t\t\t\tconst loadable = await loadable_promise;\n\t\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\t\tassert(\n\t\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(`Two Optional Modules all registered`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(router, \"Optional IFluidRouter was registered\");\n\t\t\t\tassert(router === routerMock, \"IFluidRouter is expected\");\n\t\t\t});\n\n\t\t\tit(`Two Optional Modules one registered`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(!router, \"Optional IFluidRouter was not registered\");\n\t\t\t});\n\n\t\t\tit(`Two Optional Modules none registered`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(!loadable, \"Optional IFluidLoadable was not registered\");\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(!router, \"Optional IFluidRouter was not registered\");\n\t\t\t});\n\n\t\t\tit(`Two Required Modules all registered`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidRouter>(\n\t\t\t\t\tundefined,\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(router, \"Required IFluidRouter was registered\");\n\t\t\t\tassert(router === routerMock, \"IFluidRouter is expected\");\n\t\t\t});\n\n\t\t\tit(`Required Provider not registered should throw`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\n\t\t\t\tassert.throws(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tdc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\t\t\tIFluidLoadable,\n\t\t\t\t\t\t}),\n\t\t\t\t\tError,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`Optional Provider found in Parent`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, mock);\n\t\t\t\tconst dc = new DependencyContainer(parentDc);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`Optional Modules found in Parent and Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidRouter>>(parentDc);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(router, \"Optional IFluidRouter was registered\");\n\t\t\t\tassert(router === routerMock, \"IFluidRouter is expected\");\n\t\t\t});\n\n\t\t\tit(`Optional Provider found in Parent and Child resolves Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tparentDc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\n\t\t\t\tconst s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Optional IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\t\t\t});\n\n\t\t\tit(`Required Provider found in Parent`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst mock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, mock);\n\t\t\t\tconst dc = new DependencyContainer(parentDc);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === mock, \"IFluidLoadable is expected\");\n\t\t\t\tassert(\n\t\t\t\t\tloadable?.handle.absolutePath === mock.handle.absolutePath,\n\t\t\t\t\t\"IFluidLoadable is valid\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`Required Modules found in Parent and Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidRouter>>(parentDc);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidRouter>(\n\t\t\t\t\tundefined,\n\t\t\t\t\t{ IFluidLoadable, IFluidRouter },\n\t\t\t\t);\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n\t\t\t\tconst router = await s.IFluidRouter;\n\t\t\t\tassert(router, \"Required IFluidRouter was registered\");\n\t\t\t\tassert(router === routerMock, \"IFluidRouter is expected\");\n\t\t\t});\n\n\t\t\tit(`Required Provider found in Parent and Child resolves Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tparentDc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\n\t\t\t\tconst s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\tIFluidLoadable,\n\t\t\t\t});\n\t\t\t\tconst loadable = await s.IFluidLoadable;\n\t\t\t\tassert(loadable, \"Required IFluidLoadable was registered\");\n\t\t\t\tassert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\t\t\t});\n\n\t\t\tit(`Registering`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tassert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n\t\t\t});\n\n\t\t\tit(`Registering the same type twice throws`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tassert.throws(() => dc.register(IFluidLoadable, new MockLoadable()), Error);\n\t\t\t});\n\n\t\t\tit(`Registering then Unregistering`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tdc.unregister(IFluidLoadable);\n\t\t\t\tassert(!dc.has(IFluidLoadable), \"DependencyContainer doesn't have IFluidLoadable\");\n\t\t\t});\n\n\t\t\tit(`Registering then Unregistering then Registering`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tdc.unregister(IFluidLoadable);\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tassert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n\t\t\t});\n\n\t\t\tit(`has() resolves correctly in all variations`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\t\t\t\tdc.register(IFluidLoadable, new MockLoadable());\n\t\t\t\tdc.register(IFluidRouter, new MockFluidRouter());\n\t\t\t\tassert(dc.has(IFluidLoadable), \"Manager has IFluidLoadable\");\n\t\t\t\tassert(dc.has(IFluidRouter), \"Manager has IFluidRouter\");\n\t\t\t\tassert(\n\t\t\t\t\tdc.has(IFluidLoadable) && dc.has(IFluidRouter),\n\t\t\t\t\t\"Manager has IFluidLoadable & IFluidRouter\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(`Child has Parent modules`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tparentDc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidRouter>>(parentDc);\n\t\t\t\tconst routerMock = new MockFluidRouter();\n\t\t\t\tdc.register(IFluidRouter, routerMock);\n\n\t\t\t\tassert(dc.has(IFluidLoadable), \"has includes parent registered\");\n\t\t\t\tassert(\n\t\t\t\t\t!dc.has(IFluidLoadable, true),\n\t\t\t\t\t\"has does not include excluded parent registered\",\n\t\t\t\t);\n\t\t\t\tassert(dc.has(IFluidRouter), \"has includes registered\");\n\t\t\t\tassert(!dc.has(IFluidHandle), \"does not include not registered\");\n\t\t\t});\n\n\t\t\tit(`Parent Resolved from Child`, async () => {\n\t\t\t\tconst parentDc = new DependencyContainer<FluidObject<IFluidHandle>>();\n\t\t\t\tconst loadableToHandle: FluidObjectProvider<IProvideFluidHandle> = async (\n\t\t\t\t\tfds: IFluidDependencySynthesizer,\n\t\t\t\t) => {\n\t\t\t\t\tconst loadable = fds.synthesize<undefined, IProvideFluidLoadable>(undefined, {\n\t\t\t\t\t\tIFluidLoadable,\n\t\t\t\t\t});\n\t\t\t\t\treturn (await loadable.IFluidLoadable).handle;\n\t\t\t\t};\n\t\t\t\tparentDc.register(IFluidHandle, loadableToHandle);\n\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\n\t\t\t\tconst deps = dc.synthesize<IFluidHandle>({ IFluidHandle }, undefined);\n\t\t\t\tassert((await deps.IFluidHandle) !== undefined, \"handle undefined\");\n\t\t\t});\n\n\t\t\tit(`Undefined Provider is not Undefined`, async () => {\n\t\t\t\tconst dc = new DependencyContainer();\n\t\t\t\tconst deps = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, {});\n\t\t\t\tassert(deps.IFluidLoadable !== undefined, \"handle undefined\");\n\t\t\t\tassert((await deps.IFluidLoadable) === undefined, \"handle undefined\");\n\t\t\t});\n\n\t\t\tit(`test getProvider backcompat`, async () => {\n\t\t\t\tconst dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\t\t\t\tconst loadableMock = new MockLoadable();\n\t\t\t\tdc.register(IFluidLoadable, loadableMock);\n\t\t\t\tconst testGetProvider = (deps: IFluidDependencySynthesizer, scenario: string) => {\n\t\t\t\t\tconst old = deps as any as {\n\t\t\t\t\t\tgetProvider(\n\t\t\t\t\t\t\tkey: \"IFluidLoadable\",\n\t\t\t\t\t\t): FluidObjectProvider<FluidObject<IFluidLoadable>>;\n\t\t\t\t\t};\n\t\t\t\t\tconst provider = old.getProvider(\"IFluidLoadable\");\n\t\t\t\t\tassert.equal(provider, loadableMock, scenario);\n\t\t\t\t};\n\t\t\t\ttestGetProvider(dc, \"direct\");\n\t\t\t\ttestGetProvider(new DependencyContainer(dc), \"parent\");\n\t\t\t\ttestGetProvider(new PassThru<FluidObject<IFluidLoadable>>(dc), \"pass thru\");\n\t\t\t\ttestGetProvider(\n\t\t\t\t\tnew DependencyContainer(new PassThru<FluidObject<IFluidLoadable>>(dc)),\n\t\t\t\t\t\"pass thru as child\",\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n});\n\nclass PassThru<TMap> implements IFluidDependencySynthesizer {\n\tconstructor(private readonly parent: IFluidDependencySynthesizer) {}\n\tsynthesize<O, R = Record<string, never> | undefined>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R> {\n\t\treturn this.parent.synthesize(optionalTypes, requiredTypes);\n\t}\n\thas(type: string): boolean {\n\t\treturn this.parent.has(type);\n\t}\n\treadonly IFluidDependencySynthesizer = this;\n\n\tgetProvider<K extends keyof TMap>(key: K): FluidObjectProvider<TMap[K]> | undefined {\n\t\tconst maybe = this.parent as any as Partial<this>;\n\t\tif (maybe.getProvider) {\n\t\t\treturn maybe.getProvider(key);\n\t\t}\n\t}\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es5.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2016.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2017.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2018.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2019.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2020.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.dom.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.decorators.d.ts","../../../../../node_modules/.pnpm/typescript@5.1.6/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../common/core-interfaces/dist/disposable.d.ts","../../../../common/core-interfaces/dist/error.d.ts","../../../../common/core-interfaces/dist/events.d.ts","../../../../common/core-interfaces/dist/fluidRouter.d.ts","../../../../common/core-interfaces/dist/provider.d.ts","../../../../common/core-interfaces/dist/handles.d.ts","../../../../common/core-interfaces/dist/fluidLoadable.d.ts","../../../../common/core-interfaces/dist/fluidPackage.d.ts","../../../../common/core-interfaces/dist/logger.d.ts","../../../../common/core-interfaces/dist/index.d.ts","../../../../runtime/datastore/dist/fluidHandle.d.ts","../../../../common/client-utils/dist/base64Encoding.d.ts","../../../../common/client-utils/dist/bufferShared.d.ts","../../../../../node_modules/.pnpm/@types+events@3.0.1/node_modules/@types/events/index.d.ts","../../../../common/client-utils/dist/typedEventEmitter.d.ts","../../../../common/client-utils/dist/eventForwarder.d.ts","../../../../common/client-utils/dist/bufferNode.d.ts","../../../../common/client-utils/dist/hashFileNode.d.ts","../../../../common/client-utils/dist/performanceIsomorphic.d.ts","../../../../common/client-utils/dist/performanceNode.d.ts","../../../../common/client-utils/dist/indexNode.d.ts","../../../../common/client-utils/dist/trace.d.ts","../../../../common/client-utils/dist/index.d.ts","../../../../common/core-utils/dist/assert.d.ts","../../../../common/core-utils/dist/compare.d.ts","../../../../common/core-utils/dist/delay.d.ts","../../../../common/core-utils/dist/heap.d.ts","../../../../common/core-utils/dist/lazy.d.ts","../../../../common/core-utils/dist/promiseCache.d.ts","../../../../common/core-utils/dist/promises.d.ts","../../../../common/core-utils/dist/timer.d.ts","../../../../common/core-utils/dist/unreachable.d.ts","../../../../common/core-utils/dist/index.d.ts","../../../../utils/telemetry-utils/dist/telemetryTypes.d.ts","../../../../utils/telemetry-utils/dist/logger.d.ts","../../../../utils/telemetry-utils/dist/config.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/users.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/clients.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/config.d.ts","../../../../../node_modules/.pnpm/@fluidframework+common-definitions@1.0.0/node_modules/@fluidframework/common-definitions/dist/disposable.d.ts","../../../../../node_modules/.pnpm/@fluidframework+common-definitions@1.0.0/node_modules/@fluidframework/common-definitions/dist/events.d.ts","../../../../../node_modules/.pnpm/@fluidframework+common-definitions@1.0.0/node_modules/@fluidframework/common-definitions/dist/logger.d.ts","../../../../../node_modules/.pnpm/@fluidframework+common-definitions@1.0.0/node_modules/@fluidframework/common-definitions/dist/index.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/consensus.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/date.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/protocol.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/scopes.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/tokens.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/sockets.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/storage.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/summary.d.ts","../../../../../node_modules/.pnpm/@fluidframework+protocol-definitions@3.0.0/node_modules/@fluidframework/protocol-definitions/dist/index.d.ts","../../../../utils/telemetry-utils/dist/fluidErrorBase.d.ts","../../../../utils/telemetry-utils/dist/errorLogging.d.ts","../../../../utils/telemetry-utils/dist/error.d.ts","../../../../utils/telemetry-utils/dist/eventEmitterWithErrorHandling.d.ts","../../../../utils/telemetry-utils/dist/events.d.ts","../../../../utils/telemetry-utils/dist/mockLogger.d.ts","../../../../utils/telemetry-utils/dist/thresholdCounter.d.ts","../../../../utils/telemetry-utils/dist/sampledTelemetryHelper.d.ts","../../../../utils/telemetry-utils/dist/utils.d.ts","../../../../utils/telemetry-utils/dist/index.d.ts","../../../../common/container-definitions/dist/audience.d.ts","../../../../common/container-definitions/dist/fluidPackage.d.ts","../../../../common/container-definitions/dist/browserPackage.d.ts","../../../../common/driver-definitions/dist/urlResolver.d.ts","../../../../common/driver-definitions/dist/driverError.d.ts","../../../../common/driver-definitions/dist/storage.d.ts","../../../../common/driver-definitions/dist/index.d.ts","../../../../common/container-definitions/dist/deltas.d.ts","../../../../common/container-definitions/dist/error.d.ts","../../../../common/container-definitions/dist/runtime.d.ts","../../../../common/container-definitions/dist/fluidModule.d.ts","../../../../common/container-definitions/dist/loader.d.ts","../../../../common/container-definitions/dist/index.d.ts","../../../../runtime/runtime-definitions/dist/attribution.d.ts","../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts","../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts","../../../../runtime/runtime-definitions/dist/garbageCollection.d.ts","../../../../runtime/runtime-definitions/dist/protocol.d.ts","../../../../runtime/runtime-definitions/dist/summary.d.ts","../../../../runtime/runtime-definitions/dist/id-compressor/identifiers.d.ts","../../../../runtime/runtime-definitions/dist/id-compressor/persisted-types/0.0.1.d.ts","../../../../runtime/runtime-definitions/dist/id-compressor/persisted-types/index.d.ts","../../../../runtime/runtime-definitions/dist/id-compressor/idCompressor.d.ts","../../../../runtime/runtime-definitions/dist/id-compressor/index.d.ts","../../../../runtime/runtime-definitions/dist/dataStoreContext.d.ts","../../../../runtime/runtime-definitions/dist/index.d.ts","../../../../runtime/datastore-definitions/dist/storage.d.ts","../../../../runtime/datastore-definitions/dist/dataStoreRuntime.d.ts","../../../../runtime/datastore-definitions/dist/channel.d.ts","../../../../runtime/datastore-definitions/dist/jsonable.d.ts","../../../../runtime/datastore-definitions/dist/serializable.d.ts","../../../../runtime/datastore-definitions/dist/index.d.ts","../../../../runtime/datastore/dist/dataStoreRuntime.d.ts","../../../../runtime/datastore/dist/index.d.ts","../types.d.ts","../IFluidDependencySynthesizer.d.ts","../dependencyContainer.d.ts","../index.d.ts","../../src/test/dependencyContainer.spec.ts","../../../../../node_modules/.pnpm/@fluidframework+synthesize@2.0.0-internal.7.2.0/node_modules/@fluidframework/synthesize/dist/types.d.ts","../../../../../node_modules/.pnpm/@fluidframework+synthesize@2.0.0-internal.7.2.0/node_modules/@fluidframework/synthesize/dist/IFluidDependencySynthesizer.d.ts","../../../../../node_modules/.pnpm/@fluidframework+synthesize@2.0.0-internal.7.2.0/node_modules/@fluidframework/synthesize/dist/dependencyContainer.d.ts","../../../../../node_modules/.pnpm/@fluidframework+synthesize@2.0.0-internal.7.2.0/node_modules/@fluidframework/synthesize/dist/index.d.ts","../../src/test/types/validateSynthesizePrevious.generated.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/assert.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/assert/strict.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/globals.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/async_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/buffer.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/child_process.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/cluster.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/console.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/constants.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/crypto.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/dgram.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/diagnostics_channel.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/dns.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/dns/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/domain.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/events.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/fs.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/fs/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/http.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/http2.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/https.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/inspector.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/module.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/net.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/os.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/path.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/perf_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/process.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/punycode.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/querystring.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/readline.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/repl.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/stream.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/stream/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/stream/consumers.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/stream/web.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/string_decoder.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/test.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/timers.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/timers/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/tls.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/trace_events.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/tty.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/url.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/util.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/v8.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/vm.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/wasi.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/worker_threads.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/zlib.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/globals.global.d.ts","../../../../../node_modules/.pnpm/@types+node@16.18.58/node_modules/@types/node/index.d.ts","../../../../../node_modules/.pnpm/@types+mocha@9.1.1/node_modules/@types/mocha/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"47542d5c743db193b73804d550724b343855f1ab65a466a50af537c969c73e33","fafa78bd31256284d9b9eedc13f6abc59cd7cf719c9ac0fb410fbb9a95e92852","2b7b0fc69b43ebf1018625a38f700f523d2d2fdb01a711712ba67ef21489c7fb","0ede0fc53ccb95e107efc8fecd1456b5b713cf75cc9c5928a1398b6bd086bcee","21c16ed4d94993bf4af1a45f30acb182e04a810e27e88388a4f295d5dfa8e082","d7b2f41a6aec8f093838ef4b5ff0e484833e915f1963a25581a0ef22dcd826c9","532719326056cc0c0e48c1a9994a89ccf52a1b664169a198d2b4a3dacb30baf8","f0026b1e7410d238ea1670a127714337052cc11b84835e8a70bfbe249ae5de96","9a81ecc69e3c964ca40c8a75afb59aa6ef303a9c0decfc3ea2cd363a32bfa4f6","de9deabbfcf24effca243284bbc6c8fc27747258680d65cddb3ab1a4ad0bd548","481efcd76f18ec9e2521e33bc6ecb1e902b959b864710c2f1f350b1f659fe50a","b6e4b2df38794096aba6944a0941accf45da9b97d2da719dd8a95d883b0fc7b1","023683fdc80a7f5c8dc1426427f328373aa309bf28be20bb7ff9b5fe1a3010c3","e5da7fdc42b400e8cf1121991f3c32efc0750ccd76024db6cad68e38e91a60a3","c650b77495b9647c323764638608138df08a74ea6c0e7615e8d89e616eda1848","a27604fa55f98434d3243c5ae96842cc93df7d432e476a94c15a05ca3c6ebe02","8e19ab1cad076ffb9360750c8d1d3e236f88ed9f32af62e5afaa3debe9a66a0b","9dcebbc6c3ba0e08658aa8ac54a9d605e252185b7c227a1cec09a52cdb736e1d","c833d70472f361988cb4024fb5913701d0d02bbf0ff8248184d997ecbde98204","81e61854639e7a8747819f007a0e7fe0e3450462b64a4eb4eae25a5b8205ea41","e3783f1ac89a7d3af510c74b1d14b57e605b452c36520e16f3e558b7f272dc00","5fa5ca164fea16db2c611d502b3f5c82c1f02417507de0c4debeaf924f771a7a","c777a1cf10ad3a701a58fd92828d6609544f827d2ff2c2aa7445f5ec9c7dee55","9f8834362d670329868eabbced46f19f5f8fffd3b64ba5c42b992bf03e0c2eae","e10c973ec26b46831495a1af51d0d6c4462979c61c186756d55a6d5d360686a1","63c819ecfd6a8b2e8676327946727f7a25db286d71a3042f0ed8a9752ff6ab8a","f7a11fab5bf6646bb63f86fe7829e5dc4aa92abf6194f97707596015b8537795","c1d76b0a16ee9a263e626eed359dfa67aa69b87be23ab83cdc7a7e657b395135","6049c243a189c96661dcb945dff0888047aa6fabe71747f1cae261e9f9d28aef","642b69891aa660f25a440bf76d379fc2e450ddf38a0343ae81a84e0d133a2320","93b333af8eea35f209c2c7315a427775e5892cb59ac22eaefa0ed04c0cfd7c38","92b664faccdca6a9db8c213ad791397d5f475b14ddf7a809813c28c343b48adf","b3e9a7d4905609e07b8ae61b9f7d262240ef28797185b073d218f04486067e6b","7e42fa194f3d508121eebf2f128e1e57eee3964a4981ba8064f927a324b11b55","42dc9a9ad1e1643aa5662edd48e27b9a61b2cf3b3dc0d501604e71889c084737","43444a73e943719b32d7ff02cd2f61506aaac8af62cded08bab1be5ffb581364","52d3a695384faeedae1d2d47b7ce0e5f42436db3a0ec49018b665d7f48dfc3e9","4ce2e01eb00e234e470030aa9896e1d3158bdb66991fb90c352fa0abaee7ade5","c68ff7107de08f846d013cb6220e9fdc6a8633ea36089b3177e9cbc7d4778642","77b8d6fe285600ac3bf84b8b3b1312d3b89f205265077c56e89ebdb7debedd97","c9b8dcfca1030ce379c97a962cbfd2228433c24bf51f0b5d00ebf171c8cdbcc5","c48dfa2d706284e3155a0233a545a9bf3dce56007025b77dd805e0f90db8a9bb","3db678f64a08de6ed4971ae67dc59f70cbd810c67e15bc907f71ce71e5f61646","0575a31687516b2c9ce8c9fc2074acaa511a11c322cd2347377fad342c22cc02","d15189db9b83cecccf85238fe2e0cc1c5bc70eea1c615ec62ff53502ada79d24","d60d14a17f1ca18e36bebe00bda6bbba5fb1f5371e3237193378eae6009b7641","6be052e03ed6403112c74d141472ac48566ac699be9681c1473da18bace43987","96aac0d6eb44ba43e46e058b5f9706342c71616f4567929854914f5e69290745","30677b1387dad7a418e8f38ba2d0d19b08e6031bc7ba352b2a3afc60c5c14104","2b0f0ebd6c8571349699d448988f29e69183ae7bbfad2a5d72e374fa0b53f888","42bf606372ae38aaa45740c21cf167d3b7f159c8b19a0f4e3d38e06eb87ef102","668d5408cb94d3603df3f349cbcb40280f7def8ae1d35c410efcbe82c171320b","e8a06589cee87ddf389ae2edb18303c250eb9b56dc76c65ce2af8e900963fcc6","0b7eb54711ed45e5861fdd8879eb7cadcd3854f91880100103d56ef34fc45aac","32a825e5cec794dafa64df6a4fafd6cbcc2cc541a559aa821cf7ad722f35f0d8","b10c5757e7e0689e89969d383721b428869fb2ea8e827da618798193d91c2373","140a9471ea39a1f7d87b737e390ecc17ec17a4a78e476291ccb0d1f45f6f79d1","7853a59e348eb460bd0ef188bc3e5dfb2dab1d38362b6b4e1dae5918dedf5ca6","6268e759e164b424fbf03a442c6cd41e458d5d04a1a14c76f20162f0dca87205","0790e9905b4a7840bb9bd18008931a6428560fe8f4549513c0788175c9e5860b","f2d171367215406b65e1cc4aed93365f46f8c4d68a9ce603418c67a7575cde8e","77b1206c5e44934df94bddd136d43cd2f05c658f7bf2000c09a9f017a4b4a218","f7655d264b84ceaeb4308961f4d6006d77a0b76d3ad039fcaf11d92a1aab004e","2b113636479e0331a45ab63ff0e3765c64e3afa6ea91c51b834aeb2eebf56c81","72423ece99b9175d0cc68e6b67330006f07a036a84b8b150ade7c0b605c49173","766ff9201eb426d1986f5720958a7c049cbc60db259aa51175b87b1649be6e77","059eb596f9dadeaafeb59da03a4c2f9048ce5cf7288dac07a99d646fa7d60bd5","6c3994c0f74b2b6b1f47d500b55117eaa325fad4d6fc75b4c6e005deeb08c6be","a74b8f008dee8c60869db2a25bde16e8e75d38778eaa5edd5a879b88f1b0b2e2","f42f6f4ff1a29e59d81ec403edd66a0a663471e57e4db5078a89f8396f7465c8","437ff2fd929049403063ad064271393858b17d27aba932a7d14dcdb913f17371","74bc20569ae65fab08ee078c02deaccaaae5e50df073da2e5f91b697cc4468c1","cbbfd0e74ca4d1e94e6799df764b1a705c1691a19910ebc43ea0047623dd40fa","1fc15e7a0ff3b53c71b7871683b56f9f0fd7fa27116d2a1671be9ea88269e10e","db21fb3bd0b6cb5b4aa38c62908d2c2c45bbb53b37551be62a5b6fc09be68ffc","1b1021e202f7230713b6e88e6cafcad9154ad36ba9e45bdad09704525ffd847e","e99b808e76808f5fda4a5c2e6a9a0f51cd50a4ab1b256c5f14cff6eaa00edae5","0da56df94295c71a82e9b0f473e9bbf49e5a817f61f02683f05e9dd91bba8182","3cac966cb78f2469bf3e26ab1741dc1c38aefcf4b09a5a6057948e67c6dc69fc","2372e08546bb0952594b2ee851e9e5e08bd5dfbab8d48e766e8835972315709c","691870c41091f7c9ab3297ac4b0643d9b40b69cfb201d3a649cb941d9458d260","3baa26522a8e3c8d811b2099e23aa3fcfa5e1c91ff8d8f1ae517d635c1099fcf","7e6472fd38267f6e44dc03088f200143a1bd64efb67fa9497e17f6758ac978e2","4aa089f09ecf9bf75e0d380925cd0994c4d7bac5eb74d1177fc4845357ffe8f0","432016f68ec23f0ecf7662a685ae11ac54bf4e24fc3721fd9749e221b85497b6","b1b19f60edc0f93e847fb4a461ad3f72081985b3c78647c1b6c3181a529c9914","42a46956fbb3c1c4aa404530c9f77c803040532d4ccfb893f4db0d41d1d8d65c","476875118368eb2e8ab4dd6f0af5c33d725784c78b90ca64f75e6bcf875903a5","f6d09fbf18eb8cdac162fc7e5fe20a9c1db31e6f807f338726b0fc2720ced205","33f07b73d08e9bdb22303b51af2715012417d562c74e1ca199495805addcac88","06a160b8e9f807195306d2969dd6babb6ef382b44d2536463c0b0cb97ff88317","1f6106a67ec369fd6ec808b5e06552f29b6e549ecbf861da0979b3bbc402c521","e16db4422330827915ba6a4a92528c3b49fd7962840bd97acf93b0468d9dc04e","37eab960a4e495bee9d427be3c346792a892b65b8614b739538d53847e08cbc7","6e21da6a7a56236293dafba63be985a150166735eb7eeb1beea7422b6b69611f","2035c5afc65e2225b0b3162c546d042ece92f4bde48d7a11a98d4faff9b0638e","cbded31857cbb129bfa37e39c9f03b503bae85d132a70b4fb4c2054a6d120aa0","12b5b402669658288a3c717a4bf566fd67cbefe499158c0ed738249d6f028f35","fd135bc8415c1f2cdb30a6769f2e885f62f9d667406d201cec158b86ac864070","b3d328c10e306a4c037274ec16489c6fdeae9fc4d2487d76b309d8d2289b2de1","ff32ff7b4cd23c94876e916295b3b16dd9f9591ece804ac9da6a1cc161c12b4f","cbded31857cbb129bfa37e39c9f03b503bae85d132a70b4fb4c2054a6d120aa0","12b5b402669658288a3c717a4bf566fd67cbefe499158c0ed738249d6f028f35","fd135bc8415c1f2cdb30a6769f2e885f62f9d667406d201cec158b86ac864070","b3d328c10e306a4c037274ec16489c6fdeae9fc4d2487d76b309d8d2289b2de1","4ef8feb47276e1dabec5eb8d4f82aa1db2a4e1831a835de932cb7cd0697e4808","34693fb4a5e771e11668219221344dd1bd7d8b77ed005a1c1d965fb559be8406","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419",{"version":"e44ea2d6b7b853f6c81482416db43dafc11944561b810e469ae423085511ce7e","affectsGlobalScope":true},"f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6",{"version":"a7289d79eb84a59d2475b4d0136b4404be3cfdd17c3ea46b9194add1d645df01","affectsGlobalScope":true},"0bb26fa2a90ee890eed57ee812c71fa84d3d07850163ec4a204de86412cc57c1","132ca47da601c60141dd6f10bd08c70d0620177e5638439df2464ec3945b6d98",{"version":"55d2bbae076fed7269c3e16faeb32f988f558427b7a1c3bf04aa7551ab86ae90","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","cf83847c9264dcd592b6c89c1542925b899b277228687f3638614e3fa784cf76","3a41ebe7f089d50f447466b35b6cabb8b584c0994fc9809d0cd0a4ebc41e1239","7693b90b3075deaccafd5efb467bf9f2b747a3075be888652ef73e64396d8628","0c42d6cba77d9ad1cf45256ccb8489aa502fe2dbee1ec9048a29d49f5d532e73","2cf89c17245db65d175d4ef699cd68187516f9b3ae5c572fc0b9ad60f35dc223","5f20d20b7607174caf1a6da9141aeb9f2142159ae2410ca30c7a0fccd1d19c99",{"version":"a0c0e3bf3e8dc9454cdca64c6234c1a698a4368f2a461a7153ce274db0e96ecc","affectsGlobalScope":true},"8d42e5af5fb0a96a77e135ce84cc60636c9bad39d9dba043a4efe9d1bdeb3cc3","56fcc451e9065eb121c9cc4c1b9994a816306f3b0b3b1fce7ad59f0ac97a9999","65fd34269572542bb63331ee53279cebd3d1f1c117086e9d1346f85fdd6773ab","c3759b5bc5cc40f5988d86a497741a80fa91258629ae50a2b3735e774cd377cc","bf268a0aea37ad4ae3b7a9b58559190b6fc01ea16a31e35cd05817a0a60f895a","45dd82fb5aea9b12b2a90b427b28f3a014e8b2ee9b74087a5ab882841cb5fbc5",{"version":"d7dad6db394a3d9f7b49755e4b610fbf8ed6eb0c9810ae5f1a119f6b5d76de45","affectsGlobalScope":true},"48b2f9302651eb31acd5be69bb4e6b35797a7fcd6b77391d10a4ccadf7dc3609","0c8c917ef15498c827bd494a0ef365e9f76deb211f8acbb86932e20489310788","dd67d2b5e4e8a182a38de8e69fb736945eaa4588e0909c14e01a14bd3cc1fd1e",{"version":"9cdc2c6144b03822c9842505d09945bcf813b86827fdb260dd7586b63abc19bf","affectsGlobalScope":true},{"version":"2923dee3c897f03e91b54a210cdbefea7290562f0ac4b948667d4c9ee844b79e","affectsGlobalScope":true},"79169698d09a2be54b14f3bcad2575b414bf3525063fde0a1e4fcd5d6efd380e","051d939bcf77caa3cef3282708ab3a6fdfb741a7366e1d74a9e7603b67417ec3","0be79b3ff0f16b6c2f9bc8c4cc7097ea417d8d67f8267f7e1eec8e32b548c2ff","1c61ffa3a71b77363b30d19832c269ef62fba787f5610cac7254728d3b69ab2e","a234d62ae81d012ebf23898a45672edf3e5c93ecf5a438a42b96c08dd68cde43","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","6e191fea1db6e9e4fa828259cf489e820ec9170effff57fb081a2f3295db4722","09d801ff4a303d4976d4b9cb94af3a9097c4a70345e662d176975872d2998e51","c8558b01389b5f7610ac293aa612ccea2ae64d83af43b49f8142f190be1f414c","c40fdf7b2e18df49ce0568e37f0292c12807a0748be79e272745e7216bed2606",{"version":"b10b426c56e220b5093bf8a2446ee47af47263b7b1a03f4b18e42326b231b111","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","b4635ef36bee17e1304337d591c3b6b461ecdbc1876d0effbe6a581e62201fe5","205d50c24359ead003dc537b9b65d2a64208dfdffe368f403cf9e0357831db9e","1265fddcd0c68be9d2a3b29805d0280484c961264dd95e0b675f7bd91f777e78",{"version":"e4507242542bd499238f693d88b2d32e22177cc508854625f87bcc9bc3fa1256","affectsGlobalScope":true},{"version":"d942354e4966a98d3a92d1b1af0b4ac06f33af3f88116743e2c304c027ca26ef","affectsGlobalScope":true},"39f0808e5be3cb38674726c21fe2eb453c55e48a901679b4ce30fef85549b892","6afd66a7432ef100027ea110449e874196381e019e30eda7e7d8ca390366b7a8","befb8a9a78ac99d8fbc3ed392810489a7b90760c7a58934e8f1c8538f581cff3","e670bdf01540d35c170fae68edfd2f288eff909936780c379d6a9103b787b22c","867f95abf1df444aab146b19847391fc2f922a55f6a970a27ed8226766cee29f",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"88003d9ab15507806f41b120be6d407c1afe566c2f6689ebe3a034dd5ec0c8dc",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true}],"root":[146,151],"options":{"declaration":false,"declarationMap":false,"esModuleInterop":true,"inlineSources":true,"module":1,"noImplicitAny":false,"noUnusedLocals":true,"outDir":"./","rootDir":"../../src/test","sourceMap":true,"strict":true,"target":7},"fileIdsList":[[196],[85,86,87,196],[82,196],[83,88,196],[82,83,84,89,90,91,92,93,94,95,96,196],[83,84,91,93,196],[90,196],[147,196],[147,148,196],[147,148,149,196],[150,196],[152,196],[155,196],[156,161,187,196],[157,167,168,175,184,195,196],[157,158,167,175,196],[159,196],[160,161,168,176,196],[161,184,192,196],[162,164,167,175,196],[163,196],[164,165,196],[166,167,196],[155,167,196],[167,168,169,184,195,196],[167,168,169,184,196],[167,170,175,184,195,196],[167,168,170,171,175,184,192,195,196],[170,172,184,192,195,196],[152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202],[167,173,196],[174,195,196,200],[164,167,175,184,196],[176,196],[177,196],[155,178,196],[179,194,196,200],[180,196],[181,196],[167,182,196],[182,183,196,198],[156,167,184,185,186,196],[156,184,186,196],[184,185,196],[187,196],[188,196],[167,190,191,196],[190,191,196],[161,175,192,196],[193,196],[175,194,196],[156,170,181,195,196],[161,196],[184,196,197],[196,198],[196,199],[156,161,167,169,178,184,195,196,198,200],[184,196,201],[55,60,111,167,196],[62,196],[57,58,60,61,64,66,67,196],[62,63,65,196],[64,196],[55,111,167,196],[97,167,196],[109,196],[55,97,111,114,196],[55,111,196],[55,109,111,117,196],[55,108,109,110,111,115,116,117,118,119,196],[55,97,108,109,111,114,115,116,117,118,196],[55,97,108,109,111,114,115,116,119,196],[51,196],[49,50,52,196],[46,47,48,49,50,51,52,53,54,196],[69,70,71,72,73,74,75,76,77,196],[111,196],[111,112,113,196],[55,97,111,112,196],[142,196],[142,143,196],[142,143,144,196],[145,196],[55,78,111,141,142,143,145,152,196],[145,150,196],[55,97,111,133,134,135,196],[55,97,111,120,133,139,196],[134,135,136,137,138,196],[55,111,137,196],[55,68,97,107,111,120,133,139,196],[56,140,196],[97,196],[55,97,111,114,120,122,123,124,125,126,131,196],[132,196],[122,196],[127,129,196],[127,129,130,196],[127,196],[128,196],[121,122,123,124,125,126,131,132,196],[55,97,111,124,196],[55,78,79,80,111,196],[55,97,98,99,111,196],[55,79,98,111,196],[55,68,111,196],[79,167,196],[79,80,81,98,99,100,101,102,103,104,105,106,196],[55,68,79,111,196],[55,79,111,196],[79,196]],"referencedMap":[[85,1],[86,1],[88,2],[87,1],[83,3],[84,1],[89,4],[90,1],[97,5],[91,1],[92,1],[94,6],[95,7],[96,1],[93,3],[82,1],[148,8],[149,9],[150,10],[147,11],[59,1],[204,1],[152,12],[153,12],[155,13],[156,14],[157,15],[158,16],[159,17],[160,18],[161,19],[162,20],[163,21],[164,22],[165,22],[166,23],[167,24],[168,25],[169,26],[154,1],[202,1],[170,27],[171,28],[172,29],[203,30],[173,31],[174,32],[175,33],[176,34],[177,35],[178,36],[179,37],[180,38],[181,39],[182,40],[183,41],[184,42],[186,43],[185,44],[187,45],[188,46],[189,1],[190,47],[191,48],[192,49],[193,50],[194,51],[195,52],[196,53],[197,54],[198,55],[199,56],[200,57],[201,58],[44,1],[45,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[34,1],[31,1],[32,1],[33,1],[35,1],[7,1],[36,1],[41,1],[42,1],[37,1],[38,1],[39,1],[40,1],[1,1],[43,1],[57,1],[62,1],[58,1],[61,59],[63,60],[68,61],[66,62],[64,1],[65,63],[67,1],[60,64],[108,65],[110,66],[115,67],[116,68],[118,69],[109,1],[120,70],[119,71],[117,72],[46,1],[47,68],[48,1],[52,73],[53,1],[49,1],[51,74],[55,75],[54,1],[50,1],[69,1],[70,1],[71,1],[72,1],[78,76],[73,1],[74,1],[75,1],[76,1],[77,1],[112,77],[114,78],[113,79],[111,68],[143,80],[144,81],[145,82],[142,83],[146,84],[151,85],[136,86],[135,87],[139,88],[137,1],[138,89],[134,1],[140,90],[56,68],[141,91],[121,92],[132,93],[122,94],[123,95],[124,1],[130,96],[127,1],[131,97],[128,98],[129,99],[133,100],[125,92],[126,101],[81,102],[100,103],[99,104],[101,105],[102,106],[98,68],[107,107],[80,108],[103,109],[105,109],[79,68],[104,110],[106,109]],"exportedModulesMap":[[85,1],[86,1],[88,2],[87,1],[83,3],[84,1],[89,4],[90,1],[97,5],[91,1],[92,1],[94,6],[95,7],[96,1],[93,3],[82,1],[148,8],[149,9],[150,10],[147,11],[59,1],[204,1],[152,12],[153,12],[155,13],[156,14],[157,15],[158,16],[159,17],[160,18],[161,19],[162,20],[163,21],[164,22],[165,22],[166,23],[167,24],[168,25],[169,26],[154,1],[202,1],[170,27],[171,28],[172,29],[203,30],[173,31],[174,32],[175,33],[176,34],[177,35],[178,36],[179,37],[180,38],[181,39],[182,40],[183,41],[184,42],[186,43],[185,44],[187,45],[188,46],[189,1],[190,47],[191,48],[192,49],[193,50],[194,51],[195,52],[196,53],[197,54],[198,55],[199,56],[200,57],[201,58],[44,1],[45,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[34,1],[31,1],[32,1],[33,1],[35,1],[7,1],[36,1],[41,1],[42,1],[37,1],[38,1],[39,1],[40,1],[1,1],[43,1],[57,1],[62,1],[58,1],[61,59],[63,60],[68,61],[66,62],[64,1],[65,63],[67,1],[60,64],[108,65],[110,66],[115,67],[116,68],[118,69],[109,1],[120,70],[119,71],[117,72],[46,1],[47,68],[48,1],[52,73],[53,1],[49,1],[51,74],[55,75],[54,1],[50,1],[69,1],[70,1],[71,1],[72,1],[78,76],[73,1],[74,1],[75,1],[76,1],[77,1],[112,77],[114,78],[113,79],[111,68],[143,80],[144,81],[145,82],[142,83],[146,84],[151,85],[136,86],[135,87],[139,88],[137,1],[138,89],[134,1],[140,90],[56,68],[141,91],[121,92],[132,93],[122,94],[123,95],[124,1],[130,96],[127,1],[131,97],[128,98],[129,99],[133,100],[125,92],[126,101],[81,102],[100,103],[99,104],[101,105],[102,106],[98,68],[107,107],[80,108],[103,109],[105,109],[79,68],[104,110],[106,109]],"semanticDiagnosticsPerFile":[85,86,88,87,83,84,89,90,97,91,92,94,95,96,93,82,148,149,150,147,59,204,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,154,202,170,171,172,203,173,174,175,176,177,178,179,180,181,182,183,184,186,185,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,44,45,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,34,31,32,33,35,7,36,41,42,37,38,39,40,1,43,57,62,58,61,63,68,66,64,65,67,60,108,110,115,116,118,109,120,119,117,46,47,48,52,53,49,51,55,54,50,69,70,71,72,78,73,74,75,76,77,112,114,113,111,143,144,145,142,146,151,136,135,139,137,138,134,140,56,141,121,132,122,123,124,130,127,131,128,129,133,125,126,81,100,99,101,102,98,107,80,103,105,79,104,106]},"version":"5.1.6"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateSynthesizePrevious.generated.js","sourceRoot":"","sources":["../../../src/test/types/validateSynthesizePrevious.generated.ts"],"names":[],"mappings":";;AAgCA,yDAAyD,CACrD,qDAAqD,EAAE,CAAC,CAAC;AAW7D,qDAAqD,CACjD,yDAAyD,EAAE,CAAC,CAAC;AAWjE,iEAAiE,CAC7D,6DAA6D,EAAE,CAAC,CAAC;AAWrE,6DAA6D,CACzD,iEAAiE,EAAE,CAAC,CAAC;AAWzE,iEAAiE,CAC7D,6DAA6D,EAAE,CAAC,CAAC;AAWrE,6DAA6D,CACzD,iEAAiE,EAAE,CAAC,CAAC;AAWzE,gDAAgD,CAC5C,4CAA4C,EAAE,CAAC,CAAC;AAWpD,4CAA4C,CACxC,gDAAgD,EAAE,CAAC,CAAC;AAWxD,oDAAoD,CAChD,gDAAgD,EAAE,CAAC,CAAC;AAWxD,gDAAgD,CAC5C,oDAAoD,EAAE,CAAC,CAAC;AAW5D,0DAA0D,CACtD,sDAAsD,EAAE,CAAC,CAAC;AAW9D,sDAAsD,CAClD,0DAA0D,EAAE,CAAC,CAAC;AAWlE,2DAA2D,CACvD,uDAAuD,EAAE,CAAC,CAAC;AAW/D,uDAAuD,CACnD,2DAA2D,EAAE,CAAC,CAAC;AAWnE,4DAA4D,CACxD,wDAAwD,EAAE,CAAC,CAAC;AAWhE,wDAAwD,CACpD,4DAA4D,EAAE,CAAC,CAAC;AAWpE,mEAAmE,CAC/D,+DAA+D,EAAE,CAAC,CAAC;AAWvE,+DAA+D,CAC3D,mEAAmE,EAAE,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/*\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n * Generated by fluid-type-test-generator in @fluidframework/build-tools.\n */\nimport type * as old from \"@fluidframework/synthesize-previous\";\nimport type * as current from \"../../index\";\n\n\n// See 'build-tools/src/type-test-generator/compatibility.ts' for more information.\ntype TypeOnly<T> = T extends number\n\t? number\n\t: T extends string\n\t? string\n\t: T extends boolean | bigint | symbol\n\t? T\n\t: {\n\t\t\t[P in keyof T]: TypeOnly<T[P]>;\n\t };\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncFluidObjectProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_AsyncFluidObjectProvider():\n TypeOnly<old.AsyncFluidObjectProvider<any,any>>;\ndeclare function use_current_TypeAliasDeclaration_AsyncFluidObjectProvider(\n use: TypeOnly<current.AsyncFluidObjectProvider<any,any>>);\nuse_current_TypeAliasDeclaration_AsyncFluidObjectProvider(\n get_old_TypeAliasDeclaration_AsyncFluidObjectProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncFluidObjectProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_AsyncFluidObjectProvider():\n TypeOnly<current.AsyncFluidObjectProvider<any,any>>;\ndeclare function use_old_TypeAliasDeclaration_AsyncFluidObjectProvider(\n use: TypeOnly<old.AsyncFluidObjectProvider<any,any>>);\nuse_old_TypeAliasDeclaration_AsyncFluidObjectProvider(\n get_current_TypeAliasDeclaration_AsyncFluidObjectProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncOptionalFluidObjectProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider():\n TypeOnly<old.AsyncOptionalFluidObjectProvider<any>>;\ndeclare function use_current_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider(\n use: TypeOnly<current.AsyncOptionalFluidObjectProvider<any>>);\nuse_current_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider(\n get_old_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncOptionalFluidObjectProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider():\n TypeOnly<current.AsyncOptionalFluidObjectProvider<any>>;\ndeclare function use_old_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider(\n use: TypeOnly<old.AsyncOptionalFluidObjectProvider<any>>);\nuse_old_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider(\n get_current_TypeAliasDeclaration_AsyncOptionalFluidObjectProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncRequiredFluidObjectProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider():\n TypeOnly<old.AsyncRequiredFluidObjectProvider<any>>;\ndeclare function use_current_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider(\n use: TypeOnly<current.AsyncRequiredFluidObjectProvider<any>>);\nuse_current_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider(\n get_old_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_AsyncRequiredFluidObjectProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider():\n TypeOnly<current.AsyncRequiredFluidObjectProvider<any>>;\ndeclare function use_old_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider(\n use: TypeOnly<old.AsyncRequiredFluidObjectProvider<any>>);\nuse_old_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider(\n get_current_TypeAliasDeclaration_AsyncRequiredFluidObjectProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_DependencyContainer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_DependencyContainer():\n TypeOnly<old.DependencyContainer<any>>;\ndeclare function use_current_ClassDeclaration_DependencyContainer(\n use: TypeOnly<current.DependencyContainer<any>>);\nuse_current_ClassDeclaration_DependencyContainer(\n get_old_ClassDeclaration_DependencyContainer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_DependencyContainer\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_DependencyContainer():\n TypeOnly<current.DependencyContainer<any>>;\ndeclare function use_old_ClassDeclaration_DependencyContainer(\n use: TypeOnly<old.DependencyContainer<any>>);\nuse_old_ClassDeclaration_DependencyContainer(\n get_current_ClassDeclaration_DependencyContainer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_FluidObjectProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_FluidObjectProvider():\n TypeOnly<old.FluidObjectProvider<any>>;\ndeclare function use_current_TypeAliasDeclaration_FluidObjectProvider(\n use: TypeOnly<current.FluidObjectProvider<any>>);\nuse_current_TypeAliasDeclaration_FluidObjectProvider(\n get_old_TypeAliasDeclaration_FluidObjectProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_FluidObjectProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_FluidObjectProvider():\n TypeOnly<current.FluidObjectProvider<any>>;\ndeclare function use_old_TypeAliasDeclaration_FluidObjectProvider(\n use: TypeOnly<old.FluidObjectProvider<any>>);\nuse_old_TypeAliasDeclaration_FluidObjectProvider(\n get_current_TypeAliasDeclaration_FluidObjectProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_FluidObjectSymbolProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_FluidObjectSymbolProvider():\n TypeOnly<old.FluidObjectSymbolProvider<any>>;\ndeclare function use_current_TypeAliasDeclaration_FluidObjectSymbolProvider(\n use: TypeOnly<current.FluidObjectSymbolProvider<any>>);\nuse_current_TypeAliasDeclaration_FluidObjectSymbolProvider(\n get_old_TypeAliasDeclaration_FluidObjectSymbolProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_FluidObjectSymbolProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_FluidObjectSymbolProvider():\n TypeOnly<current.FluidObjectSymbolProvider<any>>;\ndeclare function use_old_TypeAliasDeclaration_FluidObjectSymbolProvider(\n use: TypeOnly<old.FluidObjectSymbolProvider<any>>);\nuse_old_TypeAliasDeclaration_FluidObjectSymbolProvider(\n get_current_TypeAliasDeclaration_FluidObjectSymbolProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_IFluidDependencySynthesizer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidDependencySynthesizer():\n TypeOnly<typeof old.IFluidDependencySynthesizer>;\ndeclare function use_current_VariableDeclaration_IFluidDependencySynthesizer(\n use: TypeOnly<typeof current.IFluidDependencySynthesizer>);\nuse_current_VariableDeclaration_IFluidDependencySynthesizer(\n get_old_VariableDeclaration_IFluidDependencySynthesizer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_IFluidDependencySynthesizer\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidDependencySynthesizer():\n TypeOnly<typeof current.IFluidDependencySynthesizer>;\ndeclare function use_old_VariableDeclaration_IFluidDependencySynthesizer(\n use: TypeOnly<typeof old.IFluidDependencySynthesizer>);\nuse_old_VariableDeclaration_IFluidDependencySynthesizer(\n get_current_VariableDeclaration_IFluidDependencySynthesizer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IFluidDependencySynthesizer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidDependencySynthesizer():\n TypeOnly<old.IFluidDependencySynthesizer>;\ndeclare function use_current_InterfaceDeclaration_IFluidDependencySynthesizer(\n use: TypeOnly<current.IFluidDependencySynthesizer>);\nuse_current_InterfaceDeclaration_IFluidDependencySynthesizer(\n get_old_InterfaceDeclaration_IFluidDependencySynthesizer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IFluidDependencySynthesizer\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidDependencySynthesizer():\n TypeOnly<current.IFluidDependencySynthesizer>;\ndeclare function use_old_InterfaceDeclaration_IFluidDependencySynthesizer(\n use: TypeOnly<old.IFluidDependencySynthesizer>);\nuse_old_InterfaceDeclaration_IFluidDependencySynthesizer(\n get_current_InterfaceDeclaration_IFluidDependencySynthesizer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IProvideFluidDependencySynthesizer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer():\n TypeOnly<old.IProvideFluidDependencySynthesizer>;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer(\n use: TypeOnly<current.IProvideFluidDependencySynthesizer>);\nuse_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer(\n get_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IProvideFluidDependencySynthesizer\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer():\n TypeOnly<current.IProvideFluidDependencySynthesizer>;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer(\n use: TypeOnly<old.IProvideFluidDependencySynthesizer>);\nuse_old_InterfaceDeclaration_IProvideFluidDependencySynthesizer(\n get_current_InterfaceDeclaration_IProvideFluidDependencySynthesizer());\n"]}
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IFluidDependencySynthesizer } from \".\";\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type mapped to a string representation\n * of that property.\n *\n * @example\n *\n * ```typescript\n * { IFoo: \"IFoo\" }\n * ```\n */\nexport type FluidObjectSymbolProvider<T> = {\n\t[P in keyof T]?: P;\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type mapped to an object that implements\n * the property.\n */\nexport type AsyncRequiredFluidObjectProvider<T> = T extends undefined\n\t? Record<string, never>\n\t: {\n\t\t\t[P in keyof T]: Promise<NonNullable<Exclude<T[P], undefined | null>>>;\n\t };\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type, mapped to an object that implements\n * the property or undefined.\n */\nexport type AsyncOptionalFluidObjectProvider<T> = T extends undefined\n\t? Record<string, never>\n\t: {\n\t\t\t[P in keyof T]?: Promise<T[P] | undefined>;\n\t };\n\n/**\n * Combined type for Optional and Required Async Fluid object Providers\n */\nexport type AsyncFluidObjectProvider<O, R = undefined> = AsyncOptionalFluidObjectProvider<O> &\n\tAsyncRequiredFluidObjectProvider<R>;\n\n/**\n * Multiple ways to provide a Fluid object.\n */\nexport type FluidObjectProvider<T> =\n\t| NonNullable<T>\n\t| Promise<NonNullable<T>>\n\t| ((dependencyContainer: IFluidDependencySynthesizer) => NonNullable<T>)\n\t| ((dependencyContainer: IFluidDependencySynthesizer) => Promise<NonNullable<T>>);\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IFluidDependencySynthesizer.js","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,2BAA2B,GACvC,6BAA6B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AsyncFluidObjectProvider, FluidObjectSymbolProvider } from \"./types\";\n\nexport const IFluidDependencySynthesizer: keyof IProvideFluidDependencySynthesizer =\n\t\"IFluidDependencySynthesizer\";\n\nexport interface IProvideFluidDependencySynthesizer {\n\tIFluidDependencySynthesizer: IFluidDependencySynthesizer;\n}\n\n/**\n * IFluidDependencySynthesizer can generate FluidObjects based on the IProvideFluidObject pattern.\n * It allow for registering providers and uses synthesize to generate a new object with the optional\n * and required types.\n */\nexport interface IFluidDependencySynthesizer extends IProvideFluidDependencySynthesizer {\n\t/**\n\t * synthesize takes optional and required types and returns an object that will fulfill the\n\t * defined types based off objects that has been previously registered.\n\t *\n\t * @param optionalTypes - optional types to be in the Scope object\n\t * @param requiredTypes - required types that need to be in the Scope object\n\t */\n\tsynthesize<O, R = undefined | Record<string, never>>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R>;\n\n\t/**\n\t * Check if a given type is registered\n\t * @param type - Type to check\n\t */\n\thas(type: string): boolean;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyContainer.js","sourceRoot":"","sources":["../src/dependencyContainer.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 { LazyPromise } from \"@fluidframework/core-utils\";\nimport {\n\tAsyncFluidObjectProvider,\n\tFluidObjectSymbolProvider,\n\tFluidObjectProvider,\n\tAsyncOptionalFluidObjectProvider,\n\tAsyncRequiredFluidObjectProvider,\n} from \"./types\";\nimport { IFluidDependencySynthesizer } from \"./IFluidDependencySynthesizer\";\n\n/**\n * DependencyContainer is similar to a IoC Container. It takes providers and will\n * synthesize an object based on them when requested.\n */\nexport class DependencyContainer<TMap> implements IFluidDependencySynthesizer {\n\tprivate readonly providers = new Map<keyof TMap, FluidObjectProvider<any>>();\n\tprivate readonly parents: IFluidDependencySynthesizer[];\n\tpublic get IFluidDependencySynthesizer() {\n\t\treturn this;\n\t}\n\n\tpublic constructor(...parents: (IFluidDependencySynthesizer | undefined)[]) {\n\t\tthis.parents = parents.filter((v): v is IFluidDependencySynthesizer => v !== undefined);\n\t}\n\n\t/**\n\t * Add a new provider\n\t * @param type - Name of the Type T being provided\n\t * @param provider - A provider that will resolve the T correctly when asked\n\t * @throws - If passing a type that's already registered\n\t */\n\tpublic register<T extends keyof TMap = keyof TMap>(\n\t\ttype: T,\n\t\tprovider: FluidObjectProvider<Pick<TMap, T>>,\n\t): void {\n\t\tif (this.providers.has(type)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Attempting to register a provider of type ${String(type)} that already exists`,\n\t\t\t);\n\t\t}\n\n\t\tthis.providers.set(type, provider);\n\t}\n\n\t/**\n\t * Remove a provider\n\t * @param type - Name of the provider to remove\n\t */\n\tpublic unregister(type: keyof TMap): void {\n\t\tif (this.providers.has(type)) {\n\t\t\tthis.providers.delete(type);\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n\t */\n\tpublic synthesize<O, R = undefined | Record<string, never>>(\n\t\toptionalTypes: FluidObjectSymbolProvider<O>,\n\t\trequiredTypes: Required<FluidObjectSymbolProvider<R>>,\n\t): AsyncFluidObjectProvider<O, R> {\n\t\tconst base: AsyncFluidObjectProvider<O, R> = {} as any;\n\t\tthis.generateRequired<R>(base, requiredTypes);\n\t\tthis.generateOptional<O>(base, optionalTypes);\n\t\tObject.defineProperty(base, IFluidDependencySynthesizer, { get: () => this });\n\t\treturn base;\n\t}\n\n\t/**\n\t * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n\t * @param excludeParents - If true, exclude checking parent registries\n\t */\n\tpublic has(type: string, excludeParents?: boolean): boolean {\n\t\tif (this.providers.has(type as keyof TMap)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (excludeParents !== true) {\n\t\t\treturn this.parents.some((p: IFluidDependencySynthesizer) => p.has(type));\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t * @deprecated Needed for backwards compatability.\n\t */\n\tprivate getProvider(provider: string & keyof TMap) {\n\t\t// this was removed, but some partners have trouble with back compat where they\n\t\t// use invalid patterns with FluidObject and IFluidDependencySynthesizer\n\t\t// this is just for back compat until those are removed\n\t\tif (this.has(provider)) {\n\t\t\tif (this.providers.has(provider)) {\n\t\t\t\treturn this.providers.get(provider);\n\t\t\t}\n\t\t\tfor (const parent of this.parents) {\n\t\t\t\tif (parent instanceof DependencyContainer) {\n\t\t\t\t\treturn parent.getProvider(provider);\n\t\t\t\t} else {\n\t\t\t\t\t// older implementations of the IFluidDependencySynthesizer exposed getProvider\n\t\t\t\t\tconst maybeGetProvider: { getProvider?(provider: string & keyof TMap) } =\n\t\t\t\t\t\tparent as any;\n\t\t\t\t\tif (maybeGetProvider?.getProvider !== undefined) {\n\t\t\t\t\t\treturn maybeGetProvider.getProvider(provider);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate generateRequired<T>(\n\t\tbase: AsyncRequiredFluidObjectProvider<T>,\n\t\ttypes: Required<FluidObjectSymbolProvider<T>>,\n\t) {\n\t\tif (types === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n\t\t\tconst provider = this.resolveProvider(key);\n\t\t\tif (provider === undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Object attempted to be created without registered required provider ${String(\n\t\t\t\t\t\tkey,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tObject.defineProperty(base, key, provider);\n\t\t}\n\t}\n\n\tprivate generateOptional<T>(\n\t\tbase: AsyncOptionalFluidObjectProvider<T>,\n\t\ttypes: FluidObjectSymbolProvider<T>,\n\t) {\n\t\tif (types === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n\t\t\t// back-compat: in 0.56 we allow undefined in the types, but we didn't before\n\t\t\t// this will keep runtime back compat, eventually we should support undefined properties\n\t\t\t// rather than properties that return promises that resolve to undefined\n\t\t\tconst provider = this.resolveProvider(key) ?? { get: async () => undefined };\n\t\t\tObject.defineProperty(base, key, provider);\n\t\t}\n\t}\n\n\tprivate resolveProvider<T extends keyof TMap>(t: T): PropertyDescriptor | undefined {\n\t\t// If we have the provider return it\n\t\tconst provider = this.providers.get(t);\n\t\tif (provider === undefined) {\n\t\t\tfor (const parent of this.parents) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\tconst sp = { [t]: t } as FluidObjectSymbolProvider<Pick<TMap, T>>;\n\t\t\t\tconst syn = parent.synthesize<Pick<TMap, T>, Record<string, unknown>>(sp, {});\n\t\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(syn, t);\n\t\t\t\tif (descriptor !== undefined) {\n\t\t\t\t\treturn descriptor;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// The double nested gets are required for lazy loading the provider resolution\n\t\tif (typeof provider === \"function\") {\n\t\t\treturn {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t\t\tget() {\n\t\t\t\t\tif (provider && typeof provider === \"function\") {\n\t\t\t\t\t\treturn Promise.resolve(this[IFluidDependencySynthesizer])\n\t\t\t\t\t\t\t.then(async (fds): Promise<any> => provider(fds))\n\t\t\t\t\t\t\t.then((p) => p?.[t]);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tif (provider) {\n\t\t\t\t\treturn new LazyPromise(async () => {\n\t\t\t\t\t\treturn Promise.resolve(provider).then((p) => {\n\t\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\treturn p[t];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACN,2BAA2B,GAE3B,MAAM,+BAA+B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { DependencyContainer } from \"./dependencyContainer\";\nexport {\n\tIFluidDependencySynthesizer,\n\tIProvideFluidDependencySynthesizer,\n} from \"./IFluidDependencySynthesizer\";\nexport {\n\tAsyncFluidObjectProvider,\n\tAsyncOptionalFluidObjectProvider,\n\tAsyncRequiredFluidObjectProvider,\n\tFluidObjectProvider,\n\tFluidObjectSymbolProvider,\n} from \"./types\";\n"]}
|
package/lib/types.js
DELETED
package/lib/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IFluidDependencySynthesizer } from \".\";\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type mapped to a string representation\n * of that property.\n *\n * @example\n *\n * ```typescript\n * { IFoo: \"IFoo\" }\n * ```\n */\nexport type FluidObjectSymbolProvider<T> = {\n\t[P in keyof T]?: P;\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type mapped to an object that implements\n * the property.\n */\nexport type AsyncRequiredFluidObjectProvider<T> = T extends undefined\n\t? Record<string, never>\n\t: {\n\t\t\t[P in keyof T]: Promise<NonNullable<Exclude<T[P], undefined | null>>>;\n\t };\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the FluidObject properties as its type, mapped to an object that implements\n * the property or undefined.\n */\nexport type AsyncOptionalFluidObjectProvider<T> = T extends undefined\n\t? Record<string, never>\n\t: {\n\t\t\t[P in keyof T]?: Promise<T[P] | undefined>;\n\t };\n\n/**\n * Combined type for Optional and Required Async Fluid object Providers\n */\nexport type AsyncFluidObjectProvider<O, R = undefined> = AsyncOptionalFluidObjectProvider<O> &\n\tAsyncRequiredFluidObjectProvider<R>;\n\n/**\n * Multiple ways to provide a Fluid object.\n */\nexport type FluidObjectProvider<T> =\n\t| NonNullable<T>\n\t| Promise<NonNullable<T>>\n\t| ((dependencyContainer: IFluidDependencySynthesizer) => NonNullable<T>)\n\t| ((dependencyContainer: IFluidDependencySynthesizer) => Promise<NonNullable<T>>);\n"]}
|