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.
Files changed (203) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/cache/adapters/in-memory/index.cjs +155 -155
  3. package/dist/cjs/cache/adapters/in-memory/index.cjs.map +1 -1
  4. package/dist/cjs/cache/adapters/in-memory/index.min.cjs +3 -3
  5. package/dist/cjs/cache/adapters/in-memory/index.min.cjs.map +1 -1
  6. package/dist/cjs/dbs/adapters/mongodb/index.cjs.map +1 -1
  7. package/dist/cjs/dbs/adapters/mongodb/index.min.cjs +2 -2
  8. package/dist/cjs/dbs/adapters/mongodb/index.min.cjs.map +1 -1
  9. package/dist/cjs/dbs/index.cjs +181 -179
  10. package/dist/cjs/dbs/index.cjs.map +1 -1
  11. package/dist/cjs/dbs/index.min.cjs +3 -3
  12. package/dist/cjs/dbs/index.min.cjs.map +1 -1
  13. package/dist/cjs/errors/index.cjs +11 -0
  14. package/dist/cjs/errors/index.cjs.map +1 -1
  15. package/dist/cjs/errors/index.min.cjs +1 -1
  16. package/dist/cjs/errors/index.min.cjs.map +1 -1
  17. package/dist/cjs/events/adapters/kafka/index.cjs.map +1 -1
  18. package/dist/cjs/events/adapters/kafka/index.min.cjs +2 -2
  19. package/dist/cjs/events/adapters/kafka/index.min.cjs.map +1 -1
  20. package/dist/cjs/events/adapters/rabbitmq/index.cjs +179 -179
  21. package/dist/cjs/events/adapters/rabbitmq/index.cjs.map +1 -1
  22. package/dist/cjs/events/adapters/rabbitmq/index.min.cjs +3 -3
  23. package/dist/cjs/events/adapters/rabbitmq/index.min.cjs.map +1 -1
  24. package/dist/cjs/orm/adapters/mongodb/index.cjs +144 -144
  25. package/dist/cjs/orm/adapters/mongodb/index.cjs.map +1 -1
  26. package/dist/cjs/orm/adapters/mongodb/index.min.cjs +1 -1
  27. package/dist/cjs/orm/adapters/mongodb/index.min.cjs.map +1 -1
  28. package/dist/cjs/orm/adapters/postgresql/index.cjs +152 -215
  29. package/dist/cjs/orm/adapters/postgresql/index.cjs.map +1 -1
  30. package/dist/cjs/orm/adapters/postgresql/index.min.cjs +11 -11
  31. package/dist/cjs/orm/adapters/postgresql/index.min.cjs.map +1 -1
  32. package/dist/cjs/server/adapters/express/index.cjs +292 -225
  33. package/dist/cjs/server/adapters/express/index.cjs.map +1 -1
  34. package/dist/cjs/server/adapters/express/index.min.cjs +7 -7
  35. package/dist/cjs/server/adapters/express/index.min.cjs.map +1 -1
  36. package/dist/cjs/server/adapters/fastify/index.cjs +277 -210
  37. package/dist/cjs/server/adapters/fastify/index.cjs.map +1 -1
  38. package/dist/cjs/server/adapters/fastify/index.min.cjs +7 -7
  39. package/dist/cjs/server/adapters/fastify/index.min.cjs.map +1 -1
  40. package/dist/cjs/server/index.cjs +82 -15
  41. package/dist/cjs/server/index.cjs.map +1 -1
  42. package/dist/cjs/server/index.min.cjs +7 -7
  43. package/dist/cjs/server/index.min.cjs.map +1 -1
  44. package/dist/cjs/utilities/index.cjs +0 -5
  45. package/dist/cjs/utilities/index.cjs.map +1 -1
  46. package/dist/cjs/utilities/index.min.cjs +2 -2
  47. package/dist/cjs/utilities/index.min.cjs.map +1 -1
  48. package/dist/cjs/validations/index.cjs +1 -0
  49. package/dist/cjs/validations/index.cjs.map +1 -1
  50. package/dist/cjs/validations/index.min.cjs +1 -1
  51. package/dist/cjs/validations/index.min.cjs.map +1 -1
  52. package/dist/esm/cache/adapters/in-memory/index.min.mjs +1 -1
  53. package/dist/esm/cache/adapters/in-memory/index.min.mjs.map +1 -1
  54. package/dist/esm/cache/adapters/in-memory/index.mjs +6 -3
  55. package/dist/esm/cache/adapters/in-memory/index.mjs.map +1 -1
  56. package/dist/esm/cache/adapters/redis/index.min.mjs +1 -1
  57. package/dist/esm/cache/adapters/redis/index.mjs +5 -3
  58. package/dist/esm/cache/index.min.mjs +1 -1
  59. package/dist/esm/cache/index.mjs +2 -2
  60. package/dist/esm/{chunk-2GGMLKRP.min.mjs → chunk-4GZ43EQ2.min.mjs} +2 -2
  61. package/dist/esm/{chunk-IRYCN6PI.min.mjs → chunk-5FEVQT6K.min.mjs} +2 -2
  62. package/dist/esm/{chunk-LKS5ZE45.mjs → chunk-74GY55PM.mjs} +2 -2
  63. package/dist/esm/{chunk-A4P7P6BU.mjs → chunk-7N4WUZ7P.mjs} +167 -347
  64. package/dist/esm/chunk-7N4WUZ7P.mjs.map +1 -0
  65. package/dist/esm/chunk-A332TTED.mjs +135 -0
  66. package/dist/esm/chunk-A332TTED.mjs.map +1 -0
  67. package/dist/esm/{chunk-7CP7ZE2O.mjs → chunk-BONYW6LU.mjs} +9 -5
  68. package/dist/esm/{chunk-7CP7ZE2O.mjs.map → chunk-BONYW6LU.mjs.map} +1 -1
  69. package/dist/esm/{chunk-HXFNN6RI.mjs → chunk-C3G4W4ZV.mjs} +3 -3
  70. package/dist/esm/chunk-CU2HU5UE.min.mjs +2 -0
  71. package/dist/esm/chunk-CU2HU5UE.min.mjs.map +1 -0
  72. package/dist/esm/{chunk-676VIABN.min.mjs → chunk-LJZOS62I.min.mjs} +2 -2
  73. package/dist/esm/{chunk-7SQ5JQYR.min.mjs → chunk-MCX2O5IT.min.mjs} +2 -2
  74. package/dist/esm/{chunk-BWUFPMVG.mjs → chunk-MNKDFIVK.mjs} +2 -2
  75. package/dist/esm/chunk-N3OD4QL2.min.mjs +32 -0
  76. package/dist/esm/chunk-N3OD4QL2.min.mjs.map +1 -0
  77. package/dist/esm/chunk-NEF3UYFA.mjs +144 -0
  78. package/dist/esm/chunk-NEF3UYFA.mjs.map +1 -0
  79. package/dist/esm/{chunk-TSVHZZE4.mjs → chunk-RFJ5URMP.mjs} +5 -5
  80. package/dist/esm/chunk-RX4XPABH.min.mjs +2 -0
  81. package/dist/esm/{chunk-MQXTTWPS.min.mjs.map → chunk-RX4XPABH.min.mjs.map} +1 -1
  82. package/dist/esm/chunk-SPOVKWV3.min.mjs +2 -0
  83. package/dist/esm/chunk-SPOVKWV3.min.mjs.map +1 -0
  84. package/dist/esm/{chunk-3TP7NINX.mjs → chunk-XESM7IWM.mjs} +2 -2
  85. package/dist/esm/{chunk-5PZACGPI.mjs → chunk-XJKBHQWO.mjs} +7 -5
  86. package/dist/esm/{chunk-5PZACGPI.mjs.map → chunk-XJKBHQWO.mjs.map} +1 -1
  87. package/dist/esm/chunk-YC6V4HLT.min.mjs +2 -0
  88. package/dist/esm/{chunk-7NF7PV6S.min.mjs.map → chunk-YC6V4HLT.min.mjs.map} +1 -1
  89. package/dist/esm/{chunk-P4PRHHIY.min.mjs → chunk-YWQTFKNY.min.mjs} +2 -2
  90. package/dist/esm/dbs/adapters/mongodb/index.min.mjs +1 -1
  91. package/dist/esm/dbs/adapters/mongodb/index.min.mjs.map +1 -1
  92. package/dist/esm/dbs/adapters/mongodb/index.mjs +8 -5
  93. package/dist/esm/dbs/adapters/mongodb/index.mjs.map +1 -1
  94. package/dist/esm/dbs/index.min.mjs +1 -1
  95. package/dist/esm/dbs/index.mjs +5 -3
  96. package/dist/esm/errors/index.min.mjs +1 -1
  97. package/dist/esm/errors/index.mjs +3 -1
  98. package/dist/esm/events/adapters/kafka/index.min.mjs +1 -1
  99. package/dist/esm/events/adapters/kafka/index.mjs +4 -2
  100. package/dist/esm/events/adapters/rabbitmq/index.min.mjs +1 -1
  101. package/dist/esm/events/adapters/rabbitmq/index.min.mjs.map +1 -1
  102. package/dist/esm/events/adapters/rabbitmq/index.mjs +7 -3
  103. package/dist/esm/events/adapters/rabbitmq/index.mjs.map +1 -1
  104. package/dist/esm/index.min.mjs +1 -1
  105. package/dist/esm/index.mjs +1 -1
  106. package/dist/esm/instance/index.min.mjs +1 -1
  107. package/dist/esm/instance/index.mjs +1 -1
  108. package/dist/esm/introspection-TO27QT2X.min.mjs +2 -0
  109. package/dist/esm/{introspection-YJF3QAUK.mjs → introspection-ZUQYVEFC.mjs} +3 -3
  110. package/dist/esm/jobs/adapters/redis/index.min.mjs +1 -1
  111. package/dist/esm/jobs/adapters/redis/index.min.mjs.map +1 -1
  112. package/dist/esm/jobs/adapters/redis/index.mjs +10 -6
  113. package/dist/esm/jobs/adapters/redis/index.mjs.map +1 -1
  114. package/dist/esm/orm/adapters/in-memory/index.min.mjs +1 -1
  115. package/dist/esm/orm/adapters/in-memory/index.mjs +4 -3
  116. package/dist/esm/orm/adapters/json/index.min.mjs +1 -1
  117. package/dist/esm/orm/adapters/json/index.min.mjs.map +1 -1
  118. package/dist/esm/orm/adapters/json/index.mjs +6 -5
  119. package/dist/esm/orm/adapters/json/index.mjs.map +1 -1
  120. package/dist/esm/orm/adapters/mongodb/index.min.mjs +1 -1
  121. package/dist/esm/orm/adapters/mongodb/index.min.mjs.map +1 -1
  122. package/dist/esm/orm/adapters/mongodb/index.mjs +6 -4
  123. package/dist/esm/orm/adapters/mongodb/index.mjs.map +1 -1
  124. package/dist/esm/orm/adapters/postgresql/index.min.mjs +2 -2
  125. package/dist/esm/orm/adapters/postgresql/index.min.mjs.map +1 -1
  126. package/dist/esm/orm/adapters/postgresql/index.mjs +8 -5
  127. package/dist/esm/orm/adapters/postgresql/index.mjs.map +1 -1
  128. package/dist/esm/orm/index.min.mjs +1 -1
  129. package/dist/esm/orm/index.mjs +3 -3
  130. package/dist/esm/server/adapters/express/index.min.mjs +1 -1
  131. package/dist/esm/server/adapters/express/index.min.mjs.map +1 -1
  132. package/dist/esm/server/adapters/express/index.mjs +7 -3
  133. package/dist/esm/server/adapters/express/index.mjs.map +1 -1
  134. package/dist/esm/server/adapters/fastify/index.min.mjs +1 -1
  135. package/dist/esm/server/adapters/fastify/index.min.mjs.map +1 -1
  136. package/dist/esm/server/adapters/fastify/index.mjs +7 -3
  137. package/dist/esm/server/adapters/fastify/index.mjs.map +1 -1
  138. package/dist/esm/server/index.min.mjs +1 -1
  139. package/dist/esm/server/index.mjs +1 -1
  140. package/dist/esm/utilities/index.min.mjs +1 -1
  141. package/dist/esm/utilities/index.mjs +5 -4
  142. package/dist/esm/validations/index.min.mjs +1 -1
  143. package/dist/esm/validations/index.mjs +1 -1
  144. package/dist/types/{base-BDTBLZ9a.d.ts → base-BnwwLupM.d.ts} +3 -3
  145. package/dist/types/cache/adapters/in-memory/index.js +6 -3
  146. package/dist/types/cache/adapters/redis/index.js +5 -3
  147. package/dist/types/cache/index.js +2 -2
  148. package/dist/types/chunk-7MXHWHRV.js +134 -0
  149. package/dist/types/{chunk-LPB5LS7A.js → chunk-BKXNLF6X.js} +1 -1
  150. package/dist/types/{chunk-J3TGB5YQ.js → chunk-DZFKDZDZ.js} +8 -4
  151. package/dist/types/{chunk-YLJNBL6J.js → chunk-GQRSK2KP.js} +6 -4
  152. package/dist/types/chunk-PPD4WDG6.js +143 -0
  153. package/dist/types/{chunk-55CTVK7R.js → chunk-SZAA5GF6.js} +1 -1
  154. package/dist/types/{chunk-4DH3POYM.js → chunk-UGLZIYAR.js} +4 -4
  155. package/dist/types/{chunk-5Z26ZURE.js → chunk-UR7O43FC.js} +1 -1
  156. package/dist/types/{chunk-IZDJDGOV.js → chunk-X5ZDIXCZ.js} +2 -2
  157. package/dist/types/{chunk-TT5EORDK.js → chunk-YGIIUOQM.js} +166 -346
  158. package/dist/types/dbs/adapters/mongodb/index.js +8 -5
  159. package/dist/types/dbs/index.js +5 -3
  160. package/dist/types/errors/index.d.ts +8 -3
  161. package/dist/types/errors/index.js +3 -1
  162. package/dist/types/events/adapters/kafka/index.js +4 -2
  163. package/dist/types/events/adapters/rabbitmq/index.js +7 -3
  164. package/dist/types/index.js +1 -1
  165. package/dist/types/instance/index.js +1 -1
  166. package/dist/types/{introspection-EHGM4RMO.js → introspection-ZQMYTW6H.js} +2 -2
  167. package/dist/types/jobs/adapters/redis/index.js +10 -6
  168. package/dist/types/orm/adapters/in-memory/index.js +4 -3
  169. package/dist/types/orm/adapters/json/index.js +6 -5
  170. package/dist/types/orm/adapters/mongodb/index.js +6 -4
  171. package/dist/types/orm/adapters/postgresql/index.js +8 -5
  172. package/dist/types/orm/index.js +3 -3
  173. package/dist/types/{requestError-DdaL8hc3.d.ts → requestError-BmOhSuFb.d.ts} +1 -0
  174. package/dist/types/server/adapters/express/index.d.ts +2 -2
  175. package/dist/types/server/adapters/express/index.js +7 -3
  176. package/dist/types/server/adapters/fastify/index.d.ts +3 -3
  177. package/dist/types/server/adapters/fastify/index.js +7 -3
  178. package/dist/types/server/index.d.ts +4 -4
  179. package/dist/types/server/index.js +1 -1
  180. package/dist/types/utilities/index.d.ts +1 -2
  181. package/dist/types/utilities/index.js +5 -4
  182. package/dist/types/{validationError-oigtHqBi.d.ts → validationError-C2tVK4s7.d.ts} +1 -1
  183. package/dist/types/validations/index.d.ts +4 -4
  184. package/dist/types/validations/index.js +1 -1
  185. package/package.json +1 -1
  186. package/dist/esm/chunk-7NF7PV6S.min.mjs +0 -2
  187. package/dist/esm/chunk-A4P7P6BU.mjs.map +0 -1
  188. package/dist/esm/chunk-IN5YKIJ7.min.mjs +0 -32
  189. package/dist/esm/chunk-IN5YKIJ7.min.mjs.map +0 -1
  190. package/dist/esm/chunk-MQXTTWPS.min.mjs +0 -2
  191. package/dist/esm/introspection-THKMXV5V.min.mjs +0 -2
  192. /package/dist/esm/{chunk-2GGMLKRP.min.mjs.map → chunk-4GZ43EQ2.min.mjs.map} +0 -0
  193. /package/dist/esm/{chunk-IRYCN6PI.min.mjs.map → chunk-5FEVQT6K.min.mjs.map} +0 -0
  194. /package/dist/esm/{chunk-LKS5ZE45.mjs.map → chunk-74GY55PM.mjs.map} +0 -0
  195. /package/dist/esm/{chunk-HXFNN6RI.mjs.map → chunk-C3G4W4ZV.mjs.map} +0 -0
  196. /package/dist/esm/{chunk-676VIABN.min.mjs.map → chunk-LJZOS62I.min.mjs.map} +0 -0
  197. /package/dist/esm/{chunk-7SQ5JQYR.min.mjs.map → chunk-MCX2O5IT.min.mjs.map} +0 -0
  198. /package/dist/esm/{chunk-BWUFPMVG.mjs.map → chunk-MNKDFIVK.mjs.map} +0 -0
  199. /package/dist/esm/{chunk-TSVHZZE4.mjs.map → chunk-RFJ5URMP.mjs.map} +0 -0
  200. /package/dist/esm/{chunk-3TP7NINX.mjs.map → chunk-XESM7IWM.mjs.map} +0 -0
  201. /package/dist/esm/{chunk-P4PRHHIY.min.mjs.map → chunk-YWQTFKNY.min.mjs.map} +0 -0
  202. /package/dist/esm/{introspection-THKMXV5V.min.mjs.map → introspection-TO27QT2X.min.mjs.map} +0 -0
  203. /package/dist/esm/{introspection-YJF3QAUK.mjs.map → introspection-ZUQYVEFC.mjs.map} +0 -0
@@ -610,216 +610,6 @@ ${settingsValidity.error.toString()}`, {
610
610
  }
611
611
  });
612
612
 
613
- // src/utilities/authProviders.ts
614
- var import_axios, import_jsonwebtoken, import_jwks_rsa;
615
- var init_authProviders = __esm({
616
- "src/utilities/authProviders.ts"() {
617
- "use strict";
618
- import_axios = __toESM(require("axios"), 1);
619
- import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
620
- import_jwks_rsa = __toESM(require("jwks-rsa"), 1);
621
- }
622
- });
623
-
624
- // src/utilities/configurable.ts
625
- function configurable(pipeFn, base) {
626
- const pipe = pipeFn();
627
- import_valleyed3.v.compile(pipe);
628
- class Configurable extends base {
629
- constructor(config, ...baseArgs) {
630
- super(...baseArgs);
631
- this.config = config;
632
- }
633
- static create(input, ...args) {
634
- const r = import_valleyed3.v.validate(pipe, input);
635
- if (!r.valid) throw r.error;
636
- return new this(r.value, ...args);
637
- }
638
- }
639
- return Configurable;
640
- }
641
- var import_valleyed3;
642
- var init_configurable = __esm({
643
- "src/utilities/configurable.ts"() {
644
- "use strict";
645
- import_valleyed3 = require("valleyed");
646
- if (void 0) {
647
- const { describe, test, expect, expectTypeOf } = void 0;
648
- const { v: v6 } = null;
649
- const testPipe = () => v6.object({
650
- host: v6.string(),
651
- port: v6.number()
652
- });
653
- class TestBase {
654
- baseValue;
655
- constructor() {
656
- this.baseValue = "base";
657
- }
658
- }
659
- class TestBaseWithArgs {
660
- label;
661
- constructor(label) {
662
- this.label = label;
663
- }
664
- }
665
- describe("configurable", () => {
666
- test("validation runs in static create before constructor body executes", () => {
667
- let constructorRan = false;
668
- const Wrapped = configurable(testPipe, TestBase);
669
- class MyClass extends Wrapped {
670
- constructor(config) {
671
- super(config);
672
- constructorRan = true;
673
- }
674
- }
675
- expect(() => MyClass.create({ host: 123, port: "bad" })).toThrow();
676
- expect(constructorRan).toBe(false);
677
- MyClass.create({ host: "localhost", port: 3e3 });
678
- expect(constructorRan).toBe(true);
679
- });
680
- test("constructor receives validated value", () => {
681
- const Wrapped = configurable(testPipe, TestBase);
682
- let receivedConfig;
683
- class MyClass extends Wrapped {
684
- constructor(config) {
685
- super(config);
686
- receivedConfig = this.config;
687
- }
688
- }
689
- MyClass.create({ host: "localhost", port: 3e3 });
690
- expect(receivedConfig).toEqual({ host: "localhost", port: 3e3 });
691
- });
692
- test("external new is a compile error", () => {
693
- const Wrapped = configurable(testPipe, TestBase);
694
- class MyClass extends Wrapped {
695
- constructor(config) {
696
- super(config);
697
- }
698
- }
699
- void (() => new MyClass({ host: "localhost", port: 3e3 }));
700
- });
701
- test("static Config resolves to PipeOutput<P> at the type level", () => {
702
- const Wrapped = configurable(testPipe, TestBase);
703
- class MyClass extends Wrapped {
704
- constructor(config) {
705
- super(config);
706
- }
707
- }
708
- expectTypeOf().toEqualTypeOf();
709
- expect(MyClass.create).toBeTypeOf("function");
710
- });
711
- test("ConstructorParameters<This>-based extras inference works for non-zero-arg leaf signatures", () => {
712
- const Wrapped = configurable(testPipe, TestBase);
713
- class MyClass extends Wrapped {
714
- extra;
715
- constructor(config, extra) {
716
- super(config);
717
- this.extra = extra;
718
- }
719
- }
720
- const instance = MyClass.create({ host: "localhost", port: 3e3 }, 42);
721
- expect(instance.extra).toBe(42);
722
- expectTypeOf(instance).toHaveProperty("extra");
723
- expectTypeOf(instance.extra).toEqualTypeOf();
724
- void (() => MyClass.create({ host: "localhost", port: 3e3 }, "not-a-number"));
725
- });
726
- test("base-args forwarding works for non-zero-arg bases", () => {
727
- const Wrapped = configurable(testPipe, TestBaseWithArgs);
728
- class MyClass extends Wrapped {
729
- constructor(config, label) {
730
- super(config, label);
731
- }
732
- }
733
- const instance = MyClass.create({ host: "localhost", port: 3e3 }, "test-label");
734
- expect(instance.label).toBe("test-label");
735
- });
736
- test("config is accessible as protected readonly on instances", () => {
737
- const Wrapped = configurable(testPipe, TestBase);
738
- class MyClass extends Wrapped {
739
- constructor(config) {
740
- super(config);
741
- }
742
- getHost() {
743
- return this.config.host;
744
- }
745
- }
746
- const instance = MyClass.create({ host: "localhost", port: 3e3 });
747
- expect(instance.getHost()).toBe("localhost");
748
- });
749
- test("accepts an abstract base class", () => {
750
- class AbstractBase {
751
- }
752
- const Wrapped = configurable(testPipe, AbstractBase);
753
- class Concrete extends Wrapped {
754
- constructor(config) {
755
- super(config);
756
- }
757
- greet() {
758
- return `hello from ${this.config.host}`;
759
- }
760
- }
761
- const instance = Concrete.create({ host: "localhost", port: 3e3 });
762
- expect(instance.greet()).toBe("hello from localhost");
763
- expectTypeOf(instance).toHaveProperty("config");
764
- });
765
- });
766
- }
767
- }
768
- });
769
-
770
- // src/utilities/hash.ts
771
- var bcrypt;
772
- var init_hash = __esm({
773
- "src/utilities/hash.ts"() {
774
- "use strict";
775
- bcrypt = __toESM(require("bcryptjs"), 1);
776
- }
777
- });
778
-
779
- // src/utilities/json.ts
780
- var init_json = __esm({
781
- "src/utilities/json.ts"() {
782
- "use strict";
783
- }
784
- });
785
-
786
- // src/utilities/media.ts
787
- var import_music_metadata;
788
- var init_media = __esm({
789
- "src/utilities/media.ts"() {
790
- "use strict";
791
- import_music_metadata = require("music-metadata");
792
- }
793
- });
794
-
795
- // src/utilities/random.ts
796
- var init_random = __esm({
797
- "src/utilities/random.ts"() {
798
- "use strict";
799
- }
800
- });
801
-
802
- // src/utilities/retry.ts
803
- var init_retry = __esm({
804
- "src/utilities/retry.ts"() {
805
- "use strict";
806
- }
807
- });
808
-
809
- // src/utilities/index.ts
810
- var init_utilities = __esm({
811
- "src/utilities/index.ts"() {
812
- "use strict";
813
- init_authProviders();
814
- init_configurable();
815
- init_hash();
816
- init_json();
817
- init_media();
818
- init_random();
819
- init_retry();
820
- }
821
- });
822
-
823
613
  // src/errors/types/badRequestError.ts
824
614
  var init_badRequestError = __esm({
825
615
  "src/errors/types/badRequestError.ts"() {
@@ -848,6 +638,13 @@ var init_notFoundError = __esm({
848
638
  }
849
639
  });
850
640
 
641
+ // src/errors/types/preconditionRequiredError.ts
642
+ var init_preconditionRequiredError = __esm({
643
+ "src/errors/types/preconditionRequiredError.ts"() {
644
+ "use strict";
645
+ }
646
+ });
647
+
851
648
  // src/errors/types/tokenExpired.ts
852
649
  var init_tokenExpired = __esm({
853
650
  "src/errors/types/tokenExpired.ts"() {
@@ -872,6 +669,7 @@ var init_errors = __esm({
872
669
  init_notAuthenticatedError();
873
670
  init_notAuthorizedError();
874
671
  init_notFoundError();
672
+ init_preconditionRequiredError();
875
673
  init_tokenExpired();
876
674
  init_validationError();
877
675
  }
@@ -948,7 +746,7 @@ var import_valleyed5 = require("valleyed");
948
746
  init_errors();
949
747
 
950
748
  // src/orm/fields.ts
951
- var import_valleyed4 = require("valleyed");
749
+ var import_valleyed3 = require("valleyed");
952
750
  var Field = class {
953
751
  name;
954
752
  path;
@@ -987,7 +785,7 @@ if (void 0) {
987
785
  });
988
786
  describe("SchemaField", () => {
989
787
  test("extends Field and stores pipe", () => {
990
- const mockPipe = v4.string();
788
+ const mockPipe = v3.string();
991
789
  const f = new SchemaField("email", mockPipe);
992
790
  expect(f).toBeInstanceOf(Field);
993
791
  expect(f.name).toBe("email");
@@ -995,7 +793,7 @@ if (void 0) {
995
793
  expect(f.pipe).toBe(mockPipe);
996
794
  });
997
795
  test("stores lifecycle hooks when provided", () => {
998
- const mockPipe = v4.number();
796
+ const mockPipe = v3.number();
999
797
  const f = new SchemaField("updatedAt", mockPipe, {
1000
798
  onCreate: () => 1e3,
1001
799
  onUpdate: () => 2e3
@@ -1004,7 +802,7 @@ if (void 0) {
1004
802
  expect(f.onUpdate?.()).toBe(2e3);
1005
803
  });
1006
804
  test("keeps lifecycle hooks undefined when omitted", () => {
1007
- const mockPipe = v4.string();
805
+ const mockPipe = v3.string();
1008
806
  const f = new SchemaField("name", mockPipe);
1009
807
  expect(f.onCreate).toBeUndefined();
1010
808
  expect(f.onUpdate).toBeUndefined();
@@ -2466,7 +2264,146 @@ if (void 0) {
2466
2264
 
2467
2265
  // src/orm/adapters/postgresql/index.ts
2468
2266
  init_errors();
2469
- init_utilities();
2267
+
2268
+ // src/utilities/configurable.ts
2269
+ var import_valleyed4 = require("valleyed");
2270
+ function configurable(pipeFn, base) {
2271
+ const pipe = pipeFn();
2272
+ import_valleyed4.v.compile(pipe);
2273
+ class Configurable extends base {
2274
+ constructor(config, ...baseArgs) {
2275
+ super(...baseArgs);
2276
+ this.config = config;
2277
+ }
2278
+ static create(input, ...args) {
2279
+ const r = import_valleyed4.v.validate(pipe, input);
2280
+ if (!r.valid) throw r.error;
2281
+ return new this(r.value, ...args);
2282
+ }
2283
+ }
2284
+ return Configurable;
2285
+ }
2286
+ if (void 0) {
2287
+ const { describe, test, expect, expectTypeOf } = void 0;
2288
+ const { v: v6 } = null;
2289
+ const testPipe = () => v6.object({
2290
+ host: v6.string(),
2291
+ port: v6.number()
2292
+ });
2293
+ class TestBase {
2294
+ baseValue;
2295
+ constructor() {
2296
+ this.baseValue = "base";
2297
+ }
2298
+ }
2299
+ class TestBaseWithArgs {
2300
+ label;
2301
+ constructor(label) {
2302
+ this.label = label;
2303
+ }
2304
+ }
2305
+ describe("configurable", () => {
2306
+ test("validation runs in static create before constructor body executes", () => {
2307
+ let constructorRan = false;
2308
+ const Wrapped = configurable(testPipe, TestBase);
2309
+ class MyClass extends Wrapped {
2310
+ constructor(config) {
2311
+ super(config);
2312
+ constructorRan = true;
2313
+ }
2314
+ }
2315
+ expect(() => MyClass.create({ host: 123, port: "bad" })).toThrow();
2316
+ expect(constructorRan).toBe(false);
2317
+ MyClass.create({ host: "localhost", port: 3e3 });
2318
+ expect(constructorRan).toBe(true);
2319
+ });
2320
+ test("constructor receives validated value", () => {
2321
+ const Wrapped = configurable(testPipe, TestBase);
2322
+ let receivedConfig;
2323
+ class MyClass extends Wrapped {
2324
+ constructor(config) {
2325
+ super(config);
2326
+ receivedConfig = this.config;
2327
+ }
2328
+ }
2329
+ MyClass.create({ host: "localhost", port: 3e3 });
2330
+ expect(receivedConfig).toEqual({ host: "localhost", port: 3e3 });
2331
+ });
2332
+ test("external new is a compile error", () => {
2333
+ const Wrapped = configurable(testPipe, TestBase);
2334
+ class MyClass extends Wrapped {
2335
+ constructor(config) {
2336
+ super(config);
2337
+ }
2338
+ }
2339
+ void (() => new MyClass({ host: "localhost", port: 3e3 }));
2340
+ });
2341
+ test("static Config resolves to PipeOutput<P> at the type level", () => {
2342
+ const Wrapped = configurable(testPipe, TestBase);
2343
+ class MyClass extends Wrapped {
2344
+ constructor(config) {
2345
+ super(config);
2346
+ }
2347
+ }
2348
+ expectTypeOf().toEqualTypeOf();
2349
+ expect(MyClass.create).toBeTypeOf("function");
2350
+ });
2351
+ test("ConstructorParameters<This>-based extras inference works for non-zero-arg leaf signatures", () => {
2352
+ const Wrapped = configurable(testPipe, TestBase);
2353
+ class MyClass extends Wrapped {
2354
+ extra;
2355
+ constructor(config, extra) {
2356
+ super(config);
2357
+ this.extra = extra;
2358
+ }
2359
+ }
2360
+ const instance = MyClass.create({ host: "localhost", port: 3e3 }, 42);
2361
+ expect(instance.extra).toBe(42);
2362
+ expectTypeOf(instance).toHaveProperty("extra");
2363
+ expectTypeOf(instance.extra).toEqualTypeOf();
2364
+ void (() => MyClass.create({ host: "localhost", port: 3e3 }, "not-a-number"));
2365
+ });
2366
+ test("base-args forwarding works for non-zero-arg bases", () => {
2367
+ const Wrapped = configurable(testPipe, TestBaseWithArgs);
2368
+ class MyClass extends Wrapped {
2369
+ constructor(config, label) {
2370
+ super(config, label);
2371
+ }
2372
+ }
2373
+ const instance = MyClass.create({ host: "localhost", port: 3e3 }, "test-label");
2374
+ expect(instance.label).toBe("test-label");
2375
+ });
2376
+ test("config is accessible as protected readonly on instances", () => {
2377
+ const Wrapped = configurable(testPipe, TestBase);
2378
+ class MyClass extends Wrapped {
2379
+ constructor(config) {
2380
+ super(config);
2381
+ }
2382
+ getHost() {
2383
+ return this.config.host;
2384
+ }
2385
+ }
2386
+ const instance = MyClass.create({ host: "localhost", port: 3e3 });
2387
+ expect(instance.getHost()).toBe("localhost");
2388
+ });
2389
+ test("accepts an abstract base class", () => {
2390
+ class AbstractBase {
2391
+ }
2392
+ const Wrapped = configurable(testPipe, AbstractBase);
2393
+ class Concrete extends Wrapped {
2394
+ constructor(config) {
2395
+ super(config);
2396
+ }
2397
+ greet() {
2398
+ return `hello from ${this.config.host}`;
2399
+ }
2400
+ }
2401
+ const instance = Concrete.create({ host: "localhost", port: 3e3 });
2402
+ expect(instance.greet()).toBe("hello from localhost");
2403
+ expectTypeOf(instance).toHaveProperty("config");
2404
+ });
2405
+ });
2406
+ }
2470
2407
 
2471
2408
  // src/orm/orm-adapter.ts
2472
2409
  init_errors();