@exabugs/dynamodb-client 0.3.7 → 0.4.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.
Files changed (147) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/client/Collection.d.ts +1 -1
  3. package/dist/client/Collection.d.ts.map +1 -1
  4. package/dist/client/FindCursor.d.ts +1 -1
  5. package/dist/client/FindCursor.d.ts.map +1 -1
  6. package/dist/index.d.ts +1 -7
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +4 -4
  9. package/dist/index.js.map +1 -1
  10. package/dist/server/handler.cjs +683 -553
  11. package/dist/server/handler.cjs.map +4 -4
  12. package/dist/server/handler.d.ts.map +1 -1
  13. package/dist/server/handler.js +1 -2
  14. package/dist/server/handler.js.map +1 -1
  15. package/dist/server/operations/deleteMany.js +1 -1
  16. package/dist/server/operations/deleteMany.js.map +1 -1
  17. package/dist/server/operations/deleteOne.js +1 -1
  18. package/dist/server/operations/deleteOne.js.map +1 -1
  19. package/dist/server/operations/find/handler.d.ts +21 -0
  20. package/dist/server/operations/find/handler.d.ts.map +1 -0
  21. package/dist/server/operations/find/handler.js +53 -0
  22. package/dist/server/operations/find/handler.js.map +1 -0
  23. package/dist/server/operations/find/idQuery.d.ts +16 -0
  24. package/dist/server/operations/find/idQuery.d.ts.map +1 -0
  25. package/dist/server/operations/find/idQuery.js +149 -0
  26. package/dist/server/operations/find/idQuery.js.map +1 -0
  27. package/dist/server/operations/find/index.d.ts +9 -0
  28. package/dist/server/operations/find/index.d.ts.map +1 -0
  29. package/dist/server/operations/find/index.js +9 -0
  30. package/dist/server/operations/find/index.js.map +1 -0
  31. package/dist/server/operations/find/shadowQuery.d.ts +16 -0
  32. package/dist/server/operations/find/shadowQuery.d.ts.map +1 -0
  33. package/dist/server/operations/find/shadowQuery.js +283 -0
  34. package/dist/server/operations/find/shadowQuery.js.map +1 -0
  35. package/dist/server/operations/find/types.d.ts +71 -0
  36. package/dist/server/operations/find/types.d.ts.map +1 -0
  37. package/dist/server/operations/find/types.js +5 -0
  38. package/dist/server/operations/find/types.js.map +1 -0
  39. package/dist/server/operations/find/utils.d.ts +37 -0
  40. package/dist/server/operations/find/utils.d.ts.map +1 -0
  41. package/dist/server/operations/find/utils.js +117 -0
  42. package/dist/server/operations/find/utils.js.map +1 -0
  43. package/dist/server/operations/find.d.ts +4 -14
  44. package/dist/server/operations/find.d.ts.map +1 -1
  45. package/dist/server/operations/find.js +2 -368
  46. package/dist/server/operations/find.js.map +1 -1
  47. package/dist/server/operations/findMany.js +1 -1
  48. package/dist/server/operations/findMany.js.map +1 -1
  49. package/dist/server/operations/findManyReference.d.ts.map +1 -1
  50. package/dist/server/operations/findManyReference.js +2 -1
  51. package/dist/server/operations/findManyReference.js.map +1 -1
  52. package/dist/server/operations/findOne.js +1 -1
  53. package/dist/server/operations/findOne.js.map +1 -1
  54. package/dist/server/operations/insertMany.d.ts.map +1 -1
  55. package/dist/server/operations/insertMany.js +2 -1
  56. package/dist/server/operations/insertMany.js.map +1 -1
  57. package/dist/server/operations/insertOne.d.ts.map +1 -1
  58. package/dist/server/operations/insertOne.js +2 -1
  59. package/dist/server/operations/insertOne.js.map +1 -1
  60. package/dist/server/operations/updateMany.d.ts.map +1 -1
  61. package/dist/server/operations/updateMany.js +2 -1
  62. package/dist/server/operations/updateMany.js.map +1 -1
  63. package/dist/server/operations/updateOne.d.ts.map +1 -1
  64. package/dist/server/operations/updateOne.js +2 -1
  65. package/dist/server/operations/updateOne.js.map +1 -1
  66. package/dist/server/query/converter.d.ts +1 -1
  67. package/dist/server/query/converter.d.ts.map +1 -1
  68. package/dist/server/shadow/differ.d.ts +3 -38
  69. package/dist/server/shadow/differ.d.ts.map +1 -1
  70. package/dist/server/shadow/differ.js +4 -62
  71. package/dist/server/shadow/differ.js.map +1 -1
  72. package/dist/server/shadow/generator.d.ts +1 -1
  73. package/dist/server/shadow/generator.d.ts.map +1 -1
  74. package/dist/server/shadow/generator.js +8 -19
  75. package/dist/server/shadow/generator.js.map +1 -1
  76. package/dist/server/shadow/types.d.ts +4 -17
  77. package/dist/server/shadow/types.d.ts.map +1 -1
  78. package/dist/server/shadow/types.js +5 -0
  79. package/dist/server/shadow/types.js.map +1 -1
  80. package/dist/server/utils/bulkOperations.d.ts +0 -15
  81. package/dist/server/utils/bulkOperations.d.ts.map +1 -1
  82. package/dist/server/utils/bulkOperations.js +1 -16
  83. package/dist/server/utils/bulkOperations.js.map +1 -1
  84. package/dist/server/utils/chunking.d.ts +0 -9
  85. package/dist/server/utils/chunking.d.ts.map +1 -1
  86. package/dist/server/utils/chunking.js +1 -10
  87. package/dist/server/utils/chunking.js.map +1 -1
  88. package/dist/server/utils/dynamodb.js +1 -1
  89. package/dist/server/utils/dynamodb.js.map +1 -1
  90. package/dist/shared/constants/dynamodb.d.ts +36 -0
  91. package/dist/shared/constants/dynamodb.d.ts.map +1 -0
  92. package/dist/shared/constants/dynamodb.js +100 -0
  93. package/dist/shared/constants/dynamodb.js.map +1 -0
  94. package/dist/shared/constants/http.d.ts +48 -0
  95. package/dist/shared/constants/http.d.ts.map +1 -0
  96. package/dist/shared/constants/http.js +48 -0
  97. package/dist/shared/constants/http.js.map +1 -0
  98. package/dist/shared/constants/index.d.ts +7 -0
  99. package/dist/shared/constants/index.d.ts.map +1 -0
  100. package/dist/shared/constants/index.js +7 -0
  101. package/dist/shared/constants/index.js.map +1 -0
  102. package/dist/shared/constants/lambda.d.ts +33 -0
  103. package/dist/shared/constants/lambda.d.ts.map +1 -0
  104. package/dist/shared/constants/lambda.js +33 -0
  105. package/dist/shared/constants/lambda.js.map +1 -0
  106. package/dist/{errors.d.ts → shared/errors/index.d.ts} +7 -1
  107. package/dist/shared/errors/index.d.ts.map +1 -0
  108. package/dist/{errors.js → shared/errors/index.js} +7 -1
  109. package/dist/shared/errors/index.js.map +1 -0
  110. package/dist/shared/index.d.ts +11 -0
  111. package/dist/shared/index.d.ts.map +1 -0
  112. package/dist/shared/index.js +15 -0
  113. package/dist/shared/index.js.map +1 -0
  114. package/dist/{types.d.ts → shared/types/index.d.ts} +7 -1
  115. package/dist/shared/types/index.d.ts.map +1 -0
  116. package/dist/shared/types/index.js +8 -0
  117. package/dist/shared/types/index.js.map +1 -0
  118. package/dist/shared/utils/dynamodb.d.ts +18 -0
  119. package/dist/shared/utils/dynamodb.d.ts.map +1 -0
  120. package/dist/shared/utils/dynamodb.js +32 -0
  121. package/dist/shared/utils/dynamodb.js.map +1 -0
  122. package/dist/shared/utils/index.d.ts +8 -0
  123. package/dist/shared/utils/index.d.ts.map +1 -0
  124. package/dist/shared/utils/index.js +8 -0
  125. package/dist/shared/utils/index.js.map +1 -0
  126. package/dist/{logger.d.ts → shared/utils/logger.d.ts} +7 -1
  127. package/dist/shared/utils/logger.d.ts.map +1 -0
  128. package/dist/{logger.js → shared/utils/logger.js} +7 -1
  129. package/dist/shared/utils/logger.js.map +1 -0
  130. package/dist/shared/utils/ulid.d.ts.map +1 -0
  131. package/dist/{ulid.js → shared/utils/ulid.js} +5 -0
  132. package/dist/shared/utils/ulid.js.map +1 -0
  133. package/dist/shared/utils/validation.d.ts +59 -0
  134. package/dist/shared/utils/validation.d.ts.map +1 -0
  135. package/dist/shared/utils/validation.js +114 -0
  136. package/dist/shared/utils/validation.js.map +1 -0
  137. package/package.json +3 -2
  138. package/dist/errors.d.ts.map +0 -1
  139. package/dist/errors.js.map +0 -1
  140. package/dist/logger.d.ts.map +0 -1
  141. package/dist/logger.js.map +0 -1
  142. package/dist/types.d.ts.map +0 -1
  143. package/dist/types.js +0 -2
  144. package/dist/types.js.map +0 -1
  145. package/dist/ulid.d.ts.map +0 -1
  146. package/dist/ulid.js.map +0 -1
  147. /package/dist/{ulid.d.ts → shared/utils/ulid.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
- // @exabugs/dynamodb-client v0.3.7
2
- // Built: 2025-12-19T01:31:05.616Z
1
+ // @exabugs/dynamodb-client v0.4.0
2
+ // Built: 2025-12-22T15:24:28.032Z
3
3
  "use strict";
4
4
  var __create = Object.create;
5
5
  var __defProp = Object.defineProperty;
@@ -1241,12 +1241,12 @@ var require_dist_cjs7 = __commonJS({
1241
1241
  var loggerMiddleware = /* @__PURE__ */ __name(() => (next, context) => async (args) => {
1242
1242
  try {
1243
1243
  const response = await next(args);
1244
- const { clientName, commandName, logger: logger18, dynamoDbDocumentClientOptions = {} } = context;
1244
+ const { clientName, commandName, logger: logger21, dynamoDbDocumentClientOptions = {} } = context;
1245
1245
  const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions;
1246
1246
  const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;
1247
1247
  const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog;
1248
1248
  const { $metadata, ...outputWithoutMetadata } = response.output;
1249
- logger18?.info?.({
1249
+ logger21?.info?.({
1250
1250
  clientName,
1251
1251
  commandName,
1252
1252
  input: inputFilterSensitiveLog(args.input),
@@ -1255,10 +1255,10 @@ var require_dist_cjs7 = __commonJS({
1255
1255
  });
1256
1256
  return response;
1257
1257
  } catch (error2) {
1258
- const { clientName, commandName, logger: logger18, dynamoDbDocumentClientOptions = {} } = context;
1258
+ const { clientName, commandName, logger: logger21, dynamoDbDocumentClientOptions = {} } = context;
1259
1259
  const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions;
1260
1260
  const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;
1261
- logger18?.error?.({
1261
+ logger21?.error?.({
1262
1262
  clientName,
1263
1263
  commandName,
1264
1264
  input: inputFilterSensitiveLog(args.input),
@@ -2194,7 +2194,7 @@ var require_createBufferedReadableStream = __commonJS({
2194
2194
  exports2.sizeOf = sizeOf;
2195
2195
  exports2.modeOf = modeOf;
2196
2196
  var ByteArrayCollector_1 = require_ByteArrayCollector();
2197
- function createBufferedReadableStream(upstream, size, logger18) {
2197
+ function createBufferedReadableStream(upstream, size, logger21) {
2198
2198
  const reader = upstream.getReader();
2199
2199
  let streamBufferingLoggedWarning = false;
2200
2200
  let bytesSeen = 0;
@@ -2232,7 +2232,7 @@ var require_createBufferedReadableStream = __commonJS({
2232
2232
  const newSize = merge(buffers, mode, chunk);
2233
2233
  if (!streamBufferingLoggedWarning && bytesSeen > size * 2) {
2234
2234
  streamBufferingLoggedWarning = true;
2235
- logger18?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`);
2235
+ logger21?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`);
2236
2236
  }
2237
2237
  if (newSize >= size) {
2238
2238
  controller.enqueue(flush(buffers, mode));
@@ -2303,9 +2303,9 @@ var require_createBufferedReadable = __commonJS({
2303
2303
  var ByteArrayCollector_1 = require_ByteArrayCollector();
2304
2304
  var createBufferedReadableStream_1 = require_createBufferedReadableStream();
2305
2305
  var stream_type_check_1 = require_stream_type_check();
2306
- function createBufferedReadable(upstream, size, logger18) {
2306
+ function createBufferedReadable(upstream, size, logger21) {
2307
2307
  if ((0, stream_type_check_1.isReadableStream)(upstream)) {
2308
- return (0, createBufferedReadableStream_1.createBufferedReadableStream)(upstream, size, logger18);
2308
+ return (0, createBufferedReadableStream_1.createBufferedReadableStream)(upstream, size, logger21);
2309
2309
  }
2310
2310
  const downstream = new node_stream_1.Readable({ read() {
2311
2311
  } });
@@ -2338,7 +2338,7 @@ var require_createBufferedReadable = __commonJS({
2338
2338
  const newSize = (0, createBufferedReadableStream_1.merge)(buffers, mode, chunk);
2339
2339
  if (!streamBufferingLoggedWarning && bytesSeen > size * 2) {
2340
2340
  streamBufferingLoggedWarning = true;
2341
- logger18?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`);
2341
+ logger21?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`);
2342
2342
  }
2343
2343
  if (newSize >= size) {
2344
2344
  downstream.push((0, createBufferedReadableStream_1.flush)(buffers, mode));
@@ -2586,7 +2586,7 @@ var require_dist_cjs16 = __commonJS({
2586
2586
  }
2587
2587
  return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME$2), DEFER_EVENT_LISTENER_TIME$2);
2588
2588
  }, "setConnectionTimeout");
2589
- var setRequestTimeout = /* @__PURE__ */ __name((req, reject, timeoutInMs = 0, throwOnRequestTimeout, logger18) => {
2589
+ var setRequestTimeout = /* @__PURE__ */ __name((req, reject, timeoutInMs = 0, throwOnRequestTimeout, logger21) => {
2590
2590
  if (timeoutInMs) {
2591
2591
  return timing.setTimeout(() => {
2592
2592
  let msg = `@smithy/node-http-handler - [${throwOnRequestTimeout ? "ERROR" : "WARN"}] a request has exceeded the configured ${timeoutInMs} ms requestTimeout.`;
@@ -2599,7 +2599,7 @@ var require_dist_cjs16 = __commonJS({
2599
2599
  reject(error2);
2600
2600
  } else {
2601
2601
  msg += ` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`;
2602
- logger18?.warn?.(msg);
2602
+ logger21?.warn?.(msg);
2603
2603
  }
2604
2604
  }, timeoutInMs);
2605
2605
  }
@@ -2715,7 +2715,7 @@ var require_dist_cjs16 = __commonJS({
2715
2715
  }
2716
2716
  return new _NodeHttpHandler(instanceOrOptions);
2717
2717
  }
2718
- static checkSocketUsage(agent, socketWarningTimestamp, logger18 = console) {
2718
+ static checkSocketUsage(agent, socketWarningTimestamp, logger21 = console) {
2719
2719
  const { sockets, requests, maxSockets } = agent;
2720
2720
  if (typeof maxSockets !== "number" || maxSockets === Infinity) {
2721
2721
  return socketWarningTimestamp;
@@ -2729,7 +2729,7 @@ var require_dist_cjs16 = __commonJS({
2729
2729
  const socketsInUse = sockets[origin]?.length ?? 0;
2730
2730
  const requestsEnqueued = requests[origin]?.length ?? 0;
2731
2731
  if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) {
2732
- logger18?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued.
2732
+ logger21?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued.
2733
2733
  See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html
2734
2734
  or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`);
2735
2735
  return Date.now();
@@ -7762,7 +7762,7 @@ var require_dist_cjs21 = __commonJS({
7762
7762
  evaluateTreeRule
7763
7763
  };
7764
7764
  var resolveEndpoint4 = /* @__PURE__ */ __name((ruleSetObject, options) => {
7765
- const { endpointParams, logger: logger18 } = options;
7765
+ const { endpointParams, logger: logger21 } = options;
7766
7766
  const { parameters, rules } = ruleSetObject;
7767
7767
  options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);
7768
7768
  const paramsWithDefault = Object.entries(parameters).filter(([, v4]) => v4.default != null).map(([k4, v4]) => [k4, v4.default]);
@@ -7777,7 +7777,7 @@ var require_dist_cjs21 = __commonJS({
7777
7777
  throw new EndpointError(`Missing required parameter: '${requiredParam}'`);
7778
7778
  }
7779
7779
  }
7780
- const endpoint = evaluateRules(rules, { endpointParams, logger: logger18, referenceRecord: {} });
7780
+ const endpoint = evaluateRules(rules, { endpointParams, logger: logger21, referenceRecord: {} });
7781
7781
  options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`);
7782
7782
  return endpoint;
7783
7783
  }, "resolveEndpoint");
@@ -8564,19 +8564,19 @@ var require_dist_cjs25 = __commonJS({
8564
8564
  name = "ProviderError";
8565
8565
  tryNextLink;
8566
8566
  constructor(message, options = true) {
8567
- let logger18;
8567
+ let logger21;
8568
8568
  let tryNextLink = true;
8569
8569
  if (typeof options === "boolean") {
8570
- logger18 = void 0;
8570
+ logger21 = void 0;
8571
8571
  tryNextLink = options;
8572
8572
  } else if (options != null && typeof options === "object") {
8573
- logger18 = options.logger;
8573
+ logger21 = options.logger;
8574
8574
  tryNextLink = options.tryNextLink ?? true;
8575
8575
  }
8576
8576
  super(message);
8577
8577
  this.tryNextLink = tryNextLink;
8578
8578
  Object.setPrototypeOf(this, _ProviderError.prototype);
8579
- logger18?.debug?.(`@smithy/property-provider ${tryNextLink ? "->" : "(!)"} ${message}`);
8579
+ logger21?.debug?.(`@smithy/property-provider ${tryNextLink ? "->" : "(!)"} ${message}`);
8580
8580
  }
8581
8581
  static from(error2, options = true) {
8582
8582
  return Object.assign(new this(error2.message, options), error2);
@@ -10801,9 +10801,9 @@ var require_dist_cjs28 = __commonJS({
10801
10801
  this.middlewareStack.use(mw);
10802
10802
  }
10803
10803
  const stack = clientStack.concat(this.middlewareStack);
10804
- const { logger: logger18 } = configuration;
10804
+ const { logger: logger21 } = configuration;
10805
10805
  const handlerExecutionContext = {
10806
- logger: logger18,
10806
+ logger: logger21,
10807
10807
  clientName,
10808
10808
  commandName,
10809
10809
  inputFilterSensitiveLog,
@@ -14359,11 +14359,11 @@ var require_dist_cjs30 = __commonJS({
14359
14359
  userAgentAppId: /* @__PURE__ */ __name(async () => {
14360
14360
  const appId = await normalizedAppIdProvider();
14361
14361
  if (!isValidUserAgentAppId(appId)) {
14362
- const logger18 = input.logger?.constructor?.name === "NoOpLogger" || !input.logger ? console : input.logger;
14362
+ const logger21 = input.logger?.constructor?.name === "NoOpLogger" || !input.logger ? console : input.logger;
14363
14363
  if (typeof appId !== "string") {
14364
- logger18?.warn("userAgentAppId must be a string or undefined.");
14364
+ logger21?.warn("userAgentAppId must be a string or undefined.");
14365
14365
  } else if (appId.length > 50) {
14366
- logger18?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.");
14366
+ logger21?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.");
14367
14367
  }
14368
14368
  }
14369
14369
  return appId;
@@ -15078,8 +15078,8 @@ var require_dist_cjs35 = __commonJS({
15078
15078
  var isFunction = /* @__PURE__ */ __name((func) => typeof func === "function", "isFunction");
15079
15079
  var fromStatic = /* @__PURE__ */ __name((defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : propertyProvider.fromStatic(defaultValue), "fromStatic");
15080
15080
  var loadConfig = /* @__PURE__ */ __name(({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => {
15081
- const { signingName, logger: logger18 } = configuration;
15082
- const envOptions = { signingName, logger: logger18 };
15081
+ const { signingName, logger: logger21 } = configuration;
15082
+ const envOptions = { signingName, logger: logger21 };
15083
15083
  return propertyProvider.memoize(propertyProvider.chain(fromEnv(environmentVariableSelector, envOptions), fromSharedConfigFiles(configFileSelector, configuration), fromStatic(defaultValue)));
15084
15084
  }, "loadConfig");
15085
15085
  exports2.loadConfig = loadConfig;
@@ -16393,7 +16393,7 @@ var require_dist_cjs41 = __commonJS({
16393
16393
  "http:": true,
16394
16394
  "https:": true
16395
16395
  };
16396
- var getCmdsUri = /* @__PURE__ */ __name(async ({ logger: logger18 }) => {
16396
+ var getCmdsUri = /* @__PURE__ */ __name(async ({ logger: logger21 }) => {
16397
16397
  if (process.env[ENV_CMDS_RELATIVE_URI]) {
16398
16398
  return {
16399
16399
  hostname: CMDS_IP,
@@ -16405,13 +16405,13 @@ var require_dist_cjs41 = __commonJS({
16405
16405
  if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) {
16406
16406
  throw new propertyProvider.CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, {
16407
16407
  tryNextLink: false,
16408
- logger: logger18
16408
+ logger: logger21
16409
16409
  });
16410
16410
  }
16411
16411
  if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) {
16412
16412
  throw new propertyProvider.CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, {
16413
16413
  tryNextLink: false,
16414
- logger: logger18
16414
+ logger: logger21
16415
16415
  });
16416
16416
  }
16417
16417
  return {
@@ -16421,7 +16421,7 @@ var require_dist_cjs41 = __commonJS({
16421
16421
  }
16422
16422
  throw new propertyProvider.CredentialsProviderError(`The container metadata credential provider cannot be used unless the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment variable is set`, {
16423
16423
  tryNextLink: false,
16424
- logger: logger18
16424
+ logger: logger21
16425
16425
  });
16426
16426
  }, "getCmdsUri");
16427
16427
  var InstanceMetadataV1FallbackError = class _InstanceMetadataV1FallbackError extends propertyProvider.CredentialsProviderError {
@@ -16476,10 +16476,10 @@ var require_dist_cjs41 = __commonJS({
16476
16476
  var STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60;
16477
16477
  var STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60;
16478
16478
  var STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html";
16479
- var getExtendedInstanceMetadataCredentials = /* @__PURE__ */ __name((credentials, logger18) => {
16479
+ var getExtendedInstanceMetadataCredentials = /* @__PURE__ */ __name((credentials, logger21) => {
16480
16480
  const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS);
16481
16481
  const newExpiration = new Date(Date.now() + refreshInterval * 1e3);
16482
- logger18.warn(`Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}.
16482
+ logger21.warn(`Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}.
16483
16483
  For more information, please visit: ` + STATIC_STABILITY_DOC_URL);
16484
16484
  const originalExpiration = credentials.originalExpiration ?? credentials.expiration;
16485
16485
  return {
@@ -16489,19 +16489,19 @@ For more information, please visit: ` + STATIC_STABILITY_DOC_URL);
16489
16489
  };
16490
16490
  }, "getExtendedInstanceMetadataCredentials");
16491
16491
  var staticStabilityProvider = /* @__PURE__ */ __name((provider, options = {}) => {
16492
- const logger18 = options?.logger || console;
16492
+ const logger21 = options?.logger || console;
16493
16493
  let pastCredentials;
16494
16494
  return async () => {
16495
16495
  let credentials;
16496
16496
  try {
16497
16497
  credentials = await provider();
16498
16498
  if (credentials.expiration && credentials.expiration.getTime() < Date.now()) {
16499
- credentials = getExtendedInstanceMetadataCredentials(credentials, logger18);
16499
+ credentials = getExtendedInstanceMetadataCredentials(credentials, logger21);
16500
16500
  }
16501
16501
  } catch (e4) {
16502
16502
  if (pastCredentials) {
16503
- logger18.warn("Credential renew failed: ", e4);
16504
- credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger18);
16503
+ logger21.warn("Credential renew failed: ", e4);
16504
+ credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger21);
16505
16505
  } else {
16506
16506
  throw e4;
16507
16507
  }
@@ -16518,7 +16518,7 @@ For more information, please visit: ` + STATIC_STABILITY_DOC_URL);
16518
16518
  var fromInstanceMetadata = /* @__PURE__ */ __name((init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger }), "fromInstanceMetadata");
16519
16519
  var getInstanceMetadataProvider = /* @__PURE__ */ __name((init = {}) => {
16520
16520
  let disableFetchToken = false;
16521
- const { logger: logger18, profile } = init;
16521
+ const { logger: logger21, profile } = init;
16522
16522
  const { timeout, maxRetries } = providerConfigFromInit(init);
16523
16523
  const getCredentials = /* @__PURE__ */ __name(async (maxRetries2, options) => {
16524
16524
  const isImdsV1Fallback = disableFetchToken || options.headers?.[X_AWS_EC2_METADATA_TOKEN] == null;
@@ -16582,7 +16582,7 @@ For more information, please visit: ` + STATIC_STABILITY_DOC_URL);
16582
16582
  return async () => {
16583
16583
  const endpoint = await getInstanceMetadataEndpoint();
16584
16584
  if (disableFetchToken) {
16585
- logger18?.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)");
16585
+ logger21?.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)");
16586
16586
  return getCredentials(maxRetries, { ...endpoint, timeout });
16587
16587
  } else {
16588
16588
  let token;
@@ -16596,7 +16596,7 @@ For more information, please visit: ` + STATIC_STABILITY_DOC_URL);
16596
16596
  } else if (error2.message === "TimeoutError" || [403, 404, 405].includes(error2.statusCode)) {
16597
16597
  disableFetchToken = true;
16598
16598
  }
16599
- logger18?.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)");
16599
+ logger21?.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)");
16600
16600
  return getCredentials(maxRetries, { ...endpoint, timeout });
16601
16601
  }
16602
16602
  return getCredentials(maxRetries, {
@@ -16653,7 +16653,7 @@ var require_checkUrl = __commonJS({
16653
16653
  var ECS_CONTAINER_HOST = "169.254.170.2";
16654
16654
  var EKS_CONTAINER_HOST_IPv4 = "169.254.170.23";
16655
16655
  var EKS_CONTAINER_HOST_IPv6 = "[fd00:ec2::23]";
16656
- var checkUrl = /* @__PURE__ */ __name((url, logger18) => {
16656
+ var checkUrl = /* @__PURE__ */ __name((url, logger21) => {
16657
16657
  if (url.protocol === "https:") {
16658
16658
  return;
16659
16659
  }
@@ -16680,7 +16680,7 @@ var require_checkUrl = __commonJS({
16680
16680
  throw new property_provider_1.CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following:
16681
16681
  - loopback CIDR 127.0.0.0/8 or [::1/128]
16682
16682
  - ECS container host 169.254.170.2
16683
- - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger: logger18 });
16683
+ - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger: logger21 });
16684
16684
  }, "checkUrl");
16685
16685
  exports2.checkUrl = checkUrl;
16686
16686
  }
@@ -16711,13 +16711,13 @@ var require_requestHelpers = __commonJS({
16711
16711
  });
16712
16712
  }
16713
16713
  __name(createGetRequest, "createGetRequest");
16714
- async function getCredentials(response, logger18) {
16714
+ async function getCredentials(response, logger21) {
16715
16715
  const stream = (0, util_stream_1.sdkStreamMixin)(response.body);
16716
16716
  const str = await stream.transformToString();
16717
16717
  if (response.statusCode === 200) {
16718
16718
  const parsed = JSON.parse(str);
16719
16719
  if (typeof parsed.AccessKeyId !== "string" || typeof parsed.SecretAccessKey !== "string" || typeof parsed.Token !== "string" || typeof parsed.Expiration !== "string") {
16720
- throw new property_provider_1.CredentialsProviderError("HTTP credential provider response not of the required format, an object matching: { AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }", { logger: logger18 });
16720
+ throw new property_provider_1.CredentialsProviderError("HTTP credential provider response not of the required format, an object matching: { AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }", { logger: logger21 });
16721
16721
  }
16722
16722
  return {
16723
16723
  accessKeyId: parsed.AccessKeyId,
@@ -16732,12 +16732,12 @@ var require_requestHelpers = __commonJS({
16732
16732
  parsedBody = JSON.parse(str);
16733
16733
  } catch (e4) {
16734
16734
  }
16735
- throw Object.assign(new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger: logger18 }), {
16735
+ throw Object.assign(new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger: logger21 }), {
16736
16736
  Code: parsedBody.Code,
16737
16737
  Message: parsedBody.Message
16738
16738
  });
16739
16739
  }
16740
- throw new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger: logger18 });
16740
+ throw new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger: logger21 });
16741
16741
  }
16742
16742
  __name(getCredentials, "getCredentials");
16743
16743
  }
@@ -18101,14 +18101,14 @@ var require_dist_cjs48 = __commonJS({
18101
18101
  var propertyProvider = require_dist_cjs25();
18102
18102
  var sharedIniFileLoader = require_dist_cjs34();
18103
18103
  var fs = require("fs");
18104
- var fromEnvSigningName = /* @__PURE__ */ __name(({ logger: logger18, signingName } = {}) => async () => {
18105
- logger18?.debug?.("@aws-sdk/token-providers - fromEnvSigningName");
18104
+ var fromEnvSigningName = /* @__PURE__ */ __name(({ logger: logger21, signingName } = {}) => async () => {
18105
+ logger21?.debug?.("@aws-sdk/token-providers - fromEnvSigningName");
18106
18106
  if (!signingName) {
18107
- throw new propertyProvider.TokenProviderError("Please pass 'signingName' to compute environment variable key", { logger: logger18 });
18107
+ throw new propertyProvider.TokenProviderError("Please pass 'signingName' to compute environment variable key", { logger: logger21 });
18108
18108
  }
18109
18109
  const bearerTokenKey = httpAuthSchemes.getBearerTokenEnvKey(signingName);
18110
18110
  if (!(bearerTokenKey in process.env)) {
18111
- throw new propertyProvider.TokenProviderError(`Token not present in '${bearerTokenKey}' environment variable`, { logger: logger18 });
18111
+ throw new propertyProvider.TokenProviderError(`Token not present in '${bearerTokenKey}' environment variable`, { logger: logger21 });
18112
18112
  }
18113
18113
  const token = { token: process.env[bearerTokenKey] };
18114
18114
  client.setTokenFeature(token, "BEARER_SERVICE_ENV_VARS", "3");
@@ -18229,8 +18229,8 @@ var require_dist_cjs48 = __commonJS({
18229
18229
  return existingToken;
18230
18230
  }
18231
18231
  }, "fromSso");
18232
- var fromStatic = /* @__PURE__ */ __name(({ token, logger: logger18 }) => async () => {
18233
- logger18?.debug("@aws-sdk/token-providers - fromStatic");
18232
+ var fromStatic = /* @__PURE__ */ __name(({ token, logger: logger21 }) => async () => {
18233
+ logger21?.debug("@aws-sdk/token-providers - fromStatic");
18234
18234
  if (!token || !token.token) {
18235
18235
  throw new propertyProvider.TokenProviderError(`Please pass a valid token to fromStatic`, false);
18236
18236
  }
@@ -19019,7 +19019,7 @@ var require_dist_cjs50 = __commonJS({
19019
19019
  var tokenProviders = require_dist_cjs48();
19020
19020
  var isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === "string" || typeof arg.sso_account_id === "string" || typeof arg.sso_session === "string" || typeof arg.sso_region === "string" || typeof arg.sso_role_name === "string"), "isSsoProfile");
19021
19021
  var SHOULD_FAIL_CREDENTIAL_CHAIN = false;
19022
- var resolveSSOCredentials = /* @__PURE__ */ __name(async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, profile, filepath, configFilepath, ignoreCache, logger: logger18 }) => {
19022
+ var resolveSSOCredentials = /* @__PURE__ */ __name(async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, profile, filepath, configFilepath, ignoreCache, logger: logger21 }) => {
19023
19023
  let token;
19024
19024
  const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;
19025
19025
  if (ssoSession) {
@@ -19037,7 +19037,7 @@ var require_dist_cjs50 = __commonJS({
19037
19037
  } catch (e4) {
19038
19038
  throw new propertyProvider.CredentialsProviderError(e4.message, {
19039
19039
  tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,
19040
- logger: logger18
19040
+ logger: logger21
19041
19041
  });
19042
19042
  }
19043
19043
  } else {
@@ -19046,14 +19046,14 @@ var require_dist_cjs50 = __commonJS({
19046
19046
  } catch (e4) {
19047
19047
  throw new propertyProvider.CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, {
19048
19048
  tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,
19049
- logger: logger18
19049
+ logger: logger21
19050
19050
  });
19051
19051
  }
19052
19052
  }
19053
19053
  if (new Date(token.expiresAt).getTime() - Date.now() <= 0) {
19054
19054
  throw new propertyProvider.CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, {
19055
19055
  tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,
19056
- logger: logger18
19056
+ logger: logger21
19057
19057
  });
19058
19058
  }
19059
19059
  const { accessToken } = token;
@@ -19075,14 +19075,14 @@ var require_dist_cjs50 = __commonJS({
19075
19075
  } catch (e4) {
19076
19076
  throw new propertyProvider.CredentialsProviderError(e4, {
19077
19077
  tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,
19078
- logger: logger18
19078
+ logger: logger21
19079
19079
  });
19080
19080
  }
19081
19081
  const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {} } = ssoResp;
19082
19082
  if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {
19083
19083
  throw new propertyProvider.CredentialsProviderError("SSO returns an invalid temporary credential.", {
19084
19084
  tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,
19085
- logger: logger18
19085
+ logger: logger21
19086
19086
  });
19087
19087
  }
19088
19088
  const credentials = {
@@ -19100,11 +19100,11 @@ var require_dist_cjs50 = __commonJS({
19100
19100
  }
19101
19101
  return credentials;
19102
19102
  }, "resolveSSOCredentials");
19103
- var validateSsoProfile = /* @__PURE__ */ __name((profile, logger18) => {
19103
+ var validateSsoProfile = /* @__PURE__ */ __name((profile, logger21) => {
19104
19104
  const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;
19105
19105
  if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {
19106
19106
  throw new propertyProvider.CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", "sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")}
19107
- Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger: logger18 });
19107
+ Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger: logger21 });
19108
19108
  }
19109
19109
  return profile;
19110
19110
  }, "validateSsoProfile");
@@ -19887,7 +19887,7 @@ var require_dist_cjs51 = __commonJS({
19887
19887
  }
19888
19888
  async refresh(token) {
19889
19889
  const { SigninClient: SigninClient2, CreateOAuth2TokenCommand: CreateOAuth2TokenCommand2 } = await Promise.resolve().then(() => (init_signin(), signin_exports));
19890
- const { logger: logger18, userAgentAppId } = this.callerClientConfig ?? {};
19890
+ const { logger: logger21, userAgentAppId } = this.callerClientConfig ?? {};
19891
19891
  const isH22 = /* @__PURE__ */ __name((requestHandler2) => {
19892
19892
  return requestHandler2?.metadata?.handlerProtocol === "h2";
19893
19893
  }, "isH2");
@@ -19900,7 +19900,7 @@ var require_dist_cjs51 = __commonJS({
19900
19900
  },
19901
19901
  region,
19902
19902
  requestHandler,
19903
- logger: logger18,
19903
+ logger: logger21,
19904
19904
  userAgentAppId,
19905
19905
  ...this.init?.clientConfig
19906
19906
  });
@@ -20918,9 +20918,9 @@ var init_defaultStsRoleAssumers = __esm({
20918
20918
  return async (sourceCreds, params) => {
20919
20919
  closureSourceCreds = sourceCreds;
20920
20920
  if (!stsClient) {
20921
- const { logger: logger18 = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId } = stsOptions;
20921
+ const { logger: logger21 = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId } = stsOptions;
20922
20922
  const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, {
20923
- logger: logger18,
20923
+ logger: logger21,
20924
20924
  profile
20925
20925
  });
20926
20926
  const isCompatibleRequestHandler = !isH2(requestHandler);
@@ -20931,7 +20931,7 @@ var init_defaultStsRoleAssumers = __esm({
20931
20931
  credentialDefaultProvider: /* @__PURE__ */ __name(() => async () => closureSourceCreds, "credentialDefaultProvider"),
20932
20932
  region: resolvedRegion,
20933
20933
  requestHandler: isCompatibleRequestHandler ? requestHandler : void 0,
20934
- logger: logger18
20934
+ logger: logger21
20935
20935
  });
20936
20936
  }
20937
20937
  const { Credentials: Credentials2, AssumedRoleUser: AssumedRoleUser2 } = await stsClient.send(new AssumeRoleCommand(params));
@@ -20955,9 +20955,9 @@ var init_defaultStsRoleAssumers = __esm({
20955
20955
  let stsClient;
20956
20956
  return async (params) => {
20957
20957
  if (!stsClient) {
20958
- const { logger: logger18 = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId } = stsOptions;
20958
+ const { logger: logger21 = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId } = stsOptions;
20959
20959
  const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, {
20960
- logger: logger18,
20960
+ logger: logger21,
20961
20961
  profile
20962
20962
  });
20963
20963
  const isCompatibleRequestHandler = !isH2(requestHandler);
@@ -20967,7 +20967,7 @@ var init_defaultStsRoleAssumers = __esm({
20967
20967
  profile,
20968
20968
  region: resolvedRegion,
20969
20969
  requestHandler: isCompatibleRequestHandler ? requestHandler : void 0,
20970
- logger: logger18
20970
+ logger: logger21
20971
20971
  });
20972
20972
  }
20973
20973
  const { Credentials: Credentials2, AssumedRoleUser: AssumedRoleUser2 } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params));
@@ -21097,7 +21097,7 @@ var require_dist_cjs52 = __commonJS({
21097
21097
  client.setCredentialFeature(credentials, "CREDENTIALS_PROCESS", "w");
21098
21098
  return credentials;
21099
21099
  }, "getValidatedProcessCredentials");
21100
- var resolveProcessCredentials = /* @__PURE__ */ __name(async (profileName, profiles, logger18) => {
21100
+ var resolveProcessCredentials = /* @__PURE__ */ __name(async (profileName, profiles, logger21) => {
21101
21101
  const profile = profiles[profileName];
21102
21102
  if (profiles[profileName]) {
21103
21103
  const credentialProcess = profile["credential_process"];
@@ -21113,14 +21113,14 @@ var require_dist_cjs52 = __commonJS({
21113
21113
  }
21114
21114
  return getValidatedProcessCredentials(profileName, data2, profiles);
21115
21115
  } catch (error2) {
21116
- throw new propertyProvider.CredentialsProviderError(error2.message, { logger: logger18 });
21116
+ throw new propertyProvider.CredentialsProviderError(error2.message, { logger: logger21 });
21117
21117
  }
21118
21118
  } else {
21119
- throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger: logger18 });
21119
+ throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger: logger21 });
21120
21120
  }
21121
21121
  } else {
21122
21122
  throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, {
21123
- logger: logger18
21123
+ logger: logger21
21124
21124
  });
21125
21125
  }
21126
21126
  }, "resolveProcessCredentials");
@@ -21279,21 +21279,21 @@ var require_dist_cjs54 = __commonJS({
21279
21279
  var propertyProvider = require_dist_cjs25();
21280
21280
  var client = (init_client(), __toCommonJS(client_exports));
21281
21281
  var credentialProviderLogin = require_dist_cjs51();
21282
- var resolveCredentialSource = /* @__PURE__ */ __name((credentialSource, profileName, logger18) => {
21282
+ var resolveCredentialSource = /* @__PURE__ */ __name((credentialSource, profileName, logger21) => {
21283
21283
  const sourceProvidersMap = {
21284
21284
  EcsContainer: /* @__PURE__ */ __name(async (options) => {
21285
21285
  const { fromHttp } = await Promise.resolve().then(() => __toESM(require_dist_cjs42()));
21286
21286
  const { fromContainerMetadata } = await Promise.resolve().then(() => __toESM(require_dist_cjs41()));
21287
- logger18?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer");
21287
+ logger21?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer");
21288
21288
  return async () => propertyProvider.chain(fromHttp(options ?? {}), fromContainerMetadata(options))().then(setNamedProvider);
21289
21289
  }, "EcsContainer"),
21290
21290
  Ec2InstanceMetadata: /* @__PURE__ */ __name(async (options) => {
21291
- logger18?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata");
21291
+ logger21?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata");
21292
21292
  const { fromInstanceMetadata } = await Promise.resolve().then(() => __toESM(require_dist_cjs41()));
21293
21293
  return async () => fromInstanceMetadata(options)().then(setNamedProvider);
21294
21294
  }, "Ec2InstanceMetadata"),
21295
21295
  Environment: /* @__PURE__ */ __name(async (options) => {
21296
- logger18?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment");
21296
+ logger21?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment");
21297
21297
  const { fromEnv } = await Promise.resolve().then(() => __toESM(require_dist_cjs40()));
21298
21298
  return async () => fromEnv(options)().then(setNamedProvider);
21299
21299
  }, "Environment")
@@ -21301,24 +21301,24 @@ var require_dist_cjs54 = __commonJS({
21301
21301
  if (credentialSource in sourceProvidersMap) {
21302
21302
  return sourceProvidersMap[credentialSource];
21303
21303
  } else {
21304
- throw new propertyProvider.CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, expected EcsContainer or Ec2InstanceMetadata or Environment.`, { logger: logger18 });
21304
+ throw new propertyProvider.CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, expected EcsContainer or Ec2InstanceMetadata or Environment.`, { logger: logger21 });
21305
21305
  }
21306
21306
  }, "resolveCredentialSource");
21307
21307
  var setNamedProvider = /* @__PURE__ */ __name((creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_NAMED_PROVIDER", "p"), "setNamedProvider");
21308
- var isAssumeRoleProfile = /* @__PURE__ */ __name((arg, { profile = "default", logger: logger18 } = {}) => {
21309
- return Boolean(arg) && typeof arg === "object" && typeof arg.role_arn === "string" && ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1 && ["undefined", "string"].indexOf(typeof arg.external_id) > -1 && ["undefined", "string"].indexOf(typeof arg.mfa_serial) > -1 && (isAssumeRoleWithSourceProfile(arg, { profile, logger: logger18 }) || isCredentialSourceProfile(arg, { profile, logger: logger18 }));
21308
+ var isAssumeRoleProfile = /* @__PURE__ */ __name((arg, { profile = "default", logger: logger21 } = {}) => {
21309
+ return Boolean(arg) && typeof arg === "object" && typeof arg.role_arn === "string" && ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1 && ["undefined", "string"].indexOf(typeof arg.external_id) > -1 && ["undefined", "string"].indexOf(typeof arg.mfa_serial) > -1 && (isAssumeRoleWithSourceProfile(arg, { profile, logger: logger21 }) || isCredentialSourceProfile(arg, { profile, logger: logger21 }));
21310
21310
  }, "isAssumeRoleProfile");
21311
- var isAssumeRoleWithSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger: logger18 }) => {
21311
+ var isAssumeRoleWithSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger: logger21 }) => {
21312
21312
  const withSourceProfile = typeof arg.source_profile === "string" && typeof arg.credential_source === "undefined";
21313
21313
  if (withSourceProfile) {
21314
- logger18?.debug?.(` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`);
21314
+ logger21?.debug?.(` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`);
21315
21315
  }
21316
21316
  return withSourceProfile;
21317
21317
  }, "isAssumeRoleWithSourceProfile");
21318
- var isCredentialSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger: logger18 }) => {
21318
+ var isCredentialSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger: logger21 }) => {
21319
21319
  const withProviderProfile = typeof arg.credential_source === "string" && typeof arg.source_profile === "undefined";
21320
21320
  if (withProviderProfile) {
21321
- logger18?.debug?.(` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`);
21321
+ logger21?.debug?.(` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`);
21322
21322
  }
21323
21323
  return withProviderProfile;
21324
21324
  }, "isCredentialSourceProfile");
@@ -25710,7 +25710,7 @@ var require_dist_cjs58 = __commonJS({
25710
25710
  __name(this, "PutResourcePolicyCommand");
25711
25711
  }
25712
25712
  };
25713
- var QueryCommand3 = class extends smithyClient.Command.classBuilder().ep({
25713
+ var QueryCommand4 = class extends smithyClient.Command.classBuilder().ep({
25714
25714
  ...commonParams4,
25715
25715
  ResourceArn: { type: "contextParams", name: "TableName" }
25716
25716
  }).m(function(Command, cs, config, o4) {
@@ -25927,7 +25927,7 @@ var require_dist_cjs58 = __commonJS({
25927
25927
  ListTagsOfResourceCommand,
25928
25928
  PutItemCommand,
25929
25929
  PutResourcePolicyCommand,
25930
- QueryCommand: QueryCommand3,
25930
+ QueryCommand: QueryCommand4,
25931
25931
  RestoreTableFromBackupCommand,
25932
25932
  RestoreTableToPointInTimeCommand,
25933
25933
  ScanCommand,
@@ -25955,7 +25955,7 @@ var require_dist_cjs58 = __commonJS({
25955
25955
  var paginateListExports = core.createPaginator(DynamoDBClient2, ListExportsCommand, "NextToken", "NextToken", "MaxResults");
25956
25956
  var paginateListImports = core.createPaginator(DynamoDBClient2, ListImportsCommand, "NextToken", "NextToken", "PageSize");
25957
25957
  var paginateListTables = core.createPaginator(DynamoDBClient2, ListTablesCommand, "ExclusiveStartTableName", "LastEvaluatedTableName", "Limit");
25958
- var paginateQuery = core.createPaginator(DynamoDBClient2, QueryCommand3, "ExclusiveStartKey", "LastEvaluatedKey", "Limit");
25958
+ var paginateQuery = core.createPaginator(DynamoDBClient2, QueryCommand4, "ExclusiveStartKey", "LastEvaluatedKey", "Limit");
25959
25959
  var paginateScan = core.createPaginator(DynamoDBClient2, ScanCommand, "ExclusiveStartKey", "LastEvaluatedKey", "Limit");
25960
25960
  var checkState$1 = /* @__PURE__ */ __name(async (client, input) => {
25961
25961
  let reason;
@@ -26354,7 +26354,7 @@ var require_dist_cjs58 = __commonJS({
26354
26354
  exports2.ProvisionedThroughputExceededException = ProvisionedThroughputExceededException$1;
26355
26355
  exports2.PutItemCommand = PutItemCommand;
26356
26356
  exports2.PutResourcePolicyCommand = PutResourcePolicyCommand;
26357
- exports2.QueryCommand = QueryCommand3;
26357
+ exports2.QueryCommand = QueryCommand4;
26358
26358
  exports2.ReplicaAlreadyExistsException = ReplicaAlreadyExistsException$1;
26359
26359
  exports2.ReplicaNotFoundException = ReplicaNotFoundException$1;
26360
26360
  exports2.ReplicaStatus = ReplicaStatus;
@@ -27098,7 +27098,7 @@ var require_dist_cjs60 = __commonJS({
27098
27098
  return async () => handler2(this.clientCommand);
27099
27099
  }
27100
27100
  };
27101
- var QueryCommand3 = class extends DynamoDBDocumentClientCommand {
27101
+ var QueryCommand4 = class extends DynamoDBDocumentClientCommand {
27102
27102
  static {
27103
27103
  __name(this, "QueryCommand");
27104
27104
  }
@@ -27433,7 +27433,7 @@ var require_dist_cjs60 = __commonJS({
27433
27433
  }
27434
27434
  }
27435
27435
  query(args, optionsOrCb, cb) {
27436
- const command = new QueryCommand3(args);
27436
+ const command = new QueryCommand4(args);
27437
27437
  if (typeof optionsOrCb === "function") {
27438
27438
  this.send(command, optionsOrCb);
27439
27439
  } else if (typeof cb === "function") {
@@ -27498,7 +27498,7 @@ var require_dist_cjs60 = __commonJS({
27498
27498
  }
27499
27499
  }
27500
27500
  };
27501
- var paginateQuery = core$1.createPaginator(DynamoDBDocumentClient2, QueryCommand3, "ExclusiveStartKey", "LastEvaluatedKey", "Limit");
27501
+ var paginateQuery = core$1.createPaginator(DynamoDBDocumentClient2, QueryCommand4, "ExclusiveStartKey", "LastEvaluatedKey", "Limit");
27502
27502
  var paginateScan = core$1.createPaginator(DynamoDBDocumentClient2, ScanCommand, "ExclusiveStartKey", "LastEvaluatedKey", "Limit");
27503
27503
  Object.defineProperty(exports2, "$Command", {
27504
27504
  enumerable: true,
@@ -27529,7 +27529,7 @@ var require_dist_cjs60 = __commonJS({
27529
27529
  exports2.ExecuteTransactionCommand = ExecuteTransactionCommand;
27530
27530
  exports2.GetCommand = GetCommand4;
27531
27531
  exports2.PutCommand = PutCommand2;
27532
- exports2.QueryCommand = QueryCommand3;
27532
+ exports2.QueryCommand = QueryCommand4;
27533
27533
  exports2.ScanCommand = ScanCommand;
27534
27534
  exports2.TransactGetCommand = TransactGetCommand;
27535
27535
  exports2.TransactWriteCommand = TransactWriteCommand6;
@@ -27546,7 +27546,7 @@ __export(handler_exports, {
27546
27546
  });
27547
27547
  module.exports = __toCommonJS(handler_exports);
27548
27548
 
27549
- // src/errors.ts
27549
+ // src/shared/errors/index.ts
27550
27550
  var AppError = class extends Error {
27551
27551
  constructor(code, message, statusCode = 500, details) {
27552
27552
  super(message);
@@ -27608,7 +27608,7 @@ function isAppError(error2) {
27608
27608
  }
27609
27609
  __name(isAppError, "isAppError");
27610
27610
 
27611
- // src/logger.ts
27611
+ // src/shared/utils/logger.ts
27612
27612
  var LOG_LEVELS = {
27613
27613
  debug: 0,
27614
27614
  info: 1,
@@ -27665,31 +27665,6 @@ function createLogger(config = {}) {
27665
27665
  }
27666
27666
  __name(createLogger, "createLogger");
27667
27667
 
27668
- // src/server/operations/deleteMany.ts
27669
- var import_lib_dynamodb2 = __toESM(require_dist_cjs60(), 1);
27670
-
27671
- // src/dynamodb.ts
27672
- var import_client_dynamodb = __toESM(require_dist_cjs58(), 1);
27673
- var import_lib_dynamodb = __toESM(require_dist_cjs60(), 1);
27674
- function createDynamoDBClient(config = {}) {
27675
- const { region = process.env.AWS_REGION || "us-east-1", endpoint } = config;
27676
- const client = new import_client_dynamodb.DynamoDBClient({
27677
- region,
27678
- ...endpoint && { endpoint }
27679
- });
27680
- const docClient = import_lib_dynamodb.DynamoDBDocumentClient.from(client, {
27681
- marshallOptions: {
27682
- removeUndefinedValues: true,
27683
- convertEmptyValues: false
27684
- },
27685
- unmarshallOptions: {
27686
- wrapNumbers: false
27687
- }
27688
- });
27689
- return docClient;
27690
- }
27691
- __name(createDynamoDBClient, "createDynamoDBClient");
27692
-
27693
27668
  // node_modules/ulid/dist/node/index.js
27694
27669
  var import_node_crypto = __toESM(require("node:crypto"), 1);
27695
27670
  var ENCODING = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
@@ -27795,12 +27770,51 @@ function ulid(seedTime, prng) {
27795
27770
  }
27796
27771
  __name(ulid, "ulid");
27797
27772
 
27798
- // src/ulid.ts
27773
+ // src/shared/utils/ulid.ts
27799
27774
  function ulid2() {
27800
27775
  return ulid();
27801
27776
  }
27802
27777
  __name(ulid2, "ulid");
27803
27778
 
27779
+ // src/shared/utils/dynamodb.ts
27780
+ var import_client_dynamodb = __toESM(require_dist_cjs58(), 1);
27781
+ var import_lib_dynamodb = __toESM(require_dist_cjs60(), 1);
27782
+ function createDynamoDBClient(config = {}) {
27783
+ const { region = process.env.AWS_REGION || "us-east-1", endpoint } = config;
27784
+ const client = new import_client_dynamodb.DynamoDBClient({
27785
+ region,
27786
+ ...endpoint && { endpoint }
27787
+ });
27788
+ const docClient = import_lib_dynamodb.DynamoDBDocumentClient.from(client, {
27789
+ marshallOptions: {
27790
+ removeUndefinedValues: true,
27791
+ convertEmptyValues: false
27792
+ },
27793
+ unmarshallOptions: {
27794
+ wrapNumbers: false
27795
+ }
27796
+ });
27797
+ return docClient;
27798
+ }
27799
+ __name(createDynamoDBClient, "createDynamoDBClient");
27800
+
27801
+ // src/shared/constants/dynamodb.ts
27802
+ var DYNAMODB_TRANSACT_WRITE_MAX_ITEMS = 100;
27803
+ var DYNAMODB_QUERY_MAX_SIZE_BYTES = 1024 * 1024;
27804
+ var DYNAMODB_SCAN_MAX_SIZE_BYTES = 1024 * 1024;
27805
+
27806
+ // src/shared/constants/lambda.ts
27807
+ var LAMBDA_TIMEOUT_MS = 15 * 60 * 1e3;
27808
+ var LARGE_BATCH_WARNING_THRESHOLD = 1e3;
27809
+ var TIMEOUT_RISK_THRESHOLD = 0.2;
27810
+ var LAMBDA_MAX_PAYLOAD_SIZE_SYNC = 6 * 1024 * 1024;
27811
+ var LAMBDA_MAX_PAYLOAD_SIZE_ASYNC = 256 * 1024;
27812
+ var LAMBDA_MAX_RESPONSE_SIZE = 6 * 1024 * 1024;
27813
+ var LAMBDA_MAX_ENV_VARS_SIZE = 4 * 1024;
27814
+
27815
+ // src/server/operations/deleteMany.ts
27816
+ var import_lib_dynamodb2 = __toESM(require_dist_cjs60(), 1);
27817
+
27804
27818
  // src/server/shadow/typeInference.ts
27805
27819
  function inferFieldType(value) {
27806
27820
  if (value === null || value === void 0) {
@@ -27828,6 +27842,51 @@ function inferFieldType(value) {
27828
27842
  }
27829
27843
  __name(inferFieldType, "inferFieldType");
27830
27844
 
27845
+ // src/shadows/generator.ts
27846
+ function escapeString(value) {
27847
+ return value.replace(/#/g, "##").replace(/ /g, "#");
27848
+ }
27849
+ __name(escapeString, "escapeString");
27850
+ function formatDatetime(value) {
27851
+ if (value === null || value === void 0) {
27852
+ return "";
27853
+ }
27854
+ const date2 = typeof value === "string" ? new Date(value) : value;
27855
+ if (isNaN(date2.getTime())) {
27856
+ throw new Error(`Invalid datetime value: ${value}`);
27857
+ }
27858
+ return date2.toISOString();
27859
+ }
27860
+ __name(formatDatetime, "formatDatetime");
27861
+ function formatBoolean(value) {
27862
+ if (value === null || value === void 0) {
27863
+ return "";
27864
+ }
27865
+ return value ? "true" : "false";
27866
+ }
27867
+ __name(formatBoolean, "formatBoolean");
27868
+ function generateMainRecordSK(recordId) {
27869
+ return `id#${recordId}`;
27870
+ }
27871
+ __name(generateMainRecordSK, "generateMainRecordSK");
27872
+
27873
+ // src/shadows/differ.ts
27874
+ function calculateShadowDiff(oldShadowKeys, newShadowKeys) {
27875
+ const oldSet = new Set(oldShadowKeys);
27876
+ const newSet = new Set(newShadowKeys);
27877
+ const toDelete = oldShadowKeys.filter((key) => !newSet.has(key));
27878
+ const toAdd = newShadowKeys.filter((key) => !oldSet.has(key));
27879
+ return {
27880
+ toDelete,
27881
+ toAdd
27882
+ };
27883
+ }
27884
+ __name(calculateShadowDiff, "calculateShadowDiff");
27885
+ function isDiffEmpty(diff) {
27886
+ return diff.toDelete.length === 0 && diff.toAdd.length === 0;
27887
+ }
27888
+ __name(isDiffEmpty, "isDiffEmpty");
27889
+
27831
27890
  // src/server/shadow/generator.ts
27832
27891
  function normalizeJson(value) {
27833
27892
  if (value === null || value === void 0) return value;
@@ -27859,10 +27918,10 @@ function truncateString(value, maxBytes) {
27859
27918
  return truncated;
27860
27919
  }
27861
27920
  __name(truncateString, "truncateString");
27862
- function escapeString(value) {
27863
- return value.replace(/#/g, "##").replace(/ /g, "#");
27921
+ function escapeString2(value) {
27922
+ return escapeString(value);
27864
27923
  }
27865
- __name(escapeString, "escapeString");
27924
+ __name(escapeString2, "escapeString");
27866
27925
  function formatNumberWithOffset(value, padding) {
27867
27926
  if (!Number.isFinite(value)) {
27868
27927
  throw new Error(`Invalid number value: ${value}`);
@@ -27876,25 +27935,15 @@ function formatNumberWithOffset(value, padding) {
27876
27935
  return adjusted.toString().padStart(padding + 1, "0");
27877
27936
  }
27878
27937
  __name(formatNumberWithOffset, "formatNumberWithOffset");
27879
- function formatDatetime(value) {
27880
- if (value === null || value === void 0) {
27881
- return "";
27882
- }
27883
- const date2 = typeof value === "string" ? new Date(value) : value;
27884
- if (isNaN(date2.getTime())) {
27885
- throw new Error(`Invalid datetime value: ${value}`);
27886
- }
27887
- return date2.toISOString();
27938
+ function formatDatetime2(value) {
27939
+ return formatDatetime(value);
27888
27940
  }
27889
- __name(formatDatetime, "formatDatetime");
27890
- function formatBoolean(value) {
27891
- if (value === null || value === void 0) {
27892
- return "";
27893
- }
27894
- return value ? "1" : "0";
27941
+ __name(formatDatetime2, "formatDatetime");
27942
+ function formatBoolean2(value) {
27943
+ return formatBoolean(value);
27895
27944
  }
27896
- __name(formatBoolean, "formatBoolean");
27897
- function formatFieldValue(type, value, config) {
27945
+ __name(formatBoolean2, "formatBoolean");
27946
+ function formatFieldValue2(type, value, config) {
27898
27947
  switch (type) {
27899
27948
  case "string": {
27900
27949
  if (value === null || value === void 0) {
@@ -27902,31 +27951,31 @@ function formatFieldValue(type, value, config) {
27902
27951
  }
27903
27952
  const str = String(value);
27904
27953
  const truncated = truncateString(str, config.stringMaxBytes);
27905
- return escapeString(truncated);
27954
+ return escapeString2(truncated);
27906
27955
  }
27907
27956
  case "number":
27908
27957
  return formatNumberWithOffset(value, config.numberPadding);
27909
27958
  case "datetime":
27910
- return formatDatetime(value);
27959
+ return formatDatetime2(value);
27911
27960
  case "boolean":
27912
- return formatBoolean(value);
27961
+ return formatBoolean2(value);
27913
27962
  case "array":
27914
27963
  case "object": {
27915
27964
  const normalized = normalizeJson(value);
27916
27965
  const jsonStr = JSON.stringify(normalized);
27917
27966
  const maxBytes = config.stringMaxBytes * 2;
27918
27967
  const truncated = truncateString(jsonStr, maxBytes);
27919
- return escapeString(truncated);
27968
+ return escapeString2(truncated);
27920
27969
  }
27921
27970
  default:
27922
27971
  throw new Error(`Unknown shadow field type: ${type}`);
27923
27972
  }
27924
27973
  }
27925
- __name(formatFieldValue, "formatFieldValue");
27926
- function generateMainRecordSK(recordId) {
27927
- return `id#${recordId}`;
27974
+ __name(formatFieldValue2, "formatFieldValue");
27975
+ function generateMainRecordSK2(recordId) {
27976
+ return generateMainRecordSK(recordId);
27928
27977
  }
27929
- __name(generateMainRecordSK, "generateMainRecordSK");
27978
+ __name(generateMainRecordSK2, "generateMainRecordSK");
27930
27979
  function generateShadowRecords(record, resourceName, config) {
27931
27980
  const shadows = [];
27932
27981
  for (const [fieldName, value] of Object.entries(record)) {
@@ -27943,7 +27992,7 @@ function generateShadowRecords(record, resourceName, config) {
27943
27992
  if (!type) {
27944
27993
  continue;
27945
27994
  }
27946
- const formattedValue = formatFieldValue(type, value, config);
27995
+ const formattedValue = formatFieldValue2(type, value, config);
27947
27996
  const sk = `${fieldName}#${formattedValue}#id#${record.id}`;
27948
27997
  shadows.push({
27949
27998
  PK: resourceName,
@@ -27954,23 +28003,6 @@ function generateShadowRecords(record, resourceName, config) {
27954
28003
  }
27955
28004
  __name(generateShadowRecords, "generateShadowRecords");
27956
28005
 
27957
- // src/server/shadow/differ.ts
27958
- function calculateShadowDiff(oldShadowKeys, newShadowKeys) {
27959
- const oldSet = new Set(oldShadowKeys);
27960
- const newSet = new Set(newShadowKeys);
27961
- const toDelete = oldShadowKeys.filter((key) => !newSet.has(key));
27962
- const toAdd = newShadowKeys.filter((key) => !oldSet.has(key));
27963
- return {
27964
- toDelete,
27965
- toAdd
27966
- };
27967
- }
27968
- __name(calculateShadowDiff, "calculateShadowDiff");
27969
- function isDiffEmpty(diff) {
27970
- return diff.toDelete.length === 0 && diff.toAdd.length === 0;
27971
- }
27972
- __name(isDiffEmpty, "isDiffEmpty");
27973
-
27974
28006
  // src/server/shadow/config.ts
27975
28007
  var cachedShadowConfig = null;
27976
28008
  function getShadowConfig() {
@@ -27994,9 +28026,6 @@ __name(getShadowConfig, "getShadowConfig");
27994
28026
 
27995
28027
  // src/server/utils/bulkOperations.ts
27996
28028
  var logger2 = createLogger({ service: "records-lambda" });
27997
- var LAMBDA_TIMEOUT_MS = 15 * 60 * 1e3;
27998
- var LARGE_BATCH_WARNING_THRESHOLD = 1e3;
27999
- var TIMEOUT_RISK_THRESHOLD = 0.2;
28000
28029
  function logLargeBatchWarning(operation2, recordCount, requestId, resource) {
28001
28030
  if (recordCount > LARGE_BATCH_WARNING_THRESHOLD) {
28002
28031
  logger2.warn(`Large batch ${operation2} operation detected`, {
@@ -28078,7 +28107,6 @@ __name(logPartialFailure, "logPartialFailure");
28078
28107
 
28079
28108
  // src/server/utils/chunking.ts
28080
28109
  var logger3 = createLogger({ service: "records-lambda" });
28081
- var DYNAMODB_TRANSACT_WRITE_MAX_ITEMS = 100;
28082
28110
  function calculateChunks(records, getItemCount) {
28083
28111
  const chunks = [];
28084
28112
  const itemCounts = [];
@@ -28286,7 +28314,7 @@ async function handleDeleteMany(resource, params, requestId) {
28286
28314
  const tableName = getTableName();
28287
28315
  const keys = ids.map((id) => ({
28288
28316
  PK: resource,
28289
- SK: generateMainRecordSK(id)
28317
+ SK: generateMainRecordSK2(id)
28290
28318
  }));
28291
28319
  const batchGetResult = await executeDynamoDBOperation(
28292
28320
  () => dbClient2.send(
@@ -28311,7 +28339,7 @@ async function handleDeleteMany(resource, params, requestId) {
28311
28339
  existingIds.add(id);
28312
28340
  preparedRecords.push({
28313
28341
  id,
28314
- mainSK: generateMainRecordSK(id),
28342
+ mainSK: generateMainRecordSK2(id),
28315
28343
  shadowKeys
28316
28344
  });
28317
28345
  }
@@ -28485,7 +28513,7 @@ async function handleDeleteOne(resource, params, requestId) {
28485
28513
  });
28486
28514
  const dbClient2 = getDBClient();
28487
28515
  const tableName = getTableName();
28488
- const mainSK = generateMainRecordSK(id);
28516
+ const mainSK = generateMainRecordSK2(id);
28489
28517
  const getResult = await executeDynamoDBOperation(
28490
28518
  () => dbClient2.send(
28491
28519
  new import_lib_dynamodb3.GetCommand({
@@ -28543,8 +28571,27 @@ async function handleDeleteOne(resource, params, requestId) {
28543
28571
  }
28544
28572
  __name(handleDeleteOne, "handleDeleteOne");
28545
28573
 
28546
- // src/server/operations/find.ts
28547
- var import_lib_dynamodb4 = __toESM(require_dist_cjs60(), 1);
28574
+ // src/server/utils/validation.ts
28575
+ function validateSortField(_config, _resource, _sort) {
28576
+ return;
28577
+ }
28578
+ __name(validateSortField, "validateSortField");
28579
+ function normalizePagination(pagination) {
28580
+ const perPage = Math.min(pagination?.perPage || 50, 50);
28581
+ const nextToken = pagination?.nextToken;
28582
+ return { perPage, nextToken };
28583
+ }
28584
+ __name(normalizePagination, "normalizePagination");
28585
+ function normalizeSort(config, _resource, sort) {
28586
+ if (sort) {
28587
+ return sort;
28588
+ }
28589
+ return {
28590
+ field: config.updatedAtField,
28591
+ order: "DESC"
28592
+ };
28593
+ }
28594
+ __name(normalizeSort, "normalizeSort");
28548
28595
 
28549
28596
  // src/server/utils/filter.ts
28550
28597
  function parseFilterField(fieldKey) {
@@ -28581,60 +28628,89 @@ function isValidType(type) {
28581
28628
  return ["string", "number", "date", "boolean"].includes(type);
28582
28629
  }
28583
28630
  __name(isValidType, "isValidType");
28584
- function convertType(value, type) {
28585
- switch (type) {
28586
- case "string":
28587
- return String(value);
28588
- case "number":
28589
- return Number(value);
28590
- case "date":
28591
- return new Date(String(value));
28592
- case "boolean":
28593
- if (typeof value === "boolean") return value;
28594
- return String(value).toLowerCase() === "true";
28595
- default:
28596
- return String(value);
28597
- }
28631
+
28632
+ // src/server/operations/find/utils.ts
28633
+ var logger7 = createLogger({
28634
+ service: "find-utils",
28635
+ level: process.env.LOG_LEVEL || "info"
28636
+ });
28637
+ function initializeFindConfig() {
28638
+ return getShadowConfig();
28598
28639
  }
28599
- __name(convertType, "convertType");
28600
- function matchesFilter(record, parsed, value) {
28601
- const fieldValue = record[parsed.field];
28602
- if (fieldValue === void 0 || fieldValue === null) {
28603
- return false;
28640
+ __name(initializeFindConfig, "initializeFindConfig");
28641
+ function normalizeFindParams(config, resource, params) {
28642
+ const sort = normalizeSort(config, resource, params.sort);
28643
+ const pagination = normalizePagination(params.pagination);
28644
+ const parsedFilters = parseFilters(params.filter);
28645
+ return {
28646
+ sort,
28647
+ pagination,
28648
+ parsedFilters
28649
+ };
28650
+ }
28651
+ __name(normalizeFindParams, "normalizeFindParams");
28652
+ function parseFilters(filter) {
28653
+ const parsedFilters = [];
28654
+ if (!filter || Object.keys(filter).length === 0) {
28655
+ return parsedFilters;
28604
28656
  }
28605
- const typedFieldValue = convertType(fieldValue, parsed.type);
28606
- const typedFilterValue = convertType(value, parsed.type);
28607
- switch (parsed.operator) {
28608
- case "eq":
28609
- return typedFieldValue === typedFilterValue;
28610
- case "lt":
28611
- return typedFieldValue < typedFilterValue;
28612
- case "lte":
28613
- return typedFieldValue <= typedFilterValue;
28614
- case "gt":
28615
- return typedFieldValue > typedFilterValue;
28616
- case "gte":
28617
- return typedFieldValue >= typedFilterValue;
28618
- case "starts":
28619
- return String(typedFieldValue).startsWith(String(typedFilterValue));
28620
- case "ends":
28621
- return String(typedFieldValue).endsWith(String(typedFilterValue));
28622
- default:
28623
- return false;
28657
+ for (const [fieldKey, value] of Object.entries(filter)) {
28658
+ try {
28659
+ const parsed = parseFilterField(fieldKey);
28660
+ parsedFilters.push({ parsed, value });
28661
+ } catch (error2) {
28662
+ logger7.error("Invalid filter field syntax", {
28663
+ fieldKey,
28664
+ error: error2 instanceof Error ? error2.message : String(error2)
28665
+ });
28666
+ throw new ConfigError(`Invalid filter field syntax: ${fieldKey}`, {
28667
+ field: fieldKey,
28668
+ error: error2 instanceof Error ? error2.message : String(error2)
28669
+ });
28670
+ }
28624
28671
  }
28672
+ return parsedFilters;
28625
28673
  }
28626
- __name(matchesFilter, "matchesFilter");
28627
- function matchesAllFilters(record, parsedFilters) {
28628
- return parsedFilters.every((f4) => matchesFilter(record, f4.parsed, f4.value));
28629
- }
28630
- __name(matchesAllFilters, "matchesAllFilters");
28674
+ __name(parseFilters, "parseFilters");
28631
28675
  function findOptimizableFilter(sortField, parsedFilters) {
28632
- const queryableOperators = ["eq", "lt", "lte", "gt", "gte", "starts"];
28633
28676
  return parsedFilters.find(
28634
- (f4) => f4.parsed.field === sortField && queryableOperators.includes(f4.parsed.operator)
28635
- ) || null;
28677
+ (filter) => filter.parsed.field === sortField
28678
+ );
28636
28679
  }
28637
28680
  __name(findOptimizableFilter, "findOptimizableFilter");
28681
+ function matchesAllFilters(record, parsedFilters) {
28682
+ return parsedFilters.every((filter) => {
28683
+ const { field, operator } = filter.parsed;
28684
+ const recordValue = record[field];
28685
+ const filterValue = filter.value;
28686
+ switch (operator) {
28687
+ case "eq":
28688
+ return recordValue === filterValue;
28689
+ case "ne":
28690
+ return recordValue !== filterValue;
28691
+ case "gt":
28692
+ return recordValue != null && recordValue > filterValue;
28693
+ case "gte":
28694
+ return recordValue != null && recordValue >= filterValue;
28695
+ case "lt":
28696
+ return recordValue != null && recordValue < filterValue;
28697
+ case "lte":
28698
+ return recordValue != null && recordValue <= filterValue;
28699
+ case "in":
28700
+ return Array.isArray(filterValue) && filterValue.includes(recordValue);
28701
+ case "nin":
28702
+ return Array.isArray(filterValue) && !filterValue.includes(recordValue);
28703
+ case "starts":
28704
+ return typeof recordValue === "string" && typeof filterValue === "string" && recordValue.startsWith(filterValue);
28705
+ default:
28706
+ return true;
28707
+ }
28708
+ });
28709
+ }
28710
+ __name(matchesAllFilters, "matchesAllFilters");
28711
+
28712
+ // src/server/operations/find/idQuery.ts
28713
+ var import_lib_dynamodb4 = __toESM(require_dist_cjs60(), 1);
28638
28714
 
28639
28715
  // src/server/utils/pagination.ts
28640
28716
  function encodeNextToken(pk, sk) {
@@ -28666,173 +28742,71 @@ function decodeNextToken(token) {
28666
28742
  }
28667
28743
  __name(decodeNextToken, "decodeNextToken");
28668
28744
 
28669
- // src/server/utils/validation.ts
28670
- function validateSortField(_config, _resource, _sort) {
28671
- return;
28672
- }
28673
- __name(validateSortField, "validateSortField");
28674
- function normalizePagination(pagination) {
28675
- const perPage = Math.min(pagination?.perPage || 50, 50);
28676
- const nextToken = pagination?.nextToken;
28677
- return { perPage, nextToken };
28678
- }
28679
- __name(normalizePagination, "normalizePagination");
28680
- function normalizeSort(config, _resource, sort) {
28681
- if (sort) {
28682
- return sort;
28683
- }
28684
- return {
28685
- field: config.updatedAtField,
28686
- order: "DESC"
28687
- };
28688
- }
28689
- __name(normalizeSort, "normalizeSort");
28690
-
28691
- // src/server/operations/find.ts
28692
- var logger7 = createLogger({ service: "records-lambda" });
28693
- async function handleFind(resource, params, requestId) {
28694
- logger7.debug("Executing find", {
28695
- requestId,
28696
- resource,
28697
- params
28698
- });
28699
- const shadowConfig = getShadowConfig();
28700
- logger7.debug("Shadow config loaded", {
28701
- requestId,
28702
- resource,
28703
- createdAtField: shadowConfig.createdAtField,
28704
- updatedAtField: shadowConfig.updatedAtField
28705
- });
28706
- logger7.debug("Normalizing sort", {
28707
- requestId,
28708
- resource,
28709
- inputSort: params.sort
28710
- });
28711
- const sort = normalizeSort(shadowConfig, resource, params.sort);
28712
- logger7.debug("Sort normalized", {
28713
- requestId,
28714
- resource,
28715
- sort
28716
- });
28717
- validateSortField(shadowConfig, resource, sort);
28718
- const { perPage, nextToken } = normalizePagination(params.pagination);
28719
- const parsedFilters = [];
28720
- if (params.filter && Object.keys(params.filter).length > 0) {
28721
- for (const [fieldKey, value] of Object.entries(params.filter)) {
28722
- try {
28723
- const parsed = parseFilterField(fieldKey);
28724
- parsedFilters.push({ parsed, value });
28725
- } catch (error2) {
28726
- logger7.error("Invalid filter field syntax", {
28727
- requestId,
28728
- fieldKey,
28729
- error: error2 instanceof Error ? error2.message : String(error2)
28730
- });
28731
- throw new ConfigError(`Invalid filter field syntax: ${fieldKey}`, {
28732
- field: fieldKey,
28733
- error: error2 instanceof Error ? error2.message : String(error2)
28734
- });
28735
- }
28736
- }
28737
- }
28738
- const dbClient2 = getDBClient();
28739
- const tableName = getTableName();
28740
- if (sort.field === "id") {
28741
- const idFilter = parsedFilters.find((f4) => f4.parsed.field === "id");
28742
- if (idFilter && idFilter.parsed.operator === "eq") {
28743
- const targetId = String(idFilter.value);
28744
- const queryResult3 = await executeDynamoDBOperation(
28745
- () => dbClient2.send(
28746
- new import_lib_dynamodb4.QueryCommand({
28747
- TableName: tableName,
28748
- KeyConditionExpression: "PK = :pk AND SK = :sk",
28749
- ExpressionAttributeValues: {
28750
- ":pk": resource,
28751
- ":sk": `id#${targetId}`
28752
- },
28753
- ConsistentRead: true
28754
- })
28755
- ),
28756
- "Query"
28757
- );
28758
- const mainRecords3 = queryResult3.Items || [];
28759
- const items3 = mainRecords3.map((item) => extractCleanRecord(item));
28760
- logger7.info("find succeeded (id sort optimization with filter)", {
28761
- requestId,
28762
- resource,
28763
- count: items3.length,
28764
- hasNextPage: false
28765
- });
28766
- return {
28767
- items: items3,
28768
- pageInfo: {
28769
- hasNextPage: false,
28770
- hasPreviousPage: false
28771
- }
28772
- };
28773
- }
28774
- let exclusiveStartKey2;
28775
- if (nextToken) {
28776
- const decoded = decodeNextToken(nextToken);
28777
- exclusiveStartKey2 = {
28778
- PK: decoded.PK,
28779
- SK: decoded.SK
28780
- };
28781
- }
28782
- const queryResult2 = await executeDynamoDBOperation(
28783
- () => dbClient2.send(
28784
- new import_lib_dynamodb4.QueryCommand({
28785
- TableName: tableName,
28786
- KeyConditionExpression: "PK = :pk AND begins_with(SK, :skPrefix)",
28787
- ExpressionAttributeValues: {
28788
- ":pk": resource,
28789
- ":skPrefix": "id#"
28790
- },
28791
- ScanIndexForward: sort.order === "ASC",
28792
- // ASC: true, DESC: false
28793
- Limit: perPage,
28794
- ExclusiveStartKey: exclusiveStartKey2,
28795
- ConsistentRead: true
28796
- })
28797
- ),
28798
- "Query"
28799
- );
28800
- const mainRecords2 = queryResult2.Items || [];
28801
- if (mainRecords2.length === 0) {
28802
- return {
28803
- items: [],
28804
- pageInfo: {
28805
- hasNextPage: false,
28806
- hasPreviousPage: false
28807
- }
28808
- };
28809
- }
28810
- let items2 = mainRecords2.map((item) => extractCleanRecord(item));
28811
- if (parsedFilters.length > 0) {
28812
- items2 = items2.filter((record) => matchesAllFilters(record, parsedFilters));
28813
- }
28814
- const hasNextPage2 = mainRecords2.length < perPage ? false : queryResult2.LastEvaluatedKey !== void 0;
28815
- const nextTokenValue2 = hasNextPage2 && queryResult2.LastEvaluatedKey ? encodeNextToken(
28816
- queryResult2.LastEvaluatedKey.PK,
28817
- queryResult2.LastEvaluatedKey.SK
28818
- ) : void 0;
28819
- logger7.info("find succeeded (id sort optimization)", {
28820
- requestId,
28821
- resource,
28822
- count: items2.length,
28823
- hasNextPage: hasNextPage2
28824
- });
28825
- return {
28826
- items: items2,
28827
- pageInfo: {
28828
- hasNextPage: hasNextPage2,
28829
- hasPreviousPage: !!nextToken
28830
- },
28831
- ...nextTokenValue2 && { nextToken: nextTokenValue2 }
28832
- };
28745
+ // src/server/operations/find/idQuery.ts
28746
+ var logger8 = createLogger({
28747
+ service: "id-query",
28748
+ level: process.env.LOG_LEVEL || "info"
28749
+ });
28750
+ async function executeIdQuery(resource, normalizedParams, requestId) {
28751
+ const { sort, pagination, parsedFilters } = normalizedParams;
28752
+ const { perPage, nextToken } = pagination;
28753
+ logger8.debug("Executing ID optimized query", {
28754
+ requestId,
28755
+ resource,
28756
+ sort,
28757
+ hasFilters: parsedFilters.length > 0
28758
+ });
28759
+ const idFilter = parsedFilters.find((f4) => f4.parsed.field === "id");
28760
+ if (idFilter && idFilter.parsed.operator === "eq") {
28761
+ return await executeSpecificIdQuery(resource, String(idFilter.value), requestId);
28833
28762
  }
28834
- const optimizableFilter = findOptimizableFilter(sort.field, parsedFilters);
28835
- const skPrefix = `${sort.field}#`;
28763
+ return await executeAllRecordsQuery(
28764
+ resource,
28765
+ sort,
28766
+ perPage,
28767
+ nextToken,
28768
+ parsedFilters,
28769
+ requestId
28770
+ );
28771
+ }
28772
+ __name(executeIdQuery, "executeIdQuery");
28773
+ async function executeSpecificIdQuery(resource, targetId, requestId) {
28774
+ const dbClient2 = getDBClient();
28775
+ const tableName = getTableName();
28776
+ const queryResult = await executeDynamoDBOperation(
28777
+ () => dbClient2.send(
28778
+ new import_lib_dynamodb4.QueryCommand({
28779
+ TableName: tableName,
28780
+ KeyConditionExpression: "PK = :pk AND SK = :sk",
28781
+ ExpressionAttributeValues: {
28782
+ ":pk": resource,
28783
+ ":sk": `id#${targetId}`
28784
+ },
28785
+ ConsistentRead: true
28786
+ })
28787
+ ),
28788
+ "Query"
28789
+ );
28790
+ const mainRecords = queryResult.Items || [];
28791
+ const items = mainRecords.map((item) => extractCleanRecord(item));
28792
+ logger8.info("ID specific query succeeded", {
28793
+ requestId,
28794
+ resource,
28795
+ targetId,
28796
+ count: items.length
28797
+ });
28798
+ return {
28799
+ items,
28800
+ pageInfo: {
28801
+ hasNextPage: false,
28802
+ hasPreviousPage: false
28803
+ }
28804
+ };
28805
+ }
28806
+ __name(executeSpecificIdQuery, "executeSpecificIdQuery");
28807
+ async function executeAllRecordsQuery(resource, sort, perPage, nextToken, parsedFilters, requestId) {
28808
+ const dbClient2 = getDBClient();
28809
+ const tableName = getTableName();
28836
28810
  let exclusiveStartKey;
28837
28811
  if (nextToken) {
28838
28812
  const decoded = decodeNextToken(nextToken);
@@ -28841,73 +28815,16 @@ async function handleFind(resource, params, requestId) {
28841
28815
  SK: decoded.SK
28842
28816
  };
28843
28817
  }
28844
- let keyConditionExpression;
28845
- const expressionAttributeValues = {
28846
- ":pk": resource
28847
- };
28848
- if (optimizableFilter) {
28849
- const { operator, type } = optimizableFilter.parsed;
28850
- const value = optimizableFilter.value;
28851
- let encodedValue;
28852
- if (type === "number") {
28853
- encodedValue = String(value).padStart(20, "0");
28854
- } else if (type === "date") {
28855
- encodedValue = new Date(String(value)).toISOString();
28856
- } else if (type === "boolean") {
28857
- encodedValue = String(value);
28858
- } else {
28859
- encodedValue = String(value).replace(/#/g, "##").replace(/ /g, "#");
28860
- }
28861
- const skValue = `${sort.field}#${encodedValue}`;
28862
- switch (operator) {
28863
- case "eq":
28864
- keyConditionExpression = "PK = :pk AND begins_with(SK, :skValue)";
28865
- expressionAttributeValues[":skValue"] = `${skValue}#id#`;
28866
- break;
28867
- case "gt":
28868
- keyConditionExpression = "PK = :pk AND SK > :skValue";
28869
- expressionAttributeValues[":skValue"] = `${skValue}#id#~`;
28870
- break;
28871
- case "gte":
28872
- keyConditionExpression = "PK = :pk AND SK >= :skValue";
28873
- expressionAttributeValues[":skValue"] = `${skValue}#id#`;
28874
- break;
28875
- case "lt":
28876
- keyConditionExpression = "PK = :pk AND SK < :skValue";
28877
- expressionAttributeValues[":skValue"] = `${skValue}#id#`;
28878
- break;
28879
- case "lte":
28880
- keyConditionExpression = "PK = :pk AND SK <= :skValue";
28881
- expressionAttributeValues[":skValue"] = `${skValue}#id#~`;
28882
- break;
28883
- case "starts":
28884
- keyConditionExpression = "PK = :pk AND begins_with(SK, :skValue)";
28885
- expressionAttributeValues[":skValue"] = `${skValue}`;
28886
- break;
28887
- default:
28888
- keyConditionExpression = "PK = :pk AND begins_with(SK, :skPrefix)";
28889
- expressionAttributeValues[":skPrefix"] = skPrefix;
28890
- }
28891
- logger7.debug("Query optimization applied", {
28892
- requestId,
28893
- sortField: sort.field,
28894
- operator,
28895
- type,
28896
- value,
28897
- skValue
28898
- });
28899
- } else {
28900
- keyConditionExpression = "PK = :pk AND begins_with(SK, :skPrefix)";
28901
- expressionAttributeValues[":skPrefix"] = skPrefix;
28902
- }
28903
28818
  const queryResult = await executeDynamoDBOperation(
28904
28819
  () => dbClient2.send(
28905
28820
  new import_lib_dynamodb4.QueryCommand({
28906
28821
  TableName: tableName,
28907
- KeyConditionExpression: keyConditionExpression,
28908
- ExpressionAttributeValues: expressionAttributeValues,
28822
+ KeyConditionExpression: "PK = :pk AND begins_with(SK, :skPrefix)",
28823
+ ExpressionAttributeValues: {
28824
+ ":pk": resource,
28825
+ ":skPrefix": "id#"
28826
+ },
28909
28827
  ScanIndexForward: sort.order === "ASC",
28910
- // ASC: true, DESC: false
28911
28828
  Limit: perPage,
28912
28829
  ExclusiveStartKey: exclusiveStartKey,
28913
28830
  ConsistentRead: true
@@ -28915,8 +28832,8 @@ async function handleFind(resource, params, requestId) {
28915
28832
  ),
28916
28833
  "Query"
28917
28834
  );
28918
- const shadowItems = queryResult.Items || [];
28919
- if (shadowItems.length === 0) {
28835
+ const mainRecords = queryResult.Items || [];
28836
+ if (mainRecords.length === 0) {
28920
28837
  return {
28921
28838
  items: [],
28922
28839
  pageInfo: {
@@ -28925,29 +28842,67 @@ async function handleFind(resource, params, requestId) {
28925
28842
  }
28926
28843
  };
28927
28844
  }
28928
- const recordIds = shadowItems.map((item) => {
28929
- const sk = item.SK;
28930
- const parts = sk.split("#id#");
28931
- return parts[parts.length - 1];
28845
+ let items = mainRecords.map((item) => extractCleanRecord(item));
28846
+ if (parsedFilters.length > 0) {
28847
+ items = items.filter((record) => matchesAllFilters(record, parsedFilters));
28848
+ }
28849
+ const hasNextPage = mainRecords.length < perPage ? false : queryResult.LastEvaluatedKey !== void 0;
28850
+ const nextTokenValue = hasNextPage && queryResult.LastEvaluatedKey ? encodeNextToken(
28851
+ queryResult.LastEvaluatedKey.PK,
28852
+ queryResult.LastEvaluatedKey.SK
28853
+ ) : void 0;
28854
+ logger8.info("ID all records query succeeded", {
28855
+ requestId,
28856
+ resource,
28857
+ count: items.length,
28858
+ hasNextPage
28932
28859
  });
28933
- const uniqueRecordIds = Array.from(new Set(recordIds));
28934
- const batchGetResult = await executeDynamoDBOperation(
28935
- () => dbClient2.send(
28936
- new import_lib_dynamodb4.BatchGetCommand({
28937
- RequestItems: {
28938
- [tableName]: {
28939
- Keys: uniqueRecordIds.map((id) => ({
28940
- PK: resource,
28941
- SK: `id#${id}`
28942
- })),
28943
- ConsistentRead: true
28944
- }
28945
- }
28946
- })
28947
- ),
28948
- "BatchGetItem"
28860
+ return {
28861
+ items,
28862
+ pageInfo: {
28863
+ hasNextPage,
28864
+ hasPreviousPage: !!nextToken
28865
+ },
28866
+ ...nextTokenValue && { nextToken: nextTokenValue }
28867
+ };
28868
+ }
28869
+ __name(executeAllRecordsQuery, "executeAllRecordsQuery");
28870
+
28871
+ // src/server/operations/find/shadowQuery.ts
28872
+ var import_lib_dynamodb5 = __toESM(require_dist_cjs60(), 1);
28873
+ var logger9 = createLogger({
28874
+ service: "shadow-query",
28875
+ level: process.env.LOG_LEVEL || "info"
28876
+ });
28877
+ async function executeShadowQuery(resource, normalizedParams, requestId) {
28878
+ const { sort, pagination, parsedFilters } = normalizedParams;
28879
+ const { perPage, nextToken } = pagination;
28880
+ logger9.debug("Executing shadow query", {
28881
+ requestId,
28882
+ resource,
28883
+ sortField: sort.field,
28884
+ hasFilters: parsedFilters.length > 0
28885
+ });
28886
+ const optimizableFilter = findOptimizableFilter(sort.field, parsedFilters);
28887
+ const shadowRecords = await executeShadowRecordQuery(
28888
+ resource,
28889
+ sort,
28890
+ perPage,
28891
+ nextToken,
28892
+ optimizableFilter,
28893
+ requestId
28949
28894
  );
28950
- const mainRecords = batchGetResult.Responses?.[tableName] || [];
28895
+ const recordIds = extractRecordIds(shadowRecords.Items || []);
28896
+ if (recordIds.length === 0) {
28897
+ return {
28898
+ items: [],
28899
+ pageInfo: {
28900
+ hasNextPage: false,
28901
+ hasPreviousPage: false
28902
+ }
28903
+ };
28904
+ }
28905
+ const mainRecords = await fetchMainRecords(resource, recordIds, requestId);
28951
28906
  const recordMap = new Map(
28952
28907
  mainRecords.map((item) => {
28953
28908
  const data2 = item.data;
@@ -28963,25 +28918,19 @@ async function handleFind(resource, params, requestId) {
28963
28918
  return true;
28964
28919
  }).map((id) => recordMap.get(id)).filter((record) => record !== void 0);
28965
28920
  if (parsedFilters.length > 0) {
28966
- const itemsBeforeFilter = items.length;
28967
28921
  items = items.filter((record) => matchesAllFilters(record, parsedFilters));
28968
- logger7.debug("Memory filtering applied", {
28969
- requestId,
28970
- filtersCount: parsedFilters.length,
28971
- itemsBeforeFilter,
28972
- itemsAfterFilter: items.length,
28973
- filtered: itemsBeforeFilter - items.length
28974
- });
28975
28922
  }
28976
- const hasNextPage = shadowItems.length < perPage ? false : queryResult.LastEvaluatedKey !== void 0;
28977
- const nextTokenValue = hasNextPage && queryResult.LastEvaluatedKey ? encodeNextToken(
28978
- queryResult.LastEvaluatedKey.PK,
28979
- queryResult.LastEvaluatedKey.SK
28923
+ const hasNextPage = (shadowRecords.Items?.length || 0) < perPage ? false : shadowRecords.LastEvaluatedKey !== void 0;
28924
+ const nextTokenValue = hasNextPage && shadowRecords.LastEvaluatedKey ? encodeNextToken(
28925
+ shadowRecords.LastEvaluatedKey.PK,
28926
+ shadowRecords.LastEvaluatedKey.SK
28980
28927
  ) : void 0;
28981
- logger7.info("find succeeded", {
28928
+ logger9.info("Shadow query succeeded", {
28982
28929
  requestId,
28983
28930
  resource,
28984
- count: items.length,
28931
+ sortField: sort.field,
28932
+ shadowCount: shadowRecords.Items?.length || 0,
28933
+ mainCount: items.length,
28985
28934
  hasNextPage
28986
28935
  });
28987
28936
  return {
@@ -28993,14 +28942,195 @@ async function handleFind(resource, params, requestId) {
28993
28942
  ...nextTokenValue && { nextToken: nextTokenValue }
28994
28943
  };
28995
28944
  }
28945
+ __name(executeShadowQuery, "executeShadowQuery");
28946
+ async function executeShadowRecordQuery(resource, sort, perPage, nextToken, optimizableFilter, _requestId) {
28947
+ const dbClient2 = getDBClient();
28948
+ const tableName = getTableName();
28949
+ let exclusiveStartKey;
28950
+ if (nextToken) {
28951
+ const decoded = decodeNextToken(nextToken);
28952
+ exclusiveStartKey = {
28953
+ PK: decoded.PK,
28954
+ SK: decoded.SK
28955
+ };
28956
+ }
28957
+ const { keyConditionExpression, expressionAttributeValues } = buildKeyCondition(
28958
+ resource,
28959
+ sort.field,
28960
+ optimizableFilter
28961
+ );
28962
+ return await executeDynamoDBOperation(
28963
+ () => dbClient2.send(
28964
+ new import_lib_dynamodb5.QueryCommand({
28965
+ TableName: tableName,
28966
+ KeyConditionExpression: keyConditionExpression,
28967
+ ExpressionAttributeValues: expressionAttributeValues,
28968
+ ScanIndexForward: sort.order === "ASC",
28969
+ Limit: perPage,
28970
+ ExclusiveStartKey: exclusiveStartKey,
28971
+ ConsistentRead: true
28972
+ })
28973
+ ),
28974
+ "Query"
28975
+ );
28976
+ }
28977
+ __name(executeShadowRecordQuery, "executeShadowRecordQuery");
28978
+ function buildKeyCondition(resource, sortField, optimizableFilter) {
28979
+ const expressionAttributeValues = {
28980
+ ":pk": resource
28981
+ };
28982
+ if (!optimizableFilter) {
28983
+ return {
28984
+ keyConditionExpression: "PK = :pk AND begins_with(SK, :skPrefix)",
28985
+ expressionAttributeValues: {
28986
+ ...expressionAttributeValues,
28987
+ ":skPrefix": `${sortField}#`
28988
+ }
28989
+ };
28990
+ }
28991
+ const { operator, type } = optimizableFilter.parsed;
28992
+ const value = optimizableFilter.value;
28993
+ const encodedValue = encodeValueForShadowSK(value, type);
28994
+ const skValue = `${sortField}#${encodedValue}`;
28995
+ switch (operator) {
28996
+ case "eq":
28997
+ return {
28998
+ keyConditionExpression: "PK = :pk AND begins_with(SK, :skValue)",
28999
+ expressionAttributeValues: {
29000
+ ...expressionAttributeValues,
29001
+ ":skValue": `${skValue}#id#`
29002
+ }
29003
+ };
29004
+ case "gt":
29005
+ return {
29006
+ keyConditionExpression: "PK = :pk AND SK > :skValue",
29007
+ expressionAttributeValues: {
29008
+ ...expressionAttributeValues,
29009
+ ":skValue": `${skValue}#id#~`
29010
+ }
29011
+ };
29012
+ case "gte":
29013
+ return {
29014
+ keyConditionExpression: "PK = :pk AND SK >= :skValue",
29015
+ expressionAttributeValues: {
29016
+ ...expressionAttributeValues,
29017
+ ":skValue": `${skValue}#id#`
29018
+ }
29019
+ };
29020
+ case "lt":
29021
+ return {
29022
+ keyConditionExpression: "PK = :pk AND begins_with(SK, :skPrefix) AND SK < :skValue",
29023
+ expressionAttributeValues: {
29024
+ ...expressionAttributeValues,
29025
+ ":skPrefix": `${sortField}#`,
29026
+ ":skValue": `${skValue}#id#`
29027
+ }
29028
+ };
29029
+ case "lte":
29030
+ return {
29031
+ keyConditionExpression: "PK = :pk AND begins_with(SK, :skPrefix) AND SK <= :skValue",
29032
+ expressionAttributeValues: {
29033
+ ...expressionAttributeValues,
29034
+ ":skPrefix": `${sortField}#`,
29035
+ ":skValue": `${skValue}#id#~`
29036
+ }
29037
+ };
29038
+ default:
29039
+ return {
29040
+ keyConditionExpression: "PK = :pk AND begins_with(SK, :skPrefix)",
29041
+ expressionAttributeValues: {
29042
+ ...expressionAttributeValues,
29043
+ ":skPrefix": `${sortField}#`
29044
+ }
29045
+ };
29046
+ }
29047
+ }
29048
+ __name(buildKeyCondition, "buildKeyCondition");
29049
+ function encodeValueForShadowSK(value, type) {
29050
+ if (type === "number") {
29051
+ return String(value).padStart(20, "0");
29052
+ } else if (type === "date") {
29053
+ return new Date(String(value)).toISOString();
29054
+ } else if (type === "boolean") {
29055
+ return String(value);
29056
+ } else {
29057
+ return String(value).replace(/#/g, "##").replace(/ /g, "#");
29058
+ }
29059
+ }
29060
+ __name(encodeValueForShadowSK, "encodeValueForShadowSK");
29061
+ function extractRecordIds(shadowRecords) {
29062
+ return shadowRecords.map((record) => {
29063
+ const sk = record.SK;
29064
+ const parts = sk.split("#id#");
29065
+ return parts.length > 1 ? parts[1] : null;
29066
+ }).filter((id) => id !== null);
29067
+ }
29068
+ __name(extractRecordIds, "extractRecordIds");
29069
+ async function fetchMainRecords(resource, recordIds, requestId) {
29070
+ const dbClient2 = getDBClient();
29071
+ const tableName = getTableName();
29072
+ const uniqueRecordIds = Array.from(new Set(recordIds));
29073
+ const batchGetResult = await executeDynamoDBOperation(
29074
+ () => dbClient2.send(
29075
+ new import_lib_dynamodb5.BatchGetCommand({
29076
+ RequestItems: {
29077
+ [tableName]: {
29078
+ Keys: uniqueRecordIds.map((id) => ({
29079
+ PK: resource,
29080
+ SK: `id#${id}`
29081
+ })),
29082
+ ConsistentRead: true
29083
+ }
29084
+ }
29085
+ })
29086
+ ),
29087
+ "BatchGetItem"
29088
+ );
29089
+ const mainRecords = batchGetResult.Responses?.[tableName] || [];
29090
+ logger9.debug("Main records fetched", {
29091
+ requestId,
29092
+ resource,
29093
+ requestedCount: uniqueRecordIds.length,
29094
+ fetchedCount: mainRecords.length
29095
+ });
29096
+ return mainRecords;
29097
+ }
29098
+ __name(fetchMainRecords, "fetchMainRecords");
29099
+
29100
+ // src/server/operations/find/handler.ts
29101
+ var logger10 = createLogger({
29102
+ service: "find-handler",
29103
+ level: process.env.LOG_LEVEL || "info"
29104
+ });
29105
+ async function handleFind(resource, params, requestId) {
29106
+ logger10.debug("Executing find", {
29107
+ requestId,
29108
+ resource,
29109
+ params
29110
+ });
29111
+ const config = initializeFindConfig();
29112
+ const normalizedParams = normalizeFindParams(config, resource, params);
29113
+ validateSortField(config, resource, normalizedParams.sort);
29114
+ logger10.debug("Find parameters normalized", {
29115
+ requestId,
29116
+ resource,
29117
+ sort: normalizedParams.sort,
29118
+ pagination: normalizedParams.pagination,
29119
+ filterCount: normalizedParams.parsedFilters.length
29120
+ });
29121
+ if (normalizedParams.sort.field === "id") {
29122
+ return executeIdQuery(resource, normalizedParams, requestId);
29123
+ }
29124
+ return executeShadowQuery(resource, normalizedParams, requestId);
29125
+ }
28996
29126
  __name(handleFind, "handleFind");
28997
29127
 
28998
29128
  // src/server/operations/findMany.ts
28999
- var import_lib_dynamodb5 = __toESM(require_dist_cjs60(), 1);
29000
- var logger8 = createLogger({ service: "records-lambda" });
29129
+ var import_lib_dynamodb6 = __toESM(require_dist_cjs60(), 1);
29130
+ var logger11 = createLogger({ service: "records-lambda" });
29001
29131
  async function handleFindMany(resource, params, requestId) {
29002
29132
  const { ids } = params;
29003
- logger8.debug("Executing findMany", {
29133
+ logger11.debug("Executing findMany", {
29004
29134
  requestId,
29005
29135
  resource,
29006
29136
  count: ids.length
@@ -29012,11 +29142,11 @@ async function handleFindMany(resource, params, requestId) {
29012
29142
  const tableName = getTableName();
29013
29143
  const keys = ids.map((id) => ({
29014
29144
  PK: resource,
29015
- SK: generateMainRecordSK(id)
29145
+ SK: generateMainRecordSK2(id)
29016
29146
  }));
29017
29147
  const result = await executeDynamoDBOperation(
29018
29148
  () => dbClient2.send(
29019
- new import_lib_dynamodb5.BatchGetCommand({
29149
+ new import_lib_dynamodb6.BatchGetCommand({
29020
29150
  RequestItems: {
29021
29151
  [tableName]: {
29022
29152
  Keys: keys,
@@ -29029,7 +29159,7 @@ async function handleFindMany(resource, params, requestId) {
29029
29159
  );
29030
29160
  const items = result.Responses?.[tableName] || [];
29031
29161
  const records = items.map((item) => extractCleanRecord(item));
29032
- logger8.info("findMany succeeded", {
29162
+ logger11.info("findMany succeeded", {
29033
29163
  requestId,
29034
29164
  resource,
29035
29165
  requested: ids.length,
@@ -29040,11 +29170,11 @@ async function handleFindMany(resource, params, requestId) {
29040
29170
  __name(handleFindMany, "handleFindMany");
29041
29171
 
29042
29172
  // src/server/operations/findManyReference.ts
29043
- var import_lib_dynamodb6 = __toESM(require_dist_cjs60(), 1);
29044
- var logger9 = createLogger({ service: "records-lambda" });
29173
+ var import_lib_dynamodb7 = __toESM(require_dist_cjs60(), 1);
29174
+ var logger12 = createLogger({ service: "records-lambda" });
29045
29175
  async function handleFindManyReference(resource, params, requestId) {
29046
29176
  const { target, id, filter, sort: sortParam, pagination } = params;
29047
- logger9.debug("Executing findManyReference", {
29177
+ logger12.debug("Executing findManyReference", {
29048
29178
  requestId,
29049
29179
  resource,
29050
29180
  target,
@@ -29067,7 +29197,7 @@ async function handleFindManyReference(resource, params, requestId) {
29067
29197
  }
29068
29198
  const queryResult = await executeDynamoDBOperation(
29069
29199
  () => dbClient2.send(
29070
- new import_lib_dynamodb6.QueryCommand({
29200
+ new import_lib_dynamodb7.QueryCommand({
29071
29201
  TableName: tableName,
29072
29202
  KeyConditionExpression: "PK = :pk AND begins_with(SK, :skPrefix)",
29073
29203
  ExpressionAttributeValues: {
@@ -29099,7 +29229,7 @@ async function handleFindManyReference(resource, params, requestId) {
29099
29229
  });
29100
29230
  const batchGetResult = await executeDynamoDBOperation(
29101
29231
  () => dbClient2.send(
29102
- new import_lib_dynamodb6.BatchGetCommand({
29232
+ new import_lib_dynamodb7.BatchGetCommand({
29103
29233
  RequestItems: {
29104
29234
  [tableName]: {
29105
29235
  Keys: recordIds.map((recordId) => ({
@@ -29134,7 +29264,7 @@ async function handleFindManyReference(resource, params, requestId) {
29134
29264
  queryResult.LastEvaluatedKey.PK,
29135
29265
  queryResult.LastEvaluatedKey.SK
29136
29266
  ) : void 0;
29137
- logger9.info("findManyReference succeeded", {
29267
+ logger12.info("findManyReference succeeded", {
29138
29268
  requestId,
29139
29269
  resource,
29140
29270
  target,
@@ -29154,21 +29284,21 @@ async function handleFindManyReference(resource, params, requestId) {
29154
29284
  __name(handleFindManyReference, "handleFindManyReference");
29155
29285
 
29156
29286
  // src/server/operations/findOne.ts
29157
- var import_lib_dynamodb7 = __toESM(require_dist_cjs60(), 1);
29158
- var logger10 = createLogger({ service: "records-lambda" });
29287
+ var import_lib_dynamodb8 = __toESM(require_dist_cjs60(), 1);
29288
+ var logger13 = createLogger({ service: "records-lambda" });
29159
29289
  async function handleFindOne(resource, params, requestId) {
29160
29290
  const { id } = params;
29161
- logger10.debug("Executing findOne", {
29291
+ logger13.debug("Executing findOne", {
29162
29292
  requestId,
29163
29293
  resource,
29164
29294
  id
29165
29295
  });
29166
29296
  const dbClient2 = getDBClient();
29167
29297
  const tableName = getTableName();
29168
- const sk = generateMainRecordSK(id);
29298
+ const sk = generateMainRecordSK2(id);
29169
29299
  const result = await executeDynamoDBOperation(
29170
29300
  () => dbClient2.send(
29171
- new import_lib_dynamodb7.GetCommand({
29301
+ new import_lib_dynamodb8.GetCommand({
29172
29302
  TableName: tableName,
29173
29303
  Key: {
29174
29304
  PK: resource,
@@ -29183,7 +29313,7 @@ async function handleFindOne(resource, params, requestId) {
29183
29313
  throw new ItemNotFoundError(`Record not found: ${id}`, { resource, id });
29184
29314
  }
29185
29315
  const record = extractCleanRecord(result.Item);
29186
- logger10.info("findOne succeeded", {
29316
+ logger13.info("findOne succeeded", {
29187
29317
  requestId,
29188
29318
  resource,
29189
29319
  id
@@ -29193,7 +29323,7 @@ async function handleFindOne(resource, params, requestId) {
29193
29323
  __name(handleFindOne, "handleFindOne");
29194
29324
 
29195
29325
  // src/server/operations/insertMany.ts
29196
- var import_lib_dynamodb8 = __toESM(require_dist_cjs60(), 1);
29326
+ var import_lib_dynamodb9 = __toESM(require_dist_cjs60(), 1);
29197
29327
 
29198
29328
  // src/server/utils/timestamps.ts
29199
29329
  function getTimestampFields() {
@@ -29231,7 +29361,7 @@ function addUpdateTimestamp(data2) {
29231
29361
  __name(addUpdateTimestamp, "addUpdateTimestamp");
29232
29362
 
29233
29363
  // src/server/utils/ttl.ts
29234
- var logger11 = createLogger({ service: "records-lambda" });
29364
+ var logger14 = createLogger({ service: "records-lambda" });
29235
29365
  function calculateTTL(resource, createdAt) {
29236
29366
  const envKey = `${resource.toUpperCase()}_TTL_DAYS`;
29237
29367
  const ttlDaysStr = process.env[envKey];
@@ -29240,13 +29370,13 @@ function calculateTTL(resource, createdAt) {
29240
29370
  }
29241
29371
  const ttlDays = parseInt(ttlDaysStr, 10);
29242
29372
  if (isNaN(ttlDays) || ttlDays <= 0) {
29243
- logger11.warn("Invalid TTL_DAYS value", { resource, envKey, value: ttlDaysStr });
29373
+ logger14.warn("Invalid TTL_DAYS value", { resource, envKey, value: ttlDaysStr });
29244
29374
  return void 0;
29245
29375
  }
29246
29376
  const createdAtMs = new Date(createdAt).getTime();
29247
29377
  const ttlMs = createdAtMs + ttlDays * 24 * 60 * 60 * 1e3;
29248
29378
  const ttl = Math.floor(ttlMs / 1e3);
29249
- logger11.debug("TTL calculated", {
29379
+ logger14.debug("TTL calculated", {
29250
29380
  resource,
29251
29381
  ttlDays,
29252
29382
  createdAt,
@@ -29259,7 +29389,7 @@ __name(calculateTTL, "calculateTTL");
29259
29389
  function addTTL(resource, recordData) {
29260
29390
  const createdAt = recordData.createdAt;
29261
29391
  if (!createdAt) {
29262
- logger11.warn("createdAt not found, skipping TTL calculation", { resource });
29392
+ logger14.warn("createdAt not found, skipping TTL calculation", { resource });
29263
29393
  return recordData;
29264
29394
  }
29265
29395
  const ttl = calculateTTL(resource, createdAt);
@@ -29274,11 +29404,11 @@ function addTTL(resource, recordData) {
29274
29404
  __name(addTTL, "addTTL");
29275
29405
 
29276
29406
  // src/server/operations/insertMany.ts
29277
- var logger12 = createLogger({ service: "records-lambda" });
29407
+ var logger15 = createLogger({ service: "records-lambda" });
29278
29408
  async function handleInsertMany(resource, params, requestId) {
29279
29409
  const { data: recordsData } = params;
29280
29410
  const startTime = Date.now();
29281
- logger12.debug("Executing insertMany", {
29411
+ logger15.debug("Executing insertMany", {
29282
29412
  requestId,
29283
29413
  resource,
29284
29414
  count: recordsData.length
@@ -29309,7 +29439,7 @@ async function handleInsertMany(resource, params, requestId) {
29309
29439
  fullRecordData = addTTL(resource, fullRecordData);
29310
29440
  const shadowRecords = generateShadowRecords(fullRecordData, resource, shadowConfig);
29311
29441
  const shadowKeys = shadowRecords.map((shadow) => shadow.SK);
29312
- const mainSK = generateMainRecordSK(id);
29442
+ const mainSK = generateMainRecordSK2(id);
29313
29443
  preparedRecords.push({
29314
29444
  id,
29315
29445
  fullRecordData,
@@ -29320,7 +29450,7 @@ async function handleInsertMany(resource, params, requestId) {
29320
29450
  const failedId = recordData.id || `temp-id-${i4}`;
29321
29451
  const errorMessage = error2 instanceof Error ? error2.message : "Unknown preparation error";
29322
29452
  const errorCode = getPreparationErrorCode(error2);
29323
- logger12.error("Failed to prepare record for creation", {
29453
+ logger15.error("Failed to prepare record for creation", {
29324
29454
  requestId,
29325
29455
  recordId: failedId,
29326
29456
  error: errorMessage,
@@ -29378,7 +29508,7 @@ async function handleInsertMany(resource, params, requestId) {
29378
29508
  }
29379
29509
  await executeDynamoDBOperation(
29380
29510
  () => dbClient2.send(
29381
- new import_lib_dynamodb8.TransactWriteCommand({
29511
+ new import_lib_dynamodb9.TransactWriteCommand({
29382
29512
  TransactItems: transactItems
29383
29513
  })
29384
29514
  ),
@@ -29480,10 +29610,10 @@ function getPreparationErrorCode(error2) {
29480
29610
  __name(getPreparationErrorCode, "getPreparationErrorCode");
29481
29611
 
29482
29612
  // src/server/operations/insertOne.ts
29483
- var import_lib_dynamodb9 = __toESM(require_dist_cjs60(), 1);
29484
- var logger13 = createLogger({ service: "records-lambda" });
29613
+ var import_lib_dynamodb10 = __toESM(require_dist_cjs60(), 1);
29614
+ var logger16 = createLogger({ service: "records-lambda" });
29485
29615
  async function handleInsertOne(resource, params, requestId) {
29486
- logger13.debug("Executing insertOne", {
29616
+ logger16.debug("Executing insertOne", {
29487
29617
  requestId,
29488
29618
  resource
29489
29619
  });
@@ -29497,10 +29627,10 @@ async function handleInsertOne(resource, params, requestId) {
29497
29627
  recordData = addTTL(resource, recordData);
29498
29628
  const shadowConfig = getShadowConfig();
29499
29629
  const shadowRecords = generateShadowRecords(recordData, resource, shadowConfig);
29500
- const mainSK = generateMainRecordSK(id);
29630
+ const mainSK = generateMainRecordSK2(id);
29501
29631
  await executeDynamoDBOperation(
29502
29632
  () => dbClient2.send(
29503
- new import_lib_dynamodb9.PutCommand({
29633
+ new import_lib_dynamodb10.PutCommand({
29504
29634
  TableName: tableName,
29505
29635
  Item: {
29506
29636
  PK: resource,
@@ -29514,7 +29644,7 @@ async function handleInsertOne(resource, params, requestId) {
29514
29644
  for (const shadowRecord of shadowRecords) {
29515
29645
  await executeDynamoDBOperation(
29516
29646
  () => dbClient2.send(
29517
- new import_lib_dynamodb9.PutCommand({
29647
+ new import_lib_dynamodb10.PutCommand({
29518
29648
  TableName: tableName,
29519
29649
  Item: shadowRecord
29520
29650
  })
@@ -29522,7 +29652,7 @@ async function handleInsertOne(resource, params, requestId) {
29522
29652
  "PutItem"
29523
29653
  );
29524
29654
  }
29525
- logger13.info("insertOne succeeded", {
29655
+ logger16.info("insertOne succeeded", {
29526
29656
  requestId,
29527
29657
  resource,
29528
29658
  id,
@@ -29533,8 +29663,8 @@ async function handleInsertOne(resource, params, requestId) {
29533
29663
  __name(handleInsertOne, "handleInsertOne");
29534
29664
 
29535
29665
  // src/server/operations/updateMany.ts
29536
- var import_lib_dynamodb10 = __toESM(require_dist_cjs60(), 1);
29537
- var logger14 = createLogger({ service: "records-lambda" });
29666
+ var import_lib_dynamodb11 = __toESM(require_dist_cjs60(), 1);
29667
+ var logger17 = createLogger({ service: "records-lambda" });
29538
29668
  function applyJsonMergePatch(target, patch) {
29539
29669
  const result = { ...target };
29540
29670
  for (const [key, value] of Object.entries(patch)) {
@@ -29555,7 +29685,7 @@ __name(applyJsonMergePatch, "applyJsonMergePatch");
29555
29685
  async function handleUpdateMany(resource, params, requestId) {
29556
29686
  const { ids, data: patchData } = params;
29557
29687
  const startTime = Date.now();
29558
- logger14.debug("Executing updateMany", {
29688
+ logger17.debug("Executing updateMany", {
29559
29689
  requestId,
29560
29690
  resource,
29561
29691
  count: ids.length
@@ -29573,11 +29703,11 @@ async function handleUpdateMany(resource, params, requestId) {
29573
29703
  const tableName = getTableName();
29574
29704
  const keys = ids.map((id) => ({
29575
29705
  PK: resource,
29576
- SK: generateMainRecordSK(id)
29706
+ SK: generateMainRecordSK2(id)
29577
29707
  }));
29578
29708
  const batchGetResult = await executeDynamoDBOperation(
29579
29709
  () => dbClient2.send(
29580
- new import_lib_dynamodb10.BatchGetCommand({
29710
+ new import_lib_dynamodb11.BatchGetCommand({
29581
29711
  RequestItems: {
29582
29712
  [tableName]: {
29583
29713
  Keys: keys,
@@ -29612,7 +29742,7 @@ async function handleUpdateMany(resource, params, requestId) {
29612
29742
  });
29613
29743
  const newShadowRecords = generateShadowRecords(updatedData, resource, shadowConfig);
29614
29744
  const newShadowKeys = newShadowRecords.map((shadow) => shadow.SK);
29615
- const mainSK = generateMainRecordSK(id);
29745
+ const mainSK = generateMainRecordSK2(id);
29616
29746
  preparedRecords.push({
29617
29747
  id,
29618
29748
  updatedData,
@@ -29625,7 +29755,7 @@ async function handleUpdateMany(resource, params, requestId) {
29625
29755
  const failedId = existingData.id || "unknown-id";
29626
29756
  const errorMessage = error2 instanceof Error ? error2.message : "Unknown preparation error";
29627
29757
  const errorCode = getPreparationErrorCode2(error2);
29628
- logger14.error("Failed to prepare record for update", {
29758
+ logger17.error("Failed to prepare record for update", {
29629
29759
  requestId,
29630
29760
  recordId: failedId,
29631
29761
  error: errorMessage,
@@ -29695,7 +29825,7 @@ async function handleUpdateMany(resource, params, requestId) {
29695
29825
  }
29696
29826
  await executeDynamoDBOperation(
29697
29827
  () => dbClient2.send(
29698
- new import_lib_dynamodb10.TransactWriteCommand({
29828
+ new import_lib_dynamodb11.TransactWriteCommand({
29699
29829
  TransactItems: transactItems
29700
29830
  })
29701
29831
  ),
@@ -29809,8 +29939,8 @@ function getPreparationErrorCode2(error2) {
29809
29939
  __name(getPreparationErrorCode2, "getPreparationErrorCode");
29810
29940
 
29811
29941
  // src/server/operations/updateOne.ts
29812
- var import_lib_dynamodb11 = __toESM(require_dist_cjs60(), 1);
29813
- var logger15 = createLogger({ service: "records-lambda" });
29942
+ var import_lib_dynamodb12 = __toESM(require_dist_cjs60(), 1);
29943
+ var logger18 = createLogger({ service: "records-lambda" });
29814
29944
  function applyJsonMergePatch2(target, patch) {
29815
29945
  const result = { ...target };
29816
29946
  for (const [key, value] of Object.entries(patch)) {
@@ -29830,17 +29960,17 @@ function applyJsonMergePatch2(target, patch) {
29830
29960
  __name(applyJsonMergePatch2, "applyJsonMergePatch");
29831
29961
  async function handleUpdateOne(resource, params, requestId) {
29832
29962
  const { id, data: patchData } = params;
29833
- logger15.debug("Executing updateOne", {
29963
+ logger18.debug("Executing updateOne", {
29834
29964
  requestId,
29835
29965
  resource,
29836
29966
  id
29837
29967
  });
29838
29968
  const dbClient2 = getDBClient();
29839
29969
  const tableName = getTableName();
29840
- const mainSK = generateMainRecordSK(id);
29970
+ const mainSK = generateMainRecordSK2(id);
29841
29971
  const getResult = await executeDynamoDBOperation(
29842
29972
  () => dbClient2.send(
29843
- new import_lib_dynamodb11.GetCommand({
29973
+ new import_lib_dynamodb12.GetCommand({
29844
29974
  TableName: tableName,
29845
29975
  Key: {
29846
29976
  PK: resource,
@@ -29903,13 +30033,13 @@ async function handleUpdateOne(resource, params, requestId) {
29903
30033
  }
29904
30034
  await executeDynamoDBOperation(
29905
30035
  () => dbClient2.send(
29906
- new import_lib_dynamodb11.TransactWriteCommand({
30036
+ new import_lib_dynamodb12.TransactWriteCommand({
29907
30037
  TransactItems: transactItems
29908
30038
  })
29909
30039
  ),
29910
30040
  "TransactWriteItems"
29911
30041
  );
29912
- logger15.info("updateOne succeeded", {
30042
+ logger18.info("updateOne succeeded", {
29913
30043
  requestId,
29914
30044
  resource,
29915
30045
  id,
@@ -31086,11 +31216,11 @@ var CognitoJwtVerifier = class _CognitoJwtVerifier extends JwtVerifierBase {
31086
31216
  CognitoJwtVerifier.USER_POOL_ID_REGEX = /^(?<region>[a-z]{2}-(gov-)?[a-z]+-\d)_[a-zA-Z0-9]+$/;
31087
31217
 
31088
31218
  // src/server/utils/auth.ts
31089
- var logger16 = createLogger({ service: "records-lambda" });
31219
+ var logger19 = createLogger({ service: "records-lambda" });
31090
31220
  var verifierInstance = null;
31091
31221
  function getVerifier(userPoolId, clientId) {
31092
31222
  if (!verifierInstance) {
31093
- logger16.debug("Creating JWT verifier instance", { userPoolId, clientId });
31223
+ logger19.debug("Creating JWT verifier instance", { userPoolId, clientId });
31094
31224
  verifierInstance = CognitoJwtVerifier.create({
31095
31225
  userPoolId,
31096
31226
  tokenUse: "id",
@@ -31103,18 +31233,18 @@ function getVerifier(userPoolId, clientId) {
31103
31233
  }
31104
31234
  __name(getVerifier, "getVerifier");
31105
31235
  async function verifyJwt(token, userPoolId, clientId) {
31106
- logger16.debug("Verifying JWT token with signature validation");
31236
+ logger19.debug("Verifying JWT token with signature validation");
31107
31237
  try {
31108
31238
  const verifier = getVerifier(userPoolId, clientId);
31109
31239
  const payload2 = await verifier.verify(token);
31110
- logger16.debug("JWT token verified successfully", {
31240
+ logger19.debug("JWT token verified successfully", {
31111
31241
  sub: payload2.sub,
31112
31242
  email: payload2.email,
31113
31243
  tokenUse: payload2.token_use
31114
31244
  });
31115
31245
  return payload2;
31116
31246
  } catch (error2) {
31117
- logger16.error("JWT verification failed", {
31247
+ logger19.error("JWT verification failed", {
31118
31248
  error: error2 instanceof Error ? error2.message : String(error2)
31119
31249
  });
31120
31250
  let message = "JWT verification failed";
@@ -31155,15 +31285,15 @@ async function verifyAuthHeader(authHeader, userPoolId, clientId) {
31155
31285
  __name(verifyAuthHeader, "verifyAuthHeader");
31156
31286
 
31157
31287
  // src/server/handler.ts
31158
- var logger17 = createLogger({
31288
+ var logger20 = createLogger({
31159
31289
  service: "records-lambda",
31160
31290
  level: process.env.LOG_LEVEL || "info"
31161
31291
  });
31162
- logger17.info("Records Lambda started with automatic shadow field detection");
31292
+ logger20.info("Records Lambda started with automatic shadow field detection");
31163
31293
  var CORS_HEADERS = {};
31164
31294
  async function handler(event) {
31165
31295
  const requestId = event.requestContext.requestId;
31166
- logger17.info("Received request", {
31296
+ logger20.info("Received request", {
31167
31297
  requestId,
31168
31298
  method: event.requestContext.http.method,
31169
31299
  path: event.requestContext.http.path
@@ -31184,7 +31314,7 @@ async function handler(event) {
31184
31314
  const hasAmzDate = event.headers["x-amz-date"] || event.headers["X-Amz-Date"];
31185
31315
  const hasAmzContentSha = event.headers["x-amz-content-sha256"] || event.headers["X-Amz-Content-Sha256"];
31186
31316
  const hasAwsSigV4Auth = authHeader?.startsWith("AWS4-HMAC-SHA256");
31187
- logger17.debug("Authentication check", {
31317
+ logger20.debug("Authentication check", {
31188
31318
  requestId,
31189
31319
  hasAuthHeader: !!authHeader,
31190
31320
  hasAmzDate: !!hasAmzDate,
@@ -31194,7 +31324,7 @@ async function handler(event) {
31194
31324
  });
31195
31325
  const isIAMAuth = hasAwsSigV4Auth || !!(hasAmzDate && hasAmzContentSha);
31196
31326
  if (isIAMAuth) {
31197
- logger17.info("IAM authenticated request", {
31327
+ logger20.info("IAM authenticated request", {
31198
31328
  requestId,
31199
31329
  sourceIp: event.requestContext.http.sourceIp
31200
31330
  });
@@ -31205,14 +31335,14 @@ async function handler(event) {
31205
31335
  throw new Error("COGNITO_USER_POOL_ID environment variable is required");
31206
31336
  }
31207
31337
  const jwtPayload = await verifyAuthHeader(authHeader, userPoolId, clientId);
31208
- logger17.debug("Cognito JWT verified", {
31338
+ logger20.debug("Cognito JWT verified", {
31209
31339
  requestId,
31210
31340
  sub: jwtPayload.sub,
31211
31341
  email: jwtPayload.email
31212
31342
  });
31213
31343
  }
31214
31344
  const request2 = parseRequestBody(event.body);
31215
- logger17.info("Parsed request", {
31345
+ logger20.info("Parsed request", {
31216
31346
  requestId,
31217
31347
  operation: request2.op,
31218
31348
  resource: request2.resource
@@ -31255,7 +31385,7 @@ function parseRequestBody(body) {
31255
31385
  __name(parseRequestBody, "parseRequestBody");
31256
31386
  async function executeOperation(request2, requestId) {
31257
31387
  const { op: op2, resource } = request2;
31258
- logger17.debug("Executing operation", {
31388
+ logger20.debug("Executing operation", {
31259
31389
  requestId,
31260
31390
  operation: op2,
31261
31391
  resource
@@ -31265,7 +31395,7 @@ async function executeOperation(request2, requestId) {
31265
31395
  const mongoParams = request2.params;
31266
31396
  const { filter = {}, options = {} } = mongoParams;
31267
31397
  const { sort, limit, nextToken } = options;
31268
- logger17.debug("Processing find operation", {
31398
+ logger20.debug("Processing find operation", {
31269
31399
  requestId,
31270
31400
  hasSort: !!sort,
31271
31401
  sortType: typeof sort,
@@ -31383,7 +31513,7 @@ function createSuccessResponse(data2, requestId) {
31383
31513
  success: true,
31384
31514
  data: data2
31385
31515
  };
31386
- logger17.info("Request succeeded", { requestId });
31516
+ logger20.info("Request succeeded", { requestId });
31387
31517
  return {
31388
31518
  statusCode: 200,
31389
31519
  headers: {
@@ -31404,7 +31534,7 @@ function createErrorResponse(code, message, statusCode, requestId, details) {
31404
31534
  details
31405
31535
  }
31406
31536
  };
31407
- logger17.error("Request failed", {
31537
+ logger20.error("Request failed", {
31408
31538
  requestId,
31409
31539
  code,
31410
31540
  message,
@@ -31439,7 +31569,7 @@ function handleError(error2, requestId) {
31439
31569
  );
31440
31570
  }
31441
31571
  if (error2 instanceof Error) {
31442
- logger17.error("Error stack trace", {
31572
+ logger20.error("Error stack trace", {
31443
31573
  requestId,
31444
31574
  stack: error2.stack,
31445
31575
  message: error2.message