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.
Files changed (191) 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/events/adapters/kafka/index.cjs.map +1 -1
  14. package/dist/cjs/events/adapters/kafka/index.min.cjs +2 -2
  15. package/dist/cjs/events/adapters/kafka/index.min.cjs.map +1 -1
  16. package/dist/cjs/events/adapters/rabbitmq/index.cjs +179 -179
  17. package/dist/cjs/events/adapters/rabbitmq/index.cjs.map +1 -1
  18. package/dist/cjs/events/adapters/rabbitmq/index.min.cjs +3 -3
  19. package/dist/cjs/events/adapters/rabbitmq/index.min.cjs.map +1 -1
  20. package/dist/cjs/orm/adapters/mongodb/index.cjs +144 -144
  21. package/dist/cjs/orm/adapters/mongodb/index.cjs.map +1 -1
  22. package/dist/cjs/orm/adapters/mongodb/index.min.cjs +1 -1
  23. package/dist/cjs/orm/adapters/mongodb/index.min.cjs.map +1 -1
  24. package/dist/cjs/orm/adapters/postgresql/index.cjs +144 -215
  25. package/dist/cjs/orm/adapters/postgresql/index.cjs.map +1 -1
  26. package/dist/cjs/orm/adapters/postgresql/index.min.cjs +11 -11
  27. package/dist/cjs/orm/adapters/postgresql/index.min.cjs.map +1 -1
  28. package/dist/cjs/server/adapters/express/index.cjs +338 -226
  29. package/dist/cjs/server/adapters/express/index.cjs.map +1 -1
  30. package/dist/cjs/server/adapters/express/index.min.cjs +7 -7
  31. package/dist/cjs/server/adapters/express/index.min.cjs.map +1 -1
  32. package/dist/cjs/server/adapters/fastify/index.cjs +323 -211
  33. package/dist/cjs/server/adapters/fastify/index.cjs.map +1 -1
  34. package/dist/cjs/server/adapters/fastify/index.min.cjs +7 -7
  35. package/dist/cjs/server/adapters/fastify/index.min.cjs.map +1 -1
  36. package/dist/cjs/server/index.cjs +128 -16
  37. package/dist/cjs/server/index.cjs.map +1 -1
  38. package/dist/cjs/server/index.min.cjs +6 -6
  39. package/dist/cjs/server/index.min.cjs.map +1 -1
  40. package/dist/cjs/utilities/index.cjs +0 -5
  41. package/dist/cjs/utilities/index.cjs.map +1 -1
  42. package/dist/cjs/utilities/index.min.cjs +2 -2
  43. package/dist/cjs/utilities/index.min.cjs.map +1 -1
  44. package/dist/esm/cache/adapters/in-memory/index.min.mjs +1 -1
  45. package/dist/esm/cache/adapters/in-memory/index.min.mjs.map +1 -1
  46. package/dist/esm/cache/adapters/in-memory/index.mjs +6 -3
  47. package/dist/esm/cache/adapters/in-memory/index.mjs.map +1 -1
  48. package/dist/esm/cache/adapters/redis/index.min.mjs +1 -1
  49. package/dist/esm/cache/adapters/redis/index.mjs +5 -3
  50. package/dist/esm/cache/index.min.mjs +1 -1
  51. package/dist/esm/cache/index.mjs +2 -2
  52. package/dist/esm/{chunk-PNZNNUMN.mjs → chunk-26BOI6IL.mjs} +7 -5
  53. package/dist/esm/{chunk-PNZNNUMN.mjs.map → chunk-26BOI6IL.mjs.map} +1 -1
  54. package/dist/esm/{chunk-4JLDXF7T.min.mjs → chunk-AODOD22O.min.mjs} +2 -2
  55. package/dist/esm/chunk-APSDCRY5.min.mjs +32 -0
  56. package/dist/esm/chunk-APSDCRY5.min.mjs.map +1 -0
  57. package/dist/esm/{chunk-MDQKODYQ.mjs → chunk-CEYT5YBA.mjs} +204 -348
  58. package/dist/esm/chunk-CEYT5YBA.mjs.map +1 -0
  59. package/dist/esm/chunk-CU2HU5UE.min.mjs +2 -0
  60. package/dist/esm/chunk-CU2HU5UE.min.mjs.map +1 -0
  61. package/dist/esm/chunk-DAK7OKSH.min.mjs +2 -0
  62. package/dist/esm/{chunk-SGZNOYC3.min.mjs.map → chunk-DAK7OKSH.min.mjs.map} +1 -1
  63. package/dist/esm/{chunk-PCAUXBAG.min.mjs → chunk-DAUQA32Q.min.mjs} +2 -2
  64. package/dist/esm/{chunk-JH6EBXY4.mjs → chunk-FQYRVHQT.mjs} +2 -2
  65. package/dist/esm/chunk-NEF3UYFA.mjs +144 -0
  66. package/dist/esm/chunk-NEF3UYFA.mjs.map +1 -0
  67. package/dist/esm/chunk-NNFUYHQ7.mjs +135 -0
  68. package/dist/esm/chunk-NNFUYHQ7.mjs.map +1 -0
  69. package/dist/esm/{chunk-4MXYZS5R.mjs → chunk-PCEHFZ6G.mjs} +9 -5
  70. package/dist/esm/{chunk-4MXYZS5R.mjs.map → chunk-PCEHFZ6G.mjs.map} +1 -1
  71. package/dist/esm/{chunk-B5QQ32YY.min.mjs → chunk-QCCDJLBH.min.mjs} +2 -2
  72. package/dist/esm/{chunk-PQCBVQL6.mjs → chunk-RIXTQQUU.mjs} +2 -2
  73. package/dist/esm/{chunk-Z2TZ3KR7.mjs → chunk-RPPYCWXW.mjs} +2 -2
  74. package/dist/esm/{chunk-AKQBDYUO.mjs → chunk-T2O72JBW.mjs} +3 -3
  75. package/dist/esm/{chunk-TVTYDU2D.mjs → chunk-VQO4MSEC.mjs} +5 -5
  76. package/dist/esm/{chunk-ZGMFFK6Y.min.mjs → chunk-X7VNAGLR.min.mjs} +2 -2
  77. package/dist/esm/chunk-XTXAEBXY.min.mjs +2 -0
  78. package/dist/esm/{chunk-5VW3JAFR.min.mjs.map → chunk-XTXAEBXY.min.mjs.map} +1 -1
  79. package/dist/esm/{chunk-QHLKB47N.min.mjs → chunk-YDQW6ETS.min.mjs} +2 -2
  80. package/dist/esm/chunk-ZDBDR3IB.min.mjs +2 -0
  81. package/dist/esm/chunk-ZDBDR3IB.min.mjs.map +1 -0
  82. package/dist/esm/dbs/adapters/mongodb/index.min.mjs +1 -1
  83. package/dist/esm/dbs/adapters/mongodb/index.min.mjs.map +1 -1
  84. package/dist/esm/dbs/adapters/mongodb/index.mjs +8 -5
  85. package/dist/esm/dbs/adapters/mongodb/index.mjs.map +1 -1
  86. package/dist/esm/dbs/index.min.mjs +1 -1
  87. package/dist/esm/dbs/index.mjs +5 -3
  88. package/dist/esm/errors/index.min.mjs +1 -1
  89. package/dist/esm/errors/index.mjs +1 -1
  90. package/dist/esm/events/adapters/kafka/index.min.mjs +1 -1
  91. package/dist/esm/events/adapters/kafka/index.mjs +4 -2
  92. package/dist/esm/events/adapters/rabbitmq/index.min.mjs +1 -1
  93. package/dist/esm/events/adapters/rabbitmq/index.min.mjs.map +1 -1
  94. package/dist/esm/events/adapters/rabbitmq/index.mjs +7 -3
  95. package/dist/esm/events/adapters/rabbitmq/index.mjs.map +1 -1
  96. package/dist/esm/index.min.mjs +1 -1
  97. package/dist/esm/index.mjs +1 -1
  98. package/dist/esm/instance/index.min.mjs +1 -1
  99. package/dist/esm/instance/index.mjs +1 -1
  100. package/dist/esm/{introspection-32BRYKYY.mjs → introspection-FGDVYTPP.mjs} +3 -3
  101. package/dist/esm/introspection-UDWDS6DV.min.mjs +2 -0
  102. package/dist/esm/jobs/adapters/redis/index.min.mjs +1 -1
  103. package/dist/esm/jobs/adapters/redis/index.min.mjs.map +1 -1
  104. package/dist/esm/jobs/adapters/redis/index.mjs +10 -6
  105. package/dist/esm/jobs/adapters/redis/index.mjs.map +1 -1
  106. package/dist/esm/orm/adapters/in-memory/index.min.mjs +1 -1
  107. package/dist/esm/orm/adapters/in-memory/index.mjs +4 -3
  108. package/dist/esm/orm/adapters/json/index.min.mjs +1 -1
  109. package/dist/esm/orm/adapters/json/index.min.mjs.map +1 -1
  110. package/dist/esm/orm/adapters/json/index.mjs +6 -5
  111. package/dist/esm/orm/adapters/json/index.mjs.map +1 -1
  112. package/dist/esm/orm/adapters/mongodb/index.min.mjs +1 -1
  113. package/dist/esm/orm/adapters/mongodb/index.min.mjs.map +1 -1
  114. package/dist/esm/orm/adapters/mongodb/index.mjs +6 -4
  115. package/dist/esm/orm/adapters/mongodb/index.mjs.map +1 -1
  116. package/dist/esm/orm/adapters/postgresql/index.min.mjs +2 -2
  117. package/dist/esm/orm/adapters/postgresql/index.min.mjs.map +1 -1
  118. package/dist/esm/orm/adapters/postgresql/index.mjs +8 -5
  119. package/dist/esm/orm/adapters/postgresql/index.mjs.map +1 -1
  120. package/dist/esm/orm/index.min.mjs +1 -1
  121. package/dist/esm/orm/index.mjs +3 -3
  122. package/dist/esm/server/adapters/express/index.min.mjs +1 -1
  123. package/dist/esm/server/adapters/express/index.min.mjs.map +1 -1
  124. package/dist/esm/server/adapters/express/index.mjs +7 -3
  125. package/dist/esm/server/adapters/express/index.mjs.map +1 -1
  126. package/dist/esm/server/adapters/fastify/index.min.mjs +1 -1
  127. package/dist/esm/server/adapters/fastify/index.min.mjs.map +1 -1
  128. package/dist/esm/server/adapters/fastify/index.mjs +7 -3
  129. package/dist/esm/server/adapters/fastify/index.mjs.map +1 -1
  130. package/dist/esm/server/index.min.mjs +1 -1
  131. package/dist/esm/server/index.mjs +1 -1
  132. package/dist/esm/utilities/index.min.mjs +1 -1
  133. package/dist/esm/utilities/index.mjs +5 -4
  134. package/dist/esm/validations/index.min.mjs +1 -1
  135. package/dist/esm/validations/index.mjs +1 -1
  136. package/dist/types/{base-DVr0fHil.d.ts → base-qDndMBf8.d.ts} +9 -3
  137. package/dist/types/cache/adapters/in-memory/index.js +7 -4
  138. package/dist/types/cache/adapters/redis/index.js +5 -3
  139. package/dist/types/cache/index.js +2 -2
  140. package/dist/types/{chunk-NJ2FHI3U.js → chunk-35CDCTLR.js} +4 -4
  141. package/dist/types/{chunk-XGGGAEET.js → chunk-4YQA5GPT.js} +8 -4
  142. package/dist/types/{chunk-65EHKCDZ.js → chunk-AQIV47BY.js} +6 -4
  143. package/dist/types/{chunk-YTY3EFNB.js → chunk-BKDWUJRG.js} +203 -347
  144. package/dist/types/{chunk-JQ2FWX4W.js → chunk-DA2VYP7D.js} +1 -1
  145. package/dist/types/{chunk-3TKJGSCZ.js → chunk-GDMGPX4C.js} +1 -1
  146. package/dist/types/chunk-H5V6ADFD.js +134 -0
  147. package/dist/types/{chunk-3M4PBZAQ.js → chunk-OOKJEMQI.js} +2 -2
  148. package/dist/types/chunk-PPD4WDG6.js +143 -0
  149. package/dist/types/{chunk-OHFTQGQG.js → chunk-T7K7PO6G.js} +1 -1
  150. package/dist/types/dbs/adapters/mongodb/index.js +8 -5
  151. package/dist/types/dbs/index.js +5 -3
  152. package/dist/types/errors/index.js +1 -1
  153. package/dist/types/events/adapters/kafka/index.js +4 -2
  154. package/dist/types/events/adapters/rabbitmq/index.js +7 -3
  155. package/dist/types/index.js +1 -1
  156. package/dist/types/instance/index.js +1 -1
  157. package/dist/types/{introspection-VOIU3XE6.js → introspection-FSNS33CQ.js} +2 -2
  158. package/dist/types/jobs/adapters/redis/index.js +10 -6
  159. package/dist/types/orm/adapters/in-memory/index.js +4 -3
  160. package/dist/types/orm/adapters/json/index.js +6 -5
  161. package/dist/types/orm/adapters/mongodb/index.js +6 -4
  162. package/dist/types/orm/adapters/postgresql/index.js +8 -5
  163. package/dist/types/orm/index.js +3 -3
  164. package/dist/types/server/adapters/express/index.d.ts +1 -1
  165. package/dist/types/server/adapters/express/index.js +7 -3
  166. package/dist/types/server/adapters/fastify/index.d.ts +1 -1
  167. package/dist/types/server/adapters/fastify/index.js +7 -3
  168. package/dist/types/server/index.d.ts +2 -2
  169. package/dist/types/server/index.js +1 -1
  170. package/dist/types/utilities/index.d.ts +1 -2
  171. package/dist/types/utilities/index.js +5 -4
  172. package/dist/types/validations/index.js +1 -1
  173. package/package.json +1 -1
  174. package/dist/esm/chunk-5VW3JAFR.min.mjs +0 -2
  175. package/dist/esm/chunk-FLAPYQUT.min.mjs +0 -32
  176. package/dist/esm/chunk-FLAPYQUT.min.mjs.map +0 -1
  177. package/dist/esm/chunk-MDQKODYQ.mjs.map +0 -1
  178. package/dist/esm/chunk-SGZNOYC3.min.mjs +0 -2
  179. package/dist/esm/introspection-A72WMWE3.min.mjs +0 -2
  180. /package/dist/esm/{chunk-4JLDXF7T.min.mjs.map → chunk-AODOD22O.min.mjs.map} +0 -0
  181. /package/dist/esm/{chunk-PCAUXBAG.min.mjs.map → chunk-DAUQA32Q.min.mjs.map} +0 -0
  182. /package/dist/esm/{chunk-JH6EBXY4.mjs.map → chunk-FQYRVHQT.mjs.map} +0 -0
  183. /package/dist/esm/{chunk-B5QQ32YY.min.mjs.map → chunk-QCCDJLBH.min.mjs.map} +0 -0
  184. /package/dist/esm/{chunk-PQCBVQL6.mjs.map → chunk-RIXTQQUU.mjs.map} +0 -0
  185. /package/dist/esm/{chunk-Z2TZ3KR7.mjs.map → chunk-RPPYCWXW.mjs.map} +0 -0
  186. /package/dist/esm/{chunk-AKQBDYUO.mjs.map → chunk-T2O72JBW.mjs.map} +0 -0
  187. /package/dist/esm/{chunk-TVTYDU2D.mjs.map → chunk-VQO4MSEC.mjs.map} +0 -0
  188. /package/dist/esm/{chunk-ZGMFFK6Y.min.mjs.map → chunk-X7VNAGLR.min.mjs.map} +0 -0
  189. /package/dist/esm/{chunk-QHLKB47N.min.mjs.map → chunk-YDQW6ETS.min.mjs.map} +0 -0
  190. /package/dist/esm/{introspection-32BRYKYY.mjs.map → introspection-FGDVYTPP.mjs.map} +0 -0
  191. /package/dist/esm/{introspection-A72WMWE3.min.mjs.map → introspection-UDWDS6DV.min.mjs.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  EquippedError,
3
3
  Instance
4
- } from "./chunk-YTY3EFNB.js";
4
+ } from "./chunk-BKDWUJRG.js";
5
5
 
6
6
  // src/orm/errors/validation.ts
7
7
  var OrmValidationError = class extends EquippedError {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Instance
3
- } from "./chunk-YTY3EFNB.js";
3
+ } from "./chunk-BKDWUJRG.js";
4
4
 
5
5
  // src/cache/adapters/base.ts
6
6
  var Cache = class {
@@ -0,0 +1,134 @@
1
+ import {
2
+ EquippedError,
3
+ Instance
4
+ } from "./chunk-BKDWUJRG.js";
5
+ import {
6
+ __export
7
+ } from "./chunk-MLKGABMK.js";
8
+
9
+ // src/utilities/authProviders.ts
10
+ var authProviders_exports = {};
11
+ __export(authProviders_exports, {
12
+ signinWithApple: () => signinWithApple,
13
+ signinWithFacebook: () => signinWithFacebook,
14
+ signinWithGoogle: () => signinWithGoogle
15
+ });
16
+ import axios from "axios";
17
+ import jwt from "jsonwebtoken";
18
+ import jwksClient from "jwks-rsa";
19
+ var signinWithGoogle = async (idToken) => {
20
+ const authUrl = `https://oauth2.googleapis.com/tokeninfo?id_token=${idToken}`;
21
+ const { data } = await axios.get(authUrl).catch((err) => {
22
+ throw new EquippedError("Failed to sign in with google", { idToken }, err);
23
+ });
24
+ data.first_name = data.given_name;
25
+ data.last_name = data.family_name;
26
+ return data;
27
+ };
28
+ var signinWithApple = async (idToken) => {
29
+ try {
30
+ const APPLE_BASE = "https://appleid.apple.com";
31
+ const json = jwt.decode(idToken, { complete: true });
32
+ if (!json?.header) throw new EquippedError("Missing JWT header", { idToken, json });
33
+ const { kid, alg } = json.header;
34
+ const publicKey = await jwksClient({ jwksUri: `${APPLE_BASE}/auth/keys`, cache: true }).getSigningKey(kid).then((key) => key.getPublicKey()).catch(() => null);
35
+ if (!publicKey) throw new EquippedError("no publicKey", { idToken, publicKey, json });
36
+ const data = jwt.verify(idToken, publicKey, { algorithms: [alg] });
37
+ if (!data) throw new EquippedError("no data", { idToken, data });
38
+ if (data.iss !== APPLE_BASE) throw new EquippedError("iss doesnt match", { idToken, data });
39
+ if (data.exp * 1e3 < Date.now()) throw new EquippedError("expired idToken", { idToken, data });
40
+ return data;
41
+ } catch (err) {
42
+ throw new EquippedError("Failed to sign in with apple", { idToken }, err);
43
+ }
44
+ };
45
+ var signinWithFacebook = async (accessToken, fields = []) => {
46
+ fields = [.../* @__PURE__ */ new Set([...fields, "name", "picture", "email"])];
47
+ const { data } = await axios.request({
48
+ method: "get",
49
+ url: "https://graph.facebook.com/v15.0/me",
50
+ params: {
51
+ fields: fields.join(","),
52
+ access_token: accessToken
53
+ }
54
+ }).catch((err) => {
55
+ throw new EquippedError("Failed to sign in with facebook", { accessToken, fields }, err);
56
+ });
57
+ const isValidData = fields.every((key) => key in data);
58
+ if (!isValidData) throw new EquippedError("Incomplete scope for access token", { accessToken, fields, data });
59
+ data.email_verified = "true";
60
+ return data;
61
+ };
62
+
63
+ // src/utilities/hash.ts
64
+ var hash_exports = {};
65
+ __export(hash_exports, {
66
+ compare: () => compare2,
67
+ hash: () => hash2
68
+ });
69
+ import * as bcrypt from "bcryptjs";
70
+ var hash2 = async (password) => {
71
+ password = password.trim();
72
+ if (!password) return "";
73
+ return await bcrypt.hash(password, Instance.get().settings.utils.hashSaltRounds);
74
+ };
75
+ var compare2 = async (plainPassword, hashed) => {
76
+ plainPassword = plainPassword.trim();
77
+ if (!plainPassword && plainPassword === hashed) return true;
78
+ return await bcrypt.compare(plainPassword, hashed);
79
+ };
80
+
81
+ // src/utilities/json.ts
82
+ var parseJSONValue = (data) => {
83
+ try {
84
+ if (data?.constructor?.name !== "String") return data;
85
+ return JSON.parse(data);
86
+ } catch {
87
+ return data;
88
+ }
89
+ };
90
+
91
+ // src/utilities/media.ts
92
+ import { parseBuffer } from "music-metadata";
93
+ var getMediaDuration = async (buffer) => {
94
+ try {
95
+ const meta = await parseBuffer(buffer);
96
+ return meta.format.duration ?? 0;
97
+ } catch {
98
+ return 0;
99
+ }
100
+ };
101
+
102
+ // src/utilities/random.ts
103
+ var random_exports = {};
104
+ __export(random_exports, {
105
+ number: () => number,
106
+ string: () => string
107
+ });
108
+ import crypto from "crypto";
109
+ function string(length = 20) {
110
+ return crypto.randomBytes(length).toString("hex").slice(0, length);
111
+ }
112
+ function number(min = 0, max = 2 ** 48 - 1) {
113
+ return crypto.randomInt(min, max);
114
+ }
115
+
116
+ // src/utilities/retry.ts
117
+ var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
118
+ var retry = async (cb, tries, waitTimeInMs) => {
119
+ if (tries <= 0) throw new EquippedError("out of tries", { tries, waitTimeInMs });
120
+ const result = await cb();
121
+ if (result.done === true) return result.value;
122
+ await sleep(waitTimeInMs);
123
+ return await retry(cb, tries - 1, waitTimeInMs);
124
+ };
125
+
126
+ export {
127
+ authProviders_exports,
128
+ hash_exports,
129
+ parseJSONValue,
130
+ getMediaDuration,
131
+ random_exports,
132
+ sleep,
133
+ retry
134
+ };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  KafkaEventBus
3
- } from "./chunk-XGGGAEET.js";
3
+ } from "./chunk-4YQA5GPT.js";
4
4
  import {
5
5
  Instance
6
- } from "./chunk-YTY3EFNB.js";
6
+ } from "./chunk-BKDWUJRG.js";
7
7
 
8
8
  // src/dbs/adapters/base/db.ts
9
9
  var Db = class {
@@ -0,0 +1,143 @@
1
+ // src/utilities/configurable.ts
2
+ import { v } from "valleyed";
3
+ function configurable(pipeFn, base) {
4
+ const pipe = pipeFn();
5
+ v.compile(pipe);
6
+ class Configurable extends base {
7
+ constructor(config, ...baseArgs) {
8
+ super(...baseArgs);
9
+ this.config = config;
10
+ }
11
+ static create(input, ...args) {
12
+ const r = v.validate(pipe, input);
13
+ if (!r.valid) throw r.error;
14
+ return new this(r.value, ...args);
15
+ }
16
+ }
17
+ return Configurable;
18
+ }
19
+ if (void 0) {
20
+ const { describe, test, expect, expectTypeOf } = void 0;
21
+ const { v: v2 } = await null;
22
+ const testPipe = () => v2.object({
23
+ host: v2.string(),
24
+ port: v2.number()
25
+ });
26
+ class TestBase {
27
+ baseValue;
28
+ constructor() {
29
+ this.baseValue = "base";
30
+ }
31
+ }
32
+ class TestBaseWithArgs {
33
+ label;
34
+ constructor(label) {
35
+ this.label = label;
36
+ }
37
+ }
38
+ describe("configurable", () => {
39
+ test("validation runs in static create before constructor body executes", () => {
40
+ let constructorRan = false;
41
+ const Wrapped = configurable(testPipe, TestBase);
42
+ class MyClass extends Wrapped {
43
+ constructor(config) {
44
+ super(config);
45
+ constructorRan = true;
46
+ }
47
+ }
48
+ expect(() => MyClass.create({ host: 123, port: "bad" })).toThrow();
49
+ expect(constructorRan).toBe(false);
50
+ MyClass.create({ host: "localhost", port: 3e3 });
51
+ expect(constructorRan).toBe(true);
52
+ });
53
+ test("constructor receives validated value", () => {
54
+ const Wrapped = configurable(testPipe, TestBase);
55
+ let receivedConfig;
56
+ class MyClass extends Wrapped {
57
+ constructor(config) {
58
+ super(config);
59
+ receivedConfig = this.config;
60
+ }
61
+ }
62
+ MyClass.create({ host: "localhost", port: 3e3 });
63
+ expect(receivedConfig).toEqual({ host: "localhost", port: 3e3 });
64
+ });
65
+ test("external new is a compile error", () => {
66
+ const Wrapped = configurable(testPipe, TestBase);
67
+ class MyClass extends Wrapped {
68
+ constructor(config) {
69
+ super(config);
70
+ }
71
+ }
72
+ void (() => new MyClass({ host: "localhost", port: 3e3 }));
73
+ });
74
+ test("static Config resolves to PipeOutput<P> at the type level", () => {
75
+ const Wrapped = configurable(testPipe, TestBase);
76
+ class MyClass extends Wrapped {
77
+ constructor(config) {
78
+ super(config);
79
+ }
80
+ }
81
+ expectTypeOf().toEqualTypeOf();
82
+ expect(MyClass.create).toBeTypeOf("function");
83
+ });
84
+ test("ConstructorParameters<This>-based extras inference works for non-zero-arg leaf signatures", () => {
85
+ const Wrapped = configurable(testPipe, TestBase);
86
+ class MyClass extends Wrapped {
87
+ extra;
88
+ constructor(config, extra) {
89
+ super(config);
90
+ this.extra = extra;
91
+ }
92
+ }
93
+ const instance = MyClass.create({ host: "localhost", port: 3e3 }, 42);
94
+ expect(instance.extra).toBe(42);
95
+ expectTypeOf(instance).toHaveProperty("extra");
96
+ expectTypeOf(instance.extra).toEqualTypeOf();
97
+ void (() => MyClass.create({ host: "localhost", port: 3e3 }, "not-a-number"));
98
+ });
99
+ test("base-args forwarding works for non-zero-arg bases", () => {
100
+ const Wrapped = configurable(testPipe, TestBaseWithArgs);
101
+ class MyClass extends Wrapped {
102
+ constructor(config, label) {
103
+ super(config, label);
104
+ }
105
+ }
106
+ const instance = MyClass.create({ host: "localhost", port: 3e3 }, "test-label");
107
+ expect(instance.label).toBe("test-label");
108
+ });
109
+ test("config is accessible as protected readonly on instances", () => {
110
+ const Wrapped = configurable(testPipe, TestBase);
111
+ class MyClass extends Wrapped {
112
+ constructor(config) {
113
+ super(config);
114
+ }
115
+ getHost() {
116
+ return this.config.host;
117
+ }
118
+ }
119
+ const instance = MyClass.create({ host: "localhost", port: 3e3 });
120
+ expect(instance.getHost()).toBe("localhost");
121
+ });
122
+ test("accepts an abstract base class", () => {
123
+ class AbstractBase {
124
+ }
125
+ const Wrapped = configurable(testPipe, AbstractBase);
126
+ class Concrete extends Wrapped {
127
+ constructor(config) {
128
+ super(config);
129
+ }
130
+ greet() {
131
+ return `hello from ${this.config.host}`;
132
+ }
133
+ }
134
+ const instance = Concrete.create({ host: "localhost", port: 3e3 });
135
+ expect(instance.greet()).toBe("hello from localhost");
136
+ expectTypeOf(instance).toHaveProperty("config");
137
+ });
138
+ });
139
+ }
140
+
141
+ export {
142
+ configurable
143
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EquippedError
3
- } from "./chunk-YTY3EFNB.js";
3
+ } from "./chunk-BKDWUJRG.js";
4
4
 
5
5
  // src/orm/errors/introspection.ts
6
6
  var OrmIntrospectionError = class extends EquippedError {
@@ -2,13 +2,16 @@ import {
2
2
  Db,
3
3
  QueryKeys,
4
4
  dbChangeConfigPipe
5
- } from "../../../chunk-3M4PBZAQ.js";
6
- import "../../../chunk-XGGGAEET.js";
5
+ } from "../../../chunk-OOKJEMQI.js";
6
+ import "../../../chunk-4YQA5GPT.js";
7
7
  import {
8
- EquippedError,
9
- Instance,
10
8
  retry
11
- } from "../../../chunk-YTY3EFNB.js";
9
+ } from "../../../chunk-H5V6ADFD.js";
10
+ import "../../../chunk-PPD4WDG6.js";
11
+ import {
12
+ EquippedError,
13
+ Instance
14
+ } from "../../../chunk-BKDWUJRG.js";
12
15
  import "../../../chunk-KZKFYO4V.js";
13
16
  import "../../../chunk-MLKGABMK.js";
14
17
 
@@ -6,9 +6,11 @@ import {
6
6
  queryParamsPipe,
7
7
  queryResultsPipe,
8
8
  wrapQueryParams
9
- } from "../chunk-3M4PBZAQ.js";
10
- import "../chunk-XGGGAEET.js";
11
- import "../chunk-YTY3EFNB.js";
9
+ } from "../chunk-OOKJEMQI.js";
10
+ import "../chunk-4YQA5GPT.js";
11
+ import "../chunk-H5V6ADFD.js";
12
+ import "../chunk-PPD4WDG6.js";
13
+ import "../chunk-BKDWUJRG.js";
12
14
  import "../chunk-KZKFYO4V.js";
13
15
  import "../chunk-MLKGABMK.js";
14
16
  export {
@@ -7,7 +7,7 @@ import {
7
7
  RequestError,
8
8
  TokenExpired,
9
9
  ValidationError
10
- } from "../chunk-YTY3EFNB.js";
10
+ } from "../chunk-BKDWUJRG.js";
11
11
  import "../chunk-KZKFYO4V.js";
12
12
  import "../chunk-MLKGABMK.js";
13
13
  export {
@@ -1,8 +1,10 @@
1
1
  import {
2
2
  KafkaEventBus,
3
3
  kafkaConfigPipe
4
- } from "../../../chunk-XGGGAEET.js";
5
- import "../../../chunk-YTY3EFNB.js";
4
+ } from "../../../chunk-4YQA5GPT.js";
5
+ import "../../../chunk-H5V6ADFD.js";
6
+ import "../../../chunk-PPD4WDG6.js";
7
+ import "../../../chunk-BKDWUJRG.js";
6
8
  import "../../../chunk-KZKFYO4V.js";
7
9
  import "../../../chunk-MLKGABMK.js";
8
10
  export {
@@ -1,9 +1,13 @@
1
1
  import {
2
- Instance,
3
- configurable,
4
2
  parseJSONValue,
5
3
  random_exports
6
- } from "../../../chunk-YTY3EFNB.js";
4
+ } from "../../../chunk-H5V6ADFD.js";
5
+ import {
6
+ configurable
7
+ } from "../../../chunk-PPD4WDG6.js";
8
+ import {
9
+ Instance
10
+ } from "../../../chunk-BKDWUJRG.js";
7
11
  import {
8
12
  EventBus
9
13
  } from "../../../chunk-KZKFYO4V.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Instance
3
- } from "./chunk-YTY3EFNB.js";
3
+ } from "./chunk-BKDWUJRG.js";
4
4
  import "./chunk-KZKFYO4V.js";
5
5
  import "./chunk-MLKGABMK.js";
6
6
  export {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Instance
3
- } from "../chunk-YTY3EFNB.js";
3
+ } from "../chunk-BKDWUJRG.js";
4
4
  import "../chunk-KZKFYO4V.js";
5
5
  import "../chunk-MLKGABMK.js";
6
6
  export {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  OrmIntrospectionError
3
- } from "./chunk-OHFTQGQG.js";
4
- import "./chunk-YTY3EFNB.js";
3
+ } from "./chunk-T7K7PO6G.js";
4
+ import "./chunk-BKDWUJRG.js";
5
5
  import "./chunk-KZKFYO4V.js";
6
6
  import "./chunk-MLKGABMK.js";
7
7
  export {
@@ -1,16 +1,20 @@
1
1
  import {
2
2
  RedisCache,
3
3
  redisConfigPipe
4
- } from "../../../chunk-65EHKCDZ.js";
5
- import "../../../chunk-3TKJGSCZ.js";
4
+ } from "../../../chunk-AQIV47BY.js";
5
+ import {
6
+ random_exports
7
+ } from "../../../chunk-H5V6ADFD.js";
8
+ import {
9
+ configurable
10
+ } from "../../../chunk-PPD4WDG6.js";
11
+ import "../../../chunk-GDMGPX4C.js";
6
12
  import {
7
13
  Job
8
14
  } from "../../../chunk-LN3A6R4Y.js";
9
15
  import {
10
- Instance,
11
- configurable,
12
- random_exports
13
- } from "../../../chunk-YTY3EFNB.js";
16
+ Instance
17
+ } from "../../../chunk-BKDWUJRG.js";
14
18
  import "../../../chunk-KZKFYO4V.js";
15
19
  import "../../../chunk-MLKGABMK.js";
16
20
 
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  InMemoryAdapter
3
- } from "../../../chunk-NJ2FHI3U.js";
4
- import "../../../chunk-JQ2FWX4W.js";
5
- import "../../../chunk-YTY3EFNB.js";
3
+ } from "../../../chunk-35CDCTLR.js";
4
+ import "../../../chunk-PPD4WDG6.js";
5
+ import "../../../chunk-DA2VYP7D.js";
6
+ import "../../../chunk-BKDWUJRG.js";
6
7
  import "../../../chunk-KZKFYO4V.js";
7
8
  import "../../../chunk-MLKGABMK.js";
8
9
  export {
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  InMemoryAdapter
3
- } from "../../../chunk-NJ2FHI3U.js";
4
- import {
5
- OrmAdapter
6
- } from "../../../chunk-JQ2FWX4W.js";
3
+ } from "../../../chunk-35CDCTLR.js";
7
4
  import {
8
5
  configurable
9
- } from "../../../chunk-YTY3EFNB.js";
6
+ } from "../../../chunk-PPD4WDG6.js";
7
+ import {
8
+ OrmAdapter
9
+ } from "../../../chunk-DA2VYP7D.js";
10
+ import "../../../chunk-BKDWUJRG.js";
10
11
  import "../../../chunk-KZKFYO4V.js";
11
12
  import "../../../chunk-MLKGABMK.js";
12
13
 
@@ -1,3 +1,6 @@
1
+ import {
2
+ configurable
3
+ } from "../../../chunk-PPD4WDG6.js";
1
4
  import {
2
5
  Filter,
3
6
  FilterGroup,
@@ -11,11 +14,10 @@ import {
11
14
  PushOp,
12
15
  UnsetOp,
13
16
  flattenOps
14
- } from "../../../chunk-JQ2FWX4W.js";
17
+ } from "../../../chunk-DA2VYP7D.js";
15
18
  import {
16
- EquippedError,
17
- configurable
18
- } from "../../../chunk-YTY3EFNB.js";
19
+ EquippedError
20
+ } from "../../../chunk-BKDWUJRG.js";
19
21
  import "../../../chunk-KZKFYO4V.js";
20
22
  import "../../../chunk-MLKGABMK.js";
21
23
 
@@ -1,3 +1,7 @@
1
+ import "../../../chunk-H5V6ADFD.js";
2
+ import {
3
+ configurable
4
+ } from "../../../chunk-PPD4WDG6.js";
1
5
  import {
2
6
  Filter,
3
7
  FilterGroup,
@@ -12,11 +16,10 @@ import {
12
16
  PushOp,
13
17
  UnsetOp,
14
18
  flattenOps
15
- } from "../../../chunk-JQ2FWX4W.js";
19
+ } from "../../../chunk-DA2VYP7D.js";
16
20
  import {
17
- EquippedError,
18
- configurable
19
- } from "../../../chunk-YTY3EFNB.js";
21
+ EquippedError
22
+ } from "../../../chunk-BKDWUJRG.js";
20
23
  import "../../../chunk-KZKFYO4V.js";
21
24
  import "../../../chunk-MLKGABMK.js";
22
25
 
@@ -1109,7 +1112,7 @@ var PostgresAdapter = class extends configurable(postgresqlConnectionPipe, OrmAd
1109
1112
  await this.#getClient().query(`ALTER TABLE "${change.table}" DROP CONSTRAINT "${change.name}"`);
1110
1113
  }
1111
1114
  async introspect() {
1112
- const { OrmIntrospectionError } = await import("../../../introspection-VOIU3XE6.js");
1115
+ const { OrmIntrospectionError } = await import("../../../introspection-FSNS33CQ.js");
1113
1116
  const client = this.#getClient();
1114
1117
  const tablesResult = await client.query(`
1115
1118
  SELECT table_name FROM information_schema.tables
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OrmIntrospectionError
3
- } from "../chunk-OHFTQGQG.js";
3
+ } from "../chunk-T7K7PO6G.js";
4
4
  import {
5
5
  ComputedField,
6
6
  Field,
@@ -33,11 +33,11 @@ import {
33
33
  set,
34
34
  toFieldName,
35
35
  unset
36
- } from "../chunk-JQ2FWX4W.js";
36
+ } from "../chunk-DA2VYP7D.js";
37
37
  import {
38
38
  EquippedError,
39
39
  Instance
40
- } from "../chunk-YTY3EFNB.js";
40
+ } from "../chunk-BKDWUJRG.js";
41
41
  import "../chunk-KZKFYO4V.js";
42
42
  import "../chunk-MLKGABMK.js";
43
43
 
@@ -1,4 +1,4 @@
1
- import { B as BaseRequestAuthMethod, S as Server, R as RawResponder } from '../../../base-DVr0fHil.js';
1
+ import { B as BaseRequestAuthMethod, S as Server, R as RawResponder } from '../../../base-qDndMBf8.js';
2
2
  import { A as AuthUser } from '../../../overrides-6Hxg764S.js';
3
3
  import { R as Request, a as Response, M as MethodsEnum } from '../../../requestError-DdaL8hc3.js';
4
4
  import { EventBus } from '../../../events/index.js';
@@ -1,12 +1,16 @@
1
+ import {
2
+ getMediaDuration
3
+ } from "../../../chunk-H5V6ADFD.js";
4
+ import {
5
+ configurable
6
+ } from "../../../chunk-PPD4WDG6.js";
1
7
  import {
2
8
  Instance,
3
9
  Request,
4
10
  Server,
5
11
  StatusCodes,
6
- configurable,
7
- getMediaDuration,
8
12
  serverConfigPipe
9
- } from "../../../chunk-YTY3EFNB.js";
13
+ } from "../../../chunk-BKDWUJRG.js";
10
14
  import "../../../chunk-KZKFYO4V.js";
11
15
  import "../../../chunk-MLKGABMK.js";
12
16
 
@@ -1,4 +1,4 @@
1
- import { B as BaseRequestAuthMethod, S as Server, R as RawResponder } from '../../../base-DVr0fHil.js';
1
+ import { B as BaseRequestAuthMethod, S as Server, R as RawResponder } from '../../../base-qDndMBf8.js';
2
2
  import { A as AuthUser } from '../../../overrides-6Hxg764S.js';
3
3
  import { R as Request, a as Response, M as MethodsEnum } from '../../../requestError-DdaL8hc3.js';
4
4
  import { EventBus } from '../../../events/index.js';
@@ -1,13 +1,17 @@
1
+ import {
2
+ getMediaDuration
3
+ } from "../../../chunk-H5V6ADFD.js";
4
+ import {
5
+ configurable
6
+ } from "../../../chunk-PPD4WDG6.js";
1
7
  import {
2
8
  Instance,
3
9
  Request,
4
10
  Server,
5
11
  StatusCodes,
6
12
  ValidationError,
7
- configurable,
8
- getMediaDuration,
9
13
  serverConfigPipe
10
- } from "../../../chunk-YTY3EFNB.js";
14
+ } from "../../../chunk-BKDWUJRG.js";
11
15
  import "../../../chunk-KZKFYO4V.js";
12
16
  import "../../../chunk-MLKGABMK.js";
13
17
 
@@ -1,5 +1,5 @@
1
- import { B as BaseRequestAuthMethod } from '../base-DVr0fHil.js';
2
- export { O as OnJoinFn, R as RawResponder, b as RawResponseHandled, c as RawResponseHandler, f as Router, S as Server, a as ServerConfig, d as ServerNotFoundContext, e as ServerNotFoundHandler, g as SocketCallbacks, h as SocketEmitter, s as serverConfigPipe } from '../base-DVr0fHil.js';
1
+ import { B as BaseRequestAuthMethod } from '../base-qDndMBf8.js';
2
+ export { O as OnJoinFn, R as RawResponder, b as RawResponseHandled, c as RawResponseHandler, h as Router, S as Server, d as ServerBeforeListenContext, e as ServerBeforeListenHandler, a as ServerConfig, f as ServerNotFoundContext, g as ServerNotFoundHandler, i as SocketCallbacks, j as SocketEmitter, s as serverConfigPipe } from '../base-qDndMBf8.js';
3
3
  import { A as AuthUser } from '../overrides-6Hxg764S.js';
4
4
  import { R as Request, c as RouteDefToReqRes, d as RouteDef, e as Route } from '../requestError-DdaL8hc3.js';
5
5
  export { C as CookieVal, h as DefaultCookies, D as DefaultHeaders, I as IncomingFile, k as MergeRouteDefs, f as Methods, M as MethodsEnum, a as Response, i as RouteConfig, l as RouteDefHandler, j as RouterConfig, S as StatusCodes, g as StatusCodesEnum, o as makeErrorMiddleware, m as makeMiddleware, n as makeResponseMiddleware } from '../requestError-DdaL8hc3.js';
@@ -15,7 +15,7 @@ import {
15
15
  makeResponseMiddleware,
16
16
  requireAuthUser,
17
17
  serverConfigPipe
18
- } from "../chunk-YTY3EFNB.js";
18
+ } from "../chunk-BKDWUJRG.js";
19
19
  import "../chunk-KZKFYO4V.js";
20
20
  import "../chunk-MLKGABMK.js";
21
21
  export {
@@ -57,7 +57,6 @@ declare namespace hash$1 {
57
57
  }
58
58
 
59
59
  declare const parseJSONValue: (data: any) => any;
60
- declare function parseJSONObject<T extends object>(data: T): T;
61
60
 
62
61
  declare const getMediaDuration: (buffer: Buffer) => Promise<number>;
63
62
 
@@ -78,4 +77,4 @@ declare const retry: <T>(cb: () => Promise<{
78
77
  done: false;
79
78
  }>, tries: number, waitTimeInMs: number) => any;
80
79
 
81
- export { authProviders as AuthProviders, hash$1 as Hash, random as Random, configurable, getMediaDuration, parseJSONObject, parseJSONValue, retry, sleep };
80
+ export { authProviders as AuthProviders, hash$1 as Hash, random as Random, configurable, getMediaDuration, parseJSONValue, retry, sleep };