@driveflux/reporter 6.0.4-next.5 → 7.0.1
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/config.d.ts.map +1 -1
- package/dist/config.js +92 -36
- package/dist/config.js.map +1 -1
- package/dist/drivers/console.js +13 -194
- package/dist/drivers/rollbar.js +16 -207
- package/dist/drivers/slack.js +117 -340
- package/dist/index.js +67 -372
- package/dist/types.js +2 -1
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -1,200 +1,3 @@
|
|
|
1
|
-
function _array_like_to_array(arr, len) {
|
|
2
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
-
return arr2;
|
|
5
|
-
}
|
|
6
|
-
function _array_without_holes(arr) {
|
|
7
|
-
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
8
|
-
}
|
|
9
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
10
|
-
try {
|
|
11
|
-
var info = gen[key](arg);
|
|
12
|
-
var value = info.value;
|
|
13
|
-
} catch (error) {
|
|
14
|
-
reject(error);
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (info.done) {
|
|
18
|
-
resolve(value);
|
|
19
|
-
} else {
|
|
20
|
-
Promise.resolve(value).then(_next, _throw);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function _async_to_generator(fn) {
|
|
24
|
-
return function() {
|
|
25
|
-
var self = this, args = arguments;
|
|
26
|
-
return new Promise(function(resolve, reject) {
|
|
27
|
-
var gen = fn.apply(self, args);
|
|
28
|
-
function _next(value) {
|
|
29
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
30
|
-
}
|
|
31
|
-
function _throw(err) {
|
|
32
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
33
|
-
}
|
|
34
|
-
_next(undefined);
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function _define_property(obj, key, value) {
|
|
39
|
-
if (key in obj) {
|
|
40
|
-
Object.defineProperty(obj, key, {
|
|
41
|
-
value: value,
|
|
42
|
-
enumerable: true,
|
|
43
|
-
configurable: true,
|
|
44
|
-
writable: true
|
|
45
|
-
});
|
|
46
|
-
} else {
|
|
47
|
-
obj[key] = value;
|
|
48
|
-
}
|
|
49
|
-
return obj;
|
|
50
|
-
}
|
|
51
|
-
function _iterable_to_array(iter) {
|
|
52
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
53
|
-
}
|
|
54
|
-
function _non_iterable_spread() {
|
|
55
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
56
|
-
}
|
|
57
|
-
function _object_spread(target) {
|
|
58
|
-
for(var i = 1; i < arguments.length; i++){
|
|
59
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
60
|
-
var ownKeys = Object.keys(source);
|
|
61
|
-
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
62
|
-
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
63
|
-
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
64
|
-
}));
|
|
65
|
-
}
|
|
66
|
-
ownKeys.forEach(function(key) {
|
|
67
|
-
_define_property(target, key, source[key]);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
return target;
|
|
71
|
-
}
|
|
72
|
-
function ownKeys(object, enumerableOnly) {
|
|
73
|
-
var keys = Object.keys(object);
|
|
74
|
-
if (Object.getOwnPropertySymbols) {
|
|
75
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
76
|
-
if (enumerableOnly) {
|
|
77
|
-
symbols = symbols.filter(function(sym) {
|
|
78
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
keys.push.apply(keys, symbols);
|
|
82
|
-
}
|
|
83
|
-
return keys;
|
|
84
|
-
}
|
|
85
|
-
function _object_spread_props(target, source) {
|
|
86
|
-
source = source != null ? source : {};
|
|
87
|
-
if (Object.getOwnPropertyDescriptors) {
|
|
88
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
89
|
-
} else {
|
|
90
|
-
ownKeys(Object(source)).forEach(function(key) {
|
|
91
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
return target;
|
|
95
|
-
}
|
|
96
|
-
function _to_consumable_array(arr) {
|
|
97
|
-
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
98
|
-
}
|
|
99
|
-
function _unsupported_iterable_to_array(o, minLen) {
|
|
100
|
-
if (!o) return;
|
|
101
|
-
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
102
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
103
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
104
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
105
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
106
|
-
}
|
|
107
|
-
function _ts_generator(thisArg, body) {
|
|
108
|
-
var f, y, t, _ = {
|
|
109
|
-
label: 0,
|
|
110
|
-
sent: function() {
|
|
111
|
-
if (t[0] & 1) throw t[1];
|
|
112
|
-
return t[1];
|
|
113
|
-
},
|
|
114
|
-
trys: [],
|
|
115
|
-
ops: []
|
|
116
|
-
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
117
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
118
|
-
return this;
|
|
119
|
-
}), g;
|
|
120
|
-
function verb(n) {
|
|
121
|
-
return function(v) {
|
|
122
|
-
return step([
|
|
123
|
-
n,
|
|
124
|
-
v
|
|
125
|
-
]);
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
function step(op) {
|
|
129
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
130
|
-
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
131
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
132
|
-
if (y = 0, t) op = [
|
|
133
|
-
op[0] & 2,
|
|
134
|
-
t.value
|
|
135
|
-
];
|
|
136
|
-
switch(op[0]){
|
|
137
|
-
case 0:
|
|
138
|
-
case 1:
|
|
139
|
-
t = op;
|
|
140
|
-
break;
|
|
141
|
-
case 4:
|
|
142
|
-
_.label++;
|
|
143
|
-
return {
|
|
144
|
-
value: op[1],
|
|
145
|
-
done: false
|
|
146
|
-
};
|
|
147
|
-
case 5:
|
|
148
|
-
_.label++;
|
|
149
|
-
y = op[1];
|
|
150
|
-
op = [
|
|
151
|
-
0
|
|
152
|
-
];
|
|
153
|
-
continue;
|
|
154
|
-
case 7:
|
|
155
|
-
op = _.ops.pop();
|
|
156
|
-
_.trys.pop();
|
|
157
|
-
continue;
|
|
158
|
-
default:
|
|
159
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
160
|
-
_ = 0;
|
|
161
|
-
continue;
|
|
162
|
-
}
|
|
163
|
-
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
164
|
-
_.label = op[1];
|
|
165
|
-
break;
|
|
166
|
-
}
|
|
167
|
-
if (op[0] === 6 && _.label < t[1]) {
|
|
168
|
-
_.label = t[1];
|
|
169
|
-
t = op;
|
|
170
|
-
break;
|
|
171
|
-
}
|
|
172
|
-
if (t && _.label < t[2]) {
|
|
173
|
-
_.label = t[2];
|
|
174
|
-
_.ops.push(op);
|
|
175
|
-
break;
|
|
176
|
-
}
|
|
177
|
-
if (t[2]) _.ops.pop();
|
|
178
|
-
_.trys.pop();
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
|
-
op = body.call(thisArg, _);
|
|
182
|
-
} catch (e) {
|
|
183
|
-
op = [
|
|
184
|
-
6,
|
|
185
|
-
e
|
|
186
|
-
];
|
|
187
|
-
y = 0;
|
|
188
|
-
} finally{
|
|
189
|
-
f = t = 0;
|
|
190
|
-
}
|
|
191
|
-
if (op[0] & 5) throw op[1];
|
|
192
|
-
return {
|
|
193
|
-
value: op[0] ? op[1] : void 0,
|
|
194
|
-
done: true
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
1
|
import { isAProblem } from '@driveflux/problem';
|
|
199
2
|
import { initSingleton } from '@driveflux/singleton';
|
|
200
3
|
import { omit } from '@driveflux/utils';
|
|
@@ -203,210 +6,102 @@ import { ConsoleDriver } from './drivers/console.js';
|
|
|
203
6
|
import { RollbarDriver } from './drivers/rollbar.js';
|
|
204
7
|
import { SlackDriver } from './drivers/slack.js';
|
|
205
8
|
export * from './config.js';
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
var customDrivers = initSingleton('reporter_customDrivers', function() {
|
|
210
|
-
return new Map();
|
|
211
|
-
});
|
|
212
|
-
export var addDriver = function(name, reporter) {
|
|
213
|
-
var enabled = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
|
|
9
|
+
const problemsAndErrorsToReport = initSingleton('reporter_problemsAndErrors', () => new Set());
|
|
10
|
+
const customDrivers = initSingleton('reporter_customDrivers', () => new Map());
|
|
11
|
+
export const addDriver = (name, reporter, enabled = true) => {
|
|
214
12
|
customDrivers.set(name, {
|
|
215
|
-
enabled
|
|
216
|
-
reporter
|
|
13
|
+
enabled,
|
|
14
|
+
reporter,
|
|
217
15
|
});
|
|
218
16
|
};
|
|
219
|
-
|
|
220
|
-
console:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
});
|
|
224
|
-
},
|
|
225
|
-
rollbar: function() {
|
|
226
|
-
return initSingleton('reporter_rollbarDriver', function() {
|
|
227
|
-
return new RollbarDriver(config.rollbar);
|
|
228
|
-
});
|
|
229
|
-
},
|
|
230
|
-
slack: function() {
|
|
231
|
-
return initSingleton('reporter_slackDriver', function() {
|
|
232
|
-
return new SlackDriver(config.slack);
|
|
233
|
-
});
|
|
234
|
-
}
|
|
17
|
+
const DRIVERS_MAP = {
|
|
18
|
+
console: () => initSingleton('reporter_consoleDriver', () => new ConsoleDriver()),
|
|
19
|
+
rollbar: () => initSingleton('reporter_rollbarDriver', () => new RollbarDriver(config.rollbar)),
|
|
20
|
+
slack: () => initSingleton('reporter_slackDriver', () => new SlackDriver(config.slack)),
|
|
235
21
|
};
|
|
236
|
-
export
|
|
22
|
+
export const getDriver = (driver) => {
|
|
237
23
|
if (driver in DRIVERS_MAP) {
|
|
238
24
|
return DRIVERS_MAP[driver]();
|
|
239
25
|
}
|
|
240
|
-
|
|
26
|
+
const customDriver = customDrivers.get(driver);
|
|
241
27
|
if (!customDriver) {
|
|
242
|
-
throw new Error(
|
|
28
|
+
throw new Error(`Driver ${driver} not found.`);
|
|
243
29
|
}
|
|
244
30
|
return customDriver.reporter;
|
|
245
31
|
};
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
return allDrivers
|
|
249
|
-
|
|
250
|
-
if (config.drivers[driver] ||
|
|
32
|
+
const getDrivers = () => {
|
|
33
|
+
const allDrivers = [...Object.keys(config.drivers), ...customDrivers.keys()];
|
|
34
|
+
return allDrivers
|
|
35
|
+
.map((driver) => {
|
|
36
|
+
if (config.drivers[driver] ||
|
|
37
|
+
customDrivers.get(driver)?.enabled) {
|
|
251
38
|
return getDriver(driver);
|
|
252
39
|
}
|
|
253
40
|
return;
|
|
254
|
-
})
|
|
255
|
-
|
|
256
|
-
});
|
|
41
|
+
})
|
|
42
|
+
.filter((d) => d);
|
|
257
43
|
};
|
|
258
|
-
export
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
3,
|
|
268
|
-
1
|
|
269
|
-
];
|
|
270
|
-
problemsAndErrorsToReport.add(err);
|
|
271
|
-
return [
|
|
272
|
-
3,
|
|
273
|
-
3
|
|
274
|
-
];
|
|
275
|
-
case 1:
|
|
276
|
-
return [
|
|
277
|
-
4,
|
|
278
|
-
commitSingleError(err, metadata)
|
|
279
|
-
];
|
|
280
|
-
case 2:
|
|
281
|
-
_state.sent();
|
|
282
|
-
_state.label = 3;
|
|
283
|
-
case 3:
|
|
284
|
-
return [
|
|
285
|
-
2,
|
|
286
|
-
err
|
|
287
|
-
];
|
|
288
|
-
}
|
|
289
|
-
});
|
|
290
|
-
})();
|
|
44
|
+
export const reportError = async (err, metadata = {}, sync) => {
|
|
45
|
+
const defer = typeof sync === 'boolean' ? !sync : config.deferReporting;
|
|
46
|
+
if (defer) {
|
|
47
|
+
problemsAndErrorsToReport.add(err);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
await commitSingleError(err, metadata);
|
|
51
|
+
}
|
|
52
|
+
return err;
|
|
291
53
|
};
|
|
292
54
|
/**
|
|
293
55
|
*
|
|
294
56
|
* @todo make function
|
|
295
57
|
* @param problem
|
|
296
|
-
*/
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
];
|
|
307
|
-
problemsAndErrorsToReport.add(problem);
|
|
308
|
-
return [
|
|
309
|
-
3,
|
|
310
|
-
3
|
|
311
|
-
];
|
|
312
|
-
case 1:
|
|
313
|
-
return [
|
|
314
|
-
4,
|
|
315
|
-
commitSingleProblem(problem)
|
|
316
|
-
];
|
|
317
|
-
case 2:
|
|
318
|
-
_state.sent();
|
|
319
|
-
_state.label = 3;
|
|
320
|
-
case 3:
|
|
321
|
-
return [
|
|
322
|
-
2,
|
|
323
|
-
problem
|
|
324
|
-
];
|
|
325
|
-
}
|
|
326
|
-
});
|
|
327
|
-
})();
|
|
58
|
+
*/
|
|
59
|
+
export const reportProblem = async (problem, sync) => {
|
|
60
|
+
const defer = typeof sync === 'boolean' ? !sync : config.deferReporting;
|
|
61
|
+
if (defer) {
|
|
62
|
+
problemsAndErrorsToReport.add(problem);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
await commitSingleProblem(problem);
|
|
66
|
+
}
|
|
67
|
+
return problem;
|
|
328
68
|
};
|
|
329
|
-
export
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
problemsAndErrorsToReport.clear();
|
|
338
|
-
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
339
|
-
try {
|
|
340
|
-
for(_iterator = problemsToReport[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
341
|
-
_$err = _step.value;
|
|
342
|
-
promises.push(isAProblem(_$err) ? commitSingleProblem(_$err) : commitSingleError(_$err));
|
|
343
|
-
}
|
|
344
|
-
} catch (err) {
|
|
345
|
-
_didIteratorError = true;
|
|
346
|
-
_iteratorError = err;
|
|
347
|
-
} finally{
|
|
348
|
-
try {
|
|
349
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
350
|
-
_iterator.return();
|
|
351
|
-
}
|
|
352
|
-
} finally{
|
|
353
|
-
if (_didIteratorError) {
|
|
354
|
-
throw _iteratorError;
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
return [
|
|
359
|
-
4,
|
|
360
|
-
Promise.allSettled(promises)
|
|
361
|
-
];
|
|
362
|
-
case 1:
|
|
363
|
-
_state.sent();
|
|
364
|
-
return [
|
|
365
|
-
2
|
|
366
|
-
];
|
|
367
|
-
}
|
|
368
|
-
});
|
|
369
|
-
})();
|
|
69
|
+
export const commitReportingErrors = async () => {
|
|
70
|
+
const promises = [];
|
|
71
|
+
const problemsToReport = [...problemsAndErrorsToReport];
|
|
72
|
+
problemsAndErrorsToReport.clear();
|
|
73
|
+
for (const err of problemsToReport) {
|
|
74
|
+
promises.push(isAProblem(err) ? commitSingleProblem(err) : commitSingleError(err));
|
|
75
|
+
}
|
|
76
|
+
await Promise.allSettled(promises);
|
|
370
77
|
};
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
return Promise.allSettled(getDrivers().map(function(driver) {
|
|
78
|
+
const commitSingleError = (err, metadata = {}) => {
|
|
79
|
+
return Promise.allSettled(getDrivers().map((driver) => {
|
|
374
80
|
return driver.reportError(err, {
|
|
375
81
|
request: metadata.request,
|
|
376
|
-
others: omit(metadata, 'request')
|
|
82
|
+
others: omit(metadata, 'request'),
|
|
377
83
|
});
|
|
378
84
|
}));
|
|
379
85
|
};
|
|
380
|
-
|
|
381
|
-
return Promise.allSettled(getDrivers().map(
|
|
382
|
-
|
|
383
|
-
|
|
86
|
+
const commitSingleProblem = (problem) => {
|
|
87
|
+
return Promise.allSettled(getDrivers().map((driver) => {
|
|
88
|
+
return driver.reportProblem({
|
|
89
|
+
...problem,
|
|
384
90
|
privateMetadata: {
|
|
385
|
-
request:
|
|
386
|
-
others:
|
|
387
|
-
|
|
388
|
-
|
|
91
|
+
request: problem.privateMetadata?.request,
|
|
92
|
+
others: {
|
|
93
|
+
...problem.metadata,
|
|
94
|
+
...(problem.privateMetadata
|
|
95
|
+
? omit(problem.privateMetadata, 'request')
|
|
96
|
+
: undefined),
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
});
|
|
389
100
|
}));
|
|
390
101
|
};
|
|
391
|
-
export
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
for(var _iterator = getDrivers()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
395
|
-
var driver = _step.value;
|
|
396
|
-
driver.setReporterPayload(payload);
|
|
397
|
-
}
|
|
398
|
-
} catch (err) {
|
|
399
|
-
_didIteratorError = true;
|
|
400
|
-
_iteratorError = err;
|
|
401
|
-
} finally{
|
|
402
|
-
try {
|
|
403
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
404
|
-
_iterator.return();
|
|
405
|
-
}
|
|
406
|
-
} finally{
|
|
407
|
-
if (_didIteratorError) {
|
|
408
|
-
throw _iteratorError;
|
|
409
|
-
}
|
|
410
|
-
}
|
|
102
|
+
export const setReporterPayload = (payload) => {
|
|
103
|
+
for (const driver of getDrivers()) {
|
|
104
|
+
driver.setReporterPayload(payload);
|
|
411
105
|
}
|
|
412
106
|
};
|
|
107
|
+
//# sourceMappingURL=index.js.map
|
package/dist/types.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@driveflux/reporter",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json",
|
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
"dist"
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@driveflux/fetch": "
|
|
25
|
-
"@driveflux/problem": "
|
|
26
|
-
"@driveflux/redact": "
|
|
27
|
-
"@driveflux/singleton": "
|
|
28
|
-
"@driveflux/utils": "
|
|
24
|
+
"@driveflux/fetch": "8.0.0",
|
|
25
|
+
"@driveflux/problem": "6.0.0",
|
|
26
|
+
"@driveflux/redact": "6.0.0",
|
|
27
|
+
"@driveflux/singleton": "3.0.0",
|
|
28
|
+
"@driveflux/utils": "6.0.0",
|
|
29
29
|
"flat": "^6.0.1",
|
|
30
30
|
"rollbar": "^2.26.5",
|
|
31
31
|
"zod": "^4.1.12"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@driveflux/fab": "
|
|
35
|
-
"@driveflux/tsconfig": "
|
|
34
|
+
"@driveflux/fab": "4.0.0",
|
|
35
|
+
"@driveflux/tsconfig": "3.0.0",
|
|
36
36
|
"@types/flat": "^5.0.5",
|
|
37
37
|
"@types/node": "^24.9.1",
|
|
38
38
|
"del-cli": "^7.0.0",
|