@webiny/api-elasticsearch-tasks 5.41.4 → 5.42.0-beta.0
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.
- package/package.json +26 -30
- package/tasks/Manager.js.map +1 -1
- package/tasks/createIndexes/CreateIndexesTaskRunner.js.map +1 -1
- package/tasks/createIndexes/index.js +2 -2
- package/tasks/createIndexes/index.js.map +1 -1
- package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js.map +1 -1
- package/tasks/dataSynchronization/entities/getElasticsearchEntity.js.map +1 -1
- package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js.map +1 -1
- package/tasks/dataSynchronization/entities/getTable.js.map +1 -1
- package/tasks/dataSynchronization/index.js +4 -4
- package/tasks/dataSynchronization/index.js.map +1 -1
- package/tasks/enableIndexing/EnableIndexingTaskRunner.js.map +1 -1
- package/tasks/enableIndexing/index.js +3 -3
- package/tasks/enableIndexing/index.js.map +1 -1
- package/tasks/reindexing/ReindexingTaskRunner.js.map +1 -1
- package/tasks/reindexing/reindexingTaskDefinition.js +3 -3
- package/tasks/reindexing/reindexingTaskDefinition.js.map +1 -1
- package/types.d.ts +2 -1
- package/types.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-elasticsearch-tasks",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.42.0-beta.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,38 +12,34 @@
|
|
|
12
12
|
],
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@
|
|
16
|
-
"@webiny/api": "5.
|
|
17
|
-
"@webiny/api-
|
|
18
|
-
"@webiny/api-
|
|
19
|
-
"@webiny/aws-sdk": "5.
|
|
20
|
-
"@webiny/db": "5.
|
|
21
|
-
"@webiny/db-dynamodb": "5.
|
|
22
|
-
"@webiny/error": "5.
|
|
23
|
-
"@webiny/tasks": "5.
|
|
24
|
-
"@webiny/utils": "5.
|
|
15
|
+
"@webiny/api": "5.42.0-beta.0",
|
|
16
|
+
"@webiny/api-dynamodb-to-elasticsearch": "5.42.0-beta.0",
|
|
17
|
+
"@webiny/api-elasticsearch": "5.42.0-beta.0",
|
|
18
|
+
"@webiny/api-log": "5.42.0-beta.0",
|
|
19
|
+
"@webiny/aws-sdk": "5.42.0-beta.0",
|
|
20
|
+
"@webiny/db": "5.42.0-beta.0",
|
|
21
|
+
"@webiny/db-dynamodb": "5.42.0-beta.0",
|
|
22
|
+
"@webiny/error": "5.42.0-beta.0",
|
|
23
|
+
"@webiny/tasks": "5.42.0-beta.0",
|
|
24
|
+
"@webiny/utils": "5.42.0-beta.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@babel/cli": "7.24.1",
|
|
28
|
-
"@babel/core": "7.24.3",
|
|
29
|
-
"@babel/preset-env": "7.24.3",
|
|
30
|
-
"@babel/preset-typescript": "7.24.1",
|
|
31
27
|
"@webiny/api": "0.0.0",
|
|
32
|
-
"@webiny/api-headless-cms": "5.
|
|
33
|
-
"@webiny/api-i18n": "5.
|
|
34
|
-
"@webiny/api-security": "5.
|
|
35
|
-
"@webiny/api-tenancy": "5.
|
|
36
|
-
"@webiny/api-wcp": "5.
|
|
37
|
-
"@webiny/cli": "5.
|
|
38
|
-
"@webiny/handler": "5.
|
|
39
|
-
"@webiny/handler-aws": "5.
|
|
40
|
-
"@webiny/handler-db": "5.
|
|
41
|
-
"@webiny/handler-graphql": "5.
|
|
42
|
-
"@webiny/plugins": "5.
|
|
43
|
-
"@webiny/project-utils": "5.
|
|
44
|
-
"rimraf": "
|
|
28
|
+
"@webiny/api-headless-cms": "5.42.0-beta.0",
|
|
29
|
+
"@webiny/api-i18n": "5.42.0-beta.0",
|
|
30
|
+
"@webiny/api-security": "5.42.0-beta.0",
|
|
31
|
+
"@webiny/api-tenancy": "5.42.0-beta.0",
|
|
32
|
+
"@webiny/api-wcp": "5.42.0-beta.0",
|
|
33
|
+
"@webiny/cli": "5.42.0-beta.0",
|
|
34
|
+
"@webiny/handler": "5.42.0-beta.0",
|
|
35
|
+
"@webiny/handler-aws": "5.42.0-beta.0",
|
|
36
|
+
"@webiny/handler-db": "5.42.0-beta.0",
|
|
37
|
+
"@webiny/handler-graphql": "5.42.0-beta.0",
|
|
38
|
+
"@webiny/plugins": "5.42.0-beta.0",
|
|
39
|
+
"@webiny/project-utils": "5.42.0-beta.0",
|
|
40
|
+
"rimraf": "6.0.1",
|
|
45
41
|
"ttypescript": "1.5.15",
|
|
46
|
-
"type-fest": "
|
|
42
|
+
"type-fest": "3.13.1",
|
|
47
43
|
"typescript": "4.9.5"
|
|
48
44
|
},
|
|
49
45
|
"publishConfig": {
|
|
@@ -54,7 +50,7 @@
|
|
|
54
50
|
"build": "yarn webiny run build",
|
|
55
51
|
"watch": "yarn webiny run watch"
|
|
56
52
|
},
|
|
57
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "ebf90f62ed3f28114ffdb012b7e5f80988af53d3",
|
|
58
54
|
"adio": {
|
|
59
55
|
"ignore": {
|
|
60
56
|
"src": [
|
package/tasks/Manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clientDynamodb","require","_apiElasticsearch","_definitions","_entry","_dbDynamodb","Manager","entities","constructor","params","context","documentClient","getDocumentClient","elasticsearch","elasticsearchClient","createElasticsearchClient","endpoint","process","env","ELASTIC_SEARCH_ENDPOINT","table","createTable","isCloseToTimeout","isAborted","response","store","timer","getEntity","name","createEntry","entityName","read","items","batchReadAll","exports"],"sources":["Manager.ts"],"sourcesContent":["import { DynamoDBDocument, getDocumentClient } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Client, createElasticsearchClient } from \"@webiny/api-elasticsearch\";\nimport { createTable } from \"~/definitions\";\nimport type { Context, IManager } from \"~/types\";\nimport { createEntry } from \"~/definitions/entry\";\nimport type { ITaskResponse } from \"@webiny/tasks/response/abstractions\";\nimport type {\n IIsCloseToTimeoutCallable,\n ITaskManagerStore\n} from \"@webiny/tasks/runner/abstractions\";\nimport type { BatchReadItem, IEntity } from \"@webiny/db-dynamodb\";\nimport { batchReadAll } from \"@webiny/db-dynamodb\";\nimport type { ITimer } from \"@webiny/handler-aws/utils\";\n\nexport interface ManagerParams<T> {\n context: Context;\n documentClient?: DynamoDBDocument;\n elasticsearchClient?: Client;\n isCloseToTimeout: IIsCloseToTimeoutCallable;\n isAborted: () => boolean;\n response: ITaskResponse;\n store: ITaskManagerStore<T>;\n timer: ITimer;\n}\n\nexport class Manager<T> implements IManager<T> {\n public readonly documentClient: DynamoDBDocument;\n public readonly elasticsearch: Client;\n public readonly context: Context;\n public readonly table: ReturnType<typeof createTable>;\n public readonly isCloseToTimeout: IIsCloseToTimeoutCallable;\n public readonly isAborted: () => boolean;\n public readonly response: ITaskResponse;\n public readonly store: ITaskManagerStore<T>;\n public readonly timer: ITimer;\n\n private readonly entities: Record<string, IEntity> = {};\n\n public constructor(params: ManagerParams<T>) {\n this.context = params.context;\n this.documentClient = params?.documentClient || getDocumentClient();\n\n this.elasticsearch =\n params?.elasticsearchClient ||\n params.context.elasticsearch ||\n createElasticsearchClient({\n endpoint: `https://${process.env.ELASTIC_SEARCH_ENDPOINT}`\n });\n\n this.table = createTable({\n documentClient: this.documentClient\n });\n this.isCloseToTimeout = () => {\n return params.isCloseToTimeout();\n };\n this.isAborted = () => {\n return params.isAborted();\n };\n this.response = params.response;\n this.store = params.store;\n this.timer = params.timer;\n }\n\n public getEntity(name: string): IEntity {\n if (this.entities[name]) {\n return this.entities[name];\n }\n\n return (this.entities[name] = createEntry({\n table: this.table,\n entityName: name\n }));\n }\n\n public async read<T>(items: BatchReadItem[]): Promise<T[]> {\n return await batchReadAll<T>({\n table: this.table,\n items\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAOA,IAAAI,WAAA,GAAAJ,OAAA;AAcO,MAAMK,OAAO,CAA2B;EAW1BC,QAAQ,GAA4B,CAAC,CAAC;EAEhDC,WAAWA,CAACC,MAAwB,EAAE;IACzC,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC7B,IAAI,CAACC,cAAc,GAAGF,MAAM,EAAEE,cAAc,IAAI,IAAAC,iCAAiB,EAAC,CAAC;IAEnE,IAAI,CAACC,aAAa,GACdJ,MAAM,EAAEK,mBAAmB,IAC3BL,MAAM,CAACC,OAAO,CAACG,aAAa,IAC5B,IAAAE,2CAAyB,EAAC;MACtBC,QAAQ,
|
|
1
|
+
{"version":3,"names":["_clientDynamodb","require","_apiElasticsearch","_definitions","_entry","_dbDynamodb","Manager","entities","constructor","params","context","documentClient","getDocumentClient","elasticsearch","elasticsearchClient","createElasticsearchClient","endpoint","process","env","ELASTIC_SEARCH_ENDPOINT","table","createTable","isCloseToTimeout","isAborted","response","store","timer","getEntity","name","createEntry","entityName","read","items","batchReadAll","exports"],"sources":["Manager.ts"],"sourcesContent":["import { DynamoDBDocument, getDocumentClient } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Client, createElasticsearchClient } from \"@webiny/api-elasticsearch\";\nimport { createTable } from \"~/definitions\";\nimport type { Context, IManager } from \"~/types\";\nimport { createEntry } from \"~/definitions/entry\";\nimport type { ITaskResponse } from \"@webiny/tasks/response/abstractions\";\nimport type {\n IIsCloseToTimeoutCallable,\n ITaskManagerStore\n} from \"@webiny/tasks/runner/abstractions\";\nimport type { BatchReadItem, IEntity } from \"@webiny/db-dynamodb\";\nimport { batchReadAll } from \"@webiny/db-dynamodb\";\nimport type { ITimer } from \"@webiny/handler-aws/utils\";\n\nexport interface ManagerParams<T> {\n context: Context;\n documentClient?: DynamoDBDocument;\n elasticsearchClient?: Client;\n isCloseToTimeout: IIsCloseToTimeoutCallable;\n isAborted: () => boolean;\n response: ITaskResponse;\n store: ITaskManagerStore<T>;\n timer: ITimer;\n}\n\nexport class Manager<T> implements IManager<T> {\n public readonly documentClient: DynamoDBDocument;\n public readonly elasticsearch: Client;\n public readonly context: Context;\n public readonly table: ReturnType<typeof createTable>;\n public readonly isCloseToTimeout: IIsCloseToTimeoutCallable;\n public readonly isAborted: () => boolean;\n public readonly response: ITaskResponse;\n public readonly store: ITaskManagerStore<T>;\n public readonly timer: ITimer;\n\n private readonly entities: Record<string, IEntity> = {};\n\n public constructor(params: ManagerParams<T>) {\n this.context = params.context;\n this.documentClient = params?.documentClient || getDocumentClient();\n\n this.elasticsearch =\n params?.elasticsearchClient ||\n params.context.elasticsearch ||\n createElasticsearchClient({\n endpoint: `https://${process.env.ELASTIC_SEARCH_ENDPOINT}`\n });\n\n this.table = createTable({\n documentClient: this.documentClient\n });\n this.isCloseToTimeout = () => {\n return params.isCloseToTimeout();\n };\n this.isAborted = () => {\n return params.isAborted();\n };\n this.response = params.response;\n this.store = params.store;\n this.timer = params.timer;\n }\n\n public getEntity(name: string): IEntity {\n if (this.entities[name]) {\n return this.entities[name];\n }\n\n return (this.entities[name] = createEntry({\n table: this.table,\n entityName: name\n }));\n }\n\n public async read<T>(items: BatchReadItem[]): Promise<T[]> {\n return await batchReadAll<T>({\n table: this.table,\n items\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAOA,IAAAI,WAAA,GAAAJ,OAAA;AAcO,MAAMK,OAAO,CAA2B;EAW1BC,QAAQ,GAA4B,CAAC,CAAC;EAEhDC,WAAWA,CAACC,MAAwB,EAAE;IACzC,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC7B,IAAI,CAACC,cAAc,GAAGF,MAAM,EAAEE,cAAc,IAAI,IAAAC,iCAAiB,EAAC,CAAC;IAEnE,IAAI,CAACC,aAAa,GACdJ,MAAM,EAAEK,mBAAmB,IAC3BL,MAAM,CAACC,OAAO,CAACG,aAAa,IAC5B,IAAAE,2CAAyB,EAAC;MACtBC,QAAQ,EAAE,WAAWC,OAAO,CAACC,GAAG,CAACC,uBAAuB;IAC5D,CAAC,CAAC;IAEN,IAAI,CAACC,KAAK,GAAG,IAAAC,wBAAW,EAAC;MACrBV,cAAc,EAAE,IAAI,CAACA;IACzB,CAAC,CAAC;IACF,IAAI,CAACW,gBAAgB,GAAG,MAAM;MAC1B,OAAOb,MAAM,CAACa,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAACC,SAAS,GAAG,MAAM;MACnB,OAAOd,MAAM,CAACc,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,CAACC,QAAQ,GAAGf,MAAM,CAACe,QAAQ;IAC/B,IAAI,CAACC,KAAK,GAAGhB,MAAM,CAACgB,KAAK;IACzB,IAAI,CAACC,KAAK,GAAGjB,MAAM,CAACiB,KAAK;EAC7B;EAEOC,SAASA,CAACC,IAAY,EAAW;IACpC,IAAI,IAAI,CAACrB,QAAQ,CAACqB,IAAI,CAAC,EAAE;MACrB,OAAO,IAAI,CAACrB,QAAQ,CAACqB,IAAI,CAAC;IAC9B;IAEA,OAAQ,IAAI,CAACrB,QAAQ,CAACqB,IAAI,CAAC,GAAG,IAAAC,kBAAW,EAAC;MACtCT,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBU,UAAU,EAAEF;IAChB,CAAC,CAAC;EACN;EAEA,MAAaG,IAAIA,CAAIC,KAAsB,EAAgB;IACvD,OAAO,MAAM,IAAAC,wBAAY,EAAI;MACzBb,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBY;IACJ,CAAC,CAAC;EACN;AACJ;AAACE,OAAA,CAAA5B,OAAA,GAAAA,OAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_CreateElasticsearchIndexTaskPlugin","require","CreateIndexesTaskRunner","constructor","manager","indexManager","execute","matching","done","plugins","context","byType","CreateElasticsearchIndexTaskPlugin","type","length","response","indexes","tenants","tenancy","listTenants","tenant","locales","i18n","getLocales","locale","plugin","results","getIndexList","id","code","result","some","i","index","push","isIndexAllowed","includes","settings","isAborted","aborted","isCloseToTimeout","continue","exists","indexExists","createIndex","store","addInfoLog","message","data","ex","addErrorLog","error","exports"],"sources":["CreateIndexesTaskRunner.ts"],"sourcesContent":["import { Manager } from \"~/tasks/Manager\";\nimport { IndexManager } from \"~/settings\";\nimport { ITaskResponseResult } from \"@webiny/tasks\";\nimport {\n CreateElasticsearchIndexTaskPlugin,\n CreateElasticsearchIndexTaskPluginIndex\n} from \"./CreateElasticsearchIndexTaskPlugin\";\nimport { Context } from \"~/types\";\nimport { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types\";\n\nexport class CreateIndexesTaskRunner {\n private readonly manager: Manager<IElasticsearchCreateIndexesTaskInput>;\n private readonly indexManager: IndexManager;\n\n public constructor(\n manager: Manager<IElasticsearchCreateIndexesTaskInput>,\n indexManager: IndexManager\n ) {\n this.manager = manager;\n\n this.indexManager = indexManager;\n }\n\n public async execute(\n matching: string | undefined,\n done: string[]\n ): Promise<ITaskResponseResult> {\n const plugins = this.manager.context.plugins.byType<\n CreateElasticsearchIndexTaskPlugin<Context>\n >(CreateElasticsearchIndexTaskPlugin.type);\n if (plugins.length === 0) {\n return this.manager.response.done(\"No index plugins found.\");\n }\n const indexes: CreateElasticsearchIndexTaskPluginIndex[] = [];\n\n const tenants = await this.manager.context.tenancy.listTenants();\n\n for (const tenant of tenants) {\n const locales = await this.manager.context.i18n.getLocales();\n for (const locale of locales) {\n for (const plugin of plugins) {\n const results = await plugin.getIndexList({\n context: this.manager.context,\n tenant: tenant.id,\n locale: locale.code\n });\n for (const result of results) {\n if (indexes.some(i => i.index === result.index)) {\n continue;\n }\n indexes.push(result);\n }\n }\n }\n }\n if (indexes.length === 0) {\n return this.manager.response.done(\"No indexes found.\");\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 for (const { index, settings } of indexes) {\n if (this.manager.isAborted()) {\n return this.manager.response.aborted();\n } else if (this.manager.isCloseToTimeout()) {\n return this.manager.response.continue({\n done\n });\n }\n try {\n if (done.includes(index)) {\n continue;\n } else if (isIndexAllowed(index) === false) {\n continue;\n }\n const exists = await this.indexManager.indexExists(index);\n if (exists) {\n continue;\n }\n done.push(index);\n await this.indexManager.createIndex(index, settings);\n await this.manager.store.addInfoLog({\n message: `Index \"${index}\" created.`,\n data: {\n index\n }\n });\n } catch (ex) {\n await this.manager.store.addErrorLog({\n message: `Failed to create index \"${index}\".`,\n error: ex\n });\n }\n }\n\n return this.manager.response.done(\"Indexes created.\", {\n done\n });\n }\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_CreateElasticsearchIndexTaskPlugin","require","CreateIndexesTaskRunner","constructor","manager","indexManager","execute","matching","done","plugins","context","byType","CreateElasticsearchIndexTaskPlugin","type","length","response","indexes","tenants","tenancy","listTenants","tenant","locales","i18n","getLocales","locale","plugin","results","getIndexList","id","code","result","some","i","index","push","isIndexAllowed","includes","settings","isAborted","aborted","isCloseToTimeout","continue","exists","indexExists","createIndex","store","addInfoLog","message","data","ex","addErrorLog","error","exports"],"sources":["CreateIndexesTaskRunner.ts"],"sourcesContent":["import { Manager } from \"~/tasks/Manager\";\nimport { IndexManager } from \"~/settings\";\nimport { ITaskResponseResult } from \"@webiny/tasks\";\nimport {\n CreateElasticsearchIndexTaskPlugin,\n CreateElasticsearchIndexTaskPluginIndex\n} from \"./CreateElasticsearchIndexTaskPlugin\";\nimport { Context } from \"~/types\";\nimport { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types\";\n\nexport class CreateIndexesTaskRunner {\n private readonly manager: Manager<IElasticsearchCreateIndexesTaskInput>;\n private readonly indexManager: IndexManager;\n\n public constructor(\n manager: Manager<IElasticsearchCreateIndexesTaskInput>,\n indexManager: IndexManager\n ) {\n this.manager = manager;\n\n this.indexManager = indexManager;\n }\n\n public async execute(\n matching: string | undefined,\n done: string[]\n ): Promise<ITaskResponseResult> {\n const plugins = this.manager.context.plugins.byType<\n CreateElasticsearchIndexTaskPlugin<Context>\n >(CreateElasticsearchIndexTaskPlugin.type);\n if (plugins.length === 0) {\n return this.manager.response.done(\"No index plugins found.\");\n }\n const indexes: CreateElasticsearchIndexTaskPluginIndex[] = [];\n\n const tenants = await this.manager.context.tenancy.listTenants();\n\n for (const tenant of tenants) {\n const locales = await this.manager.context.i18n.getLocales();\n for (const locale of locales) {\n for (const plugin of plugins) {\n const results = await plugin.getIndexList({\n context: this.manager.context,\n tenant: tenant.id,\n locale: locale.code\n });\n for (const result of results) {\n if (indexes.some(i => i.index === result.index)) {\n continue;\n }\n indexes.push(result);\n }\n }\n }\n }\n if (indexes.length === 0) {\n return this.manager.response.done(\"No indexes found.\");\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 for (const { index, settings } of indexes) {\n if (this.manager.isAborted()) {\n return this.manager.response.aborted();\n } else if (this.manager.isCloseToTimeout()) {\n return this.manager.response.continue({\n done\n });\n }\n try {\n if (done.includes(index)) {\n continue;\n } else if (isIndexAllowed(index) === false) {\n continue;\n }\n const exists = await this.indexManager.indexExists(index);\n if (exists) {\n continue;\n }\n done.push(index);\n await this.indexManager.createIndex(index, settings);\n await this.manager.store.addInfoLog({\n message: `Index \"${index}\" created.`,\n data: {\n index\n }\n });\n } catch (ex) {\n await this.manager.store.addErrorLog({\n message: `Failed to create index \"${index}\".`,\n error: ex\n });\n }\n }\n\n return this.manager.response.done(\"Indexes created.\", {\n done\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -26,10 +26,10 @@ const createIndexesTaskDefinition = params => {
|
|
|
26
26
|
}) => {
|
|
27
27
|
const {
|
|
28
28
|
Manager
|
|
29
|
-
} = await import(
|
|
29
|
+
} = await import(/* webpackChunkName: "Manager" */"../Manager");
|
|
30
30
|
const {
|
|
31
31
|
IndexManager
|
|
32
|
-
} = await import(
|
|
32
|
+
} = await import(/* webpackChunkName: "IndexManager" */"../../settings");
|
|
33
33
|
const manager = new Manager({
|
|
34
34
|
elasticsearchClient: params?.elasticsearchClient,
|
|
35
35
|
documentClient: params?.documentClient,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_tasks","require","_CreateIndexesTaskRunner","createIndexesTaskDefinition","params","createTaskDefinition","id","title","maxIterations","run","response","context","isCloseToTimeout","isAborted","store","input","timer","Manager","IndexManager","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","createIndexesTaskRunner","CreateIndexesTaskRunner","execute","matching","Array","from","done","exports"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types\";\nimport { CreateIndexesTaskRunner } from \"./CreateIndexesTaskRunner\";\n\nexport const createIndexesTaskDefinition = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchCreateIndexesTaskInput>({\n id: \"elasticsearchCreateIndexes\",\n title: \"Create Missing Elasticsearch Indexes\",\n /**\n * Maximum number of iterations before the task goes into the error state.\n * No point in having more than 2 runs, as the create index operations should not even take 1 full run, no matter how much indeexs is there to create.\n */\n maxIterations: 2,\n run: async ({ response, context, isCloseToTimeout, isAborted, store, input, 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 manager = new Manager<IElasticsearchCreateIndexesTaskInput>({\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 createIndexesTaskRunner = new CreateIndexesTaskRunner(manager, indexManager);\n\n return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,wBAAA,GAAAD,OAAA;AAEO,MAAME,2BAA2B,GAAIC,MAAiC,IAAK;EAC9E,OAAO,IAAAC,2BAAoB,EAAgD;IACvEC,EAAE,EAAE,4BAA4B;IAChCC,KAAK,EAAE,sCAAsC;IAC7C;AACR;AACA;AACA;IACQC,aAAa,EAAE,CAAC;IAChBC,GAAG,EAAE,MAAAA,CAAO;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,gBAAgB;MAAEC,SAAS;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MACpF,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,
|
|
1
|
+
{"version":3,"names":["_tasks","require","_CreateIndexesTaskRunner","createIndexesTaskDefinition","params","createTaskDefinition","id","title","maxIterations","run","response","context","isCloseToTimeout","isAborted","store","input","timer","Manager","IndexManager","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","createIndexesTaskRunner","CreateIndexesTaskRunner","execute","matching","Array","from","done","exports"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types\";\nimport { CreateIndexesTaskRunner } from \"./CreateIndexesTaskRunner\";\n\nexport const createIndexesTaskDefinition = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchCreateIndexesTaskInput>({\n id: \"elasticsearchCreateIndexes\",\n title: \"Create Missing Elasticsearch Indexes\",\n /**\n * Maximum number of iterations before the task goes into the error state.\n * No point in having more than 2 runs, as the create index operations should not even take 1 full run, no matter how much indeexs is there to create.\n */\n maxIterations: 2,\n run: async ({ response, context, isCloseToTimeout, isAborted, store, input, 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 manager = new Manager<IElasticsearchCreateIndexesTaskInput>({\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 createIndexesTaskRunner = new CreateIndexesTaskRunner(manager, indexManager);\n\n return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,wBAAA,GAAAD,OAAA;AAEO,MAAME,2BAA2B,GAAIC,MAAiC,IAAK;EAC9E,OAAO,IAAAC,2BAAoB,EAAgD;IACvEC,EAAE,EAAE,4BAA4B;IAChCC,KAAK,EAAE,sCAAsC;IAC7C;AACR;AACA;AACA;IACQC,aAAa,EAAE,CAAC;IAChBC,GAAG,EAAE,MAAAA,CAAO;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,gBAAgB;MAAEC,SAAS;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,MAAMC,OAAO,GAAG,IAAIF,OAAO,CAAuC;QAC9DG,mBAAmB,EAAEhB,MAAM,EAAEgB,mBAAmB;QAChDC,cAAc,EAAEjB,MAAM,EAAEiB,cAAc;QACtCX,QAAQ;QACRC,OAAO;QACPE,SAAS;QACTD,gBAAgB;QAChBE,KAAK;QACLE;MACJ,CAAC,CAAC;MAEF,MAAMM,YAAY,GAAG,IAAIJ,YAAY,CAACC,OAAO,CAACI,aAAa,EAAE,CAAC,CAAC,CAAC;MAEhE,MAAMC,uBAAuB,GAAG,IAAIC,gDAAuB,CAACN,OAAO,EAAEG,YAAY,CAAC;MAElF,OAAOE,uBAAuB,CAACE,OAAO,CAACX,KAAK,CAACY,QAAQ,EAAEC,KAAK,CAACC,IAAI,CAACd,KAAK,CAACe,IAAI,IAAI,EAAE,CAAC,CAAC;IACxF;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA5B,2BAAA,GAAAA,2BAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ElasticsearchSynchronize","require","_ElasticsearchFetcher","DataSynchronizationTaskRunner","constructor","params","manager","indexManager","factories","run","input","validateFlow","flow","elasticsearchToDynamoDb","finished","sync","synchronize","ElasticsearchSynchronize","context","timer","fetcher","ElasticsearchFetcher","client","elasticsearch","ex","response","error","done","Error","Object","keys","join","exports"],"sources":["DataSynchronizationTaskRunner.ts"],"sourcesContent":["import {\n IDataSynchronizationInput,\n IDataSynchronizationManager,\n IFactories\n} from \"~/tasks/dataSynchronization/types\";\nimport { IIndexManager } from \"~/settings/types\";\nimport { ElasticsearchSynchronize } from \"~/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize\";\nimport { ElasticsearchFetcher } from \"~/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher\";\n\nexport interface IDataSynchronizationTaskRunnerParams {\n manager: IDataSynchronizationManager;\n indexManager: IIndexManager;\n factories: IFactories;\n}\n\nexport class DataSynchronizationTaskRunner {\n private readonly manager: IDataSynchronizationManager;\n private readonly indexManager: IIndexManager;\n private readonly factories: IFactories;\n\n public constructor(params: IDataSynchronizationTaskRunnerParams) {\n this.manager = params.manager;\n this.indexManager = params.indexManager;\n this.factories = params.factories;\n }\n\n public async run(input: IDataSynchronizationInput) {\n this.validateFlow(input);\n /**\n * Go through the Elasticsearch and delete records which do not exist in the Elasticsearch table.\n */\n //\n if (input.flow === \"elasticsearchToDynamoDb\" && !input.elasticsearchToDynamoDb?.finished) {\n const sync = this.factories.elasticsearchToDynamoDb({\n manager: this.manager,\n indexManager: this.indexManager,\n synchronize: new ElasticsearchSynchronize({\n context: this.manager.context,\n timer: this.manager.timer\n }),\n fetcher: new ElasticsearchFetcher({\n client: this.manager.elasticsearch\n })\n });\n try {\n return await sync.run(input);\n } catch (ex) {\n return this.manager.response.error(ex);\n }\n }\n /**\n * We are done.\n */\n return this.manager.response.done();\n }\n\n private validateFlow(input: IDataSynchronizationInput): void {\n if (!input.flow) {\n throw new Error(`Missing \"flow\" in the input.`);\n } else if (this.factories[input.flow]) {\n return;\n }\n throw new Error(\n `Invalid flow \"${input.flow}\". Allowed flows: ${Object.keys(this.factories).join(\n \", \"\n )}.`\n );\n }\n}\n"],"mappings":";;;;;;AAMA,IAAAA,yBAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAQO,MAAME,6BAA6B,CAAC;EAKhCC,WAAWA,CAACC,MAA4C,EAAE;IAC7D,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC7B,IAAI,CAACC,YAAY,GAAGF,MAAM,CAACE,YAAY;IACvC,IAAI,CAACC,SAAS,GAAGH,MAAM,CAACG,SAAS;EACrC;EAEA,MAAaC,GAAGA,CAACC,KAAgC,EAAE;IAC/C,IAAI,CAACC,YAAY,CAACD,KAAK,CAAC;IACxB;AACR;AACA;IACQ;IACA,IAAIA,KAAK,CAACE,IAAI,KAAK,yBAAyB,IAAI,CAACF,KAAK,CAACG,uBAAuB,EAAEC,QAAQ,EAAE;MACtF,MAAMC,IAAI,GAAG,IAAI,CAACP,SAAS,CAACK,uBAAuB,CAAC;QAChDP,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,YAAY,EAAE,IAAI,CAACA,YAAY;QAC/BS,WAAW,EAAE,IAAIC,kDAAwB,CAAC;UACtCC,OAAO,EAAE,IAAI,CAACZ,OAAO,CAACY,OAAO;UAC7BC,KAAK,EAAE,IAAI,CAACb,OAAO,CAACa;QACxB,CAAC,CAAC;QACFC,OAAO,EAAE,IAAIC,0CAAoB,CAAC;UAC9BC,MAAM,EAAE,IAAI,CAAChB,OAAO,CAACiB;QACzB,CAAC;MACL,CAAC,CAAC;MACF,IAAI;QACA,OAAO,MAAMR,IAAI,CAACN,GAAG,CAACC,KAAK,CAAC;MAChC,CAAC,CAAC,OAAOc,EAAE,EAAE;QACT,OAAO,IAAI,CAAClB,OAAO,CAACmB,QAAQ,CAACC,KAAK,CAACF,EAAE,CAAC;MAC1C;IACJ;IACA;AACR;AACA;IACQ,OAAO,IAAI,CAAClB,OAAO,CAACmB,QAAQ,CAACE,IAAI,CAAC,CAAC;EACvC;EAEQhB,YAAYA,CAACD,KAAgC,EAAQ;IACzD,IAAI,CAACA,KAAK,CAACE,IAAI,EAAE;MACb,MAAM,IAAIgB,KAAK,
|
|
1
|
+
{"version":3,"names":["_ElasticsearchSynchronize","require","_ElasticsearchFetcher","DataSynchronizationTaskRunner","constructor","params","manager","indexManager","factories","run","input","validateFlow","flow","elasticsearchToDynamoDb","finished","sync","synchronize","ElasticsearchSynchronize","context","timer","fetcher","ElasticsearchFetcher","client","elasticsearch","ex","response","error","done","Error","Object","keys","join","exports"],"sources":["DataSynchronizationTaskRunner.ts"],"sourcesContent":["import {\n IDataSynchronizationInput,\n IDataSynchronizationManager,\n IFactories\n} from \"~/tasks/dataSynchronization/types\";\nimport { IIndexManager } from \"~/settings/types\";\nimport { ElasticsearchSynchronize } from \"~/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize\";\nimport { ElasticsearchFetcher } from \"~/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher\";\n\nexport interface IDataSynchronizationTaskRunnerParams {\n manager: IDataSynchronizationManager;\n indexManager: IIndexManager;\n factories: IFactories;\n}\n\nexport class DataSynchronizationTaskRunner {\n private readonly manager: IDataSynchronizationManager;\n private readonly indexManager: IIndexManager;\n private readonly factories: IFactories;\n\n public constructor(params: IDataSynchronizationTaskRunnerParams) {\n this.manager = params.manager;\n this.indexManager = params.indexManager;\n this.factories = params.factories;\n }\n\n public async run(input: IDataSynchronizationInput) {\n this.validateFlow(input);\n /**\n * Go through the Elasticsearch and delete records which do not exist in the Elasticsearch table.\n */\n //\n if (input.flow === \"elasticsearchToDynamoDb\" && !input.elasticsearchToDynamoDb?.finished) {\n const sync = this.factories.elasticsearchToDynamoDb({\n manager: this.manager,\n indexManager: this.indexManager,\n synchronize: new ElasticsearchSynchronize({\n context: this.manager.context,\n timer: this.manager.timer\n }),\n fetcher: new ElasticsearchFetcher({\n client: this.manager.elasticsearch\n })\n });\n try {\n return await sync.run(input);\n } catch (ex) {\n return this.manager.response.error(ex);\n }\n }\n /**\n * We are done.\n */\n return this.manager.response.done();\n }\n\n private validateFlow(input: IDataSynchronizationInput): void {\n if (!input.flow) {\n throw new Error(`Missing \"flow\" in the input.`);\n } else if (this.factories[input.flow]) {\n return;\n }\n throw new Error(\n `Invalid flow \"${input.flow}\". Allowed flows: ${Object.keys(this.factories).join(\n \", \"\n )}.`\n );\n }\n}\n"],"mappings":";;;;;;AAMA,IAAAA,yBAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAQO,MAAME,6BAA6B,CAAC;EAKhCC,WAAWA,CAACC,MAA4C,EAAE;IAC7D,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC7B,IAAI,CAACC,YAAY,GAAGF,MAAM,CAACE,YAAY;IACvC,IAAI,CAACC,SAAS,GAAGH,MAAM,CAACG,SAAS;EACrC;EAEA,MAAaC,GAAGA,CAACC,KAAgC,EAAE;IAC/C,IAAI,CAACC,YAAY,CAACD,KAAK,CAAC;IACxB;AACR;AACA;IACQ;IACA,IAAIA,KAAK,CAACE,IAAI,KAAK,yBAAyB,IAAI,CAACF,KAAK,CAACG,uBAAuB,EAAEC,QAAQ,EAAE;MACtF,MAAMC,IAAI,GAAG,IAAI,CAACP,SAAS,CAACK,uBAAuB,CAAC;QAChDP,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,YAAY,EAAE,IAAI,CAACA,YAAY;QAC/BS,WAAW,EAAE,IAAIC,kDAAwB,CAAC;UACtCC,OAAO,EAAE,IAAI,CAACZ,OAAO,CAACY,OAAO;UAC7BC,KAAK,EAAE,IAAI,CAACb,OAAO,CAACa;QACxB,CAAC,CAAC;QACFC,OAAO,EAAE,IAAIC,0CAAoB,CAAC;UAC9BC,MAAM,EAAE,IAAI,CAAChB,OAAO,CAACiB;QACzB,CAAC;MACL,CAAC,CAAC;MACF,IAAI;QACA,OAAO,MAAMR,IAAI,CAACN,GAAG,CAACC,KAAK,CAAC;MAChC,CAAC,CAAC,OAAOc,EAAE,EAAE;QACT,OAAO,IAAI,CAAClB,OAAO,CAACmB,QAAQ,CAACC,KAAK,CAACF,EAAE,CAAC;MAC1C;IACJ;IACA;AACR;AACA;IACQ,OAAO,IAAI,CAAClB,OAAO,CAACmB,QAAQ,CAACE,IAAI,CAAC,CAAC;EACvC;EAEQhB,YAAYA,CAACD,KAAgC,EAAQ;IACzD,IAAI,CAACA,KAAK,CAACE,IAAI,EAAE;MACb,MAAM,IAAIgB,KAAK,CAAC,8BAA8B,CAAC;IACnD,CAAC,MAAM,IAAI,IAAI,CAACpB,SAAS,CAACE,KAAK,CAACE,IAAI,CAAC,EAAE;MACnC;IACJ;IACA,MAAM,IAAIgB,KAAK,CACX,iBAAiBlB,KAAK,CAACE,IAAI,qBAAqBiB,MAAM,CAACC,IAAI,CAAC,IAAI,CAACtB,SAAS,CAAC,CAACuB,IAAI,CAC5E,IACJ,CAAC,GACL,CAAC;EACL;AACJ;AAACC,OAAA,CAAA7B,6BAAA,GAAAA,6BAAA","ignoreList":[]}
|
|
@@ -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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EntityType","exports","getElasticsearchEntityType","params","index","includes","CMS","endsWith","PAGE_BUILDER","SK","startsWith","FORM_BUILDER_SUBMISSION","FORM_BUILDER","Error","JSON","stringify"],"sources":["getElasticsearchEntityType.ts"],"sourcesContent":["export enum EntityType {\n CMS = \"headless-cms\",\n PAGE_BUILDER = \"page-builder\",\n FORM_BUILDER = \"form-builder\",\n FORM_BUILDER_SUBMISSION = \"form-builder-submission\"\n}\n\nexport interface IGetElasticsearchEntityTypeParams {\n SK: string;\n index: string;\n}\n\nexport const getElasticsearchEntityType = (\n params: IGetElasticsearchEntityTypeParams\n): EntityType => {\n if (params.index.includes(\"-headless-cms-\")) {\n return EntityType.CMS;\n } else if (params.index.endsWith(\"-page-builder\")) {\n return EntityType.PAGE_BUILDER;\n } else if (params.index.endsWith(\"-form-builder\")) {\n if (params.SK.startsWith(\"FS#\")) {\n return EntityType.FORM_BUILDER_SUBMISSION;\n }\n return EntityType.FORM_BUILDER;\n }\n throw new Error(`Unknown entity type for item \"${JSON.stringify(params)}\".`);\n};\n"],"mappings":";;;;;;IAAYA,UAAU,GAAAC,OAAA,CAAAD,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAYf,MAAME,0BAA0B,GACnCC,MAAyC,IAC5B;EACb,IAAIA,MAAM,CAACC,KAAK,CAACC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;IACzC,OAAOL,UAAU,CAACM,GAAG;EACzB,CAAC,MAAM,IAAIH,MAAM,CAACC,KAAK,CAACG,QAAQ,CAAC,eAAe,CAAC,EAAE;IAC/C,OAAOP,UAAU,CAACQ,YAAY;EAClC,CAAC,MAAM,IAAIL,MAAM,CAACC,KAAK,CAACG,QAAQ,CAAC,eAAe,CAAC,EAAE;IAC/C,IAAIJ,MAAM,CAACM,EAAE,CAACC,UAAU,CAAC,KAAK,CAAC,EAAE;MAC7B,OAAOV,UAAU,CAACW,uBAAuB;IAC7C;IACA,OAAOX,UAAU,CAACY,YAAY;EAClC;EACA,MAAM,IAAIC,KAAK,
|
|
1
|
+
{"version":3,"names":["EntityType","exports","getElasticsearchEntityType","params","index","includes","CMS","endsWith","PAGE_BUILDER","SK","startsWith","FORM_BUILDER_SUBMISSION","FORM_BUILDER","Error","JSON","stringify"],"sources":["getElasticsearchEntityType.ts"],"sourcesContent":["export enum EntityType {\n CMS = \"headless-cms\",\n PAGE_BUILDER = \"page-builder\",\n FORM_BUILDER = \"form-builder\",\n FORM_BUILDER_SUBMISSION = \"form-builder-submission\"\n}\n\nexport interface IGetElasticsearchEntityTypeParams {\n SK: string;\n index: string;\n}\n\nexport const getElasticsearchEntityType = (\n params: IGetElasticsearchEntityTypeParams\n): EntityType => {\n if (params.index.includes(\"-headless-cms-\")) {\n return EntityType.CMS;\n } else if (params.index.endsWith(\"-page-builder\")) {\n return EntityType.PAGE_BUILDER;\n } else if (params.index.endsWith(\"-form-builder\")) {\n if (params.SK.startsWith(\"FS#\")) {\n return EntityType.FORM_BUILDER_SUBMISSION;\n }\n return EntityType.FORM_BUILDER;\n }\n throw new Error(`Unknown entity type for item \"${JSON.stringify(params)}\".`);\n};\n"],"mappings":";;;;;;IAAYA,UAAU,GAAAC,OAAA,CAAAD,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAYf,MAAME,0BAA0B,GACnCC,MAAyC,IAC5B;EACb,IAAIA,MAAM,CAACC,KAAK,CAACC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;IACzC,OAAOL,UAAU,CAACM,GAAG;EACzB,CAAC,MAAM,IAAIH,MAAM,CAACC,KAAK,CAACG,QAAQ,CAAC,eAAe,CAAC,EAAE;IAC/C,OAAOP,UAAU,CAACQ,YAAY;EAClC,CAAC,MAAM,IAAIL,MAAM,CAACC,KAAK,CAACG,QAAQ,CAAC,eAAe,CAAC,EAAE;IAC/C,IAAIJ,MAAM,CAACM,EAAE,CAACC,UAAU,CAAC,KAAK,CAAC,EAAE;MAC7B,OAAOV,UAAU,CAACW,uBAAuB;IAC7C;IACA,OAAOX,UAAU,CAACY,YAAY;EAClC;EACA,MAAM,IAAIC,KAAK,CAAC,iCAAiCC,IAAI,CAACC,SAAS,CAACZ,MAAM,CAAC,IAAI,CAAC;AAChF,CAAC;AAACF,OAAA,CAAAC,0BAAA,GAAAA,0BAAA","ignoreList":[]}
|
|
@@ -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,
|
|
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":[]}
|
|
@@ -25,10 +25,10 @@ const createDataSynchronization = params => {
|
|
|
25
25
|
}) {
|
|
26
26
|
const {
|
|
27
27
|
Manager
|
|
28
|
-
} = await import(
|
|
28
|
+
} = await import(/* webpackChunkName: "Manager" */"../Manager");
|
|
29
29
|
const {
|
|
30
30
|
IndexManager
|
|
31
|
-
} = await import(
|
|
31
|
+
} = await import(/* webpackChunkName: "IndexManager" */"../../settings");
|
|
32
32
|
const manager = new Manager({
|
|
33
33
|
elasticsearchClient: params?.elasticsearchClient,
|
|
34
34
|
documentClient: params?.documentClient,
|
|
@@ -42,10 +42,10 @@ const createDataSynchronization = params => {
|
|
|
42
42
|
const indexManager = new IndexManager(manager.elasticsearch, {});
|
|
43
43
|
const {
|
|
44
44
|
DataSynchronizationTaskRunner
|
|
45
|
-
} = await import(
|
|
45
|
+
} = await import(/* webpackChunkName: "DataSynchronizationTaskRunner" */"./DataSynchronizationTaskRunner");
|
|
46
46
|
const {
|
|
47
47
|
createFactories
|
|
48
|
-
} = await import(
|
|
48
|
+
} = await import(/* webpackChunkName: "createFactories" */"./createFactories");
|
|
49
49
|
try {
|
|
50
50
|
const dataSynchronization = new DataSynchronizationTaskRunner({
|
|
51
51
|
manager: manager,
|
|
@@ -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,
|
|
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 +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,
|
|
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":[]}
|
|
@@ -20,13 +20,13 @@ const createEnableIndexingTask = params => {
|
|
|
20
20
|
}) => {
|
|
21
21
|
const {
|
|
22
22
|
Manager
|
|
23
|
-
} = await import(
|
|
23
|
+
} = await import(/* webpackChunkName: "Manager" */"../Manager");
|
|
24
24
|
const {
|
|
25
25
|
IndexManager
|
|
26
|
-
} = await import(
|
|
26
|
+
} = await import(/* webpackChunkName: "IndexManager" */"../../settings");
|
|
27
27
|
const {
|
|
28
28
|
EnableIndexingTaskRunner
|
|
29
|
-
} = await import(
|
|
29
|
+
} = await import(/* webpackChunkName: "EnableIndexingTaskRunner" */"./EnableIndexingTaskRunner");
|
|
30
30
|
const manager = new Manager({
|
|
31
31
|
elasticsearchClient: params?.elasticsearchClient,
|
|
32
32
|
documentClient: params?.documentClient,
|
|
@@ -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,
|
|
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 +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 {\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":[]}
|
|
@@ -20,13 +20,13 @@ const createElasticsearchReindexingTask = params => {
|
|
|
20
20
|
}) => {
|
|
21
21
|
const {
|
|
22
22
|
Manager
|
|
23
|
-
} = await import(
|
|
23
|
+
} = await import(/* webpackChunkName: "Manager" */"../Manager");
|
|
24
24
|
const {
|
|
25
25
|
IndexManager
|
|
26
|
-
} = await import(
|
|
26
|
+
} = await import(/* webpackChunkName: "IndexManager" */"../../settings");
|
|
27
27
|
const {
|
|
28
28
|
ReindexingTaskRunner
|
|
29
|
-
} = await import(
|
|
29
|
+
} = await import(/* webpackChunkName: "ReindexingTaskRunner" */"./ReindexingTaskRunner");
|
|
30
30
|
const manager = new Manager({
|
|
31
31
|
elasticsearchClient: params?.elasticsearchClient,
|
|
32
32
|
documentClient: params?.documentClient,
|
|
@@ -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,
|
|
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":[]}
|
package/types.d.ts
CHANGED
|
@@ -6,7 +6,8 @@ import { createTable } from "./definitions";
|
|
|
6
6
|
import type { BatchReadItem, IEntity } from "@webiny/db-dynamodb";
|
|
7
7
|
import type { ITimer } from "@webiny/handler-aws";
|
|
8
8
|
import type { GenericRecord } from "@webiny/api/types";
|
|
9
|
-
|
|
9
|
+
import { Context as LoggerContext } from "@webiny/api-log/types";
|
|
10
|
+
export interface Context extends ElasticsearchContext, TasksContext, LoggerContext {
|
|
10
11
|
}
|
|
11
12
|
export interface IElasticsearchTaskConfig {
|
|
12
13
|
documentClient?: DynamoDBDocument;
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ElasticsearchContext } from \"@webiny/api-elasticsearch/types\";\nimport type {\n Context as TasksContext,\n IIsCloseToTimeoutCallable,\n ITaskManagerStore,\n ITaskResponse,\n ITaskResponseDoneResultOutput\n} from \"@webiny/tasks/types\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport type { Client } from \"@webiny/api-elasticsearch\";\nimport { createTable } from \"~/definitions\";\nimport type { BatchReadItem, IEntity } from \"@webiny/db-dynamodb\";\nimport type { ITimer } from \"@webiny/handler-aws\";\nimport type { GenericRecord } from \"@webiny/api/types\";\n\nexport interface Context extends ElasticsearchContext, TasksContext {}\n\nexport interface IElasticsearchTaskConfig {\n documentClient?: DynamoDBDocument;\n elasticsearchClient?: Client;\n}\n\nexport interface IElasticsearchIndexingTaskValuesKeys {\n PK: string;\n SK: string;\n}\n\nexport interface IIndexSettingsValues {\n numberOfReplicas: number;\n refreshInterval: string;\n}\n\nexport interface IElasticsearchIndexingTaskValuesSettings {\n [key: string]: IIndexSettingsValues;\n}\n\nexport interface IElasticsearchIndexingTaskValues {\n matching?: string;\n limit?: number;\n keys?: IElasticsearchIndexingTaskValuesKeys;\n settings?: IElasticsearchIndexingTaskValuesSettings;\n}\n\nexport interface AugmentedError extends Error {\n data?: GenericRecord;\n [key: string]: any;\n}\n\nexport interface IDynamoDbElasticsearchRecord {\n PK: string;\n SK: string;\n TYPE?: string;\n index: string;\n _et?: string;\n entity: string;\n data: GenericRecord;\n modified: string;\n}\n\nexport interface IManager<\n T,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n readonly documentClient: DynamoDBDocument;\n readonly elasticsearch: Client;\n readonly context: Context;\n readonly table: ReturnType<typeof createTable>;\n readonly isCloseToTimeout: IIsCloseToTimeoutCallable;\n readonly isAborted: () => boolean;\n readonly response: ITaskResponse<T, O>;\n readonly store: ITaskManagerStore<T>;\n readonly timer: ITimer;\n\n getEntity: (name: string) => IEntity;\n\n read<T>(items: BatchReadItem[]): Promise<T[]>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ElasticsearchContext } from \"@webiny/api-elasticsearch/types\";\nimport type {\n Context as TasksContext,\n IIsCloseToTimeoutCallable,\n ITaskManagerStore,\n ITaskResponse,\n ITaskResponseDoneResultOutput\n} from \"@webiny/tasks/types\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport type { Client } from \"@webiny/api-elasticsearch\";\nimport { createTable } from \"~/definitions\";\nimport type { BatchReadItem, IEntity } from \"@webiny/db-dynamodb\";\nimport type { ITimer } from \"@webiny/handler-aws\";\nimport type { GenericRecord } from \"@webiny/api/types\";\nimport { Context as LoggerContext } from \"@webiny/api-log/types\";\n\nexport interface Context extends ElasticsearchContext, TasksContext, LoggerContext {}\n\nexport interface IElasticsearchTaskConfig {\n documentClient?: DynamoDBDocument;\n elasticsearchClient?: Client;\n}\n\nexport interface IElasticsearchIndexingTaskValuesKeys {\n PK: string;\n SK: string;\n}\n\nexport interface IIndexSettingsValues {\n numberOfReplicas: number;\n refreshInterval: string;\n}\n\nexport interface IElasticsearchIndexingTaskValuesSettings {\n [key: string]: IIndexSettingsValues;\n}\n\nexport interface IElasticsearchIndexingTaskValues {\n matching?: string;\n limit?: number;\n keys?: IElasticsearchIndexingTaskValuesKeys;\n settings?: IElasticsearchIndexingTaskValuesSettings;\n}\n\nexport interface AugmentedError extends Error {\n data?: GenericRecord;\n [key: string]: any;\n}\n\nexport interface IDynamoDbElasticsearchRecord {\n PK: string;\n SK: string;\n TYPE?: string;\n index: string;\n _et?: string;\n entity: string;\n data: GenericRecord;\n modified: string;\n}\n\nexport interface IManager<\n T,\n O extends ITaskResponseDoneResultOutput = ITaskResponseDoneResultOutput\n> {\n readonly documentClient: DynamoDBDocument;\n readonly elasticsearch: Client;\n readonly context: Context;\n readonly table: ReturnType<typeof createTable>;\n readonly isCloseToTimeout: IIsCloseToTimeoutCallable;\n readonly isAborted: () => boolean;\n readonly response: ITaskResponse<T, O>;\n readonly store: ITaskManagerStore<T>;\n readonly timer: ITimer;\n\n getEntity: (name: string) => IEntity;\n\n read<T>(items: BatchReadItem[]): Promise<T[]>;\n}\n"],"mappings":"","ignoreList":[]}
|