@empathyco/x-adapter 7.0.0-alpha.6 → 7.0.0-alpha.7
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/cjs/empathy/builder/empathy-adapter.builder.js +7 -2
- package/dist/cjs/empathy/builder/empathy-adapter.builder.js.map +1 -1
- package/dist/cjs/empathy/services/empathy-cache.service.js +2 -3
- package/dist/cjs/empathy/services/empathy-cache.service.js.map +1 -1
- package/dist/esm/empathy/builder/empathy-adapter.builder.js +8 -3
- package/dist/esm/empathy/builder/empathy-adapter.builder.js.map +1 -1
- package/dist/esm/empathy/services/empathy-cache.service.js +2 -3
- package/dist/esm/empathy/services/empathy-cache.service.js.map +1 -1
- package/package.json +10 -10
- package/report/tsdoc-metadata.json +1 -1
- package/report/x-adapter.api.json +3 -3
|
@@ -28,7 +28,9 @@ var EmpathyAdapterBuilder = /** @class */ (function () {
|
|
|
28
28
|
this.config = container.get(container_const_1.DEPENDENCIES.config);
|
|
29
29
|
}
|
|
30
30
|
EmpathyAdapterBuilder.prototype.enableCache = function (_a) {
|
|
31
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.storageService, storageService = _c === void 0 ? typeof localStorage !== 'undefined'
|
|
31
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.storageService, storageService = _c === void 0 ? typeof localStorage !== 'undefined'
|
|
32
|
+
? new x_storage_service_1.BrowserStorageService(localStorage)
|
|
33
|
+
: undefined : _c, _d = _b.cacheService, cacheService = _d === void 0 ? empathy_cache_service_1.EmpathyCacheService : _d;
|
|
32
34
|
if (storageService && cacheService) {
|
|
33
35
|
this.container.bind(container_const_1.DEPENDENCIES.storageService).toConstantValue(storageService);
|
|
34
36
|
this.container.bind(container_const_1.DEPENDENCIES.cacheService).to(cacheService);
|
|
@@ -185,7 +187,10 @@ var EmpathyAdapterBuilder = /** @class */ (function () {
|
|
|
185
187
|
};
|
|
186
188
|
EmpathyAdapterBuilder.prototype.addHook = function (hook, hookName, feature) {
|
|
187
189
|
if (feature) {
|
|
188
|
-
this.container
|
|
190
|
+
this.container
|
|
191
|
+
.bind(container_const_1.DEPENDENCIES.Hooks[hookName])
|
|
192
|
+
.toFunction(hook)
|
|
193
|
+
.whenInjectedInto(container_const_1.DEPENDENCIES.Requestors[feature]);
|
|
189
194
|
}
|
|
190
195
|
else {
|
|
191
196
|
this.container.bind(container_const_1.DEPENDENCIES.Hooks[hookName]).toFunction(hook);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empathy-adapter.builder.js","sourceRoot":"","sources":["../../../../src/empathy/builder/empathy-adapter.builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { UserInfo } from '@empathyco/x-types';\nimport { StorageService } from '@empathyco/x-storage-service';\nimport { deepMerge } from '@empathyco/x-deep-merge';\nimport { Container, injectable } from 'inversify';\nimport { DeepPartial, FeatureNames, Newable } from '../../types';\nimport { EmpathyAdapterConfig, FacetConfig, FeatureConfig } from '../config/empathy-adapter-config.types';\nimport { ContainerConfigParser } from '../container/container-config-parser';\nimport { BINDINGS } from '../container/container.bindings';\nimport { DEPENDENCIES } from '../container/container.const';\nimport {\n BeforeRequest,\n BeforeResponseTransform,\n MapRequest,\n MapResponse,\n RequestMapper,\n ResponseMapper,\n ResponseTransformed\n} from '../empathy-adapter.types';\nimport { EmpathyAdapter } from '../empathy.adapter';\nimport { EntityNames } from '../entities.types';\nimport { Logger } from '../logger';\nimport { CacheService } from '../services/cache-service.types';\nimport { EmpathyCacheService } from '../services/empathy-cache.service';\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @internal\n */\ntype ConfiguratorCallback = (container: Container) => void;\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @internal\n */\ninterface EnableCacheOptions {\n storageService?: StorageService;\n cacheService?: Newable<CacheService>;\n}\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @public\n */\nexport class EmpathyAdapterBuilder {\n protected configurator?: ConfiguratorCallback;\n protected config: EmpathyAdapterConfig;\n\n constructor(\n protected container = new Container(),\n protected defaultBindingsConfig = BINDINGS,\n protected adapterClass: Newable<EmpathyAdapter> = EmpathyAdapter\n ) {\n this.initContainerBindings();\n // There is only one config object. As it has been binded with inversify toConstant() method, we are just getting a reference to it here\n this.config = container.get(DEPENDENCIES.config);\n }\n\n enableCache({\n storageService = typeof localStorage !== 'undefined' ? new StorageService(localStorage) : undefined,\n cacheService = EmpathyCacheService\n }: EnableCacheOptions = {}): this {\n if (storageService && cacheService) {\n this.container.bind(DEPENDENCIES.storageService).toConstantValue(storageService);\n this.container.bind(DEPENDENCIES.cacheService).to(cacheService);\n } else {\n Logger.warn('Tried to enable cache with invalid options');\n }\n return this;\n }\n\n addClassMapper<Entity>(mapper: Newable<ResponseMapper<Entity>>, entity: EntityNames, feature?: FeatureNames): this {\n const mapperKey = DEPENDENCIES.ResponseMappers[entity];\n if (feature) {\n const requestorKey = DEPENDENCIES.Requestors[feature];\n this.container.bind(mapperKey).to(mapper).whenAnyAncestorIs(requestorKey);\n } else {\n this.container.bind(mapperKey).to(mapper);\n }\n return this;\n }\n\n addMapper(mapper: MapResponse, entity: EntityNames, feature?: FeatureNames): this {\n const mapperClass = this.createMapperClass(mapper);\n this.addClassMapper(mapperClass, entity, feature);\n return this;\n }\n\n replaceMapper(mapper: MapResponse, entity: EntityNames): this {\n const mapperClass = this.createMapperClass(mapper);\n this.replaceClassMapper(mapperClass, entity);\n return this;\n }\n\n replaceClassMapper<Entity>(mapper: Newable<ResponseMapper<Entity>>, entity: EntityNames): this {\n const mapperKey = DEPENDENCIES.ResponseMappers[entity];\n this.container.rebind(mapperKey).to(mapper);\n return this;\n }\n\n addClassRequestMapper<Entity>(mapper: Newable<ResponseMapper<Entity>>, feature?: FeatureNames): this {\n if (feature) {\n const requestorKey = DEPENDENCIES.Requestors[feature];\n this.container.bind(DEPENDENCIES.requestMappers).to(mapper).whenAnyAncestorIs(requestorKey);\n } else {\n this.container.bind(DEPENDENCIES.requestMappers).to(mapper);\n }\n return this;\n }\n\n addRequestMapper(mapper: MapResponse, feature?: FeatureNames): this {\n const mapperClass = this.createRequestMapperClass(mapper);\n this.addClassRequestMapper(mapperClass, feature);\n return this;\n }\n\n replaceRequestMapper(mapper: MapRequest): this {\n const mapperClass = this.createRequestMapperClass(mapper);\n this.replaceClassRequestMapper(mapperClass);\n return this;\n }\n\n replaceClassRequestMapper(mapper: Newable<RequestMapper>): this {\n this.container.rebind(DEPENDENCIES.requestMappers).to(mapper);\n return this;\n }\n\n onResponseTransformed<RawResponseType = any, ResponseType = any>(hook: ResponseTransformed<RawResponseType, ResponseType>,\n feature?: FeatureNames): this {\n return this.addHook(hook, 'responseTransformed', feature);\n }\n\n onBeforeRequest(hook: BeforeRequest, feature?: FeatureNames): this {\n return this.addHook(hook, 'beforeRequest', feature);\n }\n\n onBeforeResponseTransformed<RawResponseType = any>(hook: BeforeResponseTransform<RawResponseType>, feature?: FeatureNames): this {\n return this.addHook(hook, 'beforeResponseTransformed', feature);\n }\n\n configureContainer(configurator: ConfiguratorCallback): this {\n this.configurator = configurator;\n return this;\n }\n\n setRequestParams(requestParams: Record<string, string>) {\n Object.assign(this.config.requestParams, requestParams);\n return this;\n }\n\n setLang(lang: string): this {\n this.config.requestParams.lang = lang;\n return this;\n }\n\n setScope(scope: string): this {\n this.config.requestParams.scope = scope;\n return this;\n }\n\n setInstance(instance: string): this {\n this.config.instance = instance;\n return this;\n }\n\n setUserInfo(user: UserInfo): this {\n Object.assign(this.config.requestParams, user);\n return this;\n }\n\n setEnvironment(environment: EmpathyAdapterConfig['env']): this {\n this.config.env = environment;\n return this;\n }\n\n setFeatureConfig<Feature extends FeatureNames>(featureName: Feature, featureConfig: DeepPartial<FeatureConfig<Feature>>): this {\n deepMerge(this.config.features[featureName], featureConfig);\n return this;\n }\n\n setResultTrackingConfig(resultTrackingConfig: DeepPartial<EmpathyAdapterConfig['mappings']['tracking']['result']>): this {\n deepMerge(this.config.mappings.tracking.result, resultTrackingConfig);\n return this;\n }\n\n setFacetConfig(config: DeepPartial<FacetConfig>, facetId?: string): this {\n if (facetId) {\n const namedFacetsConfig = this.config.mappings.facets.named;\n if (!namedFacetsConfig[facetId]) {\n // We will complete the partial facet config in the build method, so we can cast this safely here.\n namedFacetsConfig[facetId] = config as FacetConfig;\n } else {\n deepMerge(namedFacetsConfig[facetId], config);\n }\n } else {\n deepMerge(this.config.mappings.facets.default, config);\n }\n return this;\n }\n\n setQueryConfig(queryConfig: DeepPartial<EmpathyAdapterConfig['mappings']['query']>): this {\n deepMerge(this.config.mappings.query, queryConfig);\n return this;\n }\n\n withConfiguration(config: DeepPartial<EmpathyAdapterConfig>): this {\n deepMerge(this.config, config);\n return this;\n }\n\n build(): EmpathyAdapter {\n if (this.configurator) {\n this.configurator(this.container);\n }\n\n this.completePartialFacetsConfig();\n return this.container.resolve(this.adapterClass);\n }\n\n protected initContainerBindings() {\n new ContainerConfigParser(this.defaultBindingsConfig, this.container).parse();\n }\n\n protected createMapperClass(mapFn: MapResponse): Newable<ResponseMapper> {\n return injectable()\n (class MockedMapper implements ResponseMapper {\n map = mapFn;\n });\n }\n\n protected createRequestMapperClass(mapFn: MapRequest): Newable<RequestMapper> {\n return injectable()\n (class MockedMapper implements RequestMapper {\n map = mapFn;\n });\n }\n\n protected addHook(hook: Function, hookName: keyof typeof DEPENDENCIES.Hooks, feature?: FeatureNames) {\n if (feature) {\n this.container.bind(DEPENDENCIES.Hooks[hookName]).toFunction(hook).whenInjectedInto(DEPENDENCIES.Requestors[feature]);\n } else {\n this.container.bind(DEPENDENCIES.Hooks[hookName]).toFunction(hook);\n }\n return this;\n }\n\n protected completePartialFacetsConfig(): void {\n const config = this.container.get<EmpathyAdapterConfig>(DEPENDENCIES.config);\n const facetsConfig = config.mappings.facets;\n Object.entries(facetsConfig.named).forEach(([facetId, namedFacetConfig]) => {\n facetsConfig.named[facetId] = deepMerge({}, facetsConfig.default, namedFacetConfig);\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"empathy-adapter.builder.js","sourceRoot":"","sources":["../../../../src/empathy/builder/empathy-adapter.builder.ts"],"names":[],"mappings":";;;AACA,kEAAqF;AACrF,wDAAoD;AACpD,uCAAkD;AAOlD,gFAA6E;AAC7E,sEAA2D;AAC3D,gEAA4D;AAU5D,sDAAoD;AAEpD,oCAAmC;AAEnC,2EAAwE;AAmBxE;;;;GAIG;AACH;IAIE,+BACY,SAA2B,EAC3B,qBAAgC,EAChC,YAAsD;QAFtD,0BAAA,EAAA,gBAAgB,qBAAS,EAAE;QAC3B,sCAAA,EAAA,wBAAwB,6BAAQ;QAChC,6BAAA,EAAA,eAAwC,gCAAc;QAFtD,cAAS,GAAT,SAAS,CAAkB;QAC3B,0BAAqB,GAArB,qBAAqB,CAAW;QAChC,iBAAY,GAAZ,YAAY,CAA0C;QAEhE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,wIAAwI;QACxI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,8BAAY,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,2CAAW,GAAX,UAAY,EAKc;YALd,qBAKY,EAAE,KAAA,EAJxB,sBAEa,EAFb,cAAc,mBAAG,OAAO,YAAY,KAAK,WAAW;YAClD,CAAC,CAAC,IAAI,yCAAqB,CAAC,YAAY,CAAC;YACzC,CAAC,CAAC,SAAS,KAAA,EACb,oBAAkC,EAAlC,YAAY,mBAAG,2CAAmB,KAAA;QAElC,IAAI,cAAc,IAAI,YAAY,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAAY,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YACjF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAAY,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;SACjE;aAAM;YACL,eAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAAc,GAAd,UACE,MAAuC,EACvC,MAAmB,EACnB,OAAsB;QAEtB,IAAM,SAAS,GAAG,8BAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE;YACX,IAAM,YAAY,GAAG,8BAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;SAC3E;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yCAAS,GAAT,UAAU,MAAmB,EAAE,MAAmB,EAAE,OAAsB;QACxE,IAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6CAAa,GAAb,UAAc,MAAmB,EAAE,MAAmB;QACpD,IAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kDAAkB,GAAlB,UAA2B,MAAuC,EAAE,MAAmB;QACrF,IAAM,SAAS,GAAG,8BAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qDAAqB,GAArB,UACE,MAAuC,EACvC,OAAsB;QAEtB,IAAI,OAAO,EAAE;YACX,IAAM,YAAY,GAAG,8BAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAAY,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;SAC7F;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAAY,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;SAC7D;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gDAAgB,GAAhB,UAAiB,MAAmB,EAAE,OAAsB;QAC1D,IAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoB,GAApB,UAAqB,MAAkB;QACrC,IAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yDAAyB,GAAzB,UAA0B,MAA8B;QACtD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,8BAAY,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qDAAqB,GAArB,UACE,IAAwD,EACxD,OAAsB;QAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,+CAAe,GAAf,UAAgB,IAAmB,EAAE,OAAsB;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,2DAA2B,GAA3B,UACE,IAA8C,EAC9C,OAAsB;QAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,kDAAkB,GAAlB,UAAmB,YAAkC;QACnD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gDAAgB,GAAhB,UAAiB,aAAqC;QACpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAO,GAAP,UAAQ,IAAY;QAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wCAAQ,GAAR,UAAS,KAAa;QACpB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2CAAW,GAAX,UAAY,QAAgB;QAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2CAAW,GAAX,UAAY,IAAc;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAAc,GAAd,UAAe,WAAwC;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gDAAgB,GAAhB,UACE,WAAoB,EACpB,aAAkD;QAElD,wBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uDAAuB,GAAvB,UACE,oBAAyF;QAEzF,wBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAAc,GAAd,UAAe,MAAgC,EAAE,OAAgB;QAC/D,IAAI,OAAO,EAAE;YACX,IAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5D,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;gBAC/B,kGAAkG;gBAClG,iBAAiB,CAAC,OAAO,CAAC,GAAG,MAAqB,CAAC;aACpD;iBAAM;gBACL,wBAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;aAC/C;SACF;aAAM;YACL,wBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACxD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAAc,GAAd,UAAe,WAAmE;QAChF,wBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iDAAiB,GAAjB,UAAkB,MAAyC;QACzD,wBAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qCAAK,GAAL;QACE,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAES,qDAAqB,GAA/B;QACE,IAAI,+CAAqB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;IAChF,CAAC;IAES,iDAAiB,GAA3B,UAA4B,KAAkB;QAC5C,OAAO,sBAAU,EAAE;YACjB;gBACE,QAAG,GAAG,KAAK,CAAC;YACd,CAAC;YAAD,mBAAC;QAAD,CAAC,AAFD,IAGD,CAAC;IACJ,CAAC;IAES,wDAAwB,GAAlC,UAAmC,KAAiB;QAClD,OAAO,sBAAU,EAAE;YACjB;gBACE,QAAG,GAAG,KAAK,CAAC;YACd,CAAC;YAAD,mBAAC;QAAD,CAAC,AAFD,IAGD,CAAC;IACJ,CAAC;IAES,uCAAO,GAAjB,UACE,IAAc,EACd,QAAyC,EACzC,OAAsB;QAEtB,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,SAAS;iBACX,IAAI,CAAC,8BAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;iBAClC,UAAU,CAAC,IAAI,CAAC;iBAChB,gBAAgB,CAAC,8BAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;SACvD;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACpE;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAES,2DAA2B,GAArC;QACE,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAuB,8BAAY,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAC,EAA2B;gBAA1B,OAAO,QAAA,EAAE,gBAAgB,QAAA;YACpE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,wBAAS,CAAC,EAAE,EAAE,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC;IACH,4BAAC;AAAD,CAAC,AA7OD,IA6OC;AA7OY,sDAAqB","sourcesContent":["import { UserInfo } from '@empathyco/x-types';\nimport { BrowserStorageService, StorageService } from '@empathyco/x-storage-service';\nimport { deepMerge } from '@empathyco/x-deep-merge';\nimport { Container, injectable } from 'inversify';\nimport { DeepPartial, FeatureNames, Newable } from '../../types';\nimport {\n EmpathyAdapterConfig,\n FacetConfig,\n FeatureConfig\n} from '../config/empathy-adapter-config.types';\nimport { ContainerConfigParser } from '../container/container-config-parser';\nimport { BINDINGS } from '../container/container.bindings';\nimport { DEPENDENCIES } from '../container/container.const';\nimport {\n BeforeRequest,\n BeforeResponseTransform,\n MapRequest,\n MapResponse,\n RequestMapper,\n ResponseMapper,\n ResponseTransformed\n} from '../empathy-adapter.types';\nimport { EmpathyAdapter } from '../empathy.adapter';\nimport { EntityNames } from '../entities.types';\nimport { Logger } from '../logger';\nimport { CacheService } from '../services/cache-service.types';\nimport { EmpathyCacheService } from '../services/empathy-cache.service';\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @internal\n */\ntype ConfiguratorCallback = (container: Container) => void;\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @internal\n */\ninterface EnableCacheOptions {\n storageService?: StorageService;\n cacheService?: Newable<CacheService>;\n}\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @public\n */\nexport class EmpathyAdapterBuilder {\n protected configurator?: ConfiguratorCallback;\n protected config: EmpathyAdapterConfig;\n\n constructor(\n protected container = new Container(),\n protected defaultBindingsConfig = BINDINGS,\n protected adapterClass: Newable<EmpathyAdapter> = EmpathyAdapter\n ) {\n this.initContainerBindings();\n // There is only one config object. As it has been binded with inversify toConstant() method, we are just getting a reference to it here\n this.config = container.get(DEPENDENCIES.config);\n }\n\n enableCache({\n storageService = typeof localStorage !== 'undefined'\n ? new BrowserStorageService(localStorage)\n : undefined,\n cacheService = EmpathyCacheService\n }: EnableCacheOptions = {}): this {\n if (storageService && cacheService) {\n this.container.bind(DEPENDENCIES.storageService).toConstantValue(storageService);\n this.container.bind(DEPENDENCIES.cacheService).to(cacheService);\n } else {\n Logger.warn('Tried to enable cache with invalid options');\n }\n return this;\n }\n\n addClassMapper<Entity>(\n mapper: Newable<ResponseMapper<Entity>>,\n entity: EntityNames,\n feature?: FeatureNames\n ): this {\n const mapperKey = DEPENDENCIES.ResponseMappers[entity];\n if (feature) {\n const requestorKey = DEPENDENCIES.Requestors[feature];\n this.container.bind(mapperKey).to(mapper).whenAnyAncestorIs(requestorKey);\n } else {\n this.container.bind(mapperKey).to(mapper);\n }\n return this;\n }\n\n addMapper(mapper: MapResponse, entity: EntityNames, feature?: FeatureNames): this {\n const mapperClass = this.createMapperClass(mapper);\n this.addClassMapper(mapperClass, entity, feature);\n return this;\n }\n\n replaceMapper(mapper: MapResponse, entity: EntityNames): this {\n const mapperClass = this.createMapperClass(mapper);\n this.replaceClassMapper(mapperClass, entity);\n return this;\n }\n\n replaceClassMapper<Entity>(mapper: Newable<ResponseMapper<Entity>>, entity: EntityNames): this {\n const mapperKey = DEPENDENCIES.ResponseMappers[entity];\n this.container.rebind(mapperKey).to(mapper);\n return this;\n }\n\n addClassRequestMapper<Entity>(\n mapper: Newable<ResponseMapper<Entity>>,\n feature?: FeatureNames\n ): this {\n if (feature) {\n const requestorKey = DEPENDENCIES.Requestors[feature];\n this.container.bind(DEPENDENCIES.requestMappers).to(mapper).whenAnyAncestorIs(requestorKey);\n } else {\n this.container.bind(DEPENDENCIES.requestMappers).to(mapper);\n }\n return this;\n }\n\n addRequestMapper(mapper: MapResponse, feature?: FeatureNames): this {\n const mapperClass = this.createRequestMapperClass(mapper);\n this.addClassRequestMapper(mapperClass, feature);\n return this;\n }\n\n replaceRequestMapper(mapper: MapRequest): this {\n const mapperClass = this.createRequestMapperClass(mapper);\n this.replaceClassRequestMapper(mapperClass);\n return this;\n }\n\n replaceClassRequestMapper(mapper: Newable<RequestMapper>): this {\n this.container.rebind(DEPENDENCIES.requestMappers).to(mapper);\n return this;\n }\n\n onResponseTransformed<RawResponseType = any, ResponseType = any>(\n hook: ResponseTransformed<RawResponseType, ResponseType>,\n feature?: FeatureNames\n ): this {\n return this.addHook(hook, 'responseTransformed', feature);\n }\n\n onBeforeRequest(hook: BeforeRequest, feature?: FeatureNames): this {\n return this.addHook(hook, 'beforeRequest', feature);\n }\n\n onBeforeResponseTransformed<RawResponseType = any>(\n hook: BeforeResponseTransform<RawResponseType>,\n feature?: FeatureNames\n ): this {\n return this.addHook(hook, 'beforeResponseTransformed', feature);\n }\n\n configureContainer(configurator: ConfiguratorCallback): this {\n this.configurator = configurator;\n return this;\n }\n\n setRequestParams(requestParams: Record<string, string>) {\n Object.assign(this.config.requestParams, requestParams);\n return this;\n }\n\n setLang(lang: string): this {\n this.config.requestParams.lang = lang;\n return this;\n }\n\n setScope(scope: string): this {\n this.config.requestParams.scope = scope;\n return this;\n }\n\n setInstance(instance: string): this {\n this.config.instance = instance;\n return this;\n }\n\n setUserInfo(user: UserInfo): this {\n Object.assign(this.config.requestParams, user);\n return this;\n }\n\n setEnvironment(environment: EmpathyAdapterConfig['env']): this {\n this.config.env = environment;\n return this;\n }\n\n setFeatureConfig<Feature extends FeatureNames>(\n featureName: Feature,\n featureConfig: DeepPartial<FeatureConfig<Feature>>\n ): this {\n deepMerge(this.config.features[featureName], featureConfig);\n return this;\n }\n\n setResultTrackingConfig(\n resultTrackingConfig: DeepPartial<EmpathyAdapterConfig['mappings']['tracking']['result']>\n ): this {\n deepMerge(this.config.mappings.tracking.result, resultTrackingConfig);\n return this;\n }\n\n setFacetConfig(config: DeepPartial<FacetConfig>, facetId?: string): this {\n if (facetId) {\n const namedFacetsConfig = this.config.mappings.facets.named;\n if (!namedFacetsConfig[facetId]) {\n // We will complete the partial facet config in the build method, so we can cast this safely here.\n namedFacetsConfig[facetId] = config as FacetConfig;\n } else {\n deepMerge(namedFacetsConfig[facetId], config);\n }\n } else {\n deepMerge(this.config.mappings.facets.default, config);\n }\n return this;\n }\n\n setQueryConfig(queryConfig: DeepPartial<EmpathyAdapterConfig['mappings']['query']>): this {\n deepMerge(this.config.mappings.query, queryConfig);\n return this;\n }\n\n withConfiguration(config: DeepPartial<EmpathyAdapterConfig>): this {\n deepMerge(this.config, config);\n return this;\n }\n\n build(): EmpathyAdapter {\n if (this.configurator) {\n this.configurator(this.container);\n }\n\n this.completePartialFacetsConfig();\n return this.container.resolve(this.adapterClass);\n }\n\n protected initContainerBindings() {\n new ContainerConfigParser(this.defaultBindingsConfig, this.container).parse();\n }\n\n protected createMapperClass(mapFn: MapResponse): Newable<ResponseMapper> {\n return injectable()(\n class MockedMapper implements ResponseMapper {\n map = mapFn;\n }\n );\n }\n\n protected createRequestMapperClass(mapFn: MapRequest): Newable<RequestMapper> {\n return injectable()(\n class MockedMapper implements RequestMapper {\n map = mapFn;\n }\n );\n }\n\n protected addHook(\n hook: Function,\n hookName: keyof typeof DEPENDENCIES.Hooks,\n feature?: FeatureNames\n ) {\n if (feature) {\n this.container\n .bind(DEPENDENCIES.Hooks[hookName])\n .toFunction(hook)\n .whenInjectedInto(DEPENDENCIES.Requestors[feature]);\n } else {\n this.container.bind(DEPENDENCIES.Hooks[hookName]).toFunction(hook);\n }\n return this;\n }\n\n protected completePartialFacetsConfig(): void {\n const config = this.container.get<EmpathyAdapterConfig>(DEPENDENCIES.config);\n const facetsConfig = config.mappings.facets;\n Object.entries(facetsConfig.named).forEach(([facetId, namedFacetConfig]) => {\n facetsConfig.named[facetId] = deepMerge({}, facetsConfig.default, namedFacetConfig);\n });\n }\n}\n"]}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EmpathyCacheService = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var x_storage_service_1 = require("@empathyco/x-storage-service");
|
|
6
5
|
var inversify_1 = require("inversify");
|
|
7
6
|
var container_const_1 = require("../container/container.const");
|
|
8
7
|
/**
|
|
@@ -34,7 +33,7 @@ var EmpathyCacheService = /** @class */ (function () {
|
|
|
34
33
|
var h = 0;
|
|
35
34
|
for (var i = 0; i < key.length; i++) {
|
|
36
35
|
// tslint:disable-next-line:no-bitwise
|
|
37
|
-
h = Math.imul(31, h) + key.charCodeAt(i) | 0;
|
|
36
|
+
h = (Math.imul(31, h) + key.charCodeAt(i)) | 0;
|
|
38
37
|
}
|
|
39
38
|
return h.toString();
|
|
40
39
|
};
|
|
@@ -44,7 +43,7 @@ var EmpathyCacheService = /** @class */ (function () {
|
|
|
44
43
|
EmpathyCacheService = tslib_1.__decorate([
|
|
45
44
|
inversify_1.injectable(),
|
|
46
45
|
tslib_1.__param(0, inversify_1.inject(container_const_1.DEPENDENCIES.storageService)),
|
|
47
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
46
|
+
tslib_1.__metadata("design:paramtypes", [Object])
|
|
48
47
|
], EmpathyCacheService);
|
|
49
48
|
return EmpathyCacheService;
|
|
50
49
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empathy-cache.service.js","sourceRoot":"","sources":["../../../../src/empathy/services/empathy-cache.service.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"empathy-cache.service.js","sourceRoot":"","sources":["../../../../src/empathy/services/empathy-cache.service.ts"],"names":[],"mappings":";;;;AACA,uCAA+C;AAC/C,gEAA4D;AAG5D;;;;GAIG;AAEH;IACE,6BAC0D,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IACrF,CAAC;IAEJ,qCAAO,GAAP,UAAQ,GAAW,EAAE,IAAS,EAAE,YAAoB;QAClD,IAAI,CAAC,cAAc,CAAC,OAAO,CACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EACtB,IAAI,EACJ,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CACzC,CAAC;IACJ,CAAC;IAED,qCAAO,GAAP,UAAiB,GAAW;QAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,wCAAU,GAAV,UAAoB,GAAW;QAC7B,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,mCAAK,GAAL;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAES,0CAAY,GAAtB,UAAuB,GAAW;QAChC,OAAO,WAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAG,CAAC;IACnC,CAAC;IAES,kCAAI,GAAd,UAAe,GAAW;QACxB,yFAAyF;QACzF,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,sCAAsC;YACtC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAChD;QACD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;IAES,mDAAqB,GAA/B,UAAgC,OAAe;QAC7C,OAAO,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7B,CAAC;IAzCU,mBAAmB;QAD/B,sBAAU,EAAE;QAGR,mBAAA,kBAAM,CAAC,8BAAY,CAAC,cAAc,CAAC,CAAA;;OAF3B,mBAAmB,CA0C/B;IAAD,0BAAC;CAAA,AA1CD,IA0CC;AA1CY,kDAAmB","sourcesContent":["import { StorageService } from '@empathyco/x-storage-service';\nimport { inject, injectable } from 'inversify';\nimport { DEPENDENCIES } from '../container/container.const';\nimport { CacheService } from './cache-service.types';\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @public\n */\n@injectable()\nexport class EmpathyCacheService implements CacheService {\n constructor(\n @inject(DEPENDENCIES.storageService) protected readonly storageService: StorageService\n ) {}\n\n setItem(key: string, item: any, ttlInMinutes: number): void {\n this.storageService.setItem(\n this.transformKey(key),\n item,\n this.minutesToMilliseconds(ttlInMinutes)\n );\n }\n\n getItem<T = any>(key: string): T | null {\n return this.storageService.getItem<T>(this.transformKey(key));\n }\n\n removeItem<T = any>(key: string): T | null {\n return this.storageService.removeItem<T>(this.transformKey(key));\n }\n\n clear(): number {\n return this.storageService.clear();\n }\n\n protected transformKey(key: string) {\n return `cache-${this.hash(key)}`;\n }\n\n protected hash(key: string): string {\n // https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0#gistcomment-2775538\n let h = 0;\n for (let i = 0; i < key.length; i++) {\n // tslint:disable-next-line:no-bitwise\n h = (Math.imul(31, h) + key.charCodeAt(i)) | 0;\n }\n return h.toString();\n }\n\n protected minutesToMilliseconds(minutes: number) {\n return minutes * 60 * 1000;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BrowserStorageService } from '@empathyco/x-storage-service';
|
|
2
2
|
import { deepMerge } from '@empathyco/x-deep-merge';
|
|
3
3
|
import { Container, injectable } from 'inversify';
|
|
4
4
|
import { ContainerConfigParser } from '../container/container-config-parser';
|
|
@@ -25,7 +25,9 @@ var EmpathyAdapterBuilder = /** @class */ (function () {
|
|
|
25
25
|
this.config = container.get(DEPENDENCIES.config);
|
|
26
26
|
}
|
|
27
27
|
EmpathyAdapterBuilder.prototype.enableCache = function (_a) {
|
|
28
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.storageService, storageService = _c === void 0 ? typeof localStorage !== 'undefined'
|
|
28
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.storageService, storageService = _c === void 0 ? typeof localStorage !== 'undefined'
|
|
29
|
+
? new BrowserStorageService(localStorage)
|
|
30
|
+
: undefined : _c, _d = _b.cacheService, cacheService = _d === void 0 ? EmpathyCacheService : _d;
|
|
29
31
|
if (storageService && cacheService) {
|
|
30
32
|
this.container.bind(DEPENDENCIES.storageService).toConstantValue(storageService);
|
|
31
33
|
this.container.bind(DEPENDENCIES.cacheService).to(cacheService);
|
|
@@ -182,7 +184,10 @@ var EmpathyAdapterBuilder = /** @class */ (function () {
|
|
|
182
184
|
};
|
|
183
185
|
EmpathyAdapterBuilder.prototype.addHook = function (hook, hookName, feature) {
|
|
184
186
|
if (feature) {
|
|
185
|
-
this.container
|
|
187
|
+
this.container
|
|
188
|
+
.bind(DEPENDENCIES.Hooks[hookName])
|
|
189
|
+
.toFunction(hook)
|
|
190
|
+
.whenInjectedInto(DEPENDENCIES.Requestors[feature]);
|
|
186
191
|
}
|
|
187
192
|
else {
|
|
188
193
|
this.container.bind(DEPENDENCIES.Hooks[hookName]).toFunction(hook);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empathy-adapter.builder.js","sourceRoot":"","sources":["../../../../src/empathy/builder/empathy-adapter.builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { UserInfo } from '@empathyco/x-types';\nimport { StorageService } from '@empathyco/x-storage-service';\nimport { deepMerge } from '@empathyco/x-deep-merge';\nimport { Container, injectable } from 'inversify';\nimport { DeepPartial, FeatureNames, Newable } from '../../types';\nimport { EmpathyAdapterConfig, FacetConfig, FeatureConfig } from '../config/empathy-adapter-config.types';\nimport { ContainerConfigParser } from '../container/container-config-parser';\nimport { BINDINGS } from '../container/container.bindings';\nimport { DEPENDENCIES } from '../container/container.const';\nimport {\n BeforeRequest,\n BeforeResponseTransform,\n MapRequest,\n MapResponse,\n RequestMapper,\n ResponseMapper,\n ResponseTransformed\n} from '../empathy-adapter.types';\nimport { EmpathyAdapter } from '../empathy.adapter';\nimport { EntityNames } from '../entities.types';\nimport { Logger } from '../logger';\nimport { CacheService } from '../services/cache-service.types';\nimport { EmpathyCacheService } from '../services/empathy-cache.service';\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @internal\n */\ntype ConfiguratorCallback = (container: Container) => void;\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @internal\n */\ninterface EnableCacheOptions {\n storageService?: StorageService;\n cacheService?: Newable<CacheService>;\n}\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @public\n */\nexport class EmpathyAdapterBuilder {\n protected configurator?: ConfiguratorCallback;\n protected config: EmpathyAdapterConfig;\n\n constructor(\n protected container = new Container(),\n protected defaultBindingsConfig = BINDINGS,\n protected adapterClass: Newable<EmpathyAdapter> = EmpathyAdapter\n ) {\n this.initContainerBindings();\n // There is only one config object. As it has been binded with inversify toConstant() method, we are just getting a reference to it here\n this.config = container.get(DEPENDENCIES.config);\n }\n\n enableCache({\n storageService = typeof localStorage !== 'undefined' ? new StorageService(localStorage) : undefined,\n cacheService = EmpathyCacheService\n }: EnableCacheOptions = {}): this {\n if (storageService && cacheService) {\n this.container.bind(DEPENDENCIES.storageService).toConstantValue(storageService);\n this.container.bind(DEPENDENCIES.cacheService).to(cacheService);\n } else {\n Logger.warn('Tried to enable cache with invalid options');\n }\n return this;\n }\n\n addClassMapper<Entity>(mapper: Newable<ResponseMapper<Entity>>, entity: EntityNames, feature?: FeatureNames): this {\n const mapperKey = DEPENDENCIES.ResponseMappers[entity];\n if (feature) {\n const requestorKey = DEPENDENCIES.Requestors[feature];\n this.container.bind(mapperKey).to(mapper).whenAnyAncestorIs(requestorKey);\n } else {\n this.container.bind(mapperKey).to(mapper);\n }\n return this;\n }\n\n addMapper(mapper: MapResponse, entity: EntityNames, feature?: FeatureNames): this {\n const mapperClass = this.createMapperClass(mapper);\n this.addClassMapper(mapperClass, entity, feature);\n return this;\n }\n\n replaceMapper(mapper: MapResponse, entity: EntityNames): this {\n const mapperClass = this.createMapperClass(mapper);\n this.replaceClassMapper(mapperClass, entity);\n return this;\n }\n\n replaceClassMapper<Entity>(mapper: Newable<ResponseMapper<Entity>>, entity: EntityNames): this {\n const mapperKey = DEPENDENCIES.ResponseMappers[entity];\n this.container.rebind(mapperKey).to(mapper);\n return this;\n }\n\n addClassRequestMapper<Entity>(mapper: Newable<ResponseMapper<Entity>>, feature?: FeatureNames): this {\n if (feature) {\n const requestorKey = DEPENDENCIES.Requestors[feature];\n this.container.bind(DEPENDENCIES.requestMappers).to(mapper).whenAnyAncestorIs(requestorKey);\n } else {\n this.container.bind(DEPENDENCIES.requestMappers).to(mapper);\n }\n return this;\n }\n\n addRequestMapper(mapper: MapResponse, feature?: FeatureNames): this {\n const mapperClass = this.createRequestMapperClass(mapper);\n this.addClassRequestMapper(mapperClass, feature);\n return this;\n }\n\n replaceRequestMapper(mapper: MapRequest): this {\n const mapperClass = this.createRequestMapperClass(mapper);\n this.replaceClassRequestMapper(mapperClass);\n return this;\n }\n\n replaceClassRequestMapper(mapper: Newable<RequestMapper>): this {\n this.container.rebind(DEPENDENCIES.requestMappers).to(mapper);\n return this;\n }\n\n onResponseTransformed<RawResponseType = any, ResponseType = any>(hook: ResponseTransformed<RawResponseType, ResponseType>,\n feature?: FeatureNames): this {\n return this.addHook(hook, 'responseTransformed', feature);\n }\n\n onBeforeRequest(hook: BeforeRequest, feature?: FeatureNames): this {\n return this.addHook(hook, 'beforeRequest', feature);\n }\n\n onBeforeResponseTransformed<RawResponseType = any>(hook: BeforeResponseTransform<RawResponseType>, feature?: FeatureNames): this {\n return this.addHook(hook, 'beforeResponseTransformed', feature);\n }\n\n configureContainer(configurator: ConfiguratorCallback): this {\n this.configurator = configurator;\n return this;\n }\n\n setRequestParams(requestParams: Record<string, string>) {\n Object.assign(this.config.requestParams, requestParams);\n return this;\n }\n\n setLang(lang: string): this {\n this.config.requestParams.lang = lang;\n return this;\n }\n\n setScope(scope: string): this {\n this.config.requestParams.scope = scope;\n return this;\n }\n\n setInstance(instance: string): this {\n this.config.instance = instance;\n return this;\n }\n\n setUserInfo(user: UserInfo): this {\n Object.assign(this.config.requestParams, user);\n return this;\n }\n\n setEnvironment(environment: EmpathyAdapterConfig['env']): this {\n this.config.env = environment;\n return this;\n }\n\n setFeatureConfig<Feature extends FeatureNames>(featureName: Feature, featureConfig: DeepPartial<FeatureConfig<Feature>>): this {\n deepMerge(this.config.features[featureName], featureConfig);\n return this;\n }\n\n setResultTrackingConfig(resultTrackingConfig: DeepPartial<EmpathyAdapterConfig['mappings']['tracking']['result']>): this {\n deepMerge(this.config.mappings.tracking.result, resultTrackingConfig);\n return this;\n }\n\n setFacetConfig(config: DeepPartial<FacetConfig>, facetId?: string): this {\n if (facetId) {\n const namedFacetsConfig = this.config.mappings.facets.named;\n if (!namedFacetsConfig[facetId]) {\n // We will complete the partial facet config in the build method, so we can cast this safely here.\n namedFacetsConfig[facetId] = config as FacetConfig;\n } else {\n deepMerge(namedFacetsConfig[facetId], config);\n }\n } else {\n deepMerge(this.config.mappings.facets.default, config);\n }\n return this;\n }\n\n setQueryConfig(queryConfig: DeepPartial<EmpathyAdapterConfig['mappings']['query']>): this {\n deepMerge(this.config.mappings.query, queryConfig);\n return this;\n }\n\n withConfiguration(config: DeepPartial<EmpathyAdapterConfig>): this {\n deepMerge(this.config, config);\n return this;\n }\n\n build(): EmpathyAdapter {\n if (this.configurator) {\n this.configurator(this.container);\n }\n\n this.completePartialFacetsConfig();\n return this.container.resolve(this.adapterClass);\n }\n\n protected initContainerBindings() {\n new ContainerConfigParser(this.defaultBindingsConfig, this.container).parse();\n }\n\n protected createMapperClass(mapFn: MapResponse): Newable<ResponseMapper> {\n return injectable()\n (class MockedMapper implements ResponseMapper {\n map = mapFn;\n });\n }\n\n protected createRequestMapperClass(mapFn: MapRequest): Newable<RequestMapper> {\n return injectable()\n (class MockedMapper implements RequestMapper {\n map = mapFn;\n });\n }\n\n protected addHook(hook: Function, hookName: keyof typeof DEPENDENCIES.Hooks, feature?: FeatureNames) {\n if (feature) {\n this.container.bind(DEPENDENCIES.Hooks[hookName]).toFunction(hook).whenInjectedInto(DEPENDENCIES.Requestors[feature]);\n } else {\n this.container.bind(DEPENDENCIES.Hooks[hookName]).toFunction(hook);\n }\n return this;\n }\n\n protected completePartialFacetsConfig(): void {\n const config = this.container.get<EmpathyAdapterConfig>(DEPENDENCIES.config);\n const facetsConfig = config.mappings.facets;\n Object.entries(facetsConfig.named).forEach(([facetId, namedFacetConfig]) => {\n facetsConfig.named[facetId] = deepMerge({}, facetsConfig.default, namedFacetConfig);\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"empathy-adapter.builder.js","sourceRoot":"","sources":["../../../../src/empathy/builder/empathy-adapter.builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { UserInfo } from '@empathyco/x-types';\nimport { BrowserStorageService, StorageService } from '@empathyco/x-storage-service';\nimport { deepMerge } from '@empathyco/x-deep-merge';\nimport { Container, injectable } from 'inversify';\nimport { DeepPartial, FeatureNames, Newable } from '../../types';\nimport {\n EmpathyAdapterConfig,\n FacetConfig,\n FeatureConfig\n} from '../config/empathy-adapter-config.types';\nimport { ContainerConfigParser } from '../container/container-config-parser';\nimport { BINDINGS } from '../container/container.bindings';\nimport { DEPENDENCIES } from '../container/container.const';\nimport {\n BeforeRequest,\n BeforeResponseTransform,\n MapRequest,\n MapResponse,\n RequestMapper,\n ResponseMapper,\n ResponseTransformed\n} from '../empathy-adapter.types';\nimport { EmpathyAdapter } from '../empathy.adapter';\nimport { EntityNames } from '../entities.types';\nimport { Logger } from '../logger';\nimport { CacheService } from '../services/cache-service.types';\nimport { EmpathyCacheService } from '../services/empathy-cache.service';\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @internal\n */\ntype ConfiguratorCallback = (container: Container) => void;\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @internal\n */\ninterface EnableCacheOptions {\n storageService?: StorageService;\n cacheService?: Newable<CacheService>;\n}\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @public\n */\nexport class EmpathyAdapterBuilder {\n protected configurator?: ConfiguratorCallback;\n protected config: EmpathyAdapterConfig;\n\n constructor(\n protected container = new Container(),\n protected defaultBindingsConfig = BINDINGS,\n protected adapterClass: Newable<EmpathyAdapter> = EmpathyAdapter\n ) {\n this.initContainerBindings();\n // There is only one config object. As it has been binded with inversify toConstant() method, we are just getting a reference to it here\n this.config = container.get(DEPENDENCIES.config);\n }\n\n enableCache({\n storageService = typeof localStorage !== 'undefined'\n ? new BrowserStorageService(localStorage)\n : undefined,\n cacheService = EmpathyCacheService\n }: EnableCacheOptions = {}): this {\n if (storageService && cacheService) {\n this.container.bind(DEPENDENCIES.storageService).toConstantValue(storageService);\n this.container.bind(DEPENDENCIES.cacheService).to(cacheService);\n } else {\n Logger.warn('Tried to enable cache with invalid options');\n }\n return this;\n }\n\n addClassMapper<Entity>(\n mapper: Newable<ResponseMapper<Entity>>,\n entity: EntityNames,\n feature?: FeatureNames\n ): this {\n const mapperKey = DEPENDENCIES.ResponseMappers[entity];\n if (feature) {\n const requestorKey = DEPENDENCIES.Requestors[feature];\n this.container.bind(mapperKey).to(mapper).whenAnyAncestorIs(requestorKey);\n } else {\n this.container.bind(mapperKey).to(mapper);\n }\n return this;\n }\n\n addMapper(mapper: MapResponse, entity: EntityNames, feature?: FeatureNames): this {\n const mapperClass = this.createMapperClass(mapper);\n this.addClassMapper(mapperClass, entity, feature);\n return this;\n }\n\n replaceMapper(mapper: MapResponse, entity: EntityNames): this {\n const mapperClass = this.createMapperClass(mapper);\n this.replaceClassMapper(mapperClass, entity);\n return this;\n }\n\n replaceClassMapper<Entity>(mapper: Newable<ResponseMapper<Entity>>, entity: EntityNames): this {\n const mapperKey = DEPENDENCIES.ResponseMappers[entity];\n this.container.rebind(mapperKey).to(mapper);\n return this;\n }\n\n addClassRequestMapper<Entity>(\n mapper: Newable<ResponseMapper<Entity>>,\n feature?: FeatureNames\n ): this {\n if (feature) {\n const requestorKey = DEPENDENCIES.Requestors[feature];\n this.container.bind(DEPENDENCIES.requestMappers).to(mapper).whenAnyAncestorIs(requestorKey);\n } else {\n this.container.bind(DEPENDENCIES.requestMappers).to(mapper);\n }\n return this;\n }\n\n addRequestMapper(mapper: MapResponse, feature?: FeatureNames): this {\n const mapperClass = this.createRequestMapperClass(mapper);\n this.addClassRequestMapper(mapperClass, feature);\n return this;\n }\n\n replaceRequestMapper(mapper: MapRequest): this {\n const mapperClass = this.createRequestMapperClass(mapper);\n this.replaceClassRequestMapper(mapperClass);\n return this;\n }\n\n replaceClassRequestMapper(mapper: Newable<RequestMapper>): this {\n this.container.rebind(DEPENDENCIES.requestMappers).to(mapper);\n return this;\n }\n\n onResponseTransformed<RawResponseType = any, ResponseType = any>(\n hook: ResponseTransformed<RawResponseType, ResponseType>,\n feature?: FeatureNames\n ): this {\n return this.addHook(hook, 'responseTransformed', feature);\n }\n\n onBeforeRequest(hook: BeforeRequest, feature?: FeatureNames): this {\n return this.addHook(hook, 'beforeRequest', feature);\n }\n\n onBeforeResponseTransformed<RawResponseType = any>(\n hook: BeforeResponseTransform<RawResponseType>,\n feature?: FeatureNames\n ): this {\n return this.addHook(hook, 'beforeResponseTransformed', feature);\n }\n\n configureContainer(configurator: ConfiguratorCallback): this {\n this.configurator = configurator;\n return this;\n }\n\n setRequestParams(requestParams: Record<string, string>) {\n Object.assign(this.config.requestParams, requestParams);\n return this;\n }\n\n setLang(lang: string): this {\n this.config.requestParams.lang = lang;\n return this;\n }\n\n setScope(scope: string): this {\n this.config.requestParams.scope = scope;\n return this;\n }\n\n setInstance(instance: string): this {\n this.config.instance = instance;\n return this;\n }\n\n setUserInfo(user: UserInfo): this {\n Object.assign(this.config.requestParams, user);\n return this;\n }\n\n setEnvironment(environment: EmpathyAdapterConfig['env']): this {\n this.config.env = environment;\n return this;\n }\n\n setFeatureConfig<Feature extends FeatureNames>(\n featureName: Feature,\n featureConfig: DeepPartial<FeatureConfig<Feature>>\n ): this {\n deepMerge(this.config.features[featureName], featureConfig);\n return this;\n }\n\n setResultTrackingConfig(\n resultTrackingConfig: DeepPartial<EmpathyAdapterConfig['mappings']['tracking']['result']>\n ): this {\n deepMerge(this.config.mappings.tracking.result, resultTrackingConfig);\n return this;\n }\n\n setFacetConfig(config: DeepPartial<FacetConfig>, facetId?: string): this {\n if (facetId) {\n const namedFacetsConfig = this.config.mappings.facets.named;\n if (!namedFacetsConfig[facetId]) {\n // We will complete the partial facet config in the build method, so we can cast this safely here.\n namedFacetsConfig[facetId] = config as FacetConfig;\n } else {\n deepMerge(namedFacetsConfig[facetId], config);\n }\n } else {\n deepMerge(this.config.mappings.facets.default, config);\n }\n return this;\n }\n\n setQueryConfig(queryConfig: DeepPartial<EmpathyAdapterConfig['mappings']['query']>): this {\n deepMerge(this.config.mappings.query, queryConfig);\n return this;\n }\n\n withConfiguration(config: DeepPartial<EmpathyAdapterConfig>): this {\n deepMerge(this.config, config);\n return this;\n }\n\n build(): EmpathyAdapter {\n if (this.configurator) {\n this.configurator(this.container);\n }\n\n this.completePartialFacetsConfig();\n return this.container.resolve(this.adapterClass);\n }\n\n protected initContainerBindings() {\n new ContainerConfigParser(this.defaultBindingsConfig, this.container).parse();\n }\n\n protected createMapperClass(mapFn: MapResponse): Newable<ResponseMapper> {\n return injectable()(\n class MockedMapper implements ResponseMapper {\n map = mapFn;\n }\n );\n }\n\n protected createRequestMapperClass(mapFn: MapRequest): Newable<RequestMapper> {\n return injectable()(\n class MockedMapper implements RequestMapper {\n map = mapFn;\n }\n );\n }\n\n protected addHook(\n hook: Function,\n hookName: keyof typeof DEPENDENCIES.Hooks,\n feature?: FeatureNames\n ) {\n if (feature) {\n this.container\n .bind(DEPENDENCIES.Hooks[hookName])\n .toFunction(hook)\n .whenInjectedInto(DEPENDENCIES.Requestors[feature]);\n } else {\n this.container.bind(DEPENDENCIES.Hooks[hookName]).toFunction(hook);\n }\n return this;\n }\n\n protected completePartialFacetsConfig(): void {\n const config = this.container.get<EmpathyAdapterConfig>(DEPENDENCIES.config);\n const facetsConfig = config.mappings.facets;\n Object.entries(facetsConfig.named).forEach(([facetId, namedFacetConfig]) => {\n facetsConfig.named[facetId] = deepMerge({}, facetsConfig.default, namedFacetConfig);\n });\n }\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
-
import { StorageService } from '@empathyco/x-storage-service';
|
|
3
2
|
import { inject, injectable } from 'inversify';
|
|
4
3
|
import { DEPENDENCIES } from '../container/container.const';
|
|
5
4
|
/**
|
|
@@ -31,7 +30,7 @@ var EmpathyCacheService = /** @class */ (function () {
|
|
|
31
30
|
var h = 0;
|
|
32
31
|
for (var i = 0; i < key.length; i++) {
|
|
33
32
|
// tslint:disable-next-line:no-bitwise
|
|
34
|
-
h = Math.imul(31, h) + key.charCodeAt(i) | 0;
|
|
33
|
+
h = (Math.imul(31, h) + key.charCodeAt(i)) | 0;
|
|
35
34
|
}
|
|
36
35
|
return h.toString();
|
|
37
36
|
};
|
|
@@ -41,7 +40,7 @@ var EmpathyCacheService = /** @class */ (function () {
|
|
|
41
40
|
EmpathyCacheService = __decorate([
|
|
42
41
|
injectable(),
|
|
43
42
|
__param(0, inject(DEPENDENCIES.storageService)),
|
|
44
|
-
__metadata("design:paramtypes", [
|
|
43
|
+
__metadata("design:paramtypes", [Object])
|
|
45
44
|
], EmpathyCacheService);
|
|
46
45
|
return EmpathyCacheService;
|
|
47
46
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empathy-cache.service.js","sourceRoot":"","sources":["../../../../src/empathy/services/empathy-cache.service.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"empathy-cache.service.js","sourceRoot":"","sources":["../../../../src/empathy/services/empathy-cache.service.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D;;;;GAIG;AAEH;IACE,6BAC0D,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IACrF,CAAC;IAEJ,qCAAO,GAAP,UAAQ,GAAW,EAAE,IAAS,EAAE,YAAoB;QAClD,IAAI,CAAC,cAAc,CAAC,OAAO,CACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EACtB,IAAI,EACJ,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CACzC,CAAC;IACJ,CAAC;IAED,qCAAO,GAAP,UAAiB,GAAW;QAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,wCAAU,GAAV,UAAoB,GAAW;QAC7B,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,mCAAK,GAAL;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAES,0CAAY,GAAtB,UAAuB,GAAW;QAChC,OAAO,WAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAG,CAAC;IACnC,CAAC;IAES,kCAAI,GAAd,UAAe,GAAW;QACxB,yFAAyF;QACzF,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,sCAAsC;YACtC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAChD;QACD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;IAES,mDAAqB,GAA/B,UAAgC,OAAe;QAC7C,OAAO,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7B,CAAC;IAzCU,mBAAmB;QAD/B,UAAU,EAAE;QAGR,WAAA,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;;OAF3B,mBAAmB,CA0C/B;IAAD,0BAAC;CAAA,AA1CD,IA0CC;SA1CY,mBAAmB","sourcesContent":["import { StorageService } from '@empathyco/x-storage-service';\nimport { inject, injectable } from 'inversify';\nimport { DEPENDENCIES } from '../container/container.const';\nimport { CacheService } from './cache-service.types';\n\n/**\n * TODO https://searchbroker.atlassian.net/browse/EX-2163\n *\n * @public\n */\n@injectable()\nexport class EmpathyCacheService implements CacheService {\n constructor(\n @inject(DEPENDENCIES.storageService) protected readonly storageService: StorageService\n ) {}\n\n setItem(key: string, item: any, ttlInMinutes: number): void {\n this.storageService.setItem(\n this.transformKey(key),\n item,\n this.minutesToMilliseconds(ttlInMinutes)\n );\n }\n\n getItem<T = any>(key: string): T | null {\n return this.storageService.getItem<T>(this.transformKey(key));\n }\n\n removeItem<T = any>(key: string): T | null {\n return this.storageService.removeItem<T>(this.transformKey(key));\n }\n\n clear(): number {\n return this.storageService.clear();\n }\n\n protected transformKey(key: string) {\n return `cache-${this.hash(key)}`;\n }\n\n protected hash(key: string): string {\n // https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0#gistcomment-2775538\n let h = 0;\n for (let i = 0; i < key.length; i++) {\n // tslint:disable-next-line:no-bitwise\n h = (Math.imul(31, h) + key.charCodeAt(i)) | 0;\n }\n return h.toString();\n }\n\n protected minutesToMilliseconds(minutes: number) {\n return minutes * 60 * 1000;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empathyco/x-adapter",
|
|
3
|
-
"version": "7.0.0-alpha.
|
|
3
|
+
"version": "7.0.0-alpha.7",
|
|
4
4
|
"description": "A search client for the Empathy search API ",
|
|
5
5
|
"author": "Empathy Systems Corporation S.L.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -40,27 +40,27 @@
|
|
|
40
40
|
"test:coverage": "jest --coverage"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@empathyco/x-deep-merge": "^1.3.0-alpha.
|
|
44
|
-
"@empathyco/x-get-safe-property-chain": "^1.3.0-alpha.
|
|
43
|
+
"@empathyco/x-deep-merge": "^1.3.0-alpha.1",
|
|
44
|
+
"@empathyco/x-get-safe-property-chain": "^1.3.0-alpha.1",
|
|
45
45
|
"@empathyco/x-logger": "^1.1.0",
|
|
46
|
-
"@empathyco/x-storage-service": "^
|
|
47
|
-
"@empathyco/x-types": "^10.0.0-alpha.
|
|
46
|
+
"@empathyco/x-storage-service": "^2.0.0-alpha.0",
|
|
47
|
+
"@empathyco/x-types": "^10.0.0-alpha.12",
|
|
48
48
|
"inversify": "~5.0.1",
|
|
49
49
|
"reflect-metadata": "~0.1.13",
|
|
50
50
|
"tslib": "~2.3.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@empathyco/x-jest-utils": "^1.4.0-alpha.
|
|
53
|
+
"@empathyco/x-jest-utils": "^1.4.0-alpha.1",
|
|
54
54
|
"@microsoft/api-documenter": "~7.13.33",
|
|
55
55
|
"@microsoft/api-extractor": "~7.18.4",
|
|
56
|
-
"@types/jest": "~
|
|
56
|
+
"@types/jest": "~27.0.3",
|
|
57
57
|
"@types/node": "~12.7.5",
|
|
58
|
-
"jest": "~
|
|
59
|
-
"ts-jest": "~
|
|
58
|
+
"jest": "~27.3.1",
|
|
59
|
+
"ts-jest": "~27.0.7",
|
|
60
60
|
"typescript": "~4.3.5"
|
|
61
61
|
},
|
|
62
62
|
"publishConfig": {
|
|
63
63
|
"access": "public"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "7de21ba09dc79c4cd968dab38a0e934439a47490"
|
|
66
66
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"metadata": {
|
|
3
3
|
"toolPackage": "@microsoft/api-extractor",
|
|
4
|
-
"toolVersion": "7.18.
|
|
4
|
+
"toolVersion": "7.18.19",
|
|
5
5
|
"schemaVersion": 1004,
|
|
6
6
|
"oldestForwardsCompatibleVersion": 1001,
|
|
7
7
|
"tsdocConfig": {
|
|
@@ -6033,7 +6033,7 @@
|
|
|
6033
6033
|
{
|
|
6034
6034
|
"kind": "Reference",
|
|
6035
6035
|
"text": "StorageService",
|
|
6036
|
-
"canonicalReference": "@empathyco/x-storage-service!StorageService:
|
|
6036
|
+
"canonicalReference": "@empathyco/x-storage-service!StorageService:interface"
|
|
6037
6037
|
},
|
|
6038
6038
|
{
|
|
6039
6039
|
"kind": "Content",
|
|
@@ -6390,7 +6390,7 @@
|
|
|
6390
6390
|
{
|
|
6391
6391
|
"kind": "Reference",
|
|
6392
6392
|
"text": "StorageService",
|
|
6393
|
-
"canonicalReference": "@empathyco/x-storage-service!StorageService:
|
|
6393
|
+
"canonicalReference": "@empathyco/x-storage-service!StorageService:interface"
|
|
6394
6394
|
},
|
|
6395
6395
|
{
|
|
6396
6396
|
"kind": "Content",
|