@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;
@@ -45859,38 +45859,59 @@ var DynamoClient2 = class extends DynamoClient {
45859
45859
  }
45860
45860
  };
45861
45861
 
45862
+ // src/client/recordsClient.ts
45863
+ async function createRecordsClient(options = {}) {
45864
+ const url = options.url ?? process.env.RECORDS_IAM_URL;
45865
+ if (!url) {
45866
+ throw new Error("RECORDS_IAM_URL environment variable is not set");
45867
+ }
45868
+ const region = options.region ?? process.env.AWS_REGION ?? process.env.REGION;
45869
+ if (!region) {
45870
+ throw new Error("AWS_REGION environment variable is not set");
45871
+ }
45872
+ const client = new DynamoClient2(url, {
45873
+ auth: { region },
45874
+ ...options.timeout !== void 0 ? { timeout: options.timeout } : {}
45875
+ });
45876
+ await client.connect();
45877
+ return client;
45878
+ }
45879
+ __name(createRecordsClient, "createRecordsClient");
45880
+ function lazyCollection(name, options = {}) {
45881
+ let cached;
45882
+ const get2 = /* @__PURE__ */ __name((() => {
45883
+ if (!cached) {
45884
+ const attempt = createRecordsClient(options).then(
45885
+ (client) => client.db().collection(name)
45886
+ );
45887
+ cached = attempt;
45888
+ attempt.catch(() => {
45889
+ if (cached === attempt) cached = void 0;
45890
+ });
45891
+ }
45892
+ return cached;
45893
+ }), "get");
45894
+ get2.reset = () => {
45895
+ cached = void 0;
45896
+ };
45897
+ return get2;
45898
+ }
45899
+ __name(lazyCollection, "lazyCollection");
45900
+
45862
45901
  // src/server/media/recordsClient.ts
45863
45902
  var RECORDS_REQUEST_TIMEOUT_MS = 15e3;
45864
45903
  var MEDIA_COLLECTION = "media";
45865
- var mediaCollection;
45866
- async function getMediaCollection() {
45867
- if (!mediaCollection) {
45868
- const endpoint = process.env.RECORDS_IAM_URL;
45869
- if (!endpoint) {
45870
- throw new Error("RECORDS_IAM_URL environment variable is not set");
45871
- }
45872
- const region = process.env.AWS_REGION ?? process.env.REGION;
45873
- if (!region) {
45874
- throw new Error("AWS_REGION environment variable is not set");
45875
- }
45876
- const client = new DynamoClient2(endpoint, {
45877
- auth: { region },
45878
- timeout: RECORDS_REQUEST_TIMEOUT_MS
45879
- });
45880
- await client.connect();
45881
- mediaCollection = client.db().collection(MEDIA_COLLECTION);
45882
- }
45883
- return mediaCollection;
45884
- }
45885
- __name(getMediaCollection, "getMediaCollection");
45904
+ var mediaCollection = lazyCollection(MEDIA_COLLECTION, {
45905
+ timeout: RECORDS_REQUEST_TIMEOUT_MS
45906
+ });
45886
45907
  async function findMediaRecord(fileId) {
45887
- const records = await (await getMediaCollection()).findMany([fileId]);
45908
+ const records = await (await mediaCollection()).findMany([fileId]);
45888
45909
  return records[0];
45889
45910
  }
45890
45911
  __name(findMediaRecord, "findMediaRecord");
45891
45912
  async function writeMediaRecord(fileId, fields) {
45892
45913
  const now = (/* @__PURE__ */ new Date()).toISOString();
45893
- await (await getMediaCollection()).updateOne(
45914
+ await (await mediaCollection()).updateOne(
45894
45915
  { id: fileId },
45895
45916
  { $set: { ...fields, updatedAt: now }, $setOnInsert: { createdAt: now } },
45896
45917
  { upsert: true }