@webiny/db-dynamodb 5.25.0-beta.1 → 5.25.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/db-dynamodb",
3
- "version": "5.25.0-beta.1",
3
+ "version": "5.25.0-beta.2",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,11 +10,11 @@
10
10
  "author": "Webiny Ltd",
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@webiny/db": "5.25.0-beta.1",
14
- "@webiny/error": "5.25.0-beta.1",
15
- "@webiny/handler": "5.25.0-beta.1",
16
- "@webiny/handler-db": "5.25.0-beta.1",
17
- "@webiny/plugins": "5.25.0-beta.1",
13
+ "@webiny/db": "5.25.0-beta.2",
14
+ "@webiny/error": "5.25.0-beta.2",
15
+ "@webiny/handler": "5.25.0-beta.2",
16
+ "@webiny/handler-db": "5.25.0-beta.2",
17
+ "@webiny/plugins": "5.25.0-beta.2",
18
18
  "date-fns": "2.28.0",
19
19
  "dot-prop": "6.0.1",
20
20
  "fuse.js": "6.5.3",
@@ -25,8 +25,8 @@
25
25
  "@babel/cli": "^7.16.0",
26
26
  "@babel/core": "^7.16.0",
27
27
  "@types/is-number": "^7.0.2",
28
- "@webiny/cli": "^5.25.0-beta.1",
29
- "@webiny/project-utils": "^5.25.0-beta.1",
28
+ "@webiny/cli": "^5.25.0-beta.2",
29
+ "@webiny/project-utils": "^5.25.0-beta.2",
30
30
  "dynamodb-toolbox": "^0.3.4",
31
31
  "jest": "^26.6.3",
32
32
  "jest-dynalite": "^3.2.0",
@@ -42,5 +42,5 @@
42
42
  "build": "yarn webiny run build",
43
43
  "watch": "yarn webiny run watch"
44
44
  },
45
- "gitHead": "c5cbc36b39a28e3f1c58de7d768fdcd113ad8e15"
45
+ "gitHead": "ed2f22976af47aea0b6b5d638f8afdc39951b014"
46
46
  }
@@ -1,3 +1,3 @@
1
1
  import { Entity } from "dynamodb-toolbox";
2
- export declare const cleanupItem: <T>(entity: Entity<any>, item?: (T & Record<string, any>) | null | undefined, removeAttributes?: string[]) => T | null;
3
- export declare const cleanupItems: <T>(entity: Entity<any>, items: (T & Record<string, any>)[], removeAttributes?: string[]) => T[];
2
+ export declare function cleanupItem<T>(entity: Entity<any>, item?: (T & Record<string, any>) | null, removeAttributes?: string[]): T | null;
3
+ export declare function cleanupItems<T>(entity: Entity<any>, items: (T & Record<string, any>)[], removeAttributes?: string[]): T[];
package/utils/cleanup.js CHANGED
@@ -5,7 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.cleanupItems = exports.cleanupItem = void 0;
8
+ exports.cleanupItem = cleanupItem;
9
+ exports.cleanupItems = cleanupItems;
9
10
 
10
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
12
 
@@ -19,7 +20,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
19
20
  */
20
21
  const attributesToRemove = ["PK", "SK", "created", "_ct", "modified", "_mt", "entity", "_et", "GSI1_PK", "GSI1_SK", "TYPE"];
21
22
 
22
- const cleanupItem = (entity, item, removeAttributes = []) => {
23
+ function cleanupItem(entity, item, removeAttributes = []) {
23
24
  if (!item) {
24
25
  return null;
25
26
  }
@@ -42,12 +43,8 @@ const cleanupItem = (entity, item, removeAttributes = []) => {
42
43
  }
43
44
 
44
45
  return newItem;
45
- };
46
-
47
- exports.cleanupItem = cleanupItem;
46
+ }
48
47
 
49
- const cleanupItems = (entity, items, removeAttributes = []) => {
48
+ function cleanupItems(entity, items, removeAttributes = []) {
50
49
  return items.map(item => cleanupItem(entity, item, removeAttributes));
51
- };
52
-
53
- exports.cleanupItems = cleanupItems;
50
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["cleanup.ts"],"names":["attributesToRemove","cleanupItem","entity","item","removeAttributes","newItem","targets","concat","attributes","schema","key","hasOwnProperty","includes","cleanupItems","items","map"],"mappings":";;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA,MAAMA,kBAAkB,GAAG,CACvB,IADuB,EAEvB,IAFuB,EAGvB,SAHuB,EAIvB,KAJuB,EAKvB,UALuB,EAMvB,KANuB,EAOvB,QAPuB,EAQvB,KARuB,EASvB,SATuB,EAUvB,SAVuB,EAWvB,MAXuB,CAA3B;;AAcO,MAAMC,WAAW,GAAG,CACvBC,MADuB,EAEvBC,IAFuB,EAGvBC,gBAA0B,GAAG,EAHN,KAIZ;AACX,MAAI,CAACD,IAAL,EAAW;AACP,WAAO,IAAP;AACH;;AACD,QAAME,OAAO,qBACNF,IADM,CAAb;;AAGA,QAAMG,OAAO,GAAGN,kBAAkB,CAACO,MAAnB,CAA0BH,gBAA1B,CAAhB;AACA,QAAMI,UAAU,GAAGN,MAAM,CAACO,MAAP,CAAcD,UAAjC;;AACA,OAAK,MAAME,GAAX,IAAkBP,IAAlB,EAAwB;AACpB,QAAIA,IAAI,CAACQ,cAAL,CAAoBD,GAApB,MAA6B,KAAjC,EAAwC;AACpC;AACH;;AACD,QAAIF,UAAU,CAACE,GAAD,CAAV,IAAmBJ,OAAO,CAACM,QAAR,CAAiBF,GAAjB,MAA0B,KAAjD,EAAwD;AACpD;AACH;;AACD,WAAOL,OAAO,CAACK,GAAD,CAAd;AACH;;AACD,SAAOL,OAAP;AACH,CAvBM;;;;AAyBA,MAAMQ,YAAY,GAAG,CACxBX,MADwB,EAExBY,KAFwB,EAGxBV,gBAA0B,GAAG,EAHL,KAIlB;AACN,SAAOU,KAAK,CAACC,GAAN,CAAUZ,IAAI,IAAIF,WAAW,CAAIC,MAAJ,EAAYC,IAAZ,EAAkBC,gBAAlB,CAA7B,CAAP;AACH,CANM","sourcesContent":["import { Entity } from \"dynamodb-toolbox\";\n\n/**\n * The attributes defined by us or the dynamodb-toolbox library.\n * Add more attributes if necessary.\n */\nconst attributesToRemove = [\n \"PK\",\n \"SK\",\n \"created\",\n \"_ct\",\n \"modified\",\n \"_mt\",\n \"entity\",\n \"_et\",\n \"GSI1_PK\",\n \"GSI1_SK\",\n \"TYPE\"\n];\n\nexport const cleanupItem = <T>(\n entity: Entity<any>,\n item?: (T & Record<string, any>) | null,\n removeAttributes: string[] = []\n): T | null => {\n if (!item) {\n return null;\n }\n const newItem = {\n ...item\n };\n const targets = attributesToRemove.concat(removeAttributes);\n const attributes = entity.schema.attributes;\n for (const key in item) {\n if (item.hasOwnProperty(key) === false) {\n continue;\n }\n if (attributes[key] && targets.includes(key) === false) {\n continue;\n }\n delete newItem[key];\n }\n return newItem;\n};\n\nexport const cleanupItems = <T>(\n entity: Entity<any>,\n items: (T & Record<string, any>)[],\n removeAttributes: string[] = []\n): T[] => {\n return items.map(item => cleanupItem<T>(entity, item, removeAttributes) as T);\n};\n"]}
1
+ {"version":3,"sources":["cleanup.ts"],"names":["attributesToRemove","cleanupItem","entity","item","removeAttributes","newItem","targets","concat","attributes","schema","key","hasOwnProperty","includes","cleanupItems","items","map"],"mappings":";;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA,MAAMA,kBAAkB,GAAG,CACvB,IADuB,EAEvB,IAFuB,EAGvB,SAHuB,EAIvB,KAJuB,EAKvB,UALuB,EAMvB,KANuB,EAOvB,QAPuB,EAQvB,KARuB,EASvB,SATuB,EAUvB,SAVuB,EAWvB,MAXuB,CAA3B;;AAcO,SAASC,WAAT,CACHC,MADG,EAEHC,IAFG,EAGHC,gBAA0B,GAAG,EAH1B,EAIK;AACR,MAAI,CAACD,IAAL,EAAW;AACP,WAAO,IAAP;AACH;;AACD,QAAME,OAAO,qBACNF,IADM,CAAb;;AAGA,QAAMG,OAAO,GAAGN,kBAAkB,CAACO,MAAnB,CAA0BH,gBAA1B,CAAhB;AACA,QAAMI,UAAU,GAAGN,MAAM,CAACO,MAAP,CAAcD,UAAjC;;AACA,OAAK,MAAME,GAAX,IAAkBP,IAAlB,EAAwB;AACpB,QAAIA,IAAI,CAACQ,cAAL,CAAoBD,GAApB,MAA6B,KAAjC,EAAwC;AACpC;AACH;;AACD,QAAIF,UAAU,CAACE,GAAD,CAAV,IAAmBJ,OAAO,CAACM,QAAR,CAAiBF,GAAjB,MAA0B,KAAjD,EAAwD;AACpD;AACH;;AACD,WAAOL,OAAO,CAACK,GAAD,CAAd;AACH;;AACD,SAAOL,OAAP;AACH;;AAEM,SAASQ,YAAT,CACHX,MADG,EAEHY,KAFG,EAGHV,gBAA0B,GAAG,EAH1B,EAIA;AACH,SAAOU,KAAK,CAACC,GAAN,CAAUZ,IAAI,IAAIF,WAAW,CAAIC,MAAJ,EAAYC,IAAZ,EAAkBC,gBAAlB,CAA7B,CAAP;AACH","sourcesContent":["import { Entity } from \"dynamodb-toolbox\";\n\n/**\n * The attributes defined by us or the dynamodb-toolbox library.\n * Add more attributes if necessary.\n */\nconst attributesToRemove = [\n \"PK\",\n \"SK\",\n \"created\",\n \"_ct\",\n \"modified\",\n \"_mt\",\n \"entity\",\n \"_et\",\n \"GSI1_PK\",\n \"GSI1_SK\",\n \"TYPE\"\n];\n\nexport function cleanupItem<T>(\n entity: Entity<any>,\n item?: (T & Record<string, any>) | null,\n removeAttributes: string[] = []\n): T | null {\n if (!item) {\n return null;\n }\n const newItem = {\n ...item\n };\n const targets = attributesToRemove.concat(removeAttributes);\n const attributes = entity.schema.attributes;\n for (const key in item) {\n if (item.hasOwnProperty(key) === false) {\n continue;\n }\n if (attributes[key] && targets.includes(key) === false) {\n continue;\n }\n delete newItem[key];\n }\n return newItem;\n}\n\nexport function cleanupItems<T>(\n entity: Entity<any>,\n items: (T & Record<string, any>)[],\n removeAttributes: string[] = []\n): T[] {\n return items.map(item => cleanupItem<T>(entity, item, removeAttributes) as T);\n}\n"]}
package/utils/filter.d.ts CHANGED
@@ -9,4 +9,4 @@ export interface Params<T = any> {
9
9
  */
10
10
  fields: FieldPlugin[];
11
11
  }
12
- export declare const filterItems: <T = any>(params: Params<T>) => T[];
12
+ export declare function filterItems<T = any>(params: Params<T>): T[];
package/utils/filter.js CHANGED
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.filterItems = void 0;
8
+ exports.filterItems = filterItems;
9
9
 
10
10
  var _dotProp = _interopRequireDefault(require("dot-prop"));
11
11
 
@@ -199,7 +199,7 @@ const createFilterCallable = params => {
199
199
  };
200
200
  };
201
201
 
202
- const filterItems = params => {
202
+ function filterItems(params) {
203
203
  const filter = createFilterCallable(params);
204
204
  /**
205
205
  * No point in going through all the items when there are no filters to be applied.
@@ -210,6 +210,4 @@ const filterItems = params => {
210
210
  }
211
211
 
212
212
  return params.items.filter(filter);
213
- };
214
-
215
- exports.filterItems = filterItems;
213
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["filter.ts"],"names":["getMappedPlugins","params","plugins","byType","type","reduce","plugin","op","property","extractWhereArgs","key","result","split","field","shift","rawOp","length","join","operation","negate","match","replace","findFilterPlugin","WebinyError","multiSearchFieldOperations","createFilters","where","fields","keys","Object","filterPlugins","ValueFilterPlugin","filters","compareValue","undefined","includes","data","transformValue","paths","map","fieldPlugin","find","getField","value","getPath","push","filterPlugin","path","transform","Array","isArray","v","createFilterCallable","item","filter","some","dotProp","get","matched","matches","filterItems","items"],"mappings":"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","sourcesContent":["import dotProp from \"dot-prop\";\nimport WebinyError from \"@webiny/error\";\nimport { Plugin, PluginsContainer } from \"@webiny/plugins\";\nimport { ValueFilterPlugin } from \"~/plugins/definitions/ValueFilterPlugin\";\nimport { FieldPlugin } from \"~/plugins/definitions/FieldPlugin\";\nimport { DynamoDbContainsFilter } from \"~/types\";\n\ntype TransformValue = (value: any) => any;\n\nexport interface Params<T = any> {\n plugins: PluginsContainer;\n items: T[];\n where: Record<string, any>;\n /**\n * An array of fields that require some special operation.\n */\n fields: FieldPlugin[];\n}\n\ninterface MappedPluginParams<T extends Plugin = Plugin> {\n plugins: PluginsContainer;\n type: string;\n property: keyof T;\n}\n\ninterface Filter {\n compareValue: any;\n filterPlugin: ValueFilterPlugin;\n transformValue?: TransformValue;\n paths: string[];\n negate: boolean;\n}\n\nconst getMappedPlugins = <T extends Plugin>(params: MappedPluginParams<T>): Record<string, T> => {\n return params.plugins.byType<T>(params.type).reduce((plugins, plugin) => {\n /**\n * We expect op to be a string, that is why we cast.\n */\n const op = plugin[params.property] as unknown as string;\n plugins[op] = plugin;\n return plugins;\n }, {} as Record<string, T>);\n};\n\ninterface ExtractWhereArgsResult {\n field: string;\n operation: string;\n negate: boolean;\n}\nconst extractWhereArgs = (key: string): ExtractWhereArgsResult => {\n const result = key.split(\"_\");\n const field = result.shift() as string;\n const rawOp = result.length === 0 ? \"eq\" : result.join(\"_\");\n /**\n * When rawOp is not, it means it is equal negated so just return that.\n */\n if (rawOp === \"not\") {\n return {\n field,\n operation: \"eq\",\n negate: true\n };\n }\n const negate = rawOp.match(\"not_\") !== null;\n const operation = rawOp.replace(\"not_\", \"\");\n return {\n field,\n operation,\n negate\n };\n};\n\nconst findFilterPlugin = (\n plugins: Record<string, ValueFilterPlugin>,\n operation: string\n): ValueFilterPlugin => {\n if (plugins[operation]) {\n return plugins[operation];\n }\n throw new WebinyError(`Missing filter plugin definition.`, \"FILTER_PLUGIN_ERROR\", {\n operation\n });\n};\n\nconst multiSearchFieldOperations = [\"contains\", \"fuzzy\"];\n\nconst createFilters = (params: Omit<Params, \"items\">): Filter[] => {\n const { plugins, where, fields } = params;\n\n const keys = Object.keys(where);\n /**\n * Skip everything if there are no conditions to be applied.\n */\n if (keys.length === 0) {\n return [];\n }\n const filterPlugins = getMappedPlugins<ValueFilterPlugin>({\n plugins,\n type: ValueFilterPlugin.type,\n property: \"operation\"\n });\n\n return keys.reduce((filters, key) => {\n const compareValue = where[key];\n if (compareValue === undefined) {\n return filters;\n }\n /**\n * @see DynamoDbContainsFilter\n */\n if (multiSearchFieldOperations.includes(key) === true) {\n const data: DynamoDbContainsFilter = compareValue;\n let transformValue: TransformValue | undefined = undefined;\n const paths = data.fields.map(field => {\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n return fieldPlugin.getPath();\n }\n return field;\n });\n filters.push({\n compareValue: data.value,\n filterPlugin: findFilterPlugin(filterPlugins, key),\n transformValue,\n paths,\n negate: false\n });\n return filters;\n }\n\n const { field, operation, negate } = extractWhereArgs(key);\n\n const filterPlugin = findFilterPlugin(filterPlugins, operation);\n\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n let path: string = field;\n let transformValue: TransformValue | undefined = undefined;\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n path = fieldPlugin.getPath();\n }\n\n filters.push({\n compareValue,\n filterPlugin,\n transformValue,\n paths: [path],\n negate\n });\n\n return filters;\n }, [] as Filter[]);\n};\n/**\n * Transforms the value with given transformer callable.\n */\nconst transform = (value: any, transformValue?: TransformValue): any => {\n if (!transformValue) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(v => transformValue(v));\n }\n return transformValue(value);\n};\n/**\n * Creates a filter callable that we can send to the .filter() method of the array.\n */\nconst createFilterCallable = (params: Omit<Params, \"items\">): ((item: any) => boolean) | null => {\n const filters = createFilters(params);\n /**\n * Just return null so there are no filters to be applied.\n * Later in the code we check for null so we do not loop through the items.\n */\n if (filters.length === 0) {\n return null;\n }\n\n return (item: any) => {\n for (const filter of filters) {\n const result = filter.paths.some(path => {\n const value = transform(dotProp.get(item, path), filter.transformValue);\n const compareValue = transform(filter.compareValue, filter.transformValue);\n const matched = filter.filterPlugin.matches({\n value,\n compareValue\n });\n\n return filter.negate ? !matched : matched;\n });\n if (result === false) {\n return false;\n }\n }\n return true;\n };\n};\n\nexport const filterItems = <T = any>(params: Params<T>): T[] => {\n const filter = createFilterCallable(params);\n /**\n * No point in going through all the items when there are no filters to be applied.\n */\n if (!filter) {\n return params.items;\n }\n return params.items.filter(filter);\n};\n"]}
1
+ {"version":3,"sources":["filter.ts"],"names":["getMappedPlugins","params","plugins","byType","type","reduce","plugin","op","property","extractWhereArgs","key","result","split","field","shift","rawOp","length","join","operation","negate","match","replace","findFilterPlugin","WebinyError","multiSearchFieldOperations","createFilters","where","fields","keys","Object","filterPlugins","ValueFilterPlugin","filters","compareValue","undefined","includes","data","transformValue","paths","map","fieldPlugin","find","getField","value","getPath","push","filterPlugin","path","transform","Array","isArray","v","createFilterCallable","item","filter","some","dotProp","get","matched","matches","filterItems","items"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AA8BA,MAAMA,gBAAgB,GAAsBC,MAAnB,IAAwE;AAC7F,SAAOA,MAAM,CAACC,OAAP,CAAeC,MAAf,CAAyBF,MAAM,CAACG,IAAhC,EAAsCC,MAAtC,CAA6C,CAACH,OAAD,EAAUI,MAAV,KAAqB;AACrE;AACR;AACA;AACQ,UAAMC,EAAE,GAAGD,MAAM,CAACL,MAAM,CAACO,QAAR,CAAjB;AACAN,IAAAA,OAAO,CAACK,EAAD,CAAP,GAAcD,MAAd;AACA,WAAOJ,OAAP;AACH,GAPM,EAOJ,EAPI,CAAP;AAQH,CATD;;AAgBA,MAAMO,gBAAgB,GAAIC,GAAD,IAAyC;AAC9D,QAAMC,MAAM,GAAGD,GAAG,CAACE,KAAJ,CAAU,GAAV,CAAf;AACA,QAAMC,KAAK,GAAGF,MAAM,CAACG,KAAP,EAAd;AACA,QAAMC,KAAK,GAAGJ,MAAM,CAACK,MAAP,KAAkB,CAAlB,GAAsB,IAAtB,GAA6BL,MAAM,CAACM,IAAP,CAAY,GAAZ,CAA3C;AACA;AACJ;AACA;;AACI,MAAIF,KAAK,KAAK,KAAd,EAAqB;AACjB,WAAO;AACHF,MAAAA,KADG;AAEHK,MAAAA,SAAS,EAAE,IAFR;AAGHC,MAAAA,MAAM,EAAE;AAHL,KAAP;AAKH;;AACD,QAAMA,MAAM,GAAGJ,KAAK,CAACK,KAAN,CAAY,MAAZ,MAAwB,IAAvC;AACA,QAAMF,SAAS,GAAGH,KAAK,CAACM,OAAN,CAAc,MAAd,EAAsB,EAAtB,CAAlB;AACA,SAAO;AACHR,IAAAA,KADG;AAEHK,IAAAA,SAFG;AAGHC,IAAAA;AAHG,GAAP;AAKH,CArBD;;AAuBA,MAAMG,gBAAgB,GAAG,CACrBpB,OADqB,EAErBgB,SAFqB,KAGD;AACpB,MAAIhB,OAAO,CAACgB,SAAD,CAAX,EAAwB;AACpB,WAAOhB,OAAO,CAACgB,SAAD,CAAd;AACH;;AACD,QAAM,IAAIK,cAAJ,CAAiB,mCAAjB,EAAqD,qBAArD,EAA4E;AAC9EL,IAAAA;AAD8E,GAA5E,CAAN;AAGH,CAVD;;AAYA,MAAMM,0BAA0B,GAAG,CAAC,UAAD,EAAa,OAAb,CAAnC;;AAEA,MAAMC,aAAa,GAAIxB,MAAD,IAA6C;AAC/D,QAAM;AAAEC,IAAAA,OAAF;AAAWwB,IAAAA,KAAX;AAAkBC,IAAAA;AAAlB,MAA6B1B,MAAnC;AAEA,QAAM2B,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAYF,KAAZ,CAAb;AACA;AACJ;AACA;;AACI,MAAIE,IAAI,CAACZ,MAAL,KAAgB,CAApB,EAAuB;AACnB,WAAO,EAAP;AACH;;AACD,QAAMc,aAAa,GAAG9B,gBAAgB,CAAoB;AACtDE,IAAAA,OADsD;AAEtDE,IAAAA,IAAI,EAAE2B,qCAAkB3B,IAF8B;AAGtDI,IAAAA,QAAQ,EAAE;AAH4C,GAApB,CAAtC;AAMA,SAAOoB,IAAI,CAACvB,MAAL,CAAY,CAAC2B,OAAD,EAAUtB,GAAV,KAAkB;AACjC,UAAMuB,YAAY,GAAGP,KAAK,CAAChB,GAAD,CAA1B;;AACA,QAAIuB,YAAY,KAAKC,SAArB,EAAgC;AAC5B,aAAOF,OAAP;AACH;AACD;AACR;AACA;;;AACQ,QAAIR,0BAA0B,CAACW,QAA3B,CAAoCzB,GAApC,MAA6C,IAAjD,EAAuD;AACnD,YAAM0B,IAA4B,GAAGH,YAArC;AACA,UAAII,cAA0C,GAAGH,SAAjD;AACA,YAAMI,KAAK,GAAGF,IAAI,CAACT,MAAL,CAAYY,GAAZ,CAAgB1B,KAAK,IAAI;AACnC,cAAM2B,WAAW,GAAGb,MAAM,CAACc,IAAP,CAAYnC,MAAM,IAAIA,MAAM,CAACoC,QAAP,OAAsB7B,KAA5C,CAApB;;AACA,YAAI2B,WAAJ,EAAiB;AACbH,UAAAA,cAAc,GAAIM,KAAD,IAAgB;AAC7B,mBAAOH,WAAW,CAACH,cAAZ,CAA2BM,KAA3B,CAAP;AACH,WAFD;;AAGA,iBAAOH,WAAW,CAACI,OAAZ,EAAP;AACH;;AACD,eAAO/B,KAAP;AACH,OATa,CAAd;AAUAmB,MAAAA,OAAO,CAACa,IAAR,CAAa;AACTZ,QAAAA,YAAY,EAAEG,IAAI,CAACO,KADV;AAETG,QAAAA,YAAY,EAAExB,gBAAgB,CAACQ,aAAD,EAAgBpB,GAAhB,CAFrB;AAGT2B,QAAAA,cAHS;AAITC,QAAAA,KAJS;AAKTnB,QAAAA,MAAM,EAAE;AALC,OAAb;AAOA,aAAOa,OAAP;AACH;;AAED,UAAM;AAAEnB,MAAAA,KAAF;AAASK,MAAAA,SAAT;AAAoBC,MAAAA;AAApB,QAA+BV,gBAAgB,CAACC,GAAD,CAArD;AAEA,UAAMoC,YAAY,GAAGxB,gBAAgB,CAACQ,aAAD,EAAgBZ,SAAhB,CAArC;AAEA,UAAMsB,WAAW,GAAGb,MAAM,CAACc,IAAP,CAAYnC,MAAM,IAAIA,MAAM,CAACoC,QAAP,OAAsB7B,KAA5C,CAApB;AACA,QAAIkC,IAAY,GAAGlC,KAAnB;AACA,QAAIwB,cAA0C,GAAGH,SAAjD;;AACA,QAAIM,WAAJ,EAAiB;AACbH,MAAAA,cAAc,GAAIM,KAAD,IAAgB;AAC7B,eAAOH,WAAW,CAACH,cAAZ,CAA2BM,KAA3B,CAAP;AACH,OAFD;;AAGAI,MAAAA,IAAI,GAAGP,WAAW,CAACI,OAAZ,EAAP;AACH;;AAEDZ,IAAAA,OAAO,CAACa,IAAR,CAAa;AACTZ,MAAAA,YADS;AAETa,MAAAA,YAFS;AAGTT,MAAAA,cAHS;AAITC,MAAAA,KAAK,EAAE,CAACS,IAAD,CAJE;AAKT5B,MAAAA;AALS,KAAb;AAQA,WAAOa,OAAP;AACH,GAtDM,EAsDJ,EAtDI,CAAP;AAuDH,CAvED;AAwEA;AACA;AACA;;;AACA,MAAMgB,SAAS,GAAG,CAACL,KAAD,EAAaN,cAAb,KAAsD;AACpE,MAAI,CAACA,cAAL,EAAqB;AACjB,WAAOM,KAAP;AACH;;AACD,MAAIM,KAAK,CAACC,OAAN,CAAcP,KAAd,CAAJ,EAA0B;AACtB,WAAOA,KAAK,CAACJ,GAAN,CAAUY,CAAC,IAAId,cAAc,CAACc,CAAD,CAA7B,CAAP;AACH;;AACD,SAAOd,cAAc,CAACM,KAAD,CAArB;AACH,CARD;AASA;AACA;AACA;;;AACA,MAAMS,oBAAoB,GAAInD,MAAD,IAAoE;AAC7F,QAAM+B,OAAO,GAAGP,aAAa,CAACxB,MAAD,CAA7B;AACA;AACJ;AACA;AACA;;AACI,MAAI+B,OAAO,CAAChB,MAAR,KAAmB,CAAvB,EAA0B;AACtB,WAAO,IAAP;AACH;;AAED,SAAQqC,IAAD,IAAe;AAClB,SAAK,MAAMC,MAAX,IAAqBtB,OAArB,EAA8B;AAC1B,YAAMrB,MAAM,GAAG2C,MAAM,CAAChB,KAAP,CAAaiB,IAAb,CAAkBR,IAAI,IAAI;AACrC,cAAMJ,KAAK,GAAGK,SAAS,CAACQ,iBAAQC,GAAR,CAAYJ,IAAZ,EAAkBN,IAAlB,CAAD,EAA0BO,MAAM,CAACjB,cAAjC,CAAvB;AACA,cAAMJ,YAAY,GAAGe,SAAS,CAACM,MAAM,CAACrB,YAAR,EAAsBqB,MAAM,CAACjB,cAA7B,CAA9B;AACA,cAAMqB,OAAO,GAAGJ,MAAM,CAACR,YAAP,CAAoBa,OAApB,CAA4B;AACxChB,UAAAA,KADwC;AAExCV,UAAAA;AAFwC,SAA5B,CAAhB;AAKA,eAAOqB,MAAM,CAACnC,MAAP,GAAgB,CAACuC,OAAjB,GAA2BA,OAAlC;AACH,OATc,CAAf;;AAUA,UAAI/C,MAAM,KAAK,KAAf,EAAsB;AAClB,eAAO,KAAP;AACH;AACJ;;AACD,WAAO,IAAP;AACH,GAjBD;AAkBH,CA5BD;;AA8BO,SAASiD,WAAT,CAA8B3D,MAA9B,EAAsD;AACzD,QAAMqD,MAAM,GAAGF,oBAAoB,CAACnD,MAAD,CAAnC;AACA;AACJ;AACA;;AACI,MAAI,CAACqD,MAAL,EAAa;AACT,WAAOrD,MAAM,CAAC4D,KAAd;AACH;;AACD,SAAO5D,MAAM,CAAC4D,KAAP,CAAaP,MAAb,CAAoBA,MAApB,CAAP;AACH","sourcesContent":["import dotProp from \"dot-prop\";\nimport WebinyError from \"@webiny/error\";\nimport { Plugin, PluginsContainer } from \"@webiny/plugins\";\nimport { ValueFilterPlugin } from \"~/plugins/definitions/ValueFilterPlugin\";\nimport { FieldPlugin } from \"~/plugins/definitions/FieldPlugin\";\nimport { DynamoDbContainsFilter } from \"~/types\";\n\ntype TransformValue = (value: any) => any;\n\nexport interface Params<T = any> {\n plugins: PluginsContainer;\n items: T[];\n where: Record<string, any>;\n /**\n * An array of fields that require some special operation.\n */\n fields: FieldPlugin[];\n}\n\ninterface MappedPluginParams<T extends Plugin = Plugin> {\n plugins: PluginsContainer;\n type: string;\n property: keyof T;\n}\n\ninterface Filter {\n compareValue: any;\n filterPlugin: ValueFilterPlugin;\n transformValue?: TransformValue;\n paths: string[];\n negate: boolean;\n}\n\nconst getMappedPlugins = <T extends Plugin>(params: MappedPluginParams<T>): Record<string, T> => {\n return params.plugins.byType<T>(params.type).reduce((plugins, plugin) => {\n /**\n * We expect op to be a string, that is why we cast.\n */\n const op = plugin[params.property] as unknown as string;\n plugins[op] = plugin;\n return plugins;\n }, {} as Record<string, T>);\n};\n\ninterface ExtractWhereArgsResult {\n field: string;\n operation: string;\n negate: boolean;\n}\nconst extractWhereArgs = (key: string): ExtractWhereArgsResult => {\n const result = key.split(\"_\");\n const field = result.shift() as string;\n const rawOp = result.length === 0 ? \"eq\" : result.join(\"_\");\n /**\n * When rawOp is not, it means it is equal negated so just return that.\n */\n if (rawOp === \"not\") {\n return {\n field,\n operation: \"eq\",\n negate: true\n };\n }\n const negate = rawOp.match(\"not_\") !== null;\n const operation = rawOp.replace(\"not_\", \"\");\n return {\n field,\n operation,\n negate\n };\n};\n\nconst findFilterPlugin = (\n plugins: Record<string, ValueFilterPlugin>,\n operation: string\n): ValueFilterPlugin => {\n if (plugins[operation]) {\n return plugins[operation];\n }\n throw new WebinyError(`Missing filter plugin definition.`, \"FILTER_PLUGIN_ERROR\", {\n operation\n });\n};\n\nconst multiSearchFieldOperations = [\"contains\", \"fuzzy\"];\n\nconst createFilters = (params: Omit<Params, \"items\">): Filter[] => {\n const { plugins, where, fields } = params;\n\n const keys = Object.keys(where);\n /**\n * Skip everything if there are no conditions to be applied.\n */\n if (keys.length === 0) {\n return [];\n }\n const filterPlugins = getMappedPlugins<ValueFilterPlugin>({\n plugins,\n type: ValueFilterPlugin.type,\n property: \"operation\"\n });\n\n return keys.reduce((filters, key) => {\n const compareValue = where[key];\n if (compareValue === undefined) {\n return filters;\n }\n /**\n * @see DynamoDbContainsFilter\n */\n if (multiSearchFieldOperations.includes(key) === true) {\n const data: DynamoDbContainsFilter = compareValue;\n let transformValue: TransformValue | undefined = undefined;\n const paths = data.fields.map(field => {\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n return fieldPlugin.getPath();\n }\n return field;\n });\n filters.push({\n compareValue: data.value,\n filterPlugin: findFilterPlugin(filterPlugins, key),\n transformValue,\n paths,\n negate: false\n });\n return filters;\n }\n\n const { field, operation, negate } = extractWhereArgs(key);\n\n const filterPlugin = findFilterPlugin(filterPlugins, operation);\n\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n let path: string = field;\n let transformValue: TransformValue | undefined = undefined;\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n path = fieldPlugin.getPath();\n }\n\n filters.push({\n compareValue,\n filterPlugin,\n transformValue,\n paths: [path],\n negate\n });\n\n return filters;\n }, [] as Filter[]);\n};\n/**\n * Transforms the value with given transformer callable.\n */\nconst transform = (value: any, transformValue?: TransformValue): any => {\n if (!transformValue) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(v => transformValue(v));\n }\n return transformValue(value);\n};\n/**\n * Creates a filter callable that we can send to the .filter() method of the array.\n */\nconst createFilterCallable = (params: Omit<Params, \"items\">): ((item: any) => boolean) | null => {\n const filters = createFilters(params);\n /**\n * Just return null so there are no filters to be applied.\n * Later in the code we check for null so we do not loop through the items.\n */\n if (filters.length === 0) {\n return null;\n }\n\n return (item: any) => {\n for (const filter of filters) {\n const result = filter.paths.some(path => {\n const value = transform(dotProp.get(item, path), filter.transformValue);\n const compareValue = transform(filter.compareValue, filter.transformValue);\n const matched = filter.filterPlugin.matches({\n value,\n compareValue\n });\n\n return filter.negate ? !matched : matched;\n });\n if (result === false) {\n return false;\n }\n }\n return true;\n };\n};\n\nexport function filterItems<T = any>(params: Params<T>): T[] {\n const filter = createFilterCallable(params);\n /**\n * No point in going through all the items when there are no filters to be applied.\n */\n if (!filter) {\n return params.items;\n }\n return params.items.filter(filter);\n}\n"]}
@@ -9,5 +9,5 @@ interface CreateListResponseParams<T> {
9
9
  totalCount: number;
10
10
  limit: number;
11
11
  }
12
- export declare const createListResponse: <T>(params: CreateListResponseParams<T>) => [T[], MetaResponse];
12
+ export declare function createListResponse<T>(params: CreateListResponseParams<T>): [T[], MetaResponse];
13
13
  export {};
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createListResponse = void 0;
6
+ exports.createListResponse = createListResponse;
7
7
 
8
8
  var _cursor = require("./cursor");
9
9
 
10
- const createListResponse = params => {
10
+ function createListResponse(params) {
11
11
  const {
12
12
  items: initialItems,
13
13
  after,
@@ -30,6 +30,4 @@ const createListResponse = params => {
30
30
  cursor
31
31
  };
32
32
  return [items, meta];
33
- };
34
-
35
- exports.createListResponse = createListResponse;
33
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["listResponse.ts"],"names":["createListResponse","params","items","initialItems","after","totalCount","limit","start","Number","isNaN","hasMoreItems","end","undefined","slice","cursor","length","meta"],"mappings":";;;;;;;AAAA;;AAeO,MAAMA,kBAAkB,GAAOC,MAAJ,IAAiE;AAC/F,QAAM;AAAEC,IAAAA,KAAK,EAAEC,YAAT;AAAuBC,IAAAA,KAAvB;AAA8BC,IAAAA,UAA9B;AAA0CC,IAAAA;AAA1C,MAAoDL,MAA1D;AACA,MAAIM,KAAK,GAAGC,MAAM,CAAC,0BAAaJ,KAAb,CAAD,CAAlB;;AACA,MAAIK,KAAK,CAACF,KAAD,CAAL,KAAiB,IAArB,EAA2B;AACvBA,IAAAA,KAAK,GAAG,CAAR;AACH;;AACD,QAAMG,YAAY,GAAGL,UAAU,GAAGE,KAAK,GAAGD,KAA1C;AACA,QAAMK,GAAG,GAAGL,KAAK,GAAGD,UAAU,GAAGE,KAAb,GAAqBD,KAA7B,GAAqCM,SAArC,GAAiDL,KAAK,GAAGD,KAArE;AACA,QAAMJ,KAAK,GAAGS,GAAG,GAAGR,YAAY,CAACU,KAAb,CAAmBN,KAAnB,EAA0BI,GAA1B,CAAH,GAAoCR,YAArD;AAEA,QAAMW,MAAM,GAAGZ,KAAK,CAACa,MAAN,GAAe,CAAf,GAAmB,0BAAaR,KAAK,GAAGD,KAArB,CAAnB,GAAiD,IAAhE;AAEA,QAAMU,IAAI,GAAG;AACTN,IAAAA,YADS;AAETL,IAAAA,UAFS;AAGTS,IAAAA;AAHS,GAAb;AAMA,SAAO,CAACZ,KAAD,EAAQc,IAAR,CAAP;AACH,CAnBM","sourcesContent":["import { decodeCursor, encodeCursor } from \"~/utils/cursor\";\n\ninterface MetaResponse {\n cursor: string | null;\n totalCount: number;\n hasMoreItems: boolean;\n}\n\ninterface CreateListResponseParams<T> {\n items: T[];\n after?: string | null;\n totalCount: number;\n limit: number;\n}\n\nexport const createListResponse = <T>(params: CreateListResponseParams<T>): [T[], MetaResponse] => {\n const { items: initialItems, after, totalCount, limit } = params;\n let start = Number(decodeCursor(after));\n if (isNaN(start) === true) {\n start = 0;\n }\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const items = end ? initialItems.slice(start, end) : initialItems;\n\n const cursor = items.length > 0 ? encodeCursor(start + limit) : null;\n\n const meta = {\n hasMoreItems,\n totalCount,\n cursor\n };\n\n return [items, meta];\n};\n"]}
1
+ {"version":3,"sources":["listResponse.ts"],"names":["createListResponse","params","items","initialItems","after","totalCount","limit","start","Number","isNaN","hasMoreItems","end","undefined","slice","cursor","length","meta"],"mappings":";;;;;;;AAAA;;AAeO,SAASA,kBAAT,CAA+BC,MAA/B,EAAyF;AAC5F,QAAM;AAAEC,IAAAA,KAAK,EAAEC,YAAT;AAAuBC,IAAAA,KAAvB;AAA8BC,IAAAA,UAA9B;AAA0CC,IAAAA;AAA1C,MAAoDL,MAA1D;AACA,MAAIM,KAAK,GAAGC,MAAM,CAAC,0BAAaJ,KAAb,CAAD,CAAlB;;AACA,MAAIK,KAAK,CAACF,KAAD,CAAL,KAAiB,IAArB,EAA2B;AACvBA,IAAAA,KAAK,GAAG,CAAR;AACH;;AACD,QAAMG,YAAY,GAAGL,UAAU,GAAGE,KAAK,GAAGD,KAA1C;AACA,QAAMK,GAAG,GAAGL,KAAK,GAAGD,UAAU,GAAGE,KAAb,GAAqBD,KAA7B,GAAqCM,SAArC,GAAiDL,KAAK,GAAGD,KAArE;AACA,QAAMJ,KAAK,GAAGS,GAAG,GAAGR,YAAY,CAACU,KAAb,CAAmBN,KAAnB,EAA0BI,GAA1B,CAAH,GAAoCR,YAArD;AAEA,QAAMW,MAAM,GAAGZ,KAAK,CAACa,MAAN,GAAe,CAAf,GAAmB,0BAAaR,KAAK,GAAGD,KAArB,CAAnB,GAAiD,IAAhE;AAEA,QAAMU,IAAI,GAAG;AACTN,IAAAA,YADS;AAETL,IAAAA,UAFS;AAGTS,IAAAA;AAHS,GAAb;AAMA,SAAO,CAACZ,KAAD,EAAQc,IAAR,CAAP;AACH","sourcesContent":["import { decodeCursor, encodeCursor } from \"~/utils/cursor\";\n\ninterface MetaResponse {\n cursor: string | null;\n totalCount: number;\n hasMoreItems: boolean;\n}\n\ninterface CreateListResponseParams<T> {\n items: T[];\n after?: string | null;\n totalCount: number;\n limit: number;\n}\n\nexport function createListResponse<T>(params: CreateListResponseParams<T>): [T[], MetaResponse] {\n const { items: initialItems, after, totalCount, limit } = params;\n let start = Number(decodeCursor(after));\n if (isNaN(start) === true) {\n start = 0;\n }\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const items = end ? initialItems.slice(start, end) : initialItems;\n\n const cursor = items.length > 0 ? encodeCursor(start + limit) : null;\n\n const meta = {\n hasMoreItems,\n totalCount,\n cursor\n };\n\n return [items, meta];\n}\n"]}
package/utils/sort.d.ts CHANGED
@@ -13,5 +13,5 @@ interface Params<T> {
13
13
  */
14
14
  fields?: FieldPlugin[];
15
15
  }
16
- export declare const sortItems: <T = any>(params: Params<T>) => T[];
16
+ export declare function sortItems<T = any>(params: Params<T>): T[];
17
17
  export {};
package/utils/sort.js CHANGED
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.sortItems = void 0;
8
+ exports.sortItems = sortItems;
9
9
 
10
10
  var _orderBy = _interopRequireDefault(require("lodash/orderBy"));
11
11
 
@@ -46,7 +46,7 @@ const extractSort = (sortBy, fields) => {
46
46
  };
47
47
  };
48
48
 
49
- const sortItems = params => {
49
+ function sortItems(params) {
50
50
  const {
51
51
  items,
52
52
  sort: initialSort = [],
@@ -88,6 +88,4 @@ const sortItems = params => {
88
88
  }
89
89
 
90
90
  return (0, _orderBy.default)(items, info.sorters, info.orders);
91
- };
92
-
93
- exports.sortItems = sortItems;
91
+ }
package/utils/sort.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["sort.ts"],"names":["extractSort","sortBy","fields","result","split","length","WebinyError","field","order","fieldPlugin","find","f","getField","isSortable","reverse","toUpperCase","sortItems","params","items","sort","initialSort","Array","isArray","info","sorters","orders","path","getPath","push"],"mappings":";;;;;;;;;AAAA;;AACA;;AAaA,MAAMA,WAAW,GAAG,CAACC,MAAD,EAAiBC,MAAjB,KAAqD;AACrE,QAAMC,MAAM,GAAGF,MAAM,CAACG,KAAP,CAAa,GAAb,CAAf;;AACA,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACrB,UAAM,IAAIC,cAAJ,CACF,yDADE,EAEF,YAFE,EAGF;AACIL,MAAAA;AADJ,KAHE,CAAN;AAOH;;AACD,QAAM,CAACM,KAAD,EAAQC,KAAR,IAAiBL,MAAvB;;AAEA,MAAI,CAACI,KAAL,EAAY;AACR,UAAM,IAAID,cAAJ,CAAgB,+BAAhB,EAAiD,qBAAjD,EAAwE;AAC1EC,MAAAA,KAD0E;AAE1EC,MAAAA,KAF0E;AAG1EN,MAAAA;AAH0E,KAAxE,CAAN;AAKH;;AACD,QAAMO,WAAW,GAAGP,MAAM,CAACQ,IAAP,CAAYC,CAAC,IAAIA,CAAC,CAACC,QAAF,OAAiBL,KAAlC,CAApB;AACA,QAAMM,UAAU,GAAGJ,WAAW,GAAGA,WAAW,CAACI,UAAZ,EAAH,GAA8B,IAA5D;;AACA,MAAIA,UAAU,KAAK,KAAnB,EAA0B;AACtB,UAAM,IAAIP,cAAJ,CAAiB,gCAA+BC,KAAM,IAAtD,EAA2D,wBAA3D,EAAqF;AACvFL,MAAAA,MADuF;AAEvFK,MAAAA;AAFuF,KAArF,CAAN;AAIH;;AAED,SAAO;AACHA,IAAAA,KADG;AAEHO,IAAAA,OAAO,EAAEN,KAAK,CAACO,WAAN,OAAwB;AAF9B,GAAP;AAIH,CAjCD;;AAkDO,MAAMC,SAAS,GAAaC,MAAV,IAAqC;AAC1D,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,IAAI,EAAEC,WAAW,GAAG,EAA7B;AAAiClB,IAAAA,MAAM,GAAG;AAA1C,MAAiDe,MAAvD;AACA;AACJ;AACA;;AACI,MAAIC,KAAK,CAACb,MAAN,IAAgB,CAAhB,IAAqBgB,KAAK,CAACC,OAAN,CAAcF,WAAd,MAA+B,KAApD,IAA6DA,WAAW,CAACf,MAAZ,KAAuB,CAAxF,EAA2F;AACvF,WAAOa,KAAP;AACH;;AAED,QAAMK,IAAU,GAAG;AACfC,IAAAA,OAAO,EAAE,EADM;AAEfC,IAAAA,MAAM,EAAE;AAFO,GAAnB;;AAKA,OAAK,MAAMN,IAAX,IAAmBC,WAAnB,EAAgC;AAC5B;AACR;AACA;AACQ,QAAI,CAACD,IAAL,EAAW;AACP;AACH;;AACD,UAAM;AAAEZ,MAAAA,KAAF;AAASO,MAAAA;AAAT,QAAqBd,WAAW,CAACmB,IAAD,EAAOjB,MAAP,CAAtC;AACA,UAAMO,WAAW,GAAGP,MAAM,CAACQ,IAAP,CAAYC,CAAC,IAAIA,CAAC,CAACC,QAAF,OAAiBL,KAAlC,CAApB;AACA,UAAMmB,IAAI,GAAGjB,WAAW,GAAGA,WAAW,CAACkB,OAAZ,EAAH,GAA2BpB,KAAnD;AAEAgB,IAAAA,IAAI,CAACC,OAAL,CAAaI,IAAb,CAAkBF,IAAlB;AACAH,IAAAA,IAAI,CAACE,MAAL,CAAYG,IAAZ,CAAiBd,OAAO,KAAK,IAAZ,GAAmB,MAAnB,GAA4B,KAA7C;AACH;;AAED,MAAIS,IAAI,CAACC,OAAL,CAAanB,MAAb,KAAwB,CAA5B,EAA+B;AAC3B,WAAOa,KAAP;AACH;;AAED,SAAO,sBAAcA,KAAd,EAAqBK,IAAI,CAACC,OAA1B,EAAmCD,IAAI,CAACE,MAAxC,CAAP;AACH,CAlCM","sourcesContent":["import lodashOrderBy from \"lodash/orderBy\";\nimport WebinyError from \"@webiny/error\";\nimport { FieldPlugin } from \"~/plugins/definitions/FieldPlugin\";\n\ninterface Info {\n sorters: string[];\n orders: (boolean | \"asc\" | \"desc\")[];\n}\n\ninterface Response {\n reverse: boolean;\n field: string;\n}\n\nconst extractSort = (sortBy: string, fields: FieldPlugin[]): Response => {\n const result = sortBy.split(\"_\");\n if (result.length !== 2) {\n throw new WebinyError(\n \"Problem in determining the sorting for the entry items.\",\n \"SORT_ERROR\",\n {\n sortBy\n }\n );\n }\n const [field, order] = result;\n\n if (!field) {\n throw new WebinyError(\"Sorting field does not exist.\", \"SORTING_FIELD_ERROR\", {\n field,\n order,\n fields\n });\n }\n const fieldPlugin = fields.find(f => f.getField() === field);\n const isSortable = fieldPlugin ? fieldPlugin.isSortable() : true;\n if (isSortable === false) {\n throw new WebinyError(`Cannot sort by given field: \"${field}\".`, \"UNSUPPORTED_SORT_ERROR\", {\n fields,\n field\n });\n }\n\n return {\n field,\n reverse: order.toUpperCase() === \"DESC\"\n };\n};\n\ninterface Params<T> {\n /**\n * The items we are sorting.\n */\n items: T[];\n /**\n * Sort options. For example: [\"id_ASC\"]\n */\n sort?: string[];\n /**\n * Fields we can sort by.\n */\n fields?: FieldPlugin[];\n}\n\nexport const sortItems = <T = any>(params: Params<T>): T[] => {\n const { items, sort: initialSort = [], fields = [] } = params;\n /**\n * Skip sorting if nothing was passed to sort by or nothing to sort.\n */\n if (items.length <= 1 || Array.isArray(initialSort) === false || initialSort.length === 0) {\n return items;\n }\n\n const info: Info = {\n sorters: [],\n orders: []\n };\n\n for (const sort of initialSort) {\n /**\n * Possibly empty array item was passed.\n */\n if (!sort) {\n continue;\n }\n const { field, reverse } = extractSort(sort, fields);\n const fieldPlugin = fields.find(f => f.getField() === field);\n const path = fieldPlugin ? fieldPlugin.getPath() : field;\n\n info.sorters.push(path);\n info.orders.push(reverse === true ? \"desc\" : \"asc\");\n }\n\n if (info.sorters.length === 0) {\n return items;\n }\n\n return lodashOrderBy(items, info.sorters, info.orders);\n};\n"]}
1
+ {"version":3,"sources":["sort.ts"],"names":["extractSort","sortBy","fields","result","split","length","WebinyError","field","order","fieldPlugin","find","f","getField","isSortable","reverse","toUpperCase","sortItems","params","items","sort","initialSort","Array","isArray","info","sorters","orders","path","getPath","push"],"mappings":";;;;;;;;;AAAA;;AACA;;AAaA,MAAMA,WAAW,GAAG,CAACC,MAAD,EAAiBC,MAAjB,KAAqD;AACrE,QAAMC,MAAM,GAAGF,MAAM,CAACG,KAAP,CAAa,GAAb,CAAf;;AACA,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACrB,UAAM,IAAIC,cAAJ,CACF,yDADE,EAEF,YAFE,EAGF;AACIL,MAAAA;AADJ,KAHE,CAAN;AAOH;;AACD,QAAM,CAACM,KAAD,EAAQC,KAAR,IAAiBL,MAAvB;;AAEA,MAAI,CAACI,KAAL,EAAY;AACR,UAAM,IAAID,cAAJ,CAAgB,+BAAhB,EAAiD,qBAAjD,EAAwE;AAC1EC,MAAAA,KAD0E;AAE1EC,MAAAA,KAF0E;AAG1EN,MAAAA;AAH0E,KAAxE,CAAN;AAKH;;AACD,QAAMO,WAAW,GAAGP,MAAM,CAACQ,IAAP,CAAYC,CAAC,IAAIA,CAAC,CAACC,QAAF,OAAiBL,KAAlC,CAApB;AACA,QAAMM,UAAU,GAAGJ,WAAW,GAAGA,WAAW,CAACI,UAAZ,EAAH,GAA8B,IAA5D;;AACA,MAAIA,UAAU,KAAK,KAAnB,EAA0B;AACtB,UAAM,IAAIP,cAAJ,CAAiB,gCAA+BC,KAAM,IAAtD,EAA2D,wBAA3D,EAAqF;AACvFL,MAAAA,MADuF;AAEvFK,MAAAA;AAFuF,KAArF,CAAN;AAIH;;AAED,SAAO;AACHA,IAAAA,KADG;AAEHO,IAAAA,OAAO,EAAEN,KAAK,CAACO,WAAN,OAAwB;AAF9B,GAAP;AAIH,CAjCD;;AAkDO,SAASC,SAAT,CAA4BC,MAA5B,EAAoD;AACvD,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,IAAI,EAAEC,WAAW,GAAG,EAA7B;AAAiClB,IAAAA,MAAM,GAAG;AAA1C,MAAiDe,MAAvD;AACA;AACJ;AACA;;AACI,MAAIC,KAAK,CAACb,MAAN,IAAgB,CAAhB,IAAqBgB,KAAK,CAACC,OAAN,CAAcF,WAAd,MAA+B,KAApD,IAA6DA,WAAW,CAACf,MAAZ,KAAuB,CAAxF,EAA2F;AACvF,WAAOa,KAAP;AACH;;AAED,QAAMK,IAAU,GAAG;AACfC,IAAAA,OAAO,EAAE,EADM;AAEfC,IAAAA,MAAM,EAAE;AAFO,GAAnB;;AAKA,OAAK,MAAMN,IAAX,IAAmBC,WAAnB,EAAgC;AAC5B;AACR;AACA;AACQ,QAAI,CAACD,IAAL,EAAW;AACP;AACH;;AACD,UAAM;AAAEZ,MAAAA,KAAF;AAASO,MAAAA;AAAT,QAAqBd,WAAW,CAACmB,IAAD,EAAOjB,MAAP,CAAtC;AACA,UAAMO,WAAW,GAAGP,MAAM,CAACQ,IAAP,CAAYC,CAAC,IAAIA,CAAC,CAACC,QAAF,OAAiBL,KAAlC,CAApB;AACA,UAAMmB,IAAI,GAAGjB,WAAW,GAAGA,WAAW,CAACkB,OAAZ,EAAH,GAA2BpB,KAAnD;AAEAgB,IAAAA,IAAI,CAACC,OAAL,CAAaI,IAAb,CAAkBF,IAAlB;AACAH,IAAAA,IAAI,CAACE,MAAL,CAAYG,IAAZ,CAAiBd,OAAO,KAAK,IAAZ,GAAmB,MAAnB,GAA4B,KAA7C;AACH;;AAED,MAAIS,IAAI,CAACC,OAAL,CAAanB,MAAb,KAAwB,CAA5B,EAA+B;AAC3B,WAAOa,KAAP;AACH;;AAED,SAAO,sBAAcA,KAAd,EAAqBK,IAAI,CAACC,OAA1B,EAAmCD,IAAI,CAACE,MAAxC,CAAP;AACH","sourcesContent":["import lodashOrderBy from \"lodash/orderBy\";\nimport WebinyError from \"@webiny/error\";\nimport { FieldPlugin } from \"~/plugins/definitions/FieldPlugin\";\n\ninterface Info {\n sorters: string[];\n orders: (boolean | \"asc\" | \"desc\")[];\n}\n\ninterface Response {\n reverse: boolean;\n field: string;\n}\n\nconst extractSort = (sortBy: string, fields: FieldPlugin[]): Response => {\n const result = sortBy.split(\"_\");\n if (result.length !== 2) {\n throw new WebinyError(\n \"Problem in determining the sorting for the entry items.\",\n \"SORT_ERROR\",\n {\n sortBy\n }\n );\n }\n const [field, order] = result;\n\n if (!field) {\n throw new WebinyError(\"Sorting field does not exist.\", \"SORTING_FIELD_ERROR\", {\n field,\n order,\n fields\n });\n }\n const fieldPlugin = fields.find(f => f.getField() === field);\n const isSortable = fieldPlugin ? fieldPlugin.isSortable() : true;\n if (isSortable === false) {\n throw new WebinyError(`Cannot sort by given field: \"${field}\".`, \"UNSUPPORTED_SORT_ERROR\", {\n fields,\n field\n });\n }\n\n return {\n field,\n reverse: order.toUpperCase() === \"DESC\"\n };\n};\n\ninterface Params<T> {\n /**\n * The items we are sorting.\n */\n items: T[];\n /**\n * Sort options. For example: [\"id_ASC\"]\n */\n sort?: string[];\n /**\n * Fields we can sort by.\n */\n fields?: FieldPlugin[];\n}\n\nexport function sortItems<T = any>(params: Params<T>): T[] {\n const { items, sort: initialSort = [], fields = [] } = params;\n /**\n * Skip sorting if nothing was passed to sort by or nothing to sort.\n */\n if (items.length <= 1 || Array.isArray(initialSort) === false || initialSort.length === 0) {\n return items;\n }\n\n const info: Info = {\n sorters: [],\n orders: []\n };\n\n for (const sort of initialSort) {\n /**\n * Possibly empty array item was passed.\n */\n if (!sort) {\n continue;\n }\n const { field, reverse } = extractSort(sort, fields);\n const fieldPlugin = fields.find(f => f.getField() === field);\n const path = fieldPlugin ? fieldPlugin.getPath() : field;\n\n info.sorters.push(path);\n info.orders.push(reverse === true ? \"desc\" : \"asc\");\n }\n\n if (info.sorters.length === 0) {\n return items;\n }\n\n return lodashOrderBy(items, info.sorters, info.orders);\n}\n"]}