@webiny/api-headless-cms-storage 0.0.0-unstable.9f53ea597d → 6.6.0-alpha.1

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 (69) hide show
  1. package/cms/storageHelpers.d.ts +2 -4
  2. package/cms/storageHelpers.js +5 -10
  3. package/cms/storageHelpers.js.map +1 -1
  4. package/features/FilterRegistriesFeature.d.ts +4 -0
  5. package/features/FilterRegistriesFeature.js +39 -0
  6. package/features/FilterRegistriesFeature.js.map +1 -0
  7. package/features/fieldFilterCreate/FieldFilterCreateRegistry.d.ts +7 -0
  8. package/features/fieldFilterCreate/FieldFilterCreateRegistry.js +20 -0
  9. package/features/fieldFilterCreate/FieldFilterCreateRegistry.js.map +1 -0
  10. package/features/fieldFilterCreate/abstractions.d.ts +41 -0
  11. package/features/fieldFilterCreate/abstractions.js +5 -0
  12. package/features/fieldFilterCreate/abstractions.js.map +1 -0
  13. package/features/fieldFilterPath/FieldFilterPathRegistry.d.ts +6 -0
  14. package/features/fieldFilterPath/FieldFilterPathRegistry.js +14 -0
  15. package/features/fieldFilterPath/FieldFilterPathRegistry.js.map +1 -0
  16. package/features/fieldFilterPath/abstractions.d.ts +16 -0
  17. package/features/fieldFilterPath/abstractions.js +5 -0
  18. package/features/fieldFilterPath/abstractions.js.map +1 -0
  19. package/features/fieldFilterValueTransform/FieldFilterValueTransformRegistry.d.ts +6 -0
  20. package/features/fieldFilterValueTransform/FieldFilterValueTransformRegistry.js +14 -0
  21. package/features/fieldFilterValueTransform/FieldFilterValueTransformRegistry.js.map +1 -0
  22. package/features/fieldFilterValueTransform/abstractions.d.ts +14 -0
  23. package/features/fieldFilterValueTransform/abstractions.js +5 -0
  24. package/features/fieldFilterValueTransform/abstractions.js.map +1 -0
  25. package/features/fieldSorting/FieldSortingRegistry.d.ts +6 -0
  26. package/features/fieldSorting/FieldSortingRegistry.js +14 -0
  27. package/features/fieldSorting/FieldSortingRegistry.js.map +1 -0
  28. package/features/fieldSorting/abstractions.d.ts +40 -0
  29. package/features/fieldSorting/abstractions.js +5 -0
  30. package/features/fieldSorting/abstractions.js.map +1 -0
  31. package/filtering/expressions/createExpressions.d.ts +4 -2
  32. package/filtering/expressions/createExpressions.js +13 -26
  33. package/filtering/expressions/createExpressions.js.map +1 -1
  34. package/filtering/fields/createFields.d.ts +4 -2
  35. package/filtering/fields/createFields.js +15 -27
  36. package/filtering/fields/createFields.js.map +1 -1
  37. package/filtering/fields/extractSort.d.ts +2 -2
  38. package/filtering/fields/extractSort.js +9 -10
  39. package/filtering/fields/extractSort.js.map +1 -1
  40. package/filtering/filter.d.ts +4 -2
  41. package/filtering/filter.js +3 -2
  42. package/filtering/filter.js.map +1 -1
  43. package/filtering/sort.d.ts +2 -2
  44. package/filtering/sort.js +2 -2
  45. package/filtering/sort.js.map +1 -1
  46. package/handlers/datetimeTransformHandler.d.ts +2 -0
  47. package/handlers/datetimeTransformHandler.js +34 -0
  48. package/handlers/datetimeTransformHandler.js.map +1 -0
  49. package/handlers/defaultFilterCreateHandler.d.ts +2 -0
  50. package/handlers/defaultFilterCreateHandler.js +27 -0
  51. package/handlers/defaultFilterCreateHandler.js.map +1 -0
  52. package/handlers/locationFolderIdPathHandler.d.ts +2 -0
  53. package/handlers/locationFolderIdPathHandler.js +18 -0
  54. package/handlers/locationFolderIdPathHandler.js.map +1 -0
  55. package/handlers/objectFilterCreateHandler.d.ts +2 -0
  56. package/handlers/objectFilterCreateHandler.js +62 -0
  57. package/handlers/objectFilterCreateHandler.js.map +1 -0
  58. package/handlers/plainObjectPathHandler.d.ts +2 -0
  59. package/handlers/plainObjectPathHandler.js +14 -0
  60. package/handlers/plainObjectPathHandler.js.map +1 -0
  61. package/handlers/refFilterCreateHandler.d.ts +2 -0
  62. package/handlers/refFilterCreateHandler.js +57 -0
  63. package/handlers/refFilterCreateHandler.js.map +1 -0
  64. package/handlers/searchableJsonFilterCreateHandler.d.ts +2 -0
  65. package/handlers/searchableJsonFilterCreateHandler.js +43 -0
  66. package/handlers/searchableJsonFilterCreateHandler.js.map +1 -0
  67. package/index.d.ts +5 -0
  68. package/index.js +5 -0
  69. package/package.json +10 -9
@@ -1,10 +1,8 @@
1
1
  import type { CmsEntry, CmsEntryUniqueValue, CmsEntryValues, CmsModel, StorageOperationsCmsModel } from "@webiny/api-headless-cms/types/index.js";
2
- import type { PluginsContainer } from "@webiny/plugins";
3
- import { StorageOperationsCmsModelPlugin } from "@webiny/api-headless-cms";
2
+ import type { Container } from "@webiny/di";
4
3
  import type { StorageTransformRegistry } from "@webiny/api-headless-cms/exports/api/cms/storage.js";
5
4
  import type { FilterItemFromStorage } from "../filtering/fields/types.js";
6
- export declare const createStorageModelAccessor: (plugins: PluginsContainer) => {
7
- getPlugin: () => StorageOperationsCmsModelPlugin;
5
+ export declare const createStorageModelAccessor: (container: Container) => {
8
6
  getModel: <T extends CmsEntryValues = CmsEntryValues>(model: CmsModel) => StorageOperationsCmsModel<T>;
9
7
  };
10
8
  export declare const createStorageTransformCallable: (storageTransformRegistry: StorageTransformRegistry.Interface, model: StorageOperationsCmsModel) => FilterItemFromStorage;
@@ -1,18 +1,13 @@
1
- import { StorageOperationsCmsModelPlugin } from "@webiny/api-headless-cms";
1
+ import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
2
2
  import { getBaseFieldType } from "@webiny/api-headless-cms/utils/getBaseFieldType.js";
3
- const createStorageModelAccessor = (plugins)=>{
3
+ const createStorageModelAccessor = (container)=>{
4
4
  let cached;
5
- const getPlugin = ()=>{
6
- if (cached) return cached;
7
- cached = plugins.oneByType(StorageOperationsCmsModelPlugin.type);
5
+ const getProvider = ()=>{
6
+ if (!cached) cached = container.resolve(CmsStorageModelProvider);
8
7
  return cached;
9
8
  };
10
- const getModel = (model)=>{
11
- const plugin = getPlugin();
12
- return plugin.getModel(model);
13
- };
9
+ const getModel = (model)=>getProvider().getModel(model);
14
10
  return {
15
- getPlugin,
16
11
  getModel
17
12
  };
18
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cms/storageHelpers.js","sources":["../../src/cms/storageHelpers.ts"],"sourcesContent":["import type {\n CmsEntry,\n CmsEntryUniqueValue,\n CmsEntryValues,\n CmsModel,\n CmsModelField,\n StorageOperationsCmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport { StorageOperationsCmsModelPlugin } from \"@webiny/api-headless-cms\";\nimport { getBaseFieldType } from \"@webiny/api-headless-cms/utils/getBaseFieldType.js\";\nimport type { StorageTransformRegistry } from \"@webiny/api-headless-cms/exports/api/cms/storage.js\";\nimport type { FilterItemFromStorage } from \"../filtering/fields/types.js\";\n\n/* Creates a lazy-cached getter for StorageOperationsCmsModelPlugin. */\nexport const createStorageModelAccessor = (plugins: PluginsContainer) => {\n let cached: StorageOperationsCmsModelPlugin | undefined;\n\n const getPlugin = () => {\n if (cached) {\n return cached;\n }\n\n cached = plugins.oneByType<StorageOperationsCmsModelPlugin>(\n StorageOperationsCmsModelPlugin.type\n );\n\n return cached;\n };\n\n const getModel = <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel\n ): StorageOperationsCmsModel<T> => {\n const plugin = getPlugin();\n return plugin.getModel<T>(model);\n };\n\n return { getPlugin, getModel };\n};\n\n/* Creates a fromStorage transform callable for a given model. */\nexport const createStorageTransformCallable = (\n storageTransformRegistry: StorageTransformRegistry.Interface,\n model: StorageOperationsCmsModel\n): FilterItemFromStorage => {\n return async (field: CmsModelField, value: unknown) => {\n const fieldType = getBaseFieldType(field);\n const storageTransform = storageTransformRegistry.get(fieldType);\n\n if (!storageTransform) {\n return value;\n }\n\n const result = await storageTransform.fromStorage({\n model,\n field,\n value,\n getStorageTransform(ft: string) {\n return storageTransformRegistry.get(ft) || storageTransformRegistry.get(\"*\")!;\n }\n });\n\n return result;\n };\n};\n\n/* Aggregates unique values for a given field across a list of CMS entries. */\nexport const aggregateUniqueFieldValues = <T extends CmsEntryValues = CmsEntryValues>(\n items: CmsEntry<T>[],\n fieldId: string\n): CmsEntryUniqueValue[] => {\n const result: Record<string, CmsEntryUniqueValue> = {};\n\n for (const item of items) {\n const fieldValue = item.values[fieldId] as string[] | string | undefined;\n\n if (fieldValue == null) {\n continue;\n }\n\n const values = Array.isArray(fieldValue) ? fieldValue : [fieldValue];\n\n if (values.length === 0) {\n continue;\n }\n\n for (const value of values) {\n result[value] = {\n value,\n count: (result[value]?.count || 0) + 1\n };\n }\n }\n\n return Object.values(result)\n .sort((a, b) => (a.value > b.value ? 1 : b.value > a.value ? -1 : 0))\n .sort((a, b) => b.count - a.count);\n};\n"],"names":["createStorageModelAccessor","plugins","cached","getPlugin","StorageOperationsCmsModelPlugin","getModel","model","plugin","createStorageTransformCallable","storageTransformRegistry","field","value","fieldType","getBaseFieldType","storageTransform","result","ft","aggregateUniqueFieldValues","items","fieldId","item","fieldValue","values","Array","Object","a","b"],"mappings":";;AAeO,MAAMA,6BAA6B,CAACC;IACvC,IAAIC;IAEJ,MAAMC,YAAY;QACd,IAAID,QACA,OAAOA;QAGXA,SAASD,QAAQ,SAAS,CACtBG,gCAAgC,IAAI;QAGxC,OAAOF;IACX;IAEA,MAAMG,WAAW,CACbC;QAEA,MAAMC,SAASJ;QACf,OAAOI,OAAO,QAAQ,CAAID;IAC9B;IAEA,OAAO;QAAEH;QAAWE;IAAS;AACjC;AAGO,MAAMG,iCAAiC,CAC1CC,0BACAH,QAEO,OAAOI,OAAsBC;QAChC,MAAMC,YAAYC,iBAAiBH;QACnC,MAAMI,mBAAmBL,yBAAyB,GAAG,CAACG;QAEtD,IAAI,CAACE,kBACD,OAAOH;QAGX,MAAMI,SAAS,MAAMD,iBAAiB,WAAW,CAAC;YAC9CR;YACAI;YACAC;YACA,qBAAoBK,EAAU;gBAC1B,OAAOP,yBAAyB,GAAG,CAACO,OAAOP,yBAAyB,GAAG,CAAC;YAC5E;QACJ;QAEA,OAAOM;IACX;AAIG,MAAME,6BAA6B,CACtCC,OACAC;IAEA,MAAMJ,SAA8C,CAAC;IAErD,KAAK,MAAMK,QAAQF,MAAO;QACtB,MAAMG,aAAaD,KAAK,MAAM,CAACD,QAAQ;QAEvC,IAAIE,AAAc,QAAdA,YACA;QAGJ,MAAMC,SAASC,MAAM,OAAO,CAACF,cAAcA,aAAa;YAACA;SAAW;QAEpE,IAAIC,AAAkB,MAAlBA,OAAO,MAAM,EAIjB,KAAK,MAAMX,SAASW,OAChBP,MAAM,CAACJ,MAAM,GAAG;YACZA;YACA,OAAQI,AAAAA,CAAAA,MAAM,CAACJ,MAAM,EAAE,SAAS,KAAK;QACzC;IAER;IAEA,OAAOa,OAAO,MAAM,CAACT,QAChB,IAAI,CAAC,CAACU,GAAGC,IAAOD,EAAE,KAAK,GAAGC,EAAE,KAAK,GAAG,IAAIA,EAAE,KAAK,GAAGD,EAAE,KAAK,GAAG,KAAK,GACjE,IAAI,CAAC,CAACA,GAAGC,IAAMA,EAAE,KAAK,GAAGD,EAAE,KAAK;AACzC"}
1
+ {"version":3,"file":"cms/storageHelpers.js","sources":["../../src/cms/storageHelpers.ts"],"sourcesContent":["import type {\n CmsEntry,\n CmsEntryUniqueValue,\n CmsEntryValues,\n CmsModel,\n CmsModelField,\n StorageOperationsCmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport type { Container } from \"@webiny/di\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { getBaseFieldType } from \"@webiny/api-headless-cms/utils/getBaseFieldType.js\";\nimport type { StorageTransformRegistry } from \"@webiny/api-headless-cms/exports/api/cms/storage.js\";\nimport type { FilterItemFromStorage } from \"../filtering/fields/types.js\";\n\n/* Creates a lazy-cached getter for the storage representation of a CMS model. */\nexport const createStorageModelAccessor = (container: Container) => {\n let cached: CmsStorageModelProvider.Interface | undefined;\n\n const getProvider = () => {\n if (!cached) {\n cached = container.resolve(CmsStorageModelProvider);\n }\n return cached;\n };\n\n const getModel = <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel\n ): StorageOperationsCmsModel<T> => {\n return getProvider().getModel<T>(model);\n };\n\n return { getModel };\n};\n\n/* Creates a fromStorage transform callable for a given model. */\nexport const createStorageTransformCallable = (\n storageTransformRegistry: StorageTransformRegistry.Interface,\n model: StorageOperationsCmsModel\n): FilterItemFromStorage => {\n return async (field: CmsModelField, value: unknown) => {\n const fieldType = getBaseFieldType(field);\n const storageTransform = storageTransformRegistry.get(fieldType);\n\n if (!storageTransform) {\n return value;\n }\n\n const result = await storageTransform.fromStorage({\n model,\n field,\n value,\n getStorageTransform(ft: string) {\n return storageTransformRegistry.get(ft) || storageTransformRegistry.get(\"*\")!;\n }\n });\n\n return result;\n };\n};\n\n/* Aggregates unique values for a given field across a list of CMS entries. */\nexport const aggregateUniqueFieldValues = <T extends CmsEntryValues = CmsEntryValues>(\n items: CmsEntry<T>[],\n fieldId: string\n): CmsEntryUniqueValue[] => {\n const result: Record<string, CmsEntryUniqueValue> = {};\n\n for (const item of items) {\n const fieldValue = item.values[fieldId] as string[] | string | undefined;\n\n if (fieldValue == null) {\n continue;\n }\n\n const values = Array.isArray(fieldValue) ? fieldValue : [fieldValue];\n\n if (values.length === 0) {\n continue;\n }\n\n for (const value of values) {\n result[value] = {\n value,\n count: (result[value]?.count || 0) + 1\n };\n }\n }\n\n return Object.values(result)\n .sort((a, b) => (a.value > b.value ? 1 : b.value > a.value ? -1 : 0))\n .sort((a, b) => b.count - a.count);\n};\n"],"names":["createStorageModelAccessor","container","cached","getProvider","CmsStorageModelProvider","getModel","model","createStorageTransformCallable","storageTransformRegistry","field","value","fieldType","getBaseFieldType","storageTransform","result","ft","aggregateUniqueFieldValues","items","fieldId","item","fieldValue","values","Array","Object","a","b"],"mappings":";;AAeO,MAAMA,6BAA6B,CAACC;IACvC,IAAIC;IAEJ,MAAMC,cAAc;QAChB,IAAI,CAACD,QACDA,SAASD,UAAU,OAAO,CAACG;QAE/B,OAAOF;IACX;IAEA,MAAMG,WAAW,CACbC,QAEOH,cAAc,QAAQ,CAAIG;IAGrC,OAAO;QAAED;IAAS;AACtB;AAGO,MAAME,iCAAiC,CAC1CC,0BACAF,QAEO,OAAOG,OAAsBC;QAChC,MAAMC,YAAYC,iBAAiBH;QACnC,MAAMI,mBAAmBL,yBAAyB,GAAG,CAACG;QAEtD,IAAI,CAACE,kBACD,OAAOH;QAGX,MAAMI,SAAS,MAAMD,iBAAiB,WAAW,CAAC;YAC9CP;YACAG;YACAC;YACA,qBAAoBK,EAAU;gBAC1B,OAAOP,yBAAyB,GAAG,CAACO,OAAOP,yBAAyB,GAAG,CAAC;YAC5E;QACJ;QAEA,OAAOM;IACX;AAIG,MAAME,6BAA6B,CACtCC,OACAC;IAEA,MAAMJ,SAA8C,CAAC;IAErD,KAAK,MAAMK,QAAQF,MAAO;QACtB,MAAMG,aAAaD,KAAK,MAAM,CAACD,QAAQ;QAEvC,IAAIE,AAAc,QAAdA,YACA;QAGJ,MAAMC,SAASC,MAAM,OAAO,CAACF,cAAcA,aAAa;YAACA;SAAW;QAEpE,IAAIC,AAAkB,MAAlBA,OAAO,MAAM,EAIjB,KAAK,MAAMX,SAASW,OAChBP,MAAM,CAACJ,MAAM,GAAG;YACZA;YACA,OAAQI,AAAAA,CAAAA,MAAM,CAACJ,MAAM,EAAE,SAAS,KAAK;QACzC;IAER;IAEA,OAAOa,OAAO,MAAM,CAACT,QAChB,IAAI,CAAC,CAACU,GAAGC,IAAOD,EAAE,KAAK,GAAGC,EAAE,KAAK,GAAG,IAAIA,EAAE,KAAK,GAAGD,EAAE,KAAK,GAAG,KAAK,GACjE,IAAI,CAAC,CAACA,GAAGC,IAAMA,EAAE,KAAK,GAAGD,EAAE,KAAK;AACzC"}
@@ -0,0 +1,4 @@
1
+ export declare const FilterRegistriesFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,39 @@
1
+ import { createFeature } from "@webiny/feature/api/index.js";
2
+ import { FieldFilterPathRegistry } from "./fieldFilterPath/abstractions.js";
3
+ import { FieldFilterValueTransformRegistry } from "./fieldFilterValueTransform/abstractions.js";
4
+ import { FieldFilterCreateRegistry } from "./fieldFilterCreate/abstractions.js";
5
+ import { FieldSortingRegistry } from "./fieldSorting/abstractions.js";
6
+ import { FieldFilterPathRegistryImpl } from "./fieldFilterPath/FieldFilterPathRegistry.js";
7
+ import { FieldFilterValueTransformRegistryImpl } from "./fieldFilterValueTransform/FieldFilterValueTransformRegistry.js";
8
+ import { FieldFilterCreateRegistryImpl } from "./fieldFilterCreate/FieldFilterCreateRegistry.js";
9
+ import { FieldSortingRegistryImpl } from "./fieldSorting/FieldSortingRegistry.js";
10
+ import { createPlainObjectPathHandler } from "../handlers/plainObjectPathHandler.js";
11
+ import { createLocationFolderIdPathHandler } from "../handlers/locationFolderIdPathHandler.js";
12
+ import { createDatetimeTransformHandler } from "../handlers/datetimeTransformHandler.js";
13
+ import { createDefaultFilterCreateHandler } from "../handlers/defaultFilterCreateHandler.js";
14
+ import { createRefFilterCreateHandler } from "../handlers/refFilterCreateHandler.js";
15
+ import { createObjectFilterCreateHandler } from "../handlers/objectFilterCreateHandler.js";
16
+ import { createSearchableJsonFilterCreateHandler } from "../handlers/searchableJsonFilterCreateHandler.js";
17
+ const FilterRegistriesFeature = createFeature({
18
+ name: "cms.storage.filterRegistries",
19
+ register: (container)=>{
20
+ const pathRegistry = new FieldFilterPathRegistryImpl();
21
+ pathRegistry.register("plainObject", createPlainObjectPathHandler());
22
+ pathRegistry.register("text", createLocationFolderIdPathHandler());
23
+ container.registerInstance(FieldFilterPathRegistry, pathRegistry);
24
+ const transformRegistry = new FieldFilterValueTransformRegistryImpl();
25
+ transformRegistry.register("datetime", createDatetimeTransformHandler());
26
+ container.registerInstance(FieldFilterValueTransformRegistry, transformRegistry);
27
+ const filterCreateRegistry = new FieldFilterCreateRegistryImpl();
28
+ filterCreateRegistry.register("*", createDefaultFilterCreateHandler());
29
+ filterCreateRegistry.register("ref", createRefFilterCreateHandler());
30
+ filterCreateRegistry.register("object", createObjectFilterCreateHandler());
31
+ filterCreateRegistry.register("searchable-json", createSearchableJsonFilterCreateHandler());
32
+ container.registerInstance(FieldFilterCreateRegistry, filterCreateRegistry);
33
+ const sortingRegistry = new FieldSortingRegistryImpl();
34
+ container.registerInstance(FieldSortingRegistry, sortingRegistry);
35
+ }
36
+ });
37
+ export { FilterRegistriesFeature };
38
+
39
+ //# sourceMappingURL=FilterRegistriesFeature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/FilterRegistriesFeature.js","sources":["../../src/features/FilterRegistriesFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api/index.js\";\nimport { FieldFilterPathRegistry } from \"./fieldFilterPath/abstractions.js\";\nimport { FieldFilterValueTransformRegistry } from \"./fieldFilterValueTransform/abstractions.js\";\nimport { FieldFilterCreateRegistry } from \"./fieldFilterCreate/abstractions.js\";\nimport { FieldSortingRegistry } from \"./fieldSorting/abstractions.js\";\nimport { FieldFilterPathRegistryImpl } from \"./fieldFilterPath/FieldFilterPathRegistry.js\";\nimport { FieldFilterValueTransformRegistryImpl } from \"./fieldFilterValueTransform/FieldFilterValueTransformRegistry.js\";\nimport { FieldFilterCreateRegistryImpl } from \"./fieldFilterCreate/FieldFilterCreateRegistry.js\";\nimport { FieldSortingRegistryImpl } from \"./fieldSorting/FieldSortingRegistry.js\";\nimport { createPlainObjectPathHandler } from \"../handlers/plainObjectPathHandler.js\";\nimport { createLocationFolderIdPathHandler } from \"../handlers/locationFolderIdPathHandler.js\";\nimport { createDatetimeTransformHandler } from \"../handlers/datetimeTransformHandler.js\";\nimport { createDefaultFilterCreateHandler } from \"../handlers/defaultFilterCreateHandler.js\";\nimport { createRefFilterCreateHandler } from \"../handlers/refFilterCreateHandler.js\";\nimport { createObjectFilterCreateHandler } from \"../handlers/objectFilterCreateHandler.js\";\nimport { createSearchableJsonFilterCreateHandler } from \"../handlers/searchableJsonFilterCreateHandler.js\";\n\nexport const FilterRegistriesFeature = createFeature({\n name: \"cms.storage.filterRegistries\",\n register: container => {\n const pathRegistry = new FieldFilterPathRegistryImpl();\n pathRegistry.register(\"plainObject\", createPlainObjectPathHandler());\n pathRegistry.register(\"text\", createLocationFolderIdPathHandler());\n container.registerInstance(FieldFilterPathRegistry, pathRegistry);\n\n const transformRegistry = new FieldFilterValueTransformRegistryImpl();\n transformRegistry.register(\"datetime\", createDatetimeTransformHandler());\n container.registerInstance(FieldFilterValueTransformRegistry, transformRegistry);\n\n const filterCreateRegistry = new FieldFilterCreateRegistryImpl();\n filterCreateRegistry.register(\"*\", createDefaultFilterCreateHandler());\n filterCreateRegistry.register(\"ref\", createRefFilterCreateHandler());\n filterCreateRegistry.register(\"object\", createObjectFilterCreateHandler());\n filterCreateRegistry.register(\"searchable-json\", createSearchableJsonFilterCreateHandler());\n container.registerInstance(FieldFilterCreateRegistry, filterCreateRegistry);\n\n const sortingRegistry = new FieldSortingRegistryImpl();\n container.registerInstance(FieldSortingRegistry, sortingRegistry);\n }\n});\n"],"names":["FilterRegistriesFeature","createFeature","container","pathRegistry","FieldFilterPathRegistryImpl","createPlainObjectPathHandler","createLocationFolderIdPathHandler","FieldFilterPathRegistry","transformRegistry","FieldFilterValueTransformRegistryImpl","createDatetimeTransformHandler","FieldFilterValueTransformRegistry","filterCreateRegistry","FieldFilterCreateRegistryImpl","createDefaultFilterCreateHandler","createRefFilterCreateHandler","createObjectFilterCreateHandler","createSearchableJsonFilterCreateHandler","FieldFilterCreateRegistry","sortingRegistry","FieldSortingRegistryImpl","FieldSortingRegistry"],"mappings":";;;;;;;;;;;;;;;;AAiBO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAAUC,CAAAA;QACN,MAAMC,eAAe,IAAIC;QACzBD,aAAa,QAAQ,CAAC,eAAeE;QACrCF,aAAa,QAAQ,CAAC,QAAQG;QAC9BJ,UAAU,gBAAgB,CAACK,yBAAyBJ;QAEpD,MAAMK,oBAAoB,IAAIC;QAC9BD,kBAAkB,QAAQ,CAAC,YAAYE;QACvCR,UAAU,gBAAgB,CAACS,mCAAmCH;QAE9D,MAAMI,uBAAuB,IAAIC;QACjCD,qBAAqB,QAAQ,CAAC,KAAKE;QACnCF,qBAAqB,QAAQ,CAAC,OAAOG;QACrCH,qBAAqB,QAAQ,CAAC,UAAUI;QACxCJ,qBAAqB,QAAQ,CAAC,mBAAmBK;QACjDf,UAAU,gBAAgB,CAACgB,2BAA2BN;QAEtD,MAAMO,kBAAkB,IAAIC;QAC5BlB,UAAU,gBAAgB,CAACmB,sBAAsBF;IACrD;AACJ"}
@@ -0,0 +1,7 @@
1
+ import type { FieldFilterCreateRegistry } from "./abstractions.js";
2
+ export declare class FieldFilterCreateRegistryImpl implements FieldFilterCreateRegistry.Interface {
3
+ private readonly handlers;
4
+ register(fieldType: string, handler: FieldFilterCreateRegistry.Handler): void;
5
+ get(fieldType: string): FieldFilterCreateRegistry.Handler | undefined;
6
+ getDefault(): FieldFilterCreateRegistry.Handler;
7
+ }
@@ -0,0 +1,20 @@
1
+ import error from "@webiny/error";
2
+ class FieldFilterCreateRegistryImpl {
3
+ register(fieldType, handler) {
4
+ this.handlers.set(fieldType, handler);
5
+ }
6
+ get(fieldType) {
7
+ return this.handlers.get(fieldType);
8
+ }
9
+ getDefault() {
10
+ const handler = this.handlers.get("*");
11
+ if (!handler) throw new error("No default filter create handler registered.", "MISSING_DEFAULT_HANDLER");
12
+ return handler;
13
+ }
14
+ constructor(){
15
+ this.handlers = new Map();
16
+ }
17
+ }
18
+ export { FieldFilterCreateRegistryImpl };
19
+
20
+ //# sourceMappingURL=FieldFilterCreateRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldFilterCreate/FieldFilterCreateRegistry.js","sources":["../../../src/features/fieldFilterCreate/FieldFilterCreateRegistry.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { FieldFilterCreateRegistry } from \"./abstractions.js\";\n\nexport class FieldFilterCreateRegistryImpl implements FieldFilterCreateRegistry.Interface {\n private readonly handlers = new Map<string, FieldFilterCreateRegistry.Handler>();\n\n public register(fieldType: string, handler: FieldFilterCreateRegistry.Handler): void {\n this.handlers.set(fieldType, handler);\n }\n\n public get(fieldType: string): FieldFilterCreateRegistry.Handler | undefined {\n return this.handlers.get(fieldType);\n }\n\n public getDefault(): FieldFilterCreateRegistry.Handler {\n const handler = this.handlers.get(\"*\");\n if (!handler) {\n throw new WebinyError(\n \"No default filter create handler registered.\",\n \"MISSING_DEFAULT_HANDLER\"\n );\n }\n return handler;\n }\n}\n"],"names":["FieldFilterCreateRegistryImpl","fieldType","handler","WebinyError","Map"],"mappings":";AAGO,MAAMA;IAGF,SAASC,SAAiB,EAAEC,OAA0C,EAAQ;QACjF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACD,WAAWC;IACjC;IAEO,IAAID,SAAiB,EAAiD;QACzE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA;IAC7B;IAEO,aAAgD;QACnD,MAAMC,UAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClC,IAAI,CAACA,SACD,MAAM,IAAIC,MACN,gDACA;QAGR,OAAOD;IACX;;aAnBiB,QAAQ,GAAG,IAAIE;;AAoBpC"}
@@ -0,0 +1,41 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ import type { Field } from "../../filtering/fields/types.js";
3
+ import type { ValueFilterRegistry } from "@webiny/db-utils";
4
+ import type { FieldFilterValueTransformRegistry } from "../fieldFilterValueTransform/abstractions.js";
5
+ export interface IFieldFilterCreateResult {
6
+ field: Field;
7
+ path: string;
8
+ fieldPathId: string;
9
+ filter: ValueFilterRegistry.Filter;
10
+ negate: boolean;
11
+ compareValue: any;
12
+ transformValue: <I = any, O = any>(value: I) => O;
13
+ }
14
+ export interface IFieldFilterCreateParams<T = any> {
15
+ key: string;
16
+ value: T;
17
+ field: Field;
18
+ fields: Record<string, Field>;
19
+ operation: string;
20
+ valueFilterRegistry: ValueFilterRegistry.Interface;
21
+ transformRegistry: FieldFilterValueTransformRegistry.Interface;
22
+ getHandler: (fieldType: string) => IFieldFilterCreateHandler;
23
+ negate: boolean;
24
+ compareValue: any;
25
+ transformValue: <I = any, O = any>(value: I) => O;
26
+ }
27
+ export interface IFieldFilterCreateHandler {
28
+ create(params: IFieldFilterCreateParams): null | IFieldFilterCreateResult | IFieldFilterCreateResult[];
29
+ }
30
+ export interface IFieldFilterCreateRegistry {
31
+ register(fieldType: string, handler: IFieldFilterCreateHandler): void;
32
+ get(fieldType: string): IFieldFilterCreateHandler | undefined;
33
+ getDefault(): IFieldFilterCreateHandler;
34
+ }
35
+ export declare const FieldFilterCreateRegistry: Abstraction<IFieldFilterCreateRegistry>;
36
+ export declare namespace FieldFilterCreateRegistry {
37
+ type Interface = IFieldFilterCreateRegistry;
38
+ type Handler = IFieldFilterCreateHandler;
39
+ type Params = IFieldFilterCreateParams;
40
+ type Result = IFieldFilterCreateResult;
41
+ }
@@ -0,0 +1,5 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ const FieldFilterCreateRegistry = new Abstraction("Cms/Storage/FieldFilterCreateRegistry");
3
+ export { FieldFilterCreateRegistry };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldFilterCreate/abstractions.js","sources":["../../../src/features/fieldFilterCreate/abstractions.ts"],"sourcesContent":["import { Abstraction } from \"@webiny/di\";\nimport type { Field } from \"../../filtering/fields/types.js\";\nimport type { ValueFilterRegistry } from \"@webiny/db-utils\";\nimport type { FieldFilterValueTransformRegistry } from \"../fieldFilterValueTransform/abstractions.js\";\n\nexport interface IFieldFilterCreateResult {\n field: Field;\n path: string;\n fieldPathId: string;\n filter: ValueFilterRegistry.Filter;\n negate: boolean;\n compareValue: any;\n transformValue: <I = any, O = any>(value: I) => O;\n}\n\nexport interface IFieldFilterCreateParams<T = any> {\n key: string;\n value: T;\n field: Field;\n fields: Record<string, Field>;\n operation: string;\n valueFilterRegistry: ValueFilterRegistry.Interface;\n transformRegistry: FieldFilterValueTransformRegistry.Interface;\n getHandler: (fieldType: string) => IFieldFilterCreateHandler;\n negate: boolean;\n compareValue: any;\n transformValue: <I = any, O = any>(value: I) => O;\n}\n\nexport interface IFieldFilterCreateHandler {\n create(\n params: IFieldFilterCreateParams\n ): null | IFieldFilterCreateResult | IFieldFilterCreateResult[];\n}\n\nexport interface IFieldFilterCreateRegistry {\n register(fieldType: string, handler: IFieldFilterCreateHandler): void;\n get(fieldType: string): IFieldFilterCreateHandler | undefined;\n getDefault(): IFieldFilterCreateHandler;\n}\n\nexport const FieldFilterCreateRegistry = new Abstraction<IFieldFilterCreateRegistry>(\n \"Cms/Storage/FieldFilterCreateRegistry\"\n);\n\nexport namespace FieldFilterCreateRegistry {\n export type Interface = IFieldFilterCreateRegistry;\n export type Handler = IFieldFilterCreateHandler;\n export type Params = IFieldFilterCreateParams;\n export type Result = IFieldFilterCreateResult;\n}\n"],"names":["FieldFilterCreateRegistry","Abstraction"],"mappings":";AAyCO,MAAMA,4BAA4B,IAAIC,YACzC"}
@@ -0,0 +1,6 @@
1
+ import type { FieldFilterPathRegistry } from "./abstractions.js";
2
+ export declare class FieldFilterPathRegistryImpl implements FieldFilterPathRegistry.Interface {
3
+ private readonly handlers;
4
+ register(fieldType: string, handler: FieldFilterPathRegistry.Handler): void;
5
+ get(fieldType: string): FieldFilterPathRegistry.Handler | undefined;
6
+ }
@@ -0,0 +1,14 @@
1
+ class FieldFilterPathRegistryImpl {
2
+ register(fieldType, handler) {
3
+ this.handlers.set(fieldType, handler);
4
+ }
5
+ get(fieldType) {
6
+ return this.handlers.get(fieldType);
7
+ }
8
+ constructor(){
9
+ this.handlers = new Map();
10
+ }
11
+ }
12
+ export { FieldFilterPathRegistryImpl };
13
+
14
+ //# sourceMappingURL=FieldFilterPathRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldFilterPath/FieldFilterPathRegistry.js","sources":["../../../src/features/fieldFilterPath/FieldFilterPathRegistry.ts"],"sourcesContent":["import type { FieldFilterPathRegistry } from \"./abstractions.js\";\n\nexport class FieldFilterPathRegistryImpl implements FieldFilterPathRegistry.Interface {\n private readonly handlers = new Map<string, FieldFilterPathRegistry.Handler>();\n\n public register(fieldType: string, handler: FieldFilterPathRegistry.Handler): void {\n this.handlers.set(fieldType, handler);\n }\n\n public get(fieldType: string): FieldFilterPathRegistry.Handler | undefined {\n return this.handlers.get(fieldType);\n }\n}\n"],"names":["FieldFilterPathRegistryImpl","fieldType","handler","Map"],"mappings":"AAEO,MAAMA;IAGF,SAASC,SAAiB,EAAEC,OAAwC,EAAQ;QAC/E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACD,WAAWC;IACjC;IAEO,IAAID,SAAiB,EAA+C;QACvE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA;IAC7B;;aARiB,QAAQ,GAAG,IAAIE;;AASpC"}
@@ -0,0 +1,16 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ import type { CmsModelField } from "@webiny/api-headless-cms/types/index.js";
3
+ import type { CreatePathCallableParams } from "../../plugins/CmsEntryFieldFilterPathPlugin.js";
4
+ export interface IFieldFilterPathHandler {
5
+ canUse(field: Pick<CmsModelField, "fieldId" | "type">, parents: string[]): boolean;
6
+ createPath(params: CreatePathCallableParams): string;
7
+ }
8
+ export interface IFieldFilterPathRegistry {
9
+ register(fieldType: string, handler: IFieldFilterPathHandler): void;
10
+ get(fieldType: string): IFieldFilterPathHandler | undefined;
11
+ }
12
+ export declare const FieldFilterPathRegistry: Abstraction<IFieldFilterPathRegistry>;
13
+ export declare namespace FieldFilterPathRegistry {
14
+ type Interface = IFieldFilterPathRegistry;
15
+ type Handler = IFieldFilterPathHandler;
16
+ }
@@ -0,0 +1,5 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ const FieldFilterPathRegistry = new Abstraction("Cms/Storage/FieldFilterPathRegistry");
3
+ export { FieldFilterPathRegistry };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldFilterPath/abstractions.js","sources":["../../../src/features/fieldFilterPath/abstractions.ts"],"sourcesContent":["import { Abstraction } from \"@webiny/di\";\nimport type { CmsModelField } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { CreatePathCallableParams } from \"../../plugins/CmsEntryFieldFilterPathPlugin.js\";\n\nexport interface IFieldFilterPathHandler {\n canUse(field: Pick<CmsModelField, \"fieldId\" | \"type\">, parents: string[]): boolean;\n createPath(params: CreatePathCallableParams): string;\n}\n\nexport interface IFieldFilterPathRegistry {\n register(fieldType: string, handler: IFieldFilterPathHandler): void;\n get(fieldType: string): IFieldFilterPathHandler | undefined;\n}\n\nexport const FieldFilterPathRegistry = new Abstraction<IFieldFilterPathRegistry>(\n \"Cms/Storage/FieldFilterPathRegistry\"\n);\n\nexport namespace FieldFilterPathRegistry {\n export type Interface = IFieldFilterPathRegistry;\n export type Handler = IFieldFilterPathHandler;\n}\n"],"names":["FieldFilterPathRegistry","Abstraction"],"mappings":";AAcO,MAAMA,0BAA0B,IAAIC,YACvC"}
@@ -0,0 +1,6 @@
1
+ import type { FieldFilterValueTransformRegistry } from "./abstractions.js";
2
+ export declare class FieldFilterValueTransformRegistryImpl implements FieldFilterValueTransformRegistry.Interface {
3
+ private readonly handlers;
4
+ register(fieldType: string, handler: FieldFilterValueTransformRegistry.Handler): void;
5
+ get(fieldType: string): FieldFilterValueTransformRegistry.Handler | undefined;
6
+ }
@@ -0,0 +1,14 @@
1
+ class FieldFilterValueTransformRegistryImpl {
2
+ register(fieldType, handler) {
3
+ this.handlers.set(fieldType, handler);
4
+ }
5
+ get(fieldType) {
6
+ return this.handlers.get(fieldType);
7
+ }
8
+ constructor(){
9
+ this.handlers = new Map();
10
+ }
11
+ }
12
+ export { FieldFilterValueTransformRegistryImpl };
13
+
14
+ //# sourceMappingURL=FieldFilterValueTransformRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldFilterValueTransform/FieldFilterValueTransformRegistry.js","sources":["../../../src/features/fieldFilterValueTransform/FieldFilterValueTransformRegistry.ts"],"sourcesContent":["import type { FieldFilterValueTransformRegistry } from \"./abstractions.js\";\n\nexport class FieldFilterValueTransformRegistryImpl\n implements FieldFilterValueTransformRegistry.Interface\n{\n private readonly handlers = new Map<string, FieldFilterValueTransformRegistry.Handler>();\n\n public register(fieldType: string, handler: FieldFilterValueTransformRegistry.Handler): void {\n this.handlers.set(fieldType, handler);\n }\n\n public get(fieldType: string): FieldFilterValueTransformRegistry.Handler | undefined {\n return this.handlers.get(fieldType);\n }\n}\n"],"names":["FieldFilterValueTransformRegistryImpl","fieldType","handler","Map"],"mappings":"AAEO,MAAMA;IAKF,SAASC,SAAiB,EAAEC,OAAkD,EAAQ;QACzF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACD,WAAWC;IACjC;IAEO,IAAID,SAAiB,EAAyD;QACjF,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA;IAC7B;;aARiB,QAAQ,GAAG,IAAIE;;AASpC"}
@@ -0,0 +1,14 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ import type { CmsFieldFilterValueTransformParams } from "../../plugins/CmsFieldFilterValueTransformPlugin.js";
3
+ export interface IFieldFilterValueTransformHandler {
4
+ transform(params: CmsFieldFilterValueTransformParams): any;
5
+ }
6
+ export interface IFieldFilterValueTransformRegistry {
7
+ register(fieldType: string, handler: IFieldFilterValueTransformHandler): void;
8
+ get(fieldType: string): IFieldFilterValueTransformHandler | undefined;
9
+ }
10
+ export declare const FieldFilterValueTransformRegistry: Abstraction<IFieldFilterValueTransformRegistry>;
11
+ export declare namespace FieldFilterValueTransformRegistry {
12
+ type Interface = IFieldFilterValueTransformRegistry;
13
+ type Handler = IFieldFilterValueTransformHandler;
14
+ }
@@ -0,0 +1,5 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ const FieldFilterValueTransformRegistry = new Abstraction("Cms/Storage/FieldFilterValueTransformRegistry");
3
+ export { FieldFilterValueTransformRegistry };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldFilterValueTransform/abstractions.js","sources":["../../../src/features/fieldFilterValueTransform/abstractions.ts"],"sourcesContent":["import { Abstraction } from \"@webiny/di\";\nimport type { CmsFieldFilterValueTransformParams } from \"../../plugins/CmsFieldFilterValueTransformPlugin.js\";\n\nexport interface IFieldFilterValueTransformHandler {\n transform(params: CmsFieldFilterValueTransformParams): any;\n}\n\nexport interface IFieldFilterValueTransformRegistry {\n register(fieldType: string, handler: IFieldFilterValueTransformHandler): void;\n get(fieldType: string): IFieldFilterValueTransformHandler | undefined;\n}\n\nexport const FieldFilterValueTransformRegistry =\n new Abstraction<IFieldFilterValueTransformRegistry>(\n \"Cms/Storage/FieldFilterValueTransformRegistry\"\n );\n\nexport namespace FieldFilterValueTransformRegistry {\n export type Interface = IFieldFilterValueTransformRegistry;\n export type Handler = IFieldFilterValueTransformHandler;\n}\n"],"names":["FieldFilterValueTransformRegistry","Abstraction"],"mappings":";AAYO,MAAMA,oCACT,IAAIC,YACA"}
@@ -0,0 +1,6 @@
1
+ import type { FieldSortingRegistry } from "./abstractions.js";
2
+ export declare class FieldSortingRegistryImpl implements FieldSortingRegistry.Interface {
3
+ private readonly handlers;
4
+ register(handler: FieldSortingRegistry.Handler): void;
5
+ find(params: FieldSortingRegistry.CanUseParams): FieldSortingRegistry.Handler | undefined;
6
+ }
@@ -0,0 +1,14 @@
1
+ class FieldSortingRegistryImpl {
2
+ register(handler) {
3
+ this.handlers.push(handler);
4
+ }
5
+ find(params) {
6
+ for(let i = this.handlers.length - 1; i >= 0; i--)if (this.handlers[i].canUse(params)) return this.handlers[i];
7
+ }
8
+ constructor(){
9
+ this.handlers = [];
10
+ }
11
+ }
12
+ export { FieldSortingRegistryImpl };
13
+
14
+ //# sourceMappingURL=FieldSortingRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldSorting/FieldSortingRegistry.js","sources":["../../../src/features/fieldSorting/FieldSortingRegistry.ts"],"sourcesContent":["import type { FieldSortingRegistry } from \"./abstractions.js\";\n\nexport class FieldSortingRegistryImpl implements FieldSortingRegistry.Interface {\n private readonly handlers: FieldSortingRegistry.Handler[] = [];\n\n public register(handler: FieldSortingRegistry.Handler): void {\n this.handlers.push(handler);\n }\n\n public find(\n params: FieldSortingRegistry.CanUseParams\n ): FieldSortingRegistry.Handler | undefined {\n for (let i = this.handlers.length - 1; i >= 0; i--) {\n if (this.handlers[i].canUse(params)) {\n return this.handlers[i];\n }\n }\n return undefined;\n }\n}\n"],"names":["FieldSortingRegistryImpl","handler","params","i"],"mappings":"AAEO,MAAMA;IAGF,SAASC,OAAqC,EAAQ;QACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAACA;IACvB;IAEO,KACHC,MAAyC,EACD;QACxC,IAAK,IAAIC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAGA,KAAK,GAAGA,IAC3C,IAAI,IAAI,CAAC,QAAQ,CAACA,EAAE,CAAC,MAAM,CAACD,SACxB,OAAO,IAAI,CAAC,QAAQ,CAACC,EAAE;IAInC;;aAfiB,QAAQ,GAAmC,EAAE;;AAgBlE"}
@@ -0,0 +1,40 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ import type { Field } from "../../filtering/fields/types.js";
3
+ import type { CmsModel } from "@webiny/api-headless-cms/types/index.js";
4
+ export interface IFieldSortingCanUseParams {
5
+ model: CmsModel;
6
+ field?: Field;
7
+ fieldId: string;
8
+ order: "ASC" | "DESC";
9
+ sortBy: string;
10
+ }
11
+ export interface IFieldSortingCreateParams {
12
+ model: CmsModel;
13
+ fieldId: string;
14
+ order: "ASC" | "DESC";
15
+ sortBy: string;
16
+ fields: Record<string, Field>;
17
+ field?: Field;
18
+ }
19
+ export interface IFieldSortingResult {
20
+ valuePath: string;
21
+ reverse: boolean;
22
+ fieldId: string;
23
+ field: Field;
24
+ }
25
+ export interface IFieldSortingHandler {
26
+ canUse(params: IFieldSortingCanUseParams): boolean;
27
+ createSort(params: IFieldSortingCreateParams): IFieldSortingResult;
28
+ }
29
+ export interface IFieldSortingRegistry {
30
+ register(handler: IFieldSortingHandler): void;
31
+ find(params: IFieldSortingCanUseParams): IFieldSortingHandler | undefined;
32
+ }
33
+ export declare const FieldSortingRegistry: Abstraction<IFieldSortingRegistry>;
34
+ export declare namespace FieldSortingRegistry {
35
+ type Interface = IFieldSortingRegistry;
36
+ type Handler = IFieldSortingHandler;
37
+ type CanUseParams = IFieldSortingCanUseParams;
38
+ type CreateParams = IFieldSortingCreateParams;
39
+ type Result = IFieldSortingResult;
40
+ }
@@ -0,0 +1,5 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ const FieldSortingRegistry = new Abstraction("Cms/Storage/FieldSortingRegistry");
3
+ export { FieldSortingRegistry };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldSorting/abstractions.js","sources":["../../../src/features/fieldSorting/abstractions.ts"],"sourcesContent":["import { Abstraction } from \"@webiny/di\";\nimport type { Field } from \"../../filtering/fields/types.js\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport interface IFieldSortingCanUseParams {\n model: CmsModel;\n field?: Field;\n fieldId: string;\n order: \"ASC\" | \"DESC\";\n sortBy: string;\n}\n\nexport interface IFieldSortingCreateParams {\n model: CmsModel;\n fieldId: string;\n order: \"ASC\" | \"DESC\";\n sortBy: string;\n fields: Record<string, Field>;\n field?: Field;\n}\n\nexport interface IFieldSortingResult {\n valuePath: string;\n reverse: boolean;\n fieldId: string;\n field: Field;\n}\n\nexport interface IFieldSortingHandler {\n canUse(params: IFieldSortingCanUseParams): boolean;\n createSort(params: IFieldSortingCreateParams): IFieldSortingResult;\n}\n\nexport interface IFieldSortingRegistry {\n register(handler: IFieldSortingHandler): void;\n find(params: IFieldSortingCanUseParams): IFieldSortingHandler | undefined;\n}\n\nexport const FieldSortingRegistry = new Abstraction<IFieldSortingRegistry>(\n \"Cms/Storage/FieldSortingRegistry\"\n);\n\nexport namespace FieldSortingRegistry {\n export type Interface = IFieldSortingRegistry;\n export type Handler = IFieldSortingHandler;\n export type CanUseParams = IFieldSortingCanUseParams;\n export type CreateParams = IFieldSortingCreateParams;\n export type Result = IFieldSortingResult;\n}\n"],"names":["FieldSortingRegistry","Abstraction"],"mappings":";AAsCO,MAAMA,uBAAuB,IAAIC,YACpC"}
@@ -1,9 +1,11 @@
1
1
  import type { CmsEntryListWhere } from "@webiny/api-headless-cms/types/index.js";
2
- import type { PluginsContainer } from "@webiny/plugins";
3
2
  import type { Field } from "../fields/types.js";
4
3
  import { ValueFilter, ValueFilterRegistry } from "@webiny/db-utils";
4
+ import type { FieldFilterCreateRegistry } from "../../features/fieldFilterCreate/abstractions.js";
5
+ import type { FieldFilterValueTransformRegistry } from "../../features/fieldFilterValueTransform/abstractions.js";
5
6
  interface ICreateExpressionsParams {
6
- plugins: PluginsContainer;
7
+ filterCreateRegistry: FieldFilterCreateRegistry.Interface;
8
+ transformRegistry: FieldFilterValueTransformRegistry.Interface;
7
9
  valueFilterRegistry: ValueFilterRegistry.Interface;
8
10
  where: Partial<CmsEntryListWhere>;
9
11
  fields: Record<string, Field>;
@@ -1,30 +1,17 @@
1
1
  import error from "@webiny/error";
2
- import { getMappedPlugins } from "../mapPlugins.js";
3
2
  import { extractWhereParams } from "../where.js";
4
3
  import { transformValue } from "../transform.js";
5
- import { CmsEntryFieldFilterPlugin } from "../../plugins/CmsEntryFieldFilterPlugin.js";
6
- import { getWhereValues } from "../values.js";
7
4
  import { getBaseFieldType } from "@webiny/api-headless-cms/utils/getBaseFieldType.js";
5
+ import { getWhereValues } from "../values.js";
8
6
  const createExpressions = (params)=>{
9
- const { where, plugins, fields, valueFilterRegistry } = params;
10
- const transformValuePlugins = getMappedPlugins({
11
- plugins,
12
- type: "cms-field-filter-value-transform",
13
- property: "fieldType"
14
- });
15
- const fieldFilterCreatePlugins = getMappedPlugins({
16
- plugins,
17
- type: CmsEntryFieldFilterPlugin.type,
18
- property: "fieldType"
19
- });
20
- const defaultFilterCreatePlugin = fieldFilterCreatePlugins["*"];
21
- const getFilterCreatePlugin = (type)=>{
7
+ const { where, filterCreateRegistry, transformRegistry, fields, valueFilterRegistry } = params;
8
+ const getHandler = (type)=>{
22
9
  const fieldType = getBaseFieldType({
23
10
  type
24
11
  });
25
- const filterCreatePlugin = fieldFilterCreatePlugins[fieldType] || defaultFilterCreatePlugin;
26
- if (filterCreatePlugin) return filterCreatePlugin;
27
- throw new error(`There is no filter create plugin for the field type "${fieldType}".`, "MISSING_FILTER_CREATE_PLUGIN", {
12
+ const handler = filterCreateRegistry.get(fieldType) || filterCreateRegistry.getDefault();
13
+ if (handler) return handler;
14
+ throw new error(`There is no filter create handler for the field type "${fieldType}".`, "MISSING_FILTER_CREATE_HANDLER", {
28
15
  fieldType
29
16
  });
30
17
  };
@@ -78,22 +65,22 @@ const createExpressions = (params)=>{
78
65
  if (!field) throw new error(`There is no field with the fieldId "${fieldId}".`, "FIELD_ERROR", {
79
66
  fieldId
80
67
  });
81
- const filterCreatePlugin = getFilterCreatePlugin(field.type);
68
+ const handler = getHandler(field.type);
82
69
  const fieldType = getBaseFieldType(field);
83
- const transformValuePlugin = transformValuePlugins[fieldType];
70
+ const transformHandler = transformRegistry.get(fieldType);
84
71
  const transformValueCallable = (value)=>{
85
- if (!transformValuePlugin) return value;
86
- return transformValuePlugin.transform({
72
+ if (!transformHandler) return value;
73
+ return transformHandler.transform({
87
74
  field,
88
75
  value
89
76
  });
90
77
  };
91
- const result = filterCreatePlugin.create({
78
+ const result = handler.create({
92
79
  key,
93
80
  value,
94
81
  valueFilterRegistry,
95
- transformValuePlugins,
96
- getFilterCreatePlugin,
82
+ transformRegistry,
83
+ getHandler,
97
84
  operation,
98
85
  negate,
99
86
  field,
@@ -1 +1 @@
1
- {"version":3,"file":"filtering/expressions/createExpressions.js","sources":["../../../src/filtering/expressions/createExpressions.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { CmsEntryListWhere } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { ICmsFieldFilterValueTransformPlugin } from \"../../plugins/CmsFieldFilterValueTransformPlugin.js\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport type { Field } from \"../fields/types.js\";\nimport { getMappedPlugins } from \"../mapPlugins.js\";\nimport { extractWhereParams } from \"../where.js\";\nimport { transformValue } from \"../transform.js\";\nimport { CmsEntryFieldFilterPlugin } from \"../../plugins/CmsEntryFieldFilterPlugin.js\";\nimport { getWhereValues } from \"../values.js\";\nimport { getBaseFieldType } from \"@webiny/api-headless-cms/utils/getBaseFieldType.js\";\nimport { ValueFilter, ValueFilterRegistry } from \"@webiny/db-utils\";\n\ninterface CreateExpressionParams {\n where: Partial<CmsEntryListWhere>;\n condition: ExpressionCondition;\n}\n\ninterface ICreateExpressionsParams {\n plugins: PluginsContainer;\n valueFilterRegistry: ValueFilterRegistry.Interface;\n where: Partial<CmsEntryListWhere>;\n fields: Record<string, Field>;\n}\n\nexport type ExpressionCondition = \"AND\" | \"OR\";\n\nexport interface Expression {\n expressions: Expression[];\n filters: Filter[];\n condition: ExpressionCondition;\n}\n\nexport interface Filter {\n field: Field;\n path: string;\n fieldPathId: string;\n filter: ValueFilter.Interface;\n negate: boolean;\n compareValue: any;\n transformValue: <I = any, O = any>(value: I) => O;\n}\n\nexport const createExpressions = (params: ICreateExpressionsParams): Expression => {\n const { where, plugins, fields, valueFilterRegistry } = params;\n\n const transformValuePlugins = getMappedPlugins<ICmsFieldFilterValueTransformPlugin>({\n plugins,\n type: \"cms-field-filter-value-transform\",\n property: \"fieldType\"\n });\n const fieldFilterCreatePlugins = getMappedPlugins<CmsEntryFieldFilterPlugin>({\n plugins,\n type: CmsEntryFieldFilterPlugin.type,\n property: \"fieldType\"\n });\n\n const defaultFilterCreatePlugin = fieldFilterCreatePlugins[\"*\"] as CmsEntryFieldFilterPlugin;\n\n const getFilterCreatePlugin = (type: string) => {\n const fieldType = getBaseFieldType({\n type\n });\n const filterCreatePlugin = fieldFilterCreatePlugins[fieldType] || defaultFilterCreatePlugin;\n if (filterCreatePlugin) {\n return filterCreatePlugin;\n }\n throw new WebinyError(\n `There is no filter create plugin for the field type \"${fieldType}\".`,\n \"MISSING_FILTER_CREATE_PLUGIN\",\n {\n fieldType\n }\n );\n };\n\n const createExpression = ({ where, condition }: CreateExpressionParams): Expression => {\n const expression: Expression = {\n filters: [],\n expressions: [],\n condition\n };\n\n for (const key in where) {\n const value = where[key as keyof typeof where];\n if (value === undefined) {\n continue;\n }\n\n /*\n * If there are \"AND\" or \"OR\" keys, let's sort them out first.\n *\n * AND conditional.\n */\n if (key === \"AND\") {\n const childWhereList = getWhereValues(value, key);\n const childExpression: Expression = {\n condition: \"AND\",\n filters: [],\n expressions: []\n };\n for (const childWhere of childWhereList) {\n const result = createExpression({\n where: childWhere,\n condition: \"AND\"\n });\n childExpression.expressions.push(result);\n }\n expression.expressions.push(childExpression);\n continue;\n }\n /* OR conditional. */\n if (key === \"OR\") {\n const childWhereList = getWhereValues(value, key);\n\n const childExpression: Expression = {\n condition: \"OR\",\n filters: [],\n expressions: []\n };\n for (const childWhere of childWhereList) {\n const result = createExpression({\n where: childWhere,\n condition: \"AND\"\n });\n childExpression.expressions.push(result);\n }\n expression.expressions.push(childExpression);\n continue;\n }\n\n const whereParams = extractWhereParams(key);\n if (!whereParams) {\n continue;\n }\n\n const { fieldId, operation, negate } = whereParams;\n\n const field = fields[fieldId];\n if (!field) {\n throw new WebinyError(\n `There is no field with the fieldId \"${fieldId}\".`,\n \"FIELD_ERROR\",\n {\n fieldId\n }\n );\n }\n\n /* We need a filter create plugin for this type. */\n const filterCreatePlugin = getFilterCreatePlugin(field.type);\n\n const fieldType = getBaseFieldType(field);\n\n const transformValuePlugin: ICmsFieldFilterValueTransformPlugin =\n transformValuePlugins[fieldType];\n\n const transformValueCallable = (value: any) => {\n if (!transformValuePlugin) {\n return value;\n }\n return transformValuePlugin.transform({\n field,\n value\n });\n };\n\n const result = filterCreatePlugin.create({\n key,\n value,\n valueFilterRegistry,\n transformValuePlugins,\n getFilterCreatePlugin,\n operation,\n negate,\n field,\n fields,\n compareValue: transformValue({\n value,\n transform: transformValueCallable\n }),\n transformValue: transformValueCallable\n });\n /*\n * There is a possibility of:\n * - no result\n * - result being an array\n * - result being an object.\n */\n if (!result || (Array.isArray(result) && result.length === 0)) {\n continue;\n }\n\n expression.filters.push(...(Array.isArray(result) ? result : [result]));\n }\n\n return expression;\n };\n\n const expression = createExpression({\n where,\n condition: \"AND\"\n });\n /*\n * If the first expression has no filters and has only one expression, put that expression as main one.\n * This will mostly be used when having an OR condition as the single expression in the root level of the where.\n */\n if (expression.filters.length > 0 || expression.expressions.length !== 1) {\n return expression;\n }\n return expression.expressions[0];\n};\n"],"names":["createExpressions","params","where","plugins","fields","valueFilterRegistry","transformValuePlugins","getMappedPlugins","fieldFilterCreatePlugins","CmsEntryFieldFilterPlugin","defaultFilterCreatePlugin","getFilterCreatePlugin","type","fieldType","getBaseFieldType","filterCreatePlugin","WebinyError","createExpression","condition","expression","key","value","undefined","childWhereList","getWhereValues","childExpression","childWhere","result","whereParams","extractWhereParams","fieldId","operation","negate","field","transformValuePlugin","transformValueCallable","transformValue","Array"],"mappings":"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"}
1
+ {"version":3,"file":"filtering/expressions/createExpressions.js","sources":["../../../src/filtering/expressions/createExpressions.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { CmsEntryListWhere } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { Field } from \"../fields/types.js\";\nimport { extractWhereParams } from \"../where.js\";\nimport { transformValue } from \"../transform.js\";\nimport { getBaseFieldType } from \"@webiny/api-headless-cms/utils/getBaseFieldType.js\";\nimport { ValueFilter, ValueFilterRegistry } from \"@webiny/db-utils\";\nimport type { FieldFilterCreateRegistry } from \"../../features/fieldFilterCreate/abstractions.js\";\nimport type { FieldFilterValueTransformRegistry } from \"../../features/fieldFilterValueTransform/abstractions.js\";\nimport { getWhereValues } from \"../values.js\";\n\ninterface CreateExpressionParams {\n where: Partial<CmsEntryListWhere>;\n condition: ExpressionCondition;\n}\n\ninterface ICreateExpressionsParams {\n filterCreateRegistry: FieldFilterCreateRegistry.Interface;\n transformRegistry: FieldFilterValueTransformRegistry.Interface;\n valueFilterRegistry: ValueFilterRegistry.Interface;\n where: Partial<CmsEntryListWhere>;\n fields: Record<string, Field>;\n}\n\nexport type ExpressionCondition = \"AND\" | \"OR\";\n\nexport interface Expression {\n expressions: Expression[];\n filters: Filter[];\n condition: ExpressionCondition;\n}\n\nexport interface Filter {\n field: Field;\n path: string;\n fieldPathId: string;\n filter: ValueFilter.Interface;\n negate: boolean;\n compareValue: any;\n transformValue: <I = any, O = any>(value: I) => O;\n}\n\nexport const createExpressions = (params: ICreateExpressionsParams): Expression => {\n const { where, filterCreateRegistry, transformRegistry, fields, valueFilterRegistry } = params;\n\n const getHandler = (type: string) => {\n const fieldType = getBaseFieldType({ type });\n const handler = filterCreateRegistry.get(fieldType) || filterCreateRegistry.getDefault();\n if (handler) {\n return handler;\n }\n throw new WebinyError(\n `There is no filter create handler for the field type \"${fieldType}\".`,\n \"MISSING_FILTER_CREATE_HANDLER\",\n { fieldType }\n );\n };\n\n const createExpression = ({ where, condition }: CreateExpressionParams): Expression => {\n const expression: Expression = {\n filters: [],\n expressions: [],\n condition\n };\n\n for (const key in where) {\n const value = where[key as keyof typeof where];\n if (value === undefined) {\n continue;\n }\n\n if (key === \"AND\") {\n const childWhereList = getWhereValues(value, key);\n const childExpression: Expression = {\n condition: \"AND\",\n filters: [],\n expressions: []\n };\n for (const childWhere of childWhereList) {\n const result = createExpression({\n where: childWhere,\n condition: \"AND\"\n });\n childExpression.expressions.push(result);\n }\n expression.expressions.push(childExpression);\n continue;\n }\n if (key === \"OR\") {\n const childWhereList = getWhereValues(value, key);\n const childExpression: Expression = {\n condition: \"OR\",\n filters: [],\n expressions: []\n };\n for (const childWhere of childWhereList) {\n const result = createExpression({\n where: childWhere,\n condition: \"AND\"\n });\n childExpression.expressions.push(result);\n }\n expression.expressions.push(childExpression);\n continue;\n }\n\n const whereParams = extractWhereParams(key);\n if (!whereParams) {\n continue;\n }\n\n const { fieldId, operation, negate } = whereParams;\n\n const field = fields[fieldId];\n if (!field) {\n throw new WebinyError(\n `There is no field with the fieldId \"${fieldId}\".`,\n \"FIELD_ERROR\",\n { fieldId }\n );\n }\n\n const handler = getHandler(field.type);\n const fieldType = getBaseFieldType(field);\n const transformHandler = transformRegistry.get(fieldType);\n\n const transformValueCallable = (value: any) => {\n if (!transformHandler) {\n return value;\n }\n return transformHandler.transform({ field, value });\n };\n\n const result = handler.create({\n key,\n value,\n valueFilterRegistry,\n transformRegistry,\n getHandler,\n operation,\n negate,\n field,\n fields,\n compareValue: transformValue({\n value,\n transform: transformValueCallable\n }),\n transformValue: transformValueCallable\n });\n\n if (!result || (Array.isArray(result) && result.length === 0)) {\n continue;\n }\n\n expression.filters.push(...(Array.isArray(result) ? result : [result]));\n }\n\n return expression;\n };\n\n const expression = createExpression({\n where,\n condition: \"AND\"\n });\n\n if (expression.filters.length > 0 || expression.expressions.length !== 1) {\n return expression;\n }\n return expression.expressions[0];\n};\n"],"names":["createExpressions","params","where","filterCreateRegistry","transformRegistry","fields","valueFilterRegistry","getHandler","type","fieldType","getBaseFieldType","handler","WebinyError","createExpression","condition","expression","key","value","undefined","childWhereList","getWhereValues","childExpression","childWhere","result","whereParams","extractWhereParams","fieldId","operation","negate","field","transformHandler","transformValueCallable","transformValue","Array"],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import type { CmsModelField } from "@webiny/api-headless-cms/types/index.js";
2
2
  import type { Field } from "./types.js";
3
- import type { PluginsContainer } from "@webiny/plugins";
3
+ import type { FieldFilterPathRegistry } from "../../features/fieldFilterPath/abstractions.js";
4
+ import type { FieldFilterValueTransformRegistry } from "../../features/fieldFilterValueTransform/abstractions.js";
4
5
  interface Params {
5
6
  fields: CmsModelField[];
6
- plugins: PluginsContainer;
7
+ pathRegistry: FieldFilterPathRegistry.Interface;
8
+ transformRegistry: FieldFilterValueTransformRegistry.Interface;
7
9
  }
8
10
  export declare const createFields: (params: Params) => {
9
11
  [x: string]: Field;