@searchspring/snap-controller 0.20.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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +167 -0
  3. package/dist/cjs/Abstract/AbstractController.d.ts +40 -0
  4. package/dist/cjs/Abstract/AbstractController.d.ts.map +1 -0
  5. package/dist/cjs/Abstract/AbstractController.js +281 -0
  6. package/dist/cjs/Autocomplete/AutocompleteController.d.ts +40 -0
  7. package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -0
  8. package/dist/cjs/Autocomplete/AutocompleteController.js +687 -0
  9. package/dist/cjs/Finder/FinderController.d.ts +14 -0
  10. package/dist/cjs/Finder/FinderController.d.ts.map +1 -0
  11. package/dist/cjs/Finder/FinderController.js +286 -0
  12. package/dist/cjs/Recommendation/RecommendationController.d.ts +31 -0
  13. package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -0
  14. package/dist/cjs/Recommendation/RecommendationController.js +452 -0
  15. package/dist/cjs/Search/SearchController.d.ts +23 -0
  16. package/dist/cjs/Search/SearchController.d.ts.map +1 -0
  17. package/dist/cjs/Search/SearchController.js +429 -0
  18. package/dist/cjs/index.d.ts +7 -0
  19. package/dist/cjs/index.d.ts.map +1 -0
  20. package/dist/cjs/index.js +24 -0
  21. package/dist/cjs/types.d.ts +52 -0
  22. package/dist/cjs/types.d.ts.map +1 -0
  23. package/dist/cjs/types.js +2 -0
  24. package/dist/cjs/utils/getParams.d.ts +2 -0
  25. package/dist/cjs/utils/getParams.d.ts.map +1 -0
  26. package/dist/cjs/utils/getParams.js +72 -0
  27. package/dist/esm/Abstract/AbstractController.d.ts +40 -0
  28. package/dist/esm/Abstract/AbstractController.d.ts.map +1 -0
  29. package/dist/esm/Abstract/AbstractController.js +181 -0
  30. package/dist/esm/Autocomplete/AutocompleteController.d.ts +40 -0
  31. package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -0
  32. package/dist/esm/Autocomplete/AutocompleteController.js +472 -0
  33. package/dist/esm/Finder/FinderController.d.ts +14 -0
  34. package/dist/esm/Finder/FinderController.d.ts.map +1 -0
  35. package/dist/esm/Finder/FinderController.js +164 -0
  36. package/dist/esm/Recommendation/RecommendationController.d.ts +31 -0
  37. package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -0
  38. package/dist/esm/Recommendation/RecommendationController.js +330 -0
  39. package/dist/esm/Search/SearchController.d.ts +23 -0
  40. package/dist/esm/Search/SearchController.d.ts.map +1 -0
  41. package/dist/esm/Search/SearchController.js +282 -0
  42. package/dist/esm/index.d.ts +7 -0
  43. package/dist/esm/index.d.ts.map +1 -0
  44. package/dist/esm/index.js +6 -0
  45. package/dist/esm/types.d.ts +52 -0
  46. package/dist/esm/types.d.ts.map +1 -0
  47. package/dist/esm/types.js +1 -0
  48. package/dist/esm/utils/getParams.d.ts +2 -0
  49. package/dist/esm/utils/getParams.d.ts.map +1 -0
  50. package/dist/esm/utils/getParams.js +68 -0
  51. package/package.json +40 -0
@@ -0,0 +1,52 @@
1
+ import type { AbstractController } from './Abstract/AbstractController';
2
+ import type { EventManager, Middleware, Next } from '@searchspring/snap-event-manager';
3
+ import type { Client } from '@searchspring/snap-client';
4
+ import type { AbstractStore, StoreConfig, SearchStoreConfig, FinderStoreConfig, AutocompleteStoreConfig, RecommendationStoreConfig } from '@searchspring/snap-store-mobx';
5
+ import type { Tracker } from '@searchspring/snap-tracker';
6
+ import type { Profiler } from '@searchspring/snap-profiler';
7
+ import type { UrlManager } from '@searchspring/snap-url-manager';
8
+ import type { Logger } from '@searchspring/snap-logger';
9
+ declare global {
10
+ interface Window {
11
+ searchspring?: any;
12
+ }
13
+ }
14
+ export declare type NextEvent = Next;
15
+ export declare type PluginFunction = (cntrlr: AbstractController, ...args: any[]) => Promise<void>;
16
+ export declare type PluginGrouping = [func: PluginFunction, ...args: unknown[]];
17
+ export declare type BeforeSearchObj = {
18
+ controller: AbstractController;
19
+ request: any;
20
+ };
21
+ export declare type AfterSearchObj = {
22
+ controller: AbstractController;
23
+ response: any;
24
+ };
25
+ export declare type AfterStoreObj = {
26
+ controller: AbstractController;
27
+ request: any;
28
+ response: any;
29
+ };
30
+ export declare type ControllerServices = {
31
+ client: Client;
32
+ store: AbstractStore;
33
+ urlManager: UrlManager;
34
+ eventManager: EventManager;
35
+ profiler: Profiler;
36
+ logger: Logger;
37
+ tracker: Tracker;
38
+ };
39
+ export declare type Attachments = {
40
+ middleware?: {
41
+ [eventName: string]: Middleware<unknown> | Middleware<unknown>[];
42
+ };
43
+ plugins?: PluginGrouping[];
44
+ [any: string]: unknown;
45
+ };
46
+ export declare type ControllerConfig = StoreConfig & Attachments;
47
+ export declare type SearchControllerConfig = ControllerConfig & SearchStoreConfig;
48
+ export declare type FinderControllerConfig = ControllerConfig & FinderStoreConfig;
49
+ export declare type AutocompleteControllerConfig = ControllerConfig & AutocompleteStoreConfig;
50
+ export declare type RecommendationControllerConfig = ControllerConfig & RecommendationStoreConfig;
51
+ export declare type ControllerConfigs = SearchControllerConfig | AutocompleteControllerConfig | FinderControllerConfig | RecommendationControllerConfig;
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AAEvF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,YAAY,CAAC,EAAE,GAAG,CAAC;KACnB;CACD;AAID,oBAAY,SAAS,GAAG,IAAI,CAAC;AAE7B,oBAAY,cAAc,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,OAAA,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACpF,oBAAY,cAAc,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAExE,oBAAY,eAAe,GAAG;IAC7B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,oBAAY,cAAc,GAAG;IAC5B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC3B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,oBAAY,WAAW,GAAG;IACzB,UAAU,CAAC,EAAE;QACZ,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;KACjE,CAAC;IACF,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,oBAAY,gBAAgB,GAAG,WAAW,GAAG,WAAW,CAAC;AAGzD,oBAAY,sBAAsB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAE1E,oBAAY,sBAAsB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAE1E,oBAAY,4BAA4B,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;AAEtF,oBAAY,8BAA8B,GAAG,gBAAgB,GAAG,yBAAyB,CAAC;AAE1F,oBAAY,iBAAiB,GAAG,sBAAsB,GAAG,4BAA4B,GAAG,sBAAsB,GAAG,8BAA8B,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare function getSearchParams(state: any): Record<string, any>;
2
+ //# sourceMappingURL=getParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getParams.d.ts","sourceRoot":"","sources":["../../../src/utils/getParams.ts"],"names":[],"mappings":"AAkCA,wBAAgB,eAAe,CAAC,KAAK,KAAA,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAgF1D"}
@@ -0,0 +1,68 @@
1
+ // translate state to snAPI params
2
+ export function getSearchParams(state) {
3
+ const params = {};
4
+ if (state.tag) {
5
+ params.merchandising = params.merchandising || {};
6
+ params.merchandising.landingPage = state.tag;
7
+ }
8
+ if (state.query) {
9
+ params.search = params.search || {};
10
+ params.search.query = params.search.query || {};
11
+ params.search.query.string = state.query;
12
+ }
13
+ if (state.rq) {
14
+ params.search = params.search || {};
15
+ params.search.subQuery = state.rq;
16
+ }
17
+ if (state.oq) {
18
+ params.search = params.search || {};
19
+ params.search.originalQuery = state.oq;
20
+ }
21
+ if (state.page) {
22
+ params.pagination = params.pagination || {};
23
+ params.pagination.page = state.page;
24
+ }
25
+ if (state.pageSize) {
26
+ params.pagination = params.pagination || {};
27
+ params.pagination.pageSize = state.pageSize;
28
+ }
29
+ if (state.sort) {
30
+ params.sorts = params.sorts || [];
31
+ const sorts = Array.isArray(state.sort) ? state.sort : [state.sort];
32
+ const sort = sorts[0];
33
+ if (sort && sort.field && sort.direction) {
34
+ params.sorts.push({
35
+ field: sort.field,
36
+ direction: sort.direction,
37
+ });
38
+ }
39
+ }
40
+ if (state.filter) {
41
+ params.filters = params.filters || [];
42
+ Object.keys(state.filter).forEach((field) => {
43
+ if (typeof field != 'string') {
44
+ return;
45
+ }
46
+ const filter = state.filter[field];
47
+ // ensure values are an array
48
+ const values = Array.isArray(filter) ? filter : [filter];
49
+ values.forEach((value) => {
50
+ if (typeof value != 'object') {
51
+ params.filters.push({
52
+ type: 'value',
53
+ field: field,
54
+ value,
55
+ });
56
+ }
57
+ else if (typeof value.low != 'undefined' && typeof value.high != 'undefined') {
58
+ params.filters.push({
59
+ type: 'range',
60
+ field: field,
61
+ value,
62
+ });
63
+ }
64
+ });
65
+ });
66
+ }
67
+ return params;
68
+ }
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@searchspring/snap-controller",
3
+ "version": "0.20.0",
4
+ "description": "Snap Controllers",
5
+ "main": "dist/cjs/index.js",
6
+ "module": "dist/esm/index.js",
7
+ "author": "Searchspring",
8
+ "license": "MIT",
9
+ "repository": "https://github.com/searchspring/snap",
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "scripts": {
14
+ "build": "rm -rf ./dist && tsc && tsc -p tsconfig.cjs.json",
15
+ "build:docs": "typedoc --out docs src/index.ts",
16
+ "dev": "tsc --watch",
17
+ "format": "prettier --write 'src/**/*.{js,jsx,ts,tsx}'",
18
+ "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'",
19
+ "test": "jest",
20
+ "test:watch": "jest --watch"
21
+ },
22
+ "dependencies": {
23
+ "@searchspring/snap-toolbox": "^0.20.0",
24
+ "deepmerge": "^4.2.2"
25
+ },
26
+ "devDependencies": {
27
+ "@searchspring/snap-client": "^0.20.0",
28
+ "@searchspring/snap-event-manager": "^0.20.0",
29
+ "@searchspring/snap-logger": "^0.20.0",
30
+ "@searchspring/snap-profiler": "^0.20.0",
31
+ "@searchspring/snap-store-mobx": "^0.20.0",
32
+ "@searchspring/snap-tracker": "^0.20.0",
33
+ "@searchspring/snap-url-manager": "^0.20.0"
34
+ },
35
+ "sideEffects": false,
36
+ "files": [
37
+ "dist/**/*"
38
+ ],
39
+ "gitHead": "122405b27b497c7bb6a189c30535fdc197bc3ef0"
40
+ }