equipped 5.3.1 → 5.3.3
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/CHANGELOG.md +9 -0
- package/dist/cjs/cache/adapters/in-memory/index.cjs +155 -155
- package/dist/cjs/cache/adapters/in-memory/index.cjs.map +1 -1
- package/dist/cjs/cache/adapters/in-memory/index.min.cjs +3 -3
- package/dist/cjs/cache/adapters/in-memory/index.min.cjs.map +1 -1
- package/dist/cjs/dbs/adapters/mongodb/index.cjs.map +1 -1
- package/dist/cjs/dbs/adapters/mongodb/index.min.cjs +2 -2
- package/dist/cjs/dbs/adapters/mongodb/index.min.cjs.map +1 -1
- package/dist/cjs/dbs/index.cjs +181 -179
- package/dist/cjs/dbs/index.cjs.map +1 -1
- package/dist/cjs/dbs/index.min.cjs +3 -3
- package/dist/cjs/dbs/index.min.cjs.map +1 -1
- package/dist/cjs/errors/index.cjs +11 -0
- package/dist/cjs/errors/index.cjs.map +1 -1
- package/dist/cjs/errors/index.min.cjs +1 -1
- package/dist/cjs/errors/index.min.cjs.map +1 -1
- package/dist/cjs/events/adapters/kafka/index.cjs.map +1 -1
- package/dist/cjs/events/adapters/kafka/index.min.cjs +2 -2
- package/dist/cjs/events/adapters/kafka/index.min.cjs.map +1 -1
- package/dist/cjs/events/adapters/rabbitmq/index.cjs +179 -179
- package/dist/cjs/events/adapters/rabbitmq/index.cjs.map +1 -1
- package/dist/cjs/events/adapters/rabbitmq/index.min.cjs +3 -3
- package/dist/cjs/events/adapters/rabbitmq/index.min.cjs.map +1 -1
- package/dist/cjs/orm/adapters/mongodb/index.cjs +144 -144
- package/dist/cjs/orm/adapters/mongodb/index.cjs.map +1 -1
- package/dist/cjs/orm/adapters/mongodb/index.min.cjs +1 -1
- package/dist/cjs/orm/adapters/mongodb/index.min.cjs.map +1 -1
- package/dist/cjs/orm/adapters/postgresql/index.cjs +152 -215
- package/dist/cjs/orm/adapters/postgresql/index.cjs.map +1 -1
- package/dist/cjs/orm/adapters/postgresql/index.min.cjs +11 -11
- package/dist/cjs/orm/adapters/postgresql/index.min.cjs.map +1 -1
- package/dist/cjs/server/adapters/express/index.cjs +292 -225
- package/dist/cjs/server/adapters/express/index.cjs.map +1 -1
- package/dist/cjs/server/adapters/express/index.min.cjs +7 -7
- package/dist/cjs/server/adapters/express/index.min.cjs.map +1 -1
- package/dist/cjs/server/adapters/fastify/index.cjs +277 -210
- package/dist/cjs/server/adapters/fastify/index.cjs.map +1 -1
- package/dist/cjs/server/adapters/fastify/index.min.cjs +7 -7
- package/dist/cjs/server/adapters/fastify/index.min.cjs.map +1 -1
- package/dist/cjs/server/index.cjs +82 -15
- package/dist/cjs/server/index.cjs.map +1 -1
- package/dist/cjs/server/index.min.cjs +7 -7
- package/dist/cjs/server/index.min.cjs.map +1 -1
- package/dist/cjs/utilities/index.cjs +0 -5
- package/dist/cjs/utilities/index.cjs.map +1 -1
- package/dist/cjs/utilities/index.min.cjs +2 -2
- package/dist/cjs/utilities/index.min.cjs.map +1 -1
- package/dist/cjs/validations/index.cjs +1 -0
- package/dist/cjs/validations/index.cjs.map +1 -1
- package/dist/cjs/validations/index.min.cjs +1 -1
- package/dist/cjs/validations/index.min.cjs.map +1 -1
- package/dist/esm/cache/adapters/in-memory/index.min.mjs +1 -1
- package/dist/esm/cache/adapters/in-memory/index.min.mjs.map +1 -1
- package/dist/esm/cache/adapters/in-memory/index.mjs +6 -3
- package/dist/esm/cache/adapters/in-memory/index.mjs.map +1 -1
- package/dist/esm/cache/adapters/redis/index.min.mjs +1 -1
- package/dist/esm/cache/adapters/redis/index.mjs +5 -3
- package/dist/esm/cache/index.min.mjs +1 -1
- package/dist/esm/cache/index.mjs +2 -2
- package/dist/esm/{chunk-2GGMLKRP.min.mjs → chunk-4GZ43EQ2.min.mjs} +2 -2
- package/dist/esm/{chunk-IRYCN6PI.min.mjs → chunk-5FEVQT6K.min.mjs} +2 -2
- package/dist/esm/{chunk-LKS5ZE45.mjs → chunk-74GY55PM.mjs} +2 -2
- package/dist/esm/{chunk-A4P7P6BU.mjs → chunk-7N4WUZ7P.mjs} +167 -347
- package/dist/esm/chunk-7N4WUZ7P.mjs.map +1 -0
- package/dist/esm/chunk-A332TTED.mjs +135 -0
- package/dist/esm/chunk-A332TTED.mjs.map +1 -0
- package/dist/esm/{chunk-7CP7ZE2O.mjs → chunk-BONYW6LU.mjs} +9 -5
- package/dist/esm/{chunk-7CP7ZE2O.mjs.map → chunk-BONYW6LU.mjs.map} +1 -1
- package/dist/esm/{chunk-HXFNN6RI.mjs → chunk-C3G4W4ZV.mjs} +3 -3
- package/dist/esm/chunk-CU2HU5UE.min.mjs +2 -0
- package/dist/esm/chunk-CU2HU5UE.min.mjs.map +1 -0
- package/dist/esm/{chunk-676VIABN.min.mjs → chunk-LJZOS62I.min.mjs} +2 -2
- package/dist/esm/{chunk-7SQ5JQYR.min.mjs → chunk-MCX2O5IT.min.mjs} +2 -2
- package/dist/esm/{chunk-BWUFPMVG.mjs → chunk-MNKDFIVK.mjs} +2 -2
- package/dist/esm/chunk-N3OD4QL2.min.mjs +32 -0
- package/dist/esm/chunk-N3OD4QL2.min.mjs.map +1 -0
- package/dist/esm/chunk-NEF3UYFA.mjs +144 -0
- package/dist/esm/chunk-NEF3UYFA.mjs.map +1 -0
- package/dist/esm/{chunk-TSVHZZE4.mjs → chunk-RFJ5URMP.mjs} +5 -5
- package/dist/esm/chunk-RX4XPABH.min.mjs +2 -0
- package/dist/esm/{chunk-MQXTTWPS.min.mjs.map → chunk-RX4XPABH.min.mjs.map} +1 -1
- package/dist/esm/chunk-SPOVKWV3.min.mjs +2 -0
- package/dist/esm/chunk-SPOVKWV3.min.mjs.map +1 -0
- package/dist/esm/{chunk-3TP7NINX.mjs → chunk-XESM7IWM.mjs} +2 -2
- package/dist/esm/{chunk-5PZACGPI.mjs → chunk-XJKBHQWO.mjs} +7 -5
- package/dist/esm/{chunk-5PZACGPI.mjs.map → chunk-XJKBHQWO.mjs.map} +1 -1
- package/dist/esm/chunk-YC6V4HLT.min.mjs +2 -0
- package/dist/esm/{chunk-7NF7PV6S.min.mjs.map → chunk-YC6V4HLT.min.mjs.map} +1 -1
- package/dist/esm/{chunk-P4PRHHIY.min.mjs → chunk-YWQTFKNY.min.mjs} +2 -2
- package/dist/esm/dbs/adapters/mongodb/index.min.mjs +1 -1
- package/dist/esm/dbs/adapters/mongodb/index.min.mjs.map +1 -1
- package/dist/esm/dbs/adapters/mongodb/index.mjs +8 -5
- package/dist/esm/dbs/adapters/mongodb/index.mjs.map +1 -1
- package/dist/esm/dbs/index.min.mjs +1 -1
- package/dist/esm/dbs/index.mjs +5 -3
- package/dist/esm/errors/index.min.mjs +1 -1
- package/dist/esm/errors/index.mjs +3 -1
- package/dist/esm/events/adapters/kafka/index.min.mjs +1 -1
- package/dist/esm/events/adapters/kafka/index.mjs +4 -2
- package/dist/esm/events/adapters/rabbitmq/index.min.mjs +1 -1
- package/dist/esm/events/adapters/rabbitmq/index.min.mjs.map +1 -1
- package/dist/esm/events/adapters/rabbitmq/index.mjs +7 -3
- package/dist/esm/events/adapters/rabbitmq/index.mjs.map +1 -1
- package/dist/esm/index.min.mjs +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/instance/index.min.mjs +1 -1
- package/dist/esm/instance/index.mjs +1 -1
- package/dist/esm/introspection-TO27QT2X.min.mjs +2 -0
- package/dist/esm/{introspection-YJF3QAUK.mjs → introspection-ZUQYVEFC.mjs} +3 -3
- package/dist/esm/jobs/adapters/redis/index.min.mjs +1 -1
- package/dist/esm/jobs/adapters/redis/index.min.mjs.map +1 -1
- package/dist/esm/jobs/adapters/redis/index.mjs +10 -6
- package/dist/esm/jobs/adapters/redis/index.mjs.map +1 -1
- package/dist/esm/orm/adapters/in-memory/index.min.mjs +1 -1
- package/dist/esm/orm/adapters/in-memory/index.mjs +4 -3
- package/dist/esm/orm/adapters/json/index.min.mjs +1 -1
- package/dist/esm/orm/adapters/json/index.min.mjs.map +1 -1
- package/dist/esm/orm/adapters/json/index.mjs +6 -5
- package/dist/esm/orm/adapters/json/index.mjs.map +1 -1
- package/dist/esm/orm/adapters/mongodb/index.min.mjs +1 -1
- package/dist/esm/orm/adapters/mongodb/index.min.mjs.map +1 -1
- package/dist/esm/orm/adapters/mongodb/index.mjs +6 -4
- package/dist/esm/orm/adapters/mongodb/index.mjs.map +1 -1
- package/dist/esm/orm/adapters/postgresql/index.min.mjs +2 -2
- package/dist/esm/orm/adapters/postgresql/index.min.mjs.map +1 -1
- package/dist/esm/orm/adapters/postgresql/index.mjs +8 -5
- package/dist/esm/orm/adapters/postgresql/index.mjs.map +1 -1
- package/dist/esm/orm/index.min.mjs +1 -1
- package/dist/esm/orm/index.mjs +3 -3
- package/dist/esm/server/adapters/express/index.min.mjs +1 -1
- package/dist/esm/server/adapters/express/index.min.mjs.map +1 -1
- package/dist/esm/server/adapters/express/index.mjs +7 -3
- package/dist/esm/server/adapters/express/index.mjs.map +1 -1
- package/dist/esm/server/adapters/fastify/index.min.mjs +1 -1
- package/dist/esm/server/adapters/fastify/index.min.mjs.map +1 -1
- package/dist/esm/server/adapters/fastify/index.mjs +7 -3
- package/dist/esm/server/adapters/fastify/index.mjs.map +1 -1
- package/dist/esm/server/index.min.mjs +1 -1
- package/dist/esm/server/index.mjs +1 -1
- package/dist/esm/utilities/index.min.mjs +1 -1
- package/dist/esm/utilities/index.mjs +5 -4
- package/dist/esm/validations/index.min.mjs +1 -1
- package/dist/esm/validations/index.mjs +1 -1
- package/dist/types/{base-BDTBLZ9a.d.ts → base-BnwwLupM.d.ts} +3 -3
- package/dist/types/cache/adapters/in-memory/index.js +6 -3
- package/dist/types/cache/adapters/redis/index.js +5 -3
- package/dist/types/cache/index.js +2 -2
- package/dist/types/chunk-7MXHWHRV.js +134 -0
- package/dist/types/{chunk-LPB5LS7A.js → chunk-BKXNLF6X.js} +1 -1
- package/dist/types/{chunk-J3TGB5YQ.js → chunk-DZFKDZDZ.js} +8 -4
- package/dist/types/{chunk-YLJNBL6J.js → chunk-GQRSK2KP.js} +6 -4
- package/dist/types/chunk-PPD4WDG6.js +143 -0
- package/dist/types/{chunk-55CTVK7R.js → chunk-SZAA5GF6.js} +1 -1
- package/dist/types/{chunk-4DH3POYM.js → chunk-UGLZIYAR.js} +4 -4
- package/dist/types/{chunk-5Z26ZURE.js → chunk-UR7O43FC.js} +1 -1
- package/dist/types/{chunk-IZDJDGOV.js → chunk-X5ZDIXCZ.js} +2 -2
- package/dist/types/{chunk-TT5EORDK.js → chunk-YGIIUOQM.js} +166 -346
- package/dist/types/dbs/adapters/mongodb/index.js +8 -5
- package/dist/types/dbs/index.js +5 -3
- package/dist/types/errors/index.d.ts +8 -3
- package/dist/types/errors/index.js +3 -1
- package/dist/types/events/adapters/kafka/index.js +4 -2
- package/dist/types/events/adapters/rabbitmq/index.js +7 -3
- package/dist/types/index.js +1 -1
- package/dist/types/instance/index.js +1 -1
- package/dist/types/{introspection-EHGM4RMO.js → introspection-ZQMYTW6H.js} +2 -2
- package/dist/types/jobs/adapters/redis/index.js +10 -6
- package/dist/types/orm/adapters/in-memory/index.js +4 -3
- package/dist/types/orm/adapters/json/index.js +6 -5
- package/dist/types/orm/adapters/mongodb/index.js +6 -4
- package/dist/types/orm/adapters/postgresql/index.js +8 -5
- package/dist/types/orm/index.js +3 -3
- package/dist/types/{requestError-DdaL8hc3.d.ts → requestError-BmOhSuFb.d.ts} +1 -0
- package/dist/types/server/adapters/express/index.d.ts +2 -2
- package/dist/types/server/adapters/express/index.js +7 -3
- package/dist/types/server/adapters/fastify/index.d.ts +3 -3
- package/dist/types/server/adapters/fastify/index.js +7 -3
- package/dist/types/server/index.d.ts +4 -4
- package/dist/types/server/index.js +1 -1
- package/dist/types/utilities/index.d.ts +1 -2
- package/dist/types/utilities/index.js +5 -4
- package/dist/types/{validationError-oigtHqBi.d.ts → validationError-C2tVK4s7.d.ts} +1 -1
- package/dist/types/validations/index.d.ts +4 -4
- package/dist/types/validations/index.js +1 -1
- package/package.json +1 -1
- package/dist/esm/chunk-7NF7PV6S.min.mjs +0 -2
- package/dist/esm/chunk-A4P7P6BU.mjs.map +0 -1
- package/dist/esm/chunk-IN5YKIJ7.min.mjs +0 -32
- package/dist/esm/chunk-IN5YKIJ7.min.mjs.map +0 -1
- package/dist/esm/chunk-MQXTTWPS.min.mjs +0 -2
- package/dist/esm/introspection-THKMXV5V.min.mjs +0 -2
- /package/dist/esm/{chunk-2GGMLKRP.min.mjs.map → chunk-4GZ43EQ2.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-IRYCN6PI.min.mjs.map → chunk-5FEVQT6K.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-LKS5ZE45.mjs.map → chunk-74GY55PM.mjs.map} +0 -0
- /package/dist/esm/{chunk-HXFNN6RI.mjs.map → chunk-C3G4W4ZV.mjs.map} +0 -0
- /package/dist/esm/{chunk-676VIABN.min.mjs.map → chunk-LJZOS62I.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-7SQ5JQYR.min.mjs.map → chunk-MCX2O5IT.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-BWUFPMVG.mjs.map → chunk-MNKDFIVK.mjs.map} +0 -0
- /package/dist/esm/{chunk-TSVHZZE4.mjs.map → chunk-RFJ5URMP.mjs.map} +0 -0
- /package/dist/esm/{chunk-3TP7NINX.mjs.map → chunk-XESM7IWM.mjs.map} +0 -0
- /package/dist/esm/{chunk-P4PRHHIY.min.mjs.map → chunk-YWQTFKNY.min.mjs.map} +0 -0
- /package/dist/esm/{introspection-THKMXV5V.min.mjs.map → introspection-TO27QT2X.min.mjs.map} +0 -0
- /package/dist/esm/{introspection-YJF3QAUK.mjs.map → introspection-ZUQYVEFC.mjs.map} +0 -0
package/dist/cjs/dbs/index.cjs
CHANGED
|
@@ -43,7 +43,7 @@ module.exports = __toCommonJS(dbs_exports);
|
|
|
43
43
|
// src/instance/index.ts
|
|
44
44
|
var import_pino = __toESM(require("pino"), 1);
|
|
45
45
|
var import_ulid = require("ulid");
|
|
46
|
-
var
|
|
46
|
+
var import_valleyed2 = require("valleyed");
|
|
47
47
|
|
|
48
48
|
// src/errors/equippedError.ts
|
|
49
49
|
var EquippedError = class extends Error {
|
|
@@ -59,170 +59,6 @@ var EquippedError = class extends Error {
|
|
|
59
59
|
var EventBus = class {
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
// src/utilities/configurable.ts
|
|
63
|
-
var import_valleyed = require("valleyed");
|
|
64
|
-
function configurable(pipeFn, base) {
|
|
65
|
-
const pipe = pipeFn();
|
|
66
|
-
import_valleyed.v.compile(pipe);
|
|
67
|
-
class Configurable extends base {
|
|
68
|
-
constructor(config, ...baseArgs) {
|
|
69
|
-
super(...baseArgs);
|
|
70
|
-
this.config = config;
|
|
71
|
-
}
|
|
72
|
-
static create(input, ...args) {
|
|
73
|
-
const r = import_valleyed.v.validate(pipe, input);
|
|
74
|
-
if (!r.valid) throw r.error;
|
|
75
|
-
return new this(r.value, ...args);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return Configurable;
|
|
79
|
-
}
|
|
80
|
-
if (void 0) {
|
|
81
|
-
const { describe, test, expect, expectTypeOf } = void 0;
|
|
82
|
-
const { v: v7 } = null;
|
|
83
|
-
const testPipe = () => v7.object({
|
|
84
|
-
host: v7.string(),
|
|
85
|
-
port: v7.number()
|
|
86
|
-
});
|
|
87
|
-
class TestBase {
|
|
88
|
-
baseValue;
|
|
89
|
-
constructor() {
|
|
90
|
-
this.baseValue = "base";
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
class TestBaseWithArgs {
|
|
94
|
-
label;
|
|
95
|
-
constructor(label) {
|
|
96
|
-
this.label = label;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
describe("configurable", () => {
|
|
100
|
-
test("validation runs in static create before constructor body executes", () => {
|
|
101
|
-
let constructorRan = false;
|
|
102
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
103
|
-
class MyClass extends Wrapped {
|
|
104
|
-
constructor(config) {
|
|
105
|
-
super(config);
|
|
106
|
-
constructorRan = true;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
expect(() => MyClass.create({ host: 123, port: "bad" })).toThrow();
|
|
110
|
-
expect(constructorRan).toBe(false);
|
|
111
|
-
MyClass.create({ host: "localhost", port: 3e3 });
|
|
112
|
-
expect(constructorRan).toBe(true);
|
|
113
|
-
});
|
|
114
|
-
test("constructor receives validated value", () => {
|
|
115
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
116
|
-
let receivedConfig;
|
|
117
|
-
class MyClass extends Wrapped {
|
|
118
|
-
constructor(config) {
|
|
119
|
-
super(config);
|
|
120
|
-
receivedConfig = this.config;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
MyClass.create({ host: "localhost", port: 3e3 });
|
|
124
|
-
expect(receivedConfig).toEqual({ host: "localhost", port: 3e3 });
|
|
125
|
-
});
|
|
126
|
-
test("external new is a compile error", () => {
|
|
127
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
128
|
-
class MyClass extends Wrapped {
|
|
129
|
-
constructor(config) {
|
|
130
|
-
super(config);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
void (() => new MyClass({ host: "localhost", port: 3e3 }));
|
|
134
|
-
});
|
|
135
|
-
test("static Config resolves to PipeOutput<P> at the type level", () => {
|
|
136
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
137
|
-
class MyClass extends Wrapped {
|
|
138
|
-
constructor(config) {
|
|
139
|
-
super(config);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
expectTypeOf().toEqualTypeOf();
|
|
143
|
-
expect(MyClass.create).toBeTypeOf("function");
|
|
144
|
-
});
|
|
145
|
-
test("ConstructorParameters<This>-based extras inference works for non-zero-arg leaf signatures", () => {
|
|
146
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
147
|
-
class MyClass extends Wrapped {
|
|
148
|
-
extra;
|
|
149
|
-
constructor(config, extra) {
|
|
150
|
-
super(config);
|
|
151
|
-
this.extra = extra;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
const instance = MyClass.create({ host: "localhost", port: 3e3 }, 42);
|
|
155
|
-
expect(instance.extra).toBe(42);
|
|
156
|
-
expectTypeOf(instance).toHaveProperty("extra");
|
|
157
|
-
expectTypeOf(instance.extra).toEqualTypeOf();
|
|
158
|
-
void (() => MyClass.create({ host: "localhost", port: 3e3 }, "not-a-number"));
|
|
159
|
-
});
|
|
160
|
-
test("base-args forwarding works for non-zero-arg bases", () => {
|
|
161
|
-
const Wrapped = configurable(testPipe, TestBaseWithArgs);
|
|
162
|
-
class MyClass extends Wrapped {
|
|
163
|
-
constructor(config, label) {
|
|
164
|
-
super(config, label);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
const instance = MyClass.create({ host: "localhost", port: 3e3 }, "test-label");
|
|
168
|
-
expect(instance.label).toBe("test-label");
|
|
169
|
-
});
|
|
170
|
-
test("config is accessible as protected readonly on instances", () => {
|
|
171
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
172
|
-
class MyClass extends Wrapped {
|
|
173
|
-
constructor(config) {
|
|
174
|
-
super(config);
|
|
175
|
-
}
|
|
176
|
-
getHost() {
|
|
177
|
-
return this.config.host;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
const instance = MyClass.create({ host: "localhost", port: 3e3 });
|
|
181
|
-
expect(instance.getHost()).toBe("localhost");
|
|
182
|
-
});
|
|
183
|
-
test("accepts an abstract base class", () => {
|
|
184
|
-
class AbstractBase {
|
|
185
|
-
}
|
|
186
|
-
const Wrapped = configurable(testPipe, AbstractBase);
|
|
187
|
-
class Concrete extends Wrapped {
|
|
188
|
-
constructor(config) {
|
|
189
|
-
super(config);
|
|
190
|
-
}
|
|
191
|
-
greet() {
|
|
192
|
-
return `hello from ${this.config.host}`;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
const instance = Concrete.create({ host: "localhost", port: 3e3 });
|
|
196
|
-
expect(instance.greet()).toBe("hello from localhost");
|
|
197
|
-
expectTypeOf(instance).toHaveProperty("config");
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// src/utilities/json.ts
|
|
203
|
-
var parseJSONValue = (data) => {
|
|
204
|
-
try {
|
|
205
|
-
if (data?.constructor?.name !== "String") return data;
|
|
206
|
-
return JSON.parse(data);
|
|
207
|
-
} catch {
|
|
208
|
-
return data;
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
// src/utilities/random.ts
|
|
213
|
-
var random_exports = {};
|
|
214
|
-
__export(random_exports, {
|
|
215
|
-
number: () => number,
|
|
216
|
-
string: () => string
|
|
217
|
-
});
|
|
218
|
-
var import_crypto = __toESM(require("crypto"), 1);
|
|
219
|
-
function string(length = 20) {
|
|
220
|
-
return import_crypto.default.randomBytes(length).toString("hex").slice(0, length);
|
|
221
|
-
}
|
|
222
|
-
function number(min = 0, max = 2 ** 48 - 1) {
|
|
223
|
-
return import_crypto.default.randomInt(min, max);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
62
|
// src/instance/hooks.ts
|
|
227
63
|
function registerHook(hooks, record) {
|
|
228
64
|
for (const dep of record.after) {
|
|
@@ -625,22 +461,22 @@ if (void 0) {
|
|
|
625
461
|
}
|
|
626
462
|
|
|
627
463
|
// src/instance/settings.ts
|
|
628
|
-
var
|
|
629
|
-
var instanceSettingsPipe = () =>
|
|
630
|
-
app:
|
|
631
|
-
name:
|
|
464
|
+
var import_valleyed = require("valleyed");
|
|
465
|
+
var instanceSettingsPipe = () => import_valleyed.v.object({
|
|
466
|
+
app: import_valleyed.v.object({
|
|
467
|
+
name: import_valleyed.v.string()
|
|
632
468
|
}),
|
|
633
|
-
log:
|
|
634
|
-
|
|
635
|
-
level:
|
|
469
|
+
log: import_valleyed.v.defaults(
|
|
470
|
+
import_valleyed.v.object({
|
|
471
|
+
level: import_valleyed.v.defaults(import_valleyed.v.in(["fatal", "error", "warn", "info", "debug", "trace", "silent"]), "info")
|
|
636
472
|
}),
|
|
637
473
|
{}
|
|
638
474
|
),
|
|
639
|
-
utils:
|
|
640
|
-
|
|
641
|
-
hashSaltRounds:
|
|
642
|
-
paginationDefaultLimit:
|
|
643
|
-
maxFileUploadSizeInMb:
|
|
475
|
+
utils: import_valleyed.v.defaults(
|
|
476
|
+
import_valleyed.v.object({
|
|
477
|
+
hashSaltRounds: import_valleyed.v.defaults(import_valleyed.v.number(), 10),
|
|
478
|
+
paginationDefaultLimit: import_valleyed.v.defaults(import_valleyed.v.number(), 100),
|
|
479
|
+
maxFileUploadSizeInMb: import_valleyed.v.defaults(import_valleyed.v.number(), 500)
|
|
644
480
|
}),
|
|
645
481
|
{}
|
|
646
482
|
)
|
|
@@ -690,7 +526,7 @@ var Instance = class _Instance {
|
|
|
690
526
|
}
|
|
691
527
|
}
|
|
692
528
|
static envs(envsPipe) {
|
|
693
|
-
const envValidity =
|
|
529
|
+
const envValidity = import_valleyed2.v.validate(envsPipe, process.env);
|
|
694
530
|
if (!envValidity.valid) {
|
|
695
531
|
_Instance.crash(
|
|
696
532
|
new EquippedError(`Environment variables are not valid
|
|
@@ -703,7 +539,7 @@ ${envValidity.error.toString()}`, {
|
|
|
703
539
|
}
|
|
704
540
|
static create(settings) {
|
|
705
541
|
if (_Instance.#instance) return _Instance.crash(new EquippedError("Instance has been initialized already", {}));
|
|
706
|
-
const settingsValidity =
|
|
542
|
+
const settingsValidity = import_valleyed2.v.validate(instanceSettingsPipe(), settings);
|
|
707
543
|
if (!settingsValidity.valid) {
|
|
708
544
|
_Instance.crash(
|
|
709
545
|
new EquippedError(`Settings are not valid
|
|
@@ -773,6 +609,172 @@ var import_valleyed5 = require("valleyed");
|
|
|
773
609
|
// src/events/adapters/kafka/index.ts
|
|
774
610
|
var import_kafka_javascript = require("@confluentinc/kafka-javascript");
|
|
775
611
|
var import_valleyed4 = require("valleyed");
|
|
612
|
+
|
|
613
|
+
// src/utilities/configurable.ts
|
|
614
|
+
var import_valleyed3 = require("valleyed");
|
|
615
|
+
function configurable(pipeFn, base) {
|
|
616
|
+
const pipe = pipeFn();
|
|
617
|
+
import_valleyed3.v.compile(pipe);
|
|
618
|
+
class Configurable extends base {
|
|
619
|
+
constructor(config, ...baseArgs) {
|
|
620
|
+
super(...baseArgs);
|
|
621
|
+
this.config = config;
|
|
622
|
+
}
|
|
623
|
+
static create(input, ...args) {
|
|
624
|
+
const r = import_valleyed3.v.validate(pipe, input);
|
|
625
|
+
if (!r.valid) throw r.error;
|
|
626
|
+
return new this(r.value, ...args);
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
return Configurable;
|
|
630
|
+
}
|
|
631
|
+
if (void 0) {
|
|
632
|
+
const { describe, test, expect, expectTypeOf } = void 0;
|
|
633
|
+
const { v: v7 } = null;
|
|
634
|
+
const testPipe = () => v7.object({
|
|
635
|
+
host: v7.string(),
|
|
636
|
+
port: v7.number()
|
|
637
|
+
});
|
|
638
|
+
class TestBase {
|
|
639
|
+
baseValue;
|
|
640
|
+
constructor() {
|
|
641
|
+
this.baseValue = "base";
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
class TestBaseWithArgs {
|
|
645
|
+
label;
|
|
646
|
+
constructor(label) {
|
|
647
|
+
this.label = label;
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
describe("configurable", () => {
|
|
651
|
+
test("validation runs in static create before constructor body executes", () => {
|
|
652
|
+
let constructorRan = false;
|
|
653
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
654
|
+
class MyClass extends Wrapped {
|
|
655
|
+
constructor(config) {
|
|
656
|
+
super(config);
|
|
657
|
+
constructorRan = true;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
expect(() => MyClass.create({ host: 123, port: "bad" })).toThrow();
|
|
661
|
+
expect(constructorRan).toBe(false);
|
|
662
|
+
MyClass.create({ host: "localhost", port: 3e3 });
|
|
663
|
+
expect(constructorRan).toBe(true);
|
|
664
|
+
});
|
|
665
|
+
test("constructor receives validated value", () => {
|
|
666
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
667
|
+
let receivedConfig;
|
|
668
|
+
class MyClass extends Wrapped {
|
|
669
|
+
constructor(config) {
|
|
670
|
+
super(config);
|
|
671
|
+
receivedConfig = this.config;
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
MyClass.create({ host: "localhost", port: 3e3 });
|
|
675
|
+
expect(receivedConfig).toEqual({ host: "localhost", port: 3e3 });
|
|
676
|
+
});
|
|
677
|
+
test("external new is a compile error", () => {
|
|
678
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
679
|
+
class MyClass extends Wrapped {
|
|
680
|
+
constructor(config) {
|
|
681
|
+
super(config);
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
void (() => new MyClass({ host: "localhost", port: 3e3 }));
|
|
685
|
+
});
|
|
686
|
+
test("static Config resolves to PipeOutput<P> at the type level", () => {
|
|
687
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
688
|
+
class MyClass extends Wrapped {
|
|
689
|
+
constructor(config) {
|
|
690
|
+
super(config);
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
expectTypeOf().toEqualTypeOf();
|
|
694
|
+
expect(MyClass.create).toBeTypeOf("function");
|
|
695
|
+
});
|
|
696
|
+
test("ConstructorParameters<This>-based extras inference works for non-zero-arg leaf signatures", () => {
|
|
697
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
698
|
+
class MyClass extends Wrapped {
|
|
699
|
+
extra;
|
|
700
|
+
constructor(config, extra) {
|
|
701
|
+
super(config);
|
|
702
|
+
this.extra = extra;
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
const instance = MyClass.create({ host: "localhost", port: 3e3 }, 42);
|
|
706
|
+
expect(instance.extra).toBe(42);
|
|
707
|
+
expectTypeOf(instance).toHaveProperty("extra");
|
|
708
|
+
expectTypeOf(instance.extra).toEqualTypeOf();
|
|
709
|
+
void (() => MyClass.create({ host: "localhost", port: 3e3 }, "not-a-number"));
|
|
710
|
+
});
|
|
711
|
+
test("base-args forwarding works for non-zero-arg bases", () => {
|
|
712
|
+
const Wrapped = configurable(testPipe, TestBaseWithArgs);
|
|
713
|
+
class MyClass extends Wrapped {
|
|
714
|
+
constructor(config, label) {
|
|
715
|
+
super(config, label);
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
const instance = MyClass.create({ host: "localhost", port: 3e3 }, "test-label");
|
|
719
|
+
expect(instance.label).toBe("test-label");
|
|
720
|
+
});
|
|
721
|
+
test("config is accessible as protected readonly on instances", () => {
|
|
722
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
723
|
+
class MyClass extends Wrapped {
|
|
724
|
+
constructor(config) {
|
|
725
|
+
super(config);
|
|
726
|
+
}
|
|
727
|
+
getHost() {
|
|
728
|
+
return this.config.host;
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
const instance = MyClass.create({ host: "localhost", port: 3e3 });
|
|
732
|
+
expect(instance.getHost()).toBe("localhost");
|
|
733
|
+
});
|
|
734
|
+
test("accepts an abstract base class", () => {
|
|
735
|
+
class AbstractBase {
|
|
736
|
+
}
|
|
737
|
+
const Wrapped = configurable(testPipe, AbstractBase);
|
|
738
|
+
class Concrete extends Wrapped {
|
|
739
|
+
constructor(config) {
|
|
740
|
+
super(config);
|
|
741
|
+
}
|
|
742
|
+
greet() {
|
|
743
|
+
return `hello from ${this.config.host}`;
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
const instance = Concrete.create({ host: "localhost", port: 3e3 });
|
|
747
|
+
expect(instance.greet()).toBe("hello from localhost");
|
|
748
|
+
expectTypeOf(instance).toHaveProperty("config");
|
|
749
|
+
});
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
// src/utilities/json.ts
|
|
754
|
+
var parseJSONValue = (data) => {
|
|
755
|
+
try {
|
|
756
|
+
if (data?.constructor?.name !== "String") return data;
|
|
757
|
+
return JSON.parse(data);
|
|
758
|
+
} catch {
|
|
759
|
+
return data;
|
|
760
|
+
}
|
|
761
|
+
};
|
|
762
|
+
|
|
763
|
+
// src/utilities/random.ts
|
|
764
|
+
var random_exports = {};
|
|
765
|
+
__export(random_exports, {
|
|
766
|
+
number: () => number,
|
|
767
|
+
string: () => string
|
|
768
|
+
});
|
|
769
|
+
var import_crypto = __toESM(require("crypto"), 1);
|
|
770
|
+
function string(length = 20) {
|
|
771
|
+
return import_crypto.default.randomBytes(length).toString("hex").slice(0, length);
|
|
772
|
+
}
|
|
773
|
+
function number(min = 0, max = 2 ** 48 - 1) {
|
|
774
|
+
return import_crypto.default.randomInt(min, max);
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
// src/events/adapters/kafka/index.ts
|
|
776
778
|
var kafkaConfigPipe = () => import_valleyed4.v.meta(
|
|
777
779
|
import_valleyed4.v.object({
|
|
778
780
|
brokers: import_valleyed4.v.array(import_valleyed4.v.string()),
|