@webiny/api-elasticsearch-tasks 6.0.0-alpha.0 → 6.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/definitions/table.d.ts +2 -2
  2. package/definitions/table.js.map +1 -1
  3. package/errors/IndexSettingsGetError.d.ts +1 -1
  4. package/errors/IndexSettingsGetError.js.map +1 -1
  5. package/errors/IndexSettingsSetError.d.ts +1 -1
  6. package/errors/IndexSettingsSetError.js.map +1 -1
  7. package/helpers/scan.d.ts +3 -3
  8. package/helpers/scan.js.map +1 -1
  9. package/index.d.ts +2 -2
  10. package/index.js.map +1 -1
  11. package/package.json +23 -23
  12. package/settings/DisableIndexing.d.ts +2 -2
  13. package/settings/DisableIndexing.js.map +1 -1
  14. package/settings/EnableIndexing.d.ts +2 -2
  15. package/settings/EnableIndexing.js.map +1 -1
  16. package/settings/IndexManager.d.ts +3 -3
  17. package/settings/IndexManager.js.map +1 -1
  18. package/settings/IndexSettingsManager.d.ts +2 -2
  19. package/settings/IndexSettingsManager.js.map +1 -1
  20. package/settings/types.d.ts +1 -1
  21. package/settings/types.js.map +1 -1
  22. package/tasks/Manager.d.ts +2 -2
  23. package/tasks/Manager.js.map +1 -1
  24. package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.d.ts +2 -2
  25. package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.js.map +1 -1
  26. package/tasks/createIndexes/createIndex.d.ts +1 -1
  27. package/tasks/createIndexes/createIndex.js.map +1 -1
  28. package/tasks/createIndexes/index.d.ts +2 -2
  29. package/tasks/createIndexes/index.js.map +1 -1
  30. package/tasks/createIndexes/listIndexes.d.ts +2 -2
  31. package/tasks/createIndexes/listIndexes.js.map +1 -1
  32. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.d.ts +2 -2
  33. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js.map +1 -1
  34. package/tasks/dataSynchronization/createFactories.d.ts +1 -1
  35. package/tasks/dataSynchronization/createFactories.js.map +1 -1
  36. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.d.ts +2 -2
  37. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js.map +1 -1
  38. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.d.ts +3 -3
  39. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js.map +1 -1
  40. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.d.ts +1 -1
  41. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js.map +1 -1
  42. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.d.ts +1 -1
  43. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js.map +1 -1
  44. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.d.ts +1 -1
  45. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js.map +1 -1
  46. package/tasks/dataSynchronization/entities/getElasticsearchEntity.d.ts +58 -58
  47. package/tasks/dataSynchronization/entities/getElasticsearchEntity.js.map +1 -1
  48. package/tasks/dataSynchronization/entities/getTable.d.ts +2 -2
  49. package/tasks/dataSynchronization/entities/getTable.js.map +1 -1
  50. package/tasks/dataSynchronization/index.d.ts +2 -2
  51. package/tasks/dataSynchronization/index.js.map +1 -1
  52. package/tasks/dataSynchronization/types.d.ts +6 -6
  53. package/tasks/dataSynchronization/types.js.map +1 -1
  54. package/tasks/enableIndexing/EnableIndexingTaskRunner.d.ts +4 -4
  55. package/tasks/enableIndexing/EnableIndexingTaskRunner.js.map +1 -1
  56. package/tasks/enableIndexing/index.d.ts +2 -2
  57. package/tasks/enableIndexing/index.js.map +1 -1
  58. package/tasks/reindexing/ReindexingTaskRunner.d.ts +3 -3
  59. package/tasks/reindexing/ReindexingTaskRunner.js.map +1 -1
  60. package/tasks/reindexing/reindexingTaskDefinition.d.ts +1 -1
  61. package/tasks/reindexing/reindexingTaskDefinition.js.map +1 -1
  62. package/types.d.ts +1 -1
  63. package/types.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_dbDynamodb","require","_apiDynamodbToElasticsearch","_entities","ElasticsearchSynchronize","constructor","params","timer","context","execute","items","done","index","length","table","getTable","type","readableItems","map","item","entity","getEntity","getBatch","PK","SK","tableItems","batchReadAll","elasticsearchSyncBuilder","createSynchronizationBuilder","exists","some","ddbItem","delete","id","_id","executeWithRetry","build","getElasticsearchEntityType","getElasticsearchEntity","exports"],"sources":["ElasticsearchSynchronize.ts"],"sourcesContent":["import { batchReadAll } from \"@webiny/db-dynamodb\";\nimport { createSynchronizationBuilder } from \"@webiny/api-dynamodb-to-elasticsearch\";\nimport {\n getElasticsearchEntity,\n getElasticsearchEntityType,\n getTable,\n IGetElasticsearchEntityTypeParams\n} from \"~/tasks/dataSynchronization/entities\";\nimport { ITimer } from \"@webiny/handler-aws\";\nimport { Context } from \"~/types\";\nimport {\n IElasticsearchSynchronize,\n IElasticsearchSynchronizeExecuteParams,\n IElasticsearchSynchronizeExecuteResponse\n} from \"./abstractions/ElasticsearchSynchronize\";\n\nexport interface IElasticsearchSynchronizeParams {\n timer: ITimer;\n context: Context;\n}\n\ninterface IDynamoDbItem {\n PK: string;\n SK: string;\n}\n\nexport class ElasticsearchSynchronize implements IElasticsearchSynchronize {\n private readonly timer: ITimer;\n private readonly context: Context;\n\n public constructor(params: IElasticsearchSynchronizeParams) {\n this.timer = params.timer;\n this.context = params.context;\n }\n\n public async execute(\n params: IElasticsearchSynchronizeExecuteParams\n ): Promise<IElasticsearchSynchronizeExecuteResponse> {\n const { items, done, index } = params;\n if (items.length === 0) {\n return {\n done: true\n };\n }\n\n const table = getTable({\n type: \"es\",\n context: this.context\n });\n\n const readableItems = items.map(item => {\n const entity = this.getEntity(item);\n return entity.item.getBatch({\n PK: item.PK,\n SK: item.SK\n });\n });\n\n const tableItems = await batchReadAll<IDynamoDbItem>({\n items: readableItems,\n table\n });\n\n const elasticsearchSyncBuilder = createSynchronizationBuilder({\n timer: this.timer,\n context: this.context\n });\n /**\n * We need to find the items we have in the Elasticsearch but not in the DynamoDB-Elasticsearch table.\n */\n for (const item of items) {\n const exists = tableItems.some(ddbItem => {\n return ddbItem.PK === item.PK && ddbItem.SK === item.SK;\n });\n if (exists) {\n continue;\n }\n elasticsearchSyncBuilder.delete({\n index,\n id: item._id\n });\n }\n\n const executeWithRetry = elasticsearchSyncBuilder.build();\n await executeWithRetry();\n\n return {\n done\n };\n }\n\n private getEntity(\n params: IGetElasticsearchEntityTypeParams\n ): ReturnType<typeof getElasticsearchEntity> {\n const type = getElasticsearchEntityType(params);\n return getElasticsearchEntity({\n type,\n context: this.context\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAwBO,MAAMG,wBAAwB,CAAsC;EAIhEC,WAAWA,CAACC,MAAuC,EAAE;IACxD,IAAI,CAACC,KAAK,GAAGD,MAAM,CAACC,KAAK;IACzB,IAAI,CAACC,OAAO,GAAGF,MAAM,CAACE,OAAO;EACjC;EAEA,MAAaC,OAAOA,CAChBH,MAA8C,EACG;IACjD,MAAM;MAAEI,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAGN,MAAM;IACrC,IAAII,KAAK,CAACG,MAAM,KAAK,CAAC,EAAE;MACpB,OAAO;QACHF,IAAI,EAAE;MACV,CAAC;IACL;IAEA,MAAMG,KAAK,GAAG,IAAAC,kBAAQ,EAAC;MACnBC,IAAI,EAAE,IAAI;MACVR,OAAO,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;IAEF,MAAMS,aAAa,GAAGP,KAAK,CAACQ,GAAG,CAACC,IAAI,IAAI;MACpC,MAAMC,MAAM,GAAG,IAAI,CAACC,SAAS,CAACF,IAAI,CAAC;MACnC,OAAOC,MAAM,CAACD,IAAI,CAACG,QAAQ,CAAC;QACxBC,EAAE,EAAEJ,IAAI,CAACI,EAAE;QACXC,EAAE,EAAEL,IAAI,CAACK;MACb,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAMC,UAAU,GAAG,MAAM,IAAAC,wBAAY,EAAgB;MACjDhB,KAAK,EAAEO,aAAa;MACpBH;IACJ,CAAC,CAAC;IAEF,MAAMa,wBAAwB,GAAG,IAAAC,wDAA4B,EAAC;MAC1DrB,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBC,OAAO,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;IACF;AACR;AACA;IACQ,KAAK,MAAMW,IAAI,IAAIT,KAAK,EAAE;MACtB,MAAMmB,MAAM,GAAGJ,UAAU,CAACK,IAAI,CAACC,OAAO,IAAI;QACtC,OAAOA,OAAO,CAACR,EAAE,KAAKJ,IAAI,CAACI,EAAE,IAAIQ,OAAO,CAACP,EAAE,KAAKL,IAAI,CAACK,EAAE;MAC3D,CAAC,CAAC;MACF,IAAIK,MAAM,EAAE;QACR;MACJ;MACAF,wBAAwB,CAACK,MAAM,CAAC;QAC5BpB,KAAK;QACLqB,EAAE,EAAEd,IAAI,CAACe;MACb,CAAC,CAAC;IACN;IAEA,MAAMC,gBAAgB,GAAGR,wBAAwB,CAACS,KAAK,CAAC,CAAC;IACzD,MAAMD,gBAAgB,CAAC,CAAC;IAExB,OAAO;MACHxB;IACJ,CAAC;EACL;EAEQU,SAASA,CACbf,MAAyC,EACA;IACzC,MAAMU,IAAI,GAAG,IAAAqB,oCAA0B,EAAC/B,MAAM,CAAC;IAC/C,OAAO,IAAAgC,gCAAsB,EAAC;MAC1BtB,IAAI;MACJR,OAAO,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;EACN;AACJ;AAAC+B,OAAA,CAAAnC,wBAAA,GAAAA,wBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_dbDynamodb","require","_apiDynamodbToElasticsearch","_entities","ElasticsearchSynchronize","constructor","params","timer","context","execute","items","done","index","length","table","getTable","type","readableItems","map","item","entity","getEntity","getBatch","PK","SK","tableItems","batchReadAll","elasticsearchSyncBuilder","createSynchronizationBuilder","exists","some","ddbItem","delete","id","_id","executeWithRetry","build","getElasticsearchEntityType","getElasticsearchEntity","exports"],"sources":["ElasticsearchSynchronize.ts"],"sourcesContent":["import { batchReadAll } from \"@webiny/db-dynamodb\";\nimport { createSynchronizationBuilder } from \"@webiny/api-dynamodb-to-elasticsearch\";\nimport type { IGetElasticsearchEntityTypeParams } from \"~/tasks/dataSynchronization/entities\";\nimport {\n getElasticsearchEntity,\n getElasticsearchEntityType,\n getTable\n} from \"~/tasks/dataSynchronization/entities\";\nimport type { ITimer } from \"@webiny/handler-aws\";\nimport type { Context } from \"~/types\";\nimport type {\n IElasticsearchSynchronize,\n IElasticsearchSynchronizeExecuteParams,\n IElasticsearchSynchronizeExecuteResponse\n} from \"./abstractions/ElasticsearchSynchronize\";\n\nexport interface IElasticsearchSynchronizeParams {\n timer: ITimer;\n context: Context;\n}\n\ninterface IDynamoDbItem {\n PK: string;\n SK: string;\n}\n\nexport class ElasticsearchSynchronize implements IElasticsearchSynchronize {\n private readonly timer: ITimer;\n private readonly context: Context;\n\n public constructor(params: IElasticsearchSynchronizeParams) {\n this.timer = params.timer;\n this.context = params.context;\n }\n\n public async execute(\n params: IElasticsearchSynchronizeExecuteParams\n ): Promise<IElasticsearchSynchronizeExecuteResponse> {\n const { items, done, index } = params;\n if (items.length === 0) {\n return {\n done: true\n };\n }\n\n const table = getTable({\n type: \"es\",\n context: this.context\n });\n\n const readableItems = items.map(item => {\n const entity = this.getEntity(item);\n return entity.item.getBatch({\n PK: item.PK,\n SK: item.SK\n });\n });\n\n const tableItems = await batchReadAll<IDynamoDbItem>({\n items: readableItems,\n table\n });\n\n const elasticsearchSyncBuilder = createSynchronizationBuilder({\n timer: this.timer,\n context: this.context\n });\n /**\n * We need to find the items we have in the Elasticsearch but not in the DynamoDB-Elasticsearch table.\n */\n for (const item of items) {\n const exists = tableItems.some(ddbItem => {\n return ddbItem.PK === item.PK && ddbItem.SK === item.SK;\n });\n if (exists) {\n continue;\n }\n elasticsearchSyncBuilder.delete({\n index,\n id: item._id\n });\n }\n\n const executeWithRetry = elasticsearchSyncBuilder.build();\n await executeWithRetry();\n\n return {\n done\n };\n }\n\n private getEntity(\n params: IGetElasticsearchEntityTypeParams\n ): ReturnType<typeof getElasticsearchEntity> {\n const type = getElasticsearchEntityType(params);\n return getElasticsearchEntity({\n type,\n context: this.context\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AAuBO,MAAMG,wBAAwB,CAAsC;EAIhEC,WAAWA,CAACC,MAAuC,EAAE;IACxD,IAAI,CAACC,KAAK,GAAGD,MAAM,CAACC,KAAK;IACzB,IAAI,CAACC,OAAO,GAAGF,MAAM,CAACE,OAAO;EACjC;EAEA,MAAaC,OAAOA,CAChBH,MAA8C,EACG;IACjD,MAAM;MAAEI,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAGN,MAAM;IACrC,IAAII,KAAK,CAACG,MAAM,KAAK,CAAC,EAAE;MACpB,OAAO;QACHF,IAAI,EAAE;MACV,CAAC;IACL;IAEA,MAAMG,KAAK,GAAG,IAAAC,kBAAQ,EAAC;MACnBC,IAAI,EAAE,IAAI;MACVR,OAAO,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;IAEF,MAAMS,aAAa,GAAGP,KAAK,CAACQ,GAAG,CAACC,IAAI,IAAI;MACpC,MAAMC,MAAM,GAAG,IAAI,CAACC,SAAS,CAACF,IAAI,CAAC;MACnC,OAAOC,MAAM,CAACD,IAAI,CAACG,QAAQ,CAAC;QACxBC,EAAE,EAAEJ,IAAI,CAACI,EAAE;QACXC,EAAE,EAAEL,IAAI,CAACK;MACb,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAMC,UAAU,GAAG,MAAM,IAAAC,wBAAY,EAAgB;MACjDhB,KAAK,EAAEO,aAAa;MACpBH;IACJ,CAAC,CAAC;IAEF,MAAMa,wBAAwB,GAAG,IAAAC,wDAA4B,EAAC;MAC1DrB,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBC,OAAO,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;IACF;AACR;AACA;IACQ,KAAK,MAAMW,IAAI,IAAIT,KAAK,EAAE;MACtB,MAAMmB,MAAM,GAAGJ,UAAU,CAACK,IAAI,CAACC,OAAO,IAAI;QACtC,OAAOA,OAAO,CAACR,EAAE,KAAKJ,IAAI,CAACI,EAAE,IAAIQ,OAAO,CAACP,EAAE,KAAKL,IAAI,CAACK,EAAE;MAC3D,CAAC,CAAC;MACF,IAAIK,MAAM,EAAE;QACR;MACJ;MACAF,wBAAwB,CAACK,MAAM,CAAC;QAC5BpB,KAAK;QACLqB,EAAE,EAAEd,IAAI,CAACe;MACb,CAAC,CAAC;IACN;IAEA,MAAMC,gBAAgB,GAAGR,wBAAwB,CAACS,KAAK,CAAC,CAAC;IACzD,MAAMD,gBAAgB,CAAC,CAAC;IAExB,OAAO;MACHxB;IACJ,CAAC;EACL;EAEQU,SAASA,CACbf,MAAyC,EACA;IACzC,MAAMU,IAAI,GAAG,IAAAqB,oCAA0B,EAAC/B,MAAM,CAAC;IAC/C,OAAO,IAAAgC,gCAAsB,EAAC;MAC1BtB,IAAI;MACJR,OAAO,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;EACN;AACJ;AAAC+B,OAAA,CAAAnC,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { IDataSynchronizationInput, IElasticsearchSyncParams, ISynchronization, ISynchronizationRunResult } from "../types";
1
+ import type { IDataSynchronizationInput, IElasticsearchSyncParams, ISynchronization, ISynchronizationRunResult } from "../types";
2
2
  export declare class ElasticsearchToDynamoDbSynchronization implements ISynchronization {
3
3
  private readonly manager;
4
4
  private readonly indexManager;
@@ -1 +1 @@
1
- {"version":3,"names":["ElasticsearchToDynamoDbSynchronization","constructor","params","manager","indexManager","synchronize","fetcher","run","input","lastIndex","elasticsearchToDynamoDb","index","cursor","indexes","fetchAllIndexes","next","findIndex","currentIndex","isAborted","response","aborted","isCloseToTimeout","continue","result","fetch","limit","syncResult","execute","done","items","undefined","finished","list","length","Error","exports"],"sources":["ElasticsearchToDynamoDbSynchronization.ts"],"sourcesContent":["import {\n IDataSynchronizationInput,\n IDataSynchronizationManager,\n IElasticsearchSyncParams,\n ISynchronization,\n ISynchronizationRunResult\n} from \"../types\";\nimport { IIndexManager } from \"~/settings/types\";\nimport { NonEmptyArray } from \"@webiny/api/types\";\nimport { IElasticsearchSynchronize } from \"./abstractions/ElasticsearchSynchronize\";\nimport { IElasticsearchFetcher } from \"./abstractions/ElasticsearchFetcher\";\n\nexport class ElasticsearchToDynamoDbSynchronization implements ISynchronization {\n private readonly manager: IDataSynchronizationManager;\n private readonly indexManager: IIndexManager;\n private readonly synchronize: IElasticsearchSynchronize;\n private readonly fetcher: IElasticsearchFetcher;\n\n public constructor(params: IElasticsearchSyncParams) {\n this.manager = params.manager;\n this.indexManager = params.indexManager;\n this.synchronize = params.synchronize;\n this.fetcher = params.fetcher;\n }\n\n public async run(input: IDataSynchronizationInput): Promise<ISynchronizationRunResult> {\n const lastIndex = input.elasticsearchToDynamoDb?.index;\n let cursor = input.elasticsearchToDynamoDb?.cursor;\n const indexes = await this.fetchAllIndexes();\n\n let next = 0;\n if (lastIndex) {\n next = indexes.findIndex(index => index === lastIndex);\n }\n\n let currentIndex = indexes[next];\n\n while (currentIndex) {\n if (this.manager.isAborted()) {\n return this.manager.response.aborted();\n }\n /**\n * We will put 180 seconds because we are writing to the Elasticsearch/OpenSearch directly.\n * We want to leave enough time for possible retries.\n */\n //\n else if (this.manager.isCloseToTimeout(180)) {\n return this.manager.response.continue({\n ...input,\n elasticsearchToDynamoDb: {\n ...input.elasticsearchToDynamoDb,\n index: currentIndex,\n cursor\n }\n });\n }\n\n const result = await this.fetcher.fetch({\n index: currentIndex,\n cursor,\n limit: 100\n });\n\n const syncResult = await this.synchronize.execute({\n done: result.done,\n index: currentIndex,\n items: result.items\n });\n\n if (!syncResult.done && result.cursor) {\n cursor = result.cursor;\n continue;\n }\n cursor = undefined;\n\n const next = indexes.findIndex(index => index === currentIndex) + 1;\n currentIndex = indexes[next];\n }\n\n return this.manager.response.continue({\n ...input,\n elasticsearchToDynamoDb: {\n finished: true\n }\n });\n }\n\n private async fetchAllIndexes(): Promise<NonEmptyArray<string>> {\n const result = await this.indexManager.list();\n if (result.length > 0) {\n return result as NonEmptyArray<string>;\n }\n throw new Error(\"No Elasticsearch / OpenSearch indexes found.\");\n }\n}\n"],"mappings":";;;;;;AAYO,MAAMA,sCAAsC,CAA6B;EAMrEC,WAAWA,CAACC,MAAgC,EAAE;IACjD,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC7B,IAAI,CAACC,YAAY,GAAGF,MAAM,CAACE,YAAY;IACvC,IAAI,CAACC,WAAW,GAAGH,MAAM,CAACG,WAAW;IACrC,IAAI,CAACC,OAAO,GAAGJ,MAAM,CAACI,OAAO;EACjC;EAEA,MAAaC,GAAGA,CAACC,KAAgC,EAAsC;IACnF,MAAMC,SAAS,GAAGD,KAAK,CAACE,uBAAuB,EAAEC,KAAK;IACtD,IAAIC,MAAM,GAAGJ,KAAK,CAACE,uBAAuB,EAAEE,MAAM;IAClD,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACC,eAAe,CAAC,CAAC;IAE5C,IAAIC,IAAI,GAAG,CAAC;IACZ,IAAIN,SAAS,EAAE;MACXM,IAAI,GAAGF,OAAO,CAACG,SAAS,CAACL,KAAK,IAAIA,KAAK,KAAKF,SAAS,CAAC;IAC1D;IAEA,IAAIQ,YAAY,GAAGJ,OAAO,CAACE,IAAI,CAAC;IAEhC,OAAOE,YAAY,EAAE;MACjB,IAAI,IAAI,CAACd,OAAO,CAACe,SAAS,CAAC,CAAC,EAAE;QAC1B,OAAO,IAAI,CAACf,OAAO,CAACgB,QAAQ,CAACC,OAAO,CAAC,CAAC;MAC1C;MACA;AACZ;AACA;AACA;MACY;MAAA,KACK,IAAI,IAAI,CAACjB,OAAO,CAACkB,gBAAgB,CAAC,GAAG,CAAC,EAAE;QACzC,OAAO,IAAI,CAAClB,OAAO,CAACgB,QAAQ,CAACG,QAAQ,CAAC;UAClC,GAAGd,KAAK;UACRE,uBAAuB,EAAE;YACrB,GAAGF,KAAK,CAACE,uBAAuB;YAChCC,KAAK,EAAEM,YAAY;YACnBL;UACJ;QACJ,CAAC,CAAC;MACN;MAEA,MAAMW,MAAM,GAAG,MAAM,IAAI,CAACjB,OAAO,CAACkB,KAAK,CAAC;QACpCb,KAAK,EAAEM,YAAY;QACnBL,MAAM;QACNa,KAAK,EAAE;MACX,CAAC,CAAC;MAEF,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACrB,WAAW,CAACsB,OAAO,CAAC;QAC9CC,IAAI,EAAEL,MAAM,CAACK,IAAI;QACjBjB,KAAK,EAAEM,YAAY;QACnBY,KAAK,EAAEN,MAAM,CAACM;MAClB,CAAC,CAAC;MAEF,IAAI,CAACH,UAAU,CAACE,IAAI,IAAIL,MAAM,CAACX,MAAM,EAAE;QACnCA,MAAM,GAAGW,MAAM,CAACX,MAAM;QACtB;MACJ;MACAA,MAAM,GAAGkB,SAAS;MAElB,MAAMf,IAAI,GAAGF,OAAO,CAACG,SAAS,CAACL,KAAK,IAAIA,KAAK,KAAKM,YAAY,CAAC,GAAG,CAAC;MACnEA,YAAY,GAAGJ,OAAO,CAACE,IAAI,CAAC;IAChC;IAEA,OAAO,IAAI,CAACZ,OAAO,CAACgB,QAAQ,CAACG,QAAQ,CAAC;MAClC,GAAGd,KAAK;MACRE,uBAAuB,EAAE;QACrBqB,QAAQ,EAAE;MACd;IACJ,CAAC,CAAC;EACN;EAEA,MAAcjB,eAAeA,CAAA,EAAmC;IAC5D,MAAMS,MAAM,GAAG,MAAM,IAAI,CAACnB,YAAY,CAAC4B,IAAI,CAAC,CAAC;IAC7C,IAAIT,MAAM,CAACU,MAAM,GAAG,CAAC,EAAE;MACnB,OAAOV,MAAM;IACjB;IACA,MAAM,IAAIW,KAAK,CAAC,8CAA8C,CAAC;EACnE;AACJ;AAACC,OAAA,CAAAnC,sCAAA,GAAAA,sCAAA","ignoreList":[]}
1
+ {"version":3,"names":["ElasticsearchToDynamoDbSynchronization","constructor","params","manager","indexManager","synchronize","fetcher","run","input","lastIndex","elasticsearchToDynamoDb","index","cursor","indexes","fetchAllIndexes","next","findIndex","currentIndex","isAborted","response","aborted","isCloseToTimeout","continue","result","fetch","limit","syncResult","execute","done","items","undefined","finished","list","length","Error","exports"],"sources":["ElasticsearchToDynamoDbSynchronization.ts"],"sourcesContent":["import type {\n IDataSynchronizationInput,\n IDataSynchronizationManager,\n IElasticsearchSyncParams,\n ISynchronization,\n ISynchronizationRunResult\n} from \"../types\";\nimport type { IIndexManager } from \"~/settings/types\";\nimport type { NonEmptyArray } from \"@webiny/api/types\";\nimport type { IElasticsearchSynchronize } from \"./abstractions/ElasticsearchSynchronize\";\nimport type { IElasticsearchFetcher } from \"./abstractions/ElasticsearchFetcher\";\n\nexport class ElasticsearchToDynamoDbSynchronization implements ISynchronization {\n private readonly manager: IDataSynchronizationManager;\n private readonly indexManager: IIndexManager;\n private readonly synchronize: IElasticsearchSynchronize;\n private readonly fetcher: IElasticsearchFetcher;\n\n public constructor(params: IElasticsearchSyncParams) {\n this.manager = params.manager;\n this.indexManager = params.indexManager;\n this.synchronize = params.synchronize;\n this.fetcher = params.fetcher;\n }\n\n public async run(input: IDataSynchronizationInput): Promise<ISynchronizationRunResult> {\n const lastIndex = input.elasticsearchToDynamoDb?.index;\n let cursor = input.elasticsearchToDynamoDb?.cursor;\n const indexes = await this.fetchAllIndexes();\n\n let next = 0;\n if (lastIndex) {\n next = indexes.findIndex(index => index === lastIndex);\n }\n\n let currentIndex = indexes[next];\n\n while (currentIndex) {\n if (this.manager.isAborted()) {\n return this.manager.response.aborted();\n }\n /**\n * We will put 180 seconds because we are writing to the Elasticsearch/OpenSearch directly.\n * We want to leave enough time for possible retries.\n */\n //\n else if (this.manager.isCloseToTimeout(180)) {\n return this.manager.response.continue({\n ...input,\n elasticsearchToDynamoDb: {\n ...input.elasticsearchToDynamoDb,\n index: currentIndex,\n cursor\n }\n });\n }\n\n const result = await this.fetcher.fetch({\n index: currentIndex,\n cursor,\n limit: 100\n });\n\n const syncResult = await this.synchronize.execute({\n done: result.done,\n index: currentIndex,\n items: result.items\n });\n\n if (!syncResult.done && result.cursor) {\n cursor = result.cursor;\n continue;\n }\n cursor = undefined;\n\n const next = indexes.findIndex(index => index === currentIndex) + 1;\n currentIndex = indexes[next];\n }\n\n return this.manager.response.continue({\n ...input,\n elasticsearchToDynamoDb: {\n finished: true\n }\n });\n }\n\n private async fetchAllIndexes(): Promise<NonEmptyArray<string>> {\n const result = await this.indexManager.list();\n if (result.length > 0) {\n return result as NonEmptyArray<string>;\n }\n throw new Error(\"No Elasticsearch / OpenSearch indexes found.\");\n }\n}\n"],"mappings":";;;;;;AAYO,MAAMA,sCAAsC,CAA6B;EAMrEC,WAAWA,CAACC,MAAgC,EAAE;IACjD,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC7B,IAAI,CAACC,YAAY,GAAGF,MAAM,CAACE,YAAY;IACvC,IAAI,CAACC,WAAW,GAAGH,MAAM,CAACG,WAAW;IACrC,IAAI,CAACC,OAAO,GAAGJ,MAAM,CAACI,OAAO;EACjC;EAEA,MAAaC,GAAGA,CAACC,KAAgC,EAAsC;IACnF,MAAMC,SAAS,GAAGD,KAAK,CAACE,uBAAuB,EAAEC,KAAK;IACtD,IAAIC,MAAM,GAAGJ,KAAK,CAACE,uBAAuB,EAAEE,MAAM;IAClD,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACC,eAAe,CAAC,CAAC;IAE5C,IAAIC,IAAI,GAAG,CAAC;IACZ,IAAIN,SAAS,EAAE;MACXM,IAAI,GAAGF,OAAO,CAACG,SAAS,CAACL,KAAK,IAAIA,KAAK,KAAKF,SAAS,CAAC;IAC1D;IAEA,IAAIQ,YAAY,GAAGJ,OAAO,CAACE,IAAI,CAAC;IAEhC,OAAOE,YAAY,EAAE;MACjB,IAAI,IAAI,CAACd,OAAO,CAACe,SAAS,CAAC,CAAC,EAAE;QAC1B,OAAO,IAAI,CAACf,OAAO,CAACgB,QAAQ,CAACC,OAAO,CAAC,CAAC;MAC1C;MACA;AACZ;AACA;AACA;MACY;MAAA,KACK,IAAI,IAAI,CAACjB,OAAO,CAACkB,gBAAgB,CAAC,GAAG,CAAC,EAAE;QACzC,OAAO,IAAI,CAAClB,OAAO,CAACgB,QAAQ,CAACG,QAAQ,CAAC;UAClC,GAAGd,KAAK;UACRE,uBAAuB,EAAE;YACrB,GAAGF,KAAK,CAACE,uBAAuB;YAChCC,KAAK,EAAEM,YAAY;YACnBL;UACJ;QACJ,CAAC,CAAC;MACN;MAEA,MAAMW,MAAM,GAAG,MAAM,IAAI,CAACjB,OAAO,CAACkB,KAAK,CAAC;QACpCb,KAAK,EAAEM,YAAY;QACnBL,MAAM;QACNa,KAAK,EAAE;MACX,CAAC,CAAC;MAEF,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACrB,WAAW,CAACsB,OAAO,CAAC;QAC9CC,IAAI,EAAEL,MAAM,CAACK,IAAI;QACjBjB,KAAK,EAAEM,YAAY;QACnBY,KAAK,EAAEN,MAAM,CAACM;MAClB,CAAC,CAAC;MAEF,IAAI,CAACH,UAAU,CAACE,IAAI,IAAIL,MAAM,CAACX,MAAM,EAAE;QACnCA,MAAM,GAAGW,MAAM,CAACX,MAAM;QACtB;MACJ;MACAA,MAAM,GAAGkB,SAAS;MAElB,MAAMf,IAAI,GAAGF,OAAO,CAACG,SAAS,CAACL,KAAK,IAAIA,KAAK,KAAKM,YAAY,CAAC,GAAG,CAAC;MACnEA,YAAY,GAAGJ,OAAO,CAACE,IAAI,CAAC;IAChC;IAEA,OAAO,IAAI,CAACZ,OAAO,CAACgB,QAAQ,CAACG,QAAQ,CAAC;MAClC,GAAGd,KAAK;MACRE,uBAAuB,EAAE;QACrBqB,QAAQ,EAAE;MACd;IACJ,CAAC,CAAC;EACN;EAEA,MAAcjB,eAAeA,CAAA,EAAmC;IAC5D,MAAMS,MAAM,GAAG,MAAM,IAAI,CAACnB,YAAY,CAAC4B,IAAI,CAAC,CAAC;IAC7C,IAAIT,MAAM,CAACU,MAAM,GAAG,CAAC,EAAE;MACnB,OAAOV,MAAM;IACjB;IACA,MAAM,IAAIW,KAAK,CAAC,8CAA8C,CAAC;EACnE;AACJ;AAACC,OAAA,CAAAnC,sCAAA,GAAAA,sCAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { PrimitiveValue } from "@webiny/api-elasticsearch/types";
1
+ import type { PrimitiveValue } from "@webiny/api-elasticsearch/types";
2
2
  export interface IElasticsearchFetcherFetchResponseItem {
3
3
  PK: string;
4
4
  SK: string;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["ElasticsearchFetcher.ts"],"sourcesContent":["import { PrimitiveValue } from \"@webiny/api-elasticsearch/types\";\n\nexport interface IElasticsearchFetcherFetchResponseItem {\n PK: string;\n SK: string;\n _id: string;\n index: string;\n}\n\nexport interface IElasticsearchFetcherFetchParams {\n index: string;\n cursor?: PrimitiveValue[];\n limit: number;\n}\n\nexport interface IElasticsearchFetcherFetchResponse {\n done: boolean;\n totalCount: number;\n cursor?: PrimitiveValue[];\n items: IElasticsearchFetcherFetchResponseItem[];\n}\n\nexport interface IElasticsearchFetcher {\n fetch(params: IElasticsearchFetcherFetchParams): Promise<IElasticsearchFetcherFetchResponse>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["ElasticsearchFetcher.ts"],"sourcesContent":["import type { PrimitiveValue } from \"@webiny/api-elasticsearch/types\";\n\nexport interface IElasticsearchFetcherFetchResponseItem {\n PK: string;\n SK: string;\n _id: string;\n index: string;\n}\n\nexport interface IElasticsearchFetcherFetchParams {\n index: string;\n cursor?: PrimitiveValue[];\n limit: number;\n}\n\nexport interface IElasticsearchFetcherFetchResponse {\n done: boolean;\n totalCount: number;\n cursor?: PrimitiveValue[];\n items: IElasticsearchFetcherFetchResponseItem[];\n}\n\nexport interface IElasticsearchFetcher {\n fetch(params: IElasticsearchFetcherFetchParams): Promise<IElasticsearchFetcherFetchResponse>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import WebinyError from "@webiny/error";
1
+ import type WebinyError from "@webiny/error";
2
2
  export declare const shouldIgnoreEsResponseError: (error: WebinyError) => boolean;
@@ -1 +1 @@
1
- {"version":3,"names":["IGNORED_ES_SEARCH_EXCEPTIONS","shouldIgnoreEsResponseError","error","includes","message","exports"],"sources":["shouldIgnoreEsResponseError.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\n\nconst IGNORED_ES_SEARCH_EXCEPTIONS = [\n \"index_not_found_exception\",\n \"search_phase_execution_exception\",\n \"illegal_argument_exception\"\n];\n\nexport const shouldIgnoreEsResponseError = (error: WebinyError) => {\n return IGNORED_ES_SEARCH_EXCEPTIONS.includes(error.message);\n};\n"],"mappings":";;;;;;AAEA,MAAMA,4BAA4B,GAAG,CACjC,2BAA2B,EAC3B,kCAAkC,EAClC,4BAA4B,CAC/B;AAEM,MAAMC,2BAA2B,GAAIC,KAAkB,IAAK;EAC/D,OAAOF,4BAA4B,CAACG,QAAQ,CAACD,KAAK,CAACE,OAAO,CAAC;AAC/D,CAAC;AAACC,OAAA,CAAAJ,2BAAA,GAAAA,2BAAA","ignoreList":[]}
1
+ {"version":3,"names":["IGNORED_ES_SEARCH_EXCEPTIONS","shouldIgnoreEsResponseError","error","includes","message","exports"],"sources":["shouldIgnoreEsResponseError.ts"],"sourcesContent":["import type WebinyError from \"@webiny/error\";\n\nconst IGNORED_ES_SEARCH_EXCEPTIONS = [\n \"index_not_found_exception\",\n \"search_phase_execution_exception\",\n \"illegal_argument_exception\"\n];\n\nexport const shouldIgnoreEsResponseError = (error: WebinyError) => {\n return IGNORED_ES_SEARCH_EXCEPTIONS.includes(error.message);\n};\n"],"mappings":";;;;;;AAEA,MAAMA,4BAA4B,GAAG,CACjC,2BAA2B,EAC3B,kCAAkC,EAClC,4BAA4B,CAC/B;AAEM,MAAMC,2BAA2B,GAAIC,KAAkB,IAAK;EAC/D,OAAOF,4BAA4B,CAACG,QAAQ,CAACD,KAAK,CAACE,OAAO,CAAC;AAC/D,CAAC;AAACC,OAAA,CAAAJ,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -1,32 +1,13 @@
1
- import { Entity } from "@webiny/db-dynamodb/toolbox";
2
- import { IRegistryItem } from "@webiny/db";
1
+ import type { Entity } from "@webiny/db-dynamodb/toolbox";
2
+ import type { IRegistryItem } from "@webiny/db";
3
3
  import { EntityType } from "./getElasticsearchEntityType";
4
- import { Context } from "../../../types";
4
+ import type { Context } from "../../../types";
5
5
  export interface IGetElasticsearchEntityParams {
6
6
  type: EntityType | unknown;
7
7
  context: Pick<Context, "db">;
8
8
  }
9
9
  export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityParams) => IRegistryItem<Entity<string, import("dynamodb-toolbox/dist/cjs/classes/Entity").Overlay, import("dynamodb-toolbox/dist/cjs/classes/Entity").Overlay, import("@webiny/db-dynamodb/toolbox").TableDef | undefined, boolean, boolean, boolean, string, string, string, boolean, {
10
10
  readonly [x: string]: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | {
11
- readonly partitionKey?: false | undefined;
12
- readonly sortKey?: false | undefined;
13
- readonly type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
14
- readonly default?: any;
15
- readonly dependsOn?: string | readonly string[] | undefined;
16
- readonly transform?: ((value: any, data: {}) => any) | undefined;
17
- readonly format?: ((value: any, data: {}) => any) | undefined;
18
- readonly coerce?: boolean | undefined;
19
- readonly save?: boolean | undefined;
20
- readonly onUpdate?: boolean | undefined;
21
- readonly hidden?: boolean | undefined;
22
- readonly required?: boolean | "always" | undefined;
23
- readonly alias?: string | undefined;
24
- readonly map?: string | undefined;
25
- readonly setType?: import("dynamodb-toolbox/dist/cjs/classes/Table").DynamoDBKeyTypes | undefined;
26
- readonly delimiter?: string | undefined;
27
- readonly prefix?: string | undefined;
28
- readonly suffix?: string | undefined;
29
- } | {
30
11
  readonly type?: "string" | "number" | "bigint" | "binary" | undefined;
31
12
  readonly default?: any;
32
13
  readonly hidden?: boolean | undefined;
@@ -102,7 +83,7 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
102
83
  readonly setType?: undefined;
103
84
  readonly partitionKey?: false | undefined;
104
85
  readonly sortKey: string;
105
- } | readonly [string, number] | readonly [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | readonly [string, number, {
86
+ } | {
106
87
  readonly partitionKey?: false | undefined;
107
88
  readonly sortKey?: false | undefined;
108
89
  readonly type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
@@ -121,8 +102,7 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
121
102
  readonly delimiter?: string | undefined;
122
103
  readonly prefix?: string | undefined;
123
104
  readonly suffix?: string | undefined;
124
- }];
125
- readonly [x: number]: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | {
105
+ } | readonly [string, number] | readonly [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | readonly [string, number, {
126
106
  readonly partitionKey?: false | undefined;
127
107
  readonly sortKey?: false | undefined;
128
108
  readonly type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
@@ -141,7 +121,8 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
141
121
  readonly delimiter?: string | undefined;
142
122
  readonly prefix?: string | undefined;
143
123
  readonly suffix?: string | undefined;
144
- } | {
124
+ }];
125
+ readonly [x: number]: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | {
145
126
  readonly type?: "string" | "number" | "bigint" | "binary" | undefined;
146
127
  readonly default?: any;
147
128
  readonly hidden?: boolean | undefined;
@@ -217,7 +198,7 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
217
198
  readonly setType?: undefined;
218
199
  readonly partitionKey?: false | undefined;
219
200
  readonly sortKey: string;
220
- } | readonly [string, number] | readonly [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | readonly [string, number, {
201
+ } | {
221
202
  readonly partitionKey?: false | undefined;
222
203
  readonly sortKey?: false | undefined;
223
204
  readonly type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
@@ -236,8 +217,7 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
236
217
  readonly delimiter?: string | undefined;
237
218
  readonly prefix?: string | undefined;
238
219
  readonly suffix?: string | undefined;
239
- }];
240
- readonly [x: symbol]: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | {
220
+ } | readonly [string, number] | readonly [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | readonly [string, number, {
241
221
  readonly partitionKey?: false | undefined;
242
222
  readonly sortKey?: false | undefined;
243
223
  readonly type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
@@ -256,7 +236,8 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
256
236
  readonly delimiter?: string | undefined;
257
237
  readonly prefix?: string | undefined;
258
238
  readonly suffix?: string | undefined;
259
- } | {
239
+ }];
240
+ readonly [x: symbol]: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | {
260
241
  readonly type?: "string" | "number" | "bigint" | "binary" | undefined;
261
242
  readonly default?: any;
262
243
  readonly hidden?: boolean | undefined;
@@ -332,6 +313,25 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
332
313
  readonly setType?: undefined;
333
314
  readonly partitionKey?: false | undefined;
334
315
  readonly sortKey: string;
316
+ } | {
317
+ readonly partitionKey?: false | undefined;
318
+ readonly sortKey?: false | undefined;
319
+ readonly type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
320
+ readonly default?: any;
321
+ readonly dependsOn?: string | readonly string[] | undefined;
322
+ readonly transform?: ((value: any, data: {}) => any) | undefined;
323
+ readonly format?: ((value: any, data: {}) => any) | undefined;
324
+ readonly coerce?: boolean | undefined;
325
+ readonly save?: boolean | undefined;
326
+ readonly onUpdate?: boolean | undefined;
327
+ readonly hidden?: boolean | undefined;
328
+ readonly required?: boolean | "always" | undefined;
329
+ readonly alias?: string | undefined;
330
+ readonly map?: string | undefined;
331
+ readonly setType?: import("dynamodb-toolbox/dist/cjs/classes/Table").DynamoDBKeyTypes | undefined;
332
+ readonly delimiter?: string | undefined;
333
+ readonly prefix?: string | undefined;
334
+ readonly suffix?: string | undefined;
335
335
  } | readonly [string, number] | readonly [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | readonly [string, number, {
336
336
  readonly partitionKey?: false | undefined;
337
337
  readonly sortKey?: false | undefined;
@@ -353,26 +353,7 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
353
353
  readonly suffix?: string | undefined;
354
354
  }];
355
355
  }, {
356
- [x: string]: [string, number] | import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | {
357
- partitionKey?: false | undefined;
358
- sortKey?: false | undefined;
359
- type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
360
- default?: any;
361
- dependsOn?: string | string[] | undefined;
362
- transform?: ((value: any, data: {}) => any) | undefined;
363
- format?: ((value: any, data: {}) => any) | undefined;
364
- coerce?: boolean | undefined;
365
- save?: boolean | undefined;
366
- onUpdate?: boolean | undefined;
367
- hidden?: boolean | undefined;
368
- required?: boolean | "always" | undefined;
369
- alias?: string | undefined;
370
- map?: string | undefined;
371
- setType?: import("dynamodb-toolbox/dist/cjs/classes/Table").DynamoDBKeyTypes | undefined;
372
- delimiter?: string | undefined;
373
- prefix?: string | undefined;
374
- suffix?: string | undefined;
375
- } | {
356
+ [x: string]: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | [string, number] | [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | {
376
357
  type?: "string" | "number" | "bigint" | "binary" | undefined;
377
358
  default?: any;
378
359
  hidden?: boolean | undefined;
@@ -448,7 +429,7 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
448
429
  setType?: undefined;
449
430
  partitionKey?: false | undefined;
450
431
  sortKey: string;
451
- } | [string, number, {
432
+ } | {
452
433
  partitionKey?: false | undefined;
453
434
  sortKey?: false | undefined;
454
435
  type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
@@ -467,8 +448,7 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
467
448
  delimiter?: string | undefined;
468
449
  prefix?: string | undefined;
469
450
  suffix?: string | undefined;
470
- }];
471
- [x: number]: [string, number] | import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | {
451
+ } | [string, number, {
472
452
  partitionKey?: false | undefined;
473
453
  sortKey?: false | undefined;
474
454
  type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
@@ -487,7 +467,8 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
487
467
  delimiter?: string | undefined;
488
468
  prefix?: string | undefined;
489
469
  suffix?: string | undefined;
490
- } | {
470
+ }];
471
+ [x: number]: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | [string, number] | [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | {
491
472
  type?: "string" | "number" | "bigint" | "binary" | undefined;
492
473
  default?: any;
493
474
  hidden?: boolean | undefined;
@@ -563,7 +544,7 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
563
544
  setType?: undefined;
564
545
  partitionKey?: false | undefined;
565
546
  sortKey: string;
566
- } | [string, number, {
547
+ } | {
567
548
  partitionKey?: false | undefined;
568
549
  sortKey?: false | undefined;
569
550
  type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
@@ -582,8 +563,7 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
582
563
  delimiter?: string | undefined;
583
564
  prefix?: string | undefined;
584
565
  suffix?: string | undefined;
585
- }];
586
- [x: symbol]: [string, number] | import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | {
566
+ } | [string, number, {
587
567
  partitionKey?: false | undefined;
588
568
  sortKey?: false | undefined;
589
569
  type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
@@ -602,7 +582,8 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
602
582
  delimiter?: string | undefined;
603
583
  prefix?: string | undefined;
604
584
  suffix?: string | undefined;
605
- } | {
585
+ }];
586
+ [x: symbol]: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | [string, number] | [string, number, import("@webiny/db-dynamodb/toolbox").DynamoDBTypes] | {
606
587
  type?: "string" | "number" | "bigint" | "binary" | undefined;
607
588
  default?: any;
608
589
  hidden?: boolean | undefined;
@@ -678,6 +659,25 @@ export declare const getElasticsearchEntity: (params: IGetElasticsearchEntityPar
678
659
  setType?: undefined;
679
660
  partitionKey?: false | undefined;
680
661
  sortKey: string;
662
+ } | {
663
+ partitionKey?: false | undefined;
664
+ sortKey?: false | undefined;
665
+ type?: import("@webiny/db-dynamodb/toolbox").DynamoDBTypes | undefined;
666
+ default?: any;
667
+ dependsOn?: string | string[] | undefined;
668
+ transform?: ((value: any, data: {}) => any) | undefined;
669
+ format?: ((value: any, data: {}) => any) | undefined;
670
+ coerce?: boolean | undefined;
671
+ save?: boolean | undefined;
672
+ onUpdate?: boolean | undefined;
673
+ hidden?: boolean | undefined;
674
+ required?: boolean | "always" | undefined;
675
+ alias?: string | undefined;
676
+ map?: string | undefined;
677
+ setType?: import("dynamodb-toolbox/dist/cjs/classes/Table").DynamoDBKeyTypes | undefined;
678
+ delimiter?: string | undefined;
679
+ prefix?: string | undefined;
680
+ suffix?: string | undefined;
681
681
  } | [string, number, {
682
682
  partitionKey?: false | undefined;
683
683
  sortKey?: false | undefined;
@@ -1 +1 @@
1
- {"version":3,"names":["_getElasticsearchEntityType","require","createPredicate","app","tags","item","every","tag","includes","getElasticsearchEntity","params","type","context","getByPredicate","predicate","db","registry","getOneItem","EntityType","CMS","PAGE_BUILDER","FORM_BUILDER","FORM_BUILDER_SUBMISSION","ex","Error","exports","listElasticsearchEntities","getItems"],"sources":["getElasticsearchEntity.ts"],"sourcesContent":["import { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport { NonEmptyArray } from \"@webiny/api/types\";\nimport { IRegistryItem } from \"@webiny/db\";\nimport { EntityType } from \"./getElasticsearchEntityType\";\nimport { Context } from \"~/types\";\n\nexport interface IGetElasticsearchEntityParams {\n type: EntityType | unknown;\n context: Pick<Context, \"db\">;\n}\n\nconst createPredicate = (app: string, tags: NonEmptyArray<string>) => {\n return (item: IRegistryItem) => {\n return item.app === app && tags.every(tag => item.tags.includes(tag));\n };\n};\n\nexport const getElasticsearchEntity = (params: IGetElasticsearchEntityParams) => {\n const { type, context } = params;\n\n const getByPredicate = (predicate: (item: IRegistryItem) => boolean) => {\n return context.db.registry.getOneItem<Entity>(predicate);\n };\n\n try {\n switch (type) {\n case EntityType.CMS:\n return getByPredicate(createPredicate(\"cms\", [\"es\"]));\n case EntityType.PAGE_BUILDER:\n return getByPredicate(createPredicate(\"pb\", [\"es\"]));\n case EntityType.FORM_BUILDER:\n return getByPredicate(createPredicate(\"fb\", [\"es\"]));\n case EntityType.FORM_BUILDER_SUBMISSION:\n return getByPredicate(createPredicate(\"fb\", [\"es\", \"form-submission\"]));\n }\n } catch (ex) {}\n throw new Error(`Unknown entity type \"${type}\".`);\n};\n\nexport interface IListElasticsearchEntitiesParams {\n context: Pick<Context, \"db\">;\n}\n\nexport const listElasticsearchEntities = (\n params: IListElasticsearchEntitiesParams\n): IRegistryItem<Entity>[] => {\n const { context } = params;\n\n return context.db.registry.getItems<Entity>(item => {\n return item.tags.includes(\"es\");\n });\n};\n"],"mappings":";;;;;;AAGA,IAAAA,2BAAA,GAAAC,OAAA;AAQA,MAAMC,eAAe,GAAGA,CAACC,GAAW,EAAEC,IAA2B,KAAK;EAClE,OAAQC,IAAmB,IAAK;IAC5B,OAAOA,IAAI,CAACF,GAAG,KAAKA,GAAG,IAAIC,IAAI,CAACE,KAAK,CAACC,GAAG,IAAIF,IAAI,CAACD,IAAI,CAACI,QAAQ,CAACD,GAAG,CAAC,CAAC;EACzE,CAAC;AACL,CAAC;AAEM,MAAME,sBAAsB,GAAIC,MAAqC,IAAK;EAC7E,MAAM;IAAEC,IAAI;IAAEC;EAAQ,CAAC,GAAGF,MAAM;EAEhC,MAAMG,cAAc,GAAIC,SAA2C,IAAK;IACpE,OAAOF,OAAO,CAACG,EAAE,CAACC,QAAQ,CAACC,UAAU,CAASH,SAAS,CAAC;EAC5D,CAAC;EAED,IAAI;IACA,QAAQH,IAAI;MACR,KAAKO,sCAAU,CAACC,GAAG;QACf,OAAON,cAAc,CAACX,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;MACzD,KAAKgB,sCAAU,CAACE,YAAY;QACxB,OAAOP,cAAc,CAACX,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;MACxD,KAAKgB,sCAAU,CAACG,YAAY;QACxB,OAAOR,cAAc,CAACX,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;MACxD,KAAKgB,sCAAU,CAACI,uBAAuB;QACnC,OAAOT,cAAc,CAACX,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC/E;EACJ,CAAC,CAAC,OAAOqB,EAAE,EAAE,CAAC;EACd,MAAM,IAAIC,KAAK,CAAC,wBAAwBb,IAAI,IAAI,CAAC;AACrD,CAAC;AAACc,OAAA,CAAAhB,sBAAA,GAAAA,sBAAA;AAMK,MAAMiB,yBAAyB,GAClChB,MAAwC,IACd;EAC1B,MAAM;IAAEE;EAAQ,CAAC,GAAGF,MAAM;EAE1B,OAAOE,OAAO,CAACG,EAAE,CAACC,QAAQ,CAACW,QAAQ,CAAStB,IAAI,IAAI;IAChD,OAAOA,IAAI,CAACD,IAAI,CAACI,QAAQ,CAAC,IAAI,CAAC;EACnC,CAAC,CAAC;AACN,CAAC;AAACiB,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_getElasticsearchEntityType","require","createPredicate","app","tags","item","every","tag","includes","getElasticsearchEntity","params","type","context","getByPredicate","predicate","db","registry","getOneItem","EntityType","CMS","PAGE_BUILDER","FORM_BUILDER","FORM_BUILDER_SUBMISSION","ex","Error","exports","listElasticsearchEntities","getItems"],"sources":["getElasticsearchEntity.ts"],"sourcesContent":["import type { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport type { NonEmptyArray } from \"@webiny/api/types\";\nimport type { IRegistryItem } from \"@webiny/db\";\nimport { EntityType } from \"./getElasticsearchEntityType\";\nimport type { Context } from \"~/types\";\n\nexport interface IGetElasticsearchEntityParams {\n type: EntityType | unknown;\n context: Pick<Context, \"db\">;\n}\n\nconst createPredicate = (app: string, tags: NonEmptyArray<string>) => {\n return (item: IRegistryItem) => {\n return item.app === app && tags.every(tag => item.tags.includes(tag));\n };\n};\n\nexport const getElasticsearchEntity = (params: IGetElasticsearchEntityParams) => {\n const { type, context } = params;\n\n const getByPredicate = (predicate: (item: IRegistryItem) => boolean) => {\n return context.db.registry.getOneItem<Entity>(predicate);\n };\n\n try {\n switch (type) {\n case EntityType.CMS:\n return getByPredicate(createPredicate(\"cms\", [\"es\"]));\n case EntityType.PAGE_BUILDER:\n return getByPredicate(createPredicate(\"pb\", [\"es\"]));\n case EntityType.FORM_BUILDER:\n return getByPredicate(createPredicate(\"fb\", [\"es\"]));\n case EntityType.FORM_BUILDER_SUBMISSION:\n return getByPredicate(createPredicate(\"fb\", [\"es\", \"form-submission\"]));\n }\n } catch (ex) {}\n throw new Error(`Unknown entity type \"${type}\".`);\n};\n\nexport interface IListElasticsearchEntitiesParams {\n context: Pick<Context, \"db\">;\n}\n\nexport const listElasticsearchEntities = (\n params: IListElasticsearchEntitiesParams\n): IRegistryItem<Entity>[] => {\n const { context } = params;\n\n return context.db.registry.getItems<Entity>(item => {\n return item.tags.includes(\"es\");\n });\n};\n"],"mappings":";;;;;;AAGA,IAAAA,2BAAA,GAAAC,OAAA;AAQA,MAAMC,eAAe,GAAGA,CAACC,GAAW,EAAEC,IAA2B,KAAK;EAClE,OAAQC,IAAmB,IAAK;IAC5B,OAAOA,IAAI,CAACF,GAAG,KAAKA,GAAG,IAAIC,IAAI,CAACE,KAAK,CAACC,GAAG,IAAIF,IAAI,CAACD,IAAI,CAACI,QAAQ,CAACD,GAAG,CAAC,CAAC;EACzE,CAAC;AACL,CAAC;AAEM,MAAME,sBAAsB,GAAIC,MAAqC,IAAK;EAC7E,MAAM;IAAEC,IAAI;IAAEC;EAAQ,CAAC,GAAGF,MAAM;EAEhC,MAAMG,cAAc,GAAIC,SAA2C,IAAK;IACpE,OAAOF,OAAO,CAACG,EAAE,CAACC,QAAQ,CAACC,UAAU,CAASH,SAAS,CAAC;EAC5D,CAAC;EAED,IAAI;IACA,QAAQH,IAAI;MACR,KAAKO,sCAAU,CAACC,GAAG;QACf,OAAON,cAAc,CAACX,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;MACzD,KAAKgB,sCAAU,CAACE,YAAY;QACxB,OAAOP,cAAc,CAACX,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;MACxD,KAAKgB,sCAAU,CAACG,YAAY;QACxB,OAAOR,cAAc,CAACX,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;MACxD,KAAKgB,sCAAU,CAACI,uBAAuB;QACnC,OAAOT,cAAc,CAACX,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC/E;EACJ,CAAC,CAAC,OAAOqB,EAAE,EAAE,CAAC;EACd,MAAM,IAAIC,KAAK,CAAC,wBAAwBb,IAAI,IAAI,CAAC;AACrD,CAAC;AAACc,OAAA,CAAAhB,sBAAA,GAAAA,sBAAA;AAMK,MAAMiB,yBAAyB,GAClChB,MAAwC,IACd;EAC1B,MAAM;IAAEE;EAAQ,CAAC,GAAGF,MAAM;EAE1B,OAAOE,OAAO,CAACG,EAAE,CAACC,QAAQ,CAACW,QAAQ,CAAStB,IAAI,IAAI;IAChD,OAAOA,IAAI,CAACD,IAAI,CAACI,QAAQ,CAAC,IAAI,CAAC;EACnC,CAAC,CAAC;AACN,CAAC;AAACiB,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { TableDef } from "@webiny/db-dynamodb/toolbox";
2
- import { Context } from "../../../types";
1
+ import type { TableDef } from "@webiny/db-dynamodb/toolbox";
2
+ import type { Context } from "../../../types";
3
3
  export interface IGetTableParams {
4
4
  context: Pick<Context, "db">;
5
5
  type: "regular" | "es";
@@ -1 +1 @@
1
- {"version":3,"names":["createPredicate","app","tags","item","every","tag","includes","getTable","params","context","type","getByPredicate","predicate","db","registry","getOneItem","entity","Error","table","exports"],"sources":["getTable.ts"],"sourcesContent":["import { Entity, TableDef } from \"@webiny/db-dynamodb/toolbox\";\nimport { Context } from \"~/types\";\nimport { NonEmptyArray } from \"@webiny/api/types\";\nimport { IRegistryItem } from \"@webiny/db\";\n\nexport interface IGetTableParams {\n context: Pick<Context, \"db\">;\n type: \"regular\" | \"es\";\n}\n\nconst createPredicate = (app: string, tags: NonEmptyArray<string>) => {\n return (item: IRegistryItem) => {\n return item.app === app && tags.every(tag => item.tags.includes(tag));\n };\n};\n\nexport const getTable = (params: IGetTableParams): TableDef => {\n const { context, type } = params;\n\n const getByPredicate = (predicate: (item: IRegistryItem) => boolean) => {\n const item = context.db.registry.getOneItem<Entity>(predicate);\n return item.item;\n };\n\n const entity = getByPredicate(createPredicate(\"cms\", [type]));\n if (!entity) {\n throw new Error(`Unknown entity type \"${type}\".`);\n }\n return entity.table as TableDef;\n};\n"],"mappings":";;;;;;AAUA,MAAMA,eAAe,GAAGA,CAACC,GAAW,EAAEC,IAA2B,KAAK;EAClE,OAAQC,IAAmB,IAAK;IAC5B,OAAOA,IAAI,CAACF,GAAG,KAAKA,GAAG,IAAIC,IAAI,CAACE,KAAK,CAACC,GAAG,IAAIF,IAAI,CAACD,IAAI,CAACI,QAAQ,CAACD,GAAG,CAAC,CAAC;EACzE,CAAC;AACL,CAAC;AAEM,MAAME,QAAQ,GAAIC,MAAuB,IAAe;EAC3D,MAAM;IAAEC,OAAO;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAEhC,MAAMG,cAAc,GAAIC,SAA2C,IAAK;IACpE,MAAMT,IAAI,GAAGM,OAAO,CAACI,EAAE,CAACC,QAAQ,CAACC,UAAU,CAASH,SAAS,CAAC;IAC9D,OAAOT,IAAI,CAACA,IAAI;EACpB,CAAC;EAED,MAAMa,MAAM,GAAGL,cAAc,CAACX,eAAe,CAAC,KAAK,EAAE,CAACU,IAAI,CAAC,CAAC,CAAC;EAC7D,IAAI,CAACM,MAAM,EAAE;IACT,MAAM,IAAIC,KAAK,CAAC,wBAAwBP,IAAI,IAAI,CAAC;EACrD;EACA,OAAOM,MAAM,CAACE,KAAK;AACvB,CAAC;AAACC,OAAA,CAAAZ,QAAA,GAAAA,QAAA","ignoreList":[]}
1
+ {"version":3,"names":["createPredicate","app","tags","item","every","tag","includes","getTable","params","context","type","getByPredicate","predicate","db","registry","getOneItem","entity","Error","table","exports"],"sources":["getTable.ts"],"sourcesContent":["import type { Entity, TableDef } from \"@webiny/db-dynamodb/toolbox\";\nimport type { Context } from \"~/types\";\nimport type { NonEmptyArray } from \"@webiny/api/types\";\nimport type { IRegistryItem } from \"@webiny/db\";\n\nexport interface IGetTableParams {\n context: Pick<Context, \"db\">;\n type: \"regular\" | \"es\";\n}\n\nconst createPredicate = (app: string, tags: NonEmptyArray<string>) => {\n return (item: IRegistryItem) => {\n return item.app === app && tags.every(tag => item.tags.includes(tag));\n };\n};\n\nexport const getTable = (params: IGetTableParams): TableDef => {\n const { context, type } = params;\n\n const getByPredicate = (predicate: (item: IRegistryItem) => boolean) => {\n const item = context.db.registry.getOneItem<Entity>(predicate);\n return item.item;\n };\n\n const entity = getByPredicate(createPredicate(\"cms\", [type]));\n if (!entity) {\n throw new Error(`Unknown entity type \"${type}\".`);\n }\n return entity.table as TableDef;\n};\n"],"mappings":";;;;;;AAUA,MAAMA,eAAe,GAAGA,CAACC,GAAW,EAAEC,IAA2B,KAAK;EAClE,OAAQC,IAAmB,IAAK;IAC5B,OAAOA,IAAI,CAACF,GAAG,KAAKA,GAAG,IAAIC,IAAI,CAACE,KAAK,CAACC,GAAG,IAAIF,IAAI,CAACD,IAAI,CAACI,QAAQ,CAACD,GAAG,CAAC,CAAC;EACzE,CAAC;AACL,CAAC;AAEM,MAAME,QAAQ,GAAIC,MAAuB,IAAe;EAC3D,MAAM;IAAEC,OAAO;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAEhC,MAAMG,cAAc,GAAIC,SAA2C,IAAK;IACpE,MAAMT,IAAI,GAAGM,OAAO,CAACI,EAAE,CAACC,QAAQ,CAACC,UAAU,CAASH,SAAS,CAAC;IAC9D,OAAOT,IAAI,CAACA,IAAI;EACpB,CAAC;EAED,MAAMa,MAAM,GAAGL,cAAc,CAACX,eAAe,CAAC,KAAK,EAAE,CAACU,IAAI,CAAC,CAAC,CAAC;EAC7D,IAAI,CAACM,MAAM,EAAE;IACT,MAAM,IAAIC,KAAK,CAAC,wBAAwBP,IAAI,IAAI,CAAC;EACrD;EACA,OAAOM,MAAM,CAACE,KAAK;AACvB,CAAC;AAACC,OAAA,CAAAZ,QAAA,GAAAA,QAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Context, IElasticsearchTaskConfig } from "../../types";
2
- import { IDataSynchronizationInput } from "./types";
1
+ import type { Context, IElasticsearchTaskConfig } from "../../types";
2
+ import type { IDataSynchronizationInput } from "./types";
3
3
  export declare const DATA_SYNCHRONIZATION_TASK = "dataSynchronization";
4
4
  export declare const createDataSynchronization: (params?: IElasticsearchTaskConfig) => import("@webiny/tasks").TaskDefinitionPlugin<Context, IDataSynchronizationInput, import("@webiny/tasks").ITaskResponseDoneResultOutput>;
@@ -1 +1 @@
1
- {"version":3,"names":["_tasks","require","DATA_SYNCHRONIZATION_TASK","exports","createDataSynchronization","params","createTaskDefinition","id","isPrivate","title","description","maxIterations","disableDatabaseLogs","run","context","response","isCloseToTimeout","isAborted","store","input","timer","Manager","IndexManager","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","DataSynchronizationTaskRunner","createFactories","dataSynchronization","factories","ex","error","createInputValidation","validator","flow","enum","elasticsearchToDynamoDb","object","finished","boolean","optional","default","index","string","cursor","array"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport {\n IDataSynchronizationInput,\n IDataSynchronizationManager,\n IDataSynchronizationOutput\n} from \"~/tasks/dataSynchronization/types\";\n\nexport const DATA_SYNCHRONIZATION_TASK = \"dataSynchronization\";\n\nexport const createDataSynchronization = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IDataSynchronizationInput, IDataSynchronizationOutput>({\n id: DATA_SYNCHRONIZATION_TASK,\n isPrivate: false,\n title: \"Data Synchronization\",\n description: \"Synchronize data between Elasticsearch and DynamoDB\",\n maxIterations: 100,\n disableDatabaseLogs: true,\n async run({ context, response, isCloseToTimeout, isAborted, store, input, timer }) {\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager\"\n );\n\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings\"\n );\n\n const manager = new Manager<IDataSynchronizationInput>({\n elasticsearchClient: params?.elasticsearchClient,\n documentClient: params?.documentClient,\n response,\n context,\n isAborted,\n isCloseToTimeout,\n store,\n timer\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, {});\n\n const { DataSynchronizationTaskRunner } = await import(\n /* webpackChunkName: \"DataSynchronizationTaskRunner\" */ \"./DataSynchronizationTaskRunner\"\n );\n\n const { createFactories } = await import(\n /* webpackChunkName: \"createFactories\" */ \"./createFactories\"\n );\n\n try {\n const dataSynchronization = new DataSynchronizationTaskRunner({\n manager: manager as unknown as IDataSynchronizationManager,\n indexManager,\n factories: createFactories()\n });\n return await dataSynchronization.run({\n ...input\n });\n } catch (ex) {\n return response.error(ex);\n }\n },\n createInputValidation({ validator }) {\n return {\n flow: validator.enum([\"elasticsearchToDynamoDb\"]),\n elasticsearchToDynamoDb: validator\n .object({\n finished: validator.boolean().optional().default(false),\n index: validator.string().optional(),\n cursor: validator.array(validator.string()).optional()\n })\n .optional()\n .default({\n finished: false\n })\n };\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQO,MAAMC,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GAAG,qBAAqB;AAEvD,MAAME,yBAAyB,GAAIC,MAAiC,IAAK;EAC5E,OAAO,IAAAC,2BAAoB,EAAiE;IACxFC,EAAE,EAAEL,yBAAyB;IAC7BM,SAAS,EAAE,KAAK;IAChBC,KAAK,EAAE,sBAAsB;IAC7BC,WAAW,EAAE,qDAAqD;IAClEC,aAAa,EAAE,GAAG;IAClBC,mBAAmB,EAAE,IAAI;IACzB,MAAMC,GAAGA,CAAC;MAAEC,OAAO;MAAEC,QAAQ;MAAEC,gBAAgB;MAAEC,SAAS;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAM,CAAC,EAAE;MAC/E,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,6CAEJ,CAAC;MAED,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,CACjC,sDACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIF,OAAO,CAA4B;QACnDG,mBAAmB,EAAEnB,MAAM,EAAEmB,mBAAmB;QAChDC,cAAc,EAAEpB,MAAM,EAAEoB,cAAc;QACtCV,QAAQ;QACRD,OAAO;QACPG,SAAS;QACTD,gBAAgB;QAChBE,KAAK;QACLE;MACJ,CAAC,CAAC;MAEF,MAAMM,YAAY,GAAG,IAAIJ,YAAY,CAACC,OAAO,CAACI,aAAa,EAAE,CAAC,CAAC,CAAC;MAEhE,MAAM;QAAEC;MAA8B,CAAC,GAAG,MAAM,MAAM,CAClD,wFACJ,CAAC;MAED,MAAM;QAAEC;MAAgB,CAAC,GAAG,MAAM,MAAM,CACpC,4DACJ,CAAC;MAED,IAAI;QACA,MAAMC,mBAAmB,GAAG,IAAIF,6BAA6B,CAAC;UAC1DL,OAAO,EAAEA,OAAiD;UAC1DG,YAAY;UACZK,SAAS,EAAEF,eAAe,CAAC;QAC/B,CAAC,CAAC;QACF,OAAO,MAAMC,mBAAmB,CAACjB,GAAG,CAAC;UACjC,GAAGM;QACP,CAAC,CAAC;MACN,CAAC,CAAC,OAAOa,EAAE,EAAE;QACT,OAAOjB,QAAQ,CAACkB,KAAK,CAACD,EAAE,CAAC;MAC7B;IACJ,CAAC;IACDE,qBAAqBA,CAAC;MAAEC;IAAU,CAAC,EAAE;MACjC,OAAO;QACHC,IAAI,EAAED,SAAS,CAACE,IAAI,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACjDC,uBAAuB,EAAEH,SAAS,CAC7BI,MAAM,CAAC;UACJC,QAAQ,EAAEL,SAAS,CAACM,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC;UACvDC,KAAK,EAAET,SAAS,CAACU,MAAM,CAAC,CAAC,CAACH,QAAQ,CAAC,CAAC;UACpCI,MAAM,EAAEX,SAAS,CAACY,KAAK,CAACZ,SAAS,CAACU,MAAM,CAAC,CAAC,CAAC,CAACH,QAAQ,CAAC;QACzD,CAAC,CAAC,CACDA,QAAQ,CAAC,CAAC,CACVC,OAAO,CAAC;UACLH,QAAQ,EAAE;QACd,CAAC;MACT,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAACrC,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_tasks","require","DATA_SYNCHRONIZATION_TASK","exports","createDataSynchronization","params","createTaskDefinition","id","isPrivate","title","description","maxIterations","disableDatabaseLogs","run","context","response","isCloseToTimeout","isAborted","store","input","timer","Manager","IndexManager","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","DataSynchronizationTaskRunner","createFactories","dataSynchronization","factories","ex","error","createInputValidation","validator","flow","enum","elasticsearchToDynamoDb","object","finished","boolean","optional","default","index","string","cursor","array"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport type { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport type {\n IDataSynchronizationInput,\n IDataSynchronizationManager,\n IDataSynchronizationOutput\n} from \"~/tasks/dataSynchronization/types\";\n\nexport const DATA_SYNCHRONIZATION_TASK = \"dataSynchronization\";\n\nexport const createDataSynchronization = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IDataSynchronizationInput, IDataSynchronizationOutput>({\n id: DATA_SYNCHRONIZATION_TASK,\n isPrivate: false,\n title: \"Data Synchronization\",\n description: \"Synchronize data between Elasticsearch and DynamoDB\",\n maxIterations: 100,\n disableDatabaseLogs: true,\n async run({ context, response, isCloseToTimeout, isAborted, store, input, timer }) {\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager\"\n );\n\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings\"\n );\n\n const manager = new Manager<IDataSynchronizationInput>({\n elasticsearchClient: params?.elasticsearchClient,\n documentClient: params?.documentClient,\n response,\n context,\n isAborted,\n isCloseToTimeout,\n store,\n timer\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, {});\n\n const { DataSynchronizationTaskRunner } = await import(\n /* webpackChunkName: \"DataSynchronizationTaskRunner\" */ \"./DataSynchronizationTaskRunner\"\n );\n\n const { createFactories } = await import(\n /* webpackChunkName: \"createFactories\" */ \"./createFactories\"\n );\n\n try {\n const dataSynchronization = new DataSynchronizationTaskRunner({\n manager: manager as unknown as IDataSynchronizationManager,\n indexManager,\n factories: createFactories()\n });\n return await dataSynchronization.run({\n ...input\n });\n } catch (ex) {\n return response.error(ex);\n }\n },\n createInputValidation({ validator }) {\n return {\n flow: validator.enum([\"elasticsearchToDynamoDb\"]),\n elasticsearchToDynamoDb: validator\n .object({\n finished: validator.boolean().optional().default(false),\n index: validator.string().optional(),\n cursor: validator.array(validator.string()).optional()\n })\n .optional()\n .default({\n finished: false\n })\n };\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQO,MAAMC,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GAAG,qBAAqB;AAEvD,MAAME,yBAAyB,GAAIC,MAAiC,IAAK;EAC5E,OAAO,IAAAC,2BAAoB,EAAiE;IACxFC,EAAE,EAAEL,yBAAyB;IAC7BM,SAAS,EAAE,KAAK;IAChBC,KAAK,EAAE,sBAAsB;IAC7BC,WAAW,EAAE,qDAAqD;IAClEC,aAAa,EAAE,GAAG;IAClBC,mBAAmB,EAAE,IAAI;IACzB,MAAMC,GAAGA,CAAC;MAAEC,OAAO;MAAEC,QAAQ;MAAEC,gBAAgB;MAAEC,SAAS;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAM,CAAC,EAAE;MAC/E,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,6CAEJ,CAAC;MAED,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,CACjC,sDACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIF,OAAO,CAA4B;QACnDG,mBAAmB,EAAEnB,MAAM,EAAEmB,mBAAmB;QAChDC,cAAc,EAAEpB,MAAM,EAAEoB,cAAc;QACtCV,QAAQ;QACRD,OAAO;QACPG,SAAS;QACTD,gBAAgB;QAChBE,KAAK;QACLE;MACJ,CAAC,CAAC;MAEF,MAAMM,YAAY,GAAG,IAAIJ,YAAY,CAACC,OAAO,CAACI,aAAa,EAAE,CAAC,CAAC,CAAC;MAEhE,MAAM;QAAEC;MAA8B,CAAC,GAAG,MAAM,MAAM,CAClD,wFACJ,CAAC;MAED,MAAM;QAAEC;MAAgB,CAAC,GAAG,MAAM,MAAM,CACpC,4DACJ,CAAC;MAED,IAAI;QACA,MAAMC,mBAAmB,GAAG,IAAIF,6BAA6B,CAAC;UAC1DL,OAAO,EAAEA,OAAiD;UAC1DG,YAAY;UACZK,SAAS,EAAEF,eAAe,CAAC;QAC/B,CAAC,CAAC;QACF,OAAO,MAAMC,mBAAmB,CAACjB,GAAG,CAAC;UACjC,GAAGM;QACP,CAAC,CAAC;MACN,CAAC,CAAC,OAAOa,EAAE,EAAE;QACT,OAAOjB,QAAQ,CAACkB,KAAK,CAACD,EAAE,CAAC;MAC7B;IACJ,CAAC;IACDE,qBAAqBA,CAAC;MAAEC;IAAU,CAAC,EAAE;MACjC,OAAO;QACHC,IAAI,EAAED,SAAS,CAACE,IAAI,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACjDC,uBAAuB,EAAEH,SAAS,CAC7BI,MAAM,CAAC;UACJC,QAAQ,EAAEL,SAAS,CAACM,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC;UACvDC,KAAK,EAAET,SAAS,CAACU,MAAM,CAAC,CAAC,CAACH,QAAQ,CAAC,CAAC;UACpCI,MAAM,EAAEX,SAAS,CAACY,KAAK,CAACZ,SAAS,CAACU,MAAM,CAAC,CAAC,CAAC,CAACH,QAAQ,CAAC;QACzD,CAAC,CAAC,CACDA,QAAQ,CAAC,CAAC,CACVC,OAAO,CAAC;UACLH,QAAQ,EAAE;QACd,CAAC;MACT,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAACrC,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1,9 +1,9 @@
1
- import { IManager } from "../../types";
2
- import { PrimitiveValue } from "@webiny/api-elasticsearch/types";
3
- import { IIndexManager } from "../../settings/types";
4
- import { ITaskResponseAbortedResult, ITaskResponseContinueResult, ITaskResponseDoneResult, ITaskResponseDoneResultOutput, ITaskResponseErrorResult } from "@webiny/tasks";
5
- import { IElasticsearchSynchronize } from "./elasticsearch/abstractions/ElasticsearchSynchronize";
6
- import { IElasticsearchFetcher } from "./elasticsearch/abstractions/ElasticsearchFetcher";
1
+ import type { IManager } from "../../types";
2
+ import type { PrimitiveValue } from "@webiny/api-elasticsearch/types";
3
+ import type { IIndexManager } from "../../settings/types";
4
+ import type { ITaskResponseAbortedResult, ITaskResponseContinueResult, ITaskResponseDoneResult, ITaskResponseDoneResultOutput, ITaskResponseErrorResult } from "@webiny/tasks";
5
+ import type { IElasticsearchSynchronize } from "./elasticsearch/abstractions/ElasticsearchSynchronize";
6
+ import type { IElasticsearchFetcher } from "./elasticsearch/abstractions/ElasticsearchFetcher";
7
7
  export interface IDataSynchronizationInputValue {
8
8
  finished?: boolean;
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { IManager } from \"~/types\";\nimport { PrimitiveValue } from \"@webiny/api-elasticsearch/types\";\nimport { IIndexManager } from \"~/settings/types\";\nimport {\n ITaskResponseAbortedResult,\n ITaskResponseContinueResult,\n ITaskResponseDoneResult,\n ITaskResponseDoneResultOutput,\n ITaskResponseErrorResult\n} from \"@webiny/tasks\";\nimport { IElasticsearchSynchronize } from \"~/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize\";\nimport { IElasticsearchFetcher } from \"~/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher\";\n\nexport interface IDataSynchronizationInputValue {\n finished?: boolean;\n}\n\nexport interface IDataSynchronizationInputElasticsearchToDynamoDbValue\n extends IDataSynchronizationInputValue {\n index?: string;\n cursor?: PrimitiveValue[];\n}\n\nexport interface IDataSynchronizationInput {\n flow: \"elasticsearchToDynamoDb\";\n elasticsearchToDynamoDb?: IDataSynchronizationInputElasticsearchToDynamoDbValue;\n}\n\nexport type IDataSynchronizationOutput = ITaskResponseDoneResultOutput;\n\nexport type ISynchronizationRunResult =\n | ITaskResponseContinueResult<IDataSynchronizationInput>\n | ITaskResponseDoneResult<IDataSynchronizationOutput>\n | ITaskResponseErrorResult\n | ITaskResponseAbortedResult;\n\nexport interface ISynchronization {\n run(input: IDataSynchronizationInput): Promise<ISynchronizationRunResult>;\n}\n\nexport interface IElasticsearchSyncParams {\n manager: IDataSynchronizationManager;\n indexManager: IIndexManager;\n synchronize: IElasticsearchSynchronize;\n fetcher: IElasticsearchFetcher;\n}\n\nexport interface IElasticsearchSyncFactory {\n (params: IElasticsearchSyncParams): ISynchronization;\n}\n\nexport interface IFactories {\n /**\n * Delete all the records which are in the Elasticsearch but not in the Elasticsearch DynamoDB table.\n */\n elasticsearchToDynamoDb: IElasticsearchSyncFactory;\n}\n\nexport type IDataSynchronizationManager = IManager<\n IDataSynchronizationInput,\n IDataSynchronizationOutput\n>;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { IManager } from \"~/types\";\nimport type { PrimitiveValue } from \"@webiny/api-elasticsearch/types\";\nimport type { IIndexManager } from \"~/settings/types\";\nimport type {\n ITaskResponseAbortedResult,\n ITaskResponseContinueResult,\n ITaskResponseDoneResult,\n ITaskResponseDoneResultOutput,\n ITaskResponseErrorResult\n} from \"@webiny/tasks\";\nimport type { IElasticsearchSynchronize } from \"~/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize\";\nimport type { IElasticsearchFetcher } from \"~/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher\";\n\nexport interface IDataSynchronizationInputValue {\n finished?: boolean;\n}\n\nexport interface IDataSynchronizationInputElasticsearchToDynamoDbValue\n extends IDataSynchronizationInputValue {\n index?: string;\n cursor?: PrimitiveValue[];\n}\n\nexport interface IDataSynchronizationInput {\n flow: \"elasticsearchToDynamoDb\";\n elasticsearchToDynamoDb?: IDataSynchronizationInputElasticsearchToDynamoDbValue;\n}\n\nexport type IDataSynchronizationOutput = ITaskResponseDoneResultOutput;\n\nexport type ISynchronizationRunResult =\n | ITaskResponseContinueResult<IDataSynchronizationInput>\n | ITaskResponseDoneResult<IDataSynchronizationOutput>\n | ITaskResponseErrorResult\n | ITaskResponseAbortedResult;\n\nexport interface ISynchronization {\n run(input: IDataSynchronizationInput): Promise<ISynchronizationRunResult>;\n}\n\nexport interface IElasticsearchSyncParams {\n manager: IDataSynchronizationManager;\n indexManager: IIndexManager;\n synchronize: IElasticsearchSynchronize;\n fetcher: IElasticsearchFetcher;\n}\n\nexport interface IElasticsearchSyncFactory {\n (params: IElasticsearchSyncParams): ISynchronization;\n}\n\nexport interface IFactories {\n /**\n * Delete all the records which are in the Elasticsearch but not in the Elasticsearch DynamoDB table.\n */\n elasticsearchToDynamoDb: IElasticsearchSyncFactory;\n}\n\nexport type IDataSynchronizationManager = IManager<\n IDataSynchronizationInput,\n IDataSynchronizationOutput\n>;\n"],"mappings":"","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { IManager } from "../../types";
2
- import { ITaskResponseResult } from "@webiny/tasks/response/abstractions";
3
- import { IndexManager } from "../../settings";
4
- import { IElasticsearchEnableIndexingTaskInput } from "./types";
1
+ import type { IManager } from "../../types";
2
+ import type { ITaskResponseResult } from "@webiny/tasks/response/abstractions";
3
+ import type { IndexManager } from "../../settings";
4
+ import type { IElasticsearchEnableIndexingTaskInput } from "./types";
5
5
  export declare class EnableIndexingTaskRunner {
6
6
  private readonly manager;
7
7
  private readonly indexManager;
@@ -1 +1 @@
1
- {"version":3,"names":["EnableIndexingTaskRunner","constructor","manager","indexManager","response","exec","matching","isAborted","aborted","isIndexAllowed","index","includes","indexes","list","enabled","failed","enableIndexing","push","ex","store","addErrorLog","message","error","done","exports"],"sources":["EnableIndexingTaskRunner.ts"],"sourcesContent":["import { IManager } from \"~/types\";\nimport { ITaskResponse, ITaskResponseResult } from \"@webiny/tasks/response/abstractions\";\nimport { IndexManager } from \"~/settings\";\nimport { IIndexManager } from \"~/settings/types\";\nimport { IElasticsearchEnableIndexingTaskInput } from \"~/tasks/enableIndexing/types\";\n\nexport class EnableIndexingTaskRunner {\n private readonly manager: IManager<IElasticsearchEnableIndexingTaskInput>;\n private readonly indexManager: IIndexManager;\n private readonly response: ITaskResponse;\n\n public constructor(\n manager: IManager<IElasticsearchEnableIndexingTaskInput>,\n indexManager: IndexManager\n ) {\n this.manager = manager;\n this.response = manager.response;\n this.indexManager = indexManager;\n }\n\n public async exec(matching?: string): Promise<ITaskResponseResult> {\n if (this.manager.isAborted()) {\n return this.response.aborted();\n }\n\n const isIndexAllowed = (index: string): boolean => {\n if (typeof matching !== \"string\" || !matching) {\n return true;\n }\n return index.includes(matching);\n };\n\n const indexes = await this.indexManager.list();\n const enabled: string[] = [];\n const failed: string[] = [];\n for (const index of indexes) {\n if (!isIndexAllowed(index)) {\n continue;\n }\n try {\n await this.indexManager.enableIndexing(index);\n enabled.push(index);\n } catch (ex) {\n failed.push(index);\n await this.manager.store.addErrorLog({\n message: `Failed to enable indexing on index \"${index}\".`,\n error: ex\n });\n }\n }\n return this.response.done(\"Task done.\", {\n enabled,\n failed\n });\n }\n}\n"],"mappings":";;;;;;AAMO,MAAMA,wBAAwB,CAAC;EAK3BC,WAAWA,CACdC,OAAwD,EACxDC,YAA0B,EAC5B;IACE,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,QAAQ,GAAGF,OAAO,CAACE,QAAQ;IAChC,IAAI,CAACD,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAaE,IAAIA,CAACC,QAAiB,EAAgC;IAC/D,IAAI,IAAI,CAACJ,OAAO,CAACK,SAAS,CAAC,CAAC,EAAE;MAC1B,OAAO,IAAI,CAACH,QAAQ,CAACI,OAAO,CAAC,CAAC;IAClC;IAEA,MAAMC,cAAc,GAAIC,KAAa,IAAc;MAC/C,IAAI,OAAOJ,QAAQ,KAAK,QAAQ,IAAI,CAACA,QAAQ,EAAE;QAC3C,OAAO,IAAI;MACf;MACA,OAAOI,KAAK,CAACC,QAAQ,CAACL,QAAQ,CAAC;IACnC,CAAC;IAED,MAAMM,OAAO,GAAG,MAAM,IAAI,CAACT,YAAY,CAACU,IAAI,CAAC,CAAC;IAC9C,MAAMC,OAAiB,GAAG,EAAE;IAC5B,MAAMC,MAAgB,GAAG,EAAE;IAC3B,KAAK,MAAML,KAAK,IAAIE,OAAO,EAAE;MACzB,IAAI,CAACH,cAAc,CAACC,KAAK,CAAC,EAAE;QACxB;MACJ;MACA,IAAI;QACA,MAAM,IAAI,CAACP,YAAY,CAACa,cAAc,CAACN,KAAK,CAAC;QAC7CI,OAAO,CAACG,IAAI,CAACP,KAAK,CAAC;MACvB,CAAC,CAAC,OAAOQ,EAAE,EAAE;QACTH,MAAM,CAACE,IAAI,CAACP,KAAK,CAAC;QAClB,MAAM,IAAI,CAACR,OAAO,CAACiB,KAAK,CAACC,WAAW,CAAC;UACjCC,OAAO,EAAE,uCAAuCX,KAAK,IAAI;UACzDY,KAAK,EAAEJ;QACX,CAAC,CAAC;MACN;IACJ;IACA,OAAO,IAAI,CAACd,QAAQ,CAACmB,IAAI,CAAC,YAAY,EAAE;MACpCT,OAAO;MACPC;IACJ,CAAC,CAAC;EACN;AACJ;AAACS,OAAA,CAAAxB,wBAAA,GAAAA,wBAAA","ignoreList":[]}
1
+ {"version":3,"names":["EnableIndexingTaskRunner","constructor","manager","indexManager","response","exec","matching","isAborted","aborted","isIndexAllowed","index","includes","indexes","list","enabled","failed","enableIndexing","push","ex","store","addErrorLog","message","error","done","exports"],"sources":["EnableIndexingTaskRunner.ts"],"sourcesContent":["import type { IManager } from \"~/types\";\nimport type { ITaskResponse, ITaskResponseResult } from \"@webiny/tasks/response/abstractions\";\nimport type { IndexManager } from \"~/settings\";\nimport type { IIndexManager } from \"~/settings/types\";\nimport type { IElasticsearchEnableIndexingTaskInput } from \"~/tasks/enableIndexing/types\";\n\nexport class EnableIndexingTaskRunner {\n private readonly manager: IManager<IElasticsearchEnableIndexingTaskInput>;\n private readonly indexManager: IIndexManager;\n private readonly response: ITaskResponse;\n\n public constructor(\n manager: IManager<IElasticsearchEnableIndexingTaskInput>,\n indexManager: IndexManager\n ) {\n this.manager = manager;\n this.response = manager.response;\n this.indexManager = indexManager;\n }\n\n public async exec(matching?: string): Promise<ITaskResponseResult> {\n if (this.manager.isAborted()) {\n return this.response.aborted();\n }\n\n const isIndexAllowed = (index: string): boolean => {\n if (typeof matching !== \"string\" || !matching) {\n return true;\n }\n return index.includes(matching);\n };\n\n const indexes = await this.indexManager.list();\n const enabled: string[] = [];\n const failed: string[] = [];\n for (const index of indexes) {\n if (!isIndexAllowed(index)) {\n continue;\n }\n try {\n await this.indexManager.enableIndexing(index);\n enabled.push(index);\n } catch (ex) {\n failed.push(index);\n await this.manager.store.addErrorLog({\n message: `Failed to enable indexing on index \"${index}\".`,\n error: ex\n });\n }\n }\n return this.response.done(\"Task done.\", {\n enabled,\n failed\n });\n }\n}\n"],"mappings":";;;;;;AAMO,MAAMA,wBAAwB,CAAC;EAK3BC,WAAWA,CACdC,OAAwD,EACxDC,YAA0B,EAC5B;IACE,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,QAAQ,GAAGF,OAAO,CAACE,QAAQ;IAChC,IAAI,CAACD,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAaE,IAAIA,CAACC,QAAiB,EAAgC;IAC/D,IAAI,IAAI,CAACJ,OAAO,CAACK,SAAS,CAAC,CAAC,EAAE;MAC1B,OAAO,IAAI,CAACH,QAAQ,CAACI,OAAO,CAAC,CAAC;IAClC;IAEA,MAAMC,cAAc,GAAIC,KAAa,IAAc;MAC/C,IAAI,OAAOJ,QAAQ,KAAK,QAAQ,IAAI,CAACA,QAAQ,EAAE;QAC3C,OAAO,IAAI;MACf;MACA,OAAOI,KAAK,CAACC,QAAQ,CAACL,QAAQ,CAAC;IACnC,CAAC;IAED,MAAMM,OAAO,GAAG,MAAM,IAAI,CAACT,YAAY,CAACU,IAAI,CAAC,CAAC;IAC9C,MAAMC,OAAiB,GAAG,EAAE;IAC5B,MAAMC,MAAgB,GAAG,EAAE;IAC3B,KAAK,MAAML,KAAK,IAAIE,OAAO,EAAE;MACzB,IAAI,CAACH,cAAc,CAACC,KAAK,CAAC,EAAE;QACxB;MACJ;MACA,IAAI;QACA,MAAM,IAAI,CAACP,YAAY,CAACa,cAAc,CAACN,KAAK,CAAC;QAC7CI,OAAO,CAACG,IAAI,CAACP,KAAK,CAAC;MACvB,CAAC,CAAC,OAAOQ,EAAE,EAAE;QACTH,MAAM,CAACE,IAAI,CAACP,KAAK,CAAC;QAClB,MAAM,IAAI,CAACR,OAAO,CAACiB,KAAK,CAACC,WAAW,CAAC;UACjCC,OAAO,EAAE,uCAAuCX,KAAK,IAAI;UACzDY,KAAK,EAAEJ;QACX,CAAC,CAAC;MACN;IACJ;IACA,OAAO,IAAI,CAACd,QAAQ,CAACmB,IAAI,CAAC,YAAY,EAAE;MACpCT,OAAO;MACPC;IACJ,CAAC,CAAC;EACN;AACJ;AAACS,OAAA,CAAAxB,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -1,3 +1,3 @@
1
- import { Context, IElasticsearchTaskConfig } from "../../types";
2
- import { IElasticsearchEnableIndexingTaskInput } from "./types";
1
+ import type { Context, IElasticsearchTaskConfig } from "../../types";
2
+ import type { IElasticsearchEnableIndexingTaskInput } from "./types";
3
3
  export declare const createEnableIndexingTask: (params?: IElasticsearchTaskConfig) => import("@webiny/tasks").TaskDefinitionPlugin<Context, IElasticsearchEnableIndexingTaskInput, import("@webiny/tasks").ITaskResponseDoneResultOutput>;
@@ -1 +1 @@
1
- {"version":3,"names":["_tasks","require","createEnableIndexingTask","params","createTaskDefinition","id","title","run","response","context","isAborted","isCloseToTimeout","input","store","timer","Manager","IndexManager","EnableIndexingTaskRunner","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","refreshInterval","numberOfReplicas","enableIndexing","exec","matching","exports"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport { IElasticsearchEnableIndexingTaskInput } from \"./types\";\n\nexport const createEnableIndexingTask = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchEnableIndexingTaskInput>({\n id: \"elasticsearchEnableIndexing\",\n title: \"Enable Indexing on Elasticsearch Indexes\",\n run: async ({ response, context, isAborted, isCloseToTimeout, input, store, timer }) => {\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager\"\n );\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings\"\n );\n\n const { EnableIndexingTaskRunner } = await import(\n /* webpackChunkName: \"EnableIndexingTaskRunner\" */ \"./EnableIndexingTaskRunner\"\n );\n\n const manager = new Manager<IElasticsearchEnableIndexingTaskInput>({\n elasticsearchClient: params?.elasticsearchClient,\n documentClient: params?.documentClient,\n response,\n context,\n isAborted,\n isCloseToTimeout,\n store,\n timer\n });\n\n const indexManager = new IndexManager(\n manager.elasticsearch,\n {},\n {\n refreshInterval: input.refreshInterval,\n numberOfReplicas: input.numberOfReplicas\n }\n );\n\n const enableIndexing = new EnableIndexingTaskRunner(manager, indexManager);\n\n return enableIndexing.exec(input.matching);\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIO,MAAMC,wBAAwB,GAAIC,MAAiC,IAAK;EAC3E,OAAO,IAAAC,2BAAoB,EAAiD;IACxEC,EAAE,EAAE,6BAA6B;IACjCC,KAAK,EAAE,0CAA0C;IACjDC,GAAG,EAAE,MAAAA,CAAO;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,SAAS;MAAEC,gBAAgB;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MACpF,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,6CAEJ,CAAC;MACD,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,CACjC,sDACJ,CAAC;MAED,MAAM;QAAEC;MAAyB,CAAC,GAAG,MAAM,MAAM,CAC7C,8EACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIH,OAAO,CAAwC;QAC/DI,mBAAmB,EAAEhB,MAAM,EAAEgB,mBAAmB;QAChDC,cAAc,EAAEjB,MAAM,EAAEiB,cAAc;QACtCZ,QAAQ;QACRC,OAAO;QACPC,SAAS;QACTC,gBAAgB;QAChBE,KAAK;QACLC;MACJ,CAAC,CAAC;MAEF,MAAMO,YAAY,GAAG,IAAIL,YAAY,CACjCE,OAAO,CAACI,aAAa,EACrB,CAAC,CAAC,EACF;QACIC,eAAe,EAAEX,KAAK,CAACW,eAAe;QACtCC,gBAAgB,EAAEZ,KAAK,CAACY;MAC5B,CACJ,CAAC;MAED,MAAMC,cAAc,GAAG,IAAIR,wBAAwB,CAACC,OAAO,EAAEG,YAAY,CAAC;MAE1E,OAAOI,cAAc,CAACC,IAAI,CAACd,KAAK,CAACe,QAAQ,CAAC;IAC9C;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA1B,wBAAA,GAAAA,wBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_tasks","require","createEnableIndexingTask","params","createTaskDefinition","id","title","run","response","context","isAborted","isCloseToTimeout","input","store","timer","Manager","IndexManager","EnableIndexingTaskRunner","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","refreshInterval","numberOfReplicas","enableIndexing","exec","matching","exports"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport type { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport type { IElasticsearchEnableIndexingTaskInput } from \"./types\";\n\nexport const createEnableIndexingTask = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchEnableIndexingTaskInput>({\n id: \"elasticsearchEnableIndexing\",\n title: \"Enable Indexing on Elasticsearch Indexes\",\n run: async ({ response, context, isAborted, isCloseToTimeout, input, store, timer }) => {\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager\"\n );\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings\"\n );\n\n const { EnableIndexingTaskRunner } = await import(\n /* webpackChunkName: \"EnableIndexingTaskRunner\" */ \"./EnableIndexingTaskRunner\"\n );\n\n const manager = new Manager<IElasticsearchEnableIndexingTaskInput>({\n elasticsearchClient: params?.elasticsearchClient,\n documentClient: params?.documentClient,\n response,\n context,\n isAborted,\n isCloseToTimeout,\n store,\n timer\n });\n\n const indexManager = new IndexManager(\n manager.elasticsearch,\n {},\n {\n refreshInterval: input.refreshInterval,\n numberOfReplicas: input.numberOfReplicas\n }\n );\n\n const enableIndexing = new EnableIndexingTaskRunner(manager, indexManager);\n\n return enableIndexing.exec(input.matching);\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIO,MAAMC,wBAAwB,GAAIC,MAAiC,IAAK;EAC3E,OAAO,IAAAC,2BAAoB,EAAiD;IACxEC,EAAE,EAAE,6BAA6B;IACjCC,KAAK,EAAE,0CAA0C;IACjDC,GAAG,EAAE,MAAAA,CAAO;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,SAAS;MAAEC,gBAAgB;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MACpF,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,6CAEJ,CAAC;MACD,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,CACjC,sDACJ,CAAC;MAED,MAAM;QAAEC;MAAyB,CAAC,GAAG,MAAM,MAAM,CAC7C,8EACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIH,OAAO,CAAwC;QAC/DI,mBAAmB,EAAEhB,MAAM,EAAEgB,mBAAmB;QAChDC,cAAc,EAAEjB,MAAM,EAAEiB,cAAc;QACtCZ,QAAQ;QACRC,OAAO;QACPC,SAAS;QACTC,gBAAgB;QAChBE,KAAK;QACLC;MACJ,CAAC,CAAC;MAEF,MAAMO,YAAY,GAAG,IAAIL,YAAY,CACjCE,OAAO,CAACI,aAAa,EACrB,CAAC,CAAC,EACF;QACIC,eAAe,EAAEX,KAAK,CAACW,eAAe;QACtCC,gBAAgB,EAAEZ,KAAK,CAACY;MAC5B,CACJ,CAAC;MAED,MAAMC,cAAc,GAAG,IAAIR,wBAAwB,CAACC,OAAO,EAAEG,YAAY,CAAC;MAE1E,OAAOI,cAAc,CAACC,IAAI,CAACd,KAAK,CAACe,QAAQ,CAAC;IAC9C;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA1B,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { IElasticsearchIndexingTaskValues, IElasticsearchIndexingTaskValuesKeys, IManager } from "../../types";
2
- import { ITaskResponseResult } from "@webiny/tasks/response/abstractions";
3
- import { IndexManager } from "../../settings";
1
+ import type { IElasticsearchIndexingTaskValues, IElasticsearchIndexingTaskValuesKeys, IManager } from "../../types";
2
+ import type { ITaskResponseResult } from "@webiny/tasks/response/abstractions";
3
+ import type { IndexManager } from "../../settings";
4
4
  export declare class ReindexingTaskRunner {
5
5
  private readonly manager;
6
6
  private keys?;
@@ -1 +1 @@
1
- {"version":3,"names":["_scan","require","_dbDynamodb","getKeys","results","lastEvaluatedKey","PK","SK","undefined","ReindexingTaskRunner","constructor","manager","indexManager","response","exec","keys","limit","isIndexAllowed","index","input","store","getInput","matching","includes","isCloseToTimeout","isAborted","aborted","scan","table","options","items","length","enableIndexing","done","tableWriteBatch","createTableWriteBatch","item","exists","indexExists","addInfoLog","message","entityName","_et","entity","getEntity","disableIndexing","put","TYPE","modified","Date","toISOString","execute","updateInput","settings","continue","ex","er","data","error","exports"],"sources":["ReindexingTaskRunner.ts"],"sourcesContent":["import {\n IDynamoDbElasticsearchRecord,\n IElasticsearchIndexingTaskValues,\n IElasticsearchIndexingTaskValuesKeys,\n IManager\n} from \"~/types\";\nimport { ITaskResponse, ITaskResponseResult } from \"@webiny/tasks/response/abstractions\";\nimport { scan } from \"~/helpers/scan\";\nimport { createTableWriteBatch, ScanResponse } from \"@webiny/db-dynamodb\";\nimport { IndexManager } from \"~/settings\";\nimport { IIndexManager } from \"~/settings/types\";\n\nconst getKeys = (results: ScanResponse): IElasticsearchIndexingTaskValuesKeys | undefined => {\n if (results.lastEvaluatedKey?.PK && results.lastEvaluatedKey?.SK) {\n return {\n PK: results.lastEvaluatedKey.PK as unknown as string,\n SK: results.lastEvaluatedKey.SK as unknown as string\n };\n }\n return undefined;\n};\n\nexport class ReindexingTaskRunner {\n private readonly manager: IManager<IElasticsearchIndexingTaskValues>;\n private keys?: IElasticsearchIndexingTaskValuesKeys;\n\n private readonly indexManager: IIndexManager;\n private readonly response: ITaskResponse;\n\n public constructor(\n manager: IManager<IElasticsearchIndexingTaskValues>,\n indexManager: IndexManager\n ) {\n this.manager = manager;\n this.response = manager.response;\n this.indexManager = indexManager;\n }\n\n /**\n * When running the task, we always must check:\n * * if task is close to timeout\n * * if task was aborted\n */\n public async exec(\n keys: IElasticsearchIndexingTaskValuesKeys | undefined = undefined,\n limit: number\n ): Promise<ITaskResponseResult> {\n this.keys = keys;\n\n const isIndexAllowed = (index: string): boolean => {\n const input = this.manager.store.getInput();\n if (typeof input.matching !== \"string\" || !input.matching) {\n return true;\n }\n return index.includes(input.matching);\n };\n\n try {\n while (this.manager.isCloseToTimeout() === false) {\n if (this.manager.isAborted()) {\n return this.response.aborted();\n }\n\n const results = await scan<IDynamoDbElasticsearchRecord>({\n table: this.manager.table,\n keys: this.keys,\n options: {\n limit\n }\n });\n if (results.items.length === 0) {\n await this.indexManager.enableIndexing();\n return this.response.done(\"No more items to process.\");\n }\n\n const tableWriteBatch = createTableWriteBatch({\n table: this.manager.table\n });\n\n for (const item of results.items) {\n /**\n * No index defined? Impossible but let's skip if really happens.\n */\n if (!item.index) {\n continue;\n }\n if (isIndexAllowed(item.index) === false) {\n continue;\n }\n const exists = await this.indexManager.indexExists(item.index);\n if (!exists) {\n await this.manager.store.addInfoLog({\n message: `Index \"${item.index}\" does not exist. Skipping the item.`\n });\n continue;\n }\n /**\n * Is there a possibility that entityName does not exist? What do we do at that point?\n */\n const entityName = item._et || item.entity;\n /**\n * Let's skip for now.\n */\n if (!entityName) {\n continue;\n }\n const entity = this.manager.getEntity(entityName);\n /**\n * Disable the indexing for the current index.\n * Method does nothing if indexing is already disabled.\n */\n await this.indexManager.disableIndexing(item.index);\n /**\n * Reindexing will be triggered by the `putBatch` method.\n */\n tableWriteBatch.put(entity.entity, {\n ...item,\n TYPE: item.TYPE || \"unknown\",\n modified: new Date().toISOString()\n });\n }\n await tableWriteBatch.execute();\n /**\n * We always store the index settings, so we can restore them later.\n * Also, we always want to store what was the last key we processed, just in case something breaks, so we can continue from this point.\n */\n this.keys = getKeys(results);\n await this.manager.store.updateInput({\n settings: this.indexManager.settings,\n keys: this.keys\n });\n /**\n * We want to make sure that, if there are no last evaluated keys, we enable indexing.\n */\n if (!this.keys) {\n await this.indexManager.enableIndexing();\n return this.response.done(\"No more items to process - no last evaluated keys.\");\n }\n }\n return this.response.continue({\n keys: this.keys\n });\n } catch (ex) {\n /**\n * We want to enable indexing if there was an error.\n */\n try {\n await this.indexManager.enableIndexing();\n } catch (er) {\n er.data = ex;\n return this.response.error(er);\n }\n return this.response.error(ex);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_scan","require","_dbDynamodb","getKeys","results","lastEvaluatedKey","PK","SK","undefined","ReindexingTaskRunner","constructor","manager","indexManager","response","exec","keys","limit","isIndexAllowed","index","input","store","getInput","matching","includes","isCloseToTimeout","isAborted","aborted","scan","table","options","items","length","enableIndexing","done","tableWriteBatch","createTableWriteBatch","item","exists","indexExists","addInfoLog","message","entityName","_et","entity","getEntity","disableIndexing","put","TYPE","modified","Date","toISOString","execute","updateInput","settings","continue","ex","er","data","error","exports"],"sources":["ReindexingTaskRunner.ts"],"sourcesContent":["import type {\n IDynamoDbElasticsearchRecord,\n IElasticsearchIndexingTaskValues,\n IElasticsearchIndexingTaskValuesKeys,\n IManager\n} from \"~/types\";\nimport type { ITaskResponse, ITaskResponseResult } from \"@webiny/tasks/response/abstractions\";\nimport { scan } from \"~/helpers/scan\";\nimport type { ScanResponse } from \"@webiny/db-dynamodb\";\nimport { createTableWriteBatch } from \"@webiny/db-dynamodb\";\nimport type { IndexManager } from \"~/settings\";\nimport type { IIndexManager } from \"~/settings/types\";\n\nconst getKeys = (results: ScanResponse): IElasticsearchIndexingTaskValuesKeys | undefined => {\n if (results.lastEvaluatedKey?.PK && results.lastEvaluatedKey?.SK) {\n return {\n PK: results.lastEvaluatedKey.PK as unknown as string,\n SK: results.lastEvaluatedKey.SK as unknown as string\n };\n }\n return undefined;\n};\n\nexport class ReindexingTaskRunner {\n private readonly manager: IManager<IElasticsearchIndexingTaskValues>;\n private keys?: IElasticsearchIndexingTaskValuesKeys;\n\n private readonly indexManager: IIndexManager;\n private readonly response: ITaskResponse;\n\n public constructor(\n manager: IManager<IElasticsearchIndexingTaskValues>,\n indexManager: IndexManager\n ) {\n this.manager = manager;\n this.response = manager.response;\n this.indexManager = indexManager;\n }\n\n /**\n * When running the task, we always must check:\n * * if task is close to timeout\n * * if task was aborted\n */\n public async exec(\n keys: IElasticsearchIndexingTaskValuesKeys | undefined = undefined,\n limit: number\n ): Promise<ITaskResponseResult> {\n this.keys = keys;\n\n const isIndexAllowed = (index: string): boolean => {\n const input = this.manager.store.getInput();\n if (typeof input.matching !== \"string\" || !input.matching) {\n return true;\n }\n return index.includes(input.matching);\n };\n\n try {\n while (this.manager.isCloseToTimeout() === false) {\n if (this.manager.isAborted()) {\n return this.response.aborted();\n }\n\n const results = await scan<IDynamoDbElasticsearchRecord>({\n table: this.manager.table,\n keys: this.keys,\n options: {\n limit\n }\n });\n if (results.items.length === 0) {\n await this.indexManager.enableIndexing();\n return this.response.done(\"No more items to process.\");\n }\n\n const tableWriteBatch = createTableWriteBatch({\n table: this.manager.table\n });\n\n for (const item of results.items) {\n /**\n * No index defined? Impossible but let's skip if really happens.\n */\n if (!item.index) {\n continue;\n }\n if (isIndexAllowed(item.index) === false) {\n continue;\n }\n const exists = await this.indexManager.indexExists(item.index);\n if (!exists) {\n await this.manager.store.addInfoLog({\n message: `Index \"${item.index}\" does not exist. Skipping the item.`\n });\n continue;\n }\n /**\n * Is there a possibility that entityName does not exist? What do we do at that point?\n */\n const entityName = item._et || item.entity;\n /**\n * Let's skip for now.\n */\n if (!entityName) {\n continue;\n }\n const entity = this.manager.getEntity(entityName);\n /**\n * Disable the indexing for the current index.\n * Method does nothing if indexing is already disabled.\n */\n await this.indexManager.disableIndexing(item.index);\n /**\n * Reindexing will be triggered by the `putBatch` method.\n */\n tableWriteBatch.put(entity.entity, {\n ...item,\n TYPE: item.TYPE || \"unknown\",\n modified: new Date().toISOString()\n });\n }\n await tableWriteBatch.execute();\n /**\n * We always store the index settings, so we can restore them later.\n * Also, we always want to store what was the last key we processed, just in case something breaks, so we can continue from this point.\n */\n this.keys = getKeys(results);\n await this.manager.store.updateInput({\n settings: this.indexManager.settings,\n keys: this.keys\n });\n /**\n * We want to make sure that, if there are no last evaluated keys, we enable indexing.\n */\n if (!this.keys) {\n await this.indexManager.enableIndexing();\n return this.response.done(\"No more items to process - no last evaluated keys.\");\n }\n }\n return this.response.continue({\n keys: this.keys\n });\n } catch (ex) {\n /**\n * We want to enable indexing if there was an error.\n */\n try {\n await this.indexManager.enableIndexing();\n } catch (er) {\n er.data = ex;\n return this.response.error(er);\n }\n return this.response.error(ex);\n }\n }\n}\n"],"mappings":";;;;;;AAOA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAIA,MAAME,OAAO,GAAIC,OAAqB,IAAuD;EACzF,IAAIA,OAAO,CAACC,gBAAgB,EAAEC,EAAE,IAAIF,OAAO,CAACC,gBAAgB,EAAEE,EAAE,EAAE;IAC9D,OAAO;MACHD,EAAE,EAAEF,OAAO,CAACC,gBAAgB,CAACC,EAAuB;MACpDC,EAAE,EAAEH,OAAO,CAACC,gBAAgB,CAACE;IACjC,CAAC;EACL;EACA,OAAOC,SAAS;AACpB,CAAC;AAEM,MAAMC,oBAAoB,CAAC;EAOvBC,WAAWA,CACdC,OAAmD,EACnDC,YAA0B,EAC5B;IACE,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,QAAQ,GAAGF,OAAO,CAACE,QAAQ;IAChC,IAAI,CAACD,YAAY,GAAGA,YAAY;EACpC;;EAEA;AACJ;AACA;AACA;AACA;EACI,MAAaE,IAAIA,CACbC,IAAsD,GAAGP,SAAS,EAClEQ,KAAa,EACe;IAC5B,IAAI,CAACD,IAAI,GAAGA,IAAI;IAEhB,MAAME,cAAc,GAAIC,KAAa,IAAc;MAC/C,MAAMC,KAAK,GAAG,IAAI,CAACR,OAAO,CAACS,KAAK,CAACC,QAAQ,CAAC,CAAC;MAC3C,IAAI,OAAOF,KAAK,CAACG,QAAQ,KAAK,QAAQ,IAAI,CAACH,KAAK,CAACG,QAAQ,EAAE;QACvD,OAAO,IAAI;MACf;MACA,OAAOJ,KAAK,CAACK,QAAQ,CAACJ,KAAK,CAACG,QAAQ,CAAC;IACzC,CAAC;IAED,IAAI;MACA,OAAO,IAAI,CAACX,OAAO,CAACa,gBAAgB,CAAC,CAAC,KAAK,KAAK,EAAE;QAC9C,IAAI,IAAI,CAACb,OAAO,CAACc,SAAS,CAAC,CAAC,EAAE;UAC1B,OAAO,IAAI,CAACZ,QAAQ,CAACa,OAAO,CAAC,CAAC;QAClC;QAEA,MAAMtB,OAAO,GAAG,MAAM,IAAAuB,UAAI,EAA+B;UACrDC,KAAK,EAAE,IAAI,CAACjB,OAAO,CAACiB,KAAK;UACzBb,IAAI,EAAE,IAAI,CAACA,IAAI;UACfc,OAAO,EAAE;YACLb;UACJ;QACJ,CAAC,CAAC;QACF,IAAIZ,OAAO,CAAC0B,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;UAC5B,MAAM,IAAI,CAACnB,YAAY,CAACoB,cAAc,CAAC,CAAC;UACxC,OAAO,IAAI,CAACnB,QAAQ,CAACoB,IAAI,CAAC,2BAA2B,CAAC;QAC1D;QAEA,MAAMC,eAAe,GAAG,IAAAC,iCAAqB,EAAC;UAC1CP,KAAK,EAAE,IAAI,CAACjB,OAAO,CAACiB;QACxB,CAAC,CAAC;QAEF,KAAK,MAAMQ,IAAI,IAAIhC,OAAO,CAAC0B,KAAK,EAAE;UAC9B;AACpB;AACA;UACoB,IAAI,CAACM,IAAI,CAAClB,KAAK,EAAE;YACb;UACJ;UACA,IAAID,cAAc,CAACmB,IAAI,CAAClB,KAAK,CAAC,KAAK,KAAK,EAAE;YACtC;UACJ;UACA,MAAMmB,MAAM,GAAG,MAAM,IAAI,CAACzB,YAAY,CAAC0B,WAAW,CAACF,IAAI,CAAClB,KAAK,CAAC;UAC9D,IAAI,CAACmB,MAAM,EAAE;YACT,MAAM,IAAI,CAAC1B,OAAO,CAACS,KAAK,CAACmB,UAAU,CAAC;cAChCC,OAAO,EAAE,UAAUJ,IAAI,CAAClB,KAAK;YACjC,CAAC,CAAC;YACF;UACJ;UACA;AACpB;AACA;UACoB,MAAMuB,UAAU,GAAGL,IAAI,CAACM,GAAG,IAAIN,IAAI,CAACO,MAAM;UAC1C;AACpB;AACA;UACoB,IAAI,CAACF,UAAU,EAAE;YACb;UACJ;UACA,MAAME,MAAM,GAAG,IAAI,CAAChC,OAAO,CAACiC,SAAS,CAACH,UAAU,CAAC;UACjD;AACpB;AACA;AACA;UACoB,MAAM,IAAI,CAAC7B,YAAY,CAACiC,eAAe,CAACT,IAAI,CAAClB,KAAK,CAAC;UACnD;AACpB;AACA;UACoBgB,eAAe,CAACY,GAAG,CAACH,MAAM,CAACA,MAAM,EAAE;YAC/B,GAAGP,IAAI;YACPW,IAAI,EAAEX,IAAI,CAACW,IAAI,IAAI,SAAS;YAC5BC,QAAQ,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;UACrC,CAAC,CAAC;QACN;QACA,MAAMhB,eAAe,CAACiB,OAAO,CAAC,CAAC;QAC/B;AAChB;AACA;AACA;QACgB,IAAI,CAACpC,IAAI,GAAGZ,OAAO,CAACC,OAAO,CAAC;QAC5B,MAAM,IAAI,CAACO,OAAO,CAACS,KAAK,CAACgC,WAAW,CAAC;UACjCC,QAAQ,EAAE,IAAI,CAACzC,YAAY,CAACyC,QAAQ;UACpCtC,IAAI,EAAE,IAAI,CAACA;QACf,CAAC,CAAC;QACF;AAChB;AACA;QACgB,IAAI,CAAC,IAAI,CAACA,IAAI,EAAE;UACZ,MAAM,IAAI,CAACH,YAAY,CAACoB,cAAc,CAAC,CAAC;UACxC,OAAO,IAAI,CAACnB,QAAQ,CAACoB,IAAI,CAAC,oDAAoD,CAAC;QACnF;MACJ;MACA,OAAO,IAAI,CAACpB,QAAQ,CAACyC,QAAQ,CAAC;QAC1BvC,IAAI,EAAE,IAAI,CAACA;MACf,CAAC,CAAC;IACN,CAAC,CAAC,OAAOwC,EAAE,EAAE;MACT;AACZ;AACA;MACY,IAAI;QACA,MAAM,IAAI,CAAC3C,YAAY,CAACoB,cAAc,CAAC,CAAC;MAC5C,CAAC,CAAC,OAAOwB,EAAE,EAAE;QACTA,EAAE,CAACC,IAAI,GAAGF,EAAE;QACZ,OAAO,IAAI,CAAC1C,QAAQ,CAAC6C,KAAK,CAACF,EAAE,CAAC;MAClC;MACA,OAAO,IAAI,CAAC3C,QAAQ,CAAC6C,KAAK,CAACH,EAAE,CAAC;IAClC;EACJ;AACJ;AAACI,OAAA,CAAAlD,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { Context, IElasticsearchIndexingTaskValues, IElasticsearchTaskConfig } from "../../types";
1
+ import type { Context, IElasticsearchIndexingTaskValues, IElasticsearchTaskConfig } from "../../types";
2
2
  export declare const createElasticsearchReindexingTask: (params?: IElasticsearchTaskConfig) => import("@webiny/tasks").TaskDefinitionPlugin<Context, IElasticsearchIndexingTaskValues, import("@webiny/tasks").ITaskResponseDoneResultOutput>;
@@ -1 +1 @@
1
- {"version":3,"names":["_tasks","require","createElasticsearchReindexingTask","params","createTaskDefinition","id","title","run","context","isCloseToTimeout","response","input","isAborted","store","timer","Manager","IndexManager","ReindexingTaskRunner","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","settings","reindexing","keys","undefined","exec","limit","exports"],"sources":["reindexingTaskDefinition.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { Context, IElasticsearchIndexingTaskValues, IElasticsearchTaskConfig } from \"~/types\";\n\nexport const createElasticsearchReindexingTask = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchIndexingTaskValues>({\n id: \"elasticsearchReindexing\",\n title: \"Elasticsearch reindexing\",\n run: async ({ context, isCloseToTimeout, response, input, isAborted, store, timer }) => {\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager\"\n );\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings\"\n );\n const { ReindexingTaskRunner } = await import(\n /* webpackChunkName: \"ReindexingTaskRunner\" */ \"./ReindexingTaskRunner\"\n );\n\n const manager = new Manager<IElasticsearchIndexingTaskValues>({\n elasticsearchClient: params?.elasticsearchClient,\n documentClient: params?.documentClient,\n response,\n context,\n isAborted,\n isCloseToTimeout,\n store,\n timer\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, input.settings || {});\n const reindexing = new ReindexingTaskRunner(manager, indexManager);\n\n const keys = input.keys || undefined;\n return reindexing.exec(keys, input.limit || 100);\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,iCAAiC,GAAIC,MAAiC,IAAK;EACpF,OAAO,IAAAC,2BAAoB,EAA4C;IACnEC,EAAE,EAAE,yBAAyB;IAC7BC,KAAK,EAAE,0BAA0B;IACjCC,GAAG,EAAE,MAAAA,CAAO;MAAEC,OAAO;MAAEC,gBAAgB;MAAEC,QAAQ;MAAEC,KAAK;MAAEC,SAAS;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MACpF,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,6CAEJ,CAAC;MACD,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,CACjC,sDACJ,CAAC;MACD,MAAM;QAAEC;MAAqB,CAAC,GAAG,MAAM,MAAM,CACzC,sEACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIH,OAAO,CAAmC;QAC1DI,mBAAmB,EAAEhB,MAAM,EAAEgB,mBAAmB;QAChDC,cAAc,EAAEjB,MAAM,EAAEiB,cAAc;QACtCV,QAAQ;QACRF,OAAO;QACPI,SAAS;QACTH,gBAAgB;QAChBI,KAAK;QACLC;MACJ,CAAC,CAAC;MAEF,MAAMO,YAAY,GAAG,IAAIL,YAAY,CAACE,OAAO,CAACI,aAAa,EAAEX,KAAK,CAACY,QAAQ,IAAI,CAAC,CAAC,CAAC;MAClF,MAAMC,UAAU,GAAG,IAAIP,oBAAoB,CAACC,OAAO,EAAEG,YAAY,CAAC;MAElE,MAAMI,IAAI,GAAGd,KAAK,CAACc,IAAI,IAAIC,SAAS;MACpC,OAAOF,UAAU,CAACG,IAAI,CAACF,IAAI,EAAEd,KAAK,CAACiB,KAAK,IAAI,GAAG,CAAC;IACpD;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA3B,iCAAA,GAAAA,iCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_tasks","require","createElasticsearchReindexingTask","params","createTaskDefinition","id","title","run","context","isCloseToTimeout","response","input","isAborted","store","timer","Manager","IndexManager","ReindexingTaskRunner","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","settings","reindexing","keys","undefined","exec","limit","exports"],"sources":["reindexingTaskDefinition.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport type { Context, IElasticsearchIndexingTaskValues, IElasticsearchTaskConfig } from \"~/types\";\n\nexport const createElasticsearchReindexingTask = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchIndexingTaskValues>({\n id: \"elasticsearchReindexing\",\n title: \"Elasticsearch reindexing\",\n run: async ({ context, isCloseToTimeout, response, input, isAborted, store, timer }) => {\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager\"\n );\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings\"\n );\n const { ReindexingTaskRunner } = await import(\n /* webpackChunkName: \"ReindexingTaskRunner\" */ \"./ReindexingTaskRunner\"\n );\n\n const manager = new Manager<IElasticsearchIndexingTaskValues>({\n elasticsearchClient: params?.elasticsearchClient,\n documentClient: params?.documentClient,\n response,\n context,\n isAborted,\n isCloseToTimeout,\n store,\n timer\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, input.settings || {});\n const reindexing = new ReindexingTaskRunner(manager, indexManager);\n\n const keys = input.keys || undefined;\n return reindexing.exec(keys, input.limit || 100);\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,iCAAiC,GAAIC,MAAiC,IAAK;EACpF,OAAO,IAAAC,2BAAoB,EAA4C;IACnEC,EAAE,EAAE,yBAAyB;IAC7BC,KAAK,EAAE,0BAA0B;IACjCC,GAAG,EAAE,MAAAA,CAAO;MAAEC,OAAO;MAAEC,gBAAgB;MAAEC,QAAQ;MAAEC,KAAK;MAAEC,SAAS;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MACpF,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,6CAEJ,CAAC;MACD,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,CACjC,sDACJ,CAAC;MACD,MAAM;QAAEC;MAAqB,CAAC,GAAG,MAAM,MAAM,CACzC,sEACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIH,OAAO,CAAmC;QAC1DI,mBAAmB,EAAEhB,MAAM,EAAEgB,mBAAmB;QAChDC,cAAc,EAAEjB,MAAM,EAAEiB,cAAc;QACtCV,QAAQ;QACRF,OAAO;QACPI,SAAS;QACTH,gBAAgB;QAChBI,KAAK;QACLC;MACJ,CAAC,CAAC;MAEF,MAAMO,YAAY,GAAG,IAAIL,YAAY,CAACE,OAAO,CAACI,aAAa,EAAEX,KAAK,CAACY,QAAQ,IAAI,CAAC,CAAC,CAAC;MAClF,MAAMC,UAAU,GAAG,IAAIP,oBAAoB,CAACC,OAAO,EAAEG,YAAY,CAAC;MAElE,MAAMI,IAAI,GAAGd,KAAK,CAACc,IAAI,IAAIC,SAAS;MACpC,OAAOF,UAAU,CAACG,IAAI,CAACF,IAAI,EAAEd,KAAK,CAACiB,KAAK,IAAI,GAAG,CAAC;IACpD;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA3B,iCAAA,GAAAA,iCAAA","ignoreList":[]}