@exabugs/dynamodb-client 1.7.0 → 1.8.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/CHANGELOG.md +12 -0
- package/dist/scripts/operations/bulkRecordRepair.js +2 -1
- package/dist/scripts/operations/bulkRecordRepair.js.map +1 -1
- package/dist/server/handler.cjs +51 -31
- package/dist/server/handler.cjs.map +2 -2
- package/dist/server/media-handler.cjs +2 -2
- package/dist/server/media-process-handler-dlq.cjs +50 -30
- package/dist/server/media-process-handler-dlq.cjs.map +2 -2
- package/dist/server/media-process-handler.cjs +50 -30
- package/dist/server/media-process-handler.cjs.map +2 -2
- package/dist/server/operations/find/idQuery.d.ts.map +1 -1
- package/dist/server/operations/find/idQuery.js +57 -39
- package/dist/server/operations/find/idQuery.js.map +1 -1
- package/dist/sharp-layer.zip +0 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// @exabugs/dynamodb-client v1.
|
|
2
|
-
// Built: 2026-10-
|
|
1
|
+
// @exabugs/dynamodb-client v1.8.0
|
|
2
|
+
// Built: 2026-10-11T23:03:45.636Z
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -46287,7 +46287,14 @@ async function executeInQuery(resource, targetIds, sort, requestId) {
|
|
|
46287
46287
|
}
|
|
46288
46288
|
async function executeAllRecordsQuery(resource, sort, perPage, nextToken, parsedFilters, requestId) {
|
|
46289
46289
|
if (parsedFilters.length > 0) {
|
|
46290
|
-
return executeAllRecordsQueryFullScan(
|
|
46290
|
+
return executeAllRecordsQueryFullScan(
|
|
46291
|
+
resource,
|
|
46292
|
+
sort,
|
|
46293
|
+
perPage,
|
|
46294
|
+
nextToken,
|
|
46295
|
+
parsedFilters,
|
|
46296
|
+
requestId
|
|
46297
|
+
);
|
|
46291
46298
|
}
|
|
46292
46299
|
const dbClient2 = getDBClient();
|
|
46293
46300
|
const tableName = getTableName();
|
|
@@ -46359,19 +46366,20 @@ async function executeAllRecordsQueryFullScan(resource, sort, perPage, nextToken
|
|
|
46359
46366
|
const dbClient2 = getDBClient();
|
|
46360
46367
|
const tableName = getTableName();
|
|
46361
46368
|
const costTracker = new CostTracker();
|
|
46362
|
-
const offset = nextToken ? decodeOffsetToken(nextToken) ?? 0 : 0;
|
|
46363
|
-
logger4.debug("Executing full scan query (ID sort)", {
|
|
46364
|
-
requestId,
|
|
46365
|
-
resource,
|
|
46366
|
-
offset
|
|
46367
|
-
});
|
|
46368
|
-
const allRecords = [];
|
|
46369
46369
|
let exclusiveStartKey;
|
|
46370
|
-
|
|
46371
|
-
|
|
46370
|
+
if (nextToken) {
|
|
46371
|
+
const decoded = decodeNextToken(nextToken);
|
|
46372
|
+
exclusiveStartKey = { PK: decoded.PK, SK: decoded.SK };
|
|
46373
|
+
}
|
|
46374
|
+
const page = [];
|
|
46375
|
+
let lastReturned;
|
|
46376
|
+
let hasNextPage = false;
|
|
46377
|
+
let scanned = 0;
|
|
46372
46378
|
let iterations = 0;
|
|
46373
|
-
|
|
46374
|
-
|
|
46379
|
+
let previousKeySignature;
|
|
46380
|
+
let chunkSize = SCAN_CHUNK_INITIAL;
|
|
46381
|
+
scan: while (true) {
|
|
46382
|
+
if (++iterations > SCAN_MAX_ITERATIONS) {
|
|
46375
46383
|
logger4.error("executeAllRecordsQueryFullScan: \u6700\u5927\u53CD\u5FA9\u56DE\u6570\u3092\u8D85\u904E\u3057\u305F\u305F\u3081\u4E2D\u65AD", {
|
|
46376
46384
|
requestId,
|
|
46377
46385
|
resource,
|
|
@@ -46389,8 +46397,7 @@ async function executeAllRecordsQueryFullScan(resource, sort, perPage, nextToken
|
|
|
46389
46397
|
":skPrefix": "id#"
|
|
46390
46398
|
},
|
|
46391
46399
|
ScanIndexForward: sort.order === "ASC",
|
|
46392
|
-
Limit:
|
|
46393
|
-
// 大きめの Limit でループ回数を最小化
|
|
46400
|
+
Limit: chunkSize,
|
|
46394
46401
|
ExclusiveStartKey: exclusiveStartKey,
|
|
46395
46402
|
ConsistentRead: true,
|
|
46396
46403
|
ReturnConsumedCapacity: "TOTAL"
|
|
@@ -46399,10 +46406,24 @@ async function executeAllRecordsQueryFullScan(resource, sort, perPage, nextToken
|
|
|
46399
46406
|
"Query"
|
|
46400
46407
|
);
|
|
46401
46408
|
costTracker.add(queryResult.ConsumedCapacity);
|
|
46402
|
-
|
|
46409
|
+
for (const row of queryResult.Items || []) {
|
|
46410
|
+
scanned++;
|
|
46411
|
+
if (!matchesAllFilters(extractCleanRecord(row), parsedFilters)) {
|
|
46412
|
+
continue;
|
|
46413
|
+
}
|
|
46414
|
+
if (page.length >= perPage) {
|
|
46415
|
+
hasNextPage = true;
|
|
46416
|
+
break scan;
|
|
46417
|
+
}
|
|
46418
|
+
page.push(extractCleanRecord(row));
|
|
46419
|
+
lastReturned = { PK: row.PK, SK: row.SK };
|
|
46420
|
+
}
|
|
46403
46421
|
const nextKey = queryResult.LastEvaluatedKey;
|
|
46404
|
-
|
|
46405
|
-
|
|
46422
|
+
if (!nextKey) {
|
|
46423
|
+
break;
|
|
46424
|
+
}
|
|
46425
|
+
const nextKeySignature = `${nextKey.PK}#${nextKey.SK}`;
|
|
46426
|
+
if (nextKeySignature === previousKeySignature) {
|
|
46406
46427
|
logger4.error("executeAllRecordsQueryFullScan: \u540C\u4E00\u306ELastEvaluatedKey\u304C\u8FD4\u5374\u3055\u308C\u305F\u305F\u3081\u4E2D\u65AD", {
|
|
46407
46428
|
requestId,
|
|
46408
46429
|
resource,
|
|
@@ -46412,28 +46433,24 @@ async function executeAllRecordsQueryFullScan(resource, sort, perPage, nextToken
|
|
|
46412
46433
|
}
|
|
46413
46434
|
previousKeySignature = nextKeySignature;
|
|
46414
46435
|
exclusiveStartKey = nextKey;
|
|
46415
|
-
|
|
46416
|
-
|
|
46417
|
-
|
|
46418
|
-
|
|
46419
|
-
const hasNextPage = offset + perPage < items.length;
|
|
46420
|
-
const nextTokenValue = hasNextPage ? encodeOffsetToken(offset + perPage) : void 0;
|
|
46421
|
-
logger4.info("ID full scan query succeeded", {
|
|
46436
|
+
chunkSize = Math.min(chunkSize * 2, SCAN_CHUNK_MAX);
|
|
46437
|
+
}
|
|
46438
|
+
const nextTokenValue = hasNextPage && lastReturned ? encodeNextToken(lastReturned.PK, lastReturned.SK) : void 0;
|
|
46439
|
+
logger4.info("ID filtered scan query succeeded", {
|
|
46422
46440
|
requestId,
|
|
46423
46441
|
resource,
|
|
46424
|
-
|
|
46425
|
-
offset,
|
|
46442
|
+
scanned,
|
|
46426
46443
|
returned: page.length,
|
|
46427
46444
|
hasNextPage
|
|
46428
46445
|
});
|
|
46429
46446
|
return {
|
|
46430
46447
|
items: page,
|
|
46431
|
-
pageInfo: { hasNextPage, hasPreviousPage:
|
|
46448
|
+
pageInfo: { hasNextPage, hasPreviousPage: !!nextToken },
|
|
46432
46449
|
...nextTokenValue && { nextToken: nextTokenValue },
|
|
46433
46450
|
consumedCapacity: costTracker.getAggregated()
|
|
46434
46451
|
};
|
|
46435
46452
|
}
|
|
46436
|
-
var import_lib_dynamodb2, logger4;
|
|
46453
|
+
var import_lib_dynamodb2, logger4, SCAN_CHUNK_INITIAL, SCAN_CHUNK_MAX, SCAN_MAX_ITERATIONS;
|
|
46437
46454
|
var init_idQuery = __esm({
|
|
46438
46455
|
"src/server/operations/find/idQuery.ts"() {
|
|
46439
46456
|
"use strict";
|
|
@@ -46451,6 +46468,9 @@ var init_idQuery = __esm({
|
|
|
46451
46468
|
__name(executeSpecificIdQuery, "executeSpecificIdQuery");
|
|
46452
46469
|
__name(executeInQuery, "executeInQuery");
|
|
46453
46470
|
__name(executeAllRecordsQuery, "executeAllRecordsQuery");
|
|
46471
|
+
SCAN_CHUNK_INITIAL = 100;
|
|
46472
|
+
SCAN_CHUNK_MAX = 1e3;
|
|
46473
|
+
SCAN_MAX_ITERATIONS = 1e4;
|
|
46454
46474
|
__name(executeAllRecordsQueryFullScan, "executeAllRecordsQueryFullScan");
|
|
46455
46475
|
}
|
|
46456
46476
|
});
|