@budibase/backend-core 2.13.45 → 2.13.47
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 +177 -7
- package/dist/index.js.map +4 -4
- package/dist/index.js.meta.json +1 -1
- package/dist/package.json +5 -4
- package/dist/src/context/mainContext.d.ts +2 -0
- package/dist/src/context/mainContext.js +10 -1
- package/dist/src/context/mainContext.js.map +1 -1
- package/dist/src/context/types.d.ts +2 -0
- package/dist/src/db/couch/DatabaseImpl.d.ts +2 -1
- package/dist/src/db/couch/DatabaseImpl.js +3 -4
- package/dist/src/db/couch/DatabaseImpl.js.map +1 -1
- package/dist/src/db/db.js +2 -1
- package/dist/src/db/db.js.map +1 -1
- package/dist/src/db/instrumentation.d.ts +28 -0
- package/dist/src/db/instrumentation.js +118 -0
- package/dist/src/db/instrumentation.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/logging/pino/logger.js +6 -0
- package/dist/src/logging/pino/logger.js.map +1 -1
- package/dist/src/timers/timers.d.ts +11 -0
- package/dist/src/timers/timers.js +35 -1
- package/dist/src/timers/timers.js.map +1 -1
- package/dist/src/utils/Duration.d.ts +5 -0
- package/dist/src/utils/Duration.js +3 -0
- package/dist/src/utils/Duration.js.map +1 -1
- package/package.json +5 -4
- package/src/context/mainContext.ts +8 -0
- package/src/context/types.ts +2 -0
- package/src/db/couch/DatabaseImpl.ts +3 -4
- package/src/db/db.ts +2 -1
- package/src/db/instrumentation.ts +159 -0
- package/src/logging/pino/logger.ts +7 -0
- package/src/timers/timers.ts +34 -0
- package/src/utils/Duration.ts +4 -0
package/dist/index.js
CHANGED
|
@@ -2905,6 +2905,124 @@ var init_newid = __esm({
|
|
|
2905
2905
|
}
|
|
2906
2906
|
});
|
|
2907
2907
|
|
|
2908
|
+
// src/db/instrumentation.ts
|
|
2909
|
+
var import_dd_trace, DDInstrumentedDatabase;
|
|
2910
|
+
var init_instrumentation = __esm({
|
|
2911
|
+
"src/db/instrumentation.ts"() {
|
|
2912
|
+
"use strict";
|
|
2913
|
+
import_dd_trace = __toESM(require("dd-trace"));
|
|
2914
|
+
DDInstrumentedDatabase = class {
|
|
2915
|
+
constructor(db, resource) {
|
|
2916
|
+
this.db = db;
|
|
2917
|
+
this.resource = resource;
|
|
2918
|
+
}
|
|
2919
|
+
get name() {
|
|
2920
|
+
return this.db.name;
|
|
2921
|
+
}
|
|
2922
|
+
exists() {
|
|
2923
|
+
return import_dd_trace.default.trace("exists", { resource: this.resource }, (span) => {
|
|
2924
|
+
span?.addTags({ db_name: this.name });
|
|
2925
|
+
return this.db.exists();
|
|
2926
|
+
});
|
|
2927
|
+
}
|
|
2928
|
+
checkSetup() {
|
|
2929
|
+
return import_dd_trace.default.trace("checkSetup", { resource: this.resource }, (span) => {
|
|
2930
|
+
span?.addTags({ db_name: this.name });
|
|
2931
|
+
return this.db.checkSetup();
|
|
2932
|
+
});
|
|
2933
|
+
}
|
|
2934
|
+
get(id) {
|
|
2935
|
+
return import_dd_trace.default.trace("get", { resource: this.resource }, (span) => {
|
|
2936
|
+
span?.addTags({ db_name: this.name, doc_id: id });
|
|
2937
|
+
return this.db.get(id);
|
|
2938
|
+
});
|
|
2939
|
+
}
|
|
2940
|
+
getMultiple(ids, opts) {
|
|
2941
|
+
return import_dd_trace.default.trace("getMultiple", { resource: this.resource }, (span) => {
|
|
2942
|
+
span?.addTags({
|
|
2943
|
+
db_name: this.name,
|
|
2944
|
+
num_docs: ids.length,
|
|
2945
|
+
allow_missing: opts?.allowMissing
|
|
2946
|
+
});
|
|
2947
|
+
return this.db.getMultiple(ids, opts);
|
|
2948
|
+
});
|
|
2949
|
+
}
|
|
2950
|
+
remove(id, rev) {
|
|
2951
|
+
return import_dd_trace.default.trace("remove", { resource: this.resource }, (span) => {
|
|
2952
|
+
span?.addTags({ db_name: this.name, doc_id: id });
|
|
2953
|
+
return this.db.remove(id, rev);
|
|
2954
|
+
});
|
|
2955
|
+
}
|
|
2956
|
+
put(document, opts) {
|
|
2957
|
+
return import_dd_trace.default.trace("put", { resource: this.resource }, (span) => {
|
|
2958
|
+
span?.addTags({ db_name: this.name, doc_id: document._id });
|
|
2959
|
+
return this.db.put(document, opts);
|
|
2960
|
+
});
|
|
2961
|
+
}
|
|
2962
|
+
bulkDocs(documents) {
|
|
2963
|
+
return import_dd_trace.default.trace("bulkDocs", { resource: this.resource }, (span) => {
|
|
2964
|
+
span?.addTags({ db_name: this.name, num_docs: documents.length });
|
|
2965
|
+
return this.db.bulkDocs(documents);
|
|
2966
|
+
});
|
|
2967
|
+
}
|
|
2968
|
+
allDocs(params2) {
|
|
2969
|
+
return import_dd_trace.default.trace("allDocs", { resource: this.resource }, (span) => {
|
|
2970
|
+
span?.addTags({ db_name: this.name });
|
|
2971
|
+
return this.db.allDocs(params2);
|
|
2972
|
+
});
|
|
2973
|
+
}
|
|
2974
|
+
query(viewName, params2) {
|
|
2975
|
+
return import_dd_trace.default.trace("query", { resource: this.resource }, (span) => {
|
|
2976
|
+
span?.addTags({ db_name: this.name, view_name: viewName });
|
|
2977
|
+
return this.db.query(viewName, params2);
|
|
2978
|
+
});
|
|
2979
|
+
}
|
|
2980
|
+
destroy() {
|
|
2981
|
+
return import_dd_trace.default.trace("destroy", { resource: this.resource }, (span) => {
|
|
2982
|
+
span?.addTags({ db_name: this.name });
|
|
2983
|
+
return this.db.destroy();
|
|
2984
|
+
});
|
|
2985
|
+
}
|
|
2986
|
+
compact() {
|
|
2987
|
+
return import_dd_trace.default.trace("compact", { resource: this.resource }, (span) => {
|
|
2988
|
+
span?.addTags({ db_name: this.name });
|
|
2989
|
+
return this.db.compact();
|
|
2990
|
+
});
|
|
2991
|
+
}
|
|
2992
|
+
dump(stream2, opts) {
|
|
2993
|
+
return import_dd_trace.default.trace("dump", { resource: this.resource }, (span) => {
|
|
2994
|
+
span?.addTags({ db_name: this.name });
|
|
2995
|
+
return this.db.dump(stream2, opts);
|
|
2996
|
+
});
|
|
2997
|
+
}
|
|
2998
|
+
load(...args) {
|
|
2999
|
+
return import_dd_trace.default.trace("load", { resource: this.resource }, (span) => {
|
|
3000
|
+
span?.addTags({ db_name: this.name });
|
|
3001
|
+
return this.db.load(...args);
|
|
3002
|
+
});
|
|
3003
|
+
}
|
|
3004
|
+
createIndex(...args) {
|
|
3005
|
+
return import_dd_trace.default.trace("createIndex", { resource: this.resource }, (span) => {
|
|
3006
|
+
span?.addTags({ db_name: this.name });
|
|
3007
|
+
return this.db.createIndex(...args);
|
|
3008
|
+
});
|
|
3009
|
+
}
|
|
3010
|
+
deleteIndex(...args) {
|
|
3011
|
+
return import_dd_trace.default.trace("deleteIndex", { resource: this.resource }, (span) => {
|
|
3012
|
+
span?.addTags({ db_name: this.name });
|
|
3013
|
+
return this.db.deleteIndex(...args);
|
|
3014
|
+
});
|
|
3015
|
+
}
|
|
3016
|
+
getIndexes(...args) {
|
|
3017
|
+
return import_dd_trace.default.trace("getIndexes", { resource: this.resource }, (span) => {
|
|
3018
|
+
span?.addTags({ db_name: this.name });
|
|
3019
|
+
return this.db.getIndexes(...args);
|
|
3020
|
+
});
|
|
3021
|
+
}
|
|
3022
|
+
};
|
|
3023
|
+
}
|
|
3024
|
+
});
|
|
3025
|
+
|
|
2908
3026
|
// src/db/couch/DatabaseImpl.ts
|
|
2909
3027
|
function buildNano(couchInfo) {
|
|
2910
3028
|
return (0, import_nano.default)({
|
|
@@ -2918,10 +3036,8 @@ function buildNano(couchInfo) {
|
|
|
2918
3036
|
});
|
|
2919
3037
|
}
|
|
2920
3038
|
function DatabaseWithConnection(dbName, connection, opts) {
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
}
|
|
2924
|
-
return new DatabaseImpl(dbName, opts, connection);
|
|
3039
|
+
const db = new DatabaseImpl(dbName, opts, connection);
|
|
3040
|
+
return new DDInstrumentedDatabase(db, "couchdb");
|
|
2925
3041
|
}
|
|
2926
3042
|
var import_nano, DatabaseImpl;
|
|
2927
3043
|
var init_DatabaseImpl = __esm({
|
|
@@ -2933,6 +3049,7 @@ var init_DatabaseImpl = __esm({
|
|
|
2933
3049
|
init_utils2();
|
|
2934
3050
|
init_pouchDB();
|
|
2935
3051
|
init_newid();
|
|
3052
|
+
init_instrumentation();
|
|
2936
3053
|
DatabaseImpl = class _DatabaseImpl {
|
|
2937
3054
|
constructor(dbName, opts, connection) {
|
|
2938
3055
|
this.couchInfo = getCouchInfo();
|
|
@@ -3149,7 +3266,7 @@ var init_couch = __esm({
|
|
|
3149
3266
|
|
|
3150
3267
|
// src/db/db.ts
|
|
3151
3268
|
function getDB(dbName, opts) {
|
|
3152
|
-
return new DatabaseImpl(dbName, opts);
|
|
3269
|
+
return new DDInstrumentedDatabase(new DatabaseImpl(dbName, opts), "couchdb");
|
|
3153
3270
|
}
|
|
3154
3271
|
async function doWithDB(dbName, cb, opts) {
|
|
3155
3272
|
const db = getDB(dbName, opts);
|
|
@@ -3170,6 +3287,7 @@ var init_db3 = __esm({
|
|
|
3170
3287
|
"src/db/db.ts"() {
|
|
3171
3288
|
"use strict";
|
|
3172
3289
|
init_couch();
|
|
3290
|
+
init_instrumentation();
|
|
3173
3291
|
}
|
|
3174
3292
|
});
|
|
3175
3293
|
|
|
@@ -3406,6 +3524,13 @@ function isScim() {
|
|
|
3406
3524
|
const scimCall = context?.isScim;
|
|
3407
3525
|
return !!scimCall;
|
|
3408
3526
|
}
|
|
3527
|
+
function getCurrentContext() {
|
|
3528
|
+
try {
|
|
3529
|
+
return Context.get();
|
|
3530
|
+
} catch (e) {
|
|
3531
|
+
return void 0;
|
|
3532
|
+
}
|
|
3533
|
+
}
|
|
3409
3534
|
var TEST_APP_ID, getProdAppId;
|
|
3410
3535
|
var init_mainContext = __esm({
|
|
3411
3536
|
"src/context/mainContext.ts"() {
|
|
@@ -3444,6 +3569,7 @@ __export(context_exports, {
|
|
|
3444
3569
|
getAuditLogDBName: () => getAuditLogDBName,
|
|
3445
3570
|
getAuditLogsDB: () => getAuditLogsDB,
|
|
3446
3571
|
getAutomationId: () => getAutomationId,
|
|
3572
|
+
getCurrentContext: () => getCurrentContext,
|
|
3447
3573
|
getDevAppDB: () => getDevAppDB,
|
|
3448
3574
|
getEnvironmentVariables: () => getEnvironmentVariables,
|
|
3449
3575
|
getGlobalDB: () => getGlobalDB,
|
|
@@ -3604,17 +3730,52 @@ function cleanup() {
|
|
|
3604
3730
|
}
|
|
3605
3731
|
intervals = [];
|
|
3606
3732
|
}
|
|
3607
|
-
var intervals;
|
|
3733
|
+
var intervals, ExecutionTimeoutError, ExecutionTimeTracker;
|
|
3608
3734
|
var init_timers = __esm({
|
|
3609
3735
|
"src/timers/timers.ts"() {
|
|
3610
3736
|
"use strict";
|
|
3611
3737
|
intervals = [];
|
|
3738
|
+
ExecutionTimeoutError = class extends Error {
|
|
3739
|
+
constructor() {
|
|
3740
|
+
super(...arguments);
|
|
3741
|
+
this.name = "ExecutionTimeoutError";
|
|
3742
|
+
}
|
|
3743
|
+
};
|
|
3744
|
+
ExecutionTimeTracker = class _ExecutionTimeTracker {
|
|
3745
|
+
constructor(limitMs) {
|
|
3746
|
+
this.limitMs = limitMs;
|
|
3747
|
+
this.totalTimeMs = 0;
|
|
3748
|
+
}
|
|
3749
|
+
static withLimit(limitMs) {
|
|
3750
|
+
return new _ExecutionTimeTracker(limitMs);
|
|
3751
|
+
}
|
|
3752
|
+
track(f) {
|
|
3753
|
+
this.checkLimit();
|
|
3754
|
+
const start2 = process.hrtime.bigint();
|
|
3755
|
+
try {
|
|
3756
|
+
return f();
|
|
3757
|
+
} finally {
|
|
3758
|
+
const end2 = process.hrtime.bigint();
|
|
3759
|
+
this.totalTimeMs += Number(end2 - start2) / 1e6;
|
|
3760
|
+
this.checkLimit();
|
|
3761
|
+
}
|
|
3762
|
+
}
|
|
3763
|
+
checkLimit() {
|
|
3764
|
+
if (this.totalTimeMs > this.limitMs) {
|
|
3765
|
+
throw new ExecutionTimeoutError(
|
|
3766
|
+
`Execution time limit of ${this.limitMs}ms exceeded: ${this.totalTimeMs}ms`
|
|
3767
|
+
);
|
|
3768
|
+
}
|
|
3769
|
+
}
|
|
3770
|
+
};
|
|
3612
3771
|
}
|
|
3613
3772
|
});
|
|
3614
3773
|
|
|
3615
3774
|
// src/timers/index.ts
|
|
3616
3775
|
var timers_exports = {};
|
|
3617
3776
|
__export(timers_exports, {
|
|
3777
|
+
ExecutionTimeTracker: () => ExecutionTimeTracker,
|
|
3778
|
+
ExecutionTimeoutError: () => ExecutionTimeoutError,
|
|
3618
3779
|
cleanup: () => cleanup,
|
|
3619
3780
|
clear: () => clear,
|
|
3620
3781
|
set: () => set
|
|
@@ -6130,7 +6291,7 @@ var init_system2 = __esm({
|
|
|
6130
6291
|
});
|
|
6131
6292
|
|
|
6132
6293
|
// src/logging/pino/logger.ts
|
|
6133
|
-
var import_pino, import_pino_pretty, pinoInstance, isPlainObject2, isError2, isMessage2, getLogParams3, logger;
|
|
6294
|
+
var import_pino, import_pino_pretty, import_dd_trace2, import_ext, pinoInstance, isPlainObject2, isError2, isMessage2, getLogParams3, logger;
|
|
6134
6295
|
var init_logger = __esm({
|
|
6135
6296
|
"src/logging/pino/logger.ts"() {
|
|
6136
6297
|
"use strict";
|
|
@@ -6139,6 +6300,8 @@ var init_logger = __esm({
|
|
|
6139
6300
|
init_environment2();
|
|
6140
6301
|
init_context2();
|
|
6141
6302
|
init_correlation2();
|
|
6303
|
+
import_dd_trace2 = __toESM(require("dd-trace"));
|
|
6304
|
+
import_ext = require("dd-trace/ext");
|
|
6142
6305
|
init_system2();
|
|
6143
6306
|
if (!environment_default.DISABLE_PINO_LOGGER) {
|
|
6144
6307
|
let isPlainObject = function(obj) {
|
|
@@ -6172,6 +6335,10 @@ var init_logger = __esm({
|
|
|
6172
6335
|
identityType: identity?.type,
|
|
6173
6336
|
correlationId: getId()
|
|
6174
6337
|
};
|
|
6338
|
+
const span = import_dd_trace2.default.scope().active();
|
|
6339
|
+
if (span) {
|
|
6340
|
+
import_dd_trace2.default.inject(span.context(), import_ext.formats.LOG, contextObject);
|
|
6341
|
+
}
|
|
6175
6342
|
const mergingObject = {
|
|
6176
6343
|
err: error,
|
|
6177
6344
|
pid: process.pid,
|
|
@@ -7070,6 +7237,9 @@ var Duration = class _Duration {
|
|
|
7070
7237
|
static fromDays(duration) {
|
|
7071
7238
|
return _Duration.from("days" /* DAYS */, duration);
|
|
7072
7239
|
}
|
|
7240
|
+
static fromMilliseconds(duration) {
|
|
7241
|
+
return _Duration.from("milliseconds" /* MILLISECONDS */, duration);
|
|
7242
|
+
}
|
|
7073
7243
|
};
|
|
7074
7244
|
|
|
7075
7245
|
// src/redis/redlockImpl.ts
|