@ya-accelerators/web-backend-framework 0.0.129 → 0.0.131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/context/audit/index.js +1 -2
- package/dist/context/audit/index.js.map +1 -1
- package/dist/context/request/index.js +4 -2
- package/dist/context/request/index.js.map +1 -1
- package/dist/coordination/lock/index.js +1 -2
- package/dist/coordination/lock/index.js.map +1 -1
- package/dist/coordination/throttle/index.js +1 -2
- package/dist/coordination/throttle/index.js.map +1 -1
- package/dist/repository/prisma/index.js +7 -9
- package/dist/repository/prisma/index.js.map +1 -1
- package/dist/repository/prisma/lock.js +3 -6
- package/dist/repository/prisma/lock.js.map +1 -1
- package/dist/repository/redis/index.js +10 -21
- package/dist/repository/redis/index.js.map +1 -1
- package/dist/repository/s3/index.d.ts +8 -8
- package/dist/repository/s3/index.js +48 -49
- package/dist/repository/s3/index.js.map +1 -1
- package/dist/server/express/index.js +14 -18
- package/dist/server/express/index.js.map +1 -1
- package/dist/server/trpc/declaration/index.d.ts +1 -1
- package/dist/server/trpc/declaration/index.js +5 -5
- package/dist/server/trpc/declaration/index.js.map +1 -1
- package/dist/server/trpc/index.d.ts +1 -1
- package/dist/server/trpc/index.js +19 -21
- package/dist/server/trpc/index.js.map +1 -1
- package/dist/server/uploads/index.d.ts +1 -1
- package/dist/server/uploads/index.js +20 -16
- package/dist/server/uploads/index.js.map +1 -1
- package/dist/util/index.js +1 -2
- package/dist/util/index.js.map +1 -1
- package/package.json +2 -2
package/dist/constants.js
CHANGED
|
@@ -14,7 +14,7 @@ export const constants = {
|
|
|
14
14
|
ERROR_LOG_DROP_NOTICE_WINDOW_SEC: 60,
|
|
15
15
|
ERROR_LOG_REPORTER_KEY_LENGTH: errorLogPayloadPolicy.REPORTER_KEY_LENGTH,
|
|
16
16
|
// The AWS regions inside the EU / EEA, which is where every resource processing or storing personal data is
|
|
17
|
-
// provisioned (
|
|
17
|
+
// provisioned (GDPR Art. 44-49). Removing an entry closes a region every consumer's S3 / SES /
|
|
18
18
|
// STS clients may bind; an entry outside the EEA takes a documented Art. 46 transfer mechanism, recorded in
|
|
19
19
|
// the Sub-processors page, before it is added.
|
|
20
20
|
PII_ALLOWED_AWS_REGIONS: [
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,wBAAwB,EAAE,wEAAwE;IAClG,cAAc,EAAE,WAAW;IAC3B,mBAAmB,EAAE,CAAC;IACtB,mBAAmB,EAAE,EAAE;IACvB,wBAAwB,EAAE,EAAE;IAC5B,0BAA0B,EAAE,GAAG;IAC/B,8BAA8B,EAAE,GAAG;IACnC,0BAA0B,EAAE,0BAA0B;IACtD,wBAAwB,EAAE,EAAE;IAC5B,+BAA+B,EAAE,EAAE;IACnC,gCAAgC,EAAE,EAAE;IACpC,6BAA6B,EAAE,qBAAqB,CAAC,mBAAmB;IAExE,4GAA4G;IAC5G
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,wBAAwB,EAAE,wEAAwE;IAClG,cAAc,EAAE,WAAW;IAC3B,mBAAmB,EAAE,CAAC;IACtB,mBAAmB,EAAE,EAAE;IACvB,wBAAwB,EAAE,EAAE;IAC5B,0BAA0B,EAAE,GAAG;IAC/B,8BAA8B,EAAE,GAAG;IACnC,0BAA0B,EAAE,0BAA0B;IACtD,wBAAwB,EAAE,EAAE;IAC5B,+BAA+B,EAAE,EAAE;IACnC,gCAAgC,EAAE,EAAE;IACpC,6BAA6B,EAAE,qBAAqB,CAAC,mBAAmB;IAExE,4GAA4G;IAC5G,+FAA+F;IAC/F,4GAA4G;IAC5G,+CAA+C;IAC/C,uBAAuB,EAAE;QACvB,YAAY;QACZ,WAAW;QACX,WAAW;QACX,cAAc;QACd,YAAY;QACZ,YAAY;KACJ;IAEV,GAAG,YAAY;CAChB,CAAA"}
|
|
@@ -2,11 +2,10 @@ import { AsyncLocalStorage } from 'async_hooks';
|
|
|
2
2
|
export const auditContextStorage = new AsyncLocalStorage();
|
|
3
3
|
export const getCurrentAuditContext = () => auditContextStorage.getStore();
|
|
4
4
|
export const runWithAuditActorFor = () => ({ actorUserId, reason }, fn) => {
|
|
5
|
-
const parent = auditContextStorage.getStore();
|
|
6
5
|
return auditContextStorage.run({
|
|
7
6
|
actorUserId,
|
|
8
7
|
reason,
|
|
9
|
-
suppress:
|
|
8
|
+
suppress: auditContextStorage.getStore()?.suppress ?? false,
|
|
10
9
|
}, fn);
|
|
11
10
|
};
|
|
12
11
|
export const runWithAuditActor = runWithAuditActorFor();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAyB/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAgB,CAAA;AAExE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAA;AAE1E,MAAM,CAAC,MAAM,oBAAoB,GAC/B,GAA2B,EAAE,CAC7B,CAAI,EAAE,WAAW,EAAE,MAAM,EAA8C,EAAE,EAAoB,EAAE,EAAE;IAC/F,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAyB/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAgB,CAAA;AAExE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAA;AAE1E,MAAM,CAAC,MAAM,oBAAoB,GAC/B,GAA2B,EAAE,CAC7B,CAAI,EAAE,WAAW,EAAE,MAAM,EAA8C,EAAE,EAAoB,EAAE,EAAE;IAC/F,OAAO,mBAAmB,CAAC,GAAG,CAC5B;QACE,WAAW;QACX,MAAM;QACN,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,EAAE,QAAQ,IAAI,KAAK;KAC5D,EACD,EAAE,CACH,CAAA;AACH,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,EAAwB,CAAA;AAE7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,EAAE,MAAM,EAAuB,EAAE,EAAoB,EAAE,EAAE,CAC5F,mBAAmB,CAAC,GAAG,CACrB;IACE,MAAM;IACN,QAAQ,EAAE,IAAI;CACf,EACD,EAAE,CACH,CAAA"}
|
|
@@ -7,10 +7,12 @@ export const getCurrentRequestPath = () => requestContextStorage.getStore()?.pat
|
|
|
7
7
|
// MUST be host-bound to stay contained.
|
|
8
8
|
export const runWithRequestHeaders = (headers, fn, options) => {
|
|
9
9
|
const current = requestContextStorage.getStore();
|
|
10
|
-
const scope = options?.forHost === undefined ? { headers } : { headers, forHost: options.forHost.toLowerCase() };
|
|
11
10
|
return requestContextStorage.run({
|
|
12
11
|
headers: current?.headers ?? {},
|
|
13
|
-
forwardHeaderScopes: [
|
|
12
|
+
forwardHeaderScopes: [
|
|
13
|
+
...(current?.forwardHeaderScopes ?? []),
|
|
14
|
+
options?.forHost === undefined ? { headers } : { headers, forHost: options.forHost.toLowerCase() },
|
|
15
|
+
],
|
|
14
16
|
...(current?.nonForwardableHeaders === undefined ? {} : { nonForwardableHeaders: current.nonForwardableHeaders }),
|
|
15
17
|
...(current?.path === undefined ? {} : { path: current.path }),
|
|
16
18
|
}, fn);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/request/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,iBAAiB,EAKtD,CAAA;AAEJ,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAA;AAEjF,kGAAkG;AAClG,uGAAuG;AACvG,oGAAoG;AACpG,wCAAwC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAA+B,EAC/B,EAAoB,EACpB,OAA8B,EAC9B,EAAE;IACF,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,CAAA;IAChD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/request/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,7 @@ end
|
|
|
18
18
|
export const lock = {
|
|
19
19
|
acquire: async ({ key, ttlSec }) => {
|
|
20
20
|
const token = Util.createULID();
|
|
21
|
-
|
|
22
|
-
return ok != null ? token : null;
|
|
21
|
+
return (await redis.setNx(key, token, ttlSec)) != null ? token : null;
|
|
23
22
|
},
|
|
24
23
|
release: async ({ key, token }) => {
|
|
25
24
|
await redis.invokeScript(RELEASE_SCRIPT, { keys: [key], args: [token] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/coordination/lock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC;;;;;;CAMjC,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC;;;;;;CAM/B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAmC,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/coordination/lock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC;;;;;;CAMjC,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC;;;;;;CAM/B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAmC,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAC/B,OAAO,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACvE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAkC,EAAE,EAAE;QAChE,MAAM,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC1E,CAAC;IACD,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAkD,EAAE,EAAE,CACtF,CAAC,MAAM,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;IAC7F,QAAQ,EAAE,KAAK,EACb,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAA0D,EACrF,EAAoB,EACpB,EAAE;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;QACjD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;QAC5B,CAAC;QACD,MAAM,SAAS,GACb,YAAY,KAAK,SAAS;YACxB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC3D,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC;YACH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;QAC9C,CAAC;gBAAS,CAAC;YACT,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,aAAa,CAAC,SAAS,CAAC,CAAA;YAC1B,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { redis } from '../../repository/redis/index.js';
|
|
2
2
|
export const throttle = {
|
|
3
3
|
tryAcquire: async ({ key, windowSec }) => {
|
|
4
|
-
|
|
5
|
-
return ok != null;
|
|
4
|
+
return (await redis.setNx(key, '1', windowSec)) != null;
|
|
6
5
|
},
|
|
7
6
|
};
|
|
8
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/coordination/throttle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAEvD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAsC,EAAE,EAAE;QAC3E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/coordination/throttle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAEvD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAsC,EAAE,EAAE;QAC3E,OAAO,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,IAAI,IAAI,CAAA;IACzD,CAAC;CACF,CAAA"}
|
|
@@ -55,8 +55,7 @@ class Singleton {
|
|
|
55
55
|
return this.replicaInstances.get(databaseName);
|
|
56
56
|
}
|
|
57
57
|
static getTransaction() {
|
|
58
|
-
|
|
59
|
-
return context?.transaction;
|
|
58
|
+
return this.storage.getStore()?.transaction;
|
|
60
59
|
}
|
|
61
60
|
static setTransaction(transaction) {
|
|
62
61
|
const context = this.storage.getStore();
|
|
@@ -138,10 +137,11 @@ export const prisma = {
|
|
|
138
137
|
getCurrentTransactionClient: () => Singleton.getTransaction(),
|
|
139
138
|
getRawPrimaryClient: () => Singleton.getPrimaryInstance(databaseName),
|
|
140
139
|
});
|
|
141
|
-
const
|
|
140
|
+
const instance = primary
|
|
141
|
+
.$extends(readReplicas({
|
|
142
142
|
replicas: [replica],
|
|
143
|
-
}))
|
|
144
|
-
|
|
143
|
+
}))
|
|
144
|
+
.$extends(lifecycleExtension);
|
|
145
145
|
instance.health = async () => {
|
|
146
146
|
const primary = Singleton.getPrimaryInstance(databaseName);
|
|
147
147
|
const replica = Singleton.getReplicaInstance(databaseName);
|
|
@@ -182,13 +182,11 @@ export const prisma = {
|
|
|
182
182
|
return primary;
|
|
183
183
|
},
|
|
184
184
|
transaction: async (client, operation) => {
|
|
185
|
-
|
|
186
|
-
if (existingTx) {
|
|
185
|
+
if (Singleton.getTransaction()) {
|
|
187
186
|
return operation();
|
|
188
187
|
}
|
|
189
188
|
return client.$transaction(async (tx) => {
|
|
190
|
-
|
|
191
|
-
return Singleton.storage.run({ ...store, transaction: tx }, operation);
|
|
189
|
+
return Singleton.storage.run({ ...(Singleton.storage.getStore() || {}), transaction: tx }, operation);
|
|
192
190
|
}, { maxWait: 20000, timeout: 60000 });
|
|
193
191
|
},
|
|
194
192
|
paginate: ({ page, perPage }) => async ({ queryFn, countFn, }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/prisma/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/prisma/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
// transaction ends.
|
|
9
9
|
const quoteIdentifier = (identifier) => `\`${identifier.replaceAll('`', '``')}\``;
|
|
10
10
|
export const lockRow = async (client, { table, id, select }) => {
|
|
11
|
-
|
|
12
|
-
return rows[0];
|
|
11
|
+
return (await client.$queryRawUnsafe(`SELECT ${select?.length ? select.map(quoteIdentifier).join(', ') : '*'} FROM ${quoteIdentifier(table)} WHERE ${quoteIdentifier('id')} = ? FOR UPDATE`, id))[0];
|
|
13
12
|
};
|
|
14
13
|
// Locks by an arbitrary equality condition (a natural or composite unique key) rather than `id`. An
|
|
15
14
|
// unlocked `findUnique` to resolve a natural key to its `id` before calling `lockRow` establishes the
|
|
@@ -22,11 +21,9 @@ export const lockRowBy = async (client, { table, where, select }) => {
|
|
|
22
21
|
if (keys.length === 0) {
|
|
23
22
|
throw new Error('lockRowBy requires at least one condition in where');
|
|
24
23
|
}
|
|
25
|
-
|
|
26
|
-
return rows[0];
|
|
24
|
+
return (await client.$queryRawUnsafe(`SELECT ${select?.length ? select.map(quoteIdentifier).join(', ') : '*'} FROM ${quoteIdentifier(table)} WHERE ${keys.map((key) => `${quoteIdentifier(key)} = ?`).join(' AND ')} FOR UPDATE`, ...keys.map((key) => where[key])))[0];
|
|
27
25
|
};
|
|
28
26
|
export const lockChildren = async (client, { table, foreignKey, parentId }) => {
|
|
29
|
-
|
|
30
|
-
return Number(rows[0].count);
|
|
27
|
+
return Number((await client.$queryRawUnsafe(`SELECT COUNT(*) AS count FROM ${quoteIdentifier(table)} WHERE ${quoteIdentifier(foreignKey)} = ? FOR UPDATE`, parentId))[0].count);
|
|
31
28
|
};
|
|
32
29
|
//# sourceMappingURL=lock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/repository/prisma/lock.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,qGAAqG;AACrG,oGAAoG;AACpG,iGAAiG;AACjG,4FAA4F;AAC5F,iGAAiG;AACjG,2FAA2F;AAC3F,oBAAoB;AAMpB,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAA;AAEzF,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC1B,MAAsB,EACtB,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAoD,EAC/C,EAAE;IAC1B,
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/repository/prisma/lock.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,qGAAqG;AACrG,oGAAoG;AACpG,iGAAiG;AACjG,4FAA4F;AAC5F,iGAAiG;AACjG,2FAA2F;AAC3F,oBAAoB;AAMpB,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAA;AAEzF,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC1B,MAAsB,EACtB,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAoD,EAC/C,EAAE;IAC1B,OAAO,CACL,MAAM,MAAM,CAAC,eAAe,CAC1B,UAAU,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,eAAe,CAAC,KAAK,CAAC,UAAU,eAAe,CAAC,IAAI,CAAC,iBAAiB,EACtJ,EAAE,CACH,CACF,CAAC,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAED,oGAAoG;AACpG,sGAAsG;AACtG,oGAAoG;AACpG,yGAAyG;AACzG,uGAAuG;AACvG,iFAAiF;AACjF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,MAAsB,EACtB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAuE,EACrE,EAAE;IAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IACD,OAAO,CACL,MAAM,MAAM,CAAC,eAAe,CAC1B,UAAU,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,eAAe,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAC3L,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CACjC,CACF,CAAC,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,MAAsB,EACtB,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAA2D,EACxF,EAAE;IACF,OAAO,MAAM,CACX,CACE,MAAM,MAAM,CAAC,eAAe,CAC1B,iCAAiC,eAAe,CAAC,KAAK,CAAC,UAAU,eAAe,CAAC,UAAU,CAAC,iBAAiB,EAC7G,QAAQ,CACT,CACF,CAAC,CAAC,CAAC,CAAC,KAAK,CACX,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -26,9 +26,7 @@ const getClient = async () => {
|
|
|
26
26
|
export const redis = {
|
|
27
27
|
health: async () => {
|
|
28
28
|
try {
|
|
29
|
-
|
|
30
|
-
const ret = await client.ping();
|
|
31
|
-
return ret === 'PONG' ? 'OK' : 'NG';
|
|
29
|
+
return (await (await getClient()).ping()) === 'PONG' ? 'OK' : 'NG';
|
|
32
30
|
}
|
|
33
31
|
catch {
|
|
34
32
|
return 'NG';
|
|
@@ -36,8 +34,7 @@ export const redis = {
|
|
|
36
34
|
},
|
|
37
35
|
set: async (key, value, expirationSeconds) => {
|
|
38
36
|
try {
|
|
39
|
-
|
|
40
|
-
await client.set(key, value, expirationSeconds ? { expiry: { type: TimeUnit.Seconds, count: expirationSeconds } } : undefined);
|
|
37
|
+
await (await getClient()).set(key, value, expirationSeconds ? { expiry: { type: TimeUnit.Seconds, count: expirationSeconds } } : undefined);
|
|
41
38
|
}
|
|
42
39
|
catch (e) {
|
|
43
40
|
logger.error('cache', { op: 'set', ...keyShape(key), error: e });
|
|
@@ -46,8 +43,7 @@ export const redis = {
|
|
|
46
43
|
},
|
|
47
44
|
setNx: async (key, value, expirationSeconds) => {
|
|
48
45
|
try {
|
|
49
|
-
|
|
50
|
-
return await client.set(key, value, {
|
|
46
|
+
return await (await getClient()).set(key, value, {
|
|
51
47
|
conditionalSet: 'onlyIfDoesNotExist',
|
|
52
48
|
expiry: {
|
|
53
49
|
type: TimeUnit.Seconds,
|
|
@@ -62,8 +58,7 @@ export const redis = {
|
|
|
62
58
|
},
|
|
63
59
|
get: async (key) => {
|
|
64
60
|
try {
|
|
65
|
-
|
|
66
|
-
return await client.get(key).then((x) => x?.toString());
|
|
61
|
+
return await (await getClient()).get(key).then((x) => x?.toString());
|
|
67
62
|
}
|
|
68
63
|
catch (e) {
|
|
69
64
|
logger.error('cache', { op: 'get', ...keyShape(key), error: e });
|
|
@@ -72,8 +67,7 @@ export const redis = {
|
|
|
72
67
|
},
|
|
73
68
|
remove: async (key) => {
|
|
74
69
|
try {
|
|
75
|
-
|
|
76
|
-
await client.del([key]);
|
|
70
|
+
await (await getClient()).del([key]);
|
|
77
71
|
}
|
|
78
72
|
catch (e) {
|
|
79
73
|
logger.error('cache', { op: 'remove', ...keyShape(key), error: e });
|
|
@@ -82,8 +76,7 @@ export const redis = {
|
|
|
82
76
|
},
|
|
83
77
|
getdel: async (key) => {
|
|
84
78
|
try {
|
|
85
|
-
|
|
86
|
-
return await client.getdel(key).then((x) => x?.toString());
|
|
79
|
+
return await (await getClient()).getdel(key).then((x) => x?.toString());
|
|
87
80
|
}
|
|
88
81
|
catch (e) {
|
|
89
82
|
logger.error('cache', { op: 'getdel', ...keyShape(key), error: e });
|
|
@@ -92,8 +85,7 @@ export const redis = {
|
|
|
92
85
|
},
|
|
93
86
|
incr: async (key) => {
|
|
94
87
|
try {
|
|
95
|
-
|
|
96
|
-
return await client.incr(key);
|
|
88
|
+
return await (await getClient()).incr(key);
|
|
97
89
|
}
|
|
98
90
|
catch (e) {
|
|
99
91
|
logger.error('cache', { op: 'incr', ...keyShape(key), error: e });
|
|
@@ -102,8 +94,7 @@ export const redis = {
|
|
|
102
94
|
},
|
|
103
95
|
expire: async (key, expirationSeconds) => {
|
|
104
96
|
try {
|
|
105
|
-
|
|
106
|
-
return await client.expire(key, expirationSeconds);
|
|
97
|
+
return await (await getClient()).expire(key, expirationSeconds);
|
|
107
98
|
}
|
|
108
99
|
catch (e) {
|
|
109
100
|
logger.error('cache', { op: 'expire', ...keyShape(key), error: e });
|
|
@@ -112,8 +103,7 @@ export const redis = {
|
|
|
112
103
|
},
|
|
113
104
|
decr: async (key) => {
|
|
114
105
|
try {
|
|
115
|
-
|
|
116
|
-
return await client.decr(key);
|
|
106
|
+
return await (await getClient()).decr(key);
|
|
117
107
|
}
|
|
118
108
|
catch (e) {
|
|
119
109
|
logger.error('cache', { op: 'decr', ...keyShape(key), error: e });
|
|
@@ -122,8 +112,7 @@ export const redis = {
|
|
|
122
112
|
},
|
|
123
113
|
invokeScript: async (script, opts) => {
|
|
124
114
|
try {
|
|
125
|
-
|
|
126
|
-
return await client.invokeScript(script, opts);
|
|
115
|
+
return await (await getClient()).invokeScript(script, opts);
|
|
127
116
|
}
|
|
128
117
|
catch (e) {
|
|
129
118
|
logger.error('cache', { op: 'invokeScript', ...keyShape(opts.keys[0]), error: e });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/redis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAe,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE7F,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C,IAAI,aAA4E,CAAA;AAEhF,MAAM,YAAY,GAAG,GAAG,EAAE,CACxB,UAAU,CAAC,aAAa;IACtB,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC;QAC9B,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;QACzE,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,KAAK;KACtB,CAAC;IACJ,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC;QACvB,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;QACzE,MAAM,EAAE,UAAU,CAAC,UAAU,KAAK,KAAK;QACvC,cAAc,EAAE,KAAK;KACtB,CAAC,CAAA;AAER,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;AAEhH,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;IAC3B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,aAAa,GAAG,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,aAAa,GAAG,SAAS,CAAA;YACzB,MAAM,CAAC,CAAA;QACT,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/redis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { S3Client } from '@aws-sdk/client-s3';
|
|
|
2
2
|
declare const client: () => S3Client;
|
|
3
3
|
export declare const s3: {
|
|
4
4
|
client: typeof client;
|
|
5
|
-
getObject: (
|
|
5
|
+
getObject: ({ bucket, key, versionId }: {
|
|
6
6
|
bucket: string;
|
|
7
7
|
key: string;
|
|
8
8
|
versionId?: string;
|
|
@@ -11,29 +11,29 @@ export declare const s3: {
|
|
|
11
11
|
contentType: string | undefined;
|
|
12
12
|
metadata: Record<string, string> | undefined;
|
|
13
13
|
} | undefined>;
|
|
14
|
-
putObject: (
|
|
14
|
+
putObject: ({ bucket, key, body, contentType, metadata, }: {
|
|
15
15
|
bucket: string;
|
|
16
16
|
key: string;
|
|
17
17
|
body: Buffer | Uint8Array | string;
|
|
18
18
|
contentType?: string;
|
|
19
19
|
metadata?: Record<string, string>;
|
|
20
20
|
}) => Promise<void>;
|
|
21
|
-
deleteObject: (
|
|
21
|
+
deleteObject: ({ bucket, key, versionId }: {
|
|
22
22
|
bucket: string;
|
|
23
23
|
key: string;
|
|
24
24
|
versionId?: string;
|
|
25
25
|
}) => Promise<void>;
|
|
26
|
-
createBucket: (
|
|
26
|
+
createBucket: ({ bucket, objectLock }: {
|
|
27
27
|
bucket: string;
|
|
28
28
|
objectLock?: boolean;
|
|
29
29
|
}) => Promise<void>;
|
|
30
|
-
ensureBucketLifecycleRule: (
|
|
30
|
+
ensureBucketLifecycleRule: ({ bucket, ruleId, prefix, expireDays, }: {
|
|
31
31
|
bucket: string;
|
|
32
32
|
ruleId: string;
|
|
33
33
|
prefix: string;
|
|
34
34
|
expireDays: number;
|
|
35
35
|
}) => Promise<void>;
|
|
36
|
-
putObjectWorm: (
|
|
36
|
+
putObjectWorm: ({ bucket, key, body, mode, retainUntil, contentType, }: {
|
|
37
37
|
bucket: string;
|
|
38
38
|
key: string;
|
|
39
39
|
body: Buffer | Uint8Array | string;
|
|
@@ -43,7 +43,7 @@ export declare const s3: {
|
|
|
43
43
|
}) => Promise<{
|
|
44
44
|
versionId: string;
|
|
45
45
|
}>;
|
|
46
|
-
listObjectVersions: (
|
|
46
|
+
listObjectVersions: ({ bucket, key }: {
|
|
47
47
|
bucket: string;
|
|
48
48
|
key: string;
|
|
49
49
|
}) => Promise<{
|
|
@@ -52,7 +52,7 @@ export declare const s3: {
|
|
|
52
52
|
lastModified?: Date;
|
|
53
53
|
size?: number;
|
|
54
54
|
}[]>;
|
|
55
|
-
deleteOrphanVersions: (
|
|
55
|
+
deleteOrphanVersions: ({ bucket, key, keepVersionIds, governanceBypass, }: {
|
|
56
56
|
bucket: string;
|
|
57
57
|
key: string;
|
|
58
58
|
keepVersionIds: string[];
|
|
@@ -25,9 +25,9 @@ const client = () => {
|
|
|
25
25
|
};
|
|
26
26
|
export const s3 = {
|
|
27
27
|
client,
|
|
28
|
-
getObject: async (
|
|
28
|
+
getObject: async ({ bucket, key, versionId }) => {
|
|
29
29
|
try {
|
|
30
|
-
const result = await client().send(new GetObjectCommand({ Bucket:
|
|
30
|
+
const result = await client().send(new GetObjectCommand({ Bucket: bucket, Key: key, VersionId: versionId }));
|
|
31
31
|
if (result.Body === undefined) {
|
|
32
32
|
return undefined;
|
|
33
33
|
}
|
|
@@ -41,107 +41,106 @@ export const s3 = {
|
|
|
41
41
|
if (e instanceof Error && (e.name === 'NoSuchKey' || e.name === 'NotFound')) {
|
|
42
42
|
return undefined;
|
|
43
43
|
}
|
|
44
|
-
logger.error('storage', { op: 'getObject', bucket
|
|
44
|
+
logger.error('storage', { op: 'getObject', bucket, ...keyShape(key), error: e });
|
|
45
45
|
throw e;
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
|
-
putObject: async (
|
|
48
|
+
putObject: async ({ bucket, key, body, contentType, metadata, }) => {
|
|
49
49
|
try {
|
|
50
50
|
await client().send(new PutObjectCommand({
|
|
51
|
-
Bucket:
|
|
52
|
-
Key:
|
|
53
|
-
Body:
|
|
54
|
-
ContentType:
|
|
55
|
-
Metadata:
|
|
51
|
+
Bucket: bucket,
|
|
52
|
+
Key: key,
|
|
53
|
+
Body: body,
|
|
54
|
+
ContentType: contentType,
|
|
55
|
+
Metadata: metadata,
|
|
56
56
|
}));
|
|
57
57
|
}
|
|
58
58
|
catch (e) {
|
|
59
|
-
logger.error('storage', { op: 'putObject', bucket
|
|
59
|
+
logger.error('storage', { op: 'putObject', bucket, ...keyShape(key), error: e });
|
|
60
60
|
throw e;
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
|
-
deleteObject: async (
|
|
63
|
+
deleteObject: async ({ bucket, key, versionId }) => {
|
|
64
64
|
try {
|
|
65
|
-
await client().send(new DeleteObjectCommand({ Bucket:
|
|
65
|
+
await client().send(new DeleteObjectCommand({ Bucket: bucket, Key: key, VersionId: versionId }));
|
|
66
66
|
}
|
|
67
67
|
catch (e) {
|
|
68
|
-
logger.error('storage', { op: 'deleteObject', bucket
|
|
68
|
+
logger.error('storage', { op: 'deleteObject', bucket, ...keyShape(key), error: e });
|
|
69
69
|
throw e;
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
|
-
createBucket: async (
|
|
72
|
+
createBucket: async ({ bucket, objectLock }) => {
|
|
73
73
|
try {
|
|
74
|
-
await client().send(new CreateBucketCommand({ Bucket:
|
|
74
|
+
await client().send(new CreateBucketCommand({ Bucket: bucket, ObjectLockEnabledForBucket: objectLock }));
|
|
75
75
|
}
|
|
76
76
|
catch (e) {
|
|
77
77
|
if (e instanceof Error && (e.name === 'BucketAlreadyOwnedByYou' || e.name === 'BucketAlreadyExists')) {
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
|
-
logger.error('storage', { op: 'createBucket', bucket
|
|
80
|
+
logger.error('storage', { op: 'createBucket', bucket, error: e });
|
|
81
81
|
throw e;
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
|
-
ensureBucketLifecycleRule: async (
|
|
84
|
+
ensureBucketLifecycleRule: async ({ bucket, ruleId, prefix, expireDays, }) => {
|
|
85
85
|
try {
|
|
86
|
-
const
|
|
87
|
-
.send(new GetBucketLifecycleConfigurationCommand({ Bucket:
|
|
86
|
+
const rules = ((await client()
|
|
87
|
+
.send(new GetBucketLifecycleConfigurationCommand({ Bucket: bucket }))
|
|
88
88
|
.catch((e) => {
|
|
89
89
|
if (e instanceof Error && e.name === 'NoSuchLifecycleConfiguration') {
|
|
90
90
|
return undefined;
|
|
91
91
|
}
|
|
92
92
|
throw e;
|
|
93
|
-
});
|
|
94
|
-
const rules = (existing?.Rules ?? []).filter((rule) => rule.ID !== params.ruleId);
|
|
93
|
+
}))?.Rules ?? []).filter((rule) => rule.ID !== ruleId);
|
|
95
94
|
rules.push({
|
|
96
|
-
ID:
|
|
95
|
+
ID: ruleId,
|
|
97
96
|
Status: 'Enabled',
|
|
98
|
-
Filter: { Prefix:
|
|
99
|
-
Expiration: { Days:
|
|
97
|
+
Filter: { Prefix: prefix },
|
|
98
|
+
Expiration: { Days: expireDays },
|
|
100
99
|
});
|
|
101
100
|
await client().send(new PutBucketLifecycleConfigurationCommand({
|
|
102
|
-
Bucket:
|
|
101
|
+
Bucket: bucket,
|
|
103
102
|
LifecycleConfiguration: { Rules: rules },
|
|
104
103
|
}));
|
|
105
104
|
}
|
|
106
105
|
catch (e) {
|
|
107
|
-
logger.error('storage', { op: 'ensureBucketLifecycleRule', bucket
|
|
106
|
+
logger.error('storage', { op: 'ensureBucketLifecycleRule', bucket, error: e });
|
|
108
107
|
throw e;
|
|
109
108
|
}
|
|
110
109
|
},
|
|
111
|
-
putObjectWorm: async (
|
|
110
|
+
putObjectWorm: async ({ bucket, key, body, mode, retainUntil, contentType, }) => {
|
|
112
111
|
try {
|
|
113
112
|
const result = await client().send(new PutObjectCommand({
|
|
114
|
-
Bucket:
|
|
115
|
-
Key:
|
|
116
|
-
Body:
|
|
117
|
-
ContentType:
|
|
118
|
-
ObjectLockMode:
|
|
119
|
-
ObjectLockRetainUntilDate:
|
|
113
|
+
Bucket: bucket,
|
|
114
|
+
Key: key,
|
|
115
|
+
Body: body,
|
|
116
|
+
ContentType: contentType,
|
|
117
|
+
ObjectLockMode: mode,
|
|
118
|
+
ObjectLockRetainUntilDate: retainUntil,
|
|
120
119
|
}));
|
|
121
120
|
if (!result.VersionId) {
|
|
122
|
-
throw new Error(`putObjectWorm: no VersionId for ${
|
|
121
|
+
throw new Error(`putObjectWorm: no VersionId for ${bucket} (bucket needs versioning + Object Lock)`);
|
|
123
122
|
}
|
|
124
123
|
return { versionId: result.VersionId };
|
|
125
124
|
}
|
|
126
125
|
catch (e) {
|
|
127
|
-
logger.error('storage', { op: 'putObjectWorm', bucket
|
|
126
|
+
logger.error('storage', { op: 'putObjectWorm', bucket, ...keyShape(key), error: e });
|
|
128
127
|
throw e;
|
|
129
128
|
}
|
|
130
129
|
},
|
|
131
|
-
listObjectVersions: async (
|
|
130
|
+
listObjectVersions: async ({ bucket, key }) => {
|
|
132
131
|
try {
|
|
133
132
|
const versions = [];
|
|
134
133
|
let keyMarker;
|
|
135
134
|
let versionIdMarker;
|
|
136
135
|
do {
|
|
137
136
|
const result = await client().send(new ListObjectVersionsCommand({
|
|
138
|
-
Bucket:
|
|
139
|
-
Prefix:
|
|
137
|
+
Bucket: bucket,
|
|
138
|
+
Prefix: key,
|
|
140
139
|
KeyMarker: keyMarker,
|
|
141
140
|
VersionIdMarker: versionIdMarker,
|
|
142
141
|
}));
|
|
143
142
|
for (const version of result.Versions ?? []) {
|
|
144
|
-
if (version.Key ===
|
|
143
|
+
if (version.Key === key && version.VersionId) {
|
|
145
144
|
versions.push({
|
|
146
145
|
versionId: version.VersionId,
|
|
147
146
|
isLatest: version.IsLatest ?? false,
|
|
@@ -156,25 +155,25 @@ export const s3 = {
|
|
|
156
155
|
return versions;
|
|
157
156
|
}
|
|
158
157
|
catch (e) {
|
|
159
|
-
logger.error('storage', { op: 'listObjectVersions', bucket
|
|
158
|
+
logger.error('storage', { op: 'listObjectVersions', bucket, ...keyShape(key), error: e });
|
|
160
159
|
throw e;
|
|
161
160
|
}
|
|
162
161
|
},
|
|
163
|
-
deleteOrphanVersions: async (
|
|
162
|
+
deleteOrphanVersions: async ({ bucket, key, keepVersionIds, governanceBypass, }) => {
|
|
164
163
|
try {
|
|
165
|
-
const keep = new Set(
|
|
164
|
+
const keep = new Set(keepVersionIds);
|
|
166
165
|
const deletedVersionIds = [];
|
|
167
166
|
const skippedVersionIds = [];
|
|
168
|
-
for (const version of await s3.listObjectVersions({ bucket
|
|
167
|
+
for (const version of await s3.listObjectVersions({ bucket, key })) {
|
|
169
168
|
if (keep.has(version.versionId)) {
|
|
170
169
|
continue;
|
|
171
170
|
}
|
|
172
171
|
try {
|
|
173
172
|
await client().send(new DeleteObjectCommand({
|
|
174
|
-
Bucket:
|
|
175
|
-
Key:
|
|
173
|
+
Bucket: bucket,
|
|
174
|
+
Key: key,
|
|
176
175
|
VersionId: version.versionId,
|
|
177
|
-
BypassGovernanceRetention:
|
|
176
|
+
BypassGovernanceRetention: governanceBypass,
|
|
178
177
|
}));
|
|
179
178
|
deletedVersionIds.push(version.versionId);
|
|
180
179
|
}
|
|
@@ -183,8 +182,8 @@ export const s3 = {
|
|
|
183
182
|
if (error.name === 'AccessDenied') {
|
|
184
183
|
logger.warn('storage', {
|
|
185
184
|
op: 'deleteOrphanVersions',
|
|
186
|
-
bucket
|
|
187
|
-
...keyShape(
|
|
185
|
+
bucket,
|
|
186
|
+
...keyShape(key),
|
|
188
187
|
versionId: version.versionId,
|
|
189
188
|
error,
|
|
190
189
|
});
|
|
@@ -199,7 +198,7 @@ export const s3 = {
|
|
|
199
198
|
return { deletedVersionIds, skippedVersionIds };
|
|
200
199
|
}
|
|
201
200
|
catch (e) {
|
|
202
|
-
logger.error('storage', { op: 'deleteOrphanVersions', bucket
|
|
201
|
+
logger.error('storage', { op: 'deleteOrphanVersions', bucket, ...keyShape(key), error: e });
|
|
203
202
|
throw e;
|
|
204
203
|
}
|
|
205
204
|
},
|