@exabugs/dynamodb-client 1.15.0 → 1.17.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 (56) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +2 -0
  3. package/dist/client/index.iam.d.ts +1 -0
  4. package/dist/client/index.iam.d.ts.map +1 -1
  5. package/dist/client/index.iam.js +1 -0
  6. package/dist/client/index.iam.js.map +1 -1
  7. package/dist/client/recordsClient.d.ts +51 -0
  8. package/dist/client/recordsClient.d.ts.map +1 -0
  9. package/dist/client/recordsClient.js +64 -0
  10. package/dist/client/recordsClient.js.map +1 -0
  11. package/dist/notify/admins.d.ts +44 -0
  12. package/dist/notify/admins.d.ts.map +1 -0
  13. package/dist/notify/admins.js +55 -0
  14. package/dist/notify/admins.js.map +1 -0
  15. package/dist/notify/channels/slack.d.ts +8 -0
  16. package/dist/notify/channels/slack.d.ts.map +1 -1
  17. package/dist/notify/channels/slack.js +27 -19
  18. package/dist/notify/channels/slack.js.map +1 -1
  19. package/dist/notify/index.d.ts +2 -0
  20. package/dist/notify/index.d.ts.map +1 -1
  21. package/dist/notify/index.js +1 -0
  22. package/dist/notify/index.js.map +1 -1
  23. package/dist/server/handler.cjs +3 -3
  24. package/dist/server/media/recordsClient.d.ts.map +1 -1
  25. package/dist/server/media/recordsClient.js +10 -30
  26. package/dist/server/media/recordsClient.js.map +1 -1
  27. package/dist/server/media-handler.cjs +2 -2
  28. package/dist/server/media-process-handler-dlq.cjs +46 -25
  29. package/dist/server/media-process-handler-dlq.cjs.map +4 -4
  30. package/dist/server/media-process-handler.cjs +46 -25
  31. package/dist/server/media-process-handler.cjs.map +4 -4
  32. package/dist/system-changes/handler.d.ts +47 -0
  33. package/dist/system-changes/handler.d.ts.map +1 -0
  34. package/dist/system-changes/handler.js +74 -0
  35. package/dist/system-changes/handler.js.map +1 -0
  36. package/dist/system-changes/index.d.ts +15 -0
  37. package/dist/system-changes/index.d.ts.map +1 -0
  38. package/dist/system-changes/index.js +12 -0
  39. package/dist/system-changes/index.js.map +1 -0
  40. package/dist/system-changes/record.d.ts +92 -0
  41. package/dist/system-changes/record.d.ts.map +1 -0
  42. package/dist/system-changes/record.js +198 -0
  43. package/dist/system-changes/record.js.map +1 -0
  44. package/dist/system-changes/recorder.d.ts +104 -0
  45. package/dist/system-changes/recorder.d.ts.map +1 -0
  46. package/dist/system-changes/recorder.js +184 -0
  47. package/dist/system-changes/recorder.js.map +1 -0
  48. package/dist/system-changes/slack.d.ts +19 -0
  49. package/dist/system-changes/slack.d.ts.map +1 -0
  50. package/dist/system-changes/slack.js +124 -0
  51. package/dist/system-changes/slack.js.map +1 -0
  52. package/docs/RECORDS_CLIENT.md +47 -0
  53. package/docs/SYSTEM_CHANGES.md +117 -0
  54. package/package.json +8 -2
  55. package/terraform/media/README.md +1 -2
  56. package/terraform/media/variables.tf +0 -37
@@ -1,5 +1,5 @@
1
- // @exabugs/dynamodb-client v1.15.0
2
- // Built: 2026-10-18T10:11:26.658Z
1
+ // @exabugs/dynamodb-client v1.17.0
2
+ // Built: 2026-10-24T03:15:07.224Z
3
3
  "use strict";
4
4
  var __create = Object.create;
5
5
  var __defProp = Object.defineProperty;
@@ -58298,38 +58298,59 @@ var DynamoClient2 = class extends DynamoClient {
58298
58298
  }
58299
58299
  };
58300
58300
 
58301
+ // src/client/recordsClient.ts
58302
+ async function createRecordsClient(options = {}) {
58303
+ const url = options.url ?? process.env.RECORDS_IAM_URL;
58304
+ if (!url) {
58305
+ throw new Error("RECORDS_IAM_URL environment variable is not set");
58306
+ }
58307
+ const region = options.region ?? process.env.AWS_REGION ?? process.env.REGION;
58308
+ if (!region) {
58309
+ throw new Error("AWS_REGION environment variable is not set");
58310
+ }
58311
+ const client = new DynamoClient2(url, {
58312
+ auth: { region },
58313
+ ...options.timeout !== void 0 ? { timeout: options.timeout } : {}
58314
+ });
58315
+ await client.connect();
58316
+ return client;
58317
+ }
58318
+ __name(createRecordsClient, "createRecordsClient");
58319
+ function lazyCollection(name, options = {}) {
58320
+ let cached;
58321
+ const get2 = /* @__PURE__ */ __name((() => {
58322
+ if (!cached) {
58323
+ const attempt = createRecordsClient(options).then(
58324
+ (client) => client.db().collection(name)
58325
+ );
58326
+ cached = attempt;
58327
+ attempt.catch(() => {
58328
+ if (cached === attempt) cached = void 0;
58329
+ });
58330
+ }
58331
+ return cached;
58332
+ }), "get");
58333
+ get2.reset = () => {
58334
+ cached = void 0;
58335
+ };
58336
+ return get2;
58337
+ }
58338
+ __name(lazyCollection, "lazyCollection");
58339
+
58301
58340
  // src/server/media/recordsClient.ts
58302
58341
  var RECORDS_REQUEST_TIMEOUT_MS = 15e3;
58303
58342
  var MEDIA_COLLECTION = "media";
58304
- var mediaCollection;
58305
- async function getMediaCollection() {
58306
- if (!mediaCollection) {
58307
- const endpoint = process.env.RECORDS_IAM_URL;
58308
- if (!endpoint) {
58309
- throw new Error("RECORDS_IAM_URL environment variable is not set");
58310
- }
58311
- const region = process.env.AWS_REGION ?? process.env.REGION;
58312
- if (!region) {
58313
- throw new Error("AWS_REGION environment variable is not set");
58314
- }
58315
- const client = new DynamoClient2(endpoint, {
58316
- auth: { region },
58317
- timeout: RECORDS_REQUEST_TIMEOUT_MS
58318
- });
58319
- await client.connect();
58320
- mediaCollection = client.db().collection(MEDIA_COLLECTION);
58321
- }
58322
- return mediaCollection;
58323
- }
58324
- __name(getMediaCollection, "getMediaCollection");
58343
+ var mediaCollection = lazyCollection(MEDIA_COLLECTION, {
58344
+ timeout: RECORDS_REQUEST_TIMEOUT_MS
58345
+ });
58325
58346
  async function findMediaRecord(fileId) {
58326
- const records = await (await getMediaCollection()).findMany([fileId]);
58347
+ const records = await (await mediaCollection()).findMany([fileId]);
58327
58348
  return records[0];
58328
58349
  }
58329
58350
  __name(findMediaRecord, "findMediaRecord");
58330
58351
  async function writeMediaRecord(fileId, fields) {
58331
58352
  const now = (/* @__PURE__ */ new Date()).toISOString();
58332
- await (await getMediaCollection()).updateOne(
58353
+ await (await mediaCollection()).updateOne(
58333
58354
  { id: fileId },
58334
58355
  { $set: { ...fields, updatedAt: now }, $setOnInsert: { createdAt: now } },
58335
58356
  { upsert: true }