@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.
@@ -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' ? new x_storage_service_1.StorageService(localStorage) : undefined : _c, _d = _b.cacheService, cacheService = _d === void 0 ? empathy_cache_service_1.EmpathyCacheService : _d;
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.bind(container_const_1.DEPENDENCIES.Hooks[hookName]).toFunction(hook).whenInjectedInto(container_const_1.DEPENDENCIES.Requestors[feature]);
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":"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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"]}
@@ -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", [x_storage_service_1.StorageService])
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":";;;;AAAA,kEAA8D;AAC9D,uCAA+C;AAC/C,gEAA4D;AAG5D;;;;GAIG;AAEH;IAEE,6BAC0D,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IACrF,CAAC;IAEJ,qCAAO,GAAP,UAAQ,GAAW,EAAE,IAAS,EAAE,YAAoB;QAClD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;IACtG,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,WAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,CAAC;IACrC,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,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC9C;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;IAtCU,mBAAmB;QAD/B,sBAAU,EAAE;QAIR,mBAAA,kBAAM,CAAC,8BAAY,CAAC,cAAc,CAAC,CAAA;iDAAoC,kCAAc;OAH7E,mBAAmB,CAuC/B;IAAD,0BAAC;CAAA,AAvCD,IAuCC;AAvCY,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\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(this.transformKey(key), item, this.minutesToMilliseconds(ttlInMinutes));\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
+ {"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 { StorageService } from '@empathyco/x-storage-service';
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' ? new StorageService(localStorage) : undefined : _c, _d = _b.cacheService, cacheService = _d === void 0 ? EmpathyCacheService : _d;
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.bind(DEPENDENCIES.Hooks[hookName]).toFunction(hook).whenInjectedInto(DEPENDENCIES.Requestors[feature]);
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", [StorageService])
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":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D;;;;GAIG;AAEH;IAEE,6BAC0D,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IACrF,CAAC;IAEJ,qCAAO,GAAP,UAAQ,GAAW,EAAE,IAAS,EAAE,YAAoB;QAClD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;IACtG,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,WAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,CAAC;IACrC,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,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC9C;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;IAtCU,mBAAmB;QAD/B,UAAU,EAAE;QAIR,WAAA,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;yCAAoC,cAAc;OAH7E,mBAAmB,CAuC/B;IAAD,0BAAC;CAAA,AAvCD,IAuCC;SAvCY,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\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(this.transformKey(key), item, this.minutesToMilliseconds(ttlInMinutes));\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
+ {"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.6",
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.0",
44
- "@empathyco/x-get-safe-property-chain": "^1.3.0-alpha.0",
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": "^1.4.0-alpha.0",
47
- "@empathyco/x-types": "^10.0.0-alpha.11",
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.0",
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": "~24.0.13",
56
+ "@types/jest": "~27.0.3",
57
57
  "@types/node": "~12.7.5",
58
- "jest": "~24.7.1",
59
- "ts-jest": "~24.0.2",
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": "86cecedd0d76dc5db810bba830adea137154e33d"
65
+ "gitHead": "7de21ba09dc79c4cd968dab38a0e934439a47490"
66
66
  }
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.18.16"
8
+ "packageVersion": "7.18.19"
9
9
  }
10
10
  ]
11
11
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "toolPackage": "@microsoft/api-extractor",
4
- "toolVersion": "7.18.16",
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:class"
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:class"
6393
+ "canonicalReference": "@empathyco/x-storage-service!StorageService:interface"
6394
6394
  },
6395
6395
  {
6396
6396
  "kind": "Content",