equipped 5.3.0 → 5.3.2
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/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 +144 -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 +338 -226
- 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 +323 -211
- 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 +128 -16
- package/dist/cjs/server/index.cjs.map +1 -1
- package/dist/cjs/server/index.min.cjs +6 -6
- 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/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-PNZNNUMN.mjs → chunk-26BOI6IL.mjs} +7 -5
- package/dist/esm/{chunk-PNZNNUMN.mjs.map → chunk-26BOI6IL.mjs.map} +1 -1
- package/dist/esm/{chunk-4JLDXF7T.min.mjs → chunk-AODOD22O.min.mjs} +2 -2
- package/dist/esm/chunk-APSDCRY5.min.mjs +32 -0
- package/dist/esm/chunk-APSDCRY5.min.mjs.map +1 -0
- package/dist/esm/{chunk-MDQKODYQ.mjs → chunk-CEYT5YBA.mjs} +204 -348
- package/dist/esm/chunk-CEYT5YBA.mjs.map +1 -0
- package/dist/esm/chunk-CU2HU5UE.min.mjs +2 -0
- package/dist/esm/chunk-CU2HU5UE.min.mjs.map +1 -0
- package/dist/esm/chunk-DAK7OKSH.min.mjs +2 -0
- package/dist/esm/{chunk-SGZNOYC3.min.mjs.map → chunk-DAK7OKSH.min.mjs.map} +1 -1
- package/dist/esm/{chunk-PCAUXBAG.min.mjs → chunk-DAUQA32Q.min.mjs} +2 -2
- package/dist/esm/{chunk-JH6EBXY4.mjs → chunk-FQYRVHQT.mjs} +2 -2
- package/dist/esm/chunk-NEF3UYFA.mjs +144 -0
- package/dist/esm/chunk-NEF3UYFA.mjs.map +1 -0
- package/dist/esm/chunk-NNFUYHQ7.mjs +135 -0
- package/dist/esm/chunk-NNFUYHQ7.mjs.map +1 -0
- package/dist/esm/{chunk-4MXYZS5R.mjs → chunk-PCEHFZ6G.mjs} +9 -5
- package/dist/esm/{chunk-4MXYZS5R.mjs.map → chunk-PCEHFZ6G.mjs.map} +1 -1
- package/dist/esm/{chunk-B5QQ32YY.min.mjs → chunk-QCCDJLBH.min.mjs} +2 -2
- package/dist/esm/{chunk-PQCBVQL6.mjs → chunk-RIXTQQUU.mjs} +2 -2
- package/dist/esm/{chunk-Z2TZ3KR7.mjs → chunk-RPPYCWXW.mjs} +2 -2
- package/dist/esm/{chunk-AKQBDYUO.mjs → chunk-T2O72JBW.mjs} +3 -3
- package/dist/esm/{chunk-TVTYDU2D.mjs → chunk-VQO4MSEC.mjs} +5 -5
- package/dist/esm/{chunk-ZGMFFK6Y.min.mjs → chunk-X7VNAGLR.min.mjs} +2 -2
- package/dist/esm/chunk-XTXAEBXY.min.mjs +2 -0
- package/dist/esm/{chunk-5VW3JAFR.min.mjs.map → chunk-XTXAEBXY.min.mjs.map} +1 -1
- package/dist/esm/{chunk-QHLKB47N.min.mjs → chunk-YDQW6ETS.min.mjs} +2 -2
- package/dist/esm/chunk-ZDBDR3IB.min.mjs +2 -0
- package/dist/esm/chunk-ZDBDR3IB.min.mjs.map +1 -0
- 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 +1 -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-32BRYKYY.mjs → introspection-FGDVYTPP.mjs} +3 -3
- package/dist/esm/introspection-UDWDS6DV.min.mjs +2 -0
- 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-DVr0fHil.d.ts → base-qDndMBf8.d.ts} +9 -3
- package/dist/types/cache/adapters/in-memory/index.js +7 -4
- package/dist/types/cache/adapters/redis/index.js +5 -3
- package/dist/types/cache/index.js +2 -2
- package/dist/types/{chunk-NJ2FHI3U.js → chunk-35CDCTLR.js} +4 -4
- package/dist/types/{chunk-XGGGAEET.js → chunk-4YQA5GPT.js} +8 -4
- package/dist/types/{chunk-65EHKCDZ.js → chunk-AQIV47BY.js} +6 -4
- package/dist/types/{chunk-YTY3EFNB.js → chunk-BKDWUJRG.js} +203 -347
- package/dist/types/{chunk-JQ2FWX4W.js → chunk-DA2VYP7D.js} +1 -1
- package/dist/types/{chunk-3TKJGSCZ.js → chunk-GDMGPX4C.js} +1 -1
- package/dist/types/chunk-H5V6ADFD.js +134 -0
- package/dist/types/{chunk-3M4PBZAQ.js → chunk-OOKJEMQI.js} +2 -2
- package/dist/types/chunk-PPD4WDG6.js +143 -0
- package/dist/types/{chunk-OHFTQGQG.js → chunk-T7K7PO6G.js} +1 -1
- package/dist/types/dbs/adapters/mongodb/index.js +8 -5
- package/dist/types/dbs/index.js +5 -3
- package/dist/types/errors/index.js +1 -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-VOIU3XE6.js → introspection-FSNS33CQ.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/server/adapters/express/index.d.ts +1 -1
- package/dist/types/server/adapters/express/index.js +7 -3
- package/dist/types/server/adapters/fastify/index.d.ts +1 -1
- package/dist/types/server/adapters/fastify/index.js +7 -3
- package/dist/types/server/index.d.ts +2 -2
- 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/validations/index.js +1 -1
- package/package.json +1 -1
- package/dist/esm/chunk-5VW3JAFR.min.mjs +0 -2
- package/dist/esm/chunk-FLAPYQUT.min.mjs +0 -32
- package/dist/esm/chunk-FLAPYQUT.min.mjs.map +0 -1
- package/dist/esm/chunk-MDQKODYQ.mjs.map +0 -1
- package/dist/esm/chunk-SGZNOYC3.min.mjs +0 -2
- package/dist/esm/introspection-A72WMWE3.min.mjs +0 -2
- /package/dist/esm/{chunk-4JLDXF7T.min.mjs.map → chunk-AODOD22O.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-PCAUXBAG.min.mjs.map → chunk-DAUQA32Q.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-JH6EBXY4.mjs.map → chunk-FQYRVHQT.mjs.map} +0 -0
- /package/dist/esm/{chunk-B5QQ32YY.min.mjs.map → chunk-QCCDJLBH.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-PQCBVQL6.mjs.map → chunk-RIXTQQUU.mjs.map} +0 -0
- /package/dist/esm/{chunk-Z2TZ3KR7.mjs.map → chunk-RPPYCWXW.mjs.map} +0 -0
- /package/dist/esm/{chunk-AKQBDYUO.mjs.map → chunk-T2O72JBW.mjs.map} +0 -0
- /package/dist/esm/{chunk-TVTYDU2D.mjs.map → chunk-VQO4MSEC.mjs.map} +0 -0
- /package/dist/esm/{chunk-ZGMFFK6Y.min.mjs.map → chunk-X7VNAGLR.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-QHLKB47N.min.mjs.map → chunk-YDQW6ETS.min.mjs.map} +0 -0
- /package/dist/esm/{introspection-32BRYKYY.mjs.map → introspection-FGDVYTPP.mjs.map} +0 -0
- /package/dist/esm/{introspection-A72WMWE3.min.mjs.map → introspection-UDWDS6DV.min.mjs.map} +0 -0
|
@@ -586,148 +586,8 @@ ${settingsValidity.error.toString()}`, {
|
|
|
586
586
|
}
|
|
587
587
|
};
|
|
588
588
|
|
|
589
|
-
// src/utilities/configurable.ts
|
|
590
|
-
var import_valleyed3 = require("valleyed");
|
|
591
|
-
function configurable(pipeFn, base) {
|
|
592
|
-
const pipe = pipeFn();
|
|
593
|
-
import_valleyed3.v.compile(pipe);
|
|
594
|
-
class Configurable extends base {
|
|
595
|
-
constructor(config, ...baseArgs) {
|
|
596
|
-
super(...baseArgs);
|
|
597
|
-
this.config = config;
|
|
598
|
-
}
|
|
599
|
-
static create(input, ...args) {
|
|
600
|
-
const r = import_valleyed3.v.validate(pipe, input);
|
|
601
|
-
if (!r.valid) throw r.error;
|
|
602
|
-
return new this(r.value, ...args);
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
return Configurable;
|
|
606
|
-
}
|
|
607
|
-
if (void 0) {
|
|
608
|
-
const { describe, test, expect, expectTypeOf } = void 0;
|
|
609
|
-
const { v: v6 } = null;
|
|
610
|
-
const testPipe = () => v6.object({
|
|
611
|
-
host: v6.string(),
|
|
612
|
-
port: v6.number()
|
|
613
|
-
});
|
|
614
|
-
class TestBase {
|
|
615
|
-
baseValue;
|
|
616
|
-
constructor() {
|
|
617
|
-
this.baseValue = "base";
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
class TestBaseWithArgs {
|
|
621
|
-
label;
|
|
622
|
-
constructor(label) {
|
|
623
|
-
this.label = label;
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
describe("configurable", () => {
|
|
627
|
-
test("validation runs in static create before constructor body executes", () => {
|
|
628
|
-
let constructorRan = false;
|
|
629
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
630
|
-
class MyClass extends Wrapped {
|
|
631
|
-
constructor(config) {
|
|
632
|
-
super(config);
|
|
633
|
-
constructorRan = true;
|
|
634
|
-
}
|
|
635
|
-
}
|
|
636
|
-
expect(() => MyClass.create({ host: 123, port: "bad" })).toThrow();
|
|
637
|
-
expect(constructorRan).toBe(false);
|
|
638
|
-
MyClass.create({ host: "localhost", port: 3e3 });
|
|
639
|
-
expect(constructorRan).toBe(true);
|
|
640
|
-
});
|
|
641
|
-
test("constructor receives validated value", () => {
|
|
642
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
643
|
-
let receivedConfig;
|
|
644
|
-
class MyClass extends Wrapped {
|
|
645
|
-
constructor(config) {
|
|
646
|
-
super(config);
|
|
647
|
-
receivedConfig = this.config;
|
|
648
|
-
}
|
|
649
|
-
}
|
|
650
|
-
MyClass.create({ host: "localhost", port: 3e3 });
|
|
651
|
-
expect(receivedConfig).toEqual({ host: "localhost", port: 3e3 });
|
|
652
|
-
});
|
|
653
|
-
test("external new is a compile error", () => {
|
|
654
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
655
|
-
class MyClass extends Wrapped {
|
|
656
|
-
constructor(config) {
|
|
657
|
-
super(config);
|
|
658
|
-
}
|
|
659
|
-
}
|
|
660
|
-
void (() => new MyClass({ host: "localhost", port: 3e3 }));
|
|
661
|
-
});
|
|
662
|
-
test("static Config resolves to PipeOutput<P> at the type level", () => {
|
|
663
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
664
|
-
class MyClass extends Wrapped {
|
|
665
|
-
constructor(config) {
|
|
666
|
-
super(config);
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
expectTypeOf().toEqualTypeOf();
|
|
670
|
-
expect(MyClass.create).toBeTypeOf("function");
|
|
671
|
-
});
|
|
672
|
-
test("ConstructorParameters<This>-based extras inference works for non-zero-arg leaf signatures", () => {
|
|
673
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
674
|
-
class MyClass extends Wrapped {
|
|
675
|
-
extra;
|
|
676
|
-
constructor(config, extra) {
|
|
677
|
-
super(config);
|
|
678
|
-
this.extra = extra;
|
|
679
|
-
}
|
|
680
|
-
}
|
|
681
|
-
const instance = MyClass.create({ host: "localhost", port: 3e3 }, 42);
|
|
682
|
-
expect(instance.extra).toBe(42);
|
|
683
|
-
expectTypeOf(instance).toHaveProperty("extra");
|
|
684
|
-
expectTypeOf(instance.extra).toEqualTypeOf();
|
|
685
|
-
void (() => MyClass.create({ host: "localhost", port: 3e3 }, "not-a-number"));
|
|
686
|
-
});
|
|
687
|
-
test("base-args forwarding works for non-zero-arg bases", () => {
|
|
688
|
-
const Wrapped = configurable(testPipe, TestBaseWithArgs);
|
|
689
|
-
class MyClass extends Wrapped {
|
|
690
|
-
constructor(config, label) {
|
|
691
|
-
super(config, label);
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
const instance = MyClass.create({ host: "localhost", port: 3e3 }, "test-label");
|
|
695
|
-
expect(instance.label).toBe("test-label");
|
|
696
|
-
});
|
|
697
|
-
test("config is accessible as protected readonly on instances", () => {
|
|
698
|
-
const Wrapped = configurable(testPipe, TestBase);
|
|
699
|
-
class MyClass extends Wrapped {
|
|
700
|
-
constructor(config) {
|
|
701
|
-
super(config);
|
|
702
|
-
}
|
|
703
|
-
getHost() {
|
|
704
|
-
return this.config.host;
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
const instance = MyClass.create({ host: "localhost", port: 3e3 });
|
|
708
|
-
expect(instance.getHost()).toBe("localhost");
|
|
709
|
-
});
|
|
710
|
-
test("accepts an abstract base class", () => {
|
|
711
|
-
class AbstractBase {
|
|
712
|
-
}
|
|
713
|
-
const Wrapped = configurable(testPipe, AbstractBase);
|
|
714
|
-
class Concrete extends Wrapped {
|
|
715
|
-
constructor(config) {
|
|
716
|
-
super(config);
|
|
717
|
-
}
|
|
718
|
-
greet() {
|
|
719
|
-
return `hello from ${this.config.host}`;
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
const instance = Concrete.create({ host: "localhost", port: 3e3 });
|
|
723
|
-
expect(instance.greet()).toBe("hello from localhost");
|
|
724
|
-
expectTypeOf(instance).toHaveProperty("config");
|
|
725
|
-
});
|
|
726
|
-
});
|
|
727
|
-
}
|
|
728
|
-
|
|
729
589
|
// src/orm/fields.ts
|
|
730
|
-
var
|
|
590
|
+
var import_valleyed3 = require("valleyed");
|
|
731
591
|
var Field = class {
|
|
732
592
|
name;
|
|
733
593
|
path;
|
|
@@ -766,7 +626,7 @@ if (void 0) {
|
|
|
766
626
|
});
|
|
767
627
|
describe("SchemaField", () => {
|
|
768
628
|
test("extends Field and stores pipe", () => {
|
|
769
|
-
const mockPipe =
|
|
629
|
+
const mockPipe = v3.string();
|
|
770
630
|
const f = new SchemaField("email", mockPipe);
|
|
771
631
|
expect(f).toBeInstanceOf(Field);
|
|
772
632
|
expect(f.name).toBe("email");
|
|
@@ -774,7 +634,7 @@ if (void 0) {
|
|
|
774
634
|
expect(f.pipe).toBe(mockPipe);
|
|
775
635
|
});
|
|
776
636
|
test("stores lifecycle hooks when provided", () => {
|
|
777
|
-
const mockPipe =
|
|
637
|
+
const mockPipe = v3.number();
|
|
778
638
|
const f = new SchemaField("updatedAt", mockPipe, {
|
|
779
639
|
onCreate: () => 1e3,
|
|
780
640
|
onUpdate: () => 2e3
|
|
@@ -783,7 +643,7 @@ if (void 0) {
|
|
|
783
643
|
expect(f.onUpdate?.()).toBe(2e3);
|
|
784
644
|
});
|
|
785
645
|
test("keeps lifecycle hooks undefined when omitted", () => {
|
|
786
|
-
const mockPipe =
|
|
646
|
+
const mockPipe = v3.string();
|
|
787
647
|
const f = new SchemaField("name", mockPipe);
|
|
788
648
|
expect(f.onCreate).toBeUndefined();
|
|
789
649
|
expect(f.onUpdate).toBeUndefined();
|
|
@@ -2018,6 +1878,146 @@ if (void 0) {
|
|
|
2018
1878
|
});
|
|
2019
1879
|
}
|
|
2020
1880
|
|
|
1881
|
+
// src/utilities/configurable.ts
|
|
1882
|
+
var import_valleyed4 = require("valleyed");
|
|
1883
|
+
function configurable(pipeFn, base) {
|
|
1884
|
+
const pipe = pipeFn();
|
|
1885
|
+
import_valleyed4.v.compile(pipe);
|
|
1886
|
+
class Configurable extends base {
|
|
1887
|
+
constructor(config, ...baseArgs) {
|
|
1888
|
+
super(...baseArgs);
|
|
1889
|
+
this.config = config;
|
|
1890
|
+
}
|
|
1891
|
+
static create(input, ...args) {
|
|
1892
|
+
const r = import_valleyed4.v.validate(pipe, input);
|
|
1893
|
+
if (!r.valid) throw r.error;
|
|
1894
|
+
return new this(r.value, ...args);
|
|
1895
|
+
}
|
|
1896
|
+
}
|
|
1897
|
+
return Configurable;
|
|
1898
|
+
}
|
|
1899
|
+
if (void 0) {
|
|
1900
|
+
const { describe, test, expect, expectTypeOf } = void 0;
|
|
1901
|
+
const { v: v6 } = null;
|
|
1902
|
+
const testPipe = () => v6.object({
|
|
1903
|
+
host: v6.string(),
|
|
1904
|
+
port: v6.number()
|
|
1905
|
+
});
|
|
1906
|
+
class TestBase {
|
|
1907
|
+
baseValue;
|
|
1908
|
+
constructor() {
|
|
1909
|
+
this.baseValue = "base";
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
class TestBaseWithArgs {
|
|
1913
|
+
label;
|
|
1914
|
+
constructor(label) {
|
|
1915
|
+
this.label = label;
|
|
1916
|
+
}
|
|
1917
|
+
}
|
|
1918
|
+
describe("configurable", () => {
|
|
1919
|
+
test("validation runs in static create before constructor body executes", () => {
|
|
1920
|
+
let constructorRan = false;
|
|
1921
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
1922
|
+
class MyClass extends Wrapped {
|
|
1923
|
+
constructor(config) {
|
|
1924
|
+
super(config);
|
|
1925
|
+
constructorRan = true;
|
|
1926
|
+
}
|
|
1927
|
+
}
|
|
1928
|
+
expect(() => MyClass.create({ host: 123, port: "bad" })).toThrow();
|
|
1929
|
+
expect(constructorRan).toBe(false);
|
|
1930
|
+
MyClass.create({ host: "localhost", port: 3e3 });
|
|
1931
|
+
expect(constructorRan).toBe(true);
|
|
1932
|
+
});
|
|
1933
|
+
test("constructor receives validated value", () => {
|
|
1934
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
1935
|
+
let receivedConfig;
|
|
1936
|
+
class MyClass extends Wrapped {
|
|
1937
|
+
constructor(config) {
|
|
1938
|
+
super(config);
|
|
1939
|
+
receivedConfig = this.config;
|
|
1940
|
+
}
|
|
1941
|
+
}
|
|
1942
|
+
MyClass.create({ host: "localhost", port: 3e3 });
|
|
1943
|
+
expect(receivedConfig).toEqual({ host: "localhost", port: 3e3 });
|
|
1944
|
+
});
|
|
1945
|
+
test("external new is a compile error", () => {
|
|
1946
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
1947
|
+
class MyClass extends Wrapped {
|
|
1948
|
+
constructor(config) {
|
|
1949
|
+
super(config);
|
|
1950
|
+
}
|
|
1951
|
+
}
|
|
1952
|
+
void (() => new MyClass({ host: "localhost", port: 3e3 }));
|
|
1953
|
+
});
|
|
1954
|
+
test("static Config resolves to PipeOutput<P> at the type level", () => {
|
|
1955
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
1956
|
+
class MyClass extends Wrapped {
|
|
1957
|
+
constructor(config) {
|
|
1958
|
+
super(config);
|
|
1959
|
+
}
|
|
1960
|
+
}
|
|
1961
|
+
expectTypeOf().toEqualTypeOf();
|
|
1962
|
+
expect(MyClass.create).toBeTypeOf("function");
|
|
1963
|
+
});
|
|
1964
|
+
test("ConstructorParameters<This>-based extras inference works for non-zero-arg leaf signatures", () => {
|
|
1965
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
1966
|
+
class MyClass extends Wrapped {
|
|
1967
|
+
extra;
|
|
1968
|
+
constructor(config, extra) {
|
|
1969
|
+
super(config);
|
|
1970
|
+
this.extra = extra;
|
|
1971
|
+
}
|
|
1972
|
+
}
|
|
1973
|
+
const instance = MyClass.create({ host: "localhost", port: 3e3 }, 42);
|
|
1974
|
+
expect(instance.extra).toBe(42);
|
|
1975
|
+
expectTypeOf(instance).toHaveProperty("extra");
|
|
1976
|
+
expectTypeOf(instance.extra).toEqualTypeOf();
|
|
1977
|
+
void (() => MyClass.create({ host: "localhost", port: 3e3 }, "not-a-number"));
|
|
1978
|
+
});
|
|
1979
|
+
test("base-args forwarding works for non-zero-arg bases", () => {
|
|
1980
|
+
const Wrapped = configurable(testPipe, TestBaseWithArgs);
|
|
1981
|
+
class MyClass extends Wrapped {
|
|
1982
|
+
constructor(config, label) {
|
|
1983
|
+
super(config, label);
|
|
1984
|
+
}
|
|
1985
|
+
}
|
|
1986
|
+
const instance = MyClass.create({ host: "localhost", port: 3e3 }, "test-label");
|
|
1987
|
+
expect(instance.label).toBe("test-label");
|
|
1988
|
+
});
|
|
1989
|
+
test("config is accessible as protected readonly on instances", () => {
|
|
1990
|
+
const Wrapped = configurable(testPipe, TestBase);
|
|
1991
|
+
class MyClass extends Wrapped {
|
|
1992
|
+
constructor(config) {
|
|
1993
|
+
super(config);
|
|
1994
|
+
}
|
|
1995
|
+
getHost() {
|
|
1996
|
+
return this.config.host;
|
|
1997
|
+
}
|
|
1998
|
+
}
|
|
1999
|
+
const instance = MyClass.create({ host: "localhost", port: 3e3 });
|
|
2000
|
+
expect(instance.getHost()).toBe("localhost");
|
|
2001
|
+
});
|
|
2002
|
+
test("accepts an abstract base class", () => {
|
|
2003
|
+
class AbstractBase {
|
|
2004
|
+
}
|
|
2005
|
+
const Wrapped = configurable(testPipe, AbstractBase);
|
|
2006
|
+
class Concrete extends Wrapped {
|
|
2007
|
+
constructor(config) {
|
|
2008
|
+
super(config);
|
|
2009
|
+
}
|
|
2010
|
+
greet() {
|
|
2011
|
+
return `hello from ${this.config.host}`;
|
|
2012
|
+
}
|
|
2013
|
+
}
|
|
2014
|
+
const instance = Concrete.create({ host: "localhost", port: 3e3 });
|
|
2015
|
+
expect(instance.greet()).toBe("hello from localhost");
|
|
2016
|
+
expectTypeOf(instance).toHaveProperty("config");
|
|
2017
|
+
});
|
|
2018
|
+
});
|
|
2019
|
+
}
|
|
2020
|
+
|
|
2021
2021
|
// src/orm/orm-adapter.ts
|
|
2022
2022
|
var OrmAdapter = class {
|
|
2023
2023
|
queryableOps = [];
|