@fluidframework/synthesize 0.56.5 → 0.57.0
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.d.ts.map +1 -1
- package/dist/IFluidDependencySynthesizer.js.map +1 -1
- package/dist/dependencyContainer.d.ts.map +1 -1
- package/dist/dependencyContainer.js +6 -3
- package/dist/dependencyContainer.js.map +1 -1
- package/dist/test/dependencyContainer.spec.js +45 -40
- package/dist/test/dependencyContainer.spec.js.map +1 -1
- package/dist/test/tsconfig.tsbuildinfo +39 -77
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/lib/IFluidDependencySynthesizer.js.map +1 -1
- package/lib/dependencyContainer.js +6 -3
- package/lib/dependencyContainer.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IFluidDependencySynthesizer.d.ts","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,wBAAwB,EACxB,yBAAyB,EAC5B,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,2BAA2B,EAAE,MAAM,kCACb,CAAC;AAEpC,MAAM,WAAW,kCAAkC;IAC/C,2BAA2B,EAAE,2BAA2B,CAAC;CAC5D;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA4B,SAAQ,kCAAkC;
|
|
1
|
+
{"version":3,"file":"IFluidDependencySynthesizer.d.ts","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,wBAAwB,EACxB,yBAAyB,EAC5B,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,2BAA2B,EAAE,MAAM,kCACb,CAAC;AAEpC,MAAM,WAAW,kCAAkC;IAC/C,2BAA2B,EAAE,2BAA2B,CAAC;CAC5D;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA4B,SAAQ,kCAAkC;IACnF;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC3C,aAAa,EAAE,yBAAyB,CAAC,CAAC,CAAC,EAC3C,aAAa,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAC1D,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAElC;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IFluidDependencySynthesizer.js","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOU,QAAA,2BAA2B,GAClC,6BAA6B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AsyncFluidObjectProvider,\n FluidObjectSymbolProvider,\n} from \"./types\";\n\nexport const IFluidDependencySynthesizer: keyof IProvideFluidDependencySynthesizer\n = \"IFluidDependencySynthesizer\";\n\nexport interface IProvideFluidDependencySynthesizer {\n IFluidDependencySynthesizer: IFluidDependencySynthesizer;\n}\n\n/**\n * IFluidDependencySynthesizer can generate IFluidObjects 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
|
|
1
|
+
{"version":3,"file":"IFluidDependencySynthesizer.js","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOU,QAAA,2BAA2B,GAClC,6BAA6B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AsyncFluidObjectProvider,\n FluidObjectSymbolProvider,\n} from \"./types\";\n\nexport const IFluidDependencySynthesizer: keyof IProvideFluidDependencySynthesizer\n = \"IFluidDependencySynthesizer\";\n\nexport interface IProvideFluidDependencySynthesizer {\n IFluidDependencySynthesizer: IFluidDependencySynthesizer;\n}\n\n/**\n * IFluidDependencySynthesizer can generate IFluidObjects 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 /**\n * synthesize takes optional and required types and returns an object that will fulfill the\n * defined types based off objects that has been previously registered.\n *\n * @param optionalTypes - optional types to be in the Scope object\n * @param requiredTypes - required types that need to be in the Scope object\n */\n synthesize<O, R = undefined | Record<string, never>>(\n optionalTypes: FluidObjectSymbolProvider<O>,\n requiredTypes: Required<FluidObjectSymbolProvider<R>>,\n ): AsyncFluidObjectProvider<O, R>;\n\n /**\n * Check if a given type is registered\n * @param type - Type to check\n */\n has(type: string): boolean;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyContainer.d.ts","sourceRoot":"","sources":["../src/dependencyContainer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EAGtB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,2BAA2B,EAC9B,MAAM,+BAA+B,CAAC;AAEvC;;;GAGG;AACH,qBAAa,mBAAmB,CAAC,IAAI,CAAE,YAAW,2BAA2B;IACzE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmD;IAC7E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,IAAW,2BAA2B,SAAmB;gBAEtC,GAAI,OAAO,EAAE,CAAC,2BAA2B,GAAG,SAAS,CAAC,EAAE;IAI3E;;;;;OAKG;IACI,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;IAQ/G;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAMzC;;OAEG;IACI,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACtD,aAAa,EAAE,yBAAyB,CAAC,CAAC,CAAC,EAC3C,aAAa,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GACtD,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC;IAQjC;;;OAGG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO;IAS3D;;OAEG;IACH,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"dependencyContainer.d.ts","sourceRoot":"","sources":["../src/dependencyContainer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EAGtB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,2BAA2B,EAC9B,MAAM,+BAA+B,CAAC;AAEvC;;;GAGG;AACH,qBAAa,mBAAmB,CAAC,IAAI,CAAE,YAAW,2BAA2B;IACzE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmD;IAC7E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,IAAW,2BAA2B,SAAmB;gBAEtC,GAAI,OAAO,EAAE,CAAC,2BAA2B,GAAG,SAAS,CAAC,EAAE;IAI3E;;;;;OAKG;IACI,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;IAQ/G;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAMzC;;OAEG;IACI,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACtD,aAAa,EAAE,yBAAyB,CAAC,CAAC,CAAC,EAC3C,aAAa,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GACtD,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC;IAQjC;;;OAGG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO;IAS3D;;OAEG;IACH,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,eAAe;CA0C1B"}
|
|
@@ -83,8 +83,9 @@ class DependencyContainer {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
generateRequired(base, types) {
|
|
86
|
-
if (types === undefined)
|
|
86
|
+
if (types === undefined) {
|
|
87
87
|
return;
|
|
88
|
+
}
|
|
88
89
|
for (const key of Object.keys(types)) {
|
|
89
90
|
const provider = this.resolveProvider(key);
|
|
90
91
|
if (provider === undefined) {
|
|
@@ -95,13 +96,14 @@ class DependencyContainer {
|
|
|
95
96
|
}
|
|
96
97
|
generateOptional(base, types) {
|
|
97
98
|
var _a;
|
|
98
|
-
if (types === undefined)
|
|
99
|
+
if (types === undefined) {
|
|
99
100
|
return;
|
|
101
|
+
}
|
|
100
102
|
for (const key of Object.keys(types)) {
|
|
101
103
|
// back-compat: in 0.56 we allow undefined in the types, but we didn't before
|
|
102
104
|
// this will keep runtime back compat, eventually we should support undefined properties
|
|
103
105
|
// rather than properties that return promises that resolve to undefined
|
|
104
|
-
const provider = (_a = this.resolveProvider(key)) !== null && _a !== void 0 ? _a : { get: () =>
|
|
106
|
+
const provider = (_a = this.resolveProvider(key)) !== null && _a !== void 0 ? _a : { get: async () => undefined };
|
|
105
107
|
Object.defineProperty(base, key, provider);
|
|
106
108
|
}
|
|
107
109
|
}
|
|
@@ -110,6 +112,7 @@ class DependencyContainer {
|
|
|
110
112
|
const provider = this.providers.get(t);
|
|
111
113
|
if (provider === undefined) {
|
|
112
114
|
for (const parent of this.parents) {
|
|
115
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
113
116
|
const sp = { [t]: t };
|
|
114
117
|
const syn = parent.synthesize(sp, {});
|
|
115
118
|
const descriptor = Object.getOwnPropertyDescriptor(syn, t);
|
|
@@ -1 +1 @@
|
|
|
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 {\n AsyncFluidObjectProvider,\n FluidObjectSymbolProvider,\n FluidObjectProvider,\n AsyncOptionalFluidObjectProvider,\n AsyncRequiredFluidObjectProvider,\n} from \"./types\";\nimport {\n IFluidDependencySynthesizer,\n} 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 private readonly providers = new Map<keyof TMap, FluidObjectProvider<any>>();\n private readonly parents: IFluidDependencySynthesizer[];\n public get IFluidDependencySynthesizer() { return this; }\n\n public constructor(... parents: (IFluidDependencySynthesizer | undefined)[]) {\n this.parents = parents.filter((v): v is IFluidDependencySynthesizer => v !== undefined);\n }\n\n /**\n * Add a new provider\n * @param type - Name of the Type T being provided\n * @param provider - A provider that will resolve the T correctly when asked\n * @throws - If passing a type that's already registered\n */\n public register<T extends keyof TMap = keyof TMap>(type: T, provider: FluidObjectProvider<Pick<TMap, T>>): void {\n if (this.providers.has(type)) {\n throw new Error(`Attempting to register a provider of type ${type} that already exists`);\n }\n\n this.providers.set(type, provider);\n }\n\n /**\n * Remove a provider\n * @param type - Name of the provider to remove\n */\n public unregister(type: keyof TMap): void {\n if (this.providers.has(type)) {\n this.providers.delete(type);\n }\n }\n\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n */\n public synthesize<O, R = undefined | Record<string, never>>(\n optionalTypes: FluidObjectSymbolProvider<O>,\n requiredTypes: Required<FluidObjectSymbolProvider<R>>,\n ): AsyncFluidObjectProvider<O, R> {\n const base: AsyncFluidObjectProvider<O, R> = {} as any;\n this.generateRequired<R>(base, requiredTypes);\n this.generateOptional<O>(base, optionalTypes);\n Object.defineProperty(base, IFluidDependencySynthesizer, { get: () => this });\n return base;\n }\n\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n * @param excludeParents - If true, exclude checking parent registries\n */\n public has(type: string, excludeParents?: boolean): boolean {\n if (this.providers.has(type as keyof TMap)) {\n return true;\n }\n if (excludeParents !== true) {\n return this.parents.some((p: IFluidDependencySynthesizer) => p.has(type));\n }\n return false;\n }\n /**\n * @deprecated - Needed for back compat\n */\n private getProvider(provider: string & keyof TMap){\n if(this.has(provider)){\n if(this.providers.has(provider)){\n return this.providers.get(provider);\n }\n for(const parent of this.parents){\n if(parent instanceof DependencyContainer){\n return parent.getProvider(provider);\n }else{\n // eslint-disable-next-line @typescript-eslint/dot-notation\n const maybeGetProvider = parent[\"getProvider\"];\n if(typeof maybeGetProvider === \"function\"){\n return maybeGetProvider(provider);\n }\n }\n }\n }\n }\n\n private generateRequired<T>(\n base: AsyncRequiredFluidObjectProvider<T>,\n types: Required<FluidObjectSymbolProvider<T>>,\n ) {\n if(types === undefined) return;\n for(const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n const provider = this.resolveProvider(key);\n if(provider === undefined) {\n throw new Error(`Object attempted to be created without registered required provider ${key}`);\n }\n Object.defineProperty(\n base,\n key,\n provider,\n );\n }\n }\n\n private generateOptional<T>(\n base: AsyncOptionalFluidObjectProvider<T>,\n types: FluidObjectSymbolProvider<T>,\n ) {\n if(types === undefined) return;\n for(const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n // back-compat: in 0.56 we allow undefined in the types, but we didn't before\n // this will keep runtime back compat, eventually we should support undefined properties\n // rather than properties that return promises that resolve to undefined\n const provider = this.resolveProvider(key) ?? {get:()=>Promise.resolve(undefined)};\n Object.defineProperty(\n base,\n key,\n provider,\n );\n }\n }\n\n private resolveProvider<T extends keyof TMap>(t: T): PropertyDescriptor | undefined {\n // If we have the provider return it\n const provider = this.providers.get(t);\n if (provider === undefined) {\n for(const parent of this.parents) {\n const sp = { [t]: t } as FluidObjectSymbolProvider<Pick<TMap, T>>;\n const syn = parent.synthesize<Pick<TMap, T>,{}>(\n sp,\n {});\n const descriptor = Object.getOwnPropertyDescriptor(syn, t);\n if (descriptor !== undefined) {\n return descriptor;\n }\n }\n return undefined;\n }\n\n // The double nested gets are required for lazy loading the provider resolution\n if (typeof provider === \"function\") {\n return {\n get() {\n if (provider && typeof provider === \"function\") {\n return Promise.resolve(this[IFluidDependencySynthesizer])\n .then(async (fds): Promise<any> => provider(fds))\n .then((p) => p?.[t]);\n }\n },\n };\n }\n return {\n get() {\n if (provider) {\n return Promise.resolve(provider).then((p) => {\n if (p) {\n return p[t];\n }\n });\n }\n },\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dependencyContainer.js","sourceRoot":"","sources":["../src/dependencyContainer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH,+EAEuC;AAEvC;;;GAGG;AACH,MAAa,mBAAmB;IAK5B,YAAmB,GAAI,OAAoD;QAJ1D,cAAS,GAAG,IAAI,GAAG,EAAwC,CAAC;QAKzE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAC5F,CAAC;IAJD,IAAW,2BAA2B,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAMzD;;;;;OAKG;IACI,QAAQ,CAAoC,IAAO,EAAE,QAA4C;QACpG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,sBAAsB,CAAC,CAAC;SAC5F;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,IAAgB;QAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC/B;IACL,CAAC;IAED;;OAEG;IACI,UAAU,CACb,aAA2C,EAC3C,aAAqD;QAErD,MAAM,IAAI,GAAmC,EAAS,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAI,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAI,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yDAA2B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,IAAY,EAAE,cAAwB;QAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAkB,CAAC,EAAE;YACxC,OAAO,IAAI,CAAC;SACf;QACD,IAAI,cAAc,KAAK,IAAI,EAAE;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAA8B,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7E;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD;;OAEG;IACK,WAAW,CAAC,QAA6B;QAC7C,IAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACnB,IAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aACvC;YACD,KAAI,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9B,IAAG,MAAM,YAAY,mBAAmB,EAAE;oBACtC,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBACvC;qBAAI;oBACD,2DAA2D;oBAC3D,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;oBAC/C,IAAG,OAAO,gBAAgB,KAAK,UAAU,EAAE;wBACvC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;qBACrC;iBACJ;aACJ;SACJ;IACL,CAAC;IAEO,gBAAgB,CACpB,IAAyC,EACzC,KAA6C;QAE7C,IAAI,KAAK,KAAK,SAAS,EAAE;YAAE,OAAO;SAAE;QACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAA8B,EAAE;YAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAG,QAAQ,KAAK,SAAS,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,uEAAuE,GAAG,EAAE,CAAC,CAAC;aACjG;YACD,MAAM,CAAC,cAAc,CACjB,IAAI,EACJ,GAAG,EACH,QAAQ,CACX,CAAC;SACL;IACL,CAAC;IAEO,gBAAgB,CACpB,IAAyC,EACzC,KAAmC;;QAEnC,IAAI,KAAK,KAAK,SAAS,EAAE;YAAE,OAAO;SAAE;QACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAA8B,EAAE;YAC/D,6EAA6E;YAC7E,wFAAwF;YACxF,wEAAwE;YACxE,MAAM,QAAQ,SAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,mCAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;YAC7E,MAAM,CAAC,cAAc,CACjB,IAAI,EACJ,GAAG,EACH,QAAQ,CACX,CAAC;SACL;IACL,CAAC;IAEO,eAAe,CAAuB,CAAI;QAC9C,oCAAoC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/B,yEAAyE;gBACzE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAA8C,CAAC;gBAClE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CACzB,EAAE,EACF,EAAE,CAAC,CAAC;gBACR,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC3D,IAAI,UAAU,KAAK,SAAS,EAAE;oBAC1B,OAAO,UAAU,CAAC;iBACrB;aACJ;YACD,OAAO,SAAS,CAAC;SACpB;QAED,+EAA+E;QAC/E,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;YAChC,OAAO;gBACH,GAAG;oBACC,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;wBAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,yDAA2B,CAAC,CAAC;6BACpD,IAAI,CAAC,KAAK,EAAE,GAAG,EAAgB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;6BAChD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAG,CAAC,CAAC,CAAC,CAAC;qBAC5B;gBACL,CAAC;aACJ,CAAC;SACL;QACD,OAAO;YACC,GAAG;gBACC,IAAI,QAAQ,EAAE;oBACV,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;wBACxC,IAAI,CAAC,EAAE;4BACH,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;yBACf;oBACL,CAAC,CAAC,CAAC;iBACN;YACL,CAAC;SACJ,CAAC;IACV,CAAC;CACJ;AAhKD,kDAgKC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AsyncFluidObjectProvider,\n FluidObjectSymbolProvider,\n FluidObjectProvider,\n AsyncOptionalFluidObjectProvider,\n AsyncRequiredFluidObjectProvider,\n} from \"./types\";\nimport {\n IFluidDependencySynthesizer,\n} 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 private readonly providers = new Map<keyof TMap, FluidObjectProvider<any>>();\n private readonly parents: IFluidDependencySynthesizer[];\n public get IFluidDependencySynthesizer() { return this; }\n\n public constructor(... parents: (IFluidDependencySynthesizer | undefined)[]) {\n this.parents = parents.filter((v): v is IFluidDependencySynthesizer => v !== undefined);\n }\n\n /**\n * Add a new provider\n * @param type - Name of the Type T being provided\n * @param provider - A provider that will resolve the T correctly when asked\n * @throws - If passing a type that's already registered\n */\n public register<T extends keyof TMap = keyof TMap>(type: T, provider: FluidObjectProvider<Pick<TMap, T>>): void {\n if (this.providers.has(type)) {\n throw new Error(`Attempting to register a provider of type ${type} that already exists`);\n }\n\n this.providers.set(type, provider);\n }\n\n /**\n * Remove a provider\n * @param type - Name of the provider to remove\n */\n public unregister(type: keyof TMap): void {\n if (this.providers.has(type)) {\n this.providers.delete(type);\n }\n }\n\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n */\n public synthesize<O, R = undefined | Record<string, never>>(\n optionalTypes: FluidObjectSymbolProvider<O>,\n requiredTypes: Required<FluidObjectSymbolProvider<R>>,\n ): AsyncFluidObjectProvider<O, R> {\n const base: AsyncFluidObjectProvider<O, R> = {} as any;\n this.generateRequired<R>(base, requiredTypes);\n this.generateOptional<O>(base, optionalTypes);\n Object.defineProperty(base, IFluidDependencySynthesizer, { get: () => this });\n return base;\n }\n\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n * @param excludeParents - If true, exclude checking parent registries\n */\n public has(type: string, excludeParents?: boolean): boolean {\n if (this.providers.has(type as keyof TMap)) {\n return true;\n }\n if (excludeParents !== true) {\n return this.parents.some((p: IFluidDependencySynthesizer) => p.has(type));\n }\n return false;\n }\n /**\n * @deprecated - Needed for back compat\n */\n private getProvider(provider: string & keyof TMap) {\n if(this.has(provider)) {\n if(this.providers.has(provider)) {\n return this.providers.get(provider);\n }\n for(const parent of this.parents) {\n if(parent instanceof DependencyContainer) {\n return parent.getProvider(provider);\n }else{\n // eslint-disable-next-line @typescript-eslint/dot-notation\n const maybeGetProvider = parent[\"getProvider\"];\n if(typeof maybeGetProvider === \"function\") {\n return maybeGetProvider(provider);\n }\n }\n }\n }\n }\n\n private generateRequired<T>(\n base: AsyncRequiredFluidObjectProvider<T>,\n types: Required<FluidObjectSymbolProvider<T>>,\n ) {\n if (types === undefined) { return; }\n for (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n const provider = this.resolveProvider(key);\n if(provider === undefined) {\n throw new Error(`Object attempted to be created without registered required provider ${key}`);\n }\n Object.defineProperty(\n base,\n key,\n provider,\n );\n }\n }\n\n private generateOptional<T>(\n base: AsyncOptionalFluidObjectProvider<T>,\n types: FluidObjectSymbolProvider<T>,\n ) {\n if (types === undefined) { return; }\n for (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n // back-compat: in 0.56 we allow undefined in the types, but we didn't before\n // this will keep runtime back compat, eventually we should support undefined properties\n // rather than properties that return promises that resolve to undefined\n const provider = this.resolveProvider(key) ?? { get: async () => undefined };\n Object.defineProperty(\n base,\n key,\n provider,\n );\n }\n }\n\n private resolveProvider<T extends keyof TMap>(t: T): PropertyDescriptor | undefined {\n // If we have the provider return it\n const provider = this.providers.get(t);\n if (provider === undefined) {\n for (const parent of this.parents) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const sp = { [t]: t } as FluidObjectSymbolProvider<Pick<TMap, T>>;\n const syn = parent.synthesize<Pick<TMap, T>,{}>(\n sp,\n {});\n const descriptor = Object.getOwnPropertyDescriptor(syn, t);\n if (descriptor !== undefined) {\n return descriptor;\n }\n }\n return undefined;\n }\n\n // The double nested gets are required for lazy loading the provider resolution\n if (typeof provider === \"function\") {\n return {\n get() {\n if (provider && typeof provider === \"function\") {\n return Promise.resolve(this[IFluidDependencySynthesizer])\n .then(async (fds): Promise<any> => provider(fds))\n .then((p) => p?.[t]);\n }\n },\n };\n }\n return {\n get() {\n if (provider) {\n return Promise.resolve(provider).then((p) => {\n if (p) {\n return p[t];\n }\n });\n }\n },\n };\n }\n}\n"]}
|
|
@@ -23,10 +23,15 @@ class MockLoadable {
|
|
|
23
23
|
get IFluidLoadable() { return this; }
|
|
24
24
|
get handle() { return new datastore_1.FluidObjectHandle(this, "", mockHandleContext); }
|
|
25
25
|
}
|
|
26
|
-
class
|
|
27
|
-
get
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
class MockFluidRouter {
|
|
27
|
+
get IFluidRouter() { return this; }
|
|
28
|
+
async request() {
|
|
29
|
+
return {
|
|
30
|
+
mimeType: "",
|
|
31
|
+
status: 200,
|
|
32
|
+
value: "",
|
|
33
|
+
};
|
|
34
|
+
}
|
|
30
35
|
}
|
|
31
36
|
describe("Routerlicious", () => {
|
|
32
37
|
describe("Aqueduct", () => {
|
|
@@ -119,48 +124,48 @@ describe("Routerlicious", () => {
|
|
|
119
124
|
const dc = new __1.DependencyContainer();
|
|
120
125
|
const loadableMock = new MockLoadable();
|
|
121
126
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
122
|
-
const
|
|
123
|
-
dc.register(core_interfaces_1.
|
|
124
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable,
|
|
127
|
+
const routerMock = new MockFluidRouter();
|
|
128
|
+
dc.register(core_interfaces_1.IFluidRouter, routerMock);
|
|
129
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter }, undefined);
|
|
125
130
|
const loadable = await s.IFluidLoadable;
|
|
126
131
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
127
132
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
128
|
-
const
|
|
129
|
-
assert_1.strict(
|
|
130
|
-
assert_1.strict(
|
|
133
|
+
const router = await s.IFluidRouter;
|
|
134
|
+
assert_1.strict(router, "Optional IFluidRouter was registered");
|
|
135
|
+
assert_1.strict(router === routerMock, "IFluidRouter is expected");
|
|
131
136
|
});
|
|
132
137
|
it(`Two Optional Modules one registered`, async () => {
|
|
133
138
|
const dc = new __1.DependencyContainer();
|
|
134
139
|
const loadableMock = new MockLoadable();
|
|
135
140
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
136
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable,
|
|
141
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter }, undefined);
|
|
137
142
|
const loadable = await s.IFluidLoadable;
|
|
138
143
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
139
144
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
140
|
-
const
|
|
141
|
-
assert_1.strict(!
|
|
145
|
+
const router = await s.IFluidRouter;
|
|
146
|
+
assert_1.strict(!router, "Optional IFluidRouter was not registered");
|
|
142
147
|
});
|
|
143
148
|
it(`Two Optional Modules none registered`, async () => {
|
|
144
149
|
const dc = new __1.DependencyContainer();
|
|
145
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable,
|
|
150
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter }, undefined);
|
|
146
151
|
const loadable = await s.IFluidLoadable;
|
|
147
152
|
assert_1.strict(!loadable, "Optional IFluidLoadable was not registered");
|
|
148
|
-
const
|
|
149
|
-
assert_1.strict(!
|
|
153
|
+
const router = await s.IFluidRouter;
|
|
154
|
+
assert_1.strict(!router, "Optional IFluidRouter was not registered");
|
|
150
155
|
});
|
|
151
156
|
it(`Two Required Modules all registered`, async () => {
|
|
152
157
|
const dc = new __1.DependencyContainer();
|
|
153
158
|
const loadableMock = new MockLoadable();
|
|
154
159
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
155
|
-
const
|
|
156
|
-
dc.register(core_interfaces_1.
|
|
157
|
-
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable,
|
|
160
|
+
const routerMock = new MockFluidRouter();
|
|
161
|
+
dc.register(core_interfaces_1.IFluidRouter, routerMock);
|
|
162
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter });
|
|
158
163
|
const loadable = await s.IFluidLoadable;
|
|
159
164
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
160
165
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
161
|
-
const
|
|
162
|
-
assert_1.strict(
|
|
163
|
-
assert_1.strict(
|
|
166
|
+
const router = await s.IFluidRouter;
|
|
167
|
+
assert_1.strict(router, "Required IFluidRouter was registered");
|
|
168
|
+
assert_1.strict(router === routerMock, "IFluidRouter is expected");
|
|
164
169
|
});
|
|
165
170
|
it(`Required Provider not registered should throw`, async () => {
|
|
166
171
|
const dc = new __1.DependencyContainer();
|
|
@@ -182,15 +187,15 @@ describe("Routerlicious", () => {
|
|
|
182
187
|
const loadableMock = new MockLoadable();
|
|
183
188
|
parentDc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
184
189
|
const dc = new __1.DependencyContainer(parentDc);
|
|
185
|
-
const
|
|
186
|
-
dc.register(core_interfaces_1.
|
|
187
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable,
|
|
190
|
+
const routerMock = new MockFluidRouter();
|
|
191
|
+
dc.register(core_interfaces_1.IFluidRouter, routerMock);
|
|
192
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter }, undefined);
|
|
188
193
|
const loadable = await s.IFluidLoadable;
|
|
189
194
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
190
195
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
191
|
-
const
|
|
192
|
-
assert_1.strict(
|
|
193
|
-
assert_1.strict(
|
|
196
|
+
const router = await s.IFluidRouter;
|
|
197
|
+
assert_1.strict(router, "Optional IFluidRouter was registered");
|
|
198
|
+
assert_1.strict(router === routerMock, "IFluidRouter is expected");
|
|
194
199
|
});
|
|
195
200
|
it(`Optional Provider found in Parent and Child resolves Child`, async () => {
|
|
196
201
|
const parentDc = new __1.DependencyContainer();
|
|
@@ -219,15 +224,15 @@ describe("Routerlicious", () => {
|
|
|
219
224
|
const loadableMock = new MockLoadable();
|
|
220
225
|
parentDc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
221
226
|
const dc = new __1.DependencyContainer(parentDc);
|
|
222
|
-
const
|
|
223
|
-
dc.register(core_interfaces_1.
|
|
224
|
-
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable,
|
|
227
|
+
const routerMock = new MockFluidRouter();
|
|
228
|
+
dc.register(core_interfaces_1.IFluidRouter, routerMock);
|
|
229
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidRouter: core_interfaces_1.IFluidRouter });
|
|
225
230
|
const loadable = await s.IFluidLoadable;
|
|
226
231
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
227
232
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
228
|
-
const
|
|
229
|
-
assert_1.strict(
|
|
230
|
-
assert_1.strict(
|
|
233
|
+
const router = await s.IFluidRouter;
|
|
234
|
+
assert_1.strict(router, "Required IFluidRouter was registered");
|
|
235
|
+
assert_1.strict(router === routerMock, "IFluidRouter is expected");
|
|
231
236
|
});
|
|
232
237
|
it(`Required Provider found in Parent and Child resolves Child`, async () => {
|
|
233
238
|
const parentDc = new __1.DependencyContainer();
|
|
@@ -266,21 +271,21 @@ describe("Routerlicious", () => {
|
|
|
266
271
|
it(`has() resolves correctly in all variations`, async () => {
|
|
267
272
|
const dc = new __1.DependencyContainer();
|
|
268
273
|
dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
269
|
-
dc.register(core_interfaces_1.
|
|
274
|
+
dc.register(core_interfaces_1.IFluidRouter, new MockFluidRouter());
|
|
270
275
|
assert_1.strict(dc.has(core_interfaces_1.IFluidLoadable), "Manager has IFluidLoadable");
|
|
271
|
-
assert_1.strict(dc.has(core_interfaces_1.
|
|
272
|
-
assert_1.strict(dc.has(core_interfaces_1.IFluidLoadable) && dc.has(core_interfaces_1.
|
|
276
|
+
assert_1.strict(dc.has(core_interfaces_1.IFluidRouter), "Manager has IFluidRouter");
|
|
277
|
+
assert_1.strict(dc.has(core_interfaces_1.IFluidLoadable) && dc.has(core_interfaces_1.IFluidRouter), "Manager has IFluidLoadable & IFluidRouter");
|
|
273
278
|
});
|
|
274
279
|
it(`Child has Parent modules`, async () => {
|
|
275
280
|
const parentDc = new __1.DependencyContainer();
|
|
276
281
|
const loadableMock = new MockLoadable();
|
|
277
282
|
parentDc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
278
283
|
const dc = new __1.DependencyContainer(parentDc);
|
|
279
|
-
const
|
|
280
|
-
dc.register(core_interfaces_1.
|
|
284
|
+
const routerMock = new MockFluidRouter();
|
|
285
|
+
dc.register(core_interfaces_1.IFluidRouter, routerMock);
|
|
281
286
|
assert_1.strict(dc.has(core_interfaces_1.IFluidLoadable), "has includes parent registered");
|
|
282
287
|
assert_1.strict(!dc.has(core_interfaces_1.IFluidLoadable, true), "has does not include excluded parent registered");
|
|
283
|
-
assert_1.strict(dc.has(core_interfaces_1.
|
|
288
|
+
assert_1.strict(dc.has(core_interfaces_1.IFluidRouter), "has includes registered");
|
|
284
289
|
assert_1.strict(!dc.has(core_interfaces_1.IFluidHandle), "does not include not registered");
|
|
285
290
|
});
|
|
286
291
|
it(`Parent Resolved from Child`, async () => {
|
|
@@ -1 +1 @@
|
|
|
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 IFluidConfiguration,\n IFluidLoadable,\n IFluidHandleContext,\n IFluidHandle,\n IProvideFluidLoadable,\n IProvideFluidConfiguration,\n IProvideFluidHandle,\n FluidObject,\n} from \"@fluidframework/core-interfaces\";\nimport { FluidObjectHandle } from \"@fluidframework/datastore\";\n\nimport { DependencyContainer } from \"..\";\nimport { IFluidDependencySynthesizer } from \"../IFluidDependencySynthesizer\";\nimport { FluidObjectProvider } from \"../types\";\n\nconst mockHandleContext: IFluidHandleContext = {\n absolutePath: \"\",\n isAttached: false,\n IFluidHandleContext: undefined as any,\n\n attachGraph: () => {\n throw new Error(\"Method not implemented.\");\n },\n resolveHandle: () => {\n throw new Error(\"Method not implemented.\");\n },\n};\n\nclass MockLoadable implements IFluidLoadable {\n public get IFluidLoadable() { return this; }\n public get handle() { return new FluidObjectHandle(this, \"\", mockHandleContext); }\n}\n\nclass MockFluidConfiguration implements IFluidConfiguration {\n public get IFluidConfiguration() { return this; }\n public get canReconnect() { return false; }\n public get scopes() { return [\"scope\"]; }\n}\n\ndescribe(\"Routerlicious\", () => {\n describe(\"Aqueduct\", () => {\n describe(\"DependencyContainer\", () => {\n it(`One Optional Provider registered via value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, mock);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via Promise value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, Promise.resolve(mock));\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via Promise factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = async () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, mock);\n\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via Promise value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, Promise.resolve(mock));\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = () => mock;\n dc.register(IFluidLoadable, factory);\n\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via Promise factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = async () => mock;\n dc.register(IFluidLoadable, factory);\n\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Two Optional Modules all registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Optional IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Two Optional Modules one registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(!config, \"Optional IFluidConfiguration was not registered\");\n });\n\n it(`Two Optional Modules none registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(!loadable, \"Optional IFluidLoadable was not registered\");\n const config = await s.IFluidConfiguration;\n assert(!config, \"Optional IFluidConfiguration was not registered\");\n });\n\n it(`Two Required Modules all registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidConfiguration>(\n undefined, { IFluidLoadable, IFluidConfiguration });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Required IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Required Provider not registered should throw`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\n assert.throws(() => dc.synthesize<undefined, IProvideFluidLoadable>(\n undefined,\n { IFluidLoadable },\n ), Error);\n });\n\n it(`Optional Provider found in Parent`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n parentDc.register(IFluidLoadable, mock);\n const dc = new DependencyContainer(parentDc);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Optional Modules found in Parent and Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer<FluidObject<IFluidConfiguration>>(parentDc);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Optional IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Optional Provider found in Parent and Child resolves Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n parentDc.register(IFluidLoadable, new MockLoadable());\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n });\n\n it(`Required Provider found in Parent`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n parentDc.register(IFluidLoadable, mock);\n const dc = new DependencyContainer(parentDc);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Required Modules found in Parent and Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer<FluidObject<IFluidConfiguration>>(parentDc);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidConfiguration>(\n undefined, { IFluidLoadable, IFluidConfiguration });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Required IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Required Provider found in Parent and Child resolves Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n parentDc.register(IFluidLoadable, new MockLoadable());\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n });\n\n it(`Registering`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n assert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n });\n\n it(`Registering the same type twice throws`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n assert.throws(() => dc.register(IFluidLoadable, new MockLoadable()), Error);\n });\n\n it(`Registering then Unregistering`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.unregister(IFluidLoadable);\n assert(!dc.has(IFluidLoadable), \"DependencyContainer doesn't have IFluidLoadable\");\n });\n\n it(`Registering then Unregistering then Registering`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.unregister(IFluidLoadable);\n dc.register(IFluidLoadable, new MockLoadable());\n assert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n });\n\n it(`has() resolves correctly in all variations`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.register(IFluidConfiguration, new MockFluidConfiguration());\n assert(dc.has(IFluidLoadable), \"Manager has IFluidLoadable\");\n assert(dc.has(IFluidConfiguration), \"Manager has IFluidConfiguration\");\n assert(\n dc.has(IFluidLoadable) && dc.has(IFluidConfiguration),\n \"Manager has IFluidLoadable & IFluidConfiguration\");\n });\n\n\n it(`Child has Parent modules`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer<FluidObject<IFluidConfiguration>>(parentDc);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n assert(dc.has(IFluidLoadable), \"has includes parent registered\");\n assert(!dc.has(IFluidLoadable, true),\"has does not include excluded parent registered\");\n assert(dc.has(IFluidConfiguration),\"has includes registered\");\n assert(!dc.has(IFluidHandle),\"does not include not registered\");\n });\n\n it(`Parent Resolved from Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidHandle>>();\n const loadableToHandle: FluidObjectProvider<IProvideFluidHandle> =\n async (fds: IFluidDependencySynthesizer) => {\n \n const loadable = fds.synthesize<undefined, IProvideFluidLoadable>(undefined,{IFluidLoadable});\n return (await loadable.IFluidLoadable).handle;\n };\n parentDc.register(IFluidHandle, loadableToHandle);\n\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const deps = dc.synthesize<IFluidHandle>({IFluidHandle}, undefined);\n assert(await deps.IFluidHandle !== undefined, \"handle undefined\");\n });\n\n it(`Undefined Provider is not Undefined`, async () => {\n const dc = new DependencyContainer();\n const deps = dc.synthesize<IFluidLoadable>({IFluidLoadable}, {});\n assert(deps.IFluidLoadable !== undefined, \"handle undefined\");\n assert(await deps.IFluidLoadable === undefined, \"handle undefined\");\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"dependencyContainer.spec.js","sourceRoot":"","sources":["../../src/test/dependencyContainer.spec.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,mCAA0C;AAE1C,qEASyC;AACzC,yDAA8D;AAE9D,0BAAyC;AAIzC,MAAM,iBAAiB,GAAwB;IAC3C,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,KAAK;IACjB,mBAAmB,EAAE,SAAgB;IAErC,WAAW,EAAE,GAAG,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,aAAa,EAAE,GAAG,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ,CAAC;AAEF,MAAM,YAAY;IACd,IAAW,cAAc,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAC5C,IAAW,MAAM,KAAK,OAAO,IAAI,6BAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;CACrF;AAED,MAAM,eAAe;IACjB,IAAW,YAAY,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IACnC,KAAK,CAAC,OAAO;QAChB,OAAO;YACH,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,EAAE;SACZ,CAAC;IACN,CAAC;CACJ;AAED,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACtB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACjC,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;gBACxD,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,CAAC,CAAC;gBAElC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAiB,EAAE,cAAc,EAAd,gCAAc,EAAE,EAAE,SAAS,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;gBAChE,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEnD,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAiB,EAAE,cAAc,EAAd,gCAAc,EAAE,EAAE,SAAS,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;gBAC1D,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;gBAC3B,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,OAAO,CAAC,CAAC;gBAErC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAiB,EAAE,cAAc,EAAd,gCAAc,EAAE,EAAE,SAAS,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;gBACjC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,OAAO,CAAC,CAAC;gBAErC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAiB,EAAE,cAAc,EAAd,gCAAc,EAAE,EAAE,SAAS,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;gBACxD,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,CAAC,CAAC;gBAElC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAmC,SAAS,EAAE,EAAE,cAAc,EAAd,gCAAc,EAAE,CAAC,CAAC;gBACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;gBAChE,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEnD,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAmC,SAAS,EAAE,EAAE,cAAc,EAAd,gCAAc,EAAE,CAAC,CAAC;gBACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;gBAC1D,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;gBAC3B,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,OAAO,CAAC,CAAC;gBAErC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAmC,SAAS,EAAE,EAAE,cAAc,EAAd,gCAAc,EAAE,CAAC,CAAC;gBACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;gBACjC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,OAAO,CAAC,CAAC;gBAErC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAmC,SAAS,EAAE,EAAE,cAAc,EAAd,gCAAc,EAAE,CAAC,CAAC;gBACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA8C,CAAC;gBACjF,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,YAAY,CAAC,CAAC;gBAC1C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,EAAE,CAAC,QAAQ,CAAC,8BAAY,EAAE,UAAU,CAAC,CAAC;gBAEtC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CACnB,EAAE,cAAc,EAAd,gCAAc,EAAE,YAAY,EAAZ,8BAAY,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,4BAA4B,CAAC,CAAC;gBAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC;gBACpC,eAAM,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;gBACvD,eAAM,CAAC,MAAM,KAAK,UAAU,EAAE,0BAA0B,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA8C,CAAC;gBACjF,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,YAAY,CAAC,CAAC;gBAE1C,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CACnB,EAAE,cAAc,EAAd,gCAAc,EAAE,YAAY,EAAZ,8BAAY,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,4BAA4B,CAAC,CAAC;gBAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC;gBACpC,eAAM,CAAC,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBAClD,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA8C,CAAC;gBAEjF,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CACnB,EAAE,cAAc,EAAd,gCAAc,EAAE,YAAY,EAAZ,8BAAY,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,CAAC,QAAQ,EAAE,4CAA4C,CAAC,CAAC;gBAChE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC;gBACpC,eAAM,CAAC,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA8C,CAAC;gBACjF,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,YAAY,CAAC,CAAC;gBAC1C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,EAAE,CAAC,QAAQ,CAAC,8BAAY,EAAE,UAAU,CAAC,CAAC;gBAEtC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CACnB,SAAS,EAAE,EAAE,cAAc,EAAd,gCAAc,EAAE,YAAY,EAAZ,8BAAY,EAAE,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,4BAA4B,CAAC,CAAC;gBAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC;gBACpC,eAAM,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;gBACvD,eAAM,CAAC,MAAM,KAAK,UAAU,EAAE,0BAA0B,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC3D,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAElE,eAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAC7B,SAAS,EACT,EAAE,cAAc,EAAd,gCAAc,EAAE,CACrB,EAAE,KAAK,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,MAAM,QAAQ,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBACxE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,QAAQ,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,CAAC,CAAC;gBACxC,MAAM,EAAE,GAAG,IAAI,uBAAmB,CAAC,QAAQ,CAAC,CAAC;gBAE7C,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAiB,EAAE,cAAc,EAAd,gCAAc,EAAE,EAAE,SAAS,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;gBACxD,MAAM,QAAQ,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBACxE,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxC,QAAQ,CAAC,QAAQ,CAAC,gCAAc,EAAE,YAAY,CAAC,CAAC;gBAChD,MAAM,EAAE,GAAG,IAAI,uBAAmB,CAA4B,QAAQ,CAAC,CAAC;gBACxE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,EAAE,CAAC,QAAQ,CAAC,8BAAY,EAAE,UAAU,CAAC,CAAC;gBAEtC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CACnB,EAAE,cAAc,EAAd,gCAAc,EAAE,YAAY,EAAZ,8BAAY,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,4BAA4B,CAAC,CAAC;gBAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC;gBACpC,eAAM,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;gBACvD,eAAM,CAAC,MAAM,KAAK,UAAU,EAAE,0BAA0B,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;gBACxE,MAAM,QAAQ,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBACxE,QAAQ,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;gBACtD,MAAM,EAAE,GAAG,IAAI,uBAAmB,CAA8B,QAAQ,CAAC,CAAC;gBAC1E,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,YAAY,CAAC,CAAC;gBAE1C,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAiB,EAAE,cAAc,EAAd,gCAAc,EAAE,EAAE,SAAS,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,4BAA4B,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,MAAM,QAAQ,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBACxE,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,QAAQ,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,CAAC,CAAC;gBACxC,MAAM,EAAE,GAAG,IAAI,uBAAmB,CAAC,QAAQ,CAAC,CAAC;gBAE7C,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAmC,SAAS,EAAE,EAAE,cAAc,EAAd,gCAAc,EAAE,CAAC,CAAC;gBACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;gBACxD,eAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,YAAY,MAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;gBACxD,MAAM,QAAQ,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBACxE,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxC,QAAQ,CAAC,QAAQ,CAAC,gCAAc,EAAE,YAAY,CAAC,CAAC;gBAChD,MAAM,EAAE,GAAG,IAAI,uBAAmB,CAA4B,QAAQ,CAAC,CAAC;gBACxE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,EAAE,CAAC,QAAQ,CAAC,8BAAY,EAAE,UAAU,CAAC,CAAC;gBAEtC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CACnB,SAAS,EAAE,EAAE,cAAc,EAAd,gCAAc,EAAE,YAAY,EAAZ,8BAAY,EAAE,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,4BAA4B,CAAC,CAAC;gBAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC;gBACpC,eAAM,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;gBACvD,eAAM,CAAC,MAAM,KAAK,UAAU,EAAE,0BAA0B,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;gBACxE,MAAM,QAAQ,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBACxE,QAAQ,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;gBACtD,MAAM,EAAE,GAAG,IAAI,uBAAmB,CAA8B,QAAQ,CAAC,CAAC;gBAC1E,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,YAAY,CAAC,CAAC;gBAE1C,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAmC,SAAS,EAAE,EAAE,cAAc,EAAd,gCAAc,EAAE,CAAC,CAAC;gBACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC;gBACxC,eAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;gBAC3D,eAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,4BAA4B,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;gBACzB,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;gBAChD,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAc,CAAC,EAAE,wCAAwC,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;gBAChD,eAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC5C,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;gBAChD,EAAE,CAAC,UAAU,CAAC,gCAAc,CAAC,CAAC;gBAC9B,eAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAc,CAAC,EAAE,iDAAiD,CAAC,CAAC;YACvF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;gBAC7D,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBAClE,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;gBAChD,EAAE,CAAC,UAAU,CAAC,gCAAc,CAAC,CAAC;gBAC9B,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;gBAChD,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAc,CAAC,EAAE,wCAAwC,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;gBACxD,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAA8C,CAAC;gBACjF,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;gBAChD,EAAE,CAAC,QAAQ,CAAC,8BAAY,EAAE,IAAI,eAAe,EAAE,CAAC,CAAC;gBACjD,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAc,CAAC,EAAE,4BAA4B,CAAC,CAAC;gBAC7D,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,8BAAY,CAAC,EAAE,0BAA0B,CAAC,CAAC;gBACzD,eAAM,CACF,EAAE,CAAC,GAAG,CAAC,gCAAc,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,8BAAY,CAAC,EAC9C,2CAA2C,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;gBACtC,MAAM,QAAQ,GAAG,IAAI,uBAAmB,EAA+B,CAAC;gBACxE,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxC,QAAQ,CAAC,QAAQ,CAAC,gCAAc,EAAE,YAAY,CAAC,CAAC;gBAChD,MAAM,EAAE,GAAG,IAAI,uBAAmB,CAA4B,QAAQ,CAAC,CAAC;gBACxE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,EAAE,CAAC,QAAQ,CAAC,8BAAY,EAAE,UAAU,CAAC,CAAC;gBAEtC,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAc,CAAC,EAAE,gCAAgC,CAAC,CAAC;gBACjE,eAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAc,EAAE,IAAI,CAAC,EAAC,iDAAiD,CAAC,CAAC;gBACxF,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,8BAAY,CAAC,EAAC,yBAAyB,CAAC,CAAC;gBACvD,eAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,8BAAY,CAAC,EAAC,iCAAiC,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM,QAAQ,GAAG,IAAI,uBAAmB,EAA6B,CAAC;gBACtE,MAAM,gBAAgB,GAClB,KAAK,EAAE,GAAgC,EAAE,EAAE;oBACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAmC,SAAS,EAAC,EAAC,cAAc,EAAd,gCAAc,EAAC,CAAC,CAAC;oBAC9F,OAAO,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;gBAClD,CAAC,CAAC;gBACN,QAAQ,CAAC,QAAQ,CAAC,8BAAY,EAAE,gBAAgB,CAAC,CAAC;gBAElD,MAAM,EAAE,GAAG,IAAI,uBAAmB,CAA8B,QAAQ,CAAC,CAAC;gBAC1E,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxC,EAAE,CAAC,QAAQ,CAAC,gCAAc,EAAE,YAAY,CAAC,CAAC;gBAE1C,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAe,EAAC,YAAY,EAAZ,8BAAY,EAAC,EAAE,SAAS,CAAC,CAAC;gBACpE,eAAM,CAAC,MAAM,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,kBAAkB,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,EAAE,GAAG,IAAI,uBAAmB,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAiB,EAAC,cAAc,EAAd,gCAAc,EAAC,EAAE,EAAE,CAAC,CAAC;gBACjE,eAAM,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,kBAAkB,CAAC,CAAC;gBAC9D,eAAM,CAAC,MAAM,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,kBAAkB,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","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 IFluidLoadable,\n IFluidHandleContext,\n IFluidHandle,\n IProvideFluidLoadable,\n IProvideFluidRouter,\n IProvideFluidHandle,\n FluidObject,\n IFluidRouter,\n} from \"@fluidframework/core-interfaces\";\nimport { FluidObjectHandle } from \"@fluidframework/datastore\";\n\nimport { DependencyContainer } from \"..\";\nimport { IFluidDependencySynthesizer } from \"../IFluidDependencySynthesizer\";\nimport { FluidObjectProvider } from \"../types\";\n\nconst mockHandleContext: IFluidHandleContext = {\n absolutePath: \"\",\n isAttached: false,\n IFluidHandleContext: undefined as any,\n\n attachGraph: () => {\n throw new Error(\"Method not implemented.\");\n },\n resolveHandle: () => {\n throw new Error(\"Method not implemented.\");\n },\n};\n\nclass MockLoadable implements IFluidLoadable {\n public get IFluidLoadable() { return this; }\n public get handle() { return new FluidObjectHandle(this, \"\", mockHandleContext); }\n}\n\nclass MockFluidRouter implements IFluidRouter {\n public get IFluidRouter() { return this; }\n public async request() {\n return {\n mimeType: \"\",\n status: 200,\n value: \"\",\n };\n }\n}\n\ndescribe(\"Routerlicious\", () => {\n describe(\"Aqueduct\", () => {\n describe(\"DependencyContainer\", () => {\n it(`One Optional Provider registered via value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, mock);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via Promise value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, Promise.resolve(mock));\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via Promise factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = async () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, mock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via Promise value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, Promise.resolve(mock));\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via Promise factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = async () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Two Optional Modules all registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n const routerMock = new MockFluidRouter();\n dc.register(IFluidRouter, routerMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n { IFluidLoadable, IFluidRouter }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const router = await s.IFluidRouter;\n assert(router, \"Optional IFluidRouter was registered\");\n assert(router === routerMock, \"IFluidRouter is expected\");\n });\n\n it(`Two Optional Modules one registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n { IFluidLoadable, IFluidRouter }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const router = await s.IFluidRouter;\n assert(!router, \"Optional IFluidRouter was not registered\");\n });\n\n it(`Two Optional Modules none registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n\n const s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n { IFluidLoadable, IFluidRouter }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(!loadable, \"Optional IFluidLoadable was not registered\");\n const router = await s.IFluidRouter;\n assert(!router, \"Optional IFluidRouter was not registered\");\n });\n\n it(`Two Required Modules all registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n const routerMock = new MockFluidRouter();\n dc.register(IFluidRouter, routerMock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidRouter>(\n undefined, { IFluidLoadable, IFluidRouter });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const router = await s.IFluidRouter;\n assert(router, \"Required IFluidRouter was registered\");\n assert(router === routerMock, \"IFluidRouter is expected\");\n });\n\n it(`Required Provider not registered should throw`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\n assert.throws(() => dc.synthesize<undefined, IProvideFluidLoadable>(\n undefined,\n { IFluidLoadable },\n ), Error);\n });\n\n it(`Optional Provider found in Parent`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n parentDc.register(IFluidLoadable, mock);\n const dc = new DependencyContainer(parentDc);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Optional Modules found in Parent and Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer<FluidObject<IFluidRouter>>(parentDc);\n const routerMock = new MockFluidRouter();\n dc.register(IFluidRouter, routerMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidRouter>(\n { IFluidLoadable, IFluidRouter }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const router = await s.IFluidRouter;\n assert(router, \"Optional IFluidRouter was registered\");\n assert(router === routerMock, \"IFluidRouter is expected\");\n });\n\n it(`Optional Provider found in Parent and Child resolves Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n parentDc.register(IFluidLoadable, new MockLoadable());\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n });\n\n it(`Required Provider found in Parent`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n parentDc.register(IFluidLoadable, mock);\n const dc = new DependencyContainer(parentDc);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Required Modules found in Parent and Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer<FluidObject<IFluidRouter>>(parentDc);\n const routerMock = new MockFluidRouter();\n dc.register(IFluidRouter, routerMock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidRouter>(\n undefined, { IFluidLoadable, IFluidRouter });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const router = await s.IFluidRouter;\n assert(router, \"Required IFluidRouter was registered\");\n assert(router === routerMock, \"IFluidRouter is expected\");\n });\n\n it(`Required Provider found in Parent and Child resolves Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n parentDc.register(IFluidLoadable, new MockLoadable());\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n });\n\n it(`Registering`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n assert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n });\n\n it(`Registering the same type twice throws`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n assert.throws(() => dc.register(IFluidLoadable, new MockLoadable()), Error);\n });\n\n it(`Registering then Unregistering`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.unregister(IFluidLoadable);\n assert(!dc.has(IFluidLoadable), \"DependencyContainer doesn't have IFluidLoadable\");\n });\n\n it(`Registering then Unregistering then Registering`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.unregister(IFluidLoadable);\n dc.register(IFluidLoadable, new MockLoadable());\n assert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n });\n\n it(`has() resolves correctly in all variations`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidRouter>>();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.register(IFluidRouter, new MockFluidRouter());\n assert(dc.has(IFluidLoadable), \"Manager has IFluidLoadable\");\n assert(dc.has(IFluidRouter), \"Manager has IFluidRouter\");\n assert(\n dc.has(IFluidLoadable) && dc.has(IFluidRouter),\n \"Manager has IFluidLoadable & IFluidRouter\");\n });\n\n it(`Child has Parent modules`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer<FluidObject<IFluidRouter>>(parentDc);\n const routerMock = new MockFluidRouter();\n dc.register(IFluidRouter, routerMock);\n\n assert(dc.has(IFluidLoadable), \"has includes parent registered\");\n assert(!dc.has(IFluidLoadable, true),\"has does not include excluded parent registered\");\n assert(dc.has(IFluidRouter),\"has includes registered\");\n assert(!dc.has(IFluidHandle),\"does not include not registered\");\n });\n\n it(`Parent Resolved from Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidHandle>>();\n const loadableToHandle: FluidObjectProvider<IProvideFluidHandle> =\n async (fds: IFluidDependencySynthesizer) => {\n const loadable = fds.synthesize<undefined, IProvideFluidLoadable>(undefined,{IFluidLoadable});\n return (await loadable.IFluidLoadable).handle;\n };\n parentDc.register(IFluidHandle, loadableToHandle);\n\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const deps = dc.synthesize<IFluidHandle>({IFluidHandle}, undefined);\n assert(await deps.IFluidHandle !== undefined, \"handle undefined\");\n });\n\n it(`Undefined Provider is not Undefined`, async () => {\n const dc = new DependencyContainer();\n const deps = dc.synthesize<IFluidLoadable>({IFluidLoadable}, {});\n assert(deps.IFluidLoadable !== undefined, \"handle undefined\");\n assert(await deps.IFluidLoadable === undefined, \"handle undefined\");\n });\n });\n });\n});\n"]}
|
|
@@ -522,8 +522,8 @@
|
|
|
522
522
|
"affectsGlobalScope": false
|
|
523
523
|
},
|
|
524
524
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/error.d.ts": {
|
|
525
|
-
"version": "
|
|
526
|
-
"signature": "
|
|
525
|
+
"version": "9217b29cd8c092fd796ab5309d0dc3cb4e63c9d32aff49e3137ab74e20d6caa2",
|
|
526
|
+
"signature": "9217b29cd8c092fd796ab5309d0dc3cb4e63c9d32aff49e3137ab74e20d6caa2",
|
|
527
527
|
"affectsGlobalScope": false
|
|
528
528
|
},
|
|
529
529
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidModule.d.ts": {
|
|
@@ -532,18 +532,18 @@
|
|
|
532
532
|
"affectsGlobalScope": false
|
|
533
533
|
},
|
|
534
534
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts": {
|
|
535
|
-
"version": "
|
|
536
|
-
"signature": "
|
|
535
|
+
"version": "34c3d5cfa7f01c2c116a0db84b92c0b3bc598cb282bb230b1df4a9a525519207",
|
|
536
|
+
"signature": "34c3d5cfa7f01c2c116a0db84b92c0b3bc598cb282bb230b1df4a9a525519207",
|
|
537
537
|
"affectsGlobalScope": false
|
|
538
538
|
},
|
|
539
539
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/runtime.d.ts": {
|
|
540
|
-
"version": "
|
|
541
|
-
"signature": "
|
|
540
|
+
"version": "26c98bfa706fffbaf75ec5795c3f28914613246702c394ee016f781a9bea03f4",
|
|
541
|
+
"signature": "26c98bfa706fffbaf75ec5795c3f28914613246702c394ee016f781a9bea03f4",
|
|
542
542
|
"affectsGlobalScope": false
|
|
543
543
|
},
|
|
544
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
545
|
-
"version": "
|
|
546
|
-
"signature": "
|
|
544
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts": {
|
|
545
|
+
"version": "419d3554e67aed44fbad75878a168ec530032ea11a2572c769e98d15b91cad81",
|
|
546
|
+
"signature": "419d3554e67aed44fbad75878a168ec530032ea11a2572c769e98d15b91cad81",
|
|
547
547
|
"affectsGlobalScope": false
|
|
548
548
|
},
|
|
549
549
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidPackage.d.ts": {
|
|
@@ -557,8 +557,8 @@
|
|
|
557
557
|
"affectsGlobalScope": false
|
|
558
558
|
},
|
|
559
559
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/index.d.ts": {
|
|
560
|
-
"version": "
|
|
561
|
-
"signature": "
|
|
560
|
+
"version": "4e651c414c5ad235f54cff3a4aca867edaafdec42f563fff5debf416e8132723",
|
|
561
|
+
"signature": "4e651c414c5ad235f54cff3a4aca867edaafdec42f563fff5debf416e8132723",
|
|
562
562
|
"affectsGlobalScope": false
|
|
563
563
|
},
|
|
564
564
|
"../../../../../node_modules/@fluidframework/common-utils/dist/assert.d.ts": {
|
|
@@ -687,8 +687,8 @@
|
|
|
687
687
|
"affectsGlobalScope": false
|
|
688
688
|
},
|
|
689
689
|
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts": {
|
|
690
|
-
"version": "
|
|
691
|
-
"signature": "
|
|
690
|
+
"version": "eff90c8fb7521204ef889ea0684748a7ff8a1b62a7e0cc23ace822a96d1bff44",
|
|
691
|
+
"signature": "eff90c8fb7521204ef889ea0684748a7ff8a1b62a7e0cc23ace822a96d1bff44",
|
|
692
692
|
"affectsGlobalScope": false
|
|
693
693
|
},
|
|
694
694
|
"../../../../runtime/runtime-definitions/dist/garbageCollection.d.ts": {
|
|
@@ -707,13 +707,13 @@
|
|
|
707
707
|
"affectsGlobalScope": false
|
|
708
708
|
},
|
|
709
709
|
"../../../../runtime/runtime-definitions/dist/dataStoreContext.d.ts": {
|
|
710
|
-
"version": "
|
|
711
|
-
"signature": "
|
|
710
|
+
"version": "e1ba1e707ed1b2d3cee85d4d37da9d40bb89adf5266c9220133d73b28bb6a79a",
|
|
711
|
+
"signature": "e1ba1e707ed1b2d3cee85d4d37da9d40bb89adf5266c9220133d73b28bb6a79a",
|
|
712
712
|
"affectsGlobalScope": false
|
|
713
713
|
},
|
|
714
714
|
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts": {
|
|
715
|
-
"version": "
|
|
716
|
-
"signature": "
|
|
715
|
+
"version": "bcb2b5ec9bb438a4a2ec0b66e7c623ed32784dedc3ef49b6ef48c700085dd803",
|
|
716
|
+
"signature": "bcb2b5ec9bb438a4a2ec0b66e7c623ed32784dedc3ef49b6ef48c700085dd803",
|
|
717
717
|
"affectsGlobalScope": false
|
|
718
718
|
},
|
|
719
719
|
"../../../../runtime/runtime-definitions/dist/index.d.ts": {
|
|
@@ -787,7 +787,7 @@
|
|
|
787
787
|
"affectsGlobalScope": false
|
|
788
788
|
},
|
|
789
789
|
"../../src/test/dependencyContainer.spec.ts": {
|
|
790
|
-
"version": "
|
|
790
|
+
"version": "1d583b66c6cfea11f43655a7ab72418a8f7e64523d6e3d04f4bfae0c0dad09c1",
|
|
791
791
|
"signature": "abc949a48872f03572ff3108a999c28e5e394296186194fa9e4ad357fa3cfcd7",
|
|
792
792
|
"affectsGlobalScope": false
|
|
793
793
|
},
|
|
@@ -891,13 +891,11 @@
|
|
|
891
891
|
],
|
|
892
892
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts": [
|
|
893
893
|
"../../../../../node_modules/@fluidframework/common-definitions/dist/index.d.ts",
|
|
894
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
894
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts",
|
|
895
895
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
896
896
|
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
897
897
|
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts",
|
|
898
|
-
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/index.d.ts"
|
|
899
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts",
|
|
900
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
898
|
+
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/index.d.ts"
|
|
901
899
|
],
|
|
902
900
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/error.d.ts": [
|
|
903
901
|
"../../../../../node_modules/@fluidframework/common-definitions/dist/index.d.ts"
|
|
@@ -913,19 +911,17 @@
|
|
|
913
911
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/error.d.ts",
|
|
914
912
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidModule.d.ts",
|
|
915
913
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidPackage.d.ts",
|
|
916
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
914
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts",
|
|
917
915
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
918
916
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/proxyLoader.d.ts",
|
|
919
917
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/runtime.d.ts"
|
|
920
918
|
],
|
|
921
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
919
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts": [
|
|
922
920
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts",
|
|
923
921
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
924
922
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/runtime.d.ts",
|
|
925
923
|
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
926
|
-
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts"
|
|
927
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts",
|
|
928
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
924
|
+
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts"
|
|
929
925
|
],
|
|
930
926
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts": [
|
|
931
927
|
"../../../../../node_modules/@fluidframework/common-definitions/dist/index.d.ts",
|
|
@@ -933,14 +929,12 @@
|
|
|
933
929
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts",
|
|
934
930
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/error.d.ts",
|
|
935
931
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidModule.d.ts",
|
|
936
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
932
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts",
|
|
937
933
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/runtime.d.ts",
|
|
938
934
|
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
939
935
|
"../../../../../node_modules/@fluidframework/driver-definitions/dist/index.d.ts",
|
|
940
936
|
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts",
|
|
941
|
-
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/index.d.ts"
|
|
942
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts",
|
|
943
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
937
|
+
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/index.d.ts"
|
|
944
938
|
],
|
|
945
939
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/proxyLoader.d.ts": [
|
|
946
940
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
@@ -995,11 +989,9 @@
|
|
|
995
989
|
],
|
|
996
990
|
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts": [
|
|
997
991
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts",
|
|
998
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
992
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts",
|
|
999
993
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1000
|
-
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts"
|
|
1001
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts",
|
|
1002
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
994
|
+
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts"
|
|
1003
995
|
],
|
|
1004
996
|
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/clients.d.ts": [
|
|
1005
997
|
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/users.d.ts"
|
|
@@ -1332,20 +1324,9 @@
|
|
|
1332
1324
|
"../../../../runtime/runtime-definitions/dist/summary.d.ts"
|
|
1333
1325
|
],
|
|
1334
1326
|
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts": [
|
|
1335
|
-
"
|
|
1336
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/chaincode.d.ts",
|
|
1337
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1338
|
-
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
1339
|
-
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts",
|
|
1340
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreContext.d.ts",
|
|
1341
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
1327
|
+
"../../../../runtime/runtime-definitions/dist/dataStoreContext.d.ts"
|
|
1342
1328
|
],
|
|
1343
1329
|
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts": [
|
|
1344
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts",
|
|
1345
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/chaincode.d.ts",
|
|
1346
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1347
|
-
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
1348
|
-
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts",
|
|
1349
1330
|
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts"
|
|
1350
1331
|
],
|
|
1351
1332
|
"../../../../runtime/runtime-definitions/dist/index.d.ts": [
|
|
@@ -1429,13 +1410,11 @@
|
|
|
1429
1410
|
],
|
|
1430
1411
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts": [
|
|
1431
1412
|
"../../../../../node_modules/@fluidframework/common-definitions/dist/index.d.ts",
|
|
1432
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
1413
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts",
|
|
1433
1414
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1434
1415
|
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
1435
1416
|
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts",
|
|
1436
|
-
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/index.d.ts"
|
|
1437
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts",
|
|
1438
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
1417
|
+
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/index.d.ts"
|
|
1439
1418
|
],
|
|
1440
1419
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/error.d.ts": [
|
|
1441
1420
|
"../../../../../node_modules/@fluidframework/common-definitions/dist/index.d.ts"
|
|
@@ -1451,19 +1430,17 @@
|
|
|
1451
1430
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/error.d.ts",
|
|
1452
1431
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidModule.d.ts",
|
|
1453
1432
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidPackage.d.ts",
|
|
1454
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
1433
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts",
|
|
1455
1434
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1456
1435
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/proxyLoader.d.ts",
|
|
1457
1436
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/runtime.d.ts"
|
|
1458
1437
|
],
|
|
1459
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
1438
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts": [
|
|
1460
1439
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts",
|
|
1461
1440
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1462
1441
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/runtime.d.ts",
|
|
1463
1442
|
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
1464
|
-
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts"
|
|
1465
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts",
|
|
1466
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
1443
|
+
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts"
|
|
1467
1444
|
],
|
|
1468
1445
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts": [
|
|
1469
1446
|
"../../../../../node_modules/@fluidframework/common-definitions/dist/index.d.ts",
|
|
@@ -1471,14 +1448,12 @@
|
|
|
1471
1448
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts",
|
|
1472
1449
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/error.d.ts",
|
|
1473
1450
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidModule.d.ts",
|
|
1474
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
1451
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts",
|
|
1475
1452
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/runtime.d.ts",
|
|
1476
1453
|
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
1477
1454
|
"../../../../../node_modules/@fluidframework/driver-definitions/dist/index.d.ts",
|
|
1478
1455
|
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts",
|
|
1479
|
-
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/index.d.ts"
|
|
1480
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts",
|
|
1481
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
1456
|
+
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/index.d.ts"
|
|
1482
1457
|
],
|
|
1483
1458
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/proxyLoader.d.ts": [
|
|
1484
1459
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
@@ -1533,11 +1508,9 @@
|
|
|
1533
1508
|
],
|
|
1534
1509
|
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts": [
|
|
1535
1510
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts",
|
|
1536
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
1511
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts",
|
|
1537
1512
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1538
|
-
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts"
|
|
1539
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts",
|
|
1540
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
1513
|
+
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts"
|
|
1541
1514
|
],
|
|
1542
1515
|
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/clients.d.ts": [
|
|
1543
1516
|
"../../../../../node_modules/@fluidframework/protocol-definitions/dist/users.d.ts"
|
|
@@ -1862,20 +1835,9 @@
|
|
|
1862
1835
|
"../../../../runtime/runtime-definitions/dist/summary.d.ts"
|
|
1863
1836
|
],
|
|
1864
1837
|
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts": [
|
|
1865
|
-
"
|
|
1866
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/chaincode.d.ts",
|
|
1867
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1868
|
-
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
1869
|
-
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts",
|
|
1870
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreContext.d.ts",
|
|
1871
|
-
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts"
|
|
1838
|
+
"../../../../runtime/runtime-definitions/dist/dataStoreContext.d.ts"
|
|
1872
1839
|
],
|
|
1873
1840
|
"../../../../runtime/runtime-definitions/dist/dataStoreRegistry.d.ts": [
|
|
1874
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/deltas.d.ts",
|
|
1875
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/chaincode.d.ts",
|
|
1876
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1877
|
-
"../../../../../node_modules/@fluidframework/core-interfaces/dist/index.d.ts",
|
|
1878
|
-
"../../../../../node_modules/@fluidframework/driver-definitions/dist/urlResolver.d.ts",
|
|
1879
1841
|
"../../../../runtime/runtime-definitions/dist/dataStoreFactory.d.ts"
|
|
1880
1842
|
],
|
|
1881
1843
|
"../../../../runtime/runtime-definitions/dist/index.d.ts": [
|
|
@@ -1931,7 +1893,7 @@
|
|
|
1931
1893
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidModule.d.ts",
|
|
1932
1894
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/fluidPackage.d.ts",
|
|
1933
1895
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/index.d.ts",
|
|
1934
|
-
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/
|
|
1896
|
+
"../../../../../node_modules/@fluidframework/container-definitions/dist/legacy/index.d.ts",
|
|
1935
1897
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/loader.d.ts",
|
|
1936
1898
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/proxyLoader.d.ts",
|
|
1937
1899
|
"../../../../../node_modules/@fluidframework/container-definitions/dist/runtime.d.ts",
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,GAAG,CAAC;AAChD;;;;;;GAMG;AACH,oBAAY,yBAAyB,CAAC,CAAC,IAAI;KACtC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,oBAAY,gCAAgC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,GAAG,CAAC;AAChD;;;;;;GAMG;AACH,oBAAY,yBAAyB,CAAC,CAAC,IAAI;KACtC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,oBAAY,gCAAgC,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG;KAC3F,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;CACxE,CAAC;AAEF;;;;GAIG;AACH,oBAAY,gCAAgC,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAC/D,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACrB;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEN;;GAEG;AACH,oBAAY,wBAAwB,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,IAC/C,gCAAgC,CAAC,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAC,CAAC,CAAC;AAEhF;;GAEG;AACH,oBAAY,mBAAmB,CAAC,CAAC,IAC7B,WAAW,CAAC,CAAC,CAAC,GACZ,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACvB,CAAC,CAAC,mBAAmB,EAAE,2BAA2B,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,GACtE,CAAC,CAAC,mBAAmB,EAAE,2BAA2B,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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 * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type mapped to a string representation\n * of that property.\n *\n * @example - \\{ IFoo: \"IFoo\" \\}\n */\nexport type FluidObjectSymbolProvider<T> = {\n [P in keyof T]?: P;\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type mapped to an object that implements\n * the property.\n */\nexport type AsyncRequiredFluidObjectProvider<T> =
|
|
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 * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type mapped to a string representation\n * of that property.\n *\n * @example - \\{ IFoo: \"IFoo\" \\}\n */\nexport type FluidObjectSymbolProvider<T> = {\n [P in keyof T]?: P;\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type mapped to an object that implements\n * the property.\n */\nexport type AsyncRequiredFluidObjectProvider<T> = T extends undefined ? Record<string, never> : {\n [P in keyof T]: Promise<NonNullable<Exclude<T[P], undefined | null>>>\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type, mapped to an object that implements\n * the property or undefined.\n */\nexport type AsyncOptionalFluidObjectProvider<T> = T extends undefined\n ? Record<string, never>\n : {\n [P in keyof T]?: Promise<T[P] | undefined>;\n };\n\n/**\n * Combined type for Optional and Required Async Fluid object Providers\n */\nexport type AsyncFluidObjectProvider<O, R = undefined>\n = AsyncOptionalFluidObjectProvider<O> & AsyncRequiredFluidObjectProvider<R>;\n\n/**\n * Multiple ways to provide a Fluid object.\n */\nexport type FluidObjectProvider<T> =\n NonNullable<T>\n | Promise<NonNullable<T>>\n | ((dependencyContainer: IFluidDependencySynthesizer) => NonNullable<T>)\n | ((dependencyContainer: IFluidDependencySynthesizer) => Promise<NonNullable<T>>);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IFluidDependencySynthesizer.js","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,CAAC,MAAM,2BAA2B,GAClC,6BAA6B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AsyncFluidObjectProvider,\n FluidObjectSymbolProvider,\n} from \"./types\";\n\nexport const IFluidDependencySynthesizer: keyof IProvideFluidDependencySynthesizer\n = \"IFluidDependencySynthesizer\";\n\nexport interface IProvideFluidDependencySynthesizer {\n IFluidDependencySynthesizer: IFluidDependencySynthesizer;\n}\n\n/**\n * IFluidDependencySynthesizer can generate IFluidObjects 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
|
|
1
|
+
{"version":3,"file":"IFluidDependencySynthesizer.js","sourceRoot":"","sources":["../src/IFluidDependencySynthesizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,CAAC,MAAM,2BAA2B,GAClC,6BAA6B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AsyncFluidObjectProvider,\n FluidObjectSymbolProvider,\n} from \"./types\";\n\nexport const IFluidDependencySynthesizer: keyof IProvideFluidDependencySynthesizer\n = \"IFluidDependencySynthesizer\";\n\nexport interface IProvideFluidDependencySynthesizer {\n IFluidDependencySynthesizer: IFluidDependencySynthesizer;\n}\n\n/**\n * IFluidDependencySynthesizer can generate IFluidObjects 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 /**\n * synthesize takes optional and required types and returns an object that will fulfill the\n * defined types based off objects that has been previously registered.\n *\n * @param optionalTypes - optional types to be in the Scope object\n * @param requiredTypes - required types that need to be in the Scope object\n */\n synthesize<O, R = undefined | Record<string, never>>(\n optionalTypes: FluidObjectSymbolProvider<O>,\n requiredTypes: Required<FluidObjectSymbolProvider<R>>,\n ): AsyncFluidObjectProvider<O, R>;\n\n /**\n * Check if a given type is registered\n * @param type - Type to check\n */\n has(type: string): boolean;\n}\n"]}
|
|
@@ -80,8 +80,9 @@ export class DependencyContainer {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
generateRequired(base, types) {
|
|
83
|
-
if (types === undefined)
|
|
83
|
+
if (types === undefined) {
|
|
84
84
|
return;
|
|
85
|
+
}
|
|
85
86
|
for (const key of Object.keys(types)) {
|
|
86
87
|
const provider = this.resolveProvider(key);
|
|
87
88
|
if (provider === undefined) {
|
|
@@ -92,13 +93,14 @@ export class DependencyContainer {
|
|
|
92
93
|
}
|
|
93
94
|
generateOptional(base, types) {
|
|
94
95
|
var _a;
|
|
95
|
-
if (types === undefined)
|
|
96
|
+
if (types === undefined) {
|
|
96
97
|
return;
|
|
98
|
+
}
|
|
97
99
|
for (const key of Object.keys(types)) {
|
|
98
100
|
// back-compat: in 0.56 we allow undefined in the types, but we didn't before
|
|
99
101
|
// this will keep runtime back compat, eventually we should support undefined properties
|
|
100
102
|
// rather than properties that return promises that resolve to undefined
|
|
101
|
-
const provider = (_a = this.resolveProvider(key)) !== null && _a !== void 0 ? _a : { get: () =>
|
|
103
|
+
const provider = (_a = this.resolveProvider(key)) !== null && _a !== void 0 ? _a : { get: async () => undefined };
|
|
102
104
|
Object.defineProperty(base, key, provider);
|
|
103
105
|
}
|
|
104
106
|
}
|
|
@@ -107,6 +109,7 @@ export class DependencyContainer {
|
|
|
107
109
|
const provider = this.providers.get(t);
|
|
108
110
|
if (provider === undefined) {
|
|
109
111
|
for (const parent of this.parents) {
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
110
113
|
const sp = { [t]: t };
|
|
111
114
|
const syn = parent.synthesize(sp, {});
|
|
112
115
|
const descriptor = Object.getOwnPropertyDescriptor(syn, t);
|
|
@@ -1 +1 @@
|
|
|
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 {\n AsyncFluidObjectProvider,\n FluidObjectSymbolProvider,\n FluidObjectProvider,\n AsyncOptionalFluidObjectProvider,\n AsyncRequiredFluidObjectProvider,\n} from \"./types\";\nimport {\n IFluidDependencySynthesizer,\n} 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 private readonly providers = new Map<keyof TMap, FluidObjectProvider<any>>();\n private readonly parents: IFluidDependencySynthesizer[];\n public get IFluidDependencySynthesizer() { return this; }\n\n public constructor(... parents: (IFluidDependencySynthesizer | undefined)[]) {\n this.parents = parents.filter((v): v is IFluidDependencySynthesizer => v !== undefined);\n }\n\n /**\n * Add a new provider\n * @param type - Name of the Type T being provided\n * @param provider - A provider that will resolve the T correctly when asked\n * @throws - If passing a type that's already registered\n */\n public register<T extends keyof TMap = keyof TMap>(type: T, provider: FluidObjectProvider<Pick<TMap, T>>): void {\n if (this.providers.has(type)) {\n throw new Error(`Attempting to register a provider of type ${type} that already exists`);\n }\n\n this.providers.set(type, provider);\n }\n\n /**\n * Remove a provider\n * @param type - Name of the provider to remove\n */\n public unregister(type: keyof TMap): void {\n if (this.providers.has(type)) {\n this.providers.delete(type);\n }\n }\n\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n */\n public synthesize<O, R = undefined | Record<string, never>>(\n optionalTypes: FluidObjectSymbolProvider<O>,\n requiredTypes: Required<FluidObjectSymbolProvider<R>>,\n ): AsyncFluidObjectProvider<O, R> {\n const base: AsyncFluidObjectProvider<O, R> = {} as any;\n this.generateRequired<R>(base, requiredTypes);\n this.generateOptional<O>(base, optionalTypes);\n Object.defineProperty(base, IFluidDependencySynthesizer, { get: () => this });\n return base;\n }\n\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n * @param excludeParents - If true, exclude checking parent registries\n */\n public has(type: string, excludeParents?: boolean): boolean {\n if (this.providers.has(type as keyof TMap)) {\n return true;\n }\n if (excludeParents !== true) {\n return this.parents.some((p: IFluidDependencySynthesizer) => p.has(type));\n }\n return false;\n }\n /**\n * @deprecated - Needed for back compat\n */\n private getProvider(provider: string & keyof TMap){\n if(this.has(provider)){\n if(this.providers.has(provider)){\n return this.providers.get(provider);\n }\n for(const parent of this.parents){\n if(parent instanceof DependencyContainer){\n return parent.getProvider(provider);\n }else{\n // eslint-disable-next-line @typescript-eslint/dot-notation\n const maybeGetProvider = parent[\"getProvider\"];\n if(typeof maybeGetProvider === \"function\"){\n return maybeGetProvider(provider);\n }\n }\n }\n }\n }\n\n private generateRequired<T>(\n base: AsyncRequiredFluidObjectProvider<T>,\n types: Required<FluidObjectSymbolProvider<T>>,\n ) {\n if(types === undefined) return;\n for(const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n const provider = this.resolveProvider(key);\n if(provider === undefined) {\n throw new Error(`Object attempted to be created without registered required provider ${key}`);\n }\n Object.defineProperty(\n base,\n key,\n provider,\n );\n }\n }\n\n private generateOptional<T>(\n base: AsyncOptionalFluidObjectProvider<T>,\n types: FluidObjectSymbolProvider<T>,\n ) {\n if(types === undefined) return;\n for(const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n // back-compat: in 0.56 we allow undefined in the types, but we didn't before\n // this will keep runtime back compat, eventually we should support undefined properties\n // rather than properties that return promises that resolve to undefined\n const provider = this.resolveProvider(key) ?? {get:()=>Promise.resolve(undefined)};\n Object.defineProperty(\n base,\n key,\n provider,\n );\n }\n }\n\n private resolveProvider<T extends keyof TMap>(t: T): PropertyDescriptor | undefined {\n // If we have the provider return it\n const provider = this.providers.get(t);\n if (provider === undefined) {\n for(const parent of this.parents) {\n const sp = { [t]: t } as FluidObjectSymbolProvider<Pick<TMap, T>>;\n const syn = parent.synthesize<Pick<TMap, T>,{}>(\n sp,\n {});\n const descriptor = Object.getOwnPropertyDescriptor(syn, t);\n if (descriptor !== undefined) {\n return descriptor;\n }\n }\n return undefined;\n }\n\n // The double nested gets are required for lazy loading the provider resolution\n if (typeof provider === \"function\") {\n return {\n get() {\n if (provider && typeof provider === \"function\") {\n return Promise.resolve(this[IFluidDependencySynthesizer])\n .then(async (fds): Promise<any> => provider(fds))\n .then((p) => p?.[t]);\n }\n },\n };\n }\n return {\n get() {\n if (provider) {\n return Promise.resolve(provider).then((p) => {\n if (p) {\n return p[t];\n }\n });\n }\n },\n };\n }\n}\n"]}
|
|
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 {\n AsyncFluidObjectProvider,\n FluidObjectSymbolProvider,\n FluidObjectProvider,\n AsyncOptionalFluidObjectProvider,\n AsyncRequiredFluidObjectProvider,\n} from \"./types\";\nimport {\n IFluidDependencySynthesizer,\n} 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 private readonly providers = new Map<keyof TMap, FluidObjectProvider<any>>();\n private readonly parents: IFluidDependencySynthesizer[];\n public get IFluidDependencySynthesizer() { return this; }\n\n public constructor(... parents: (IFluidDependencySynthesizer | undefined)[]) {\n this.parents = parents.filter((v): v is IFluidDependencySynthesizer => v !== undefined);\n }\n\n /**\n * Add a new provider\n * @param type - Name of the Type T being provided\n * @param provider - A provider that will resolve the T correctly when asked\n * @throws - If passing a type that's already registered\n */\n public register<T extends keyof TMap = keyof TMap>(type: T, provider: FluidObjectProvider<Pick<TMap, T>>): void {\n if (this.providers.has(type)) {\n throw new Error(`Attempting to register a provider of type ${type} that already exists`);\n }\n\n this.providers.set(type, provider);\n }\n\n /**\n * Remove a provider\n * @param type - Name of the provider to remove\n */\n public unregister(type: keyof TMap): void {\n if (this.providers.has(type)) {\n this.providers.delete(type);\n }\n }\n\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n */\n public synthesize<O, R = undefined | Record<string, never>>(\n optionalTypes: FluidObjectSymbolProvider<O>,\n requiredTypes: Required<FluidObjectSymbolProvider<R>>,\n ): AsyncFluidObjectProvider<O, R> {\n const base: AsyncFluidObjectProvider<O, R> = {} as any;\n this.generateRequired<R>(base, requiredTypes);\n this.generateOptional<O>(base, optionalTypes);\n Object.defineProperty(base, IFluidDependencySynthesizer, { get: () => this });\n return base;\n }\n\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n * @param excludeParents - If true, exclude checking parent registries\n */\n public has(type: string, excludeParents?: boolean): boolean {\n if (this.providers.has(type as keyof TMap)) {\n return true;\n }\n if (excludeParents !== true) {\n return this.parents.some((p: IFluidDependencySynthesizer) => p.has(type));\n }\n return false;\n }\n /**\n * @deprecated - Needed for back compat\n */\n private getProvider(provider: string & keyof TMap) {\n if(this.has(provider)) {\n if(this.providers.has(provider)) {\n return this.providers.get(provider);\n }\n for(const parent of this.parents) {\n if(parent instanceof DependencyContainer) {\n return parent.getProvider(provider);\n }else{\n // eslint-disable-next-line @typescript-eslint/dot-notation\n const maybeGetProvider = parent[\"getProvider\"];\n if(typeof maybeGetProvider === \"function\") {\n return maybeGetProvider(provider);\n }\n }\n }\n }\n }\n\n private generateRequired<T>(\n base: AsyncRequiredFluidObjectProvider<T>,\n types: Required<FluidObjectSymbolProvider<T>>,\n ) {\n if (types === undefined) { return; }\n for (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n const provider = this.resolveProvider(key);\n if(provider === undefined) {\n throw new Error(`Object attempted to be created without registered required provider ${key}`);\n }\n Object.defineProperty(\n base,\n key,\n provider,\n );\n }\n }\n\n private generateOptional<T>(\n base: AsyncOptionalFluidObjectProvider<T>,\n types: FluidObjectSymbolProvider<T>,\n ) {\n if (types === undefined) { return; }\n for (const key of Object.keys(types) as unknown as (keyof TMap)[]) {\n // back-compat: in 0.56 we allow undefined in the types, but we didn't before\n // this will keep runtime back compat, eventually we should support undefined properties\n // rather than properties that return promises that resolve to undefined\n const provider = this.resolveProvider(key) ?? { get: async () => undefined };\n Object.defineProperty(\n base,\n key,\n provider,\n );\n }\n }\n\n private resolveProvider<T extends keyof TMap>(t: T): PropertyDescriptor | undefined {\n // If we have the provider return it\n const provider = this.providers.get(t);\n if (provider === undefined) {\n for (const parent of this.parents) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const sp = { [t]: t } as FluidObjectSymbolProvider<Pick<TMap, T>>;\n const syn = parent.synthesize<Pick<TMap, T>,{}>(\n sp,\n {});\n const descriptor = Object.getOwnPropertyDescriptor(syn, t);\n if (descriptor !== undefined) {\n return descriptor;\n }\n }\n return undefined;\n }\n\n // The double nested gets are required for lazy loading the provider resolution\n if (typeof provider === \"function\") {\n return {\n get() {\n if (provider && typeof provider === \"function\") {\n return Promise.resolve(this[IFluidDependencySynthesizer])\n .then(async (fds): Promise<any> => provider(fds))\n .then((p) => p?.[t]);\n }\n },\n };\n }\n return {\n get() {\n if (provider) {\n return Promise.resolve(provider).then((p) => {\n if (p) {\n return p[t];\n }\n });\n }\n },\n };\n }\n}\n"]}
|
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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 * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type mapped to a string representation\n * of that property.\n *\n * @example - \\{ IFoo: \"IFoo\" \\}\n */\nexport type FluidObjectSymbolProvider<T> = {\n [P in keyof T]?: P;\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type mapped to an object that implements\n * the property.\n */\nexport type AsyncRequiredFluidObjectProvider<T> =
|
|
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 * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type mapped to a string representation\n * of that property.\n *\n * @example - \\{ IFoo: \"IFoo\" \\}\n */\nexport type FluidObjectSymbolProvider<T> = {\n [P in keyof T]?: P;\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type mapped to an object that implements\n * the property.\n */\nexport type AsyncRequiredFluidObjectProvider<T> = T extends undefined ? Record<string, never> : {\n [P in keyof T]: Promise<NonNullable<Exclude<T[P], undefined | null>>>\n};\n\n/**\n * This is a condensed version of Record that requires the object has all\n * the IFluidObject properties as its type, mapped to an object that implements\n * the property or undefined.\n */\nexport type AsyncOptionalFluidObjectProvider<T> = T extends undefined\n ? Record<string, never>\n : {\n [P in keyof T]?: Promise<T[P] | undefined>;\n };\n\n/**\n * Combined type for Optional and Required Async Fluid object Providers\n */\nexport type AsyncFluidObjectProvider<O, R = undefined>\n = AsyncOptionalFluidObjectProvider<O> & AsyncRequiredFluidObjectProvider<R>;\n\n/**\n * Multiple ways to provide a Fluid object.\n */\nexport type FluidObjectProvider<T> =\n NonNullable<T>\n | Promise<NonNullable<T>>\n | ((dependencyContainer: IFluidDependencySynthesizer) => NonNullable<T>)\n | ((dependencyContainer: IFluidDependencySynthesizer) => Promise<NonNullable<T>>);\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/synthesize",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.57.0",
|
|
4
4
|
"description": "A library for synthesizing scope objects.",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": "https://github.com/microsoft/FluidFramework",
|
|
@@ -60,9 +60,9 @@
|
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@fluidframework/build-common": "^0.23.0",
|
|
62
62
|
"@fluidframework/core-interfaces": "^0.42.0",
|
|
63
|
-
"@fluidframework/datastore": "^0.
|
|
64
|
-
"@fluidframework/eslint-config-fluid": "^0.
|
|
65
|
-
"@fluidframework/mocha-test-setup": "^0.
|
|
63
|
+
"@fluidframework/datastore": "^0.57.0",
|
|
64
|
+
"@fluidframework/eslint-config-fluid": "^0.26.0",
|
|
65
|
+
"@fluidframework/mocha-test-setup": "^0.57.0",
|
|
66
66
|
"@microsoft/api-extractor": "^7.16.1",
|
|
67
67
|
"@rushstack/eslint-config": "^2.5.1",
|
|
68
68
|
"@types/mocha": "^8.2.2",
|