@webiny/api-headless-cms-ddb 0.0.0-unstable.78f581c1d2 → 0.0.0-unstable.97a151f74d

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 (73) hide show
  1. package/definitions/model.js +5 -0
  2. package/definitions/model.js.map +1 -1
  3. package/dynamoDb/index.d.ts +1 -1
  4. package/dynamoDb/storage/date.d.ts +2 -1
  5. package/dynamoDb/storage/date.js +13 -3
  6. package/dynamoDb/storage/date.js.map +1 -1
  7. package/dynamoDb/storage/longText.d.ts +1 -1
  8. package/dynamoDb/storage/richText.d.ts +1 -1
  9. package/index.js +11 -4
  10. package/index.js.map +1 -1
  11. package/operations/entry/filtering/createFields.d.ts +18 -0
  12. package/operations/entry/filtering/createFields.js +124 -0
  13. package/operations/entry/filtering/createFields.js.map +1 -0
  14. package/operations/entry/filtering/createFilters.d.ts +20 -0
  15. package/operations/entry/filtering/createFilters.js +155 -0
  16. package/operations/entry/filtering/createFilters.js.map +1 -0
  17. package/operations/entry/filtering/extractSort.d.ts +13 -0
  18. package/operations/entry/filtering/extractSort.js +55 -0
  19. package/operations/entry/filtering/extractSort.js.map +1 -0
  20. package/operations/entry/filtering/filter.d.ts +16 -0
  21. package/operations/entry/filtering/filter.js +137 -0
  22. package/operations/entry/filtering/filter.js.map +1 -0
  23. package/operations/entry/filtering/fullTextSearch.d.ts +18 -0
  24. package/operations/entry/filtering/fullTextSearch.js +64 -0
  25. package/operations/entry/filtering/fullTextSearch.js.map +1 -0
  26. package/operations/entry/filtering/getValue.d.ts +5 -0
  27. package/operations/entry/filtering/getValue.js +81 -0
  28. package/operations/entry/filtering/getValue.js.map +1 -0
  29. package/operations/entry/filtering/index.d.ts +2 -0
  30. package/operations/entry/filtering/index.js +21 -0
  31. package/operations/entry/filtering/index.js.map +1 -0
  32. package/operations/entry/filtering/mapPlugins.d.ts +8 -0
  33. package/operations/entry/filtering/mapPlugins.js +39 -0
  34. package/operations/entry/filtering/mapPlugins.js.map +1 -0
  35. package/operations/entry/filtering/plugins/defaultFilterCreate.d.ts +2 -0
  36. package/operations/entry/filtering/plugins/defaultFilterCreate.js +48 -0
  37. package/operations/entry/filtering/plugins/defaultFilterCreate.js.map +1 -0
  38. package/operations/entry/filtering/plugins/index.d.ts +1 -0
  39. package/operations/entry/filtering/plugins/index.js +18 -0
  40. package/operations/entry/filtering/plugins/index.js.map +1 -0
  41. package/operations/entry/filtering/plugins/objectFilterCreate.d.ts +2 -0
  42. package/operations/entry/filtering/plugins/objectFilterCreate.js +107 -0
  43. package/operations/entry/filtering/plugins/objectFilterCreate.js.map +1 -0
  44. package/operations/entry/filtering/plugins/refFilterCreate.d.ts +2 -0
  45. package/operations/entry/filtering/plugins/refFilterCreate.js +89 -0
  46. package/operations/entry/filtering/plugins/refFilterCreate.js.map +1 -0
  47. package/operations/entry/filtering/sort.d.ts +9 -0
  48. package/operations/entry/filtering/sort.js +80 -0
  49. package/operations/entry/filtering/sort.js.map +1 -0
  50. package/operations/entry/filtering/systemFields.d.ts +4 -0
  51. package/operations/entry/filtering/systemFields.js +72 -0
  52. package/operations/entry/filtering/systemFields.js.map +1 -0
  53. package/operations/entry/filtering/transform.d.ts +6 -0
  54. package/operations/entry/filtering/transform.js +19 -0
  55. package/operations/entry/filtering/transform.js.map +1 -0
  56. package/operations/entry/filtering/types.d.ts +40 -0
  57. package/operations/entry/filtering/types.js +5 -0
  58. package/operations/entry/filtering/types.js.map +1 -0
  59. package/operations/entry/filtering/where.d.ts +5 -0
  60. package/operations/entry/filtering/where.js +38 -0
  61. package/operations/entry/filtering/where.js.map +1 -0
  62. package/operations/entry/index.js +10 -8
  63. package/operations/entry/index.js.map +1 -1
  64. package/operations/entry/utils.js +7 -3
  65. package/operations/entry/utils.js.map +1 -1
  66. package/package.json +10 -10
  67. package/plugins/CmsEntryFieldFilterPathPlugin.d.ts +2 -2
  68. package/plugins/CmsEntryFieldFilterPathPlugin.js.map +1 -1
  69. package/plugins/CmsEntryFieldFilterPlugin.d.ts +43 -0
  70. package/plugins/CmsEntryFieldFilterPlugin.js +31 -0
  71. package/plugins/CmsEntryFieldFilterPlugin.js.map +1 -0
  72. package/types.d.ts +1 -1
  73. package/types.js.map +1 -1
@@ -74,6 +74,11 @@ const createModelEntity = params => {
74
74
  type: "list",
75
75
  required: true
76
76
  },
77
+ tags: {
78
+ type: "list",
79
+ required: false,
80
+ default: []
81
+ },
77
82
  lockedFields: {
78
83
  type: "list",
79
84
  required: true
@@ -1 +1 @@
1
- {"version":3,"names":["createModelEntity","params","table","attributes","entityName","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","required","webinyVersion","modelId","locale","group","description","createdOn","savedOn","createdBy","fields","layout","lockedFields","titleFieldId","tenant"],"sources":["model.ts"],"sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface Params {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createModelEntity = (params: Params): Entity<any> => {\n const { table, attributes, entityName } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\",\n required: true\n },\n webinyVersion: {\n type: \"string\",\n required: true\n },\n name: {\n type: \"string\",\n required: true\n },\n modelId: {\n type: \"string\",\n required: true\n },\n locale: {\n type: \"string\",\n required: true\n },\n group: {\n type: \"map\",\n required: true\n },\n description: {\n type: \"string\"\n },\n createdOn: {\n type: \"string\",\n required: true\n },\n savedOn: {\n type: \"string\",\n required: true\n },\n createdBy: {\n type: \"map\",\n required: true\n },\n fields: {\n type: \"list\",\n required: true\n },\n layout: {\n type: \"list\",\n required: true\n },\n lockedFields: {\n type: \"list\",\n required: true\n },\n titleFieldId: {\n type: \"string\"\n },\n tenant: {\n type: \"string\",\n required: true\n },\n ...(attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AASO,MAAMA,iBAAiB,GAAIC,MAAD,IAAiC;EAC9D,MAAM;IAAEC,KAAF;IAASC,UAAT;IAAqBC;EAArB,IAAoCH,MAA1C;EACA,OAAO,IAAII,uBAAJ,CAAW;IACdC,IAAI,EAAEF,UADQ;IAEdF,KAFc;IAGdC,UAAU;MACNI,EAAE,EAAE;QACAC,YAAY,EAAE;MADd,CADE;MAINC,EAAE,EAAE;QACAC,OAAO,EAAE;MADT,CAJE;MAONC,IAAI,EAAE;QACFC,IAAI,EAAE,QADJ;QAEFC,QAAQ,EAAE;MAFR,CAPA;MAWNC,aAAa,EAAE;QACXF,IAAI,EAAE,QADK;QAEXC,QAAQ,EAAE;MAFC,CAXT;MAeNP,IAAI,EAAE;QACFM,IAAI,EAAE,QADJ;QAEFC,QAAQ,EAAE;MAFR,CAfA;MAmBNE,OAAO,EAAE;QACLH,IAAI,EAAE,QADD;QAELC,QAAQ,EAAE;MAFL,CAnBH;MAuBNG,MAAM,EAAE;QACJJ,IAAI,EAAE,QADF;QAEJC,QAAQ,EAAE;MAFN,CAvBF;MA2BNI,KAAK,EAAE;QACHL,IAAI,EAAE,KADH;QAEHC,QAAQ,EAAE;MAFP,CA3BD;MA+BNK,WAAW,EAAE;QACTN,IAAI,EAAE;MADG,CA/BP;MAkCNO,SAAS,EAAE;QACPP,IAAI,EAAE,QADC;QAEPC,QAAQ,EAAE;MAFH,CAlCL;MAsCNO,OAAO,EAAE;QACLR,IAAI,EAAE,QADD;QAELC,QAAQ,EAAE;MAFL,CAtCH;MA0CNQ,SAAS,EAAE;QACPT,IAAI,EAAE,KADC;QAEPC,QAAQ,EAAE;MAFH,CA1CL;MA8CNS,MAAM,EAAE;QACJV,IAAI,EAAE,MADF;QAEJC,QAAQ,EAAE;MAFN,CA9CF;MAkDNU,MAAM,EAAE;QACJX,IAAI,EAAE,MADF;QAEJC,QAAQ,EAAE;MAFN,CAlDF;MAsDNW,YAAY,EAAE;QACVZ,IAAI,EAAE,MADI;QAEVC,QAAQ,EAAE;MAFA,CAtDR;MA0DNY,YAAY,EAAE;QACVb,IAAI,EAAE;MADI,CA1DR;MA6DNc,MAAM,EAAE;QACJd,IAAI,EAAE,QADF;QAEJC,QAAQ,EAAE;MAFN;IA7DF,GAiEFV,UAAU,IAAI,EAjEZ;EAHI,CAAX,CAAP;AAuEH,CAzEM"}
1
+ {"version":3,"names":["createModelEntity","params","table","attributes","entityName","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","required","webinyVersion","modelId","locale","group","description","createdOn","savedOn","createdBy","fields","layout","tags","default","lockedFields","titleFieldId","tenant"],"sources":["model.ts"],"sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface Params {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createModelEntity = (params: Params): Entity<any> => {\n const { table, attributes, entityName } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\",\n required: true\n },\n webinyVersion: {\n type: \"string\",\n required: true\n },\n name: {\n type: \"string\",\n required: true\n },\n modelId: {\n type: \"string\",\n required: true\n },\n locale: {\n type: \"string\",\n required: true\n },\n group: {\n type: \"map\",\n required: true\n },\n description: {\n type: \"string\"\n },\n createdOn: {\n type: \"string\",\n required: true\n },\n savedOn: {\n type: \"string\",\n required: true\n },\n createdBy: {\n type: \"map\",\n required: true\n },\n fields: {\n type: \"list\",\n required: true\n },\n layout: {\n type: \"list\",\n required: true\n },\n tags: {\n type: \"list\",\n required: false,\n default: []\n },\n lockedFields: {\n type: \"list\",\n required: true\n },\n titleFieldId: {\n type: \"string\"\n },\n tenant: {\n type: \"string\",\n required: true\n },\n ...(attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AASO,MAAMA,iBAAiB,GAAIC,MAAD,IAAiC;EAC9D,MAAM;IAAEC,KAAF;IAASC,UAAT;IAAqBC;EAArB,IAAoCH,MAA1C;EACA,OAAO,IAAII,uBAAJ,CAAW;IACdC,IAAI,EAAEF,UADQ;IAEdF,KAFc;IAGdC,UAAU;MACNI,EAAE,EAAE;QACAC,YAAY,EAAE;MADd,CADE;MAINC,EAAE,EAAE;QACAC,OAAO,EAAE;MADT,CAJE;MAONC,IAAI,EAAE;QACFC,IAAI,EAAE,QADJ;QAEFC,QAAQ,EAAE;MAFR,CAPA;MAWNC,aAAa,EAAE;QACXF,IAAI,EAAE,QADK;QAEXC,QAAQ,EAAE;MAFC,CAXT;MAeNP,IAAI,EAAE;QACFM,IAAI,EAAE,QADJ;QAEFC,QAAQ,EAAE;MAFR,CAfA;MAmBNE,OAAO,EAAE;QACLH,IAAI,EAAE,QADD;QAELC,QAAQ,EAAE;MAFL,CAnBH;MAuBNG,MAAM,EAAE;QACJJ,IAAI,EAAE,QADF;QAEJC,QAAQ,EAAE;MAFN,CAvBF;MA2BNI,KAAK,EAAE;QACHL,IAAI,EAAE,KADH;QAEHC,QAAQ,EAAE;MAFP,CA3BD;MA+BNK,WAAW,EAAE;QACTN,IAAI,EAAE;MADG,CA/BP;MAkCNO,SAAS,EAAE;QACPP,IAAI,EAAE,QADC;QAEPC,QAAQ,EAAE;MAFH,CAlCL;MAsCNO,OAAO,EAAE;QACLR,IAAI,EAAE,QADD;QAELC,QAAQ,EAAE;MAFL,CAtCH;MA0CNQ,SAAS,EAAE;QACPT,IAAI,EAAE,KADC;QAEPC,QAAQ,EAAE;MAFH,CA1CL;MA8CNS,MAAM,EAAE;QACJV,IAAI,EAAE,MADF;QAEJC,QAAQ,EAAE;MAFN,CA9CF;MAkDNU,MAAM,EAAE;QACJX,IAAI,EAAE,MADF;QAEJC,QAAQ,EAAE;MAFN,CAlDF;MAsDNW,IAAI,EAAE;QACFZ,IAAI,EAAE,MADJ;QAEFC,QAAQ,EAAE,KAFR;QAGFY,OAAO,EAAE;MAHP,CAtDA;MA2DNC,YAAY,EAAE;QACVd,IAAI,EAAE,MADI;QAEVC,QAAQ,EAAE;MAFA,CA3DR;MA+DNc,YAAY,EAAE;QACVf,IAAI,EAAE;MADI,CA/DR;MAkENgB,MAAM,EAAE;QACJhB,IAAI,EAAE,QADF;QAEJC,QAAQ,EAAE;MAFN;IAlEF,GAsEFV,UAAU,IAAI,EAtEZ;EAHI,CAAX,CAAP;AA4EH,CA9EM"}
@@ -1,2 +1,2 @@
1
- declare const _default: () => (import("@webiny/api-headless-cms").StorageTransformPlugin<any, any> | import("..").CmsEntryFieldFilterPathPlugin | import("../types").CmsFieldFilterValueTransformPlugin)[];
1
+ declare const _default: () => (import("@webiny/api-headless-cms").StorageTransformPlugin<any, any, import("@webiny/api-headless-cms/types").CmsModelField> | import("..").CmsEntryFieldFilterPathPlugin | import("../types").CmsFieldFilterValueTransformPlugin)[];
2
2
  export default _default;
@@ -1,2 +1,3 @@
1
1
  import { StorageTransformPlugin } from "@webiny/api-headless-cms";
2
- export declare const createDateStorageTransformPlugin: () => StorageTransformPlugin<any, any>;
2
+ import { CmsModelField } from "@webiny/api-headless-cms/types";
3
+ export declare const createDateStorageTransformPlugin: () => StorageTransformPlugin<any, any, CmsModelField>;
@@ -19,9 +19,19 @@ const excludeTypes = ["time", "dateTimeWithTimezone"];
19
19
  const convertFromStorage = (field, value) => {
20
20
  try {
21
21
  if (field.multipleValues) {
22
- return (value || []).filter(v => !!v).map(v => {
23
- return new Date(v);
24
- });
22
+ const result = [];
23
+
24
+ for (const v of value) {
25
+ if (!v) {
26
+ continue;
27
+ }
28
+
29
+ try {
30
+ result.push(new Date(v));
31
+ } catch {}
32
+ }
33
+
34
+ return result;
25
35
  }
26
36
 
27
37
  return new Date(value);
@@ -1 +1 @@
1
- {"version":3,"names":["excludeTypes","convertFromStorage","field","value","multipleValues","filter","v","map","Date","console","log","convertValueToStorage","toISOString","WebinyError","fieldId","storageId","createDateStorageTransformPlugin","StorageTransformPlugin","fieldType","fromStorage","type","settings","includes","toStorage"],"sources":["date.ts"],"sourcesContent":["/**\n * File is @internal\n */\nimport WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\n\nconst excludeTypes = [\"time\", \"dateTimeWithTimezone\"];\n\nconst convertFromStorage = (field: CmsModelField, value: string | string[]) => {\n try {\n if (field.multipleValues) {\n return ((value as string[]) || [])\n .filter(v => !!v)\n .map((v: string) => {\n return new Date(v);\n });\n }\n return new Date(value as string);\n } catch {\n console.log(`Could not transform from storage for field type`);\n return value;\n }\n};\n\nconst convertValueToStorage = (field: CmsModelField, value: any): any => {\n if ((value as any).toISOString) {\n return (value as Date).toISOString();\n } else if (typeof value === \"string\") {\n return value as string;\n }\n throw new WebinyError(\"Error converting value to a storage type.\", \"TO_STORAGE_ERROR\", {\n value: value,\n fieldId: field.fieldId,\n storageId: field.storageId\n });\n};\n\nexport const createDateStorageTransformPlugin = () => {\n return new StorageTransformPlugin({\n fieldType: \"datetime\",\n fromStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n return convertFromStorage(field, value);\n },\n toStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n if (field.multipleValues) {\n const multipleValues = value as (string | Date | null | undefined)[];\n return (multipleValues || [])\n .filter(v => !!v)\n .map(v => {\n return convertValueToStorage(field, v);\n });\n }\n if ((value as any).toISOString) {\n return (value as Date).toISOString();\n } else if (typeof value === \"string\") {\n return value as string;\n }\n throw new WebinyError(\"Error converting value to a storage type.\", \"TO_STORAGE_ERROR\", {\n value,\n fieldId: field.fieldId,\n storageId: field.storageId\n });\n }\n });\n};\n"],"mappings":";;;;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;AAKA,MAAMA,YAAY,GAAG,CAAC,MAAD,EAAS,sBAAT,CAArB;;AAEA,MAAMC,kBAAkB,GAAG,CAACC,KAAD,EAAuBC,KAAvB,KAAoD;EAC3E,IAAI;IACA,IAAID,KAAK,CAACE,cAAV,EAA0B;MACtB,OAAO,CAAED,KAAD,IAAuB,EAAxB,EACFE,MADE,CACKC,CAAC,IAAI,CAAC,CAACA,CADZ,EAEFC,GAFE,CAEGD,CAAD,IAAe;QAChB,OAAO,IAAIE,IAAJ,CAASF,CAAT,CAAP;MACH,CAJE,CAAP;IAKH;;IACD,OAAO,IAAIE,IAAJ,CAASL,KAAT,CAAP;EACH,CATD,CASE,MAAM;IACJM,OAAO,CAACC,GAAR,CAAa,iDAAb;IACA,OAAOP,KAAP;EACH;AACJ,CAdD;;AAgBA,MAAMQ,qBAAqB,GAAG,CAACT,KAAD,EAAuBC,KAAvB,KAA2C;EACrE,IAAKA,KAAD,CAAeS,WAAnB,EAAgC;IAC5B,OAAQT,KAAD,CAAgBS,WAAhB,EAAP;EACH,CAFD,MAEO,IAAI,OAAOT,KAAP,KAAiB,QAArB,EAA+B;IAClC,OAAOA,KAAP;EACH;;EACD,MAAM,IAAIU,cAAJ,CAAgB,2CAAhB,EAA6D,kBAA7D,EAAiF;IACnFV,KAAK,EAAEA,KAD4E;IAEnFW,OAAO,EAAEZ,KAAK,CAACY,OAFoE;IAGnFC,SAAS,EAAEb,KAAK,CAACa;EAHkE,CAAjF,CAAN;AAKH,CAXD;;AAaO,MAAMC,gCAAgC,GAAG,MAAM;EAClD,OAAO,IAAIC,sCAAJ,CAA2B;IAC9BC,SAAS,EAAE,UADmB;IAE9BC,WAAW,EAAE,OAAO;MAAEhB,KAAF;MAASD;IAAT,CAAP,KAA4B;MACrC,MAAM;QAAEkB;MAAF,IAAWlB,KAAK,CAACmB,QAAN,IAAkB,EAAnC;;MACA,IAAI,CAAClB,KAAD,IAAU,CAACiB,IAAX,IAAmBpB,YAAY,CAACsB,QAAb,CAAsBF,IAAtB,CAAvB,EAAoD;QAChD,OAAOjB,KAAP;MACH;;MACD,OAAOF,kBAAkB,CAACC,KAAD,EAAQC,KAAR,CAAzB;IACH,CAR6B;IAS9BoB,SAAS,EAAE,OAAO;MAAEpB,KAAF;MAASD;IAAT,CAAP,KAA4B;MACnC,MAAM;QAAEkB;MAAF,IAAWlB,KAAK,CAACmB,QAAN,IAAkB,EAAnC;;MACA,IAAI,CAAClB,KAAD,IAAU,CAACiB,IAAX,IAAmBpB,YAAY,CAACsB,QAAb,CAAsBF,IAAtB,CAAvB,EAAoD;QAChD,OAAOjB,KAAP;MACH;;MACD,IAAID,KAAK,CAACE,cAAV,EAA0B;QACtB,MAAMA,cAAc,GAAGD,KAAvB;QACA,OAAO,CAACC,cAAc,IAAI,EAAnB,EACFC,MADE,CACKC,CAAC,IAAI,CAAC,CAACA,CADZ,EAEFC,GAFE,CAEED,CAAC,IAAI;UACN,OAAOK,qBAAqB,CAACT,KAAD,EAAQI,CAAR,CAA5B;QACH,CAJE,CAAP;MAKH;;MACD,IAAKH,KAAD,CAAeS,WAAnB,EAAgC;QAC5B,OAAQT,KAAD,CAAgBS,WAAhB,EAAP;MACH,CAFD,MAEO,IAAI,OAAOT,KAAP,KAAiB,QAArB,EAA+B;QAClC,OAAOA,KAAP;MACH;;MACD,MAAM,IAAIU,cAAJ,CAAgB,2CAAhB,EAA6D,kBAA7D,EAAiF;QACnFV,KADmF;QAEnFW,OAAO,EAAEZ,KAAK,CAACY,OAFoE;QAGnFC,SAAS,EAAEb,KAAK,CAACa;MAHkE,CAAjF,CAAN;IAKH;EAhC6B,CAA3B,CAAP;AAkCH,CAnCM"}
1
+ {"version":3,"names":["excludeTypes","convertFromStorage","field","value","multipleValues","result","v","push","Date","console","log","convertValueToStorage","toISOString","WebinyError","fieldId","storageId","createDateStorageTransformPlugin","StorageTransformPlugin","fieldType","fromStorage","type","settings","includes","toStorage","filter","map"],"sources":["date.ts"],"sourcesContent":["/**\n * File is @internal\n */\nimport WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\n\nconst excludeTypes = [\"time\", \"dateTimeWithTimezone\"];\n\nconst convertFromStorage = (\n field: Pick<CmsModelField, \"multipleValues\">,\n value: string | string[]\n) => {\n try {\n if (field.multipleValues) {\n const result: Date[] = [];\n for (const v of value) {\n if (!v) {\n continue;\n }\n try {\n result.push(new Date(v));\n } catch {}\n }\n return result;\n }\n return new Date(value as string);\n } catch {\n console.log(`Could not transform from storage for field type`);\n return value;\n }\n};\n\nconst convertValueToStorage = (field: CmsModelField, value: any): any => {\n if ((value as any).toISOString) {\n return (value as Date).toISOString();\n } else if (typeof value === \"string\") {\n return value as string;\n }\n throw new WebinyError(\"Error converting value to a storage type.\", \"TO_STORAGE_ERROR\", {\n value: value,\n fieldId: field.fieldId,\n storageId: field.storageId\n });\n};\n\nexport const createDateStorageTransformPlugin = () => {\n return new StorageTransformPlugin({\n fieldType: \"datetime\",\n fromStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n return convertFromStorage(field, value);\n },\n toStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n if (field.multipleValues) {\n const multipleValues = value as (string | Date | null | undefined)[];\n return (multipleValues || [])\n .filter(v => !!v)\n .map(v => {\n return convertValueToStorage(field, v);\n });\n }\n if ((value as any).toISOString) {\n return (value as Date).toISOString();\n } else if (typeof value === \"string\") {\n return value as string;\n }\n throw new WebinyError(\"Error converting value to a storage type.\", \"TO_STORAGE_ERROR\", {\n value,\n fieldId: field.fieldId,\n storageId: field.storageId\n });\n }\n });\n};\n"],"mappings":"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"}
@@ -7,4 +7,4 @@ export interface StorageValue {
7
7
  value: string;
8
8
  isArray?: boolean;
9
9
  }
10
- export declare const createLongTextStorageTransformPlugin: () => StorageTransformPlugin<string | string[], StorageValue>;
10
+ export declare const createLongTextStorageTransformPlugin: () => StorageTransformPlugin<string | string[], StorageValue, import("@webiny/api-headless-cms/types").CmsModelField>;
@@ -1,2 +1,2 @@
1
1
  import { StorageTransformPlugin } from "@webiny/api-headless-cms";
2
- export declare const createRichTextStorageTransformPlugin: () => StorageTransformPlugin<any, any>;
2
+ export declare const createRichTextStorageTransformPlugin: () => StorageTransformPlugin<any, any, import("@webiny/api-headless-cms/types").CmsModelField>;
package/index.js CHANGED
@@ -40,16 +40,18 @@ var _model2 = require("./operations/model");
40
40
 
41
41
  var _entry2 = require("./operations/entry");
42
42
 
43
- var _plugins2 = require("./plugins");
43
+ var _plugins2 = require("./operations/entry/filtering/plugins");
44
44
 
45
- Object.keys(_plugins2).forEach(function (key) {
45
+ var _plugins3 = require("./plugins");
46
+
47
+ Object.keys(_plugins3).forEach(function (key) {
46
48
  if (key === "default" || key === "__esModule") return;
47
49
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
48
- if (key in exports && exports[key] === _plugins2[key]) return;
50
+ if (key in exports && exports[key] === _plugins3[key]) return;
49
51
  Object.defineProperty(exports, key, {
50
52
  enumerable: true,
51
53
  get: function () {
52
- return _plugins2[key];
54
+ return _plugins3[key];
53
55
  }
54
56
  });
55
57
  });
@@ -101,11 +103,16 @@ const createStorageOperations = params => {
101
103
  * Field plugins for DynamoDB.
102
104
  */
103
105
  (0, _dynamoDb.default)(),
106
+ /**
107
+ * Filter create plugins.
108
+ */
109
+ (0, _plugins2.createFilterCreatePlugins)(),
104
110
  /**
105
111
  * User defined custom plugins.
106
112
  */
107
113
  ...(userPlugins || [])]);
108
114
  return {
115
+ name: "dynamodb",
109
116
  beforeInit: async context => {
110
117
  /**
111
118
  * Collect all required plugins from parent context.
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["createStorageOperations","params","attributes","table","documentClient","plugins","userPlugins","tableInstance","createTable","entities","settings","createSettingsEntity","entityName","ENTITIES","SETTINGS","system","createSystemEntity","SYSTEM","groups","createGroupEntity","GROUPS","models","createModelEntity","MODELS","entries","createEntryEntity","ENTRIES","PluginsContainer","dynamoDbValueFilters","dynamoDbPlugins","beforeInit","context","fieldPlugins","byType","register","getEntities","getTable","createSystemStorageOperations","entity","createSettingsStorageOperations","createGroupsStorageOperations","createModelsStorageOperations","createEntriesStorageOperations"],"sources":["index.ts"],"sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport dynamoDbPlugins from \"./dynamoDb\";\nimport { ENTITIES, StorageOperationsFactory } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createSettingsEntity } from \"~/definitions/settings\";\nimport { createSystemEntity } from \"~/definitions/system\";\nimport { createGroupEntity } from \"~/definitions/group\";\nimport { createModelEntity } from \"~/definitions/model\";\nimport { createEntryEntity } from \"~/definitions/entry\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\nimport { createGroupsStorageOperations } from \"~/operations/group\";\nimport { createModelsStorageOperations } from \"~/operations/model\";\nimport { createEntriesStorageOperations } from \"./operations/entry\";\nimport { CmsModelFieldToGraphQLPlugin } from \"@webiny/api-headless-cms/types\";\n\nexport * from \"./plugins\";\n\nexport const createStorageOperations: StorageOperationsFactory = params => {\n const { attributes, table, documentClient, plugins: userPlugins } = params;\n\n const tableInstance = createTable({\n table,\n documentClient\n });\n\n const entities = {\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SETTINGS] : {}\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n groups: createGroupEntity({\n entityName: ENTITIES.GROUPS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.GROUPS] : {}\n }),\n models: createModelEntity({\n entityName: ENTITIES.MODELS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.MODELS] : {}\n }),\n entries: createEntryEntity({\n entityName: ENTITIES.ENTRIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.ENTRIES] : {}\n })\n };\n\n const plugins = new PluginsContainer([\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Field plugins for DynamoDB.\n */\n dynamoDbPlugins(),\n /**\n * User defined custom plugins.\n */\n ...(userPlugins || [])\n ]);\n\n return {\n beforeInit: async context => {\n /**\n * Collect all required plugins from parent context.\n */\n const fieldPlugins = context.plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n plugins.register(fieldPlugins);\n\n /**\n * Pass the plugins to the parent context.\n */\n context.plugins.register([dynamoDbPlugins()]);\n },\n getEntities: () => entities,\n getTable: () => tableInstance,\n system: createSystemStorageOperations({\n entity: entities.system\n }),\n settings: createSettingsStorageOperations({\n entity: entities.settings\n }),\n groups: createGroupsStorageOperations({\n entity: entities.groups,\n plugins\n }),\n models: createModelsStorageOperations({\n entity: entities.models\n }),\n entries: createEntriesStorageOperations({\n entity: entities.entries,\n plugins\n })\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createStorageOperations","params","attributes","table","documentClient","plugins","userPlugins","tableInstance","createTable","entities","settings","createSettingsEntity","entityName","ENTITIES","SETTINGS","system","createSystemEntity","SYSTEM","groups","createGroupEntity","GROUPS","models","createModelEntity","MODELS","entries","createEntryEntity","ENTRIES","PluginsContainer","dynamoDbValueFilters","dynamoDbPlugins","createFilterCreatePlugins","name","beforeInit","context","fieldPlugins","byType","register","getEntities","getTable","createSystemStorageOperations","entity","createSettingsStorageOperations","createGroupsStorageOperations","createModelsStorageOperations","createEntriesStorageOperations"],"sources":["index.ts"],"sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport dynamoDbPlugins from \"./dynamoDb\";\nimport { ENTITIES, StorageOperationsFactory } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createSettingsEntity } from \"~/definitions/settings\";\nimport { createSystemEntity } from \"~/definitions/system\";\nimport { createGroupEntity } from \"~/definitions/group\";\nimport { createModelEntity } from \"~/definitions/model\";\nimport { createEntryEntity } from \"~/definitions/entry\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\nimport { createGroupsStorageOperations } from \"~/operations/group\";\nimport { createModelsStorageOperations } from \"~/operations/model\";\nimport { createEntriesStorageOperations } from \"./operations/entry\";\nimport { CmsModelFieldToGraphQLPlugin } from \"@webiny/api-headless-cms/types\";\n\nimport { createFilterCreatePlugins } from \"~/operations/entry/filtering/plugins\";\n\nexport * from \"./plugins\";\n\nexport const createStorageOperations: StorageOperationsFactory = params => {\n const { attributes, table, documentClient, plugins: userPlugins } = params;\n\n const tableInstance = createTable({\n table,\n documentClient\n });\n\n const entities = {\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SETTINGS] : {}\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n groups: createGroupEntity({\n entityName: ENTITIES.GROUPS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.GROUPS] : {}\n }),\n models: createModelEntity({\n entityName: ENTITIES.MODELS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.MODELS] : {}\n }),\n entries: createEntryEntity({\n entityName: ENTITIES.ENTRIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.ENTRIES] : {}\n })\n };\n\n const plugins = new PluginsContainer([\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Field plugins for DynamoDB.\n */\n dynamoDbPlugins(),\n /**\n * Filter create plugins.\n */\n createFilterCreatePlugins(),\n /**\n * User defined custom plugins.\n */\n ...(userPlugins || [])\n ]);\n\n return {\n name: \"dynamodb\",\n beforeInit: async context => {\n /**\n * Collect all required plugins from parent context.\n */\n const fieldPlugins = context.plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n plugins.register(fieldPlugins);\n\n /**\n * Pass the plugins to the parent context.\n */\n context.plugins.register([dynamoDbPlugins()]);\n },\n getEntities: () => entities,\n getTable: () => tableInstance,\n system: createSystemStorageOperations({\n entity: entities.system\n }),\n settings: createSettingsStorageOperations({\n entity: entities.settings\n }),\n groups: createGroupsStorageOperations({\n entity: entities.groups,\n plugins\n }),\n models: createModelsStorageOperations({\n entity: entities.models\n }),\n entries: createEntriesStorageOperations({\n entity: entities.entries,\n plugins\n })\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { CmsModel } from "@webiny/api-headless-cms/types";
2
+ import { Field } from "./types";
3
+ import { PluginsContainer } from "@webiny/plugins";
4
+ interface Params {
5
+ model: CmsModel;
6
+ plugins: PluginsContainer;
7
+ }
8
+ interface Fields {
9
+ [key: string]: Field;
10
+ }
11
+ /**
12
+ * This method will map the fieldId (fieldId -> field) to the actual field.
13
+ *
14
+ * In case of nested fields, fieldId is all the parent fieldIds + current one, joined by the dot (.).
15
+ * @param params
16
+ */
17
+ export declare const createFields: (params: Params) => Fields;
18
+ export {};
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createFields = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
12
+ var _systemFields = require("./systemFields");
13
+
14
+ var _plugins = require("../../../plugins");
15
+
16
+ var _mapPlugins = require("./mapPlugins");
17
+
18
+ /**
19
+ * This method will map the fieldId (fieldId -> field) to the actual field.
20
+ *
21
+ * In case of nested fields, fieldId is all the parent fieldIds + current one, joined by the dot (.).
22
+ * @param params
23
+ */
24
+ const createFields = params => {
25
+ const {
26
+ model,
27
+ plugins
28
+ } = params;
29
+ const transformValuePlugins = (0, _mapPlugins.getMappedPlugins)({
30
+ plugins,
31
+ type: "cms-field-filter-value-transform",
32
+ property: "fieldType"
33
+ });
34
+ const valuePathPlugins = (0, _mapPlugins.getMappedPlugins)({
35
+ plugins,
36
+ type: _plugins.CmsEntryFieldFilterPathPlugin.type,
37
+ property: "fieldType"
38
+ });
39
+ const collection = (0, _systemFields.createSystemFields)().reduce((fields, field) => {
40
+ const transformPlugin = transformValuePlugins[field.type];
41
+ fields[field.fieldId] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, field), {}, {
42
+ parents: [],
43
+ system: true,
44
+ createPath: ({
45
+ field
46
+ }) => {
47
+ var _field$settings;
48
+
49
+ return ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.path) || field.fieldId;
50
+ },
51
+ transform: value => {
52
+ if (!transformPlugin) {
53
+ return value;
54
+ }
55
+
56
+ return transformPlugin.transform({
57
+ field,
58
+ value
59
+ });
60
+ }
61
+ });
62
+ return fields;
63
+ }, {});
64
+
65
+ const addFieldsToCollection = (fields, parents = []) => {
66
+ /**
67
+ * Exit early if no fields are sent.
68
+ */
69
+ if (fields.length === 0) {
70
+ return;
71
+ }
72
+
73
+ for (const field of fields) {
74
+ var _field$settings2;
75
+
76
+ const transformPlugin = transformValuePlugins[field.type];
77
+ const valuePathPlugin = valuePathPlugins[field.type];
78
+ /**
79
+ * The required fieldId is a product of all of its parents and its own fieldId.
80
+ */
81
+
82
+ const fieldId = [...parents, {
83
+ fieldId: field.fieldId,
84
+ multipleValues: field.multipleValues
85
+ }].map(f => f.fieldId).join(".");
86
+ collection[fieldId] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, field), {}, {
87
+ parents,
88
+ system: false,
89
+ createPath: params => {
90
+ if (valuePathPlugin) {
91
+ return valuePathPlugin.createPath(params);
92
+ }
93
+
94
+ return ["values"].concat(parents.map(parent => parent.fieldId)).concat([params.field.fieldId]).join(".");
95
+ },
96
+ transform: value => {
97
+ if (!transformPlugin) {
98
+ return value;
99
+ }
100
+
101
+ return transformPlugin.transform({
102
+ field,
103
+ value
104
+ });
105
+ }
106
+ });
107
+ const childFields = (_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.fields;
108
+
109
+ if (!childFields || childFields.length === 0) {
110
+ continue;
111
+ }
112
+
113
+ addFieldsToCollection(childFields, [...parents, {
114
+ fieldId: field.fieldId,
115
+ multipleValues: field.multipleValues
116
+ }]);
117
+ }
118
+ };
119
+
120
+ addFieldsToCollection(model.fields);
121
+ return collection;
122
+ };
123
+
124
+ exports.createFields = createFields;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFields","params","model","plugins","transformValuePlugins","getMappedPlugins","type","property","valuePathPlugins","CmsEntryFieldFilterPathPlugin","collection","createSystemFields","reduce","fields","field","transformPlugin","fieldId","parents","system","createPath","settings","path","transform","value","addFieldsToCollection","length","valuePathPlugin","multipleValues","map","f","join","concat","parent","childFields"],"sources":["createFields.ts"],"sourcesContent":["import { CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { createSystemFields } from \"./systemFields\";\nimport { Field, FieldParent } from \"./types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { CmsFieldFilterValueTransformPlugin } from \"~/types\";\nimport { CmsEntryFieldFilterPathPlugin } from \"~/plugins\";\nimport { getMappedPlugins } from \"./mapPlugins\";\n\ninterface Params {\n model: CmsModel;\n plugins: PluginsContainer;\n}\n\ninterface Fields {\n [key: string]: Field;\n}\n\n/**\n * This method will map the fieldId (fieldId -> field) to the actual field.\n *\n * In case of nested fields, fieldId is all the parent fieldIds + current one, joined by the dot (.).\n * @param params\n */\nexport const createFields = (params: Params) => {\n const { model, plugins } = params;\n\n const transformValuePlugins = getMappedPlugins<CmsFieldFilterValueTransformPlugin>({\n plugins,\n type: \"cms-field-filter-value-transform\",\n property: \"fieldType\"\n });\n const valuePathPlugins = getMappedPlugins<CmsEntryFieldFilterPathPlugin>({\n plugins,\n type: CmsEntryFieldFilterPathPlugin.type,\n property: \"fieldType\"\n });\n\n const collection = createSystemFields().reduce<Fields>((fields, field) => {\n const transformPlugin = transformValuePlugins[field.type];\n\n fields[field.fieldId] = {\n ...field,\n parents: [],\n system: true,\n createPath: ({ field }) => {\n return field.settings?.path || field.fieldId;\n },\n transform: value => {\n if (!transformPlugin) {\n return value;\n }\n return transformPlugin.transform({\n field,\n value\n });\n }\n };\n\n return fields;\n }, {});\n\n const addFieldsToCollection = (fields: CmsModelField[], parents: FieldParent[] = []): void => {\n /**\n * Exit early if no fields are sent.\n */\n if (fields.length === 0) {\n return;\n }\n for (const field of fields) {\n const transformPlugin = transformValuePlugins[field.type];\n const valuePathPlugin = valuePathPlugins[field.type];\n /**\n * The required fieldId is a product of all of its parents and its own fieldId.\n */\n const fieldId = [\n ...parents,\n {\n fieldId: field.fieldId,\n multipleValues: field.multipleValues\n }\n ]\n .map(f => f.fieldId)\n .join(\".\");\n\n collection[fieldId] = {\n ...field,\n parents,\n system: false,\n createPath: params => {\n if (valuePathPlugin) {\n return valuePathPlugin.createPath(params);\n }\n\n return [\"values\"]\n .concat(parents.map(parent => parent.fieldId))\n .concat([params.field.fieldId])\n .join(\".\");\n },\n transform: value => {\n if (!transformPlugin) {\n return value;\n }\n return transformPlugin.transform({\n field,\n value\n });\n }\n };\n const childFields = field.settings?.fields;\n if (!childFields || childFields.length === 0) {\n continue;\n }\n addFieldsToCollection(childFields, [\n ...parents,\n {\n fieldId: field.fieldId,\n multipleValues: field.multipleValues\n }\n ]);\n }\n };\n\n addFieldsToCollection(model.fields);\n\n return collection;\n};\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { CmsEntryListWhere } from "@webiny/api-headless-cms/types";
2
+ import { ValueFilterPlugin } from "@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin";
3
+ import { PluginsContainer } from "@webiny/plugins";
4
+ import { Field } from "./types";
5
+ interface CreateFiltersParams {
6
+ plugins: PluginsContainer;
7
+ where: Partial<CmsEntryListWhere>;
8
+ fields: Record<string, Field>;
9
+ }
10
+ export interface ItemFilter {
11
+ field: Field;
12
+ path: string;
13
+ fieldPathId: string;
14
+ plugin: ValueFilterPlugin;
15
+ negate: boolean;
16
+ compareValue: any;
17
+ transformValue: <I = any, O = any>(value: I) => O;
18
+ }
19
+ export declare const createFilters: (params: CreateFiltersParams) => ItemFilter[];
20
+ export {};
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createFilters = void 0;
9
+
10
+ var _ValueFilterPlugin = require("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin");
11
+
12
+ var _error = _interopRequireDefault(require("@webiny/error"));
13
+
14
+ var _mapPlugins = require("./mapPlugins");
15
+
16
+ var _where = require("./where");
17
+
18
+ var _transform = require("./transform");
19
+
20
+ var _CmsEntryFieldFilterPlugin = require("../../../plugins/CmsEntryFieldFilterPlugin");
21
+
22
+ const createFilters = params => {
23
+ const {
24
+ where,
25
+ plugins,
26
+ fields
27
+ } = params;
28
+ const filterPlugins = (0, _mapPlugins.getMappedPlugins)({
29
+ plugins,
30
+ type: _ValueFilterPlugin.ValueFilterPlugin.type,
31
+ property: "operation"
32
+ });
33
+ const transformValuePlugins = (0, _mapPlugins.getMappedPlugins)({
34
+ plugins,
35
+ type: "cms-field-filter-value-transform",
36
+ property: "fieldType"
37
+ });
38
+ const fieldFilterCreatePlugins = (0, _mapPlugins.getMappedPlugins)({
39
+ plugins,
40
+ type: _CmsEntryFieldFilterPlugin.CmsEntryFieldFilterPlugin.type,
41
+ property: "fieldType"
42
+ });
43
+ const defaultFilterCreatePlugin = fieldFilterCreatePlugins["*"];
44
+
45
+ const getFilterCreatePlugin = type => {
46
+ const filterCreatePlugin = fieldFilterCreatePlugins[type] || defaultFilterCreatePlugin;
47
+
48
+ if (filterCreatePlugin) {
49
+ return filterCreatePlugin;
50
+ }
51
+
52
+ throw new _error.default(`There is no filter create plugin for the field type "${type}".`, "MISSING_FILTER_CREATE_PLUGIN", {
53
+ type
54
+ });
55
+ };
56
+
57
+ const filters = [];
58
+
59
+ for (const key in where) {
60
+ if (where.hasOwnProperty(key) === false) {
61
+ continue;
62
+ }
63
+ /**
64
+ * At the moment we do not allow "OR" and "AND" conditional filtering, so throw an error on it.
65
+ */
66
+
67
+
68
+ if (key === "AND") {
69
+ throw new _error.default(`Conditional "AND" is currently disabled in the DynamoDB only deployment.`, "DISABLED_AND_CONDITIONAL");
70
+ } else if (key === "OR") {
71
+ throw new _error.default(`Conditional "OR" is currently disabled in the DynamoDB only deployment.`, "DISABLED_OR_CONDITIONAL");
72
+ }
73
+
74
+ const value = where[key];
75
+
76
+ if (value === undefined) {
77
+ continue;
78
+ }
79
+
80
+ const whereParams = (0, _where.extractWhereParams)(key);
81
+
82
+ if (!whereParams) {
83
+ continue;
84
+ }
85
+
86
+ const {
87
+ fieldId,
88
+ operation,
89
+ negate
90
+ } = whereParams;
91
+ const field = fields[fieldId];
92
+
93
+ if (!field) {
94
+ throw new _error.default(`There is no field with the fieldId "${fieldId}".`, "FIELD_ERROR", {
95
+ fieldId
96
+ });
97
+ }
98
+ /**
99
+ * We need a filter create plugin for this type.
100
+ */
101
+
102
+
103
+ const filterCreatePlugin = getFilterCreatePlugin(field.type);
104
+ const transformValuePlugin = transformValuePlugins[field.type];
105
+
106
+ const transformValueCallable = value => {
107
+ if (!transformValuePlugin) {
108
+ return value;
109
+ }
110
+
111
+ return transformValuePlugin.transform({
112
+ field,
113
+ value
114
+ });
115
+ };
116
+
117
+ const result = filterCreatePlugin.create({
118
+ key,
119
+ value,
120
+ valueFilterPlugins: filterPlugins,
121
+ transformValuePlugins,
122
+ getFilterCreatePlugin,
123
+ operation,
124
+ negate,
125
+ field,
126
+ fields,
127
+ compareValue: (0, _transform.transformValue)({
128
+ value,
129
+ transform: transformValueCallable
130
+ }),
131
+ transformValue: transformValueCallable
132
+ });
133
+ /**
134
+ * There is a possibility of
135
+ * - no result
136
+ * - result being an array
137
+ * - result being an object
138
+ */
139
+
140
+ if (!result) {
141
+ continue;
142
+ }
143
+
144
+ if (Array.isArray(result)) {
145
+ filters.push(...result);
146
+ continue;
147
+ }
148
+
149
+ filters.push(result);
150
+ }
151
+
152
+ return filters;
153
+ };
154
+
155
+ exports.createFilters = createFilters;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFilters","params","where","plugins","fields","filterPlugins","getMappedPlugins","type","ValueFilterPlugin","property","transformValuePlugins","fieldFilterCreatePlugins","CmsEntryFieldFilterPlugin","defaultFilterCreatePlugin","getFilterCreatePlugin","filterCreatePlugin","WebinyError","filters","key","hasOwnProperty","value","undefined","whereParams","extractWhereParams","fieldId","operation","negate","field","transformValuePlugin","transformValueCallable","transform","result","create","valueFilterPlugins","compareValue","transformValue","Array","isArray","push"],"sources":["createFilters.ts"],"sourcesContent":["import { CmsEntryListWhere } from \"@webiny/api-headless-cms/types\";\nimport { ValueFilterPlugin } from \"@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin\";\nimport { CmsFieldFilterValueTransformPlugin } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { Field } from \"./types\";\nimport { getMappedPlugins } from \"./mapPlugins\";\nimport { extractWhereParams } from \"./where\";\nimport { transformValue } from \"./transform\";\nimport { CmsEntryFieldFilterPlugin } from \"~/plugins/CmsEntryFieldFilterPlugin\";\n\ninterface CreateFiltersParams {\n plugins: PluginsContainer;\n where: Partial<CmsEntryListWhere>;\n fields: Record<string, Field>;\n}\n\nexport interface ItemFilter {\n field: Field;\n path: string;\n fieldPathId: string;\n plugin: ValueFilterPlugin;\n negate: boolean;\n compareValue: any;\n transformValue: <I = any, O = any>(value: I) => O;\n}\n\nexport const createFilters = (params: CreateFiltersParams): ItemFilter[] => {\n const { where, plugins, fields } = params;\n const filterPlugins = getMappedPlugins<ValueFilterPlugin>({\n plugins,\n type: ValueFilterPlugin.type,\n property: \"operation\"\n });\n const transformValuePlugins = getMappedPlugins<CmsFieldFilterValueTransformPlugin>({\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 filterCreatePlugin = fieldFilterCreatePlugins[type] || defaultFilterCreatePlugin;\n if (filterCreatePlugin) {\n return filterCreatePlugin;\n }\n throw new WebinyError(\n `There is no filter create plugin for the field type \"${type}\".`,\n \"MISSING_FILTER_CREATE_PLUGIN\",\n {\n type\n }\n );\n };\n\n const filters: ItemFilter[] = [];\n\n for (const key in where) {\n if (where.hasOwnProperty(key) === false) {\n continue;\n }\n /**\n * At the moment we do not allow \"OR\" and \"AND\" conditional filtering, so throw an error on it.\n */\n if (key === \"AND\") {\n throw new WebinyError(\n `Conditional \"AND\" is currently disabled in the DynamoDB only deployment.`,\n \"DISABLED_AND_CONDITIONAL\"\n );\n } else if (key === \"OR\") {\n throw new WebinyError(\n `Conditional \"OR\" is currently disabled in the DynamoDB only deployment.`,\n \"DISABLED_OR_CONDITIONAL\"\n );\n }\n\n const value = (where as any)[key];\n if (value === undefined) {\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 /**\n * We need a filter create plugin for this type.\n */\n const filterCreatePlugin = getFilterCreatePlugin(field.type);\n\n const transformValuePlugin: CmsFieldFilterValueTransformPlugin =\n transformValuePlugins[field.type];\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 valueFilterPlugins: filterPlugins,\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) {\n continue;\n }\n if (Array.isArray(result)) {\n filters.push(...result);\n continue;\n }\n filters.push(result);\n }\n\n return filters;\n};\n"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Field } from "./types";
2
+ interface Result {
3
+ valuePath: string;
4
+ reverse: boolean;
5
+ fieldId: string;
6
+ field: Field;
7
+ }
8
+ interface Params {
9
+ sortBy: string;
10
+ fields: Record<string, Field>;
11
+ }
12
+ export declare const extractSort: (params: Params) => Result;
13
+ export {};
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.extractSort = void 0;
9
+
10
+ var _error = _interopRequireDefault(require("@webiny/error"));
11
+
12
+ const extractSort = params => {
13
+ const {
14
+ sortBy,
15
+ fields
16
+ } = params;
17
+ const result = sortBy.split("_");
18
+
19
+ if (result.length !== 2) {
20
+ throw new _error.default("Problem in determining the sorting for the entry items.", "SORT_EXTRACT_ERROR", {
21
+ sortBy
22
+ });
23
+ }
24
+
25
+ const [fieldId, order] = result;
26
+ const field = Object.values(fields).find(field => {
27
+ /**
28
+ * We do not support sorting by nested fields.
29
+ */
30
+ if (field.parents.length > 0) {
31
+ return false;
32
+ }
33
+
34
+ return field.fieldId === fieldId;
35
+ });
36
+
37
+ if (!field) {
38
+ throw new _error.default("Sorting field does not exist in the content model.", "SORTING_FIELD_ERROR", {
39
+ fieldId,
40
+ fields
41
+ });
42
+ }
43
+
44
+ const valuePath = field.createPath({
45
+ field
46
+ });
47
+ return {
48
+ field,
49
+ fieldId,
50
+ valuePath,
51
+ reverse: order === "DESC"
52
+ };
53
+ };
54
+
55
+ exports.extractSort = extractSort;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["extractSort","params","sortBy","fields","result","split","length","WebinyError","fieldId","order","field","Object","values","find","parents","valuePath","createPath","reverse"],"sources":["extractSort.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Field } from \"./types\";\n\ninterface Result {\n valuePath: string;\n reverse: boolean;\n fieldId: string;\n field: Field;\n}\n\ninterface Params {\n sortBy: string;\n fields: Record<string, Field>;\n}\n\nexport const extractSort = (params: Params): Result => {\n const { sortBy, fields } = params;\n const result = sortBy.split(\"_\");\n if (result.length !== 2) {\n throw new WebinyError(\n \"Problem in determining the sorting for the entry items.\",\n \"SORT_EXTRACT_ERROR\",\n {\n sortBy\n }\n );\n }\n const [fieldId, order] = result;\n\n const field = Object.values(fields).find(field => {\n /**\n * We do not support sorting by nested fields.\n */\n if (field.parents.length > 0) {\n return false;\n }\n return field.fieldId === fieldId;\n });\n\n if (!field) {\n throw new WebinyError(\n \"Sorting field does not exist in the content model.\",\n \"SORTING_FIELD_ERROR\",\n {\n fieldId,\n fields\n }\n );\n }\n const valuePath = field.createPath({\n field\n });\n return {\n field,\n fieldId,\n valuePath,\n reverse: order === \"DESC\"\n };\n};\n"],"mappings":";;;;;;;;;AAAA;;AAeO,MAAMA,WAAW,GAAIC,MAAD,IAA4B;EACnD,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAqBF,MAA3B;EACA,MAAMG,MAAM,GAAGF,MAAM,CAACG,KAAP,CAAa,GAAb,CAAf;;EACA,IAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;IACrB,MAAM,IAAIC,cAAJ,CACF,yDADE,EAEF,oBAFE,EAGF;MACIL;IADJ,CAHE,CAAN;EAOH;;EACD,MAAM,CAACM,OAAD,EAAUC,KAAV,IAAmBL,MAAzB;EAEA,MAAMM,KAAK,GAAGC,MAAM,CAACC,MAAP,CAAcT,MAAd,EAAsBU,IAAtB,CAA2BH,KAAK,IAAI;IAC9C;AACR;AACA;IACQ,IAAIA,KAAK,CAACI,OAAN,CAAcR,MAAd,GAAuB,CAA3B,EAA8B;MAC1B,OAAO,KAAP;IACH;;IACD,OAAOI,KAAK,CAACF,OAAN,KAAkBA,OAAzB;EACH,CARa,CAAd;;EAUA,IAAI,CAACE,KAAL,EAAY;IACR,MAAM,IAAIH,cAAJ,CACF,oDADE,EAEF,qBAFE,EAGF;MACIC,OADJ;MAEIL;IAFJ,CAHE,CAAN;EAQH;;EACD,MAAMY,SAAS,GAAGL,KAAK,CAACM,UAAN,CAAiB;IAC/BN;EAD+B,CAAjB,CAAlB;EAGA,OAAO;IACHA,KADG;IAEHF,OAFG;IAGHO,SAHG;IAIHE,OAAO,EAAER,KAAK,KAAK;EAJhB,CAAP;AAMH,CA3CM"}
@@ -0,0 +1,16 @@
1
+ import { CmsEntry, CmsEntryListWhere } from "@webiny/api-headless-cms/types";
2
+ import { PluginsContainer } from "@webiny/plugins";
3
+ import { Field, FilterItemFromStorage } from "./types";
4
+ interface Params {
5
+ items: CmsEntry[];
6
+ where: Partial<CmsEntryListWhere>;
7
+ plugins: PluginsContainer;
8
+ fields: Record<string, Field>;
9
+ fromStorage: FilterItemFromStorage;
10
+ fullTextSearch?: {
11
+ term?: string;
12
+ fields?: string[];
13
+ };
14
+ }
15
+ export declare const filter: (params: Params) => Promise<CmsEntry[]>;
16
+ export {};