@budibase/backend-core 2.13.38 → 2.13.39
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/index.js +2522 -2521
- package/dist/index.js.map +4 -4
- package/dist/index.js.meta.json +1 -1
- package/dist/package.json +4 -4
- package/dist/src/cache/writethrough.d.ts +2 -2
- package/dist/src/cache/writethrough.js.map +1 -1
- package/dist/src/queue/inMemoryQueue.d.ts +1 -0
- package/dist/src/queue/inMemoryQueue.js +5 -0
- package/dist/src/queue/inMemoryQueue.js.map +1 -1
- package/dist/src/redis/redlockImpl.js +0 -2
- package/dist/src/redis/redlockImpl.js.map +1 -1
- package/package.json +4 -4
- package/src/cache/tests/writethrough.spec.ts +7 -6
- package/src/cache/writethrough.ts +11 -8
- package/src/queue/inMemoryQueue.ts +4 -0
- package/src/redis/redlockImpl.ts +0 -1
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/backend-core",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.39",
|
|
4
4
|
"description": "Budibase backend core libraries used in server and worker",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@budibase/nano": "10.1.4",
|
|
25
25
|
"@budibase/pouchdb-replication-stream": "1.2.10",
|
|
26
|
-
"@budibase/shared-core": "2.13.
|
|
27
|
-
"@budibase/types": "2.13.
|
|
26
|
+
"@budibase/shared-core": "2.13.39",
|
|
27
|
+
"@budibase/types": "2.13.39",
|
|
28
28
|
"@techpass/passport-openidconnect": "0.3.2",
|
|
29
29
|
"aws-cloudfront-sign": "3.0.2",
|
|
30
30
|
"aws-sdk": "2.1030.0",
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "5c69a1d361d760d2ac3cda295f1cece05f354fa3"
|
|
100
100
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Database } from "@budibase/types";
|
|
1
|
+
import { Database, Document } from "@budibase/types";
|
|
2
2
|
export declare class Writethrough {
|
|
3
3
|
db: Database;
|
|
4
4
|
writeRateMs: number;
|
|
@@ -8,6 +8,6 @@ export declare class Writethrough {
|
|
|
8
8
|
id: string | undefined;
|
|
9
9
|
rev: string | undefined;
|
|
10
10
|
}>;
|
|
11
|
-
get(id: string): Promise<
|
|
11
|
+
get<T extends Document>(id: string): Promise<T>;
|
|
12
12
|
remove(docOrId: any, rev?: any): Promise<void>;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writethrough.js","sourceRoot":"","sources":["../../../src/cache/writethrough.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA8B;AAC9B,wCAAqD;AACrD,wCAAoC;AACpC,2CAAwE;AACxE,4DAA6C;AAE7C,MAAM,qBAAqB,GAAG,KAAK,CAAA;AACnC,IAAI,KAAK,GAAqB,IAAI,CAAA;AAOlC,SAAe,QAAQ;;QACrB,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAqB,GAAE,CAAA;YAC5C,KAAK,GAAG,IAAI,cAAS,CAAC,MAAM,CAAC,CAAA;SAC9B;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CAAA;AAED,SAAS,YAAY,CAAC,EAAY,EAAE,GAAW;IAC7C,OAAO,EAAE,CAAC,IAAI,GAAG,GAAG,CAAA;AACtB,CAAC;AAED,SAAS,aAAa,
|
|
1
|
+
{"version":3,"file":"writethrough.js","sourceRoot":"","sources":["../../../src/cache/writethrough.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ declare class InMemoryQueue {
|
|
|
28
28
|
* a lot more information about the queue and current status of Bull cluster.
|
|
29
29
|
*/
|
|
30
30
|
process(func: any): void;
|
|
31
|
+
isReady(): Promise<boolean>;
|
|
31
32
|
/**
|
|
32
33
|
* Simple function to replicate the add message functionality of Bull, putting
|
|
33
34
|
* a new message on the queue. This then emits an event which will be used to
|
|
@@ -72,6 +72,11 @@ class InMemoryQueue {
|
|
|
72
72
|
this._runCount++;
|
|
73
73
|
}));
|
|
74
74
|
}
|
|
75
|
+
isReady() {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
return true;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
75
80
|
// simply puts a message to the queue and emits to the queue for processing
|
|
76
81
|
/**
|
|
77
82
|
* Simple function to replicate the add message functionality of Bull, putting
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inMemoryQueue.js","sourceRoot":"","sources":["../../../src/queue/inMemoryQueue.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oDAA2B;AAC3B,oCAAkC;AAElC;;;;;;;;GAQG;AACH,SAAS,MAAM,CAAC,KAAa,EAAE,OAAY;IACzC,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,OAAO;KACd,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,aAAa;IAOjB;;;;;OAKG;IACH,YAAY,IAAY,EAAE,IAAU;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAM,CAAC,YAAY,EAAE,CAAA;QACzC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;IACpB,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAS;QACf,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,GAAS,EAAE;YACrC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC9B,OAAM;aACP;YACD,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;YAChC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,MAAM,IAAI,CAAA;aACX;YACD,IAAI,CAAC,SAAS,EAAE,CAAA;QAClB,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC;IAED,2EAA2E;IAC3E;;;;;;;OAOG;IACH,0CAA0C;IAC1C,GAAG,CAAC,GAAQ,EAAE,MAAe;QAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,oCAAoC,CAAA;SAC3C;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACG,KAAK;;YACT,OAAO,EAAE,CAAA;QACX,CAAC;KAAA;IAED;;;OAGG;IACH,qBAAqB,CAAC,SAAiB;QACrC,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACxB,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,EAAE,CAAA;IACX,CAAC;IAED,0CAA0C;IAC1C,UAAU,CAAC,OAAe;QACxB,QAAQ;IACV,CAAC;IAED;;OAEG;IACG,KAAK;;YACT,OAAO,EAAE,CAAA;QACX,CAAC;KAAA;IAEK,MAAM;;YACV,OAAO,EAAE,CAAA;QACX,CAAC;KAAA;IAED,EAAE;QACA,aAAa;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IAEK,iBAAiB;;YACrB,GAAG;gBACD,MAAM,IAAA,eAAO,EAAC,EAAE,CAAC,CAAA;aAClB,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAC;QAC3C,CAAC;KAAA;CACF;AAED,kBAAe,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"inMemoryQueue.js","sourceRoot":"","sources":["../../../src/queue/inMemoryQueue.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oDAA2B;AAC3B,oCAAkC;AAElC;;;;;;;;GAQG;AACH,SAAS,MAAM,CAAC,KAAa,EAAE,OAAY;IACzC,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,OAAO;KACd,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,aAAa;IAOjB;;;;;OAKG;IACH,YAAY,IAAY,EAAE,IAAU;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAM,CAAC,YAAY,EAAE,CAAA;QACzC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;IACpB,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAS;QACf,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,GAAS,EAAE;YACrC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC9B,OAAM;aACP;YACD,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;YAChC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,MAAM,IAAI,CAAA;aACX;YACD,IAAI,CAAC,SAAS,EAAE,CAAA;QAClB,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC;IAEK,OAAO;;YACX,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAED,2EAA2E;IAC3E;;;;;;;OAOG;IACH,0CAA0C;IAC1C,GAAG,CAAC,GAAQ,EAAE,MAAe;QAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,oCAAoC,CAAA;SAC3C;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACG,KAAK;;YACT,OAAO,EAAE,CAAA;QACX,CAAC;KAAA;IAED;;;OAGG;IACH,qBAAqB,CAAC,SAAiB;QACrC,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACxB,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,EAAE,CAAA;IACX,CAAC;IAED,0CAA0C;IAC1C,UAAU,CAAC,OAAe;QACxB,QAAQ;IACV,CAAC;IAED;;OAEG;IACG,KAAK;;YACT,OAAO,EAAE,CAAA;QACX,CAAC;KAAA;IAEK,MAAM;;YACV,OAAO,EAAE,CAAA;QACX,CAAC;KAAA;IAED,EAAE;QACA,aAAa;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IAEK,iBAAiB;;YACrB,GAAG;gBACD,MAAM,IAAA,eAAO,EAAC,EAAE,CAAC,CAAA;aAClB,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAC;QAC3C,CAAC;KAAA;CACF;AAED,kBAAe,aAAa,CAAA"}
|
|
@@ -40,7 +40,6 @@ const redlock_1 = __importDefault(require("redlock"));
|
|
|
40
40
|
const init_1 = require("./init");
|
|
41
41
|
const types_1 = require("@budibase/types");
|
|
42
42
|
const context = __importStar(require("../context"));
|
|
43
|
-
const logging_1 = require("../logging");
|
|
44
43
|
const shared_core_1 = require("@budibase/shared-core");
|
|
45
44
|
const utils_1 = require("../utils");
|
|
46
45
|
function getClient(type, opts) {
|
|
@@ -147,7 +146,6 @@ function doWithLock(opts, task) {
|
|
|
147
146
|
return { executed: true, result };
|
|
148
147
|
}
|
|
149
148
|
catch (e) {
|
|
150
|
-
(0, logging_1.logWarn)(`lock type: ${opts.type} error`, e);
|
|
151
149
|
// lock limit exceeded
|
|
152
150
|
if (e.name === "LockError") {
|
|
153
151
|
if (opts.type === types_1.LockType.TRY_ONCE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redlockImpl.js","sourceRoot":"","sources":["../../../src/redis/redlockImpl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA6B;AAC7B,iCAAsC;AACtC,2CAAuD;AACvD,oDAAqC;
|
|
1
|
+
{"version":3,"file":"redlockImpl.js","sourceRoot":"","sources":["../../../src/redis/redlockImpl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA6B;AAC7B,iCAAsC;AACtC,2CAAuD;AACvD,oDAAqC;AAErC,uDAA6C;AAC7C,oCAAmC;AAEnC,SAAe,SAAS,CACtB,IAAc,EACd,IAAsB;;QAEtB,IAAI,IAAI,KAAK,gBAAQ,CAAC,MAAM,EAAE;YAC5B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;SACxB;QAED,QAAQ,IAAI,EAAE;YACZ,KAAK,gBAAQ,CAAC,QAAQ,CAAC,CAAC;gBACtB,OAAO,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;aACpC;YACD,KAAK,gBAAQ,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;aACrC;YACD,KAAK,gBAAQ,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;aACnC;YACD,KAAK,gBAAQ,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;aACrC;YACD,KAAK,gBAAQ,CAAC,WAAW,CAAC,CAAC;gBACzB,OAAO,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;aACvC;YACD,OAAO,CAAC,CAAC;gBACP,MAAM,mBAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;aAC9B;SACF;IACH,CAAC;CAAA;AAED,MAAM,OAAO,GAAmD;IAC9D,QAAQ,EAAE;QACR,0DAA0D;QAC1D,UAAU,EAAE,CAAC;KACd;IACD,SAAS,EAAE;QACT,UAAU,EAAE,CAAC;KACd;IACD,OAAO,EAAE;QACP,6CAA6C;QAC7C,sCAAsC;QACtC,WAAW,EAAE,IAAI;QAEjB,+CAA+C;QAC/C,qCAAqC;QACrC,UAAU,EAAE,EAAE;QAEd,kCAAkC;QAClC,UAAU,EAAE,GAAG;QAEf,+CAA+C;QAC/C,+CAA+C;QAC/C,+DAA+D;QAC/D,WAAW,EAAE,GAAG,EAAE,aAAa;KAChC;IACD,SAAS,EAAE;QACT,UAAU,EAAE,GAAG;KAChB;IACD,MAAM,EAAE,EAAE;IACV,WAAW,EAAE;QACX,UAAU,EAAE,CAAC,CAAC;KACf;CACF,CAAA;AAED,SAAsB,UAAU,CAAC,OAAwB,EAAE;;QACzD,MAAM,OAAO,mCAAQ,OAAO,CAAC,OAAO,GAAK,IAAI,CAAE,CAAA;QAC/C,MAAM,YAAY,GAAG,MAAM,IAAA,oBAAa,GAAE,CAAA;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;QACvC,OAAO,IAAI,iBAAO,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC;CAAA;AALD,gCAKC;AAcD,SAAS,WAAW,CAAC,IAAiB;IACpC,sBAAsB;IACtB,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;IACjE,IAAI,IAAI,GAAW,QAAQ,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;IAChD,yCAAyC;IACzC,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjB,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;KAClC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAEY,QAAA,sBAAsB,GAAG,gBAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AAErE,SAAsB,UAAU,CAC9B,IAAiB,EACjB,IAAsB;;QAEtB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC9D,IAAI,IAA8B,CAAA;QAClC,IAAI,OAAO,CAAA;QACX,IAAI;YACF,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;YAE9B,MAAM,GAAG,GACP,IAAI,CAAC,IAAI,KAAK,gBAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,8BAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;YAExE,kBAAkB;YAClB,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YAEpC,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAQ,CAAC,WAAW,EAAE;gBACtC,uDAAuD;gBACvD,MAAM,iBAAiB,GAAG,GAAS,EAAE;oBACnC,OAAO,GAAG,UAAU,CAAC,GAAS,EAAE;wBAC9B,IAAI,GAAG,MAAM,IAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;wBAEtE,iBAAiB,EAAE,CAAA;oBACrB,CAAC,CAAA,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;gBACb,CAAC,CAAA;gBAED,iBAAiB,EAAE,CAAA;aACpB;YAED,sBAAsB;YACtB,sDAAsD;YACtD,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;YAC3B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;SAClC;QAAC,OAAO,CAAM,EAAE;YACf,sBAAsB;YACtB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE;gBAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAQ,CAAC,QAAQ,EAAE;oBACnC,yDAAyD;oBACzD,kCAAkC;oBAClC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;iBAC3B;qBAAM;oBACL,MAAM,CAAC,CAAA;iBACR;aACF;iBAAM;gBACL,MAAM,CAAC,CAAA;aACR;SACF;gBAAS;YACR,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,EAAE,CAAA,CAAA;SACrB;IACH,CAAC;CAAA;AAlDD,gCAkDC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/backend-core",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.39",
|
|
4
4
|
"description": "Budibase backend core libraries used in server and worker",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@budibase/nano": "10.1.4",
|
|
25
25
|
"@budibase/pouchdb-replication-stream": "1.2.10",
|
|
26
|
-
"@budibase/shared-core": "2.13.
|
|
27
|
-
"@budibase/types": "2.13.
|
|
26
|
+
"@budibase/shared-core": "2.13.39",
|
|
27
|
+
"@budibase/types": "2.13.39",
|
|
28
28
|
"@techpass/passport-openidconnect": "0.3.2",
|
|
29
29
|
"aws-cloudfront-sign": "3.0.2",
|
|
30
30
|
"aws-sdk": "2.1030.0",
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "5c69a1d361d760d2ac3cda295f1cece05f354fa3"
|
|
100
100
|
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { DBTestConfiguration } from "../../../tests/extra"
|
|
2
|
-
import {
|
|
3
|
-
structures,
|
|
4
|
-
expectFunctionWasCalledTimesWith,
|
|
5
|
-
mocks,
|
|
6
|
-
} from "../../../tests"
|
|
2
|
+
import { structures } from "../../../tests"
|
|
7
3
|
import { Writethrough } from "../writethrough"
|
|
8
4
|
import { getDB } from "../../db"
|
|
5
|
+
import { Document } from "@budibase/types"
|
|
9
6
|
import tk from "timekeeper"
|
|
10
7
|
|
|
11
8
|
tk.freeze(Date.now())
|
|
12
9
|
|
|
10
|
+
interface ValueDoc extends Document {
|
|
11
|
+
value: any
|
|
12
|
+
}
|
|
13
|
+
|
|
13
14
|
const DELAY = 5000
|
|
14
15
|
|
|
15
16
|
describe("writethrough", () => {
|
|
@@ -117,7 +118,7 @@ describe("writethrough", () => {
|
|
|
117
118
|
describe("get", () => {
|
|
118
119
|
it("should be able to retrieve", async () => {
|
|
119
120
|
await config.doInTenant(async () => {
|
|
120
|
-
const response = await writethrough.get(docId)
|
|
121
|
+
const response = await writethrough.get<ValueDoc>(docId)
|
|
121
122
|
expect(response.value).toBe(4)
|
|
122
123
|
})
|
|
123
124
|
})
|
|
@@ -7,7 +7,7 @@ import * as locks from "../redis/redlockImpl"
|
|
|
7
7
|
const DEFAULT_WRITE_RATE_MS = 10000
|
|
8
8
|
let CACHE: BaseCache | null = null
|
|
9
9
|
|
|
10
|
-
interface CacheItem {
|
|
10
|
+
interface CacheItem<T extends Document> {
|
|
11
11
|
doc: any
|
|
12
12
|
lastWrite: number
|
|
13
13
|
}
|
|
@@ -24,7 +24,10 @@ function makeCacheKey(db: Database, key: string) {
|
|
|
24
24
|
return db.name + key
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
function makeCacheItem
|
|
27
|
+
function makeCacheItem<T extends Document>(
|
|
28
|
+
doc: T,
|
|
29
|
+
lastWrite: number | null = null
|
|
30
|
+
): CacheItem<T> {
|
|
28
31
|
return { doc, lastWrite: lastWrite || Date.now() }
|
|
29
32
|
}
|
|
30
33
|
|
|
@@ -35,7 +38,7 @@ async function put(
|
|
|
35
38
|
) {
|
|
36
39
|
const cache = await getCache()
|
|
37
40
|
const key = doc._id
|
|
38
|
-
let cacheItem: CacheItem | undefined
|
|
41
|
+
let cacheItem: CacheItem<any> | undefined
|
|
39
42
|
if (key) {
|
|
40
43
|
cacheItem = await cache.get(makeCacheKey(db, key))
|
|
41
44
|
}
|
|
@@ -84,12 +87,12 @@ async function put(
|
|
|
84
87
|
return { ok: true, id: output._id, rev: output._rev }
|
|
85
88
|
}
|
|
86
89
|
|
|
87
|
-
async function get(db: Database, id: string): Promise<
|
|
90
|
+
async function get<T extends Document>(db: Database, id: string): Promise<T> {
|
|
88
91
|
const cache = await getCache()
|
|
89
92
|
const cacheKey = makeCacheKey(db, id)
|
|
90
|
-
let cacheItem: CacheItem = await cache.get(cacheKey)
|
|
93
|
+
let cacheItem: CacheItem<T> = await cache.get(cacheKey)
|
|
91
94
|
if (!cacheItem) {
|
|
92
|
-
const doc = await db.get(id)
|
|
95
|
+
const doc = await db.get<T>(id)
|
|
93
96
|
cacheItem = makeCacheItem(doc)
|
|
94
97
|
await cache.store(cacheKey, cacheItem)
|
|
95
98
|
}
|
|
@@ -123,8 +126,8 @@ export class Writethrough {
|
|
|
123
126
|
return put(this.db, doc, writeRateMs)
|
|
124
127
|
}
|
|
125
128
|
|
|
126
|
-
async get(id: string) {
|
|
127
|
-
return get(this.db, id)
|
|
129
|
+
async get<T extends Document>(id: string) {
|
|
130
|
+
return get<T>(this.db, id)
|
|
128
131
|
}
|
|
129
132
|
|
|
130
133
|
async remove(docOrId: any, rev?: any) {
|
package/src/redis/redlockImpl.ts
CHANGED
|
@@ -137,7 +137,6 @@ export async function doWithLock<T>(
|
|
|
137
137
|
const result = await task()
|
|
138
138
|
return { executed: true, result }
|
|
139
139
|
} catch (e: any) {
|
|
140
|
-
logWarn(`lock type: ${opts.type} error`, e)
|
|
141
140
|
// lock limit exceeded
|
|
142
141
|
if (e.name === "LockError") {
|
|
143
142
|
if (opts.type === LockType.TRY_ONCE) {
|