@webiny/api-form-builder-so-ddb-es 0.0.0-unstable.1e66d121db → 0.0.0-unstable.40876133bb

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 (44) hide show
  1. package/elasticsearch/createElasticsearchIndex.js +2 -2
  2. package/elasticsearch/createElasticsearchIndex.js.map +1 -1
  3. package/elasticsearch/indices/base.js +2 -6
  4. package/elasticsearch/indices/base.js.map +1 -1
  5. package/elasticsearch/indices/japanese.js +2 -6
  6. package/elasticsearch/indices/japanese.js.map +1 -1
  7. package/index.js +2 -2
  8. package/index.js.map +1 -1
  9. package/operations/form/elasticsearchBody.js +6 -14
  10. package/operations/form/elasticsearchBody.js.map +1 -1
  11. package/operations/form/index.js +3 -3
  12. package/operations/form/index.js.map +1 -1
  13. package/operations/submission/elasticsearchBody.js +6 -14
  14. package/operations/submission/elasticsearchBody.js.map +1 -1
  15. package/operations/submission/index.js +4 -6
  16. package/operations/submission/index.js.map +1 -1
  17. package/package.json +14 -14
  18. package/plugins/FormElasticsearchBodyModifierPlugin.d.ts +1 -1
  19. package/plugins/FormElasticsearchBodyModifierPlugin.js +2 -2
  20. package/plugins/FormElasticsearchBodyModifierPlugin.js.map +1 -1
  21. package/plugins/FormElasticsearchFieldPlugin.d.ts +1 -1
  22. package/plugins/FormElasticsearchFieldPlugin.js +2 -2
  23. package/plugins/FormElasticsearchFieldPlugin.js.map +1 -1
  24. package/plugins/FormElasticsearchIndexPlugin.d.ts +1 -1
  25. package/plugins/FormElasticsearchIndexPlugin.js +2 -2
  26. package/plugins/FormElasticsearchIndexPlugin.js.map +1 -1
  27. package/plugins/FormElasticsearchQueryModifierPlugin.d.ts +1 -1
  28. package/plugins/FormElasticsearchQueryModifierPlugin.js +2 -2
  29. package/plugins/FormElasticsearchQueryModifierPlugin.js.map +1 -1
  30. package/plugins/FormElasticsearchSortModifierPlugin.d.ts +1 -1
  31. package/plugins/FormElasticsearchSortModifierPlugin.js +2 -2
  32. package/plugins/FormElasticsearchSortModifierPlugin.js.map +1 -1
  33. package/plugins/SubmissionElasticsearchBodyModifierPlugin.d.ts +1 -1
  34. package/plugins/SubmissionElasticsearchBodyModifierPlugin.js +2 -2
  35. package/plugins/SubmissionElasticsearchBodyModifierPlugin.js.map +1 -1
  36. package/plugins/SubmissionElasticsearchFieldPlugin.d.ts +1 -1
  37. package/plugins/SubmissionElasticsearchFieldPlugin.js +2 -2
  38. package/plugins/SubmissionElasticsearchFieldPlugin.js.map +1 -1
  39. package/plugins/SubmissionElasticsearchQueryModifierPlugin.d.ts +1 -1
  40. package/plugins/SubmissionElasticsearchQueryModifierPlugin.js +2 -2
  41. package/plugins/SubmissionElasticsearchQueryModifierPlugin.js.map +1 -1
  42. package/plugins/SubmissionElasticsearchSortModifierPlugin.d.ts +1 -1
  43. package/plugins/SubmissionElasticsearchSortModifierPlugin.js +2 -2
  44. package/plugins/SubmissionElasticsearchSortModifierPlugin.js.map +1 -1
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.createElasticsearchIndex = void 0;
9
9
 
10
- var _indices = require("@webiny/api-elasticsearch/indices");
10
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
11
11
 
12
12
  var _FormElasticsearchIndexPlugin = require("../plugins/FormElasticsearchIndexPlugin");
13
13
 
@@ -22,7 +22,7 @@ const createElasticsearchIndex = async params => {
22
22
  locale,
23
23
  tenant
24
24
  } = params;
25
- const plugin = (0, _indices.getLastAddedIndexPlugin)({
25
+ const plugin = (0, _apiElasticsearch.getLastAddedIndexPlugin)({
26
26
  container,
27
27
  type: _FormElasticsearchIndexPlugin.FormElasticsearchIndexPlugin.type,
28
28
  locale
@@ -1 +1 @@
1
- {"version":3,"names":["createElasticsearchIndex","params","elasticsearch","plugins","container","locale","tenant","plugin","getLastAddedIndexPlugin","type","FormElasticsearchIndexPlugin","index","configurations","es","response","indices","exists","body","create","ex","WebinyError","message","code","error"],"sources":["createElasticsearchIndex.ts"],"sourcesContent":["import { Client } from \"@elastic/elasticsearch\";\nimport { getLastAddedIndexPlugin } from \"@webiny/api-elasticsearch/indices\";\nimport { FormElasticsearchIndexPlugin } from \"~/plugins/FormElasticsearchIndexPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { configurations } from \"~/configurations\";\n\ninterface CreateElasticsearchIndexParams {\n elasticsearch: Client;\n plugins: PluginsContainer;\n tenant: string;\n locale: string;\n}\n\nexport const createElasticsearchIndex = async (params: CreateElasticsearchIndexParams) => {\n const { elasticsearch, plugins: container, locale, tenant } = params;\n\n const plugin = getLastAddedIndexPlugin<FormElasticsearchIndexPlugin>({\n container,\n type: FormElasticsearchIndexPlugin.type,\n locale\n });\n\n const { index } = configurations.es({\n locale,\n tenant\n });\n\n try {\n const response = await elasticsearch.indices.exists({\n index\n });\n if (response.body) {\n return;\n }\n\n await elasticsearch.indices.create({\n index,\n body: plugin.body\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create Elasticsearch index for the Form Builder.\",\n ex.code || \"FB_ELASTICSEARCH_INDEX_ERROR\",\n {\n error: ex,\n type: FormElasticsearchIndexPlugin.type,\n locale,\n tenant,\n index,\n body: plugin.body\n }\n );\n }\n};\n"],"mappings":";;;;;;;;;AACA;;AACA;;AAEA;;AACA;;AASO,MAAMA,wBAAwB,GAAG,MAAOC,MAAP,IAAkD;EACtF,MAAM;IAAEC,aAAF;IAAiBC,OAAO,EAAEC,SAA1B;IAAqCC,MAArC;IAA6CC;EAA7C,IAAwDL,MAA9D;EAEA,MAAMM,MAAM,GAAG,IAAAC,gCAAA,EAAsD;IACjEJ,SADiE;IAEjEK,IAAI,EAAEC,0DAAA,CAA6BD,IAF8B;IAGjEJ;EAHiE,CAAtD,CAAf;;EAMA,MAAM;IAAEM;EAAF,IAAYC,8BAAA,CAAeC,EAAf,CAAkB;IAChCR,MADgC;IAEhCC;EAFgC,CAAlB,CAAlB;;EAKA,IAAI;IACA,MAAMQ,QAAQ,GAAG,MAAMZ,aAAa,CAACa,OAAd,CAAsBC,MAAtB,CAA6B;MAChDL;IADgD,CAA7B,CAAvB;;IAGA,IAAIG,QAAQ,CAACG,IAAb,EAAmB;MACf;IACH;;IAED,MAAMf,aAAa,CAACa,OAAd,CAAsBG,MAAtB,CAA6B;MAC/BP,KAD+B;MAE/BM,IAAI,EAAEV,MAAM,CAACU;IAFkB,CAA7B,CAAN;EAIH,CAZD,CAYE,OAAOE,EAAP,EAAW;IACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,4DADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,8BAFT,EAGF;MACIC,KAAK,EAAEJ,EADX;MAEIV,IAAI,EAAEC,0DAAA,CAA6BD,IAFvC;MAGIJ,MAHJ;MAIIC,MAJJ;MAKIK,KALJ;MAMIM,IAAI,EAAEV,MAAM,CAACU;IANjB,CAHE,CAAN;EAYH;AACJ,CAxCM"}
1
+ {"version":3,"names":["createElasticsearchIndex","params","elasticsearch","plugins","container","locale","tenant","plugin","getLastAddedIndexPlugin","type","FormElasticsearchIndexPlugin","index","configurations","es","response","indices","exists","body","create","ex","WebinyError","message","code","error"],"sources":["createElasticsearchIndex.ts"],"sourcesContent":["import { Client } from \"@elastic/elasticsearch\";\nimport { getLastAddedIndexPlugin } from \"@webiny/api-elasticsearch\";\nimport { FormElasticsearchIndexPlugin } from \"~/plugins/FormElasticsearchIndexPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { configurations } from \"~/configurations\";\n\ninterface CreateElasticsearchIndexParams {\n elasticsearch: Client;\n plugins: PluginsContainer;\n tenant: string;\n locale: string;\n}\n\nexport const createElasticsearchIndex = async (params: CreateElasticsearchIndexParams) => {\n const { elasticsearch, plugins: container, locale, tenant } = params;\n\n const plugin = getLastAddedIndexPlugin<FormElasticsearchIndexPlugin>({\n container,\n type: FormElasticsearchIndexPlugin.type,\n locale\n });\n\n const { index } = configurations.es({\n locale,\n tenant\n });\n\n try {\n const response = await elasticsearch.indices.exists({\n index\n });\n if (response.body) {\n return;\n }\n\n await elasticsearch.indices.create({\n index,\n body: plugin.body\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create Elasticsearch index for the Form Builder.\",\n ex.code || \"FB_ELASTICSEARCH_INDEX_ERROR\",\n {\n error: ex,\n type: FormElasticsearchIndexPlugin.type,\n locale,\n tenant,\n index,\n body: plugin.body\n }\n );\n }\n};\n"],"mappings":";;;;;;;;;AACA;;AACA;;AAEA;;AACA;;AASO,MAAMA,wBAAwB,GAAG,MAAOC,MAAP,IAAkD;EACtF,MAAM;IAAEC,aAAF;IAAiBC,OAAO,EAAEC,SAA1B;IAAqCC,MAArC;IAA6CC;EAA7C,IAAwDL,MAA9D;EAEA,MAAMM,MAAM,GAAG,IAAAC,yCAAA,EAAsD;IACjEJ,SADiE;IAEjEK,IAAI,EAAEC,0DAAA,CAA6BD,IAF8B;IAGjEJ;EAHiE,CAAtD,CAAf;;EAMA,MAAM;IAAEM;EAAF,IAAYC,8BAAA,CAAeC,EAAf,CAAkB;IAChCR,MADgC;IAEhCC;EAFgC,CAAlB,CAAlB;;EAKA,IAAI;IACA,MAAMQ,QAAQ,GAAG,MAAMZ,aAAa,CAACa,OAAd,CAAsBC,MAAtB,CAA6B;MAChDL;IADgD,CAA7B,CAAvB;;IAGA,IAAIG,QAAQ,CAACG,IAAb,EAAmB;MACf;IACH;;IAED,MAAMf,aAAa,CAACa,OAAd,CAAsBG,MAAtB,CAA6B;MAC/BP,KAD+B;MAE/BM,IAAI,EAAEV,MAAM,CAACU;IAFkB,CAA7B,CAAN;EAIH,CAZD,CAYE,OAAOE,EAAP,EAAW;IACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,4DADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,8BAFT,EAGF;MACIC,KAAK,EAAEJ,EADX;MAEIV,IAAI,EAAEC,0DAAA,CAA6BD,IAFvC;MAGIJ,MAHJ;MAIIC,MAJJ;MAKIK,KALJ;MAMIM,IAAI,EAAEV,MAAM,CAACU;IANjB,CAHE,CAAN;EAYH;AACJ,CAxCM"}
@@ -1,19 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.base = void 0;
9
7
 
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
8
  var _FormElasticsearchIndexPlugin = require("../../plugins/FormElasticsearchIndexPlugin");
13
9
 
14
- var _base = require("@webiny/api-elasticsearch/indexConfiguration/base");
10
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
15
11
 
16
12
  const base = new _FormElasticsearchIndexPlugin.FormElasticsearchIndexPlugin({
17
- body: (0, _objectSpread2.default)({}, _base.base)
13
+ body: (0, _apiElasticsearch.getBaseConfiguration)()
18
14
  });
19
15
  exports.base = base;
@@ -1 +1 @@
1
- {"version":3,"names":["base","FormElasticsearchIndexPlugin","body","baseConfiguration"],"sources":["base.ts"],"sourcesContent":["import { FormElasticsearchIndexPlugin } from \"~/plugins/FormElasticsearchIndexPlugin\";\nimport { base as baseConfiguration } from \"@webiny/api-elasticsearch/indexConfiguration/base\";\n\nexport const base = new FormElasticsearchIndexPlugin({\n body: {\n ...baseConfiguration\n }\n});\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEO,MAAMA,IAAI,GAAG,IAAIC,0DAAJ,CAAiC;EACjDC,IAAI,kCACGC,UADH;AAD6C,CAAjC,CAAb"}
1
+ {"version":3,"names":["base","FormElasticsearchIndexPlugin","body","getBaseConfiguration"],"sources":["base.ts"],"sourcesContent":["import { FormElasticsearchIndexPlugin } from \"~/plugins/FormElasticsearchIndexPlugin\";\nimport { getBaseConfiguration } from \"@webiny/api-elasticsearch\";\n\nexport const base = new FormElasticsearchIndexPlugin({\n body: getBaseConfiguration()\n});\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,MAAMA,IAAI,GAAG,IAAIC,0DAAJ,CAAiC;EACjDC,IAAI,EAAE,IAAAC,sCAAA;AAD2C,CAAjC,CAAb"}
@@ -1,20 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.japanese = void 0;
9
7
 
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- var _japanese = require("@webiny/api-elasticsearch/indexConfiguration/japanese");
8
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
9
 
14
10
  var _FormElasticsearchIndexPlugin = require("../../plugins/FormElasticsearchIndexPlugin");
15
11
 
16
12
  const japanese = new _FormElasticsearchIndexPlugin.FormElasticsearchIndexPlugin({
17
- body: (0, _objectSpread2.default)({}, _japanese.japanese),
13
+ body: (0, _apiElasticsearch.getJapaneseConfiguration)(),
18
14
  locales: ["ja", "ja-jp"]
19
15
  });
20
16
  exports.japanese = japanese;
@@ -1 +1 @@
1
- {"version":3,"names":["japanese","FormElasticsearchIndexPlugin","body","japaneseConfiguration","locales"],"sources":["japanese.ts"],"sourcesContent":["import { japanese as japaneseConfiguration } from \"@webiny/api-elasticsearch/indexConfiguration/japanese\";\nimport { FormElasticsearchIndexPlugin } from \"~/plugins/FormElasticsearchIndexPlugin\";\n\nexport const japanese = new FormElasticsearchIndexPlugin({\n body: {\n ...japaneseConfiguration\n },\n locales: [\"ja\", \"ja-jp\"]\n});\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEO,MAAMA,QAAQ,GAAG,IAAIC,0DAAJ,CAAiC;EACrDC,IAAI,kCACGC,kBADH,CADiD;EAIrDC,OAAO,EAAE,CAAC,IAAD,EAAO,OAAP;AAJ4C,CAAjC,CAAjB"}
1
+ {"version":3,"names":["japanese","FormElasticsearchIndexPlugin","body","getJapaneseConfiguration","locales"],"sources":["japanese.ts"],"sourcesContent":["import { getJapaneseConfiguration } from \"@webiny/api-elasticsearch\";\nimport { FormElasticsearchIndexPlugin } from \"~/plugins/FormElasticsearchIndexPlugin\";\n\nexport const japanese = new FormElasticsearchIndexPlugin({\n body: getJapaneseConfiguration(),\n locales: [\"ja\", \"ja-jp\"]\n});\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,MAAMA,QAAQ,GAAG,IAAIC,0DAAJ,CAAiC;EACrDC,IAAI,EAAE,IAAAC,0CAAA,GAD+C;EAErDC,OAAO,EAAE,CAAC,IAAD,EAAO,OAAP;AAF4C,CAAjC,CAAjB"}
package/index.js CHANGED
@@ -43,7 +43,7 @@ var _plugins = require("@webiny/plugins");
43
43
 
44
44
  var _elasticsearch = require("./definitions/elasticsearch");
45
45
 
46
- var _operators = require("@webiny/api-elasticsearch/operators");
46
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
47
47
 
48
48
  var _indices = require("./elasticsearch/indices");
49
49
 
@@ -97,7 +97,7 @@ const createFormBuilderStorageOperations = params => {
97
97
  /**
98
98
  * Elasticsearch operators.
99
99
  */
100
- (0, _operators.getElasticsearchOperators)(),
100
+ (0, _apiElasticsearch.getElasticsearchOperators)(),
101
101
  /**
102
102
  * Built-in Elasticsearch index plugins
103
103
  */
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["reservedFields","isReserved","name","includes","WebinyError","createFormBuilderStorageOperations","params","attributes","table","tableName","esTable","esTableName","documentClient","elasticsearch","plugins","userPlugins","Object","values","forEach","attrs","keys","PluginsContainer","submissionElasticsearchFields","formElasticsearchFields","dynamoDbValueFilters","getElasticsearchOperators","elasticsearchIndexPlugins","createTable","createElasticsearchTable","entities","form","createFormEntity","entityName","ENTITIES","FORM","submission","createSubmissionEntity","SUBMISSION","system","createSystemEntity","SYSTEM","settings","createSettingsEntity","SETTINGS","esForm","createElasticsearchEntity","ES_FORM","esSubmission","ES_SUBMISSION","init","context","i18n","locales","onLocaleBeforeCreate","subscribe","locale","tenant","createElasticsearchIndex","code","upgrade","getTable","getEsTable","getEntities","createSystemStorageOperations","entity","createSettingsStorageOperations","createFormStorageOperations","esEntity","createSubmissionStorageOperations"],"sources":["index.ts"],"sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport formElasticsearchFields from \"./operations/form/elasticsearchFields\";\nimport submissionElasticsearchFields from \"./operations/submission/elasticsearchFields\";\nimport WebinyError from \"@webiny/error\";\nimport { FormBuilderStorageOperationsFactory, ENTITIES } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createFormEntity } from \"~/definitions/form\";\nimport { createSubmissionEntity } from \"~/definitions/submission\";\nimport { createSystemEntity } from \"~/definitions/system\";\nimport { createSettingsEntity } from \"~/definitions/settings\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\nimport { createSubmissionStorageOperations } from \"~/operations/submission\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\nimport { createFormStorageOperations } from \"~/operations/form\";\nimport { createElasticsearchTable } from \"~/definitions/tableElasticsearch\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createElasticsearchEntity } from \"~/definitions/elasticsearch\";\nimport { getElasticsearchOperators } from \"@webiny/api-elasticsearch/operators\";\nimport { elasticsearchIndexPlugins } from \"~/elasticsearch/indices\";\nimport { createElasticsearchIndex } from \"~/elasticsearch/createElasticsearchIndex\";\n\nconst reservedFields = [\"PK\", \"SK\", \"index\", \"data\", \"TYPE\", \"__type\", \"GSI1_PK\", \"GSI1_SK\"];\n\nconst isReserved = (name: string): void => {\n if (reservedFields.includes(name) === false) {\n return;\n }\n throw new WebinyError(`Attribute name \"${name}\" is not allowed.`, \"ATTRIBUTE_NOT_ALLOWED\", {\n name\n });\n};\n\nexport const createFormBuilderStorageOperations: FormBuilderStorageOperationsFactory = params => {\n const {\n attributes,\n table: tableName,\n esTable: esTableName,\n documentClient,\n elasticsearch,\n plugins: userPlugins\n } = params;\n\n if (attributes) {\n Object.values(attributes).forEach(attrs => {\n Object.keys(attrs).forEach(isReserved);\n });\n }\n\n const plugins = new PluginsContainer([\n /**\n * User defined plugins.\n */\n userPlugins || [],\n /**\n * Elasticsearch field definitions for the submission record.\n */\n submissionElasticsearchFields(),\n /**\n * Elasticsearch field definitions for the form record.\n */\n formElasticsearchFields(),\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Elasticsearch operators.\n */\n getElasticsearchOperators(),\n /**\n * Built-in Elasticsearch index plugins\n */\n elasticsearchIndexPlugins()\n ]);\n\n const table = createTable({\n tableName,\n documentClient\n });\n\n const esTable = createElasticsearchTable({\n tableName: esTableName,\n documentClient\n });\n\n const entities = {\n /**\n * Regular entities.\n */\n form: createFormEntity({\n entityName: ENTITIES.FORM,\n table,\n attributes: attributes ? attributes[ENTITIES.FORM] : {}\n }),\n submission: createSubmissionEntity({\n entityName: ENTITIES.SUBMISSION,\n table,\n attributes: attributes ? attributes[ENTITIES.SUBMISSION] : {}\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table,\n attributes: attributes ? attributes[ENTITIES.SETTINGS] : {}\n }),\n /**\n * Elasticsearch entities.\n */\n esForm: createElasticsearchEntity({\n entityName: ENTITIES.ES_FORM,\n table: esTable,\n attributes: attributes ? attributes[ENTITIES.ES_FORM] : {}\n }),\n esSubmission: createElasticsearchEntity({\n entityName: ENTITIES.ES_SUBMISSION,\n table: esTable,\n attributes: attributes ? attributes[ENTITIES.ES_SUBMISSION] : {}\n })\n };\n\n return {\n init: async context => {\n context.i18n.locales.onLocaleBeforeCreate.subscribe(async ({ locale, tenant }) => {\n await createElasticsearchIndex({\n elasticsearch,\n plugins,\n tenant,\n locale: locale.code\n });\n });\n },\n upgrade: null,\n getTable: () => table,\n getEsTable: () => esTable,\n getEntities: () => entities,\n ...createSystemStorageOperations({\n table,\n entity: entities.system\n }),\n ...createSettingsStorageOperations({\n table,\n entity: entities.settings\n }),\n ...createFormStorageOperations({\n elasticsearch,\n table,\n entity: entities.form,\n esEntity: entities.esForm,\n plugins\n }),\n ...createSubmissionStorageOperations({\n elasticsearch,\n table,\n entity: entities.submission,\n esEntity: entities.esSubmission,\n plugins\n })\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["reservedFields","isReserved","name","includes","WebinyError","createFormBuilderStorageOperations","params","attributes","table","tableName","esTable","esTableName","documentClient","elasticsearch","plugins","userPlugins","Object","values","forEach","attrs","keys","PluginsContainer","submissionElasticsearchFields","formElasticsearchFields","dynamoDbValueFilters","getElasticsearchOperators","elasticsearchIndexPlugins","createTable","createElasticsearchTable","entities","form","createFormEntity","entityName","ENTITIES","FORM","submission","createSubmissionEntity","SUBMISSION","system","createSystemEntity","SYSTEM","settings","createSettingsEntity","SETTINGS","esForm","createElasticsearchEntity","ES_FORM","esSubmission","ES_SUBMISSION","init","context","i18n","locales","onLocaleBeforeCreate","subscribe","locale","tenant","createElasticsearchIndex","code","upgrade","getTable","getEsTable","getEntities","createSystemStorageOperations","entity","createSettingsStorageOperations","createFormStorageOperations","esEntity","createSubmissionStorageOperations"],"sources":["index.ts"],"sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport formElasticsearchFields from \"./operations/form/elasticsearchFields\";\nimport submissionElasticsearchFields from \"./operations/submission/elasticsearchFields\";\nimport WebinyError from \"@webiny/error\";\nimport { FormBuilderStorageOperationsFactory, ENTITIES } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createFormEntity } from \"~/definitions/form\";\nimport { createSubmissionEntity } from \"~/definitions/submission\";\nimport { createSystemEntity } from \"~/definitions/system\";\nimport { createSettingsEntity } from \"~/definitions/settings\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\nimport { createSubmissionStorageOperations } from \"~/operations/submission\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\nimport { createFormStorageOperations } from \"~/operations/form\";\nimport { createElasticsearchTable } from \"~/definitions/tableElasticsearch\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createElasticsearchEntity } from \"~/definitions/elasticsearch\";\nimport { getElasticsearchOperators } from \"@webiny/api-elasticsearch\";\nimport { elasticsearchIndexPlugins } from \"~/elasticsearch/indices\";\nimport { createElasticsearchIndex } from \"~/elasticsearch/createElasticsearchIndex\";\n\nconst reservedFields = [\"PK\", \"SK\", \"index\", \"data\", \"TYPE\", \"__type\", \"GSI1_PK\", \"GSI1_SK\"];\n\nconst isReserved = (name: string): void => {\n if (reservedFields.includes(name) === false) {\n return;\n }\n throw new WebinyError(`Attribute name \"${name}\" is not allowed.`, \"ATTRIBUTE_NOT_ALLOWED\", {\n name\n });\n};\n\nexport const createFormBuilderStorageOperations: FormBuilderStorageOperationsFactory = params => {\n const {\n attributes,\n table: tableName,\n esTable: esTableName,\n documentClient,\n elasticsearch,\n plugins: userPlugins\n } = params;\n\n if (attributes) {\n Object.values(attributes).forEach(attrs => {\n Object.keys(attrs).forEach(isReserved);\n });\n }\n\n const plugins = new PluginsContainer([\n /**\n * User defined plugins.\n */\n userPlugins || [],\n /**\n * Elasticsearch field definitions for the submission record.\n */\n submissionElasticsearchFields(),\n /**\n * Elasticsearch field definitions for the form record.\n */\n formElasticsearchFields(),\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Elasticsearch operators.\n */\n getElasticsearchOperators(),\n /**\n * Built-in Elasticsearch index plugins\n */\n elasticsearchIndexPlugins()\n ]);\n\n const table = createTable({\n tableName,\n documentClient\n });\n\n const esTable = createElasticsearchTable({\n tableName: esTableName,\n documentClient\n });\n\n const entities = {\n /**\n * Regular entities.\n */\n form: createFormEntity({\n entityName: ENTITIES.FORM,\n table,\n attributes: attributes ? attributes[ENTITIES.FORM] : {}\n }),\n submission: createSubmissionEntity({\n entityName: ENTITIES.SUBMISSION,\n table,\n attributes: attributes ? attributes[ENTITIES.SUBMISSION] : {}\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table,\n attributes: attributes ? attributes[ENTITIES.SETTINGS] : {}\n }),\n /**\n * Elasticsearch entities.\n */\n esForm: createElasticsearchEntity({\n entityName: ENTITIES.ES_FORM,\n table: esTable,\n attributes: attributes ? attributes[ENTITIES.ES_FORM] : {}\n }),\n esSubmission: createElasticsearchEntity({\n entityName: ENTITIES.ES_SUBMISSION,\n table: esTable,\n attributes: attributes ? attributes[ENTITIES.ES_SUBMISSION] : {}\n })\n };\n\n return {\n init: async context => {\n context.i18n.locales.onLocaleBeforeCreate.subscribe(async ({ locale, tenant }) => {\n await createElasticsearchIndex({\n elasticsearch,\n plugins,\n tenant,\n locale: locale.code\n });\n });\n },\n upgrade: null,\n getTable: () => table,\n getEsTable: () => esTable,\n getEntities: () => entities,\n ...createSystemStorageOperations({\n table,\n entity: entities.system\n }),\n ...createSettingsStorageOperations({\n table,\n entity: entities.settings\n }),\n ...createFormStorageOperations({\n elasticsearch,\n table,\n entity: entities.form,\n esEntity: entities.esForm,\n plugins\n }),\n ...createSubmissionStorageOperations({\n elasticsearch,\n table,\n entity: entities.submission,\n esEntity: entities.esSubmission,\n plugins\n })\n };\n};\n"],"mappings":"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"}
@@ -9,11 +9,7 @@ exports.createFormElasticType = exports.createElasticsearchBody = void 0;
9
9
 
10
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
- var _cursors = require("@webiny/api-elasticsearch/cursors");
13
-
14
- var _sort = require("@webiny/api-elasticsearch/sort");
15
-
16
- var _limit = require("@webiny/api-elasticsearch/limit");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
17
13
 
18
14
  var _FormElasticsearchFieldPlugin = require("../../plugins/FormElasticsearchFieldPlugin");
19
15
 
@@ -23,10 +19,6 @@ var _FormElasticsearchBodyModifierPlugin = require("../../plugins/FormElasticsea
23
19
 
24
20
  var _FormElasticsearchQueryModifierPlugin = require("../../plugins/FormElasticsearchQueryModifierPlugin");
25
21
 
26
- var _where = require("@webiny/api-elasticsearch/where");
27
-
28
- var _operators = require("@webiny/api-elasticsearch/operators");
29
-
30
22
  const createFormElasticType = () => {
31
23
  return "fb.form";
32
24
  };
@@ -61,7 +53,7 @@ const createElasticsearchQuery = params => {
61
53
  * Be aware that, if having more registered operator plugins of same type, the last one will be used.
62
54
  */
63
55
 
64
- const operatorPlugins = (0, _operators.getElasticsearchOperatorPluginsByLocale)(plugins, initialWhere.locale);
56
+ const operatorPlugins = (0, _apiElasticsearch.getElasticsearchOperatorPluginsByLocale)(plugins, initialWhere.locale);
65
57
  const where = (0, _objectSpread2.default)({}, initialWhere);
66
58
  /**
67
59
  * !!! IMPORTANT !!! There are few specific cases where we hardcode the query conditions.
@@ -100,7 +92,7 @@ const createElasticsearchQuery = params => {
100
92
  * We apply other conditions as they are passed via the where value.
101
93
  */
102
94
 
103
- (0, _where.applyWhere)({
95
+ (0, _apiElasticsearch.applyWhere)({
104
96
  query,
105
97
  where,
106
98
  fields: fieldPlugins,
@@ -121,11 +113,11 @@ const createElasticsearchBody = params => {
121
113
  acc[plugin.field] = plugin;
122
114
  return acc;
123
115
  }, {});
124
- const limit = (0, _limit.createLimit)(initialLimit, 100);
116
+ const limit = (0, _apiElasticsearch.createLimit)(initialLimit, 100);
125
117
  const query = createElasticsearchQuery((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
126
118
  fieldPlugins
127
119
  }));
128
- const sort = (0, _sort.createSort)({
120
+ const sort = (0, _apiElasticsearch.createSort)({
129
121
  sort: initialSort,
130
122
  fieldPlugins
131
123
  });
@@ -161,7 +153,7 @@ const createElasticsearchBody = params => {
161
153
  * Which is correct in some cases. In our case, it is not.
162
154
  * https://www.elastic.co/guide/en/elasticsearch/reference/7.13/paginate-search-results.html
163
155
  */
164
- search_after: (0, _cursors.decodeCursor)(after),
156
+ search_after: (0, _apiElasticsearch.decodeCursor)(after),
165
157
  sort
166
158
  };
167
159
  const bodyModifiers = plugins.byType(_FormElasticsearchBodyModifierPlugin.FormElasticsearchBodyModifierPlugin.type);
@@ -1 +1 @@
1
- {"version":3,"names":["createFormElasticType","createInitialQueryValue","must","term","must_not","should","filter","createElasticsearchQuery","params","plugins","where","initialWhere","fieldPlugins","query","operatorPlugins","getElasticsearchOperatorPluginsByLocale","locale","sharedIndex","process","env","ELASTICSEARCH_SHARED_INDEXES","tenant","push","applyWhere","fields","operators","createElasticsearchBody","limit","initialLimit","sort","initialSort","after","byType","FormElasticsearchFieldPlugin","type","reduce","acc","plugin","field","createLimit","createSort","queryModifiers","FormElasticsearchQueryModifierPlugin","modifyQuery","sortModifiers","FormElasticsearchSortModifierPlugin","modifySort","body","constant_score","bool","size","search_after","decodeCursor","bodyModifiers","FormElasticsearchBodyModifierPlugin","modifyBody"],"sources":["elasticsearchBody.ts"],"sourcesContent":["import { SearchBody as esSearchBody } from \"elastic-ts\";\nimport { decodeCursor } from \"@webiny/api-elasticsearch/cursors\";\nimport { ElasticsearchBoolQueryConfig } from \"@webiny/api-elasticsearch/types\";\nimport { createSort } from \"@webiny/api-elasticsearch/sort\";\nimport { createLimit } from \"@webiny/api-elasticsearch/limit\";\nimport { FormElasticsearchFieldPlugin } from \"~/plugins/FormElasticsearchFieldPlugin\";\nimport { FormElasticsearchSortModifierPlugin } from \"~/plugins/FormElasticsearchSortModifierPlugin\";\nimport { FormElasticsearchBodyModifierPlugin } from \"~/plugins/FormElasticsearchBodyModifierPlugin\";\nimport { FormBuilderStorageOperationsListFormsParams } from \"@webiny/api-form-builder/types\";\nimport { FormElasticsearchQueryModifierPlugin } from \"~/plugins/FormElasticsearchQueryModifierPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { applyWhere } from \"@webiny/api-elasticsearch/where\";\nimport { getElasticsearchOperatorPluginsByLocale } from \"@webiny/api-elasticsearch/operators\";\n\nexport const createFormElasticType = (): string => {\n return \"fb.form\";\n};\n\nconst createInitialQueryValue = (): ElasticsearchBoolQueryConfig => {\n return {\n must: [\n /**\n * We add the __type filtering in the initial query because it must be applied.\n */\n {\n term: {\n \"__type.keyword\": createFormElasticType()\n }\n }\n ],\n must_not: [],\n should: [],\n filter: []\n };\n};\n\ninterface CreateElasticsearchQueryParams extends CreateElasticsearchBodyParams {\n fieldPlugins: Record<string, FormElasticsearchFieldPlugin>;\n}\n\nconst createElasticsearchQuery = (params: CreateElasticsearchQueryParams) => {\n const { plugins, where: initialWhere, fieldPlugins } = params;\n const query = createInitialQueryValue();\n /**\n * Be aware that, if having more registered operator plugins of same type, the last one will be used.\n */\n const operatorPlugins = getElasticsearchOperatorPluginsByLocale(plugins, initialWhere.locale);\n\n const where: Partial<FormBuilderStorageOperationsListFormsParams[\"where\"]> = {\n ...initialWhere\n };\n /**\n * !!! IMPORTANT !!! There are few specific cases where we hardcode the query conditions.\n *\n * When ES index is shared between tenants, we need to filter records by tenant ID.\n * No need for the tenant filtering otherwise as each index is for single tenant.\n */\n const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === \"true\";\n if (sharedIndex && where.tenant) {\n query.must.push({\n term: {\n \"tenant.keyword\": where.tenant\n }\n });\n }\n /**\n * Remove tenant so it is not applied again later.\n * Possibly tenant is not defined, but just in case, remove it.\n */\n delete where.tenant;\n /**\n * Add the locale to filtering.\n */\n query.must.push({\n term: {\n \"locale.keyword\": where.locale as string\n }\n });\n delete where.locale;\n /**\n * We apply other conditions as they are passed via the where value.\n */\n applyWhere({\n query,\n where,\n fields: fieldPlugins,\n operators: operatorPlugins\n });\n\n return query;\n};\n\ninterface CreateElasticsearchBodyParams {\n plugins: PluginsContainer;\n where: FormBuilderStorageOperationsListFormsParams[\"where\"];\n limit: number;\n after?: string;\n sort: string[];\n}\n\nexport const createElasticsearchBody = (params: CreateElasticsearchBodyParams): esSearchBody => {\n const { plugins, where, limit: initialLimit, sort: initialSort, after } = params;\n\n const fieldPlugins = plugins\n .byType<FormElasticsearchFieldPlugin>(FormElasticsearchFieldPlugin.type)\n .reduce((acc, plugin) => {\n acc[plugin.field] = plugin;\n return acc;\n }, {} as Record<string, FormElasticsearchFieldPlugin>);\n\n const limit = createLimit(initialLimit, 100);\n\n const query = createElasticsearchQuery({\n ...params,\n fieldPlugins\n });\n\n const sort = createSort({\n sort: initialSort,\n fieldPlugins\n });\n\n const queryModifiers = plugins.byType<FormElasticsearchQueryModifierPlugin>(\n FormElasticsearchQueryModifierPlugin.type\n );\n\n for (const plugin of queryModifiers) {\n plugin.modifyQuery({\n query,\n where\n });\n }\n\n const sortModifiers = plugins.byType<FormElasticsearchSortModifierPlugin>(\n FormElasticsearchSortModifierPlugin.type\n );\n\n for (const plugin of sortModifiers) {\n plugin.modifySort({\n sort\n });\n }\n\n const body = {\n query: {\n constant_score: {\n filter: {\n bool: {\n ...query\n }\n }\n }\n },\n size: limit + 1,\n /**\n * Casting as any is required due to search_after is accepting an array of values.\n * Which is correct in some cases. In our case, it is not.\n * https://www.elastic.co/guide/en/elasticsearch/reference/7.13/paginate-search-results.html\n */\n search_after: decodeCursor(after) as any,\n sort\n };\n\n const bodyModifiers = plugins.byType<FormElasticsearchBodyModifierPlugin>(\n FormElasticsearchBodyModifierPlugin.type\n );\n\n for (const plugin of bodyModifiers) {\n plugin.modifyBody({\n body\n });\n }\n\n return body;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createFormElasticType","createInitialQueryValue","must","term","must_not","should","filter","createElasticsearchQuery","params","plugins","where","initialWhere","fieldPlugins","query","operatorPlugins","getElasticsearchOperatorPluginsByLocale","locale","sharedIndex","process","env","ELASTICSEARCH_SHARED_INDEXES","tenant","push","applyWhere","fields","operators","createElasticsearchBody","limit","initialLimit","sort","initialSort","after","byType","FormElasticsearchFieldPlugin","type","reduce","acc","plugin","field","createLimit","createSort","queryModifiers","FormElasticsearchQueryModifierPlugin","modifyQuery","sortModifiers","FormElasticsearchSortModifierPlugin","modifySort","body","constant_score","bool","size","search_after","decodeCursor","bodyModifiers","FormElasticsearchBodyModifierPlugin","modifyBody"],"sources":["elasticsearchBody.ts"],"sourcesContent":["import { SearchBody as esSearchBody } from \"elastic-ts\";\nimport {\n decodeCursor,\n getElasticsearchOperatorPluginsByLocale,\n applyWhere,\n createLimit,\n createSort\n} from \"@webiny/api-elasticsearch\";\nimport { ElasticsearchBoolQueryConfig } from \"@webiny/api-elasticsearch/types\";\nimport { FormElasticsearchFieldPlugin } from \"~/plugins/FormElasticsearchFieldPlugin\";\nimport { FormElasticsearchSortModifierPlugin } from \"~/plugins/FormElasticsearchSortModifierPlugin\";\nimport { FormElasticsearchBodyModifierPlugin } from \"~/plugins/FormElasticsearchBodyModifierPlugin\";\nimport { FormBuilderStorageOperationsListFormsParams } from \"@webiny/api-form-builder/types\";\nimport { FormElasticsearchQueryModifierPlugin } from \"~/plugins/FormElasticsearchQueryModifierPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\nexport const createFormElasticType = (): string => {\n return \"fb.form\";\n};\n\nconst createInitialQueryValue = (): ElasticsearchBoolQueryConfig => {\n return {\n must: [\n /**\n * We add the __type filtering in the initial query because it must be applied.\n */\n {\n term: {\n \"__type.keyword\": createFormElasticType()\n }\n }\n ],\n must_not: [],\n should: [],\n filter: []\n };\n};\n\ninterface CreateElasticsearchQueryParams extends CreateElasticsearchBodyParams {\n fieldPlugins: Record<string, FormElasticsearchFieldPlugin>;\n}\n\nconst createElasticsearchQuery = (params: CreateElasticsearchQueryParams) => {\n const { plugins, where: initialWhere, fieldPlugins } = params;\n const query = createInitialQueryValue();\n /**\n * Be aware that, if having more registered operator plugins of same type, the last one will be used.\n */\n const operatorPlugins = getElasticsearchOperatorPluginsByLocale(plugins, initialWhere.locale);\n\n const where: Partial<FormBuilderStorageOperationsListFormsParams[\"where\"]> = {\n ...initialWhere\n };\n /**\n * !!! IMPORTANT !!! There are few specific cases where we hardcode the query conditions.\n *\n * When ES index is shared between tenants, we need to filter records by tenant ID.\n * No need for the tenant filtering otherwise as each index is for single tenant.\n */\n const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === \"true\";\n if (sharedIndex && where.tenant) {\n query.must.push({\n term: {\n \"tenant.keyword\": where.tenant\n }\n });\n }\n /**\n * Remove tenant so it is not applied again later.\n * Possibly tenant is not defined, but just in case, remove it.\n */\n delete where.tenant;\n /**\n * Add the locale to filtering.\n */\n query.must.push({\n term: {\n \"locale.keyword\": where.locale as string\n }\n });\n delete where.locale;\n /**\n * We apply other conditions as they are passed via the where value.\n */\n applyWhere({\n query,\n where,\n fields: fieldPlugins,\n operators: operatorPlugins\n });\n\n return query;\n};\n\ninterface CreateElasticsearchBodyParams {\n plugins: PluginsContainer;\n where: FormBuilderStorageOperationsListFormsParams[\"where\"];\n limit: number;\n after?: string;\n sort: string[];\n}\n\nexport const createElasticsearchBody = (params: CreateElasticsearchBodyParams): esSearchBody => {\n const { plugins, where, limit: initialLimit, sort: initialSort, after } = params;\n\n const fieldPlugins = plugins\n .byType<FormElasticsearchFieldPlugin>(FormElasticsearchFieldPlugin.type)\n .reduce((acc, plugin) => {\n acc[plugin.field] = plugin;\n return acc;\n }, {} as Record<string, FormElasticsearchFieldPlugin>);\n\n const limit = createLimit(initialLimit, 100);\n\n const query = createElasticsearchQuery({\n ...params,\n fieldPlugins\n });\n\n const sort = createSort({\n sort: initialSort,\n fieldPlugins\n });\n\n const queryModifiers = plugins.byType<FormElasticsearchQueryModifierPlugin>(\n FormElasticsearchQueryModifierPlugin.type\n );\n\n for (const plugin of queryModifiers) {\n plugin.modifyQuery({\n query,\n where\n });\n }\n\n const sortModifiers = plugins.byType<FormElasticsearchSortModifierPlugin>(\n FormElasticsearchSortModifierPlugin.type\n );\n\n for (const plugin of sortModifiers) {\n plugin.modifySort({\n sort\n });\n }\n\n const body = {\n query: {\n constant_score: {\n filter: {\n bool: {\n ...query\n }\n }\n }\n },\n size: limit + 1,\n /**\n * Casting as any is required due to search_after is accepting an array of values.\n * Which is correct in some cases. In our case, it is not.\n * https://www.elastic.co/guide/en/elasticsearch/reference/7.13/paginate-search-results.html\n */\n search_after: decodeCursor(after) as any,\n sort\n };\n\n const bodyModifiers = plugins.byType<FormElasticsearchBodyModifierPlugin>(\n FormElasticsearchBodyModifierPlugin.type\n );\n\n for (const plugin of bodyModifiers) {\n plugin.modifyBody({\n body\n });\n }\n\n return body;\n};\n"],"mappings":"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"}
@@ -29,7 +29,7 @@ var _utils = require("@webiny/utils");
29
29
 
30
30
  var _elasticsearchBody = require("./elasticsearchBody");
31
31
 
32
- var _cursors = require("@webiny/api-elasticsearch/cursors");
32
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
33
33
 
34
34
  const getESDataForLatestRevision = form => ({
35
35
  __type: (0, _elasticsearchBody.createFormElasticType)(),
@@ -368,7 +368,7 @@ const createFormStorageOperations = params => {
368
368
  sort,
369
369
  limit: limit + 1,
370
370
  where,
371
- after: (0, _cursors.decodeCursor)(after)
371
+ after: (0, _apiElasticsearch.decodeCursor)(after)
372
372
  });
373
373
 
374
374
  const esConfig = _configurations.configurations.es({
@@ -412,7 +412,7 @@ const createFormStorageOperations = params => {
412
412
  const meta = {
413
413
  hasMoreItems,
414
414
  totalCount: total.value,
415
- cursor: items.length > 0 ? (0, _cursors.encodeCursor)(hits[items.length - 1].sort) || null : null
415
+ cursor: items.length > 0 ? (0, _apiElasticsearch.encodeCursor)(hits[items.length - 1].sort) || null : null
416
416
  };
417
417
  return {
418
418
  items,
@@ -1 +1 @@
1
- {"version":3,"names":["getESDataForLatestRevision","form","__type","createFormElasticType","id","createdOn","savedOn","name","slug","published","publishedOn","version","locked","status","createdBy","ownedBy","tenant","locale","webinyVersion","formId","createFormStorageOperations","params","entity","esEntity","table","plugins","elasticsearch","formDynamoDbFields","fields","createFormPartitionKey","targetId","parseIdentifier","createRevisionSortKey","value","Number","zeroPad","createLatestSortKey","createLatestPublishedSortKey","createFormType","createFormLatestType","createFormLatestPublishedType","createForm","revisionKeys","PK","SK","latestKeys","items","putBatch","TYPE","batchWriteAll","ex","WebinyError","message","code","index","configurations","es","put","data","createFormFrom","original","latest","updateForm","latestForm","getForm","where","isLatestForm","push","sortKey","keys","result","get","Item","cleanupItem","listForms","sort","limit","after","body","createElasticsearchBody","decodeCursor","esConfig","query","response","search","hits","total","map","item","_source","hasMoreItems","length","pop","meta","totalCount","cursor","encodeCursor","listFormRevisions","initialWhere","queryAllParams","partitionKey","options","beginsWith","queryAll","undefined","filteredItems","filterItems","sortItems","deleteForm","gte","deleteItems","deleteBatch","delete","deleteFormRevision","revisions","previous","latestPublishedForm","find","rev","isLatest","isLatestPublished","esDataItem","previouslyPublishedForm","filter","f","a","b","Date","getTime","shift","publishForm","latestPublishedKeys","esData","unpublishForm","version_not","publishedOn_not","previouslyPublishedRevision"],"sources":["index.ts"],"sourcesContent":["import {\n FbForm,\n FormBuilderStorageOperationsCreateFormFromParams,\n FormBuilderStorageOperationsCreateFormParams,\n FormBuilderStorageOperationsDeleteFormParams,\n FormBuilderStorageOperationsDeleteFormRevisionParams,\n FormBuilderStorageOperationsGetFormParams,\n FormBuilderStorageOperationsListFormRevisionsParams,\n FormBuilderStorageOperationsListFormRevisionsParamsWhere,\n FormBuilderStorageOperationsListFormsParams,\n FormBuilderStorageOperationsListFormsResponse,\n FormBuilderStorageOperationsPublishFormParams,\n FormBuilderStorageOperationsUnpublishFormParams,\n FormBuilderStorageOperationsUpdateFormParams\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { configurations } from \"~/configurations\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport fields from \"./fields\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { parseIdentifier, zeroPad } from \"@webiny/utils\";\nimport { createElasticsearchBody, createFormElasticType } from \"./elasticsearchBody\";\nimport { decodeCursor, encodeCursor } from \"@webiny/api-elasticsearch/cursors\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { FormBuilderFormCreateKeyParams, FormBuilderFormStorageOperations } from \"~/types\";\nimport { ElasticsearchSearchResponse } from \"@webiny/api-elasticsearch/types\";\n\nexport type DbRecord<T = any> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\nexport interface CreateFormStorageOperationsParams {\n entity: Entity<any>;\n esEntity: Entity<any>;\n table: Table;\n elasticsearch: Client;\n plugins: PluginsContainer;\n}\n\ntype FbFormElastic = Omit<FbForm, \"triggers\" | \"fields\" | \"settings\" | \"layout\" | \"stats\"> & {\n __type: string;\n};\n\nconst getESDataForLatestRevision = (form: FbForm): FbFormElastic => ({\n __type: createFormElasticType(),\n id: form.id,\n createdOn: form.createdOn,\n savedOn: form.savedOn,\n name: form.name,\n slug: form.slug,\n published: form.published,\n publishedOn: form.publishedOn,\n version: form.version,\n locked: form.locked,\n status: form.status,\n createdBy: form.createdBy,\n ownedBy: form.ownedBy,\n tenant: form.tenant,\n locale: form.locale,\n webinyVersion: form.webinyVersion,\n formId: form.formId\n});\n\nexport const createFormStorageOperations = (\n params: CreateFormStorageOperationsParams\n): FormBuilderFormStorageOperations => {\n const { entity, esEntity, table, plugins, elasticsearch } = params;\n\n const formDynamoDbFields = fields();\n\n const createFormPartitionKey = (params: FormBuilderFormCreateKeyParams): string => {\n const { tenant, locale, id: targetId } = params;\n\n const { id } = parseIdentifier(targetId);\n\n return `T#${tenant}#L#${locale}#FB#F#${id}`;\n };\n\n const createRevisionSortKey = (value: string | number | undefined): string => {\n const version =\n typeof value === \"number\" ? Number(value) : (parseIdentifier(value).version as number);\n return `REV#${zeroPad(version)}`;\n };\n\n const createLatestSortKey = (): string => {\n return \"L\";\n };\n\n const createLatestPublishedSortKey = (): string => {\n return \"LP\";\n };\n\n const createFormType = (): string => {\n return \"fb.form\";\n };\n\n const createFormLatestType = (): string => {\n return \"fb.form.latest\";\n };\n\n const createFormLatestPublishedType = (): string => {\n return \"fb.form.latestPublished\";\n };\n\n const createForm = async (\n params: FormBuilderStorageOperationsCreateFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.id)\n };\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...form,\n TYPE: createFormType(),\n ...revisionKeys\n }),\n entity.putBatch({\n ...form,\n TYPE: createFormLatestType(),\n ...latestKeys\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not insert form data into regular table.\",\n ex.code || \"CREATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n form\n }\n );\n }\n try {\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n await esEntity.put({\n index,\n data: getESDataForLatestRevision(form),\n TYPE: createFormType(),\n ...latestKeys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not insert form data into Elasticsearch table.\",\n ex.code || \"CREATE_FORM_ERROR\",\n {\n latestKeys,\n form\n }\n );\n }\n return form;\n };\n\n const createFormFrom = async (\n params: FormBuilderStorageOperationsCreateFormFromParams\n ): Promise<FbForm> => {\n const { form, original, latest } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.version)\n };\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not create form data in the regular table, from existing form.\",\n ex.code || \"CREATE_FORM_FROM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latest\n }\n );\n }\n\n try {\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n await esEntity.put({\n index,\n data: getESDataForLatestRevision(form),\n TYPE: createFormLatestType(),\n ...latestKeys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not create form in the Elasticsearch table, from existing form.\",\n ex.code || \"CREATE_FORM_FROM_ERROR\",\n {\n latestKeys,\n form,\n latest,\n original\n }\n );\n }\n return form;\n };\n\n const updateForm = async (\n params: FormBuilderStorageOperationsUpdateFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.id)\n };\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n TYPE: createFormType(),\n ...revisionKeys\n })\n ];\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n TYPE: createFormLatestType(),\n ...latestKeys\n })\n );\n }\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form data in the regular table.\",\n ex.code || \"UPDATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latestForm\n }\n );\n }\n /**\n * No need to go further if its not latest form.\n */\n if (!isLatestForm) {\n return form;\n }\n\n try {\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n await esEntity.put({\n index,\n data: getESDataForLatestRevision(form),\n TYPE: createFormLatestType(),\n ...latestKeys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form data in the Elasticsearch table.\",\n ex.code || \"UPDATE_FORM_ERROR\",\n {\n latestKeys,\n form,\n latestForm,\n original\n }\n );\n }\n return form;\n };\n\n const getForm = async (\n params: FormBuilderStorageOperationsGetFormParams\n ): Promise<FbForm | null> => {\n const { where } = params;\n const { id, formId, latest, published, version, tenant, locale } = where;\n if (latest && published) {\n throw new WebinyError(\"Cannot have both latest and published params.\");\n }\n let sortKey: string;\n if (latest) {\n sortKey = createLatestSortKey();\n } else if (published && !version) {\n /**\n * Because of the specifics how DynamoDB works, we must not load the published record if version is sent.\n */\n sortKey = createLatestPublishedSortKey();\n } else if (id || version) {\n sortKey = createRevisionSortKey(version || id);\n } else {\n throw new WebinyError(\n \"Missing parameter to create a sort key.\",\n \"MISSING_WHERE_PARAMETER\",\n {\n where\n }\n );\n }\n\n const keys = {\n PK: createFormPartitionKey({\n tenant,\n locale,\n id: (formId || id) as string\n }),\n SK: sortKey\n };\n\n try {\n const result = await entity.get(keys);\n if (!result || !result.Item) {\n return null;\n }\n return cleanupItem(entity, result.Item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get form by keys.\",\n ex.code || \"GET_FORM_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const listForms = async (\n params: FormBuilderStorageOperationsListFormsParams\n ): Promise<FormBuilderStorageOperationsListFormsResponse> => {\n const { sort, limit, where, after } = params;\n\n const body = createElasticsearchBody({\n plugins,\n sort,\n limit: limit + 1,\n where,\n after: decodeCursor(after) as any\n });\n\n const esConfig = configurations.es({\n tenant: where.tenant,\n locale: where.locale\n });\n\n const query = {\n ...esConfig,\n body\n };\n\n let response: ElasticsearchSearchResponse<FbForm>;\n try {\n response = await elasticsearch.search(query);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could list forms.\",\n ex.code || \"LIST_FORMS_ERROR\",\n {\n where,\n query\n }\n );\n }\n\n const { hits, total } = response.body.hits;\n const items = hits.map(item => item._source);\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n /**\n * Remove the last item from results, we don't want to include it.\n */\n items.pop();\n }\n /**\n * Cursor is the `sort` value of the last item in the array.\n * https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after\n */\n\n const meta = {\n hasMoreItems,\n totalCount: total.value,\n cursor: items.length > 0 ? encodeCursor(hits[items.length - 1].sort) || null : null\n };\n\n return {\n items,\n meta\n };\n };\n\n const listFormRevisions = async (\n params: FormBuilderStorageOperationsListFormRevisionsParams\n ): Promise<FbForm[]> => {\n const { where: initialWhere, sort } = params;\n const { id, formId, tenant, locale } = initialWhere;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormPartitionKey({\n tenant,\n locale,\n id: (id || formId) as string\n }),\n options: {\n beginsWith: \"REV#\"\n }\n };\n\n let items: FbForm[] = [];\n try {\n items = await queryAll<FbForm>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms by given params.\",\n ex.code || \"QUERY_FORMS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n const where: Partial<FormBuilderStorageOperationsListFormRevisionsParamsWhere> = {\n ...initialWhere,\n id: undefined,\n formId: undefined\n };\n const filteredItems = filterItems({\n plugins,\n items,\n where,\n fields: formDynamoDbFields\n });\n if (!sort || sort.length === 0) {\n return filteredItems;\n }\n return sortItems({\n items: filteredItems,\n sort,\n fields: formDynamoDbFields\n });\n };\n\n const deleteForm = async (\n params: FormBuilderStorageOperationsDeleteFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n let items: any[];\n /**\n * This will find all form and submission records.\n */\n const queryAllParams = {\n entity,\n partitionKey: createFormPartitionKey(form),\n options: {\n gte: \" \"\n }\n };\n try {\n items = await queryAll<DbRecord>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms and submissions by given params.\",\n ex.code || \"QUERY_FORM_AND_SUBMISSIONS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const deleteItems = items.map(item => {\n return entity.deleteBatch({\n PK: item.PK,\n SK: item.SK\n });\n });\n try {\n await batchWriteAll({\n table,\n items: deleteItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form and it's submissions.\",\n ex.code || \"DELETE_FORM_AND_SUBMISSIONS_ERROR\"\n );\n }\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n try {\n await esEntity.delete(latestKeys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete latest form record from Elasticsearch.\",\n ex.code || \"DELETE_FORM_ERROR\",\n {\n latestKeys\n }\n );\n }\n return form;\n };\n /**\n * We need to:\n * - delete current revision\n * - get previously published revision and update the record if it exists or delete if it does not\n * - update latest record if current one is the latest\n */\n const deleteFormRevision = async (\n params: FormBuilderStorageOperationsDeleteFormRevisionParams\n ): Promise<FbForm> => {\n const { form, revisions, previous } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.id)\n };\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const latestForm = revisions[0];\n const latestPublishedForm = revisions.find(rev => rev.published === true);\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [entity.deleteBatch(revisionKeys)];\n let esDataItem = undefined;\n\n if (isLatest || isLatestPublished) {\n /**\n * Sort out the latest published record.\n */\n if (isLatestPublished) {\n const previouslyPublishedForm = revisions\n .filter(f => !!f.publishedOn && f.version !== form.version)\n .sort((a, b) => {\n return (\n new Date(b.publishedOn as string).getTime() -\n new Date(a.publishedOn as string).getTime()\n );\n })\n .shift();\n if (previouslyPublishedForm) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedForm,\n PK: createFormPartitionKey(previouslyPublishedForm),\n SK: createLatestPublishedSortKey(),\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(\n entity.deleteBatch({\n PK: createFormPartitionKey(form),\n SK: createLatestPublishedSortKey()\n })\n );\n }\n }\n /**\n * Sort out the latest record.\n */\n if (isLatest && previous) {\n items.push(\n entity.putBatch({\n ...previous,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n\n const { index } = configurations.es({\n tenant: previous.tenant,\n locale: previous.locale\n });\n\n esDataItem = {\n index,\n ...latestKeys,\n data: getESDataForLatestRevision(previous)\n };\n }\n }\n /**\n * Now save the batch data.\n */\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form revision from regular table.\",\n ex.code || \"DELETE_FORM_REVISION_ERROR\",\n {\n form,\n latestForm,\n revisionKeys,\n latestKeys\n }\n );\n }\n /**\n * And then the Elasticsearch data, if any.\n */\n if (!esDataItem) {\n return form;\n }\n try {\n await esEntity.put(esDataItem);\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form from to the Elasticsearch table.\",\n ex.code || \"DELETE_FORM_REVISION_ERROR\",\n {\n form,\n latestForm,\n revisionKeys,\n latestKeys\n }\n );\n }\n };\n\n /**\n * We need to save form in:\n * - regular form record\n * - latest published form record\n * - latest form record - if form is latest one\n * - elasticsearch latest form record\n */\n const publishForm = async (\n params: FormBuilderStorageOperationsPublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.version)\n };\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const latestPublishedKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestPublishedSortKey()\n };\n\n const { locale, tenant, formId } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n /**\n * Update revision and latest published records\n */\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n ];\n /**\n * Update the latest form as well\n */\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not publish form.\",\n ex.code || \"PUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n if (!isLatestForm) {\n return form;\n }\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n const esData = getESDataForLatestRevision(form);\n try {\n await esEntity.put({\n ...latestKeys,\n index,\n TYPE: createFormLatestType(),\n data: esData\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not publish form to the Elasticsearch.\",\n ex.code || \"PUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n };\n\n /**\n * We need to:\n * - update form revision record\n * - if latest published (LP) is current form, find the previously published record and update LP if there is some previously published, delete otherwise\n * - if is latest update the Elasticsearch record\n */\n const unpublishForm = async (\n params: FormBuilderStorageOperationsUnpublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.version)\n };\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const latestPublishedKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestPublishedSortKey()\n };\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const latestPublishedForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n published: true\n }\n });\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n TYPE: createFormType()\n })\n ];\n let esData: any = undefined;\n if (isLatest) {\n esData = getESDataForLatestRevision(form);\n }\n /**\n * In case previously published revision exists, replace current one with that one.\n * And if it does not, delete the record.\n */\n if (isLatestPublished) {\n const revisions = await listFormRevisions({\n where: {\n formId,\n tenant,\n locale,\n version_not: form.version,\n publishedOn_not: null\n },\n sort: [\"savedOn_DESC\"]\n });\n\n const previouslyPublishedRevision = revisions.shift();\n if (previouslyPublishedRevision) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedRevision,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(entity.deleteBatch(latestPublishedKeys));\n }\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not unpublish form.\",\n ex.code || \"UNPUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n /**\n * No need to go further in case of non-existing Elasticsearch data.\n */\n if (!esData) {\n return form;\n }\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n try {\n await esEntity.put({\n ...latestKeys,\n index,\n TYPE: createFormLatestType(),\n data: esData\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not unpublish form from the Elasticsearch.\",\n ex.code || \"UNPUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n };\n\n return {\n createForm,\n createFormFrom,\n updateForm,\n listForms,\n listFormRevisions,\n getForm,\n deleteForm,\n deleteFormRevision,\n publishForm,\n unpublishForm,\n createFormPartitionKey\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["getESDataForLatestRevision","form","__type","createFormElasticType","id","createdOn","savedOn","name","slug","published","publishedOn","version","locked","status","createdBy","ownedBy","tenant","locale","webinyVersion","formId","createFormStorageOperations","params","entity","esEntity","table","plugins","elasticsearch","formDynamoDbFields","fields","createFormPartitionKey","targetId","parseIdentifier","createRevisionSortKey","value","Number","zeroPad","createLatestSortKey","createLatestPublishedSortKey","createFormType","createFormLatestType","createFormLatestPublishedType","createForm","revisionKeys","PK","SK","latestKeys","items","putBatch","TYPE","batchWriteAll","ex","WebinyError","message","code","index","configurations","es","put","data","createFormFrom","original","latest","updateForm","latestForm","getForm","where","isLatestForm","push","sortKey","keys","result","get","Item","cleanupItem","listForms","sort","limit","after","body","createElasticsearchBody","decodeCursor","esConfig","query","response","search","hits","total","map","item","_source","hasMoreItems","length","pop","meta","totalCount","cursor","encodeCursor","listFormRevisions","initialWhere","queryAllParams","partitionKey","options","beginsWith","queryAll","undefined","filteredItems","filterItems","sortItems","deleteForm","gte","deleteItems","deleteBatch","delete","deleteFormRevision","revisions","previous","latestPublishedForm","find","rev","isLatest","isLatestPublished","esDataItem","previouslyPublishedForm","filter","f","a","b","Date","getTime","shift","publishForm","latestPublishedKeys","esData","unpublishForm","version_not","publishedOn_not","previouslyPublishedRevision"],"sources":["index.ts"],"sourcesContent":["import {\n FbForm,\n FormBuilderStorageOperationsCreateFormFromParams,\n FormBuilderStorageOperationsCreateFormParams,\n FormBuilderStorageOperationsDeleteFormParams,\n FormBuilderStorageOperationsDeleteFormRevisionParams,\n FormBuilderStorageOperationsGetFormParams,\n FormBuilderStorageOperationsListFormRevisionsParams,\n FormBuilderStorageOperationsListFormRevisionsParamsWhere,\n FormBuilderStorageOperationsListFormsParams,\n FormBuilderStorageOperationsListFormsResponse,\n FormBuilderStorageOperationsPublishFormParams,\n FormBuilderStorageOperationsUnpublishFormParams,\n FormBuilderStorageOperationsUpdateFormParams\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { configurations } from \"~/configurations\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport fields from \"./fields\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { parseIdentifier, zeroPad } from \"@webiny/utils\";\nimport { createElasticsearchBody, createFormElasticType } from \"./elasticsearchBody\";\nimport { decodeCursor, encodeCursor } from \"@webiny/api-elasticsearch\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { FormBuilderFormCreateKeyParams, FormBuilderFormStorageOperations } from \"~/types\";\nimport { ElasticsearchSearchResponse } from \"@webiny/api-elasticsearch/types\";\n\nexport type DbRecord<T = any> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\nexport interface CreateFormStorageOperationsParams {\n entity: Entity<any>;\n esEntity: Entity<any>;\n table: Table;\n elasticsearch: Client;\n plugins: PluginsContainer;\n}\n\ntype FbFormElastic = Omit<FbForm, \"triggers\" | \"fields\" | \"settings\" | \"layout\" | \"stats\"> & {\n __type: string;\n};\n\nconst getESDataForLatestRevision = (form: FbForm): FbFormElastic => ({\n __type: createFormElasticType(),\n id: form.id,\n createdOn: form.createdOn,\n savedOn: form.savedOn,\n name: form.name,\n slug: form.slug,\n published: form.published,\n publishedOn: form.publishedOn,\n version: form.version,\n locked: form.locked,\n status: form.status,\n createdBy: form.createdBy,\n ownedBy: form.ownedBy,\n tenant: form.tenant,\n locale: form.locale,\n webinyVersion: form.webinyVersion,\n formId: form.formId\n});\n\nexport const createFormStorageOperations = (\n params: CreateFormStorageOperationsParams\n): FormBuilderFormStorageOperations => {\n const { entity, esEntity, table, plugins, elasticsearch } = params;\n\n const formDynamoDbFields = fields();\n\n const createFormPartitionKey = (params: FormBuilderFormCreateKeyParams): string => {\n const { tenant, locale, id: targetId } = params;\n\n const { id } = parseIdentifier(targetId);\n\n return `T#${tenant}#L#${locale}#FB#F#${id}`;\n };\n\n const createRevisionSortKey = (value: string | number | undefined): string => {\n const version =\n typeof value === \"number\" ? Number(value) : (parseIdentifier(value).version as number);\n return `REV#${zeroPad(version)}`;\n };\n\n const createLatestSortKey = (): string => {\n return \"L\";\n };\n\n const createLatestPublishedSortKey = (): string => {\n return \"LP\";\n };\n\n const createFormType = (): string => {\n return \"fb.form\";\n };\n\n const createFormLatestType = (): string => {\n return \"fb.form.latest\";\n };\n\n const createFormLatestPublishedType = (): string => {\n return \"fb.form.latestPublished\";\n };\n\n const createForm = async (\n params: FormBuilderStorageOperationsCreateFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.id)\n };\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...form,\n TYPE: createFormType(),\n ...revisionKeys\n }),\n entity.putBatch({\n ...form,\n TYPE: createFormLatestType(),\n ...latestKeys\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not insert form data into regular table.\",\n ex.code || \"CREATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n form\n }\n );\n }\n try {\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n await esEntity.put({\n index,\n data: getESDataForLatestRevision(form),\n TYPE: createFormType(),\n ...latestKeys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not insert form data into Elasticsearch table.\",\n ex.code || \"CREATE_FORM_ERROR\",\n {\n latestKeys,\n form\n }\n );\n }\n return form;\n };\n\n const createFormFrom = async (\n params: FormBuilderStorageOperationsCreateFormFromParams\n ): Promise<FbForm> => {\n const { form, original, latest } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.version)\n };\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not create form data in the regular table, from existing form.\",\n ex.code || \"CREATE_FORM_FROM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latest\n }\n );\n }\n\n try {\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n await esEntity.put({\n index,\n data: getESDataForLatestRevision(form),\n TYPE: createFormLatestType(),\n ...latestKeys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not create form in the Elasticsearch table, from existing form.\",\n ex.code || \"CREATE_FORM_FROM_ERROR\",\n {\n latestKeys,\n form,\n latest,\n original\n }\n );\n }\n return form;\n };\n\n const updateForm = async (\n params: FormBuilderStorageOperationsUpdateFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.id)\n };\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n TYPE: createFormType(),\n ...revisionKeys\n })\n ];\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n TYPE: createFormLatestType(),\n ...latestKeys\n })\n );\n }\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form data in the regular table.\",\n ex.code || \"UPDATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latestForm\n }\n );\n }\n /**\n * No need to go further if its not latest form.\n */\n if (!isLatestForm) {\n return form;\n }\n\n try {\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n await esEntity.put({\n index,\n data: getESDataForLatestRevision(form),\n TYPE: createFormLatestType(),\n ...latestKeys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form data in the Elasticsearch table.\",\n ex.code || \"UPDATE_FORM_ERROR\",\n {\n latestKeys,\n form,\n latestForm,\n original\n }\n );\n }\n return form;\n };\n\n const getForm = async (\n params: FormBuilderStorageOperationsGetFormParams\n ): Promise<FbForm | null> => {\n const { where } = params;\n const { id, formId, latest, published, version, tenant, locale } = where;\n if (latest && published) {\n throw new WebinyError(\"Cannot have both latest and published params.\");\n }\n let sortKey: string;\n if (latest) {\n sortKey = createLatestSortKey();\n } else if (published && !version) {\n /**\n * Because of the specifics how DynamoDB works, we must not load the published record if version is sent.\n */\n sortKey = createLatestPublishedSortKey();\n } else if (id || version) {\n sortKey = createRevisionSortKey(version || id);\n } else {\n throw new WebinyError(\n \"Missing parameter to create a sort key.\",\n \"MISSING_WHERE_PARAMETER\",\n {\n where\n }\n );\n }\n\n const keys = {\n PK: createFormPartitionKey({\n tenant,\n locale,\n id: (formId || id) as string\n }),\n SK: sortKey\n };\n\n try {\n const result = await entity.get(keys);\n if (!result || !result.Item) {\n return null;\n }\n return cleanupItem(entity, result.Item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get form by keys.\",\n ex.code || \"GET_FORM_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const listForms = async (\n params: FormBuilderStorageOperationsListFormsParams\n ): Promise<FormBuilderStorageOperationsListFormsResponse> => {\n const { sort, limit, where, after } = params;\n\n const body = createElasticsearchBody({\n plugins,\n sort,\n limit: limit + 1,\n where,\n after: decodeCursor(after) as any\n });\n\n const esConfig = configurations.es({\n tenant: where.tenant,\n locale: where.locale\n });\n\n const query = {\n ...esConfig,\n body\n };\n\n let response: ElasticsearchSearchResponse<FbForm>;\n try {\n response = await elasticsearch.search(query);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could list forms.\",\n ex.code || \"LIST_FORMS_ERROR\",\n {\n where,\n query\n }\n );\n }\n\n const { hits, total } = response.body.hits;\n const items = hits.map(item => item._source);\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n /**\n * Remove the last item from results, we don't want to include it.\n */\n items.pop();\n }\n /**\n * Cursor is the `sort` value of the last item in the array.\n * https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after\n */\n\n const meta = {\n hasMoreItems,\n totalCount: total.value,\n cursor: items.length > 0 ? encodeCursor(hits[items.length - 1].sort) || null : null\n };\n\n return {\n items,\n meta\n };\n };\n\n const listFormRevisions = async (\n params: FormBuilderStorageOperationsListFormRevisionsParams\n ): Promise<FbForm[]> => {\n const { where: initialWhere, sort } = params;\n const { id, formId, tenant, locale } = initialWhere;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormPartitionKey({\n tenant,\n locale,\n id: (id || formId) as string\n }),\n options: {\n beginsWith: \"REV#\"\n }\n };\n\n let items: FbForm[] = [];\n try {\n items = await queryAll<FbForm>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms by given params.\",\n ex.code || \"QUERY_FORMS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n const where: Partial<FormBuilderStorageOperationsListFormRevisionsParamsWhere> = {\n ...initialWhere,\n id: undefined,\n formId: undefined\n };\n const filteredItems = filterItems({\n plugins,\n items,\n where,\n fields: formDynamoDbFields\n });\n if (!sort || sort.length === 0) {\n return filteredItems;\n }\n return sortItems({\n items: filteredItems,\n sort,\n fields: formDynamoDbFields\n });\n };\n\n const deleteForm = async (\n params: FormBuilderStorageOperationsDeleteFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n let items: any[];\n /**\n * This will find all form and submission records.\n */\n const queryAllParams = {\n entity,\n partitionKey: createFormPartitionKey(form),\n options: {\n gte: \" \"\n }\n };\n try {\n items = await queryAll<DbRecord>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms and submissions by given params.\",\n ex.code || \"QUERY_FORM_AND_SUBMISSIONS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const deleteItems = items.map(item => {\n return entity.deleteBatch({\n PK: item.PK,\n SK: item.SK\n });\n });\n try {\n await batchWriteAll({\n table,\n items: deleteItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form and it's submissions.\",\n ex.code || \"DELETE_FORM_AND_SUBMISSIONS_ERROR\"\n );\n }\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n try {\n await esEntity.delete(latestKeys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete latest form record from Elasticsearch.\",\n ex.code || \"DELETE_FORM_ERROR\",\n {\n latestKeys\n }\n );\n }\n return form;\n };\n /**\n * We need to:\n * - delete current revision\n * - get previously published revision and update the record if it exists or delete if it does not\n * - update latest record if current one is the latest\n */\n const deleteFormRevision = async (\n params: FormBuilderStorageOperationsDeleteFormRevisionParams\n ): Promise<FbForm> => {\n const { form, revisions, previous } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.id)\n };\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const latestForm = revisions[0];\n const latestPublishedForm = revisions.find(rev => rev.published === true);\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [entity.deleteBatch(revisionKeys)];\n let esDataItem = undefined;\n\n if (isLatest || isLatestPublished) {\n /**\n * Sort out the latest published record.\n */\n if (isLatestPublished) {\n const previouslyPublishedForm = revisions\n .filter(f => !!f.publishedOn && f.version !== form.version)\n .sort((a, b) => {\n return (\n new Date(b.publishedOn as string).getTime() -\n new Date(a.publishedOn as string).getTime()\n );\n })\n .shift();\n if (previouslyPublishedForm) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedForm,\n PK: createFormPartitionKey(previouslyPublishedForm),\n SK: createLatestPublishedSortKey(),\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(\n entity.deleteBatch({\n PK: createFormPartitionKey(form),\n SK: createLatestPublishedSortKey()\n })\n );\n }\n }\n /**\n * Sort out the latest record.\n */\n if (isLatest && previous) {\n items.push(\n entity.putBatch({\n ...previous,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n\n const { index } = configurations.es({\n tenant: previous.tenant,\n locale: previous.locale\n });\n\n esDataItem = {\n index,\n ...latestKeys,\n data: getESDataForLatestRevision(previous)\n };\n }\n }\n /**\n * Now save the batch data.\n */\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form revision from regular table.\",\n ex.code || \"DELETE_FORM_REVISION_ERROR\",\n {\n form,\n latestForm,\n revisionKeys,\n latestKeys\n }\n );\n }\n /**\n * And then the Elasticsearch data, if any.\n */\n if (!esDataItem) {\n return form;\n }\n try {\n await esEntity.put(esDataItem);\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form from to the Elasticsearch table.\",\n ex.code || \"DELETE_FORM_REVISION_ERROR\",\n {\n form,\n latestForm,\n revisionKeys,\n latestKeys\n }\n );\n }\n };\n\n /**\n * We need to save form in:\n * - regular form record\n * - latest published form record\n * - latest form record - if form is latest one\n * - elasticsearch latest form record\n */\n const publishForm = async (\n params: FormBuilderStorageOperationsPublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.version)\n };\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const latestPublishedKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestPublishedSortKey()\n };\n\n const { locale, tenant, formId } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n /**\n * Update revision and latest published records\n */\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n ];\n /**\n * Update the latest form as well\n */\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not publish form.\",\n ex.code || \"PUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n if (!isLatestForm) {\n return form;\n }\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n const esData = getESDataForLatestRevision(form);\n try {\n await esEntity.put({\n ...latestKeys,\n index,\n TYPE: createFormLatestType(),\n data: esData\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not publish form to the Elasticsearch.\",\n ex.code || \"PUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n };\n\n /**\n * We need to:\n * - update form revision record\n * - if latest published (LP) is current form, find the previously published record and update LP if there is some previously published, delete otherwise\n * - if is latest update the Elasticsearch record\n */\n const unpublishForm = async (\n params: FormBuilderStorageOperationsUnpublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form.version)\n };\n\n const latestKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestSortKey()\n };\n\n const latestPublishedKeys = {\n PK: createFormPartitionKey(form),\n SK: createLatestPublishedSortKey()\n };\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const latestPublishedForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n published: true\n }\n });\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n TYPE: createFormType()\n })\n ];\n let esData: any = undefined;\n if (isLatest) {\n esData = getESDataForLatestRevision(form);\n }\n /**\n * In case previously published revision exists, replace current one with that one.\n * And if it does not, delete the record.\n */\n if (isLatestPublished) {\n const revisions = await listFormRevisions({\n where: {\n formId,\n tenant,\n locale,\n version_not: form.version,\n publishedOn_not: null\n },\n sort: [\"savedOn_DESC\"]\n });\n\n const previouslyPublishedRevision = revisions.shift();\n if (previouslyPublishedRevision) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedRevision,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(entity.deleteBatch(latestPublishedKeys));\n }\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not unpublish form.\",\n ex.code || \"UNPUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n /**\n * No need to go further in case of non-existing Elasticsearch data.\n */\n if (!esData) {\n return form;\n }\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n try {\n await esEntity.put({\n ...latestKeys,\n index,\n TYPE: createFormLatestType(),\n data: esData\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not unpublish form from the Elasticsearch.\",\n ex.code || \"UNPUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n };\n\n return {\n createForm,\n createFormFrom,\n updateForm,\n listForms,\n listFormRevisions,\n getForm,\n deleteForm,\n deleteFormRevision,\n publishForm,\n unpublishForm,\n createFormPartitionKey\n };\n};\n"],"mappings":"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"}
@@ -9,13 +9,7 @@ exports.createSubmissionElasticType = exports.createElasticsearchBody = void 0;
9
9
 
10
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
- var _cursors = require("@webiny/api-elasticsearch/cursors");
13
-
14
- var _sort = require("@webiny/api-elasticsearch/sort");
15
-
16
- var _limit = require("@webiny/api-elasticsearch/limit");
17
-
18
- var _ElasticsearchQueryBuilderOperatorPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
19
13
 
20
14
  var _SubmissionElasticsearchFieldPlugin = require("../../plugins/SubmissionElasticsearchFieldPlugin");
21
15
 
@@ -25,8 +19,6 @@ var _SubmissionElasticsearchBodyModifierPlugin = require("../../plugins/Submissi
25
19
 
26
20
  var _SubmissionElasticsearchQueryModifierPlugin = require("../../plugins/SubmissionElasticsearchQueryModifierPlugin");
27
21
 
28
- var _where = require("@webiny/api-elasticsearch/where");
29
-
30
22
  const createInitialQueryValue = () => {
31
23
  return {
32
24
  must: [
@@ -61,7 +53,7 @@ const createElasticsearchQuery = params => {
61
53
  * Be aware that, if having more registered operator plugins of same type, the last one will be used.
62
54
  */
63
55
 
64
- const operatorPlugins = plugins.byType(_ElasticsearchQueryBuilderOperatorPlugin.ElasticsearchQueryBuilderOperatorPlugin.type).reduce((acc, plugin) => {
56
+ const operatorPlugins = plugins.byType(_apiElasticsearch.ElasticsearchQueryBuilderOperatorPlugin.type).reduce((acc, plugin) => {
65
57
  if (plugin.isLocaleSupported(initialWhere.locale) === false) {
66
58
  return acc;
67
59
  }
@@ -117,7 +109,7 @@ const createElasticsearchQuery = params => {
117
109
  * We apply other conditions as they are passed via the where value.
118
110
  */
119
111
 
120
- (0, _where.applyWhere)({
112
+ (0, _apiElasticsearch.applyWhere)({
121
113
  query,
122
114
  where,
123
115
  fields: fieldPlugins,
@@ -138,11 +130,11 @@ const createElasticsearchBody = params => {
138
130
  acc[plugin.field] = plugin;
139
131
  return acc;
140
132
  }, {});
141
- const limit = (0, _limit.createLimit)(initialLimit, 100);
133
+ const limit = (0, _apiElasticsearch.createLimit)(initialLimit, 100);
142
134
  const query = createElasticsearchQuery((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
143
135
  fieldPlugins
144
136
  }));
145
- const sort = (0, _sort.createSort)({
137
+ const sort = (0, _apiElasticsearch.createSort)({
146
138
  sort: initialSort,
147
139
  fieldPlugins
148
140
  });
@@ -178,7 +170,7 @@ const createElasticsearchBody = params => {
178
170
  * Which is correct in some cases. In our case, it is not.
179
171
  * https://www.elastic.co/guide/en/elasticsearch/reference/7.13/paginate-search-results.html
180
172
  */
181
- search_after: (0, _cursors.decodeCursor)(after),
173
+ search_after: (0, _apiElasticsearch.decodeCursor)(after),
182
174
  sort
183
175
  };
184
176
  const bodyModifiers = plugins.byType(_SubmissionElasticsearchBodyModifierPlugin.SubmissionElasticsearchBodyModifierPlugin.type);
@@ -1 +1 @@
1
- {"version":3,"names":["createInitialQueryValue","must","term","must_not","should","filter","createSubmissionElasticType","createElasticsearchQuery","params","plugins","where","initialWhere","fieldPlugins","query","operatorPlugins","byType","ElasticsearchQueryBuilderOperatorPlugin","type","reduce","acc","plugin","isLocaleSupported","locale","getOperator","sharedIndex","process","env","ELASTICSEARCH_SHARED_INDEXES","tenant","push","formId","applyWhere","fields","operators","createElasticsearchBody","limit","initialLimit","sort","initialSort","after","SubmissionElasticsearchFieldPlugin","field","createLimit","createSort","queryModifiers","SubmissionElasticsearchQueryModifierPlugin","modifyQuery","sortModifiers","SubmissionElasticsearchSortModifierPlugin","modifySort","body","constant_score","bool","size","search_after","decodeCursor","bodyModifiers","SubmissionElasticsearchBodyModifierPlugin","modifyBody"],"sources":["elasticsearchBody.ts"],"sourcesContent":["import { SearchBody as esSearchBody } from \"elastic-ts\";\nimport { decodeCursor } from \"@webiny/api-elasticsearch/cursors\";\nimport { ElasticsearchBoolQueryConfig } from \"@webiny/api-elasticsearch/types\";\nimport { createSort } from \"@webiny/api-elasticsearch/sort\";\nimport { createLimit } from \"@webiny/api-elasticsearch/limit\";\nimport { ElasticsearchQueryBuilderOperatorPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { SubmissionElasticsearchFieldPlugin } from \"~/plugins/SubmissionElasticsearchFieldPlugin\";\nimport { SubmissionElasticsearchSortModifierPlugin } from \"~/plugins/SubmissionElasticsearchSortModifierPlugin\";\nimport { SubmissionElasticsearchBodyModifierPlugin } from \"~/plugins/SubmissionElasticsearchBodyModifierPlugin\";\nimport { FormBuilderStorageOperationsListSubmissionsParams } from \"@webiny/api-form-builder/types\";\nimport { SubmissionElasticsearchQueryModifierPlugin } from \"~/plugins/SubmissionElasticsearchQueryModifierPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { applyWhere } from \"@webiny/api-elasticsearch/where\";\n\nconst createInitialQueryValue = (): ElasticsearchBoolQueryConfig => {\n return {\n must: [\n /**\n * We add the __type filtering in the initial query because it must be applied.\n */\n {\n term: {\n \"__type.keyword\": \"fb.submission\"\n }\n }\n ],\n must_not: [],\n should: [],\n filter: []\n };\n};\n\nexport const createSubmissionElasticType = (): string => {\n return \"fb.submission\";\n};\n\ninterface CreateElasticsearchQueryParams extends CreateElasticsearchBodyParams {\n fieldPlugins: Record<string, SubmissionElasticsearchFieldPlugin>;\n}\n\nconst createElasticsearchQuery = (params: CreateElasticsearchQueryParams) => {\n const { plugins, where: initialWhere, fieldPlugins } = params;\n const query = createInitialQueryValue();\n /**\n * Be aware that, if having more registered operator plugins of same type, the last one will be used.\n */\n const operatorPlugins = plugins\n .byType<ElasticsearchQueryBuilderOperatorPlugin>(\n ElasticsearchQueryBuilderOperatorPlugin.type\n )\n .reduce((acc, plugin) => {\n if (plugin.isLocaleSupported(initialWhere.locale) === false) {\n return acc;\n }\n acc[plugin.getOperator()] = plugin;\n return acc;\n }, {} as Record<string, ElasticsearchQueryBuilderOperatorPlugin>);\n\n const where: Partial<FormBuilderStorageOperationsListSubmissionsParams[\"where\"]> = {\n ...initialWhere\n };\n /**\n * !!! IMPORTANT !!! There are few specific cases where we hardcode the query conditions.\n *\n * When ES index is shared between tenants, we need to filter records by tenant ID.\n * No need for the tenant filtering otherwise as each index is for single tenant.\n */\n const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === \"true\";\n if (sharedIndex && where.tenant) {\n query.must.push({\n term: {\n \"tenant.keyword\": where.tenant\n }\n });\n }\n /**\n * Remove tenant so it is not applied again later.\n * Possibly tenant is not defined, but just in case, remove it.\n */\n delete where.tenant;\n /**\n * Add the locale to filtering.\n */\n query.must.push({\n term: {\n \"locale.keyword\": where.locale as string\n }\n });\n delete where.locale;\n /**\n * And add the parent (form) to the filtering, if it exists.\n */\n query.must.push({\n term: {\n \"form.parent.keyword\": where.formId as string\n }\n });\n delete where.formId;\n /**\n * We apply other conditions as they are passed via the where value.\n */\n applyWhere({\n query,\n where,\n fields: fieldPlugins,\n operators: operatorPlugins\n });\n\n return query;\n};\n\ninterface CreateElasticsearchBodyParams {\n plugins: PluginsContainer;\n where: FormBuilderStorageOperationsListSubmissionsParams[\"where\"];\n limit: number;\n after?: string;\n sort: string[];\n}\n\nexport const createElasticsearchBody = (params: CreateElasticsearchBodyParams): esSearchBody => {\n const { plugins, where, limit: initialLimit, sort: initialSort, after } = params;\n\n const fieldPlugins = plugins\n .byType<SubmissionElasticsearchFieldPlugin>(SubmissionElasticsearchFieldPlugin.type)\n .reduce((acc, plugin) => {\n acc[plugin.field] = plugin;\n return acc;\n }, {} as Record<string, SubmissionElasticsearchFieldPlugin>);\n\n const limit = createLimit(initialLimit, 100);\n\n const query = createElasticsearchQuery({\n ...params,\n fieldPlugins\n });\n\n const sort = createSort({\n sort: initialSort,\n fieldPlugins\n });\n\n const queryModifiers = plugins.byType<SubmissionElasticsearchQueryModifierPlugin>(\n SubmissionElasticsearchQueryModifierPlugin.type\n );\n\n for (const plugin of queryModifiers) {\n plugin.modifyQuery({\n query,\n where\n });\n }\n\n const sortModifiers = plugins.byType<SubmissionElasticsearchSortModifierPlugin>(\n SubmissionElasticsearchSortModifierPlugin.type\n );\n\n for (const plugin of sortModifiers) {\n plugin.modifySort({\n sort\n });\n }\n\n const body = {\n query: {\n constant_score: {\n filter: {\n bool: {\n ...query\n }\n }\n }\n },\n size: limit + 1,\n /**\n * Casting as any is required due to search_after is accepting an array of values.\n * Which is correct in some cases. In our case, it is not.\n * https://www.elastic.co/guide/en/elasticsearch/reference/7.13/paginate-search-results.html\n */\n search_after: decodeCursor(after) as any,\n sort\n };\n\n const bodyModifiers = plugins.byType<SubmissionElasticsearchBodyModifierPlugin>(\n SubmissionElasticsearchBodyModifierPlugin.type\n );\n\n for (const plugin of bodyModifiers) {\n plugin.modifyBody({\n body\n });\n }\n\n return body;\n};\n"],"mappings":";;;;;;;;;;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AAEA,MAAMA,uBAAuB,GAAG,MAAoC;EAChE,OAAO;IACHC,IAAI,EAAE;IACF;AACZ;AACA;IACY;MACIC,IAAI,EAAE;QACF,kBAAkB;MADhB;IADV,CAJE,CADH;IAWHC,QAAQ,EAAE,EAXP;IAYHC,MAAM,EAAE,EAZL;IAaHC,MAAM,EAAE;EAbL,CAAP;AAeH,CAhBD;;AAkBO,MAAMC,2BAA2B,GAAG,MAAc;EACrD,OAAO,eAAP;AACH,CAFM;;;;AAQP,MAAMC,wBAAwB,GAAIC,MAAD,IAA4C;EACzE,MAAM;IAAEC,OAAF;IAAWC,KAAK,EAAEC,YAAlB;IAAgCC;EAAhC,IAAiDJ,MAAvD;EACA,MAAMK,KAAK,GAAGb,uBAAuB,EAArC;EACA;AACJ;AACA;;EACI,MAAMc,eAAe,GAAGL,OAAO,CAC1BM,MADmB,CAEhBC,gFAAA,CAAwCC,IAFxB,EAInBC,MAJmB,CAIZ,CAACC,GAAD,EAAMC,MAAN,KAAiB;IACrB,IAAIA,MAAM,CAACC,iBAAP,CAAyBV,YAAY,CAACW,MAAtC,MAAkD,KAAtD,EAA6D;MACzD,OAAOH,GAAP;IACH;;IACDA,GAAG,CAACC,MAAM,CAACG,WAAP,EAAD,CAAH,GAA4BH,MAA5B;IACA,OAAOD,GAAP;EACH,CAVmB,EAUjB,EAViB,CAAxB;EAYA,MAAMT,KAA0E,mCACzEC,YADyE,CAAhF;EAGA;AACJ;AACA;AACA;AACA;AACA;;EACI,MAAMa,WAAW,GAAGC,OAAO,CAACC,GAAR,CAAYC,4BAAZ,KAA6C,MAAjE;;EACA,IAAIH,WAAW,IAAId,KAAK,CAACkB,MAAzB,EAAiC;IAC7Bf,KAAK,CAACZ,IAAN,CAAW4B,IAAX,CAAgB;MACZ3B,IAAI,EAAE;QACF,kBAAkBQ,KAAK,CAACkB;MADtB;IADM,CAAhB;EAKH;EACD;AACJ;AACA;AACA;;;EACI,OAAOlB,KAAK,CAACkB,MAAb;EACA;AACJ;AACA;;EACIf,KAAK,CAACZ,IAAN,CAAW4B,IAAX,CAAgB;IACZ3B,IAAI,EAAE;MACF,kBAAkBQ,KAAK,CAACY;IADtB;EADM,CAAhB;EAKA,OAAOZ,KAAK,CAACY,MAAb;EACA;AACJ;AACA;;EACIT,KAAK,CAACZ,IAAN,CAAW4B,IAAX,CAAgB;IACZ3B,IAAI,EAAE;MACF,uBAAuBQ,KAAK,CAACoB;IAD3B;EADM,CAAhB;EAKA,OAAOpB,KAAK,CAACoB,MAAb;EACA;AACJ;AACA;;EACI,IAAAC,iBAAA,EAAW;IACPlB,KADO;IAEPH,KAFO;IAGPsB,MAAM,EAAEpB,YAHD;IAIPqB,SAAS,EAAEnB;EAJJ,CAAX;EAOA,OAAOD,KAAP;AACH,CArED;;AA+EO,MAAMqB,uBAAuB,GAAI1B,MAAD,IAAyD;EAC5F,MAAM;IAAEC,OAAF;IAAWC,KAAX;IAAkByB,KAAK,EAAEC,YAAzB;IAAuCC,IAAI,EAAEC,WAA7C;IAA0DC;EAA1D,IAAoE/B,MAA1E;EAEA,MAAMI,YAAY,GAAGH,OAAO,CACvBM,MADgB,CAC2ByB,sEAAA,CAAmCvB,IAD9D,EAEhBC,MAFgB,CAET,CAACC,GAAD,EAAMC,MAAN,KAAiB;IACrBD,GAAG,CAACC,MAAM,CAACqB,KAAR,CAAH,GAAoBrB,MAApB;IACA,OAAOD,GAAP;EACH,CALgB,EAKd,EALc,CAArB;EAOA,MAAMgB,KAAK,GAAG,IAAAO,kBAAA,EAAYN,YAAZ,EAA0B,GAA1B,CAAd;EAEA,MAAMvB,KAAK,GAAGN,wBAAwB,6DAC/BC,MAD+B;IAElCI;EAFkC,GAAtC;EAKA,MAAMyB,IAAI,GAAG,IAAAM,gBAAA,EAAW;IACpBN,IAAI,EAAEC,WADc;IAEpB1B;EAFoB,CAAX,CAAb;EAKA,MAAMgC,cAAc,GAAGnC,OAAO,CAACM,MAAR,CACnB8B,sFAAA,CAA2C5B,IADxB,CAAvB;;EAIA,KAAK,MAAMG,MAAX,IAAqBwB,cAArB,EAAqC;IACjCxB,MAAM,CAAC0B,WAAP,CAAmB;MACfjC,KADe;MAEfH;IAFe,CAAnB;EAIH;;EAED,MAAMqC,aAAa,GAAGtC,OAAO,CAACM,MAAR,CAClBiC,oFAAA,CAA0C/B,IADxB,CAAtB;;EAIA,KAAK,MAAMG,MAAX,IAAqB2B,aAArB,EAAoC;IAChC3B,MAAM,CAAC6B,UAAP,CAAkB;MACdZ;IADc,CAAlB;EAGH;;EAED,MAAMa,IAAI,GAAG;IACTrC,KAAK,EAAE;MACHsC,cAAc,EAAE;QACZ9C,MAAM,EAAE;UACJ+C,IAAI,kCACGvC,KADH;QADA;MADI;IADb,CADE;IAUTwC,IAAI,EAAElB,KAAK,GAAG,CAVL;;IAWT;AACR;AACA;AACA;AACA;IACQmB,YAAY,EAAE,IAAAC,qBAAA,EAAahB,KAAb,CAhBL;IAiBTF;EAjBS,CAAb;EAoBA,MAAMmB,aAAa,GAAG/C,OAAO,CAACM,MAAR,CAClB0C,oFAAA,CAA0CxC,IADxB,CAAtB;;EAIA,KAAK,MAAMG,MAAX,IAAqBoC,aAArB,EAAoC;IAChCpC,MAAM,CAACsC,UAAP,CAAkB;MACdR;IADc,CAAlB;EAGH;;EAED,OAAOA,IAAP;AACH,CA1EM"}
1
+ {"version":3,"names":["createInitialQueryValue","must","term","must_not","should","filter","createSubmissionElasticType","createElasticsearchQuery","params","plugins","where","initialWhere","fieldPlugins","query","operatorPlugins","byType","ElasticsearchQueryBuilderOperatorPlugin","type","reduce","acc","plugin","isLocaleSupported","locale","getOperator","sharedIndex","process","env","ELASTICSEARCH_SHARED_INDEXES","tenant","push","formId","applyWhere","fields","operators","createElasticsearchBody","limit","initialLimit","sort","initialSort","after","SubmissionElasticsearchFieldPlugin","field","createLimit","createSort","queryModifiers","SubmissionElasticsearchQueryModifierPlugin","modifyQuery","sortModifiers","SubmissionElasticsearchSortModifierPlugin","modifySort","body","constant_score","bool","size","search_after","decodeCursor","bodyModifiers","SubmissionElasticsearchBodyModifierPlugin","modifyBody"],"sources":["elasticsearchBody.ts"],"sourcesContent":["import { SearchBody as esSearchBody } from \"elastic-ts\";\nimport {\n decodeCursor,\n createLimit,\n createSort,\n applyWhere,\n ElasticsearchQueryBuilderOperatorPlugin\n} from \"@webiny/api-elasticsearch\";\nimport { ElasticsearchBoolQueryConfig } from \"@webiny/api-elasticsearch/types\";\nimport { SubmissionElasticsearchFieldPlugin } from \"~/plugins/SubmissionElasticsearchFieldPlugin\";\nimport { SubmissionElasticsearchSortModifierPlugin } from \"~/plugins/SubmissionElasticsearchSortModifierPlugin\";\nimport { SubmissionElasticsearchBodyModifierPlugin } from \"~/plugins/SubmissionElasticsearchBodyModifierPlugin\";\nimport { FormBuilderStorageOperationsListSubmissionsParams } from \"@webiny/api-form-builder/types\";\nimport { SubmissionElasticsearchQueryModifierPlugin } from \"~/plugins/SubmissionElasticsearchQueryModifierPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\nconst createInitialQueryValue = (): ElasticsearchBoolQueryConfig => {\n return {\n must: [\n /**\n * We add the __type filtering in the initial query because it must be applied.\n */\n {\n term: {\n \"__type.keyword\": \"fb.submission\"\n }\n }\n ],\n must_not: [],\n should: [],\n filter: []\n };\n};\n\nexport const createSubmissionElasticType = (): string => {\n return \"fb.submission\";\n};\n\ninterface CreateElasticsearchQueryParams extends CreateElasticsearchBodyParams {\n fieldPlugins: Record<string, SubmissionElasticsearchFieldPlugin>;\n}\n\nconst createElasticsearchQuery = (params: CreateElasticsearchQueryParams) => {\n const { plugins, where: initialWhere, fieldPlugins } = params;\n const query = createInitialQueryValue();\n /**\n * Be aware that, if having more registered operator plugins of same type, the last one will be used.\n */\n const operatorPlugins = plugins\n .byType<ElasticsearchQueryBuilderOperatorPlugin>(\n ElasticsearchQueryBuilderOperatorPlugin.type\n )\n .reduce((acc, plugin) => {\n if (plugin.isLocaleSupported(initialWhere.locale) === false) {\n return acc;\n }\n acc[plugin.getOperator()] = plugin;\n return acc;\n }, {} as Record<string, ElasticsearchQueryBuilderOperatorPlugin>);\n\n const where: Partial<FormBuilderStorageOperationsListSubmissionsParams[\"where\"]> = {\n ...initialWhere\n };\n /**\n * !!! IMPORTANT !!! There are few specific cases where we hardcode the query conditions.\n *\n * When ES index is shared between tenants, we need to filter records by tenant ID.\n * No need for the tenant filtering otherwise as each index is for single tenant.\n */\n const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === \"true\";\n if (sharedIndex && where.tenant) {\n query.must.push({\n term: {\n \"tenant.keyword\": where.tenant\n }\n });\n }\n /**\n * Remove tenant so it is not applied again later.\n * Possibly tenant is not defined, but just in case, remove it.\n */\n delete where.tenant;\n /**\n * Add the locale to filtering.\n */\n query.must.push({\n term: {\n \"locale.keyword\": where.locale as string\n }\n });\n delete where.locale;\n /**\n * And add the parent (form) to the filtering, if it exists.\n */\n query.must.push({\n term: {\n \"form.parent.keyword\": where.formId as string\n }\n });\n delete where.formId;\n /**\n * We apply other conditions as they are passed via the where value.\n */\n applyWhere({\n query,\n where,\n fields: fieldPlugins,\n operators: operatorPlugins\n });\n\n return query;\n};\n\ninterface CreateElasticsearchBodyParams {\n plugins: PluginsContainer;\n where: FormBuilderStorageOperationsListSubmissionsParams[\"where\"];\n limit: number;\n after?: string;\n sort: string[];\n}\n\nexport const createElasticsearchBody = (params: CreateElasticsearchBodyParams): esSearchBody => {\n const { plugins, where, limit: initialLimit, sort: initialSort, after } = params;\n\n const fieldPlugins = plugins\n .byType<SubmissionElasticsearchFieldPlugin>(SubmissionElasticsearchFieldPlugin.type)\n .reduce((acc, plugin) => {\n acc[plugin.field] = plugin;\n return acc;\n }, {} as Record<string, SubmissionElasticsearchFieldPlugin>);\n\n const limit = createLimit(initialLimit, 100);\n\n const query = createElasticsearchQuery({\n ...params,\n fieldPlugins\n });\n\n const sort = createSort({\n sort: initialSort,\n fieldPlugins\n });\n\n const queryModifiers = plugins.byType<SubmissionElasticsearchQueryModifierPlugin>(\n SubmissionElasticsearchQueryModifierPlugin.type\n );\n\n for (const plugin of queryModifiers) {\n plugin.modifyQuery({\n query,\n where\n });\n }\n\n const sortModifiers = plugins.byType<SubmissionElasticsearchSortModifierPlugin>(\n SubmissionElasticsearchSortModifierPlugin.type\n );\n\n for (const plugin of sortModifiers) {\n plugin.modifySort({\n sort\n });\n }\n\n const body = {\n query: {\n constant_score: {\n filter: {\n bool: {\n ...query\n }\n }\n }\n },\n size: limit + 1,\n /**\n * Casting as any is required due to search_after is accepting an array of values.\n * Which is correct in some cases. In our case, it is not.\n * https://www.elastic.co/guide/en/elasticsearch/reference/7.13/paginate-search-results.html\n */\n search_after: decodeCursor(after) as any,\n sort\n };\n\n const bodyModifiers = plugins.byType<SubmissionElasticsearchBodyModifierPlugin>(\n SubmissionElasticsearchBodyModifierPlugin.type\n );\n\n for (const plugin of bodyModifiers) {\n plugin.modifyBody({\n body\n });\n }\n\n return body;\n};\n"],"mappings":"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"}
@@ -15,7 +15,7 @@ var _batchRead = require("@webiny/db-dynamodb/utils/batchRead");
15
15
 
16
16
  var _sort = require("@webiny/db-dynamodb/utils/sort");
17
17
 
18
- var _limit = require("@webiny/api-elasticsearch/limit");
18
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
19
19
 
20
20
  var _elasticsearchBody = require("./elasticsearchBody");
21
21
 
@@ -25,8 +25,6 @@ var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
25
25
 
26
26
  var _utils = require("@webiny/utils");
27
27
 
28
- var _cursors = require("@webiny/api-elasticsearch/cursors");
29
-
30
28
  const createSubmissionStorageOperations = params => {
31
29
  const {
32
30
  entity,
@@ -238,13 +236,13 @@ const createSubmissionStorageOperations = params => {
238
236
  };
239
237
  }
240
238
 
241
- const limit = (0, _limit.createLimit)(initialLimit);
239
+ const limit = (0, _apiElasticsearch.createLimit)(initialLimit);
242
240
  const body = (0, _elasticsearchBody.createElasticsearchBody)({
243
241
  plugins,
244
242
  sort,
245
243
  limit: limit + 1,
246
244
  where,
247
- after: (0, _cursors.decodeCursor)(after)
245
+ after: (0, _apiElasticsearch.decodeCursor)(after)
248
246
  });
249
247
 
250
248
  const esConfig = _configurations.configurations.es({
@@ -288,7 +286,7 @@ const createSubmissionStorageOperations = params => {
288
286
  const meta = {
289
287
  hasMoreItems,
290
288
  totalCount: total.value,
291
- cursor: items.length > 0 ? (0, _cursors.encodeCursor)(hits[items.length - 1].sort) || null : null
289
+ cursor: items.length > 0 ? (0, _apiElasticsearch.encodeCursor)(hits[items.length - 1].sort) || null : null
292
290
  };
293
291
  return {
294
292
  items,
@@ -1 +1 @@
1
- {"version":3,"names":["createSubmissionStorageOperations","params","entity","esEntity","table","elasticsearch","plugins","createSubmissionPartitionKey","tenant","locale","formId","id","parseIdentifier","createSubmissionSortKey","createSubmissionType","createSubmission","submission","form","keys","PK","SK","put","TYPE","ex","WebinyError","message","code","index","configurations","es","data","__type","createSubmissionElasticType","updateSubmission","original","deleteSubmission","delete","listSubmissionsByIds","where","sort","items","id_in","map","getBatch","results","batchReadAll","submissions","filter","Boolean","cleanupItem","sortItems","fields","listSubmissions","limit","initialLimit","after","meta","hasMoreItems","cursor","totalCount","length","createLimit","body","createElasticsearchBody","decodeCursor","esConfig","query","response","search","hits","total","item","_source","pop","value","encodeCursor","getSubmission","result","get","Item"],"sources":["index.ts"],"sourcesContent":["import {\n FbSubmission,\n FormBuilderStorageOperationsCreateSubmissionParams,\n FormBuilderStorageOperationsDeleteSubmissionParams,\n FormBuilderStorageOperationsGetSubmissionParams,\n FormBuilderStorageOperationsListSubmissionsParams,\n FormBuilderStorageOperationsListSubmissionsResponse,\n FormBuilderStorageOperationsUpdateSubmissionParams\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport WebinyError from \"@webiny/error\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { createLimit } from \"@webiny/api-elasticsearch/limit\";\nimport {\n createElasticsearchBody,\n createSubmissionElasticType\n} from \"~/operations/submission/elasticsearchBody\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n FormBuilderSubmissionStorageOperations,\n FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams\n} from \"~/types\";\nimport { configurations } from \"~/configurations\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { decodeCursor, encodeCursor } from \"@webiny/api-elasticsearch/cursors\";\nimport { ElasticsearchSearchResponse } from \"@webiny/api-elasticsearch/types\";\n\nexport interface CreateSubmissionStorageOperationsParams {\n entity: Entity<any>;\n esEntity: Entity<any>;\n table: Table;\n elasticsearch: Client;\n plugins: PluginsContainer;\n}\n\nexport const createSubmissionStorageOperations = (\n params: CreateSubmissionStorageOperationsParams\n): FormBuilderSubmissionStorageOperations => {\n const { entity, esEntity, table, elasticsearch, plugins } = params;\n\n const createSubmissionPartitionKey = (\n params: FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams\n ) => {\n const { tenant, locale, formId } = params;\n\n const { id } = parseIdentifier(formId);\n\n return `T#${tenant}#L#${locale}#FB#F#${id}`;\n };\n const createSubmissionSortKey = (id: string) => {\n return `FS#${id}`;\n };\n\n const createSubmissionType = () => {\n return \"fb.formSubmission\";\n };\n\n const createSubmission = async (\n params: FormBuilderStorageOperationsCreateSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form } = params;\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.put({\n ...submission,\n ...keys,\n TYPE: createSubmissionType()\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create form submission in the DynamoDB.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n try {\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n await esEntity.put({\n index,\n data: {\n ...submission,\n __type: createSubmissionElasticType()\n },\n TYPE: createSubmissionType(),\n ...keys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create form submission in the Elasticsearch.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n return submission;\n };\n /**\n * We do not save the data in the Elasticsearch because there is no need for that.\n */\n const updateSubmission = async (\n params: FormBuilderStorageOperationsUpdateSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form, original } = params;\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.put({\n ...submission,\n ...keys,\n TYPE: createSubmissionType()\n });\n return submission;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form submission in the DynamoDB.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n original,\n form,\n keys\n }\n );\n }\n };\n\n const deleteSubmission = async (\n params: FormBuilderStorageOperationsDeleteSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form } = params;\n\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.delete(keys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form submission from DynamoDB.\",\n ex.code || \"DELETE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n try {\n await esEntity.delete(keys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form submission from Elasticsearch.\",\n ex.code || \"DELETE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n return submission;\n };\n\n /**\n *\n * We are using this method because it is faster to fetch the exact data from the DynamoDB than Elasticsearch.\n *\n * @internal\n */\n const listSubmissionsByIds = async (\n params: FormBuilderStorageOperationsListSubmissionsParams\n ): Promise<FbSubmission[]> => {\n const { where, sort } = params;\n const items = (where.id_in || []).map(id => {\n return entity.getBatch({\n PK: createSubmissionPartitionKey({\n ...where\n }),\n SK: createSubmissionSortKey(id)\n });\n });\n\n let results: FbSubmission[] = [];\n\n try {\n results = await batchReadAll<FbSubmission>({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not batch read form submissions.\",\n ex.code || \"BATCH_READ_SUBMISSIONS_ERROR\",\n {\n where,\n sort\n }\n );\n }\n /**\n * We need to remove empty results because it is a possibility that batch read returned null for non-existing record.\n */\n const submissions = results.filter(Boolean).map(submission => {\n return cleanupItem(entity, submission);\n }) as FbSubmission[];\n if (!sort) {\n return submissions;\n }\n return sortItems<FbSubmission>({\n items: submissions,\n sort,\n fields: []\n });\n };\n\n const listSubmissions = async (\n params: FormBuilderStorageOperationsListSubmissionsParams\n ): Promise<FormBuilderStorageOperationsListSubmissionsResponse> => {\n const { where, sort = [], limit: initialLimit, after } = params;\n\n if (where.id_in) {\n const items = await listSubmissionsByIds(params);\n\n return {\n items,\n meta: {\n hasMoreItems: false,\n cursor: null,\n totalCount: items.length\n }\n };\n }\n\n const limit = createLimit(initialLimit);\n\n const body = createElasticsearchBody({\n plugins,\n sort,\n limit: limit + 1,\n where,\n after: decodeCursor(after) as any\n });\n\n const esConfig = configurations.es({\n tenant: where.tenant,\n locale: where.locale\n });\n\n const query = {\n ...esConfig,\n body\n };\n\n let response: ElasticsearchSearchResponse<FbSubmission>;\n try {\n response = await elasticsearch.search(query);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could list form submissions.\",\n ex.code || \"LIST_SUBMISSIONS_ERROR\",\n {\n where,\n query\n }\n );\n }\n\n const { hits, total } = response.body.hits;\n const items = hits.map(item => item._source);\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n /**\n * Remove the last item from results, we don't want to include it.\n */\n items.pop();\n }\n /**\n * Cursor is the `sort` value of the last item in the array.\n * https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after\n */\n const meta = {\n hasMoreItems,\n totalCount: total.value,\n cursor: items.length > 0 ? encodeCursor(hits[items.length - 1].sort) || null : null\n };\n\n return {\n items,\n meta\n };\n };\n\n const getSubmission = async (\n params: FormBuilderStorageOperationsGetSubmissionParams\n ): Promise<FbSubmission | null> => {\n const { where } = params;\n\n const keys = {\n PK: createSubmissionPartitionKey({\n ...where,\n formId: where.formId as string\n }),\n SK: createSubmissionSortKey(where.id)\n };\n\n try {\n const result = await entity.get(keys);\n\n if (!result || !result.Item) {\n return null;\n }\n\n return cleanupItem(entity, result.Item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not oad submission.\",\n ex.code || \"GET_SUBMISSION_ERROR\",\n {\n where,\n keys\n }\n );\n }\n };\n\n return {\n createSubmission,\n deleteSubmission,\n updateSubmission,\n listSubmissions,\n getSubmission,\n createSubmissionPartitionKey,\n createSubmissionSortKey\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createSubmissionStorageOperations","params","entity","esEntity","table","elasticsearch","plugins","createSubmissionPartitionKey","tenant","locale","formId","id","parseIdentifier","createSubmissionSortKey","createSubmissionType","createSubmission","submission","form","keys","PK","SK","put","TYPE","ex","WebinyError","message","code","index","configurations","es","data","__type","createSubmissionElasticType","updateSubmission","original","deleteSubmission","delete","listSubmissionsByIds","where","sort","items","id_in","map","getBatch","results","batchReadAll","submissions","filter","Boolean","cleanupItem","sortItems","fields","listSubmissions","limit","initialLimit","after","meta","hasMoreItems","cursor","totalCount","length","createLimit","body","createElasticsearchBody","decodeCursor","esConfig","query","response","search","hits","total","item","_source","pop","value","encodeCursor","getSubmission","result","get","Item"],"sources":["index.ts"],"sourcesContent":["import {\n FbSubmission,\n FormBuilderStorageOperationsCreateSubmissionParams,\n FormBuilderStorageOperationsDeleteSubmissionParams,\n FormBuilderStorageOperationsGetSubmissionParams,\n FormBuilderStorageOperationsListSubmissionsParams,\n FormBuilderStorageOperationsListSubmissionsResponse,\n FormBuilderStorageOperationsUpdateSubmissionParams\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport WebinyError from \"@webiny/error\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { createLimit, encodeCursor, decodeCursor } from \"@webiny/api-elasticsearch\";\nimport {\n createElasticsearchBody,\n createSubmissionElasticType\n} from \"~/operations/submission/elasticsearchBody\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n FormBuilderSubmissionStorageOperations,\n FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams\n} from \"~/types\";\nimport { configurations } from \"~/configurations\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { ElasticsearchSearchResponse } from \"@webiny/api-elasticsearch/types\";\n\nexport interface CreateSubmissionStorageOperationsParams {\n entity: Entity<any>;\n esEntity: Entity<any>;\n table: Table;\n elasticsearch: Client;\n plugins: PluginsContainer;\n}\n\nexport const createSubmissionStorageOperations = (\n params: CreateSubmissionStorageOperationsParams\n): FormBuilderSubmissionStorageOperations => {\n const { entity, esEntity, table, elasticsearch, plugins } = params;\n\n const createSubmissionPartitionKey = (\n params: FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams\n ) => {\n const { tenant, locale, formId } = params;\n\n const { id } = parseIdentifier(formId);\n\n return `T#${tenant}#L#${locale}#FB#F#${id}`;\n };\n const createSubmissionSortKey = (id: string) => {\n return `FS#${id}`;\n };\n\n const createSubmissionType = () => {\n return \"fb.formSubmission\";\n };\n\n const createSubmission = async (\n params: FormBuilderStorageOperationsCreateSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form } = params;\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.put({\n ...submission,\n ...keys,\n TYPE: createSubmissionType()\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create form submission in the DynamoDB.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n try {\n const { index } = configurations.es({\n tenant: form.tenant,\n locale: form.locale\n });\n await esEntity.put({\n index,\n data: {\n ...submission,\n __type: createSubmissionElasticType()\n },\n TYPE: createSubmissionType(),\n ...keys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create form submission in the Elasticsearch.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n return submission;\n };\n /**\n * We do not save the data in the Elasticsearch because there is no need for that.\n */\n const updateSubmission = async (\n params: FormBuilderStorageOperationsUpdateSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form, original } = params;\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.put({\n ...submission,\n ...keys,\n TYPE: createSubmissionType()\n });\n return submission;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form submission in the DynamoDB.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n original,\n form,\n keys\n }\n );\n }\n };\n\n const deleteSubmission = async (\n params: FormBuilderStorageOperationsDeleteSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form } = params;\n\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.delete(keys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form submission from DynamoDB.\",\n ex.code || \"DELETE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n try {\n await esEntity.delete(keys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form submission from Elasticsearch.\",\n ex.code || \"DELETE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n return submission;\n };\n\n /**\n *\n * We are using this method because it is faster to fetch the exact data from the DynamoDB than Elasticsearch.\n *\n * @internal\n */\n const listSubmissionsByIds = async (\n params: FormBuilderStorageOperationsListSubmissionsParams\n ): Promise<FbSubmission[]> => {\n const { where, sort } = params;\n const items = (where.id_in || []).map(id => {\n return entity.getBatch({\n PK: createSubmissionPartitionKey({\n ...where\n }),\n SK: createSubmissionSortKey(id)\n });\n });\n\n let results: FbSubmission[] = [];\n\n try {\n results = await batchReadAll<FbSubmission>({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not batch read form submissions.\",\n ex.code || \"BATCH_READ_SUBMISSIONS_ERROR\",\n {\n where,\n sort\n }\n );\n }\n /**\n * We need to remove empty results because it is a possibility that batch read returned null for non-existing record.\n */\n const submissions = results.filter(Boolean).map(submission => {\n return cleanupItem(entity, submission);\n }) as FbSubmission[];\n if (!sort) {\n return submissions;\n }\n return sortItems<FbSubmission>({\n items: submissions,\n sort,\n fields: []\n });\n };\n\n const listSubmissions = async (\n params: FormBuilderStorageOperationsListSubmissionsParams\n ): Promise<FormBuilderStorageOperationsListSubmissionsResponse> => {\n const { where, sort = [], limit: initialLimit, after } = params;\n\n if (where.id_in) {\n const items = await listSubmissionsByIds(params);\n\n return {\n items,\n meta: {\n hasMoreItems: false,\n cursor: null,\n totalCount: items.length\n }\n };\n }\n\n const limit = createLimit(initialLimit);\n\n const body = createElasticsearchBody({\n plugins,\n sort,\n limit: limit + 1,\n where,\n after: decodeCursor(after) as any\n });\n\n const esConfig = configurations.es({\n tenant: where.tenant,\n locale: where.locale\n });\n\n const query = {\n ...esConfig,\n body\n };\n\n let response: ElasticsearchSearchResponse<FbSubmission>;\n try {\n response = await elasticsearch.search(query);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could list form submissions.\",\n ex.code || \"LIST_SUBMISSIONS_ERROR\",\n {\n where,\n query\n }\n );\n }\n\n const { hits, total } = response.body.hits;\n const items = hits.map(item => item._source);\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n /**\n * Remove the last item from results, we don't want to include it.\n */\n items.pop();\n }\n /**\n * Cursor is the `sort` value of the last item in the array.\n * https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after\n */\n const meta = {\n hasMoreItems,\n totalCount: total.value,\n cursor: items.length > 0 ? encodeCursor(hits[items.length - 1].sort) || null : null\n };\n\n return {\n items,\n meta\n };\n };\n\n const getSubmission = async (\n params: FormBuilderStorageOperationsGetSubmissionParams\n ): Promise<FbSubmission | null> => {\n const { where } = params;\n\n const keys = {\n PK: createSubmissionPartitionKey({\n ...where,\n formId: where.formId as string\n }),\n SK: createSubmissionSortKey(where.id)\n };\n\n try {\n const result = await entity.get(keys);\n\n if (!result || !result.Item) {\n return null;\n }\n\n return cleanupItem(entity, result.Item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not oad submission.\",\n ex.code || \"GET_SUBMISSION_ERROR\",\n {\n where,\n keys\n }\n );\n }\n };\n\n return {\n createSubmission,\n deleteSubmission,\n updateSubmission,\n listSubmissions,\n getSubmission,\n createSubmissionPartitionKey,\n createSubmissionSortKey\n };\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-form-builder-so-ddb-es",
3
- "version": "0.0.0-unstable.1e66d121db",
3
+ "version": "0.0.0-unstable.40876133bb",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "@webiny/api-form-builder",
@@ -23,13 +23,13 @@
23
23
  "dependencies": {
24
24
  "@babel/runtime": "7.19.0",
25
25
  "@elastic/elasticsearch": "7.12.0",
26
- "@webiny/api": "0.0.0-unstable.1e66d121db",
27
- "@webiny/api-elasticsearch": "0.0.0-unstable.1e66d121db",
28
- "@webiny/api-form-builder": "0.0.0-unstable.1e66d121db",
29
- "@webiny/db-dynamodb": "0.0.0-unstable.1e66d121db",
30
- "@webiny/error": "0.0.0-unstable.1e66d121db",
31
- "@webiny/plugins": "0.0.0-unstable.1e66d121db",
32
- "@webiny/utils": "0.0.0-unstable.1e66d121db",
26
+ "@webiny/api": "0.0.0-unstable.40876133bb",
27
+ "@webiny/api-elasticsearch": "0.0.0-unstable.40876133bb",
28
+ "@webiny/api-form-builder": "0.0.0-unstable.40876133bb",
29
+ "@webiny/db-dynamodb": "0.0.0-unstable.40876133bb",
30
+ "@webiny/error": "0.0.0-unstable.40876133bb",
31
+ "@webiny/plugins": "0.0.0-unstable.40876133bb",
32
+ "@webiny/utils": "0.0.0-unstable.40876133bb",
33
33
  "dynamodb-toolbox": "0.3.5",
34
34
  "elastic-ts": "0.8.0"
35
35
  },
@@ -38,11 +38,11 @@
38
38
  "@babel/core": "^7.19.3",
39
39
  "@babel/preset-env": "^7.19.4",
40
40
  "@babel/preset-typescript": "^7.18.6",
41
- "@webiny/api-dynamodb-to-elasticsearch": "^0.0.0-unstable.1e66d121db",
42
- "@webiny/cli": "^0.0.0-unstable.1e66d121db",
43
- "@webiny/handler-aws": "^0.0.0-unstable.1e66d121db",
44
- "@webiny/handler-db": "^0.0.0-unstable.1e66d121db",
45
- "@webiny/project-utils": "^0.0.0-unstable.1e66d121db",
41
+ "@webiny/api-dynamodb-to-elasticsearch": "^0.0.0-unstable.40876133bb",
42
+ "@webiny/cli": "^0.0.0-unstable.40876133bb",
43
+ "@webiny/handler-aws": "^0.0.0-unstable.40876133bb",
44
+ "@webiny/handler-db": "^0.0.0-unstable.40876133bb",
45
+ "@webiny/project-utils": "^0.0.0-unstable.40876133bb",
46
46
  "csvtojson": "^2.0.10",
47
47
  "jest": "^28.1.0",
48
48
  "jest-dynalite": "^3.2.0",
@@ -59,5 +59,5 @@
59
59
  "build": "yarn webiny run build",
60
60
  "watch": "yarn webiny run watch"
61
61
  },
62
- "gitHead": "b670bf27c5039de1a2b0be764a09ba4cb94ad5e2"
62
+ "gitHead": "f33811072795d25c5787ae39808e75e3312fb247"
63
63
  }
@@ -1,4 +1,4 @@
1
- import { ElasticsearchBodyModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchBodyModifierPlugin";
1
+ import { ElasticsearchBodyModifierPlugin } from "@webiny/api-elasticsearch";
2
2
  export declare class FormElasticsearchBodyModifierPlugin extends ElasticsearchBodyModifierPlugin {
3
3
  static readonly type: string;
4
4
  }
@@ -9,9 +9,9 @@ exports.FormElasticsearchBodyModifierPlugin = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _ElasticsearchBodyModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchBodyModifierPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
13
 
14
- class FormElasticsearchBodyModifierPlugin extends _ElasticsearchBodyModifierPlugin.ElasticsearchBodyModifierPlugin {}
14
+ class FormElasticsearchBodyModifierPlugin extends _apiElasticsearch.ElasticsearchBodyModifierPlugin {}
15
15
 
16
16
  exports.FormElasticsearchBodyModifierPlugin = FormElasticsearchBodyModifierPlugin;
17
17
  (0, _defineProperty2.default)(FormElasticsearchBodyModifierPlugin, "type", "formBuilder.elasticsearch.modifier.body.form");
@@ -1 +1 @@
1
- {"version":3,"names":["FormElasticsearchBodyModifierPlugin","ElasticsearchBodyModifierPlugin"],"sources":["FormElasticsearchBodyModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchBodyModifierPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchBodyModifierPlugin\";\n\nexport class FormElasticsearchBodyModifierPlugin extends ElasticsearchBodyModifierPlugin {\n public static override readonly type: string = \"formBuilder.elasticsearch.modifier.body.form\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,mCAAN,SAAkDC,gEAAlD,CAAkF;;;8BAA5ED,mC,UACsC,8C"}
1
+ {"version":3,"names":["FormElasticsearchBodyModifierPlugin","ElasticsearchBodyModifierPlugin"],"sources":["FormElasticsearchBodyModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchBodyModifierPlugin } from \"@webiny/api-elasticsearch\";\n\nexport class FormElasticsearchBodyModifierPlugin extends ElasticsearchBodyModifierPlugin {\n public static override readonly type: string = \"formBuilder.elasticsearch.modifier.body.form\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,mCAAN,SAAkDC,iDAAlD,CAAkF;;;8BAA5ED,mC,UACsC,8C"}
@@ -1,4 +1,4 @@
1
- import { ElasticsearchFieldPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin";
1
+ import { ElasticsearchFieldPlugin } from "@webiny/api-elasticsearch";
2
2
  export declare class FormElasticsearchFieldPlugin extends ElasticsearchFieldPlugin {
3
3
  static readonly type: string;
4
4
  }
@@ -9,9 +9,9 @@ exports.FormElasticsearchFieldPlugin = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _ElasticsearchFieldPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
13
 
14
- class FormElasticsearchFieldPlugin extends _ElasticsearchFieldPlugin.ElasticsearchFieldPlugin {}
14
+ class FormElasticsearchFieldPlugin extends _apiElasticsearch.ElasticsearchFieldPlugin {}
15
15
 
16
16
  exports.FormElasticsearchFieldPlugin = FormElasticsearchFieldPlugin;
17
17
  (0, _defineProperty2.default)(FormElasticsearchFieldPlugin, "type", "formBuilder.elasticsearch.fieldDefinition.form");
@@ -1 +1 @@
1
- {"version":3,"names":["FormElasticsearchFieldPlugin","ElasticsearchFieldPlugin"],"sources":["FormElasticsearchFieldPlugin.ts"],"sourcesContent":["import { ElasticsearchFieldPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin\";\n\nexport class FormElasticsearchFieldPlugin extends ElasticsearchFieldPlugin {\n public static override readonly type: string = \"formBuilder.elasticsearch.fieldDefinition.form\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,4BAAN,SAA2CC,kDAA3C,CAAoE;;;8BAA9DD,4B,UACsC,gD"}
1
+ {"version":3,"names":["FormElasticsearchFieldPlugin","ElasticsearchFieldPlugin"],"sources":["FormElasticsearchFieldPlugin.ts"],"sourcesContent":["import { ElasticsearchFieldPlugin } from \"@webiny/api-elasticsearch\";\n\nexport class FormElasticsearchFieldPlugin extends ElasticsearchFieldPlugin {\n public static override readonly type: string = \"formBuilder.elasticsearch.fieldDefinition.form\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,4BAAN,SAA2CC,0CAA3C,CAAoE;;;8BAA9DD,4B,UACsC,gD"}
@@ -1,4 +1,4 @@
1
- import { ElasticsearchIndexPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchIndexPlugin";
1
+ import { ElasticsearchIndexPlugin } from "@webiny/api-elasticsearch";
2
2
  export declare class FormElasticsearchIndexPlugin extends ElasticsearchIndexPlugin {
3
3
  static readonly type: string;
4
4
  }
@@ -9,9 +9,9 @@ exports.FormElasticsearchIndexPlugin = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _ElasticsearchIndexPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchIndexPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
13
 
14
- class FormElasticsearchIndexPlugin extends _ElasticsearchIndexPlugin.ElasticsearchIndexPlugin {}
14
+ class FormElasticsearchIndexPlugin extends _apiElasticsearch.ElasticsearchIndexPlugin {}
15
15
 
16
16
  exports.FormElasticsearchIndexPlugin = FormElasticsearchIndexPlugin;
17
17
  (0, _defineProperty2.default)(FormElasticsearchIndexPlugin, "type", "formBuilder.form.elasticsearch.index");
@@ -1 +1 @@
1
- {"version":3,"names":["FormElasticsearchIndexPlugin","ElasticsearchIndexPlugin"],"sources":["FormElasticsearchIndexPlugin.ts"],"sourcesContent":["import { ElasticsearchIndexPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchIndexPlugin\";\n\nexport class FormElasticsearchIndexPlugin extends ElasticsearchIndexPlugin {\n public static override readonly type: string = \"formBuilder.form.elasticsearch.index\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,4BAAN,SAA2CC,kDAA3C,CAAoE;;;8BAA9DD,4B,UACsC,sC"}
1
+ {"version":3,"names":["FormElasticsearchIndexPlugin","ElasticsearchIndexPlugin"],"sources":["FormElasticsearchIndexPlugin.ts"],"sourcesContent":["import { ElasticsearchIndexPlugin } from \"@webiny/api-elasticsearch\";\n\nexport class FormElasticsearchIndexPlugin extends ElasticsearchIndexPlugin {\n public static override readonly type: string = \"formBuilder.form.elasticsearch.index\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,4BAAN,SAA2CC,0CAA3C,CAAoE;;;8BAA9DD,4B,UACsC,sC"}
@@ -1,4 +1,4 @@
1
- import { ElasticsearchQueryModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryModifierPlugin";
1
+ import { ElasticsearchQueryModifierPlugin } from "@webiny/api-elasticsearch";
2
2
  export declare class FormElasticsearchQueryModifierPlugin extends ElasticsearchQueryModifierPlugin {
3
3
  static readonly type: string;
4
4
  }
@@ -9,9 +9,9 @@ exports.FormElasticsearchQueryModifierPlugin = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _ElasticsearchQueryModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryModifierPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
13
 
14
- class FormElasticsearchQueryModifierPlugin extends _ElasticsearchQueryModifierPlugin.ElasticsearchQueryModifierPlugin {}
14
+ class FormElasticsearchQueryModifierPlugin extends _apiElasticsearch.ElasticsearchQueryModifierPlugin {}
15
15
 
16
16
  exports.FormElasticsearchQueryModifierPlugin = FormElasticsearchQueryModifierPlugin;
17
17
  (0, _defineProperty2.default)(FormElasticsearchQueryModifierPlugin, "type", "formBuilder.elasticsearch.modifier.query.form");
@@ -1 +1 @@
1
- {"version":3,"names":["FormElasticsearchQueryModifierPlugin","ElasticsearchQueryModifierPlugin"],"sources":["FormElasticsearchQueryModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchQueryModifierPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryModifierPlugin\";\n\nexport class FormElasticsearchQueryModifierPlugin extends ElasticsearchQueryModifierPlugin {\n public static override readonly type: string = \"formBuilder.elasticsearch.modifier.query.form\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,oCAAN,SAAmDC,kEAAnD,CAAoF;;;8BAA9ED,oC,UACsC,+C"}
1
+ {"version":3,"names":["FormElasticsearchQueryModifierPlugin","ElasticsearchQueryModifierPlugin"],"sources":["FormElasticsearchQueryModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchQueryModifierPlugin } from \"@webiny/api-elasticsearch\";\n\nexport class FormElasticsearchQueryModifierPlugin extends ElasticsearchQueryModifierPlugin {\n public static override readonly type: string = \"formBuilder.elasticsearch.modifier.query.form\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,oCAAN,SAAmDC,kDAAnD,CAAoF;;;8BAA9ED,oC,UACsC,+C"}
@@ -1,4 +1,4 @@
1
- import { ElasticsearchSortModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin";
1
+ import { ElasticsearchSortModifierPlugin } from "@webiny/api-elasticsearch";
2
2
  export declare class FormElasticsearchSortModifierPlugin extends ElasticsearchSortModifierPlugin {
3
3
  static readonly type: string;
4
4
  }
@@ -9,9 +9,9 @@ exports.FormElasticsearchSortModifierPlugin = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _ElasticsearchSortModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
13
 
14
- class FormElasticsearchSortModifierPlugin extends _ElasticsearchSortModifierPlugin.ElasticsearchSortModifierPlugin {}
14
+ class FormElasticsearchSortModifierPlugin extends _apiElasticsearch.ElasticsearchSortModifierPlugin {}
15
15
 
16
16
  exports.FormElasticsearchSortModifierPlugin = FormElasticsearchSortModifierPlugin;
17
17
  (0, _defineProperty2.default)(FormElasticsearchSortModifierPlugin, "type", "formBuilder.elasticsearch.modifier.sort.form");
@@ -1 +1 @@
1
- {"version":3,"names":["FormElasticsearchSortModifierPlugin","ElasticsearchSortModifierPlugin"],"sources":["FormElasticsearchSortModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchSortModifierPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin\";\n\nexport class FormElasticsearchSortModifierPlugin extends ElasticsearchSortModifierPlugin {\n public static override readonly type: string = \"formBuilder.elasticsearch.modifier.sort.form\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,mCAAN,SAAkDC,gEAAlD,CAAkF;;;8BAA5ED,mC,UACsC,8C"}
1
+ {"version":3,"names":["FormElasticsearchSortModifierPlugin","ElasticsearchSortModifierPlugin"],"sources":["FormElasticsearchSortModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchSortModifierPlugin } from \"@webiny/api-elasticsearch\";\n\nexport class FormElasticsearchSortModifierPlugin extends ElasticsearchSortModifierPlugin {\n public static override readonly type: string = \"formBuilder.elasticsearch.modifier.sort.form\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,mCAAN,SAAkDC,iDAAlD,CAAkF;;;8BAA5ED,mC,UACsC,8C"}
@@ -1,4 +1,4 @@
1
- import { ElasticsearchBodyModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchBodyModifierPlugin";
1
+ import { ElasticsearchBodyModifierPlugin } from "@webiny/api-elasticsearch";
2
2
  export declare class SubmissionElasticsearchBodyModifierPlugin extends ElasticsearchBodyModifierPlugin {
3
3
  static readonly type: string;
4
4
  }
@@ -9,9 +9,9 @@ exports.SubmissionElasticsearchBodyModifierPlugin = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _ElasticsearchBodyModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchBodyModifierPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
13
 
14
- class SubmissionElasticsearchBodyModifierPlugin extends _ElasticsearchBodyModifierPlugin.ElasticsearchBodyModifierPlugin {}
14
+ class SubmissionElasticsearchBodyModifierPlugin extends _apiElasticsearch.ElasticsearchBodyModifierPlugin {}
15
15
 
16
16
  exports.SubmissionElasticsearchBodyModifierPlugin = SubmissionElasticsearchBodyModifierPlugin;
17
17
  (0, _defineProperty2.default)(SubmissionElasticsearchBodyModifierPlugin, "type", "formBuilder.elasticsearch.modifier.body.submission");
@@ -1 +1 @@
1
- {"version":3,"names":["SubmissionElasticsearchBodyModifierPlugin","ElasticsearchBodyModifierPlugin"],"sources":["SubmissionElasticsearchBodyModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchBodyModifierPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchBodyModifierPlugin\";\n\nexport class SubmissionElasticsearchBodyModifierPlugin extends ElasticsearchBodyModifierPlugin {\n public static override readonly type: string =\n \"formBuilder.elasticsearch.modifier.body.submission\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,yCAAN,SAAwDC,gEAAxD,CAAwF;;;8BAAlFD,yC,UAEL,oD"}
1
+ {"version":3,"names":["SubmissionElasticsearchBodyModifierPlugin","ElasticsearchBodyModifierPlugin"],"sources":["SubmissionElasticsearchBodyModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchBodyModifierPlugin } from \"@webiny/api-elasticsearch\";\n\nexport class SubmissionElasticsearchBodyModifierPlugin extends ElasticsearchBodyModifierPlugin {\n public static override readonly type: string =\n \"formBuilder.elasticsearch.modifier.body.submission\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,yCAAN,SAAwDC,iDAAxD,CAAwF;;;8BAAlFD,yC,UAEL,oD"}
@@ -1,4 +1,4 @@
1
- import { ElasticsearchFieldPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin";
1
+ import { ElasticsearchFieldPlugin } from "@webiny/api-elasticsearch";
2
2
  export declare class SubmissionElasticsearchFieldPlugin extends ElasticsearchFieldPlugin {
3
3
  static readonly type: string;
4
4
  }
@@ -9,9 +9,9 @@ exports.SubmissionElasticsearchFieldPlugin = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _ElasticsearchFieldPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
13
 
14
- class SubmissionElasticsearchFieldPlugin extends _ElasticsearchFieldPlugin.ElasticsearchFieldPlugin {}
14
+ class SubmissionElasticsearchFieldPlugin extends _apiElasticsearch.ElasticsearchFieldPlugin {}
15
15
 
16
16
  exports.SubmissionElasticsearchFieldPlugin = SubmissionElasticsearchFieldPlugin;
17
17
  (0, _defineProperty2.default)(SubmissionElasticsearchFieldPlugin, "type", "formBuilder.elasticsearch.fieldDefinition.submission");
@@ -1 +1 @@
1
- {"version":3,"names":["SubmissionElasticsearchFieldPlugin","ElasticsearchFieldPlugin"],"sources":["SubmissionElasticsearchFieldPlugin.ts"],"sourcesContent":["import { ElasticsearchFieldPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin\";\n\nexport class SubmissionElasticsearchFieldPlugin extends ElasticsearchFieldPlugin {\n public static override readonly type: string =\n \"formBuilder.elasticsearch.fieldDefinition.submission\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,kCAAN,SAAiDC,kDAAjD,CAA0E;;;8BAApED,kC,UAEL,sD"}
1
+ {"version":3,"names":["SubmissionElasticsearchFieldPlugin","ElasticsearchFieldPlugin"],"sources":["SubmissionElasticsearchFieldPlugin.ts"],"sourcesContent":["import { ElasticsearchFieldPlugin } from \"@webiny/api-elasticsearch\";\n\nexport class SubmissionElasticsearchFieldPlugin extends ElasticsearchFieldPlugin {\n public static override readonly type: string =\n \"formBuilder.elasticsearch.fieldDefinition.submission\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,kCAAN,SAAiDC,0CAAjD,CAA0E;;;8BAApED,kC,UAEL,sD"}
@@ -1,4 +1,4 @@
1
- import { ElasticsearchQueryModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryModifierPlugin";
1
+ import { ElasticsearchQueryModifierPlugin } from "@webiny/api-elasticsearch";
2
2
  export declare class SubmissionElasticsearchQueryModifierPlugin extends ElasticsearchQueryModifierPlugin {
3
3
  static readonly type: string;
4
4
  }
@@ -9,9 +9,9 @@ exports.SubmissionElasticsearchQueryModifierPlugin = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _ElasticsearchQueryModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryModifierPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
13
 
14
- class SubmissionElasticsearchQueryModifierPlugin extends _ElasticsearchQueryModifierPlugin.ElasticsearchQueryModifierPlugin {}
14
+ class SubmissionElasticsearchQueryModifierPlugin extends _apiElasticsearch.ElasticsearchQueryModifierPlugin {}
15
15
 
16
16
  exports.SubmissionElasticsearchQueryModifierPlugin = SubmissionElasticsearchQueryModifierPlugin;
17
17
  (0, _defineProperty2.default)(SubmissionElasticsearchQueryModifierPlugin, "type", "formBuilder.elasticsearch.modifier.query.submission");
@@ -1 +1 @@
1
- {"version":3,"names":["SubmissionElasticsearchQueryModifierPlugin","ElasticsearchQueryModifierPlugin"],"sources":["SubmissionElasticsearchQueryModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchQueryModifierPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryModifierPlugin\";\n\nexport class SubmissionElasticsearchQueryModifierPlugin extends ElasticsearchQueryModifierPlugin {\n public static override readonly type: string =\n \"formBuilder.elasticsearch.modifier.query.submission\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,0CAAN,SAAyDC,kEAAzD,CAA0F;;;8BAApFD,0C,UAEL,qD"}
1
+ {"version":3,"names":["SubmissionElasticsearchQueryModifierPlugin","ElasticsearchQueryModifierPlugin"],"sources":["SubmissionElasticsearchQueryModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchQueryModifierPlugin } from \"@webiny/api-elasticsearch\";\n\nexport class SubmissionElasticsearchQueryModifierPlugin extends ElasticsearchQueryModifierPlugin {\n public static override readonly type: string =\n \"formBuilder.elasticsearch.modifier.query.submission\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,0CAAN,SAAyDC,kDAAzD,CAA0F;;;8BAApFD,0C,UAEL,qD"}
@@ -1,4 +1,4 @@
1
- import { ElasticsearchSortModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin";
1
+ import { ElasticsearchSortModifierPlugin } from "@webiny/api-elasticsearch";
2
2
  export declare class SubmissionElasticsearchSortModifierPlugin extends ElasticsearchSortModifierPlugin {
3
3
  static readonly type: string;
4
4
  }
@@ -9,9 +9,9 @@ exports.SubmissionElasticsearchSortModifierPlugin = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _ElasticsearchSortModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin");
12
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
13
13
 
14
- class SubmissionElasticsearchSortModifierPlugin extends _ElasticsearchSortModifierPlugin.ElasticsearchSortModifierPlugin {}
14
+ class SubmissionElasticsearchSortModifierPlugin extends _apiElasticsearch.ElasticsearchSortModifierPlugin {}
15
15
 
16
16
  exports.SubmissionElasticsearchSortModifierPlugin = SubmissionElasticsearchSortModifierPlugin;
17
17
  (0, _defineProperty2.default)(SubmissionElasticsearchSortModifierPlugin, "type", "formBuilder.elasticsearch.modifier.sort.submission");
@@ -1 +1 @@
1
- {"version":3,"names":["SubmissionElasticsearchSortModifierPlugin","ElasticsearchSortModifierPlugin"],"sources":["SubmissionElasticsearchSortModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchSortModifierPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin\";\n\nexport class SubmissionElasticsearchSortModifierPlugin extends ElasticsearchSortModifierPlugin {\n public static override readonly type: string =\n \"formBuilder.elasticsearch.modifier.sort.submission\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,yCAAN,SAAwDC,gEAAxD,CAAwF;;;8BAAlFD,yC,UAEL,oD"}
1
+ {"version":3,"names":["SubmissionElasticsearchSortModifierPlugin","ElasticsearchSortModifierPlugin"],"sources":["SubmissionElasticsearchSortModifierPlugin.ts"],"sourcesContent":["import { ElasticsearchSortModifierPlugin } from \"@webiny/api-elasticsearch\";\n\nexport class SubmissionElasticsearchSortModifierPlugin extends ElasticsearchSortModifierPlugin {\n public static override readonly type: string =\n \"formBuilder.elasticsearch.modifier.sort.submission\";\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,yCAAN,SAAwDC,iDAAxD,CAAwF;;;8BAAlFD,yC,UAEL,oD"}