@webiny/api-headless-cms-storage 0.0.0-unstable.0156a4c312

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 (144) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/cms/storageHelpers.d.ts +9 -0
  4. package/cms/storageHelpers.js +45 -0
  5. package/cms/storageHelpers.js.map +1 -0
  6. package/features/FilterRegistriesFeature.d.ts +9 -0
  7. package/features/FilterRegistriesFeature.js +17 -0
  8. package/features/FilterRegistriesFeature.js.map +1 -0
  9. package/features/fieldFilterCreate/DefaultFieldFilterCreateRegistry.d.ts +9 -0
  10. package/features/fieldFilterCreate/DefaultFieldFilterCreateRegistry.js +26 -0
  11. package/features/fieldFilterCreate/DefaultFieldFilterCreateRegistry.js.map +1 -0
  12. package/features/fieldFilterCreate/FieldFilterCreateRegistry.d.ts +7 -0
  13. package/features/fieldFilterCreate/FieldFilterCreateRegistry.js +20 -0
  14. package/features/fieldFilterCreate/FieldFilterCreateRegistry.js.map +1 -0
  15. package/features/fieldFilterCreate/abstractions.d.ts +41 -0
  16. package/features/fieldFilterCreate/abstractions.js +5 -0
  17. package/features/fieldFilterCreate/abstractions.js.map +1 -0
  18. package/features/fieldFilterPath/DefaultFieldFilterPathRegistry.d.ts +9 -0
  19. package/features/fieldFilterPath/DefaultFieldFilterPathRegistry.js +20 -0
  20. package/features/fieldFilterPath/DefaultFieldFilterPathRegistry.js.map +1 -0
  21. package/features/fieldFilterPath/FieldFilterPathRegistry.d.ts +6 -0
  22. package/features/fieldFilterPath/FieldFilterPathRegistry.js +14 -0
  23. package/features/fieldFilterPath/FieldFilterPathRegistry.js.map +1 -0
  24. package/features/fieldFilterPath/abstractions.d.ts +16 -0
  25. package/features/fieldFilterPath/abstractions.js +5 -0
  26. package/features/fieldFilterPath/abstractions.js.map +1 -0
  27. package/features/fieldFilterValueTransform/DefaultFieldFilterValueTransformRegistry.d.ts +9 -0
  28. package/features/fieldFilterValueTransform/DefaultFieldFilterValueTransformRegistry.js +17 -0
  29. package/features/fieldFilterValueTransform/DefaultFieldFilterValueTransformRegistry.js.map +1 -0
  30. package/features/fieldFilterValueTransform/FieldFilterValueTransformRegistry.d.ts +6 -0
  31. package/features/fieldFilterValueTransform/FieldFilterValueTransformRegistry.js +14 -0
  32. package/features/fieldFilterValueTransform/FieldFilterValueTransformRegistry.js.map +1 -0
  33. package/features/fieldFilterValueTransform/abstractions.d.ts +14 -0
  34. package/features/fieldFilterValueTransform/abstractions.js +5 -0
  35. package/features/fieldFilterValueTransform/abstractions.js.map +1 -0
  36. package/features/fieldSorting/DefaultFieldSortingRegistry.d.ts +8 -0
  37. package/features/fieldSorting/DefaultFieldSortingRegistry.js +11 -0
  38. package/features/fieldSorting/DefaultFieldSortingRegistry.js.map +1 -0
  39. package/features/fieldSorting/FieldSortingRegistry.d.ts +6 -0
  40. package/features/fieldSorting/FieldSortingRegistry.js +14 -0
  41. package/features/fieldSorting/FieldSortingRegistry.js.map +1 -0
  42. package/features/fieldSorting/abstractions.d.ts +40 -0
  43. package/features/fieldSorting/abstractions.js +5 -0
  44. package/features/fieldSorting/abstractions.js.map +1 -0
  45. package/filtering/expressions/createExpressions.d.ts +29 -0
  46. package/filtering/expressions/createExpressions.js +109 -0
  47. package/filtering/expressions/createExpressions.js.map +1 -0
  48. package/filtering/fields/createFields.d.ts +15 -0
  49. package/filtering/fields/createFields.js +81 -0
  50. package/filtering/fields/createFields.js.map +1 -0
  51. package/filtering/fields/extractSort.d.ts +17 -0
  52. package/filtering/fields/extractSort.js +59 -0
  53. package/filtering/fields/extractSort.js.map +1 -0
  54. package/filtering/fields/systemFields.d.ts +5 -0
  55. package/filtering/fields/systemFields.js +165 -0
  56. package/filtering/fields/systemFields.js.map +1 -0
  57. package/filtering/fields/types.d.ts +19 -0
  58. package/filtering/fields/types.js +0 -0
  59. package/filtering/filter.d.ts +19 -0
  60. package/filtering/filter.js +84 -0
  61. package/filtering/filter.js.map +1 -0
  62. package/filtering/fullTextSearch.d.ts +11 -0
  63. package/filtering/fullTextSearch.js +25 -0
  64. package/filtering/fullTextSearch.js.map +1 -0
  65. package/filtering/getValue.d.ts +1 -0
  66. package/filtering/getValue.js +37 -0
  67. package/filtering/getValue.js.map +1 -0
  68. package/filtering/mapPlugins.d.ts +8 -0
  69. package/filtering/mapPlugins.js +18 -0
  70. package/filtering/mapPlugins.js.map +1 -0
  71. package/filtering/plugins/defaultFilterCreate.d.ts +2 -0
  72. package/filtering/plugins/defaultFilterCreate.js +33 -0
  73. package/filtering/plugins/defaultFilterCreate.js.map +1 -0
  74. package/filtering/plugins/index.d.ts +1 -0
  75. package/filtering/plugins/index.js +13 -0
  76. package/filtering/plugins/index.js.map +1 -0
  77. package/filtering/plugins/objectFilterCreate.d.ts +2 -0
  78. package/filtering/plugins/objectFilterCreate.js +68 -0
  79. package/filtering/plugins/objectFilterCreate.js.map +1 -0
  80. package/filtering/plugins/refFilterCreate.d.ts +3 -0
  81. package/filtering/plugins/refFilterCreate.js +63 -0
  82. package/filtering/plugins/refFilterCreate.js.map +1 -0
  83. package/filtering/plugins/searchableJsonFilterCreate.d.ts +2 -0
  84. package/filtering/plugins/searchableJsonFilterCreate.js +56 -0
  85. package/filtering/plugins/searchableJsonFilterCreate.js.map +1 -0
  86. package/filtering/sort.d.ts +12 -0
  87. package/filtering/sort.js +41 -0
  88. package/filtering/sort.js.map +1 -0
  89. package/filtering/transform.d.ts +6 -0
  90. package/filtering/transform.js +7 -0
  91. package/filtering/transform.js.map +1 -0
  92. package/filtering/values.d.ts +2 -0
  93. package/filtering/values.js +15 -0
  94. package/filtering/values.js.map +1 -0
  95. package/filtering/where.d.ts +5 -0
  96. package/filtering/where.js +22 -0
  97. package/filtering/where.js.map +1 -0
  98. package/handlers/datetimeTransformHandler.d.ts +2 -0
  99. package/handlers/datetimeTransformHandler.js +34 -0
  100. package/handlers/datetimeTransformHandler.js.map +1 -0
  101. package/handlers/defaultFilterCreateHandler.d.ts +2 -0
  102. package/handlers/defaultFilterCreateHandler.js +27 -0
  103. package/handlers/defaultFilterCreateHandler.js.map +1 -0
  104. package/handlers/locationFolderIdPathHandler.d.ts +2 -0
  105. package/handlers/locationFolderIdPathHandler.js +18 -0
  106. package/handlers/locationFolderIdPathHandler.js.map +1 -0
  107. package/handlers/objectFilterCreateHandler.d.ts +2 -0
  108. package/handlers/objectFilterCreateHandler.js +62 -0
  109. package/handlers/objectFilterCreateHandler.js.map +1 -0
  110. package/handlers/plainObjectPathHandler.d.ts +2 -0
  111. package/handlers/plainObjectPathHandler.js +14 -0
  112. package/handlers/plainObjectPathHandler.js.map +1 -0
  113. package/handlers/refFilterCreateHandler.d.ts +2 -0
  114. package/handlers/refFilterCreateHandler.js +57 -0
  115. package/handlers/refFilterCreateHandler.js.map +1 -0
  116. package/handlers/searchableJsonFilterCreateHandler.d.ts +2 -0
  117. package/handlers/searchableJsonFilterCreateHandler.js +43 -0
  118. package/handlers/searchableJsonFilterCreateHandler.js.map +1 -0
  119. package/index.d.ts +24 -0
  120. package/index.js +19 -0
  121. package/package.json +35 -0
  122. package/path/locationFolderId.d.ts +2 -0
  123. package/path/locationFolderId.js +21 -0
  124. package/path/locationFolderId.js.map +1 -0
  125. package/path/plainObject.d.ts +2 -0
  126. package/path/plainObject.js +16 -0
  127. package/path/plainObject.js.map +1 -0
  128. package/plugins/CmsEntryFieldFilterPathPlugin.d.ts +23 -0
  129. package/plugins/CmsEntryFieldFilterPathPlugin.js +30 -0
  130. package/plugins/CmsEntryFieldFilterPathPlugin.js.map +1 -0
  131. package/plugins/CmsEntryFieldFilterPlugin.d.ts +39 -0
  132. package/plugins/CmsEntryFieldFilterPlugin.js +20 -0
  133. package/plugins/CmsEntryFieldFilterPlugin.js.map +1 -0
  134. package/plugins/CmsEntryFieldSortingPlugin.d.ts +37 -0
  135. package/plugins/CmsEntryFieldSortingPlugin.js +20 -0
  136. package/plugins/CmsEntryFieldSortingPlugin.js.map +1 -0
  137. package/plugins/CmsFieldFilterValueTransformPlugin.d.ts +21 -0
  138. package/plugins/CmsFieldFilterValueTransformPlugin.js +19 -0
  139. package/plugins/CmsFieldFilterValueTransformPlugin.js.map +1 -0
  140. package/plugins/index.d.ts +7 -0
  141. package/plugins/index.js +4 -0
  142. package/transforms/datetime.d.ts +2 -0
  143. package/transforms/datetime.js +37 -0
  144. package/transforms/datetime.js.map +1 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Webiny
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # @webiny/api-headless-cms-storage
2
+
3
+ > [!NOTE]
4
+ > This package is part of the [Webiny](https://www.webiny.com) monorepo.
5
+ > It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
6
+
7
+ 📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
8
+
9
+ ---
10
+
11
+ _This README file is automatically generated during the publish process._
@@ -0,0 +1,9 @@
1
+ import type { CmsEntry, CmsEntryUniqueValue, CmsEntryValues, CmsModel, StorageOperationsCmsModel } from "@webiny/api-headless-cms/types/index.js";
2
+ import type { Container } from "@webiny/di";
3
+ import type { StorageTransformRegistry } from "@webiny/api-headless-cms/exports/api/cms/storage.js";
4
+ import type { FilterItemFromStorage } from "../filtering/fields/types.js";
5
+ export declare const createStorageModelAccessor: (container: Container) => {
6
+ getModel: <T extends CmsEntryValues = CmsEntryValues>(model: CmsModel) => StorageOperationsCmsModel<T>;
7
+ };
8
+ export declare const createStorageTransformCallable: (storageTransformRegistry: StorageTransformRegistry.Interface, model: StorageOperationsCmsModel) => FilterItemFromStorage;
9
+ export declare const aggregateUniqueFieldValues: <T extends CmsEntryValues = CmsEntryValues>(items: CmsEntry<T>[], fieldId: string) => CmsEntryUniqueValue[];
@@ -0,0 +1,45 @@
1
+ import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
2
+ import { getBaseFieldType } from "@webiny/api-headless-cms/utils/getBaseFieldType.js";
3
+ const createStorageModelAccessor = (container)=>{
4
+ let cached;
5
+ const getProvider = ()=>{
6
+ if (!cached) cached = container.resolve(CmsStorageModelProvider);
7
+ return cached;
8
+ };
9
+ const getModel = (model)=>getProvider().getModel(model);
10
+ return {
11
+ getModel
12
+ };
13
+ };
14
+ const createStorageTransformCallable = (storageTransformRegistry, model)=>async (field, value)=>{
15
+ const fieldType = getBaseFieldType(field);
16
+ const storageTransform = storageTransformRegistry.get(fieldType);
17
+ if (!storageTransform) return value;
18
+ const result = await storageTransform.fromStorage({
19
+ model,
20
+ field,
21
+ value,
22
+ getStorageTransform (ft) {
23
+ return storageTransformRegistry.get(ft) || storageTransformRegistry.get("*");
24
+ }
25
+ });
26
+ return result;
27
+ };
28
+ const aggregateUniqueFieldValues = (items, fieldId)=>{
29
+ const result = {};
30
+ for (const item of items){
31
+ const fieldValue = item.values[fieldId];
32
+ if (null == fieldValue) continue;
33
+ const values = Array.isArray(fieldValue) ? fieldValue : [
34
+ fieldValue
35
+ ];
36
+ if (0 !== values.length) for (const value of values)result[value] = {
37
+ value,
38
+ count: (result[value]?.count || 0) + 1
39
+ };
40
+ }
41
+ return Object.values(result).sort((a, b)=>a.value > b.value ? 1 : b.value > a.value ? -1 : 0).sort((a, b)=>b.count - a.count);
42
+ };
43
+ export { aggregateUniqueFieldValues, createStorageModelAccessor, createStorageTransformCallable };
44
+
45
+ //# sourceMappingURL=storageHelpers.js.map
@@ -0,0 +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 { 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,9 @@
1
+ /**
2
+ * The registries are mutable: extensions add their own handlers with `register()`. They are container
3
+ * scoped, so registering the feature once in the root still gives every request (child) container its
4
+ * own registries. A shared instance would collect every request's registrations.
5
+ */
6
+ export declare const FilterRegistriesFeature: {
7
+ name: string;
8
+ register(container: import("@webiny/di").Container): void;
9
+ };
@@ -0,0 +1,17 @@
1
+ import { createFeature } from "@webiny/feature/api/index.js";
2
+ import { DefaultFieldFilterPathRegistry } from "./fieldFilterPath/DefaultFieldFilterPathRegistry.js";
3
+ import { DefaultFieldFilterValueTransformRegistry } from "./fieldFilterValueTransform/DefaultFieldFilterValueTransformRegistry.js";
4
+ import { DefaultFieldFilterCreateRegistry } from "./fieldFilterCreate/DefaultFieldFilterCreateRegistry.js";
5
+ import { DefaultFieldSortingRegistry } from "./fieldSorting/DefaultFieldSortingRegistry.js";
6
+ const FilterRegistriesFeature = createFeature({
7
+ name: "cms.storage.filterRegistries",
8
+ register: (container)=>{
9
+ container.register(DefaultFieldFilterPathRegistry).inContainerScope();
10
+ container.register(DefaultFieldFilterValueTransformRegistry).inContainerScope();
11
+ container.register(DefaultFieldFilterCreateRegistry).inContainerScope();
12
+ container.register(DefaultFieldSortingRegistry).inContainerScope();
13
+ }
14
+ });
15
+ export { FilterRegistriesFeature };
16
+
17
+ //# 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 { DefaultFieldFilterPathRegistry } from \"./fieldFilterPath/DefaultFieldFilterPathRegistry.js\";\nimport { DefaultFieldFilterValueTransformRegistry } from \"./fieldFilterValueTransform/DefaultFieldFilterValueTransformRegistry.js\";\nimport { DefaultFieldFilterCreateRegistry } from \"./fieldFilterCreate/DefaultFieldFilterCreateRegistry.js\";\nimport { DefaultFieldSortingRegistry } from \"./fieldSorting/DefaultFieldSortingRegistry.js\";\n\n/**\n * The registries are mutable: extensions add their own handlers with `register()`. They are container\n * scoped, so registering the feature once in the root still gives every request (child) container its\n * own registries. A shared instance would collect every request's registrations.\n */\nexport const FilterRegistriesFeature = createFeature({\n name: \"cms.storage.filterRegistries\",\n register: container => {\n container.register(DefaultFieldFilterPathRegistry).inContainerScope();\n container.register(DefaultFieldFilterValueTransformRegistry).inContainerScope();\n container.register(DefaultFieldFilterCreateRegistry).inContainerScope();\n container.register(DefaultFieldSortingRegistry).inContainerScope();\n }\n});\n"],"names":["FilterRegistriesFeature","createFeature","container","DefaultFieldFilterPathRegistry","DefaultFieldFilterValueTransformRegistry","DefaultFieldFilterCreateRegistry","DefaultFieldSortingRegistry"],"mappings":";;;;;AAWO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAAUC,CAAAA;QACNA,UAAU,QAAQ,CAACC,gCAAgC,gBAAgB;QACnED,UAAU,QAAQ,CAACE,0CAA0C,gBAAgB;QAC7EF,UAAU,QAAQ,CAACG,kCAAkC,gBAAgB;QACrEH,UAAU,QAAQ,CAACI,6BAA6B,gBAAgB;IACpE;AACJ"}
@@ -0,0 +1,9 @@
1
+ import { FieldFilterCreateRegistry } from "./abstractions.js";
2
+ import { FieldFilterCreateRegistryImpl } from "./FieldFilterCreateRegistry.js";
3
+ declare class DefaultFieldFilterCreateRegistryImpl extends FieldFilterCreateRegistryImpl implements FieldFilterCreateRegistry.Interface {
4
+ constructor();
5
+ }
6
+ export declare const DefaultFieldFilterCreateRegistry: typeof DefaultFieldFilterCreateRegistryImpl & {
7
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IFieldFilterCreateRegistry>;
8
+ };
9
+ export {};
@@ -0,0 +1,26 @@
1
+ import { FieldFilterCreateRegistry } from "./abstractions.js";
2
+ import { FieldFilterCreateRegistryImpl } from "./FieldFilterCreateRegistry.js";
3
+ import { createDefaultFilterCreateHandler } from "../../handlers/defaultFilterCreateHandler.js";
4
+ import { createRefFilterCreateHandler } from "../../handlers/refFilterCreateHandler.js";
5
+ import { createObjectFilterCreateHandler } from "../../handlers/objectFilterCreateHandler.js";
6
+ import { createSearchableJsonFilterCreateHandler } from "../../handlers/searchableJsonFilterCreateHandler.js";
7
+ class DefaultFieldFilterCreateRegistryImpl extends FieldFilterCreateRegistryImpl {
8
+ constructor(){
9
+ super();
10
+ const defaultHandler = createDefaultFilterCreateHandler();
11
+ const refHandler = createRefFilterCreateHandler();
12
+ const objectHandler = createObjectFilterCreateHandler();
13
+ const searchableJsonHandler = createSearchableJsonFilterCreateHandler();
14
+ this.register("*", defaultHandler);
15
+ this.register("ref", refHandler);
16
+ this.register("object", objectHandler);
17
+ this.register("searchable-json", searchableJsonHandler);
18
+ }
19
+ }
20
+ const DefaultFieldFilterCreateRegistry = FieldFilterCreateRegistry.createImplementation({
21
+ implementation: DefaultFieldFilterCreateRegistryImpl,
22
+ dependencies: []
23
+ });
24
+ export { DefaultFieldFilterCreateRegistry };
25
+
26
+ //# sourceMappingURL=DefaultFieldFilterCreateRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldFilterCreate/DefaultFieldFilterCreateRegistry.js","sources":["../../../src/features/fieldFilterCreate/DefaultFieldFilterCreateRegistry.ts"],"sourcesContent":["import { FieldFilterCreateRegistry } from \"./abstractions.js\";\nimport { FieldFilterCreateRegistryImpl } from \"./FieldFilterCreateRegistry.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\nclass DefaultFieldFilterCreateRegistryImpl\n extends FieldFilterCreateRegistryImpl\n implements FieldFilterCreateRegistry.Interface\n{\n public constructor() {\n super();\n const defaultHandler = createDefaultFilterCreateHandler();\n const refHandler = createRefFilterCreateHandler();\n const objectHandler = createObjectFilterCreateHandler();\n const searchableJsonHandler = createSearchableJsonFilterCreateHandler();\n\n this.register(\"*\", defaultHandler);\n this.register(\"ref\", refHandler);\n this.register(\"object\", objectHandler);\n this.register(\"searchable-json\", searchableJsonHandler);\n }\n}\n\nexport const DefaultFieldFilterCreateRegistry = FieldFilterCreateRegistry.createImplementation({\n implementation: DefaultFieldFilterCreateRegistryImpl,\n dependencies: []\n});\n"],"names":["DefaultFieldFilterCreateRegistryImpl","FieldFilterCreateRegistryImpl","defaultHandler","createDefaultFilterCreateHandler","refHandler","createRefFilterCreateHandler","objectHandler","createObjectFilterCreateHandler","searchableJsonHandler","createSearchableJsonFilterCreateHandler","DefaultFieldFilterCreateRegistry","FieldFilterCreateRegistry"],"mappings":";;;;;;AAOA,MAAMA,6CACMC;IAGR,aAAqB;QACjB,KAAK;QACL,MAAMC,iBAAiBC;QACvB,MAAMC,aAAaC;QACnB,MAAMC,gBAAgBC;QACtB,MAAMC,wBAAwBC;QAE9B,IAAI,CAAC,QAAQ,CAAC,KAAKP;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAOE;QACrB,IAAI,CAAC,QAAQ,CAAC,UAAUE;QACxB,IAAI,CAAC,QAAQ,CAAC,mBAAmBE;IACrC;AACJ;AAEO,MAAME,mCAAmCC,0BAA0B,oBAAoB,CAAC;IAC3F,gBAAgBX;IAChB,cAAc,EAAE;AACpB"}
@@ -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,9 @@
1
+ import { FieldFilterPathRegistry } from "./abstractions.js";
2
+ import { FieldFilterPathRegistryImpl } from "./FieldFilterPathRegistry.js";
3
+ declare class DefaultFieldFilterPathRegistryImpl extends FieldFilterPathRegistryImpl implements FieldFilterPathRegistry.Interface {
4
+ constructor();
5
+ }
6
+ export declare const DefaultFieldFilterPathRegistry: typeof DefaultFieldFilterPathRegistryImpl & {
7
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IFieldFilterPathRegistry>;
8
+ };
9
+ export {};
@@ -0,0 +1,20 @@
1
+ import { FieldFilterPathRegistry } from "./abstractions.js";
2
+ import { FieldFilterPathRegistryImpl } from "./FieldFilterPathRegistry.js";
3
+ import { createPlainObjectPathHandler } from "../../handlers/plainObjectPathHandler.js";
4
+ import { createLocationFolderIdPathHandler } from "../../handlers/locationFolderIdPathHandler.js";
5
+ class DefaultFieldFilterPathRegistryImpl extends FieldFilterPathRegistryImpl {
6
+ constructor(){
7
+ super();
8
+ const plainObjectHandler = createPlainObjectPathHandler();
9
+ const locationFolderIdHandler = createLocationFolderIdPathHandler();
10
+ this.register("plainObject", plainObjectHandler);
11
+ this.register("text", locationFolderIdHandler);
12
+ }
13
+ }
14
+ const DefaultFieldFilterPathRegistry = FieldFilterPathRegistry.createImplementation({
15
+ implementation: DefaultFieldFilterPathRegistryImpl,
16
+ dependencies: []
17
+ });
18
+ export { DefaultFieldFilterPathRegistry };
19
+
20
+ //# sourceMappingURL=DefaultFieldFilterPathRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldFilterPath/DefaultFieldFilterPathRegistry.js","sources":["../../../src/features/fieldFilterPath/DefaultFieldFilterPathRegistry.ts"],"sourcesContent":["import { FieldFilterPathRegistry } from \"./abstractions.js\";\nimport { FieldFilterPathRegistryImpl } from \"./FieldFilterPathRegistry.js\";\nimport { createPlainObjectPathHandler } from \"~/handlers/plainObjectPathHandler.js\";\nimport { createLocationFolderIdPathHandler } from \"~/handlers/locationFolderIdPathHandler.js\";\n\nclass DefaultFieldFilterPathRegistryImpl\n extends FieldFilterPathRegistryImpl\n implements FieldFilterPathRegistry.Interface\n{\n public constructor() {\n super();\n const plainObjectHandler = createPlainObjectPathHandler();\n const locationFolderIdHandler = createLocationFolderIdPathHandler();\n\n this.register(\"plainObject\", plainObjectHandler);\n this.register(\"text\", locationFolderIdHandler);\n }\n}\n\nexport const DefaultFieldFilterPathRegistry = FieldFilterPathRegistry.createImplementation({\n implementation: DefaultFieldFilterPathRegistryImpl,\n dependencies: []\n});\n"],"names":["DefaultFieldFilterPathRegistryImpl","FieldFilterPathRegistryImpl","plainObjectHandler","createPlainObjectPathHandler","locationFolderIdHandler","createLocationFolderIdPathHandler","DefaultFieldFilterPathRegistry","FieldFilterPathRegistry"],"mappings":";;;;AAKA,MAAMA,2CACMC;IAGR,aAAqB;QACjB,KAAK;QACL,MAAMC,qBAAqBC;QAC3B,MAAMC,0BAA0BC;QAEhC,IAAI,CAAC,QAAQ,CAAC,eAAeH;QAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQE;IAC1B;AACJ;AAEO,MAAME,iCAAiCC,wBAAwB,oBAAoB,CAAC;IACvF,gBAAgBP;IAChB,cAAc,EAAE;AACpB"}
@@ -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,9 @@
1
+ import { FieldFilterValueTransformRegistry } from "./abstractions.js";
2
+ import { FieldFilterValueTransformRegistryImpl } from "./FieldFilterValueTransformRegistry.js";
3
+ declare class DefaultFieldFilterValueTransformRegistryImpl extends FieldFilterValueTransformRegistryImpl implements FieldFilterValueTransformRegistry.Interface {
4
+ constructor();
5
+ }
6
+ export declare const DefaultFieldFilterValueTransformRegistry: typeof DefaultFieldFilterValueTransformRegistryImpl & {
7
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IFieldFilterValueTransformRegistry>;
8
+ };
9
+ export {};
@@ -0,0 +1,17 @@
1
+ import { FieldFilterValueTransformRegistry } from "./abstractions.js";
2
+ import { FieldFilterValueTransformRegistryImpl } from "./FieldFilterValueTransformRegistry.js";
3
+ import { createDatetimeTransformHandler } from "../../handlers/datetimeTransformHandler.js";
4
+ class DefaultFieldFilterValueTransformRegistryImpl extends FieldFilterValueTransformRegistryImpl {
5
+ constructor(){
6
+ super();
7
+ const datetimeHandler = createDatetimeTransformHandler();
8
+ this.register("datetime", datetimeHandler);
9
+ }
10
+ }
11
+ const DefaultFieldFilterValueTransformRegistry = FieldFilterValueTransformRegistry.createImplementation({
12
+ implementation: DefaultFieldFilterValueTransformRegistryImpl,
13
+ dependencies: []
14
+ });
15
+ export { DefaultFieldFilterValueTransformRegistry };
16
+
17
+ //# sourceMappingURL=DefaultFieldFilterValueTransformRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldFilterValueTransform/DefaultFieldFilterValueTransformRegistry.js","sources":["../../../src/features/fieldFilterValueTransform/DefaultFieldFilterValueTransformRegistry.ts"],"sourcesContent":["import { FieldFilterValueTransformRegistry } from \"./abstractions.js\";\nimport { FieldFilterValueTransformRegistryImpl } from \"./FieldFilterValueTransformRegistry.js\";\nimport { createDatetimeTransformHandler } from \"~/handlers/datetimeTransformHandler.js\";\n\nclass DefaultFieldFilterValueTransformRegistryImpl\n extends FieldFilterValueTransformRegistryImpl\n implements FieldFilterValueTransformRegistry.Interface\n{\n public constructor() {\n super();\n const datetimeHandler = createDatetimeTransformHandler();\n\n this.register(\"datetime\", datetimeHandler);\n }\n}\n\nexport const DefaultFieldFilterValueTransformRegistry =\n FieldFilterValueTransformRegistry.createImplementation({\n implementation: DefaultFieldFilterValueTransformRegistryImpl,\n dependencies: []\n });\n"],"names":["DefaultFieldFilterValueTransformRegistryImpl","FieldFilterValueTransformRegistryImpl","datetimeHandler","createDatetimeTransformHandler","DefaultFieldFilterValueTransformRegistry","FieldFilterValueTransformRegistry"],"mappings":";;;AAIA,MAAMA,qDACMC;IAGR,aAAqB;QACjB,KAAK;QACL,MAAMC,kBAAkBC;QAExB,IAAI,CAAC,QAAQ,CAAC,YAAYD;IAC9B;AACJ;AAEO,MAAME,2CACTC,kCAAkC,oBAAoB,CAAC;IACnD,gBAAgBL;IAChB,cAAc,EAAE;AACpB"}
@@ -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,8 @@
1
+ import { FieldSortingRegistry } from "./abstractions.js";
2
+ import { FieldSortingRegistryImpl } from "./FieldSortingRegistry.js";
3
+ declare class DefaultFieldSortingRegistryImpl extends FieldSortingRegistryImpl implements FieldSortingRegistry.Interface {
4
+ }
5
+ export declare const DefaultFieldSortingRegistry: typeof DefaultFieldSortingRegistryImpl & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IFieldSortingRegistry>;
7
+ };
8
+ export {};
@@ -0,0 +1,11 @@
1
+ import { FieldSortingRegistry } from "./abstractions.js";
2
+ import { FieldSortingRegistryImpl } from "./FieldSortingRegistry.js";
3
+ class DefaultFieldSortingRegistryImpl extends FieldSortingRegistryImpl {
4
+ }
5
+ const DefaultFieldSortingRegistry = FieldSortingRegistry.createImplementation({
6
+ implementation: DefaultFieldSortingRegistryImpl,
7
+ dependencies: []
8
+ });
9
+ export { DefaultFieldSortingRegistry };
10
+
11
+ //# sourceMappingURL=DefaultFieldSortingRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fieldSorting/DefaultFieldSortingRegistry.js","sources":["../../../src/features/fieldSorting/DefaultFieldSortingRegistry.ts"],"sourcesContent":["import { FieldSortingRegistry } from \"./abstractions.js\";\nimport { FieldSortingRegistryImpl } from \"./FieldSortingRegistry.js\";\n\nclass DefaultFieldSortingRegistryImpl\n extends FieldSortingRegistryImpl\n implements FieldSortingRegistry.Interface {}\n\nexport const DefaultFieldSortingRegistry = FieldSortingRegistry.createImplementation({\n implementation: DefaultFieldSortingRegistryImpl,\n dependencies: []\n});\n"],"names":["DefaultFieldSortingRegistryImpl","FieldSortingRegistryImpl","DefaultFieldSortingRegistry","FieldSortingRegistry"],"mappings":";;AAGA,MAAMA,wCACMC;AACmC;AAExC,MAAMC,8BAA8BC,qBAAqB,oBAAoB,CAAC;IACjF,gBAAgBH;IAChB,cAAc,EAAE;AACpB"}
@@ -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"}
@@ -0,0 +1,29 @@
1
+ import type { CmsEntryListWhere } from "@webiny/api-headless-cms/types/index.js";
2
+ import type { Field } from "../fields/types.js";
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";
6
+ interface ICreateExpressionsParams {
7
+ filterCreateRegistry: FieldFilterCreateRegistry.Interface;
8
+ transformRegistry: FieldFilterValueTransformRegistry.Interface;
9
+ valueFilterRegistry: ValueFilterRegistry.Interface;
10
+ where: Partial<CmsEntryListWhere>;
11
+ fields: Record<string, Field>;
12
+ }
13
+ export type ExpressionCondition = "AND" | "OR";
14
+ export interface Expression {
15
+ expressions: Expression[];
16
+ filters: Filter[];
17
+ condition: ExpressionCondition;
18
+ }
19
+ export interface Filter {
20
+ field: Field;
21
+ path: string;
22
+ fieldPathId: string;
23
+ filter: ValueFilter.Interface;
24
+ negate: boolean;
25
+ compareValue: any;
26
+ transformValue: <I = any, O = any>(value: I) => O;
27
+ }
28
+ export declare const createExpressions: (params: ICreateExpressionsParams) => Expression;
29
+ export {};