@searchspring/snap-client 0.27.8 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/cjs/Client/Client.d.ts +1 -0
  2. package/dist/cjs/Client/Client.d.ts.map +1 -1
  3. package/dist/cjs/Client/Client.js +12 -0
  4. package/dist/cjs/Client/NetworkCache/NetworkCache.d.ts +3 -3
  5. package/dist/cjs/Client/NetworkCache/NetworkCache.d.ts.map +1 -1
  6. package/dist/cjs/Client/NetworkCache/NetworkCache.js +23 -22
  7. package/dist/cjs/Client/apis/Abstract.d.ts +6 -2
  8. package/dist/cjs/Client/apis/Abstract.d.ts.map +1 -1
  9. package/dist/cjs/Client/apis/Abstract.js +49 -16
  10. package/dist/cjs/Client/apis/Hybrid.d.ts.map +1 -1
  11. package/dist/cjs/Client/apis/Hybrid.js +9 -2
  12. package/dist/cjs/Client/apis/Recommend.d.ts.map +1 -1
  13. package/dist/cjs/Client/apis/Recommend.js +22 -20
  14. package/dist/cjs/Client/transforms/searchRequest.d.ts +19 -19
  15. package/dist/cjs/Client/transforms/searchResponse.d.ts +8 -8
  16. package/dist/cjs/Client/transforms/searchResponse.js +2 -0
  17. package/dist/cjs/Client/transforms/suggestResponse.d.ts +2 -2
  18. package/dist/cjs/types.d.ts +2 -0
  19. package/dist/cjs/types.d.ts.map +1 -1
  20. package/dist/esm/Client/Client.d.ts +1 -0
  21. package/dist/esm/Client/Client.d.ts.map +1 -1
  22. package/dist/esm/Client/Client.js +12 -0
  23. package/dist/esm/Client/NetworkCache/NetworkCache.d.ts +3 -3
  24. package/dist/esm/Client/NetworkCache/NetworkCache.d.ts.map +1 -1
  25. package/dist/esm/Client/NetworkCache/NetworkCache.js +25 -24
  26. package/dist/esm/Client/apis/Abstract.d.ts +6 -2
  27. package/dist/esm/Client/apis/Abstract.d.ts.map +1 -1
  28. package/dist/esm/Client/apis/Abstract.js +21 -9
  29. package/dist/esm/Client/apis/Hybrid.d.ts.map +1 -1
  30. package/dist/esm/Client/apis/Hybrid.js +9 -2
  31. package/dist/esm/Client/apis/Recommend.d.ts.map +1 -1
  32. package/dist/esm/Client/apis/Recommend.js +20 -18
  33. package/dist/esm/Client/transforms/searchResponse.js +2 -0
  34. package/dist/esm/types.d.ts +2 -0
  35. package/dist/esm/types.d.ts.map +1 -1
  36. package/package.json +3 -3
@@ -1,6 +1,7 @@
1
1
  import type { ClientGlobals, ClientConfig, TrendingRequestModel, TrendingResponseModel, RecommendCombinedRequestModel, RecommendCombinedResponseModel } from '../types';
2
2
  import type { MetaRequestModel, MetaResponseModel, SearchRequestModel, SearchResponseModel, AutocompleteRequestModel, AutocompleteResponseModel } from '@searchspring/snapi-types';
3
3
  export declare class Client {
4
+ private mode;
4
5
  private globals;
5
6
  private config;
6
7
  private requesters;
@@ -1 +1 @@
1
- {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../src/Client/Client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EAGrB,6BAA6B,EAC7B,8BAA8B,EAC9B,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,MAAM,2BAA2B,CAAC;AAqCnC,qBAAa,MAAM;IAClB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAOhB;gBAEU,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,YAAiB;IAgDvD,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO3D,YAAY,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;IAU5G,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAM/E,SAAS,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;CAgC/F"}
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../src/Client/Client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EAGrB,6BAA6B,EAC7B,8BAA8B,EAC9B,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,MAAM,2BAA2B,CAAC;AAsCnC,qBAAa,MAAM;IAClB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAOhB;gBAEU,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,YAAiB;IA0DvD,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO3D,YAAY,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;IAU5G,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAM/E,SAAS,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;CAgC/F"}
@@ -62,9 +62,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
62
62
  };
63
63
  Object.defineProperty(exports, "__esModule", { value: true });
64
64
  exports.Client = void 0;
65
+ var snap_toolbox_1 = require("@searchspring/snap-toolbox");
65
66
  var apis_1 = require("./apis");
66
67
  var deepmerge_1 = __importDefault(require("deepmerge"));
67
68
  var defaultConfig = {
69
+ mode: snap_toolbox_1.AppMode.production,
68
70
  meta: {
69
71
  cache: {
70
72
  purgeable: false,
@@ -100,33 +102,43 @@ var Client = /** @class */ (function () {
100
102
  function Client(globals, config) {
101
103
  if (config === void 0) { config = {}; }
102
104
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
105
+ this.mode = snap_toolbox_1.AppMode.production;
103
106
  if (!(globals === null || globals === void 0 ? void 0 : globals.siteId)) {
104
107
  throw 'no siteId specified!';
105
108
  }
106
109
  this.globals = globals;
107
110
  this.config = (0, deepmerge_1.default)(defaultConfig, config);
111
+ if (Object.values(snap_toolbox_1.AppMode).includes(this.config.mode)) {
112
+ this.mode = this.config.mode;
113
+ }
108
114
  this.requesters = {
109
115
  autocomplete: new apis_1.HybridAPI(new apis_1.ApiConfiguration({
116
+ mode: this.mode,
110
117
  origin: (_b = (_a = this.config.autocomplete) === null || _a === void 0 ? void 0 : _a.api) === null || _b === void 0 ? void 0 : _b.origin,
111
118
  cache: (_c = this.config.autocomplete) === null || _c === void 0 ? void 0 : _c.cache,
112
119
  })),
113
120
  meta: new apis_1.HybridAPI(new apis_1.ApiConfiguration({
121
+ mode: this.mode,
114
122
  origin: (_e = (_d = this.config.meta) === null || _d === void 0 ? void 0 : _d.api) === null || _e === void 0 ? void 0 : _e.origin,
115
123
  cache: (_f = this.config.meta) === null || _f === void 0 ? void 0 : _f.cache,
116
124
  })),
117
125
  recommend: new apis_1.RecommendAPI(new apis_1.ApiConfiguration({
126
+ mode: this.mode,
118
127
  origin: (_h = (_g = this.config.recommend) === null || _g === void 0 ? void 0 : _g.api) === null || _h === void 0 ? void 0 : _h.origin,
119
128
  cache: (_j = this.config.recommend) === null || _j === void 0 ? void 0 : _j.cache,
120
129
  })),
121
130
  search: new apis_1.HybridAPI(new apis_1.ApiConfiguration({
131
+ mode: this.mode,
122
132
  origin: (_l = (_k = this.config.search) === null || _k === void 0 ? void 0 : _k.api) === null || _l === void 0 ? void 0 : _l.origin,
123
133
  cache: (_m = this.config.search) === null || _m === void 0 ? void 0 : _m.cache,
124
134
  })),
125
135
  finder: new apis_1.HybridAPI(new apis_1.ApiConfiguration({
136
+ mode: this.mode,
126
137
  origin: (_p = (_o = this.config.finder) === null || _o === void 0 ? void 0 : _o.api) === null || _p === void 0 ? void 0 : _p.origin,
127
138
  cache: (_q = this.config.finder) === null || _q === void 0 ? void 0 : _q.cache,
128
139
  })),
129
140
  suggest: new apis_1.SuggestAPI(new apis_1.ApiConfiguration({
141
+ mode: this.mode,
130
142
  origin: (_s = (_r = this.config.suggest) === null || _r === void 0 ? void 0 : _r.api) === null || _s === void 0 ? void 0 : _s.origin,
131
143
  cache: (_t = this.config.suggest) === null || _t === void 0 ? void 0 : _t.cache,
132
144
  })),
@@ -1,7 +1,7 @@
1
- import { CacheConfig, DefaultCacheConfig } from '../../types';
1
+ import { CacheConfig, Cache, DefaultCacheConfig } from '../../types';
2
2
  export declare class NetworkCache {
3
- private memoryCache;
4
- config: DefaultCacheConfig;
3
+ protected memoryCache: Cache;
4
+ protected config: DefaultCacheConfig;
5
5
  constructor(config?: CacheConfig);
6
6
  get(key: string): Response | void;
7
7
  set(key: string, value: Response): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkCache.d.ts","sourceRoot":"","sources":["../../../../src/Client/NetworkCache/NetworkCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAS,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAWrE,qBAAa,YAAY;IACxB,OAAO,CAAC,WAAW,CAAa;IAChC,MAAM,EAAE,kBAAkB,CAAC;gBAEf,MAAM,CAAC,EAAE,WAAW;IAWzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAgCjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAyCvC,KAAK;CAQZ"}
1
+ {"version":3,"file":"NetworkCache.d.ts","sourceRoot":"","sources":["../../../../src/Client/NetworkCache/NetworkCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAWrE,qBAAa,YAAY;IACxB,SAAS,CAAC,WAAW,EAAE,KAAK,CAAM;IAClC,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC;gBAEzB,MAAM,CAAC,EAAE,WAAW;IAWzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAgCjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAyCvC,KAAK;CAQZ"}
@@ -37,31 +37,32 @@ var NetworkCache = /** @class */ (function () {
37
37
  });
38
38
  }
39
39
  NetworkCache.prototype.get = function (key) {
40
- try {
41
- if (this.memoryCache[key]) {
42
- if (Date.now() < this.memoryCache[key].expires) {
43
- return this.memoryCache[key].value;
44
- }
45
- }
46
- var stored = sessionStorage.getItem(CACHE_STORAGE_KEY);
47
- var localData = stored && JSON.parse(stored);
48
- if (localData && key && localData[key]) {
49
- // compare the expiry time of the item with the current time
50
- if (Date.now() > localData[key].expires) {
51
- // remove item
52
- var newStored = __assign({}, localData);
53
- delete newStored[key];
54
- //update storage
55
- sessionStorage.setItem(CACHE_STORAGE_KEY, JSON.stringify(newStored));
56
- return undefined;
40
+ if (this.config.enabled) {
41
+ try {
42
+ if (this.memoryCache[key]) {
43
+ if (Date.now() < this.memoryCache[key].expires) {
44
+ return this.memoryCache[key].value;
45
+ }
57
46
  }
58
- else {
59
- return localData[key].value;
47
+ var stored = sessionStorage.getItem(CACHE_STORAGE_KEY);
48
+ var localData = stored && JSON.parse(stored);
49
+ if (localData && key && localData[key]) {
50
+ // compare the expiry time of the item with the current time
51
+ if (Date.now() >= localData[key].expires) {
52
+ // remove item
53
+ var newStored = __assign({}, localData);
54
+ delete newStored[key];
55
+ // update storage
56
+ sessionStorage.setItem(CACHE_STORAGE_KEY, JSON.stringify(newStored));
57
+ }
58
+ else {
59
+ return localData[key].value;
60
+ }
60
61
  }
61
62
  }
62
- }
63
- catch (err) {
64
- console.warn('something went wrong, browser might not have cookies enabled');
63
+ catch (err) {
64
+ console.warn('something went wrong, browser might not have cookies enabled');
65
+ }
65
66
  }
66
67
  };
67
68
  NetworkCache.prototype.set = function (key, value) {
@@ -1,3 +1,4 @@
1
+ import { AppMode } from '@searchspring/snap-toolbox';
1
2
  import { NetworkCache } from '../NetworkCache/NetworkCache';
2
3
  import { CacheConfig } from '../../types';
3
4
  export declare type Json = any;
@@ -22,12 +23,14 @@ export declare class API {
22
23
  private retryCount;
23
24
  cache: NetworkCache;
24
25
  constructor(configuration: ApiConfiguration);
26
+ protected get mode(): AppMode;
25
27
  protected request(context: RequestOpts, cacheKey?: any): Promise<Response>;
26
28
  private createFetchParams;
27
29
  private fetchApi;
28
30
  }
29
31
  export declare type FetchAPI = WindowOrWorkerGlobalScope['fetch'];
30
32
  export interface ApiConfigurationParameters {
33
+ mode?: keyof typeof AppMode | AppMode;
31
34
  origin?: string;
32
35
  fetchApi?: FetchAPI;
33
36
  queryParamsStringify?: (params: HTTPQuery) => string;
@@ -37,13 +40,14 @@ export interface ApiConfigurationParameters {
37
40
  }
38
41
  export declare class ApiConfiguration {
39
42
  private configuration;
40
- constructor(configuration: ApiConfigurationParameters);
43
+ constructor(configuration?: ApiConfigurationParameters);
41
44
  get cache(): CacheConfig;
42
45
  get maxRetry(): number;
43
46
  get origin(): string;
44
47
  get fetchApi(): FetchAPI;
45
48
  get queryParamsStringify(): (params: HTTPQuery) => string;
46
- get headers(): HTTPHeaders | undefined;
49
+ get headers(): HTTPHeaders;
50
+ get mode(): AppMode;
47
51
  }
48
52
  export declare function querystring(params: HTTPQuery, prefix?: string): string;
49
53
  //# sourceMappingURL=Abstract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Abstract.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Abstract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,oBAAY,IAAI,GAAG,GAAG,CAAC;AACvB,oBAAY,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAC1F,oBAAY,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AACpD,oBAAY,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,SAAS,CAAA;CAAE,CAAC;AAClI,oBAAY,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED,qBAAa,GAAG;IAMH,SAAS,CAAC,aAAa,EAAE,gBAAgB;IALrD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAK;IAEhB,KAAK,EAAE,YAAY,CAAC;gBAEL,aAAa,EAAE,gBAAgB;cAIrC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmChF,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,QAAQ,CAId;CACF;AAED,oBAAY,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAE1D,MAAM,WAAW,0BAA0B;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAAC;IACrD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,qBAAa,gBAAgB;IAChB,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,0BAA0B;IAM7D,IAAI,KAAK,IAAI,WAAW,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,oBAAoB,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAExD;IAED,IAAI,OAAO,IAAI,WAAW,GAAG,SAAS,CAErC;CACD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,CAmBlE"}
1
+ {"version":3,"file":"Abstract.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Abstract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,oBAAY,IAAI,GAAG,GAAG,CAAC;AACvB,oBAAY,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAC1F,oBAAY,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AACpD,oBAAY,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,SAAS,CAAA;CAAE,CAAC;AAClI,oBAAY,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED,qBAAa,GAAG;IAMH,SAAS,CAAC,aAAa,EAAE,gBAAgB;IALrD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAK;IAEhB,KAAK,EAAE,YAAY,CAAC;gBAEL,aAAa,EAAE,gBAAgB;IAIrD,SAAS,KAAK,IAAI,IAAI,OAAO,CAE5B;cAEe,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmChF,OAAO,CAAC,iBAAiB;YAiCX,QAAQ;CAKtB;AAED,oBAAY,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAE1D,MAAM,WAAW,0BAA0B;IAC1C,IAAI,CAAC,EAAE,MAAM,OAAO,OAAO,GAAG,OAAO,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAAC;IACrD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,qBAAa,gBAAgB;IAChB,OAAO,CAAC,aAAa;gBAAb,aAAa,GAAE,0BAA+B;IAalE,IAAI,KAAK,IAAI,WAAW,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,oBAAoB,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAExD;IAED,IAAI,OAAO,IAAI,WAAW,CAEzB;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;CACD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,CAmBlE"}
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -37,28 +48,24 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
48
  };
38
49
  Object.defineProperty(exports, "__esModule", { value: true });
39
50
  exports.querystring = exports.ApiConfiguration = exports.API = void 0;
51
+ var snap_toolbox_1 = require("@searchspring/snap-toolbox");
40
52
  var fibonacci_1 = require("../utils/fibonacci");
41
53
  var NetworkCache_1 = require("../NetworkCache/NetworkCache");
42
54
  var isBlob = function (value) { return typeof Blob !== 'undefined' && value instanceof Blob; };
43
55
  var API = /** @class */ (function () {
44
56
  function API(configuration) {
45
- var _this = this;
46
57
  this.configuration = configuration;
47
58
  this.retryDelay = 1000;
48
59
  this.retryCount = 0;
49
- this.fetchApi = function (url, init) { return __awaiter(_this, void 0, void 0, function () {
50
- var response;
51
- return __generator(this, function (_a) {
52
- switch (_a.label) {
53
- case 0: return [4 /*yield*/, this.configuration.fetchApi(url, init)];
54
- case 1:
55
- response = _a.sent();
56
- return [2 /*return*/, response];
57
- }
58
- });
59
- }); };
60
- this.cache = new NetworkCache_1.NetworkCache(configuration.cache);
60
+ this.cache = new NetworkCache_1.NetworkCache(this.configuration.cache);
61
61
  }
62
+ Object.defineProperty(API.prototype, "mode", {
63
+ get: function () {
64
+ return this.configuration.mode;
65
+ },
66
+ enumerable: false,
67
+ configurable: true
68
+ });
62
69
  API.prototype.request = function (context, cacheKey) {
63
70
  return __awaiter(this, void 0, void 0, function () {
64
71
  var _a, url, init, cachedResponse, response, responseJSON;
@@ -78,7 +85,7 @@ var API = /** @class */ (function () {
78
85
  return [4 /*yield*/, this.fetchApi(url, init)];
79
86
  case 1:
80
87
  response = _b.sent();
81
- return [4 /*yield*/, response.json()];
88
+ return [4 /*yield*/, (response === null || response === void 0 ? void 0 : response.json())];
82
89
  case 2:
83
90
  responseJSON = _b.sent();
84
91
  if (!(response.status >= 200 && response.status < 300)) return [3 /*break*/, 3];
@@ -122,7 +129,7 @@ var API = /** @class */ (function () {
122
129
  var body = (typeof FormData !== 'undefined' && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)
123
130
  ? context.body
124
131
  : JSON.stringify(context.body);
125
- var headers = Object.assign({}, this.configuration.headers, context.headers);
132
+ var headers = __assign(__assign({}, this.configuration.headers), context.headers);
126
133
  var init = {
127
134
  method: context.method,
128
135
  headers: headers,
@@ -130,15 +137,34 @@ var API = /** @class */ (function () {
130
137
  };
131
138
  return { url: url, init: init };
132
139
  };
140
+ API.prototype.fetchApi = function (url, init) {
141
+ return __awaiter(this, void 0, void 0, function () {
142
+ var response;
143
+ return __generator(this, function (_a) {
144
+ switch (_a.label) {
145
+ case 0: return [4 /*yield*/, this.configuration.fetchApi(url, init)];
146
+ case 1:
147
+ response = _a.sent();
148
+ return [2 /*return*/, response];
149
+ }
150
+ });
151
+ });
152
+ };
133
153
  return API;
134
154
  }());
135
155
  exports.API = API;
136
156
  var ApiConfiguration = /** @class */ (function () {
137
157
  function ApiConfiguration(configuration) {
158
+ if (configuration === void 0) { configuration = {}; }
138
159
  this.configuration = configuration;
139
160
  if (!configuration.maxRetry) {
140
161
  this.configuration.maxRetry = 8;
141
162
  }
163
+ this.configuration.cache = this.configuration.cache || {};
164
+ this.configuration.mode = this.configuration.mode || snap_toolbox_1.AppMode.production;
165
+ if (this.configuration.mode == snap_toolbox_1.AppMode.development) {
166
+ this.configuration.cache.enabled = false;
167
+ }
142
168
  }
143
169
  Object.defineProperty(ApiConfiguration.prototype, "cache", {
144
170
  get: function () {
@@ -178,7 +204,14 @@ var ApiConfiguration = /** @class */ (function () {
178
204
  });
179
205
  Object.defineProperty(ApiConfiguration.prototype, "headers", {
180
206
  get: function () {
181
- return this.configuration.headers;
207
+ return this.configuration.headers || {};
208
+ },
209
+ enumerable: false,
210
+ configurable: true
211
+ });
212
+ Object.defineProperty(ApiConfiguration.prototype, "mode", {
213
+ get: function () {
214
+ return this.configuration.mode;
182
215
  },
183
216
  enumerable: false,
184
217
  configurable: true
@@ -1 +1 @@
1
- {"version":3,"file":"Hybrid.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Hybrid.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAyB,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAIjE,qBAAa,SAAU,SAAQ,GAAG;IACjC,OAAO,CAAC,UAAU,CAGhB;gBAEU,aAAa,EAAE,gBAAgB;IASrC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKxE,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ9E,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ9E,eAAe,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAoCtG"}
1
+ {"version":3,"file":"Hybrid.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Hybrid.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAqD,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAI7F,qBAAa,SAAU,SAAQ,GAAG;IACjC,OAAO,CAAC,UAAU,CAGhB;gBAEU,aAAa,EAAE,gBAAgB;IAiBrC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKxE,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ9E,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ9E,eAAe,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAoCtG"}
@@ -63,15 +63,22 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
63
63
  };
64
64
  Object.defineProperty(exports, "__esModule", { value: true });
65
65
  exports.HybridAPI = void 0;
66
+ var snap_toolbox_1 = require("@searchspring/snap-toolbox");
66
67
  var _1 = require(".");
67
68
  var transforms_1 = require("../transforms");
68
69
  var HybridAPI = /** @class */ (function (_super) {
69
70
  __extends(HybridAPI, _super);
70
71
  function HybridAPI(configuration) {
71
72
  var _this = _super.call(this, configuration) || this;
73
+ var legacyConfig = { mode: configuration.mode, origin: configuration.origin, cache: _this.configuration.cache };
74
+ if (configuration.mode == snap_toolbox_1.AppMode.development) {
75
+ legacyConfig.headers = { 'searchspring-no-beacon': '' };
76
+ }
77
+ var legacyConfiguration = new _1.ApiConfiguration(legacyConfig);
78
+ var suggestConfiguration = new _1.ApiConfiguration({ mode: configuration.mode, origin: configuration.origin, cache: _this.configuration.cache });
72
79
  _this.requesters = {
73
- legacy: new _1.LegacyAPI(new _1.ApiConfiguration({ origin: configuration.origin, cache: _this.configuration.cache })),
74
- suggest: new _1.SuggestAPI(new _1.ApiConfiguration({ origin: configuration.origin, cache: _this.configuration.cache })),
80
+ legacy: new _1.LegacyAPI(legacyConfiguration),
81
+ suggest: new _1.SuggestAPI(suggestConfiguration),
75
82
  };
76
83
  return _this;
77
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Recommend.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Recommend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAIhE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAgBvH,qBAAa,YAAa,SAAQ,GAAG;IACpC,OAAO,CAAC,OAAO,CAOb;gBAEU,MAAM,EAAE,gBAAgB;IAK9B,UAAU,CAAC,eAAe,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgB/E,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgFxF,kBAAkB,CAAC,eAAe,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmB3F,mBAAmB,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAmBpG"}
1
+ {"version":3,"file":"Recommend.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Recommend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAIhE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAqBvH,qBAAa,YAAa,SAAQ,GAAG;IACpC,OAAO,CAAC,OAAO,CAMb;gBAEU,MAAM,EAAE,gBAAgB;IAK9B,UAAU,CAAC,eAAe,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgB/E,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmFxF,kBAAkB,CAAC,eAAe,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmB3F,mBAAmB,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAmBpG"}
@@ -116,11 +116,10 @@ var RecommendAPI = /** @class */ (function (_super) {
116
116
  });
117
117
  };
118
118
  RecommendAPI.prototype.batchRecommendations = function (parameters) {
119
- var _a;
120
119
  return __awaiter(this, void 0, void 0, function () {
121
120
  var tags, limits, categories, otherParams, getKey, key, batch, deferred;
122
121
  var _this = this;
123
- return __generator(this, function (_b) {
122
+ return __generator(this, function (_a) {
124
123
  tags = parameters.tags, limits = parameters.limits, categories = parameters.categories, otherParams = __rest(parameters, ["tags", "limits", "categories"]);
125
124
  getKey = function (parameters) {
126
125
  var key = (0, hashParams_1.hashParams)(parameters);
@@ -132,26 +131,26 @@ var RecommendAPI = /** @class */ (function (_super) {
132
131
  return key;
133
132
  };
134
133
  key = getKey(otherParams);
135
- batch = (this.batches[key] = this.batches[key] || { timeout: null, request: { tags: [], limits: [] }, requests: [], deferreds: [] });
134
+ batch = (this.batches[key] = this.batches[key] || { timeout: null, request: { tags: [], limits: [] }, entries: [] });
136
135
  deferred = new Deferred();
137
136
  // add each request to the list
138
- batch.requests.push(__assign({}, parameters));
139
- (_a = batch.deferreds) === null || _a === void 0 ? void 0 : _a.push(deferred);
137
+ batch.entries.push({ request: parameters, deferred: deferred });
140
138
  // wait for all of the requests to come in
141
139
  window.clearTimeout(batch.timeout);
142
140
  batch.timeout = window.setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
143
- var batchedRequests, response_1, err_1;
141
+ var response_1, err_1;
144
142
  var _a, _b;
145
143
  return __generator(this, function (_c) {
146
144
  switch (_c.label) {
147
145
  case 0:
148
146
  // delete the batch so a new one can take its place
149
147
  delete this.batches[key];
150
- batchedRequests = batch.requests.sort(sortRequests);
148
+ // reorder the requests by order value in context.
149
+ batch.entries.sort(sortBatchEntries);
151
150
  // now that the requests are in proper order, map through them
152
151
  // and build out the batches
153
- batchedRequests.map(function (request) {
154
- var tags = request.tags, limits = request.limits, categories = request.categories, otherParams = __rest(request, ["tags", "limits", "categories"]);
152
+ batch.entries.map(function (entry) {
153
+ var _a = entry.request, tags = _a.tags, limits = _a.limits, categories = _a.categories, otherParams = __rest(_a, ["tags", "limits", "categories"]);
155
154
  if (!limits)
156
155
  limits = 20;
157
156
  var tag = (tags || [])[0];
@@ -160,7 +159,7 @@ var RecommendAPI = /** @class */ (function (_super) {
160
159
  batch.request.tags.push(tag);
161
160
  if (categories) {
162
161
  if (!batch.request.categories) {
163
- batch.request.categories = categories;
162
+ batch.request.categories = Array.isArray(categories) ? categories : [categories];
164
163
  }
165
164
  else {
166
165
  batch.request.categories = batch.request.categories.concat(categories);
@@ -172,6 +171,9 @@ var RecommendAPI = /** @class */ (function (_super) {
172
171
  _c.label = 1;
173
172
  case 1:
174
173
  _c.trys.push([1, 6, , 7]);
174
+ if (this.configuration.mode == snap_toolbox_1.AppMode.development) {
175
+ batch.request.test = true;
176
+ }
175
177
  if (!((0, snap_toolbox_1.charsParams)(batch.request) > 1024)) return [3 /*break*/, 3];
176
178
  if (batch.request['product']) {
177
179
  batch.request['product'] = batch.request['product'].toString();
@@ -185,14 +187,14 @@ var RecommendAPI = /** @class */ (function (_super) {
185
187
  response_1 = _c.sent();
186
188
  _c.label = 5;
187
189
  case 5:
188
- (_a = batch.deferreds) === null || _a === void 0 ? void 0 : _a.forEach(function (def, index) {
189
- def.resolve([response_1[index]]);
190
+ (_a = batch.entries) === null || _a === void 0 ? void 0 : _a.forEach(function (entry, index) {
191
+ entry.deferred.resolve([response_1[index]]);
190
192
  });
191
193
  return [3 /*break*/, 7];
192
194
  case 6:
193
195
  err_1 = _c.sent();
194
- (_b = batch.deferreds) === null || _b === void 0 ? void 0 : _b.forEach(function (def) {
195
- def.reject(err_1);
196
+ (_b = batch.entries) === null || _b === void 0 ? void 0 : _b.forEach(function (entry) {
197
+ entry.deferred.reject(err_1);
196
198
  });
197
199
  return [3 /*break*/, 7];
198
200
  case 7: return [2 /*return*/];
@@ -251,21 +253,21 @@ var RecommendAPI = /** @class */ (function (_super) {
251
253
  return RecommendAPI;
252
254
  }(Abstract_1.API));
253
255
  exports.RecommendAPI = RecommendAPI;
254
- function sortRequests(a, b) {
256
+ function sortBatchEntries(a, b) {
255
257
  // undefined order goes last
256
- if (a.order == undefined && b.order == undefined) {
258
+ if (a.request.order == undefined && b.request.order == undefined) {
257
259
  return 0;
258
260
  }
259
- if (a.order == undefined && b.order != undefined) {
261
+ if (a.request.order == undefined && b.request.order != undefined) {
260
262
  return 1;
261
263
  }
262
- if (b.order == undefined && a.order != undefined) {
264
+ if (b.request.order == undefined && a.request.order != undefined) {
263
265
  return -1;
264
266
  }
265
- if (a.order < b.order) {
267
+ if (a.request.order < b.request.order) {
266
268
  return -1;
267
269
  }
268
- if (a.order > b.order) {
270
+ if (a.request.order > b.request.order) {
269
271
  return 1;
270
272
  }
271
273
  return 0;
@@ -3,20 +3,20 @@ export declare function transformSearchRequest(request: SearchRequestModel): any
3
3
  export declare namespace transformSearchRequest {
4
4
  var sorts: (request?: SearchRequestModel) => Record<string, SearchRequestModelSortsDirectionEnum[]>;
5
5
  var search: (request?: SearchRequestModel) => {
6
- q?: string;
7
- rq?: string;
8
- originalQuery?: string;
9
- redirectResponse?: string;
6
+ q?: string | undefined;
7
+ rq?: string | undefined;
8
+ originalQuery?: string | undefined;
9
+ redirectResponse?: string | undefined;
10
10
  };
11
- var filters: (request?: SearchRequestModel) => Record<string, (string | number | SearchRequestModelFilterRangeAllOfValue)[]>;
11
+ var filters: (request?: SearchRequestModel) => Record<string, (string | number | SearchRequestModelFilterRangeAllOfValue | undefined)[]>;
12
12
  var merchandising: (request?: SearchRequestModel) => {
13
- disableMerchandising?: boolean;
14
- tag?: string[];
15
- 'landing-page'?: string;
13
+ disableMerchandising?: boolean | undefined;
14
+ tag?: string[] | undefined;
15
+ 'landing-page'?: string | undefined;
16
16
  };
17
17
  var pagination: (request?: SearchRequestModel) => {
18
- page?: number;
19
- resultsPerPage?: number;
18
+ page?: number | undefined;
19
+ resultsPerPage?: number | undefined;
20
20
  };
21
21
  var siteId: (request?: SearchRequestModel) => {
22
22
  siteId: string;
@@ -24,19 +24,19 @@ export declare namespace transformSearchRequest {
24
24
  siteId?: undefined;
25
25
  };
26
26
  var facets: (request?: SearchRequestModel) => {
27
- includedFacets?: string[];
28
- excludedFacets?: string[];
29
- disableFacetDrillDown?: boolean;
27
+ includedFacets?: string[] | undefined;
28
+ excludedFacets?: string[] | undefined;
29
+ disableFacetDrillDown?: boolean | undefined;
30
30
  };
31
31
  var tracking: (request?: SearchRequestModel) => {
32
- userId?: string;
33
- domain?: string;
32
+ userId?: string | undefined;
33
+ domain?: string | undefined;
34
34
  };
35
35
  var personalization: (request?: SearchRequestModel) => {
36
- skipPersonalization?: boolean;
37
- cart?: string;
38
- shopper?: string;
39
- lastViewed?: string;
36
+ skipPersonalization?: boolean | undefined;
37
+ cart?: string | undefined;
38
+ shopper?: string | undefined;
39
+ lastViewed?: string | undefined;
40
40
  };
41
41
  }
42
42
  //# sourceMappingURL=searchRequest.d.ts.map
@@ -150,22 +150,22 @@ export declare namespace transformSearchResponse {
150
150
  content: {};
151
151
  facets: any[];
152
152
  facetsHide: any[];
153
- experiments?: [];
154
- variants?: [];
155
- personalized?: boolean;
153
+ experiments?: [] | undefined;
154
+ variants?: [] | undefined;
155
+ personalized?: boolean | undefined;
156
156
  triggeredCampaigns?: {
157
157
  id: string;
158
158
  title: string;
159
159
  type: string;
160
- }[];
160
+ }[] | undefined;
161
161
  };
162
162
  };
163
163
  var search: (response: searchResponseType, request: SearchRequestModel) => {
164
164
  search: {
165
- query: string;
166
- didYouMean: string;
167
- originalQuery: string;
168
- matchType: SearchResponseModelSearchMatchTypeEnum;
165
+ query: string | undefined;
166
+ didYouMean: string | undefined;
167
+ originalQuery: string | undefined;
168
+ matchType: SearchResponseModelSearchMatchTypeEnum | undefined;
169
169
  };
170
170
  };
171
171
  }
@@ -135,12 +135,14 @@ transformSearchResponse.facets = function (response, request) {
135
135
  if (facet.step) {
136
136
  if (facet.range) {
137
137
  transformedFacet = __assign(__assign({}, transformedFacet), { type: 'range', step: facet.step, range: {
138
+ // TODO: change to null
138
139
  low: facet.range[0] == '*' ? undefined : +facet.range[0],
139
140
  high: facet.range[1] == '*' ? undefined : +facet.range[1],
140
141
  } });
141
142
  }
142
143
  if (facet.active && typeof facet.active != 'boolean' && facet.active.length > 1) {
143
144
  transformedFacet.active = {
145
+ // TODO: change to null
144
146
  low: facet.active[0] == '*' ? undefined : +facet.active[0],
145
147
  high: facet.active[1] == '*' ? undefined : +facet.active[1],
146
148
  };
@@ -16,8 +16,8 @@ export declare namespace transformSuggestResponse {
16
16
  } | {
17
17
  suggested: {
18
18
  text: string;
19
- type: string;
20
- source: string;
19
+ type: string | undefined;
20
+ source: string | undefined;
21
21
  };
22
22
  };
23
23
  var alternatives: (response: SuggestResponseModel) => {
@@ -1,5 +1,7 @@
1
+ import { AppMode } from '@searchspring/snap-toolbox';
1
2
  import { SearchResponseModelResult } from '@searchspring/snapi-types';
2
3
  export declare type ClientConfig = {
4
+ mode?: keyof typeof AppMode | AppMode;
3
5
  meta?: {
4
6
  api?: SnapApiConfig;
5
7
  cache?: CacheConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { ClientGlobals, ClientConfig, TrendingRequestModel, TrendingResponseModel, RecommendCombinedRequestModel, RecommendCombinedResponseModel } from '../types';
2
2
  import type { MetaRequestModel, MetaResponseModel, SearchRequestModel, SearchResponseModel, AutocompleteRequestModel, AutocompleteResponseModel } from '@searchspring/snapi-types';
3
3
  export declare class Client {
4
+ private mode;
4
5
  private globals;
5
6
  private config;
6
7
  private requesters;
@@ -1 +1 @@
1
- {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../src/Client/Client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EAGrB,6BAA6B,EAC7B,8BAA8B,EAC9B,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,MAAM,2BAA2B,CAAC;AAqCnC,qBAAa,MAAM;IAClB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAOhB;gBAEU,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,YAAiB;IAgDvD,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO3D,YAAY,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;IAU5G,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAM/E,SAAS,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;CAgC/F"}
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../src/Client/Client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EAGrB,6BAA6B,EAC7B,8BAA8B,EAC9B,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,MAAM,2BAA2B,CAAC;AAsCnC,qBAAa,MAAM;IAClB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAOhB;gBAEU,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,YAAiB;IA0DvD,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO3D,YAAY,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;IAU5G,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAM/E,SAAS,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;CAgC/F"}
@@ -1,6 +1,8 @@
1
+ import { AppMode } from '@searchspring/snap-toolbox';
1
2
  import { HybridAPI, SuggestAPI, RecommendAPI, ApiConfiguration } from './apis';
2
3
  import deepmerge from 'deepmerge';
3
4
  const defaultConfig = {
5
+ mode: AppMode.production,
4
6
  meta: {
5
7
  cache: {
6
8
  purgeable: false,
@@ -34,33 +36,43 @@ const defaultConfig = {
34
36
  };
35
37
  export class Client {
36
38
  constructor(globals, config = {}) {
39
+ this.mode = AppMode.production;
37
40
  if (!globals?.siteId) {
38
41
  throw 'no siteId specified!';
39
42
  }
40
43
  this.globals = globals;
41
44
  this.config = deepmerge(defaultConfig, config);
45
+ if (Object.values(AppMode).includes(this.config.mode)) {
46
+ this.mode = this.config.mode;
47
+ }
42
48
  this.requesters = {
43
49
  autocomplete: new HybridAPI(new ApiConfiguration({
50
+ mode: this.mode,
44
51
  origin: this.config.autocomplete?.api?.origin,
45
52
  cache: this.config.autocomplete?.cache,
46
53
  })),
47
54
  meta: new HybridAPI(new ApiConfiguration({
55
+ mode: this.mode,
48
56
  origin: this.config.meta?.api?.origin,
49
57
  cache: this.config.meta?.cache,
50
58
  })),
51
59
  recommend: new RecommendAPI(new ApiConfiguration({
60
+ mode: this.mode,
52
61
  origin: this.config.recommend?.api?.origin,
53
62
  cache: this.config.recommend?.cache,
54
63
  })),
55
64
  search: new HybridAPI(new ApiConfiguration({
65
+ mode: this.mode,
56
66
  origin: this.config.search?.api?.origin,
57
67
  cache: this.config.search?.cache,
58
68
  })),
59
69
  finder: new HybridAPI(new ApiConfiguration({
70
+ mode: this.mode,
60
71
  origin: this.config.finder?.api?.origin,
61
72
  cache: this.config.finder?.cache,
62
73
  })),
63
74
  suggest: new SuggestAPI(new ApiConfiguration({
75
+ mode: this.mode,
64
76
  origin: this.config.suggest?.api?.origin,
65
77
  cache: this.config.suggest?.cache,
66
78
  })),
@@ -1,7 +1,7 @@
1
- import { CacheConfig, DefaultCacheConfig } from '../../types';
1
+ import { CacheConfig, Cache, DefaultCacheConfig } from '../../types';
2
2
  export declare class NetworkCache {
3
- private memoryCache;
4
- config: DefaultCacheConfig;
3
+ protected memoryCache: Cache;
4
+ protected config: DefaultCacheConfig;
5
5
  constructor(config?: CacheConfig);
6
6
  get(key: string): Response | void;
7
7
  set(key: string, value: Response): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkCache.d.ts","sourceRoot":"","sources":["../../../../src/Client/NetworkCache/NetworkCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAS,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAWrE,qBAAa,YAAY;IACxB,OAAO,CAAC,WAAW,CAAa;IAChC,MAAM,EAAE,kBAAkB,CAAC;gBAEf,MAAM,CAAC,EAAE,WAAW;IAWzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAgCjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAyCvC,KAAK;CAQZ"}
1
+ {"version":3,"file":"NetworkCache.d.ts","sourceRoot":"","sources":["../../../../src/Client/NetworkCache/NetworkCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAWrE,qBAAa,YAAY;IACxB,SAAS,CAAC,WAAW,EAAE,KAAK,CAAM;IAClC,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC;gBAEzB,MAAM,CAAC,EAAE,WAAW;IAWzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAgCjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAyCvC,KAAK;CAQZ"}
@@ -18,33 +18,34 @@ export class NetworkCache {
18
18
  });
19
19
  }
20
20
  get(key) {
21
- try {
22
- if (this.memoryCache[key]) {
23
- if (Date.now() < this.memoryCache[key].expires) {
24
- return this.memoryCache[key].value;
25
- }
26
- }
27
- const stored = sessionStorage.getItem(CACHE_STORAGE_KEY);
28
- const localData = stored && JSON.parse(stored);
29
- if (localData && key && localData[key]) {
30
- // compare the expiry time of the item with the current time
31
- if (Date.now() > localData[key].expires) {
32
- // remove item
33
- const newStored = {
34
- ...localData,
35
- };
36
- delete newStored[key];
37
- //update storage
38
- sessionStorage.setItem(CACHE_STORAGE_KEY, JSON.stringify(newStored));
39
- return undefined;
21
+ if (this.config.enabled) {
22
+ try {
23
+ if (this.memoryCache[key]) {
24
+ if (Date.now() < this.memoryCache[key].expires) {
25
+ return this.memoryCache[key].value;
26
+ }
40
27
  }
41
- else {
42
- return localData[key].value;
28
+ const stored = sessionStorage.getItem(CACHE_STORAGE_KEY);
29
+ const localData = stored && JSON.parse(stored);
30
+ if (localData && key && localData[key]) {
31
+ // compare the expiry time of the item with the current time
32
+ if (Date.now() >= localData[key].expires) {
33
+ // remove item
34
+ const newStored = {
35
+ ...localData,
36
+ };
37
+ delete newStored[key];
38
+ // update storage
39
+ sessionStorage.setItem(CACHE_STORAGE_KEY, JSON.stringify(newStored));
40
+ }
41
+ else {
42
+ return localData[key].value;
43
+ }
43
44
  }
44
45
  }
45
- }
46
- catch (err) {
47
- console.warn('something went wrong, browser might not have cookies enabled');
46
+ catch (err) {
47
+ console.warn('something went wrong, browser might not have cookies enabled');
48
+ }
48
49
  }
49
50
  }
50
51
  set(key, value) {
@@ -1,3 +1,4 @@
1
+ import { AppMode } from '@searchspring/snap-toolbox';
1
2
  import { NetworkCache } from '../NetworkCache/NetworkCache';
2
3
  import { CacheConfig } from '../../types';
3
4
  export declare type Json = any;
@@ -22,12 +23,14 @@ export declare class API {
22
23
  private retryCount;
23
24
  cache: NetworkCache;
24
25
  constructor(configuration: ApiConfiguration);
26
+ protected get mode(): AppMode;
25
27
  protected request(context: RequestOpts, cacheKey?: any): Promise<Response>;
26
28
  private createFetchParams;
27
29
  private fetchApi;
28
30
  }
29
31
  export declare type FetchAPI = WindowOrWorkerGlobalScope['fetch'];
30
32
  export interface ApiConfigurationParameters {
33
+ mode?: keyof typeof AppMode | AppMode;
31
34
  origin?: string;
32
35
  fetchApi?: FetchAPI;
33
36
  queryParamsStringify?: (params: HTTPQuery) => string;
@@ -37,13 +40,14 @@ export interface ApiConfigurationParameters {
37
40
  }
38
41
  export declare class ApiConfiguration {
39
42
  private configuration;
40
- constructor(configuration: ApiConfigurationParameters);
43
+ constructor(configuration?: ApiConfigurationParameters);
41
44
  get cache(): CacheConfig;
42
45
  get maxRetry(): number;
43
46
  get origin(): string;
44
47
  get fetchApi(): FetchAPI;
45
48
  get queryParamsStringify(): (params: HTTPQuery) => string;
46
- get headers(): HTTPHeaders | undefined;
49
+ get headers(): HTTPHeaders;
50
+ get mode(): AppMode;
47
51
  }
48
52
  export declare function querystring(params: HTTPQuery, prefix?: string): string;
49
53
  //# sourceMappingURL=Abstract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Abstract.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Abstract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,oBAAY,IAAI,GAAG,GAAG,CAAC;AACvB,oBAAY,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAC1F,oBAAY,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AACpD,oBAAY,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,SAAS,CAAA;CAAE,CAAC;AAClI,oBAAY,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED,qBAAa,GAAG;IAMH,SAAS,CAAC,aAAa,EAAE,gBAAgB;IALrD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAK;IAEhB,KAAK,EAAE,YAAY,CAAC;gBAEL,aAAa,EAAE,gBAAgB;cAIrC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmChF,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,QAAQ,CAId;CACF;AAED,oBAAY,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAE1D,MAAM,WAAW,0BAA0B;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAAC;IACrD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,qBAAa,gBAAgB;IAChB,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,0BAA0B;IAM7D,IAAI,KAAK,IAAI,WAAW,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,oBAAoB,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAExD;IAED,IAAI,OAAO,IAAI,WAAW,GAAG,SAAS,CAErC;CACD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,CAmBlE"}
1
+ {"version":3,"file":"Abstract.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Abstract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,oBAAY,IAAI,GAAG,GAAG,CAAC;AACvB,oBAAY,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAC1F,oBAAY,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AACpD,oBAAY,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,SAAS,CAAA;CAAE,CAAC;AAClI,oBAAY,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED,qBAAa,GAAG;IAMH,SAAS,CAAC,aAAa,EAAE,gBAAgB;IALrD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAK;IAEhB,KAAK,EAAE,YAAY,CAAC;gBAEL,aAAa,EAAE,gBAAgB;IAIrD,SAAS,KAAK,IAAI,IAAI,OAAO,CAE5B;cAEe,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmChF,OAAO,CAAC,iBAAiB;YAiCX,QAAQ;CAKtB;AAED,oBAAY,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAE1D,MAAM,WAAW,0BAA0B;IAC1C,IAAI,CAAC,EAAE,MAAM,OAAO,OAAO,GAAG,OAAO,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAAC;IACrD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,qBAAa,gBAAgB;IAChB,OAAO,CAAC,aAAa;gBAAb,aAAa,GAAE,0BAA+B;IAalE,IAAI,KAAK,IAAI,WAAW,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,oBAAoB,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAExD;IAED,IAAI,OAAO,IAAI,WAAW,CAEzB;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;CACD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,CAmBlE"}
@@ -1,3 +1,4 @@
1
+ import { AppMode } from '@searchspring/snap-toolbox';
1
2
  import { fibonacci } from '../utils/fibonacci';
2
3
  import { NetworkCache } from '../NetworkCache/NetworkCache';
3
4
  const isBlob = (value) => typeof Blob !== 'undefined' && value instanceof Blob;
@@ -6,11 +7,10 @@ export class API {
6
7
  this.configuration = configuration;
7
8
  this.retryDelay = 1000;
8
9
  this.retryCount = 0;
9
- this.fetchApi = async (url, init) => {
10
- const response = await this.configuration.fetchApi(url, init);
11
- return response;
12
- };
13
- this.cache = new NetworkCache(configuration.cache);
10
+ this.cache = new NetworkCache(this.configuration.cache);
11
+ }
12
+ get mode() {
13
+ return this.configuration.mode;
14
14
  }
15
15
  async request(context, cacheKey) {
16
16
  const { url, init } = this.createFetchParams(context);
@@ -23,7 +23,7 @@ export class API {
23
23
  }
24
24
  }
25
25
  const response = await this.fetchApi(url, init);
26
- const responseJSON = await response.json();
26
+ const responseJSON = await response?.json();
27
27
  if (response.status >= 200 && response.status < 300) {
28
28
  this.retryCount = 0; // reset count and delay incase rate limit occurs again before a page refresh
29
29
  this.retryDelay = 1000;
@@ -62,7 +62,7 @@ export class API {
62
62
  const body = (typeof FormData !== 'undefined' && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)
63
63
  ? context.body
64
64
  : JSON.stringify(context.body);
65
- const headers = Object.assign({}, this.configuration.headers, context.headers);
65
+ const headers = { ...this.configuration.headers, ...context.headers };
66
66
  const init = {
67
67
  method: context.method,
68
68
  headers: headers,
@@ -70,13 +70,22 @@ export class API {
70
70
  };
71
71
  return { url, init };
72
72
  }
73
+ async fetchApi(url, init) {
74
+ const response = await this.configuration.fetchApi(url, init);
75
+ return response;
76
+ }
73
77
  }
74
78
  export class ApiConfiguration {
75
- constructor(configuration) {
79
+ constructor(configuration = {}) {
76
80
  this.configuration = configuration;
77
81
  if (!configuration.maxRetry) {
78
82
  this.configuration.maxRetry = 8;
79
83
  }
84
+ this.configuration.cache = this.configuration.cache || {};
85
+ this.configuration.mode = this.configuration.mode || AppMode.production;
86
+ if (this.configuration.mode == AppMode.development) {
87
+ this.configuration.cache.enabled = false;
88
+ }
80
89
  }
81
90
  get cache() {
82
91
  return this.configuration?.cache || {};
@@ -94,7 +103,10 @@ export class ApiConfiguration {
94
103
  return this.configuration.queryParamsStringify || querystring;
95
104
  }
96
105
  get headers() {
97
- return this.configuration.headers;
106
+ return this.configuration.headers || {};
107
+ }
108
+ get mode() {
109
+ return this.configuration.mode;
98
110
  }
99
111
  }
100
112
  export function querystring(params, prefix = '') {
@@ -1 +1 @@
1
- {"version":3,"file":"Hybrid.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Hybrid.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAyB,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAIjE,qBAAa,SAAU,SAAQ,GAAG;IACjC,OAAO,CAAC,UAAU,CAGhB;gBAEU,aAAa,EAAE,gBAAgB;IASrC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKxE,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ9E,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ9E,eAAe,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAoCtG"}
1
+ {"version":3,"file":"Hybrid.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Hybrid.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAqD,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAI7F,qBAAa,SAAU,SAAQ,GAAG;IACjC,OAAO,CAAC,UAAU,CAGhB;gBAEU,aAAa,EAAE,gBAAgB;IAiBrC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKxE,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ9E,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ9E,eAAe,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAoCtG"}
@@ -1,11 +1,18 @@
1
+ import { AppMode } from '@searchspring/snap-toolbox';
1
2
  import { API, LegacyAPI, SuggestAPI, ApiConfiguration } from '.';
2
3
  import { transformSearchRequest, transformSearchResponse, transformSuggestResponse } from '../transforms';
3
4
  export class HybridAPI extends API {
4
5
  constructor(configuration) {
5
6
  super(configuration);
7
+ const legacyConfig = { mode: configuration.mode, origin: configuration.origin, cache: this.configuration.cache };
8
+ if (configuration.mode == AppMode.development) {
9
+ legacyConfig.headers = { 'searchspring-no-beacon': '' };
10
+ }
11
+ const legacyConfiguration = new ApiConfiguration(legacyConfig);
12
+ const suggestConfiguration = new ApiConfiguration({ mode: configuration.mode, origin: configuration.origin, cache: this.configuration.cache });
6
13
  this.requesters = {
7
- legacy: new LegacyAPI(new ApiConfiguration({ origin: configuration.origin, cache: this.configuration.cache })),
8
- suggest: new SuggestAPI(new ApiConfiguration({ origin: configuration.origin, cache: this.configuration.cache })),
14
+ legacy: new LegacyAPI(legacyConfiguration),
15
+ suggest: new SuggestAPI(suggestConfiguration),
9
16
  };
10
17
  }
11
18
  async getMeta(requestParameters) {
@@ -1 +1 @@
1
- {"version":3,"file":"Recommend.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Recommend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAIhE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAgBvH,qBAAa,YAAa,SAAQ,GAAG;IACpC,OAAO,CAAC,OAAO,CAOb;gBAEU,MAAM,EAAE,gBAAgB;IAK9B,UAAU,CAAC,eAAe,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgB/E,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgFxF,kBAAkB,CAAC,eAAe,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmB3F,mBAAmB,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAmBpG"}
1
+ {"version":3,"file":"Recommend.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Recommend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAIhE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAqBvH,qBAAa,YAAa,SAAQ,GAAG;IACpC,OAAO,CAAC,OAAO,CAMb;gBAEU,MAAM,EAAE,gBAAgB;IAK9B,UAAU,CAAC,eAAe,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgB/E,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmFxF,kBAAkB,CAAC,eAAe,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmB3F,mBAAmB,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAmBpG"}
@@ -1,6 +1,6 @@
1
1
  import { API } from './Abstract';
2
2
  import { hashParams } from '../utils/hashParams';
3
- import { charsParams } from '@searchspring/snap-toolbox';
3
+ import { AppMode, charsParams } from '@searchspring/snap-toolbox';
4
4
  class Deferred {
5
5
  constructor() {
6
6
  this.promise = new Promise((resolve, reject) => {
@@ -38,22 +38,21 @@ export class RecommendAPI extends API {
38
38
  };
39
39
  // set up batch keys and deferred promises
40
40
  const key = getKey(otherParams);
41
- const batch = (this.batches[key] = this.batches[key] || { timeout: null, request: { tags: [], limits: [] }, requests: [], deferreds: [] });
41
+ const batch = (this.batches[key] = this.batches[key] || { timeout: null, request: { tags: [], limits: [] }, entries: [] });
42
42
  const deferred = new Deferred();
43
43
  // add each request to the list
44
- batch.requests.push({ ...parameters });
45
- batch.deferreds?.push(deferred);
44
+ batch.entries.push({ request: parameters, deferred: deferred });
46
45
  // wait for all of the requests to come in
47
46
  window.clearTimeout(batch.timeout);
48
47
  batch.timeout = window.setTimeout(async () => {
49
48
  // delete the batch so a new one can take its place
50
49
  delete this.batches[key];
51
50
  // reorder the requests by order value in context.
52
- const batchedRequests = batch.requests.sort(sortRequests);
51
+ batch.entries.sort(sortBatchEntries);
53
52
  // now that the requests are in proper order, map through them
54
53
  // and build out the batches
55
- batchedRequests.map((request) => {
56
- let { tags, limits, categories, ...otherParams } = request;
54
+ batch.entries.map((entry) => {
55
+ let { tags, limits, categories, ...otherParams } = entry.request;
57
56
  if (!limits)
58
57
  limits = 20;
59
58
  const [tag] = tags || [];
@@ -62,7 +61,7 @@ export class RecommendAPI extends API {
62
61
  batch.request.tags.push(tag);
63
62
  if (categories) {
64
63
  if (!batch.request.categories) {
65
- batch.request.categories = categories;
64
+ batch.request.categories = Array.isArray(categories) ? categories : [categories];
66
65
  }
67
66
  else {
68
67
  batch.request.categories = batch.request.categories.concat(categories);
@@ -72,6 +71,9 @@ export class RecommendAPI extends API {
72
71
  batch.request = { ...batch.request, ...otherParams };
73
72
  });
74
73
  try {
74
+ if (this.configuration.mode == AppMode.development) {
75
+ batch.request.test = true;
76
+ }
75
77
  let response;
76
78
  if (charsParams(batch.request) > 1024) {
77
79
  if (batch.request['product']) {
@@ -82,13 +84,13 @@ export class RecommendAPI extends API {
82
84
  else {
83
85
  response = await this.getRecommendations(batch.request);
84
86
  }
85
- batch.deferreds?.forEach((def, index) => {
86
- def.resolve([response[index]]);
87
+ batch.entries?.forEach((entry, index) => {
88
+ entry.deferred.resolve([response[index]]);
87
89
  });
88
90
  }
89
91
  catch (err) {
90
- batch.deferreds?.forEach((def) => {
91
- def.reject(err);
92
+ batch.entries?.forEach((entry) => {
93
+ entry.deferred.reject(err);
92
94
  });
93
95
  }
94
96
  }, BATCH_TIMEOUT);
@@ -120,21 +122,21 @@ export class RecommendAPI extends API {
120
122
  return response;
121
123
  }
122
124
  }
123
- function sortRequests(a, b) {
125
+ function sortBatchEntries(a, b) {
124
126
  // undefined order goes last
125
- if (a.order == undefined && b.order == undefined) {
127
+ if (a.request.order == undefined && b.request.order == undefined) {
126
128
  return 0;
127
129
  }
128
- if (a.order == undefined && b.order != undefined) {
130
+ if (a.request.order == undefined && b.request.order != undefined) {
129
131
  return 1;
130
132
  }
131
- if (b.order == undefined && a.order != undefined) {
133
+ if (b.request.order == undefined && a.request.order != undefined) {
132
134
  return -1;
133
135
  }
134
- if (a.order < b.order) {
136
+ if (a.request.order < b.request.order) {
135
137
  return -1;
136
138
  }
137
- if (a.order > b.order) {
139
+ if (a.request.order > b.request.order) {
138
140
  return 1;
139
141
  }
140
142
  return 0;
@@ -136,6 +136,7 @@ transformSearchResponse.facets = (response, request = {}) => {
136
136
  type: 'range',
137
137
  step: facet.step,
138
138
  range: {
139
+ // TODO: change to null
139
140
  low: facet.range[0] == '*' ? undefined : +facet.range[0],
140
141
  high: facet.range[1] == '*' ? undefined : +facet.range[1],
141
142
  },
@@ -143,6 +144,7 @@ transformSearchResponse.facets = (response, request = {}) => {
143
144
  }
144
145
  if (facet.active && typeof facet.active != 'boolean' && facet.active.length > 1) {
145
146
  transformedFacet.active = {
147
+ // TODO: change to null
146
148
  low: facet.active[0] == '*' ? undefined : +facet.active[0],
147
149
  high: facet.active[1] == '*' ? undefined : +facet.active[1],
148
150
  };
@@ -1,5 +1,7 @@
1
+ import { AppMode } from '@searchspring/snap-toolbox';
1
2
  import { SearchResponseModelResult } from '@searchspring/snapi-types';
2
3
  export declare type ClientConfig = {
4
+ mode?: keyof typeof AppMode | AppMode;
3
5
  meta?: {
4
6
  api?: SnapApiConfig;
5
7
  cache?: CacheConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searchspring/snap-client",
3
- "version": "0.27.8",
3
+ "version": "0.30.0",
4
4
  "description": "Snap Client",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -20,12 +20,12 @@
20
20
  "test:watch": "jest --watch"
21
21
  },
22
22
  "dependencies": {
23
- "@searchspring/snap-toolbox": "^0.27.8",
23
+ "@searchspring/snap-toolbox": "^0.30.0",
24
24
  "deepmerge": "4.2.2"
25
25
  },
26
26
  "sideEffects": false,
27
27
  "files": [
28
28
  "dist/**/*"
29
29
  ],
30
- "gitHead": "cfbe6d18899fb4944ec397e2419d8409d4ab0065"
30
+ "gitHead": "48ab43e7ecb42f7b0e1da15b85fe02cc929918f6"
31
31
  }