@webiny/api-opensearch-aws 0.0.0-unstable.7c2def32a7 → 0.0.0-unstable.a85ef555b2
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-opensearch-aws",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.a85ef555b2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -15,15 +15,15 @@
|
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@opensearch-project/opensearch": "3.6.0",
|
|
18
|
-
"@webiny/api": "0.0.0-unstable.
|
|
19
|
-
"@webiny/api-opensearch": "0.0.0-unstable.
|
|
20
|
-
"@webiny/aws-sdk": "0.0.0-unstable.
|
|
21
|
-
"@webiny/db-dynamodb": "0.0.0-unstable.
|
|
22
|
-
"@webiny/error": "0.0.0-unstable.
|
|
23
|
-
"@webiny/feature": "0.0.0-unstable.
|
|
18
|
+
"@webiny/api": "0.0.0-unstable.a85ef555b2",
|
|
19
|
+
"@webiny/api-opensearch": "0.0.0-unstable.a85ef555b2",
|
|
20
|
+
"@webiny/aws-sdk": "0.0.0-unstable.a85ef555b2",
|
|
21
|
+
"@webiny/db-dynamodb": "0.0.0-unstable.a85ef555b2",
|
|
22
|
+
"@webiny/error": "0.0.0-unstable.a85ef555b2",
|
|
23
|
+
"@webiny/feature": "0.0.0-unstable.a85ef555b2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@webiny/build-tools": "0.0.0-unstable.
|
|
26
|
+
"@webiny/build-tools": "0.0.0-unstable.a85ef555b2",
|
|
27
27
|
"rimraf": "6.1.3",
|
|
28
28
|
"typescript": "7.0.2",
|
|
29
29
|
"vitest": "4.1.11"
|
package/testing/processing.js
CHANGED
|
@@ -73,15 +73,7 @@ const processBatchWrite = async (documentClient, handler, params)=>{
|
|
|
73
73
|
Key: DeleteRequest.Key,
|
|
74
74
|
TableName: process.env.DB_TABLE_OPENSEARCH
|
|
75
75
|
});
|
|
76
|
-
if (Item)
|
|
77
|
-
if (!Item.index) {
|
|
78
|
-
const { PK, SK } = Item;
|
|
79
|
-
throw new Error(`Missing index value on the record in the elasticsearch table "${process.env.DB_TABLE_OPENSEARCH}" with keys PK "${PK}" and SK "${SK}". Make sure that you stored Elasticsearch entry in the Elasticsearch table.`);
|
|
80
|
-
}
|
|
81
|
-
} else {
|
|
82
|
-
const { PK, SK } = DeleteRequest.Key;
|
|
83
|
-
throw new Error(`Missing record in the elasticsearch table "${process.env.DB_TABLE_OPENSEARCH}" with keys PK "${PK}" and SK "${SK}". Make sure that record you are deleting is stored in the Elasticsearch table.`);
|
|
84
|
-
}
|
|
76
|
+
if (!Item || !Item.index) continue;
|
|
85
77
|
const record = createDynamoStreamRecord("REMOVE", {
|
|
86
78
|
Keys: DeleteRequest.Key,
|
|
87
79
|
OldImage: Item
|
|
@@ -100,6 +92,7 @@ const processBatchWrite = async (documentClient, handler, params)=>{
|
|
|
100
92
|
records.push(record);
|
|
101
93
|
}
|
|
102
94
|
}
|
|
95
|
+
if (0 === records.length) return;
|
|
103
96
|
await handler(createDynamoStreamEvent(...records));
|
|
104
97
|
};
|
|
105
98
|
const processing = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing/processing.js","sources":["../../src/testing/processing.ts"],"sourcesContent":["import { marshall } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { PutCommand } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { UpdateCommand } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { DeleteCommand } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { BatchWriteCommand } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\n\nconst streamTableName = process.env.DB_TABLE_OPENSEARCH;\n\nconst isOpenSearchStreamTable = (table: string) => {\n return table === streamTableName;\n};\n\nconst createMarshalledObject = (target: Record<string, unknown> | undefined) => {\n if (!target) {\n return undefined;\n }\n return marshall(target, {\n convertEmptyValues: true,\n removeUndefinedValues: true\n });\n};\n\nexport const createDynamoStreamEvent = (...records: Record<string, unknown>[]) => {\n return { Records: records };\n};\n\nexport const createDynamoStreamRecord = (\n eventName: string,\n data: {\n Keys?: Record<string, unknown>;\n NewImage?: Record<string, unknown>;\n OldImage?: Record<string, unknown>;\n } = {}\n) => {\n const { Keys = {}, NewImage = {}, OldImage = {} } = data;\n return {\n eventID: \"2cb5ad3ffabca3639e4f7858e3bdd138\",\n eventName,\n eventVersion: \"1.1\",\n eventSource: \"aws:dynamodb\",\n awsRegion: \"eu-central-1\",\n dynamodb: {\n ApproximateCreationDateTime: 1613939165,\n Keys: marshall(Keys),\n NewImage: createMarshalledObject(NewImage),\n OldImage: createMarshalledObject(OldImage),\n SequenceNumber: \"300000000029551639656\",\n SizeBytes: 14,\n StreamViewType: \"NEW_AND_OLD_IMAGES\"\n },\n eventSourceARN:\n \"arn:aws:dynamodb:eu-central-1:111111111111:table/streams-11111111/stream/2021-02-21T20:12:44.976\"\n };\n};\n\ntype StreamHandler = (event: Record<string, unknown>) => Promise<void>;\n\nconst processDelete = async (\n documentClient: DynamoDBDocument,\n handler: StreamHandler,\n params: Record<string, any>\n) => {\n if (isOpenSearchStreamTable(params.input?.TableName) === false) {\n return;\n }\n const { Key, TableName } = params.input;\n const { Item } = await documentClient.get({ Key, TableName });\n\n if (!Item || !Item.index) {\n return;\n }\n const record = createDynamoStreamRecord(\"REMOVE\", { Keys: Key, OldImage: Item });\n const event = createDynamoStreamEvent(record);\n\n await handler(event);\n};\n\nconst processPut = async (\n documentClient: DynamoDBDocument,\n handler: StreamHandler,\n params: Record<string, any>\n) => {\n const tableName = params.input?.TableName;\n if (isOpenSearchStreamTable(tableName) === false) {\n return;\n }\n\n const item = params.input.Item;\n if (!item) {\n return;\n }\n const { PK, SK } = item;\n\n const record = createDynamoStreamRecord(\"INSERT\", { Keys: { PK, SK }, NewImage: item });\n const event = createDynamoStreamEvent(record);\n\n await handler(event);\n};\n\nconst processBatchWrite = async (\n documentClient: DynamoDBDocument,\n handler: StreamHandler,\n params: Record<string, any>\n) => {\n const operations = params?.input?.RequestItems?.[streamTableName!];\n if (!Array.isArray(operations)) {\n return;\n }\n\n const records = [];\n for (const operation of operations) {\n const { PutRequest, DeleteRequest } = operation;\n if (DeleteRequest) {\n const { Item } = await documentClient.get({\n Key: DeleteRequest.Key,\n TableName: process.env.DB_TABLE_OPENSEARCH\n });\n\n
|
|
1
|
+
{"version":3,"file":"testing/processing.js","sources":["../../src/testing/processing.ts"],"sourcesContent":["import { marshall } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { PutCommand } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { UpdateCommand } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { DeleteCommand } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { BatchWriteCommand } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\n\nconst streamTableName = process.env.DB_TABLE_OPENSEARCH;\n\nconst isOpenSearchStreamTable = (table: string) => {\n return table === streamTableName;\n};\n\nconst createMarshalledObject = (target: Record<string, unknown> | undefined) => {\n if (!target) {\n return undefined;\n }\n return marshall(target, {\n convertEmptyValues: true,\n removeUndefinedValues: true\n });\n};\n\nexport const createDynamoStreamEvent = (...records: Record<string, unknown>[]) => {\n return { Records: records };\n};\n\nexport const createDynamoStreamRecord = (\n eventName: string,\n data: {\n Keys?: Record<string, unknown>;\n NewImage?: Record<string, unknown>;\n OldImage?: Record<string, unknown>;\n } = {}\n) => {\n const { Keys = {}, NewImage = {}, OldImage = {} } = data;\n return {\n eventID: \"2cb5ad3ffabca3639e4f7858e3bdd138\",\n eventName,\n eventVersion: \"1.1\",\n eventSource: \"aws:dynamodb\",\n awsRegion: \"eu-central-1\",\n dynamodb: {\n ApproximateCreationDateTime: 1613939165,\n Keys: marshall(Keys),\n NewImage: createMarshalledObject(NewImage),\n OldImage: createMarshalledObject(OldImage),\n SequenceNumber: \"300000000029551639656\",\n SizeBytes: 14,\n StreamViewType: \"NEW_AND_OLD_IMAGES\"\n },\n eventSourceARN:\n \"arn:aws:dynamodb:eu-central-1:111111111111:table/streams-11111111/stream/2021-02-21T20:12:44.976\"\n };\n};\n\ntype StreamHandler = (event: Record<string, unknown>) => Promise<void>;\n\nconst processDelete = async (\n documentClient: DynamoDBDocument,\n handler: StreamHandler,\n params: Record<string, any>\n) => {\n if (isOpenSearchStreamTable(params.input?.TableName) === false) {\n return;\n }\n const { Key, TableName } = params.input;\n const { Item } = await documentClient.get({ Key, TableName });\n\n if (!Item || !Item.index) {\n return;\n }\n const record = createDynamoStreamRecord(\"REMOVE\", { Keys: Key, OldImage: Item });\n const event = createDynamoStreamEvent(record);\n\n await handler(event);\n};\n\nconst processPut = async (\n documentClient: DynamoDBDocument,\n handler: StreamHandler,\n params: Record<string, any>\n) => {\n const tableName = params.input?.TableName;\n if (isOpenSearchStreamTable(tableName) === false) {\n return;\n }\n\n const item = params.input.Item;\n if (!item) {\n return;\n }\n const { PK, SK } = item;\n\n const record = createDynamoStreamRecord(\"INSERT\", { Keys: { PK, SK }, NewImage: item });\n const event = createDynamoStreamEvent(record);\n\n await handler(event);\n};\n\nconst processBatchWrite = async (\n documentClient: DynamoDBDocument,\n handler: StreamHandler,\n params: Record<string, any>\n) => {\n const operations = params?.input?.RequestItems?.[streamTableName!];\n if (!Array.isArray(operations)) {\n return;\n }\n\n const records = [];\n for (const operation of operations) {\n const { PutRequest, DeleteRequest } = operation;\n if (DeleteRequest) {\n const { Item } = await documentClient.get({\n Key: DeleteRequest.Key,\n TableName: process.env.DB_TABLE_OPENSEARCH\n });\n\n // A missing record (or one without an index) emits no REMOVE record, like DynamoDB\n // streams for a delete of a missing item and like `processDelete`.\n if (!Item || !Item.index) {\n continue;\n }\n const record = createDynamoStreamRecord(\"REMOVE\", {\n Keys: DeleteRequest.Key,\n OldImage: Item\n });\n records.push(record);\n }\n\n if (PutRequest) {\n const { Item } = PutRequest;\n const record = createDynamoStreamRecord(\"INSERT\", {\n Keys: { PK: Item.PK, SK: Item.SK },\n NewImage: Item\n });\n records.push(record);\n }\n }\n if (records.length === 0) {\n return;\n }\n await handler(createDynamoStreamEvent(...records));\n};\n\nexport const processing: Record<\n string,\n (\n documentClient: DynamoDBDocument,\n handler: StreamHandler,\n params: Record<string, any>\n ) => Promise<void>\n> = {\n put: processPut,\n update: processPut,\n delete: processDelete,\n batchWrite: processBatchWrite\n};\n\nexport const getCommandName = (command: unknown): string | null => {\n if (!command) {\n return null;\n }\n if (command instanceof PutCommand) {\n return \"put\";\n } else if (command instanceof UpdateCommand) {\n return \"update\";\n } else if (command instanceof DeleteCommand) {\n return \"delete\";\n } else if (command instanceof BatchWriteCommand) {\n return \"batchWrite\";\n }\n return null;\n};\n"],"names":["streamTableName","process","isOpenSearchStreamTable","table","createMarshalledObject","target","marshall","createDynamoStreamEvent","records","createDynamoStreamRecord","eventName","data","Keys","NewImage","OldImage","processDelete","documentClient","handler","params","Key","TableName","Item","record","event","processPut","tableName","item","PK","SK","processBatchWrite","operations","Array","operation","PutRequest","DeleteRequest","processing","getCommandName","command","PutCommand","UpdateCommand","DeleteCommand","BatchWriteCommand"],"mappings":"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"}
|