@luminix/core 0.0.1-beta.15 → 0.0.1-beta.153

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 (102) hide show
  1. package/dist/core.js +1007 -1920
  2. package/package.json +5 -9
  3. package/types/contracts/Builder.d.ts +46 -0
  4. package/types/contracts/ModelCollection.d.ts +7 -0
  5. package/{dist → types}/contracts/Plugin.d.ts +3 -3
  6. package/{dist → types}/contracts/Relation/BelongsTo.d.ts +3 -5
  7. package/{dist → types}/contracts/Relation/BelongsToMany.d.ts +7 -9
  8. package/{dist → types}/contracts/Relation/HasMany.d.ts +6 -7
  9. package/{dist → types}/contracts/Relation/HasOne.d.ts +3 -4
  10. package/{dist → types}/contracts/Relation/HasOneOrMany.d.ts +0 -1
  11. package/{dist → types}/contracts/Relation/MorphMany.d.ts +6 -7
  12. package/{dist → types}/contracts/Relation/MorphOne.d.ts +3 -4
  13. package/{dist → types}/contracts/Relation/MorphOneOrMany.d.ts +0 -1
  14. package/{dist → types}/contracts/Relation/MorphTo.d.ts +0 -1
  15. package/types/contracts/Relation/MorphToMany.d.ts +8 -0
  16. package/{dist → types}/contracts/Relation.d.ts +12 -9
  17. package/types/extensions.d.ts +10 -0
  18. package/types/facades/App.d.ts +8 -0
  19. package/types/facades/Auth.d.ts +7 -0
  20. package/types/facades/Config.d.ts +7 -0
  21. package/types/facades/Error.d.ts +10 -0
  22. package/types/facades/Http.d.ts +8 -0
  23. package/types/facades/Log.d.ts +7 -0
  24. package/types/facades/Model.d.ts +8 -0
  25. package/types/facades/Route.d.ts +8 -0
  26. package/types/helpers/app.d.ts +4 -0
  27. package/{dist → types}/helpers/auth.d.ts +0 -1
  28. package/types/helpers/collect.d.ts +2 -0
  29. package/{dist → types}/helpers/config.d.ts +0 -1
  30. package/{dist → types}/helpers/error.d.ts +0 -1
  31. package/types/helpers/log.d.ts +5 -0
  32. package/{dist → types}/helpers/model.d.ts +2 -3
  33. package/{dist → types}/helpers/route.d.ts +2 -2
  34. package/types/index.d.ts +26 -0
  35. package/types/mixins/BaseModel.d.ts +7 -0
  36. package/types/providers/LuminixServiceProvider.d.ts +8 -0
  37. package/types/services/AuthService.d.ts +18 -0
  38. package/{dist/facades/Error.d.ts → types/services/ErrorService.d.ts} +2 -6
  39. package/types/services/HttpService.d.ts +21 -0
  40. package/{dist/facades/Log.d.ts → types/services/LogService.d.ts} +2 -4
  41. package/types/services/ModelService.d.ts +21 -0
  42. package/types/services/RouteService.d.ts +21 -0
  43. package/{dist → types}/support/model.d.ts +1 -1
  44. package/types/types/App.d.ts +88 -0
  45. package/{dist → types}/types/Auth.d.ts +0 -1
  46. package/types/types/Builder.d.ts +46 -0
  47. package/{dist → types}/types/Config.d.ts +4 -2
  48. package/types/types/Error.d.ts +17 -0
  49. package/types/types/Http.d.ts +20 -0
  50. package/{dist → types}/types/Model.d.ts +36 -28
  51. package/{dist → types}/types/Relation.d.ts +1 -3
  52. package/types/types/Route.d.ts +28 -0
  53. package/{dist → types}/types/Support.d.ts +3 -2
  54. package/.eslintignore +0 -3
  55. package/.eslintrc.cjs +0 -39
  56. package/dist/contracts/Builder.d.ts +0 -53
  57. package/dist/contracts/Collection.d.ts +0 -190
  58. package/dist/contracts/ModelCollection.d.ts +0 -9
  59. package/dist/contracts/PropertyBag.d.ts +0 -21
  60. package/dist/contracts/Relation/MorphToMany.d.ts +0 -16
  61. package/dist/facades/App.d.ts +0 -38
  62. package/dist/facades/Auth.d.ts +0 -14
  63. package/dist/facades/Model.d.ts +0 -41
  64. package/dist/facades/Route.d.ts +0 -32
  65. package/dist/helpers/app.d.ts +0 -5
  66. package/dist/helpers/collect.d.ts +0 -1
  67. package/dist/helpers/log.d.ts +0 -5
  68. package/dist/index.d.ts +0 -24
  69. package/dist/mixins/BaseModel.d.ts +0 -5
  70. package/dist/mixins/HasEvents.d.ts +0 -15
  71. package/dist/mixins/Reducible.d.ts +0 -17
  72. package/dist/support/collection.d.ts +0 -4
  73. package/dist/support/reader.d.ts +0 -2
  74. package/dist/support/searchParams.d.ts +0 -1
  75. package/dist/types/App.d.ts +0 -80
  76. package/dist/types/Builder.d.ts +0 -51
  77. package/dist/types/Collection.d.ts +0 -1804
  78. package/dist/types/Error.d.ts +0 -31
  79. package/dist/types/Event.d.ts +0 -14
  80. package/dist/types/PropertyBag.d.ts +0 -25
  81. package/dist/types/Reducer.d.ts +0 -17
  82. package/dist/types/Route.d.ts +0 -22
  83. package/index.html +0 -13
  84. package/jest.config.js +0 -15
  85. package/tsconfig.json +0 -25
  86. package/vite.config.js +0 -20
  87. /package/{dist → types}/exceptions/AttributeNotFillableException.d.ts +0 -0
  88. /package/{dist → types}/exceptions/FacadeNotFoundException.d.ts +0 -0
  89. /package/{dist → types}/exceptions/MethodNotImplementedException.d.ts +0 -0
  90. /package/{dist → types}/exceptions/ModelInvalidRelatedTypeException.d.ts +0 -0
  91. /package/{dist → types}/exceptions/ModelNotFoundException.d.ts +0 -0
  92. /package/{dist → types}/exceptions/ModelNotPersistedException.d.ts +0 -0
  93. /package/{dist → types}/exceptions/ModelWithoutPrimaryKeyException.d.ts +0 -0
  94. /package/{dist → types}/exceptions/NoEmbedException.d.ts +0 -0
  95. /package/{dist → types}/exceptions/NoInverseRelationException.d.ts +0 -0
  96. /package/{dist → types}/exceptions/NotModelException.d.ts +0 -0
  97. /package/{dist → types}/exceptions/NotReducibleException.d.ts +0 -0
  98. /package/{dist → types}/exceptions/ReducerOverrideException.d.ts +0 -0
  99. /package/{dist → types}/exceptions/RouteNotFoundException.d.ts +0 -0
  100. /package/{dist → types}/exceptions/UnsupportedRelationException.d.ts +0 -0
  101. /package/{dist → types}/types/Log.d.ts +0 -0
  102. /package/{dist → types}/types/Plugin.d.ts +0 -0
package/dist/core.js CHANGED
@@ -1,1024 +1,185 @@
1
- var Ke = Object.defineProperty;
2
- var C = (n) => {
3
- throw TypeError(n);
4
- };
5
- var je = (n, e, t) => e in n ? Ke(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
6
- var m = (n, e, t) => je(n, typeof e != "symbol" ? e + "" : e, t), K = (n, e, t) => e.has(n) || C("Cannot " + t);
7
- var h = (n, e, t) => (K(n, e, "read from private field"), t ? t.call(n) : e.get(n)), j = (n, e, t) => e.has(n) ? C("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(n) : e.set(n, t), D = (n, e, t, r) => (K(n, e, "write to private field"), r ? r.call(n, t) : e.set(n, t), t), U = (n, e, t) => (K(n, e, "access private method"), t);
8
- import d from "lodash";
9
- import { produce as N, isDraftable as Pe } from "immer";
10
- import I, { isAxiosError as Le } from "axios";
11
- var V, X;
12
- class ke extends (X = Error, V = Symbol.toStringTag, X) {
13
- constructor(t) {
14
- super(`[Luminix] Facade "${t}" not found`);
15
- m(this, V, "FacadeNotFoundException");
16
- }
17
- }
18
- class Qe {
19
- constructor(e) {
20
- m(this, "_user");
21
- this.app = e;
22
- }
23
- attempt(e, t = !1, r) {
24
- const i = document.createElement("form");
25
- i.method = "post", i.action = this.app.make("route").url("login"), i.style.display = "none";
26
- const s = this.app.make("config").get("auth.csrf");
27
- if (typeof s == "string") {
28
- const a = document.createElement("input");
29
- a.type = "hidden", a.name = "_token", a.value = s, i.appendChild(a);
30
- }
31
- const u = document.createElement("input");
32
- u.type = "email", u.name = "email", u.value = e.email, i.appendChild(u);
1
+ var ce = Object.defineProperty;
2
+ var de = (n, t, e) => t in n ? ce(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
+ var p = (n, t, e) => de(n, typeof t != "symbol" ? t + "" : t, e);
4
+ import { reader as pe, PropertyBag as R, EventSource as q, Collection as x, Query as T, Obj as m, Str as y, Reducible as ne, isValidationError as ge, Macroable as oe, Client as ye, ServiceProvider as me, MakeFacade as E, Application as fe, Response as we } from "@luminix/support";
5
+ class ve {
6
+ constructor(t, e, i) {
7
+ p(this, "_user");
8
+ this.config = t, this.model = e, this.route = i;
9
+ }
10
+ attempt(t, e = !1, i) {
11
+ const s = document.createElement("form");
12
+ s.method = "post", s.action = this.route.url("login"), s.style.display = "none";
13
+ const c = this.config.get("auth.csrf");
14
+ if (typeof c == "string") {
15
+ const u = document.createElement("input");
16
+ u.type = "hidden", u.name = "_token", u.value = c, s.appendChild(u);
17
+ }
18
+ const g = document.createElement("input");
19
+ g.type = "email", g.name = "email", g.value = t.email, s.appendChild(g);
33
20
  const l = document.createElement("input");
34
- if (l.type = "password", l.name = "password", l.value = e.password, i.appendChild(l), t) {
35
- const a = document.createElement("input");
36
- a.type = "checkbox", a.name = "remember", a.value = "1", a.checked = !0, i.appendChild(a);
21
+ if (l.type = "password", l.name = "password", l.value = t.password, s.appendChild(l), e) {
22
+ const u = document.createElement("input");
23
+ u.type = "checkbox", u.name = "remember", u.value = "1", u.checked = !0, s.appendChild(u);
37
24
  }
38
- r && i.addEventListener("submit", r), document.body.appendChild(i), i.submit();
25
+ i && s.addEventListener("submit", i), document.body.appendChild(s), s.submit();
39
26
  }
40
27
  check() {
41
- return !!this.app.make("config").get("auth.user");
28
+ return !!this.config.get("auth.user");
42
29
  }
43
- logout(e) {
44
- const t = document.createElement("form");
45
- t.method = "post", t.action = this.app.make("route").url("logout"), t.style.display = "none";
46
- const r = this.app.make("config").get("auth.csrf");
47
- if (typeof r == "string") {
48
- const i = document.createElement("input");
49
- i.type = "hidden", i.name = "_token", i.value = r, t.appendChild(i);
30
+ logout(t) {
31
+ const e = document.createElement("form");
32
+ e.method = "post", e.action = this.route.url("logout"), e.style.display = "none";
33
+ const i = this.config.get("auth.csrf");
34
+ if (typeof i == "string") {
35
+ const s = document.createElement("input");
36
+ s.type = "hidden", s.name = "_token", s.value = i, e.appendChild(s);
50
37
  }
51
- document.body.appendChild(t), e && t.addEventListener("submit", e), t.submit();
38
+ document.body.appendChild(e), t && e.addEventListener("submit", t), e.submit();
52
39
  }
53
40
  user() {
54
41
  if (!this._user) {
55
- const { model: e, config: t } = this.app.make(), r = e.make("user"), i = t.get("auth.user");
56
- if (!i)
57
- return null;
58
- this._user = new r(i);
42
+ const t = this.model.make("user"), e = this.config.get("auth.user");
43
+ if (!e)
44
+ return;
45
+ this._user = new t(e);
59
46
  }
60
47
  return this._user;
61
48
  }
62
49
  id() {
63
- var e;
64
- return ((e = this.user()) == null ? void 0 : e.getKey()) || null;
65
- }
66
- }
67
- class Ce {
68
- constructor(e) {
69
- this._debug = e;
70
- }
71
- emergency(...e) {
72
- this._debug && console.error(...e);
73
- }
74
- alert(...e) {
75
- this._debug && console.error(...e);
76
- }
77
- critical(...e) {
78
- this._debug && console.error(...e);
79
- }
80
- error(...e) {
81
- this._debug && console.error(...e);
82
- }
83
- warning(...e) {
84
- this._debug && console.warn(...e);
85
- }
86
- notice(...e) {
87
- this._debug && console.info(...e);
88
- }
89
- info(...e) {
90
- this._debug && console.info(...e);
91
- }
92
- debug(...e) {
93
- this._debug && console.debug(...e);
94
- }
95
- }
96
- class R {
97
- constructor(e) {
98
- m(this, "locked", []);
99
- this.bag = e, Object.freeze(this.bag);
100
- }
101
- get(e, t) {
102
- return d.get(this.bag, e, t);
103
- }
104
- set(e, t) {
105
- if (this.locked.some((r) => e.startsWith(r)))
106
- throw new Error(`Cannot set a locked path "${e}"`);
107
- if (typeof t == "object" && t !== null && this.locked.some((r) => d.has(t, r.slice(e.length + 1))))
108
- throw new Error(`Cannot set a path "${e}" that would override a locked path`);
109
- if (e === ".") {
110
- if (this.locked.length)
111
- throw new Error("Cannot set the root path when there are locked paths");
112
- if (typeof t != "object" || t === null)
113
- throw new TypeError("Value must be an object");
114
- this.bag = N(this.bag, () => t), this.emit("change", {
115
- path: e,
116
- value: t,
117
- type: "set"
118
- });
119
- return;
120
- }
121
- this.bag = N(this.bag, (r) => {
122
- d.set(r, e, t);
123
- }), this.emit("change", {
124
- path: e,
125
- value: t,
126
- type: "set"
127
- });
128
- }
129
- merge(e, t) {
130
- if (typeof t != "object" || t === null)
131
- throw new TypeError("Value must be an object");
132
- if (e === ".") {
133
- if (this.locked.some((i) => d.has(t, i)))
134
- throw new Error(`Cannot merge a path "${e}" that would override a locked path`);
135
- this.bag = N(this.bag, (i) => ({
136
- ...i,
137
- ...t
138
- })), this.emit("change", {
139
- path: e,
140
- value: t,
141
- type: "merge"
142
- });
143
- return;
144
- }
145
- const r = this.get(e);
146
- if (typeof r == "object" && r !== null)
147
- return this.set(e, {
148
- ...r,
149
- ...t
150
- });
151
- if (r === null || typeof r > "u")
152
- return this.set(e, t);
153
- throw new Error(`Cannot merge a non-object path "${e}"`);
154
- }
155
- has(e) {
156
- return d.has(this.bag, e);
157
- }
158
- delete(e) {
159
- if (this.locked.some((t) => e.startsWith(t)))
160
- throw new Error(`Cannot delete a locked path "${e}"`);
161
- this.bag = N(this.bag, (t) => {
162
- d.unset(t, e);
163
- }), this.emit("change", {
164
- path: e,
165
- value: null,
166
- type: "delete"
167
- });
168
- }
169
- lock(e) {
170
- if (!this.has(e))
171
- throw new Error(`Cannot lock a non-existing path "${e}"`);
172
- this.locked.push(e);
173
- }
174
- clone() {
175
- return new R(this.bag);
176
- }
177
- all() {
178
- return this.bag;
179
- }
180
- isEmpty() {
181
- return d.isEmpty(this.bag);
182
- }
183
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
184
- on(e, t) {
185
- return () => null;
186
- }
187
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
188
- once(e, t) {
50
+ var t;
51
+ return ((t = this.user()) == null ? void 0 : t.getKey()) || null;
189
52
  }
190
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
191
- emit(e, t) {
192
- }
193
- }
194
- function S(n) {
195
- var e, t, r, $e, s;
196
- return s = class extends (t = n, e = Symbol.toStringTag, t) {
197
- constructor(...a) {
198
- super(...a);
199
- j(this, r);
200
- m(this, "emitter");
201
- m(this, e, n.name);
202
- this.emitter = U(this, r, $e).call(this);
203
- }
204
- on(a, f) {
205
- if (typeof a != "string")
206
- throw new TypeError("event must be a string");
207
- if (typeof f != "function")
208
- throw new TypeError("callback must be a function");
209
- return this.emitter.on(a, f);
210
- }
211
- once(a, f) {
212
- if (typeof a != "string")
213
- throw new TypeError("event must be a string");
214
- if (typeof f != "function")
215
- throw new TypeError("callback must be a function");
216
- const p = this.emitter.on(a, (w) => {
217
- p(), f(w);
218
- });
219
- }
220
- emit(a, f = {}) {
221
- if (typeof a != "string")
222
- throw new TypeError("event must be a string");
223
- if (typeof f != "object")
224
- throw new TypeError("data must be an object");
225
- this.emitter.emit(a, {
226
- ...f,
227
- source: this
228
- });
229
- }
230
- }, r = new WeakSet(), $e = function() {
231
- return {
232
- emit(a, f) {
233
- for (let p = 0, w = this.events[a] || [], x = w.length; p < x; p++)
234
- w[p](f);
235
- },
236
- events: {},
237
- on(a, f) {
238
- var p;
239
- return ((p = this.events)[a] || (p[a] = [])).push(f), () => {
240
- var w;
241
- this.events[a] = (w = this.events[a]) == null ? void 0 : w.filter((x) => f !== x);
242
- };
243
- }
244
- };
245
- }, s;
246
- }
247
- function J(...n) {
248
- return n.reduce((e, t) => e.flatMap((r) => t.map((i) => [r, i].flat())));
249
- }
250
- function $(n) {
251
- return !(typeof n != "object" || n === null || !Reflect.has(n, "constructor") || Reflect.get(n.constructor, "name") !== "Collection");
252
53
  }
253
- var Y, Z;
254
- class b extends (Z = Error, Y = Symbol.toStringTag, Z) {
54
+ class be {
255
55
  constructor() {
256
- super("[Luminix] Method not implemented.");
257
- m(this, Y, "MethodNotImplementedException");
258
- }
259
- }
260
- function c(n = [], e = P) {
261
- if (!Array.isArray(n))
262
- throw new TypeError("collect() expects an array");
263
- return new (S(e))([...n]);
264
- }
265
- const _ = (n) => {
266
- n.emit("change", {
267
- items: n.all()
268
- });
269
- }, q = (n, e) => Array.isArray(n) ? n[e] ?? null : n.get(e);
270
- var z, O, o;
271
- class P {
272
- constructor(e = []) {
273
- // [Symbol.toStringTag] = 'Collection';
274
- j(this, o);
275
- m(this, z, "Collection");
276
- D(this, o, e);
277
- }
278
- get items() {
279
- return [...h(this, o)];
280
- }
281
- [(O = Symbol.iterator, z = Symbol.toStringTag, O)]() {
282
- return h(this, o)[Symbol.iterator]();
283
- }
284
- all() {
285
- return [...h(this, o)];
286
- }
287
- average(e) {
288
- return typeof e == "string" ? this.avg(e) : this.avg();
289
- }
290
- avg(e) {
291
- return typeof e == "string" ? this.sum(e) / h(this, o).length : this.sum() / h(this, o).length;
292
- }
293
- chunk(e) {
294
- const t = [];
295
- for (let r = 0; r < h(this, o).length; r += e)
296
- t.push(h(this, o).slice(r, r + e));
297
- return c(t.map((r) => c(r)));
298
- }
299
- chunkWhile(e) {
300
- const t = [];
301
- let r = c();
302
- for (let i = 0; i < h(this, o).length; i++)
303
- e(h(this, o)[i], i, r) ? r.push(h(this, o)[i]) : (t.push(r), r = c());
304
- return r.count() > 0 && t.push(r), c(t);
305
- }
306
- collapse() {
307
- return c(h(this, o).flat());
308
- }
309
- collect() {
310
- return c(h(this, o));
311
- }
312
- combine(e) {
56
+ p(this, "bags");
313
57
  const t = {};
314
- return h(this, o).forEach((r, i) => {
315
- if (typeof r != "string")
316
- throw new TypeError("The `combine` method expects the keys to be strings");
317
- t[r] = q(e, i);
318
- }), t;
319
- }
320
- concat(e) {
321
- return Array.isArray(e) ? c([...h(this, o), ...e]) : c([...h(this, o), ...e.all()]);
322
- }
323
- contains(e, t) {
324
- return typeof e == "function" ? h(this, o).some((r, i) => e(r, i, this)) : h(this, o).some((r) => {
325
- if (typeof t > "u")
326
- return r == e;
327
- if (typeof e != "string")
328
- throw new TypeError("The key must be a string");
329
- return r[e] == t;
330
- });
331
- }
332
- containsOneItem() {
333
- return h(this, o).length === 1;
334
- }
335
- containsStrict(e, t) {
336
- return typeof e == "function" ? h(this, o).some((r, i) => e(r, i, this)) : h(this, o).some((r) => {
337
- if (typeof t > "u")
338
- return r === e;
339
- if (typeof e != "string")
340
- throw new TypeError("The key must be a string");
341
- return r[e] === t;
342
- });
343
- }
344
- count() {
345
- return h(this, o).length;
346
- }
347
- countBy(e) {
348
- return typeof e == "function" ? h(this, o).reduce((t, r, i) => {
349
- const s = e(r, i, this);
350
- return t[s] = t[s] ? t[s] + 1 : 1, t;
351
- }, {}) : h(this, o).reduce((t, r) => {
352
- if (!["string", "number"].includes(typeof r))
353
- throw new TypeError("The countBy method expects the items to be strings or numbers");
354
- return t[String(r)] = t[String(r)] ? t[String(r)] + 1 : 1, t;
355
- }, {});
356
- }
357
- crossJoin(...e) {
358
- return c(J(
359
- h(this, o),
360
- ...e.map((t) => Array.isArray(t) ? t : t.all())
361
- ));
362
- }
363
- diff(e) {
364
- return Array.isArray(e) ? c(h(this, o).filter((t) => !e.includes(t))) : c(h(this, o).filter((t) => !e.contains(t)));
365
- }
366
- doesntContain(e, t) {
367
- return typeof e == "function" ? h(this, o).every((r, i) => !e(r, i, this)) : h(this, o).every((r) => {
368
- if (typeof t > "u")
369
- return r != e;
370
- if (typeof e != "string")
371
- throw new TypeError("The key must be a string");
372
- return r[e] != t;
373
- });
374
- }
375
- dump() {
376
- console.log(this.toArray());
377
- }
378
- duplicates(e) {
379
- return c(typeof e == "string" ? h(this, o).reduce((t, r, i) => (h(this, o).slice(i + 1).some((s) => s[e] == r[e]) && t.push(r[e]), t), []) : h(this, o).reduce((t, r, i) => (h(this, o).slice(i + 1).some((s) => s == r) && t.push(r), t), []));
380
- }
381
- duplicatesStrict(e) {
382
- return c(typeof e == "string" ? h(this, o).reduce((t, r, i) => (h(this, o).slice(i + 1).some((s) => s[e] === r[e]) && t.push(r[e]), t), []) : h(this, o).reduce((t, r, i) => (h(this, o).slice(i + 1).some((s) => s === r) && t.push(r), t), []));
383
- }
384
- each(e) {
385
- let t = 0;
386
- for (const r of this) {
387
- if (e(r, t, this) === !1)
388
- break;
389
- t++;
390
- }
391
- return this;
392
- }
393
- eachSpread(e) {
394
- for (const t of this) {
395
- if (!Array.isArray(t) && !$(t))
396
- throw new TypeError("The items in the collection must be arrays or collections");
397
- const r = Array.isArray(t) ? t : t.all();
398
- if (e(...r) === !1)
399
- break;
400
- }
401
- return this;
402
- }
403
- ensure(e) {
404
- const t = Array.isArray(e) ? e : [e];
405
- return h(this, o).forEach((r, i) => {
406
- if (!t.some((s) => typeof s == "string" ? typeof r === s : r instanceof s))
407
- throw new TypeError(`The item at index ${i} is not of the expected type`);
408
- }), this;
409
- }
410
- every(e) {
411
- return h(this, o).every((t, r) => e(t, r, this));
412
- }
413
- except(e) {
414
- return c(h(this, o).filter((t, r) => !e.includes(r)));
415
- }
416
- filter(e) {
417
- return c(h(this, o).filter((t, r) => typeof e != "function" ? !!t : e(t, r, this)));
418
- }
419
- first(e) {
420
- return typeof e == "function" ? h(this, o).find((t, r) => e(t, r, this)) ?? null : h(this, o)[0] ?? null;
421
- }
422
- firstOrFail(e) {
423
- const t = this.first(e);
424
- if (t === null)
425
- throw new Error("No matching item found");
426
- return t;
427
- }
428
- firstWhere(e, t, r) {
429
- if (typeof e != "string")
430
- throw new TypeError("The key must be a string");
431
- if (typeof t > "u")
432
- return this.first((i) => !!i[e]);
433
- if (typeof r > "u")
434
- return h(this, o).find((i) => i[e] == t) ?? null;
435
- if (typeof t != "string")
436
- throw new TypeError("The operator must be a string");
437
- return r === null ? h(this, o).find((i) => i[e] === null) ?? null : h(this, o).find((i) => {
438
- switch (t) {
439
- case "=":
440
- return i[e] == r;
441
- case "!=":
442
- return i[e] != r;
443
- case ">":
444
- return i[e] > r;
445
- case "<":
446
- return i[e] < r;
447
- case ">=":
448
- return i[e] >= r;
449
- case "<=":
450
- return i[e] <= r;
451
- default:
452
- throw new Error("Unsupported operator");
453
- }
454
- }) ?? null;
455
- }
456
- flatMap(e) {
457
- return c(h(this, o).flatMap((t, r) => e(t, r, this)));
458
- }
459
- forget(e) {
460
- return h(this, o).splice(e, 1), _(this), this;
461
- }
462
- forPage(e, t) {
463
- return c(h(this, o).slice((e - 1) * t, e * t));
464
- }
465
- get(e, t) {
466
- if (typeof e != "number")
467
- throw new TypeError("The key must be a number");
468
- return typeof t > "u" ? h(this, o)[e] ?? null : typeof t == "function" ? h(this, o)[e] ?? t() : h(this, o)[e] ?? t;
469
- }
470
- groupBy(e) {
471
- const t = Array.isArray(e) ? e : [e];
472
- return h(this, o).reduce((r, i, s) => {
473
- const u = t.map((a) => {
474
- if (typeof a == "function") {
475
- const f = a(i, s, this);
476
- return Array.isArray(f) ? f : [f];
477
- }
478
- return [String(i[a])];
479
- });
480
- return J(...u).forEach((a) => {
481
- const f = Array.isArray(a) ? a.join(".") : a;
482
- d.set(r, f, [
483
- ...d.get(r, f, []),
484
- i
485
- ]);
486
- }), r;
487
- }, {});
488
- }
489
- has(e) {
490
- return h(this, o).length > e;
491
- }
492
- hasAny(e) {
493
- return e.some((t) => this.has(t));
494
- }
495
- implode(e, t) {
496
- if (typeof t > "u") {
497
- if (typeof e != "string")
498
- throw new TypeError("The glue must be a string");
499
- if (!h(this, o).every((r) => ["string", "number"].includes(typeof r)))
500
- throw new TypeError("The items must be strings or numbers");
501
- return h(this, o).join(e);
502
- }
503
- if (typeof e == "function")
504
- return h(this, o).map((r, i) => e(r, i, this)).join(t);
505
- if (typeof e != "string")
506
- throw new TypeError("The key must be a string");
507
- if (!h(this, o).every((r) => typeof r == "object"))
508
- throw new TypeError("The items must be objects");
509
- return h(this, o).map((r) => r[e]).join(t);
510
- }
511
- intersect(e) {
512
- return Array.isArray(e) ? c(h(this, o).filter((t) => e.includes(t))) : c(h(this, o).filter((t) => e.contains(t)));
513
- }
514
- isEmpty() {
515
- return h(this, o).length === 0;
516
- }
517
- isNotEmpty() {
518
- return !this.isEmpty();
519
- }
520
- join(e, t) {
521
- return typeof t > "u" ? h(this, o).join(e) : h(this, o).slice(0, -1).join(e) + t + h(this, o)[h(this, o).length - 1];
522
- }
523
- keyBy(e) {
524
- if (typeof e == "function")
525
- return h(this, o).reduce((t, r, i) => (t[e(r, i, this)] = r, t), {});
526
- if (typeof e != "string")
527
- throw new TypeError("The key must be a string");
528
- return h(this, o).reduce((t, r) => (t[String(r[e])] = r, t), {});
529
- }
530
- last(e) {
531
- return typeof e == "function" ? h(this, o).toReversed().find((t, r) => e(t, r, this)) ?? null : h(this, o)[h(this, o).length - 1] ?? null;
532
- }
533
- map(e) {
534
- return c(h(this, o).map((t, r) => e(t, r, this)));
535
- }
536
- mapInto(e) {
537
- return c(h(this, o).map((t) => new e(t)));
538
- }
539
- mapSpread(e) {
540
- return c(h(this, o).map((t) => {
541
- if (!Array.isArray(t) && !$(t))
542
- throw new TypeError("The items in the collection must be arrays or collections");
543
- const r = Array.isArray(t) ? t : t.all();
544
- return e(...r);
545
- }));
546
- }
547
- mapToGroups(e) {
548
- return h(this, o).reduce((t, r, i) => {
549
- const s = e(r, i, this);
550
- return Object.entries(s).forEach(([u, l]) => {
551
- t[u] = t[u] ?? [], t[u].push(l);
552
- }), t;
553
- }, {});
554
- }
555
- mapWithKeys(e) {
556
- return h(this, o).reduce((t, r, i) => {
557
- const s = e(r, i, this);
558
- return Object.entries(s).forEach(([u, l]) => {
559
- t[u] = l;
560
- }), t;
561
- }, {});
562
- }
563
- max(e) {
564
- return typeof e == "string" ? h(this, o).reduce((t, r) => r[e] > t ? r[e] : t, h(this, o)[0][e]) : h(this, o).reduce((t, r) => r > t ? r : t, h(this, o)[0]);
565
- }
566
- median(e) {
567
- if (typeof e == "string") {
568
- const i = this.pluck(e).sort(), s = Math.floor(i.count() / 2);
569
- return i.count() % 2 === 0 ? c([q(i, s - 1), q(i, s)]).avg() : q(i, s);
570
- }
571
- const t = h(this, o).toSorted(), r = Math.floor(t.length / 2);
572
- return t.length % 2 === 0 ? c([t[r - 1], t[r]]).avg() : t[r] ?? null;
573
- }
574
- merge(e) {
575
- return Array.isArray(e) ? c([...h(this, o), ...e]) : c([...h(this, o), ...e.all()]);
576
- }
577
- min(e) {
578
- return typeof e == "string" ? h(this, o).reduce((t, r) => r[e] < t ? r[e] : t, h(this, o)[0][e]) : h(this, o).reduce((t, r) => r < t ? r : t, h(this, o)[0]);
579
- }
580
- mode(e) {
581
- const t = typeof e == "string" ? this.filter((i) => ["number", "string"].includes(typeof i[e])).countBy((i) => i[e]) : this.countBy(), r = Math.max(...Object.values(t));
582
- return Object.entries(t).filter(([, i]) => i === r).map(([i]) => i);
583
- }
584
- nth(e, t = 0) {
585
- return this.chunk(e).filter((r) => r.count() > t).map((r) => r.get(t));
586
- }
587
- only(e) {
588
- return c(h(this, o).filter((t, r) => e.includes(r)));
589
- }
590
- pad(e, t = null) {
591
- const r = h(this, o).slice();
592
- for (; r.length < Math.abs(e); )
593
- e > 0 ? r.push(t) : r.unshift(t);
594
- return c(r);
595
- }
596
- partition(e) {
597
- return [
598
- this.filter(e),
599
- this.reject(e)
600
- ];
601
- }
602
- percentage(e, t = 2) {
603
- return Math.round(
604
- 100 * (10 ^ t) * this.filter(e).count() / h(this, o).length
605
- ) / (10 ^ t);
606
- }
607
- pipe(e) {
608
- return e(this);
609
- }
610
- pipeInto(e) {
611
- return new e(this);
612
- }
613
- pipeThrough(e) {
614
- return e.reduce((t, r) => {
615
- if (!$(t) && !Array.isArray(t))
616
- throw new TypeError("The pipeline expects the carry to be a collection or an array");
617
- return r(
618
- $(t) ? t : c(t)
619
- );
620
- }, this);
621
- }
622
- pluck(e) {
623
- return this.map((t) => t[e]);
624
- }
625
- pop(e = 1) {
626
- const t = h(this, o).splice(h(this, o).length - e, e);
627
- return _(this), e === 1 ? t[0] ?? null : c(t);
628
- }
629
- prepend(e) {
630
- const t = h(this, o).unshift(e);
631
- return _(this), t;
632
- }
633
- pull(e) {
634
- const t = h(this, o).splice(e, 1)[0] ?? null;
635
- return _(this), t;
636
- }
637
- push(...e) {
638
- const t = h(this, o).push(...e);
639
- return _(this), t;
640
- }
641
- put(e, t) {
642
- return h(this, o).splice(e, 1, t), _(this), this;
643
- }
644
- random(e = 1) {
645
- if (h(this, o).length < e)
646
- throw new Error("The collection has fewer items than the requested amount");
647
- const t = c(d.sampleSize(h(this, o), e));
648
- return e === 1 ? t.first() : t;
649
- }
650
- reduce(e, t = null) {
651
- return h(this, o).reduce((r, i, s) => e(r, i, s, this), t);
652
- }
653
- reject(e) {
654
- return this.filter((t, r) => !e(t, r, this));
655
- }
656
- replace(e) {
657
- const t = h(this, o).slice();
658
- return Object.entries(e).forEach(([r, i]) => {
659
- t[parseInt(r)] = i;
660
- }), c(t);
661
- }
662
- reverse() {
663
- return c(h(this, o).toReversed());
664
- }
665
- search(e, t = !1) {
666
- if (typeof e != "function" || h(this, o).every((i) => typeof i == "function")) {
667
- const i = h(this, o).findIndex((s) => t ? s === e : s == e);
668
- return i === -1 ? !1 : i;
669
- }
670
- const r = h(this, o).findIndex((i, s) => e(i, s, this));
671
- return r === -1 ? !1 : r;
672
- }
673
- select(e) {
674
- return this.map((t) => e.reduce((r, i) => (r[i] = t[i], r), {}));
675
- }
676
- shift(e = 1) {
677
- const t = h(this, o).splice(0, e);
678
- return _(this), e === 1 ? t[0] ?? null : c(t);
679
- }
680
- shuffle() {
681
- return c(d.shuffle(h(this, o)));
682
- }
683
- skip(e) {
684
- return c(h(this, o).slice(e));
685
- }
686
- skipUntil(e) {
687
- return typeof e == "function" ? this.skip(h(this, o).findIndex((t, r) => e(t, r, this))) : this.skip(h(this, o).findIndex((t) => t == e));
688
- }
689
- skipWhile(e) {
690
- return typeof e == "function" ? this.skip(h(this, o).findIndex((t, r) => !e(t, r, this))) : this.skip(h(this, o).findIndex((t) => t != e));
691
- }
692
- slice(e, t) {
693
- return c(typeof t > "u" ? h(this, o).slice(e) : typeof e > "u" ? h(this, o).slice(0, t) : h(this, o).slice(e, e + t));
694
- }
695
- sliding(e, t = 1) {
696
- const r = [];
697
- for (let i = 0; i < h(this, o).length && !(i + e > h(this, o).length); i += t)
698
- r.push(h(this, o).slice(i, i + e));
699
- return c(r.map((i) => c(i)));
700
- }
701
- sole(e, t) {
702
- if (typeof e == "function") {
703
- const r = this.filter(e);
704
- return r.count() === 1 ? r.first() : null;
705
- }
706
- if (typeof e == "string") {
707
- const r = this.where(e, t);
708
- return r.count() === 1 ? r.first() : null;
709
- }
710
- return h(this, o).length === 1 ? this.first() : null;
711
- }
712
- some(...e) {
713
- return this.contains(...e);
714
- }
715
- sort(e) {
716
- return c(h(this, o).toSorted(e));
717
- }
718
- sortBy(e, t = "asc") {
719
- if (typeof e == "function") {
720
- let r = -1;
721
- return c(h(this, o).toSorted((i, s) => (r++, e(i, r, this) - e(s, r, this))));
722
- }
723
- if (Array.isArray(e))
724
- return e.every((r) => Array.isArray(r)) ? c(h(this, o).toSorted((r, i) => {
725
- for (const [s, u] of e) {
726
- const l = r[s] ?? -1 / 0, a = i[s] ?? -1 / 0;
727
- if (l > a)
728
- return u === "asc" ? 1 : -1;
729
- if (l < a)
730
- return u === "asc" ? -1 : 1;
731
- }
732
- return 0;
733
- })) : c(h(this, o).toSorted((r, i) => {
734
- for (const s of e) {
735
- const u = s(r, i);
736
- if (u !== 0)
737
- return u;
738
- }
739
- return 0;
740
- }));
741
- if (typeof e != "string")
742
- throw new TypeError("The key must be a string");
743
- return c(h(this, o).toSorted((r, i) => {
744
- const s = r[e] ?? -1 / 0, u = i[e] ?? -1 / 0;
745
- return s > u ? t === "asc" ? 1 : -1 : s < u ? t === "asc" ? -1 : 1 : 0;
746
- }));
747
- }
748
- sortDesc() {
749
- return this.sort((e, t) => e > t ? -1 : e < t ? 1 : 0);
750
- }
751
- splice(e, t, ...r) {
752
- const i = t === void 0 ? h(this, o).length : t, s = h(this, o).splice(e, i, ...r);
753
- return _(this), c(s);
754
- }
755
- split(e) {
756
- const t = [];
757
- for (let r = 0; r < e; r++) {
758
- const i = h(this, o).slice(
759
- t.flat().length,
760
- t.flat().length + Math.min(
761
- Math.ceil((h(this, o).length - t.flat().length) / (e - r)),
762
- h(this, o).length - t.flat().length
763
- )
764
- );
765
- t.push(c(i));
766
- }
767
- return c(t);
768
- }
769
- splitIn(e) {
770
- const t = Math.ceil(h(this, o).length / e);
771
- return this.chunk(t);
772
- }
773
- sum(e) {
774
- return typeof e == "string" ? h(this, o).reduce((t, r) => {
775
- const i = r[e];
776
- if (typeof i != "number")
777
- throw new TypeError("The items must be numbers");
778
- return t + i;
779
- }, 0) : h(this, o).reduce((t, r) => {
780
- if (typeof r != "number")
781
- throw new TypeError("The items must be numbers");
782
- return t + r;
783
- }, 0);
784
- }
785
- take(e) {
786
- return c(h(this, o).slice(0, e));
787
- }
788
- takeUntil(e) {
789
- return typeof e == "function" ? this.take(h(this, o).findIndex((t, r) => e(t, r, this))) : this.take(h(this, o).findIndex((t) => t == e));
790
- }
791
- takeWhile(e) {
792
- return typeof e == "function" ? this.take(h(this, o).findIndex((t, r) => !e(t, r, this))) : this.take(h(this, o).findIndex((t) => t != e));
793
- }
794
- tap(e) {
795
- return e(this), this;
796
- }
797
- toArray() {
798
- const e = (t) => typeof t != "object" ? t : Array.isArray(t) ? t.map(e) : t && "toArray" in t && typeof t.toArray == "function" ? t.toArray() : t && "toJson" in t && typeof t.toJson == "function" ? t.toJson() : t;
799
- return h(this, o).map(e);
800
- }
801
- toJson() {
802
- return JSON.stringify(h(this, o));
803
- }
804
- transform(e) {
805
- for (const [t, r] of h(this, o).entries())
806
- h(this, o).splice(t, 1, e(r, t, this));
807
- return _(this), this;
808
- }
809
- unique(e) {
810
- return c(
811
- typeof e == "string" ? [...new Set(h(this, o).map((t) => t[e]))].map((t) => h(this, o).find((r) => r[e] == t)) : [...new Set(h(this, o))]
812
- );
58
+ document.querySelectorAll('#luminix-embed [id^="luminix-error"]').forEach((i) => {
59
+ const c = i.id.replace("luminix-error::", "");
60
+ t[c] = pe(c, "error");
61
+ }), this.bags = {
62
+ default: new R(t)
63
+ };
813
64
  }
814
- uniqueStrict(e) {
815
- return c(
816
- typeof e == "string" ? [...new Set(h(this, o).map((t) => t[e]))].map((t) => h(this, o).find((r) => r[e] === t)) : [...new Set(h(this, o))]
817
- );
65
+ bag(t = "default") {
66
+ return this.bags[t] || (this.bags[t] = new R({})), this.bags[t];
818
67
  }
819
- unless(e, t, r) {
820
- return e ? typeof r == "function" && r(this) : t(this), this;
821
- }
822
- unlessEmpty(e, t) {
823
- return this.whenNotEmpty(e, t);
824
- }
825
- unlessNotEmpty(e, t) {
826
- return this.whenEmpty(e, t);
827
- }
828
- value(e) {
829
- return h(this, o).length === 0 ? null : h(this, o)[0][e];
830
- }
831
- when(e, t, r) {
832
- return e ? t(this) : typeof r == "function" && r(this), this;
833
- }
834
- whenEmpty(e, t) {
835
- return this.isEmpty() ? e(this) : typeof t == "function" && t(this), this;
836
- }
837
- whenNotEmpty(e, t) {
838
- return this.isNotEmpty() ? e(this) : typeof t == "function" && t(this), this;
839
- }
840
- where(e, t, r) {
841
- if (typeof r > "u")
842
- return c(h(this, o).filter((s) => s[e] == t));
843
- if (typeof t != "string")
844
- throw new TypeError("The operator must be a string");
845
- if (r === null)
846
- return c(h(this, o).filter((s) => s[e] === null));
847
- const i = {
848
- "=": (s) => s[e] == r,
849
- "!=": (s) => s[e] != r,
850
- ">": (s) => s[e] > r,
851
- "<": (s) => s[e] < r,
852
- ">=": (s) => s[e] >= r,
853
- "<=": (s) => s[e] <= r
854
- };
855
- if (!(t in i))
856
- throw new Error("Unsupported operator");
857
- return c(h(this, o).filter((s, u) => i[t](s, u, this)));
858
- }
859
- whereStrict(e, t, r) {
860
- if (typeof r > "u")
861
- return c(h(this, o).filter((s) => s[e] === t));
862
- if (typeof t != "string")
863
- throw new TypeError("The operator must be a string");
864
- if (r === null)
865
- return c(h(this, o).filter((s) => s[e] === null));
866
- const i = {
867
- "=": (s) => s[e] === r,
868
- "!=": (s) => s[e] !== r,
869
- ">": (s) => s[e] > r,
870
- "<": (s) => s[e] < r,
871
- ">=": (s) => s[e] >= r,
872
- "<=": (s) => s[e] <= r
873
- };
874
- if (!(t in i))
875
- throw new Error("Unsupported operator");
876
- return c(h(this, o).filter((s, u) => i[t](s, u, this)));
68
+ add(t, e, i = "default") {
69
+ this.bag(i).set(t, e);
877
70
  }
878
- whereBetween(e, [t, r]) {
879
- return c(h(this, o).filter((i) => i[e] >= t && i[e] <= r));
71
+ set(t, e = "default") {
72
+ this.bag(e).set(".", t);
880
73
  }
881
- whereIn(e, t) {
882
- return c(h(this, o).filter((r) => t.includes(r[e])));
74
+ all(t = "default") {
75
+ return this.bag(t).all();
883
76
  }
884
- whereInstanceOf(e) {
885
- return c(h(this, o).filter((t) => t instanceof e));
77
+ get(t, e = "default") {
78
+ return this.bag(e).get(t, null);
886
79
  }
887
- whereNotBetween(e, [t, r]) {
888
- return c(h(this, o).filter((i) => i[e] < t || i[e] > r));
80
+ clear(t = "default") {
81
+ this.bag(t).set(".", {});
889
82
  }
890
- whereNotIn(e, t) {
891
- return c(h(this, o).filter((r) => !t.includes(r[e])));
83
+ }
84
+ class xe {
85
+ constructor(t) {
86
+ this._debug = t;
892
87
  }
893
- whereNotNull(e) {
894
- return c(h(this, o).filter((t) => t[e] !== null));
88
+ emergency(...t) {
89
+ this._debug && console.error(...t);
895
90
  }
896
- whereNull(e) {
897
- return c(h(this, o).filter((t) => t[e] === null));
91
+ alert(...t) {
92
+ this._debug && console.error(...t);
898
93
  }
899
- zip(e) {
900
- return Array.isArray(e) ? c(
901
- h(this, o).map((t, r) => [t, e[r] ?? null])
902
- ) : c(
903
- h(this, o).map((t, r) => [t, e.get(r)])
904
- );
94
+ critical(...t) {
95
+ this._debug && console.error(...t);
905
96
  }
906
- // HasEvents methods
907
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
908
- on(e, t) {
909
- throw new b();
97
+ error(...t) {
98
+ this._debug && console.error(...t);
910
99
  }
911
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
912
- once(e, t) {
913
- throw new b();
100
+ warning(...t) {
101
+ this._debug && console.warn(...t);
914
102
  }
915
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
916
- emit(e, t) {
917
- throw new b();
103
+ notice(...t) {
104
+ this._debug && console.info(...t);
918
105
  }
919
- }
920
- o = new WeakMap();
921
- const L = S(P);
922
- var ee, te;
923
- class H extends (te = P, ee = Symbol.toStringTag, te) {
924
- constructor() {
925
- super(...arguments);
926
- m(this, ee, "Collection");
106
+ info(...t) {
107
+ this._debug && console.info(...t);
927
108
  }
928
- intersect(t) {
929
- return this.filter((r) => t.some((i) => i.getKey() === r.getKey()));
109
+ debug(...t) {
110
+ this._debug && console.debug(...t);
930
111
  }
931
112
  }
932
- const v = (...n) => {
933
- const e = new URLSearchParams();
934
- return n.forEach((t) => {
935
- const [, ...r] = t.split("?");
936
- new URLSearchParams(r.join("")).forEach((s, u) => {
937
- e.set(u, s);
938
- });
939
- }), e;
940
- };
941
- var re, se;
942
- class De extends (se = Error, re = Symbol.toStringTag, se) {
943
- constructor(t) {
944
- super(`[Luminix] Model "${t}" does not have a primary key`);
945
- m(this, re, "ModelWithoutPrimaryKeyException");
113
+ var O, B;
114
+ class Me extends (B = Error, O = Symbol.toStringTag, B) {
115
+ constructor(e) {
116
+ super(`[Luminix] Model "${e}" does not have a primary key`);
117
+ p(this, O, "ModelWithoutPrimaryKeyException");
946
118
  }
947
119
  }
948
- const Ue = S(R);
949
- class Je {
950
- constructor(e, t, r = {}) {
951
- m(this, "bag");
952
- this.facades = e, this.abstract = t, this.query = r, this.bag = new Ue(r), this.bag.on("change", () => {
120
+ class Ee extends q {
121
+ constructor(e, i, s = {}) {
122
+ super();
123
+ p(this, "bag");
124
+ this.services = e, this.abstract = i, this.query = s, this.bag = new R(s), this.bag.on("change", () => {
953
125
  this.emit("change", {
954
- data: this.bag
126
+ data: this.bag,
127
+ source: this
955
128
  });
956
129
  });
957
130
  }
958
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
959
- on(e, t) {
960
- throw new b();
961
- }
962
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
963
- once(e, t) {
964
- throw new b();
965
- }
966
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
967
- emit(e, t) {
968
- throw new b();
969
- }
970
131
  lock(e) {
971
132
  this.bag.lock(e);
972
133
  }
973
- whereBetween(e, t) {
974
- return this.bag.has("where") || this.bag.set("where", {}), this.bag.set(`where.${d.camelCase(e)}Between`, t), this;
134
+ whereBetween(e, i) {
135
+ return this.where(e, "between", i);
975
136
  }
976
- whereNotBetween(e, t) {
977
- return this.bag.has("where") || this.bag.set("where", {}), this.bag.set(`where.${d.camelCase(e)}NotBetween`, t), this;
137
+ whereNotBetween(e, i) {
138
+ return this.where(e, "notBetween", i);
978
139
  }
979
140
  whereNull(e) {
980
- return this.bag.has("where") || this.bag.set("where", {}), this.bag.set(`where.${d.camelCase(e)}Null`, !0), this;
141
+ return this.where(e, "null", null);
981
142
  }
982
143
  whereNotNull(e) {
983
- return this.bag.has("where") || this.bag.set("where", {}), this.bag.set(`where.${d.camelCase(e)}NotNull`, !0), this;
144
+ return this.where(e, "notNull", null);
984
145
  }
985
146
  limit(e) {
986
147
  return this.bag.set("per_page", e), this;
987
148
  }
988
- where(e, t, r) {
149
+ where(e, i, s) {
989
150
  if (this.bag.has("where") || this.bag.set("where", {}), typeof e == "function")
990
151
  return e(this) || this;
991
- if (typeof r > "u")
992
- return this.bag.set(`where.${d.camelCase(e)}`, t), this;
993
- if (typeof t != "string")
994
- throw new Error(`Invalid operator ${t} provided for where clause.`);
995
- const s = {
152
+ if (typeof s > "u")
153
+ return this.bag.set(`where.${e}`, i), this;
154
+ if (typeof i != "string")
155
+ throw new Error(`Invalid operator ${i} provided for where clause.`);
156
+ const g = {
996
157
  "=": "",
997
- "!=": "NotEquals",
998
- ">": "GreaterThan",
999
- ">=": "GreaterThanOrEquals",
1000
- "<": "LessThan",
1001
- "<=": "LessThanOrEquals"
1002
- }[t] || d.upperFirst(d.camelCase(t));
1003
- return this.bag.set(`where.${d.camelCase(e)}${s}`, r), this;
158
+ "!=": "notEquals",
159
+ ">": "greaterThan",
160
+ ">=": "greaterThanOrEquals",
161
+ "<": "lessThan",
162
+ "<=": "lessThanOrEquals"
163
+ }[i] || i;
164
+ return this.bag.set(`where.${e}:${g}`, s), this;
1004
165
  }
1005
166
  with(e) {
1006
- const t = this.bag.get("with", []);
1007
- return (Array.isArray(e) ? e : [e]).forEach((i) => {
1008
- t.includes(i) || t.push(i);
1009
- }), this.bag.set("with", t), this;
167
+ const i = this.bag.get("with", []);
168
+ return (Array.isArray(e) ? e : [e]).forEach((c) => {
169
+ i.includes(c) || i.push(c);
170
+ }), this.bag.set("with", i), this;
1010
171
  }
1011
172
  withOnly(e) {
1012
173
  return this.bag.set("with", Array.isArray(e) ? e : [e]), this;
1013
174
  }
1014
175
  without(e) {
1015
- const t = this.bag.get("with", []);
1016
- return (Array.isArray(e) ? e : [e]).forEach((i) => {
1017
- t.includes(i) && t.splice(t.indexOf(i), 1);
1018
- }), this.bag.set("with", t), this;
176
+ const i = this.bag.get("with", []);
177
+ return (Array.isArray(e) ? e : [e]).forEach((c) => {
178
+ i.includes(c) && i.splice(i.indexOf(c), 1);
179
+ }), this.bag.set("with", i), this;
1019
180
  }
1020
- orderBy(e, t = "asc") {
1021
- return this.bag.set("order_by", `${e}:${t}`), this;
181
+ orderBy(e, i = "asc") {
182
+ return this.bag.set("order_by", `${e}:${i}`), this;
1022
183
  }
1023
184
  searchBy(e) {
1024
185
  return this.bag.set("q", e), this;
@@ -1030,158 +191,153 @@ class Je {
1030
191
  return this.bag.delete(e), this;
1031
192
  }
1032
193
  include(e) {
1033
- for (const [t, r] of e.entries())
1034
- this.bag.set(t, r);
194
+ for (const [i, s] of e.entries())
195
+ this.bag.set(i, s);
1035
196
  return this;
1036
197
  }
1037
- async exec(e = 1, t) {
198
+ async exec(e = 1, i) {
1038
199
  try {
1039
200
  this.bag.set("page", e), this.emit("submit", {
1040
- data: this.bag
201
+ data: this.bag,
202
+ source: this
1041
203
  });
1042
- const { data: r } = await this.facades.route.call(`luminix.${this.abstract}.index`, {
1043
- params: this.bag.all(),
1044
- errorBag: `${this.abstract}.fetch`
1045
- }), i = this.facades.model.make(this.abstract), s = c(r.data.map((u) => {
1046
- const l = new i(u);
1047
- return l.exists = !0, this.facades.model.emit("fetch", {
204
+ const s = await this.services.route.call(
205
+ `luminix.${this.abstract}.index`,
206
+ (l) => l.withQueryParameters(this.bag.all())
207
+ ), c = this.services.model.make(this.abstract), g = new x(s.json("data").map((l) => {
208
+ const u = new c(l);
209
+ return u.exists = !0, this.services.model.emit("fetch", {
1048
210
  class: this.abstract,
1049
- model: l
1050
- }), l;
1051
- }), H);
1052
- if (t) {
1053
- const [u] = t.split("?");
211
+ model: u,
212
+ source: this.services.model
213
+ }), u;
214
+ }));
215
+ if (i) {
216
+ const [l] = i.split("?");
1054
217
  return {
1055
- ...r,
1056
- data: s,
218
+ ...s.json(),
219
+ data: g,
1057
220
  links: {
1058
- first: `${u}?${v(t, r.links.first).toString()}`,
1059
- last: `${u}?${v(t, r.links.last).toString()}`,
1060
- next: r.links.next && `${u}?${v(t, r.links.next).toString()}`,
1061
- prev: r.links.prev && `${u}?${v(t, r.links.prev).toString()}`
221
+ first: `${l}?${T.merge(i, s.json("links").first).toString()}`,
222
+ last: `${l}?${T.merge(i, s.json("links").last).toString()}`,
223
+ next: s.json("links").next && `${l}?${T.merge(i, s.json("links").next ?? "").toString()}`,
224
+ prev: s.json("links").prev && `${l}?${T.merge(i, s.json("links").prev ?? "").toString()}`
1062
225
  },
1063
226
  meta: {
1064
- ...r.meta,
1065
- links: r.meta.links.map((l) => ({
1066
- ...l,
1067
- url: l.url && `${u}?${v(t, l.url).toString()}`
227
+ ...s.json("meta"),
228
+ links: s.json("meta").links.map((u) => ({
229
+ ...u,
230
+ url: u.url && `${l}?${T.merge(i, u.url).toString()}`
1068
231
  }))
1069
232
  }
1070
233
  };
1071
234
  }
1072
235
  return {
1073
- ...r,
1074
- data: s
236
+ ...s.json(),
237
+ data: g
1075
238
  };
1076
- } catch (r) {
239
+ } catch (s) {
1077
240
  throw this.emit("error", {
1078
- error: r
1079
- }), r;
241
+ error: s,
242
+ source: this
243
+ }), s;
1080
244
  }
1081
245
  }
1082
- async get(e = 1, t) {
1083
- const r = await this.exec(e, t);
246
+ async get(e = 1, i) {
247
+ const s = await this.exec(e, i);
1084
248
  return this.emit("success", {
1085
- response: r,
1086
- items: r.data
1087
- }), r;
249
+ response: s,
250
+ items: s.data,
251
+ source: this
252
+ }), s;
1088
253
  }
1089
254
  async first() {
1090
255
  const e = await this.limit(1).exec(1);
1091
256
  return this.emit("success", {
1092
257
  response: e,
1093
- items: e.data.first()
258
+ items: e.data.first(),
259
+ source: this
1094
260
  }), e.data.first();
1095
261
  }
1096
262
  async find(e) {
1097
- const t = this.facades.model.schema(this.abstract).primaryKey;
1098
- if (!t)
1099
- throw new De(this.abstract);
1100
- const r = await this.where(t, e).limit(1).exec(1);
263
+ const i = this.services.model.schema(this.abstract).primaryKey;
264
+ if (!i)
265
+ throw new Me(this.abstract);
266
+ const s = await this.where(i, e).limit(1).exec(1);
1101
267
  return this.emit("success", {
1102
- response: r,
1103
- items: r.data.sole()
1104
- }), r.data.sole();
268
+ response: s,
269
+ items: s.data.sole(),
270
+ source: this
271
+ }), s.data.sole();
1105
272
  }
1106
273
  async all() {
1107
- const e = this.facades.config.get("luminix.backend.api.max_per_page", 150), t = await this.limit(e).exec(1), r = t.meta.last_page;
1108
- if (r === 1)
1109
- return t.data;
1110
- const i = Array.from({ length: r - 1 }, (l, a) => a + 2), s = await Promise.all(
1111
- i.map((l) => this.limit(e).exec(l))
1112
- ), u = c(
1113
- s.reduce((l, a) => (l.push(...a.data), l), t.data).all(),
1114
- H
274
+ const e = this.services.config.get("luminix.backend.api.max_per_page", 150), i = await this.limit(e).exec(1), s = i.meta.last_page;
275
+ if (s === 1)
276
+ return i.data;
277
+ const c = Array.from({ length: s - 1 }, (u, r) => r + 2), g = await Promise.all(
278
+ c.map((u) => this.limit(e).exec(u))
279
+ ), l = new x(
280
+ g.reduce((u, r) => (u.push(...r.data), u), i.data).all()
1115
281
  );
1116
282
  return this.emit("success", {
1117
283
  response: {
1118
- ...t,
1119
- data: u
284
+ ...i,
285
+ data: l
1120
286
  },
1121
- items: u
1122
- }), u;
1123
- }
1124
- }
1125
- const He = S(Je);
1126
- var ie, ne;
1127
- class T extends (ne = Error, ie = Symbol.toStringTag, ne) {
1128
- constructor(t) {
1129
- super(`[Luminix] Expected ${t} to be reducible.`);
1130
- m(this, ie, "NotReducibleException");
287
+ items: l,
288
+ source: this
289
+ }), l;
1131
290
  }
1132
291
  }
1133
- var oe, he;
1134
- class M extends (he = TypeError, oe = Symbol.toStringTag, he) {
1135
- constructor(t, r = "Model") {
1136
- super(`[Luminix] "${t}" expects ${r}`);
1137
- m(this, oe, "NotModelException");
292
+ var C, I;
293
+ class w extends (I = TypeError, C = Symbol.toStringTag, I) {
294
+ constructor(e, i = "Model") {
295
+ super(`[Luminix] "${e}" expects ${i}`);
296
+ p(this, C, "NotModelException");
1138
297
  }
1139
298
  }
1140
- var ue, ae;
1141
- class We extends (ae = Error, ue = Symbol.toStringTag, ae) {
1142
- constructor(t, r, i, s) {
1143
- super(`[Luminix] Could not determine inverse relation for "${r}" in model "${t}". Please specify a relation in model "${i}" of type ${s} that points back to "${t}".`);
1144
- m(this, ue, "NoInverseRelationException");
299
+ var P, Q;
300
+ class $e extends (Q = Error, P = Symbol.toStringTag, Q) {
301
+ constructor(e, i, s, c) {
302
+ super(`[Luminix] Could not determine inverse relation for "${i}" in model "${e}". Please specify a relation in model "${s}" of type ${c} that points back to "${e}".`);
303
+ p(this, P, "NoInverseRelationException");
1145
304
  }
1146
305
  }
1147
- var le, ce;
1148
- class Ge extends (ce = Error, le = Symbol.toStringTag, ce) {
1149
- constructor(t) {
1150
- super(`[Luminix] Relation "${t}" is not supported`);
1151
- m(this, le, "UnsupportedRelationException");
306
+ var D, H;
307
+ class _e extends (H = Error, D = Symbol.toStringTag, H) {
308
+ constructor(e) {
309
+ super(`[Luminix] Relation "${e}" is not supported`);
310
+ p(this, D, "UnsupportedRelationException");
1152
311
  }
1153
312
  }
1154
- function E(n) {
313
+ function f(n) {
1155
314
  return typeof n == "object" && n !== null && n.__isModel === !0;
1156
315
  }
1157
- class F {
1158
- constructor(e, t, r, i = null) {
1159
- m(this, "unsubscribeQuery", null);
1160
- if (this.meta = e, this.facades = t, this.parent = r, this.items = i, i !== null && !E(i) && !($(i) && i.every(E)))
1161
- throw new M("Relation.constructor()", "Model, Collection<Model> or null");
1162
- }
1163
- make(e) {
1164
- const t = this.getRelated();
1165
- if (e === null || typeof e > "u") {
316
+ class N {
317
+ constructor(t, e, i, s = null) {
318
+ p(this, "unsubscribeQuery", null);
319
+ if (this.services = t, this.meta = e, this.parent = i, this.items = s, s !== null && !m.isModel(s) && !(s instanceof x && s.every(f)))
320
+ throw new w("Relation.constructor()", "Model, Collection<Model> or null");
321
+ }
322
+ make(t) {
323
+ const e = this.getRelated();
324
+ if (t === null || typeof t > "u") {
1166
325
  this.set(null);
1167
326
  return;
1168
327
  }
1169
328
  if (this.isSingle()) {
1170
- if (typeof e != "object" || Array.isArray(e))
329
+ if (typeof t != "object" || Array.isArray(t))
1171
330
  throw new TypeError("Relation.make() expects an object");
1172
- this.set(new t(e));
331
+ this.set(new e(t));
1173
332
  }
1174
333
  if (this.isMultiple()) {
1175
- if (!Array.isArray(e))
334
+ if (!Array.isArray(t))
1176
335
  throw new TypeError("Relation.make() expects an array");
1177
- this.set(c(e.map((r) => new t(r))));
336
+ this.set(new x(t.map((i) => new e(i))));
1178
337
  }
1179
338
  }
1180
339
  guessInverseRelation() {
1181
- const { relations: e } = this.getRelated().getSchema();
1182
- if (typeof this.facades.model.guessInverseRelation != "function")
1183
- throw new T("ModelFacade");
1184
- const t = this.getType(), r = this.facades.model.guessInverseRelation({
340
+ const { relations: t } = this.getRelated().getSchema(), e = this.getType(), i = this.services.model.guessInverseRelation({
1185
341
  HasOne: ["BelongsTo"],
1186
342
  HasMany: ["BelongsTo"],
1187
343
  BelongsTo: ["HasOne", "HasMany"],
@@ -1190,20 +346,20 @@ class F {
1190
346
  MorphOne: ["MorphTo"],
1191
347
  MorphMany: ["MorphTo"],
1192
348
  MorphToMany: ["MorphToMany"]
1193
- }, this.parent, t, this.getRelated());
1194
- if (!(t in r))
1195
- throw new Ge(t);
1196
- for (const i in e) {
1197
- const s = e[i];
1198
- if ((s.model === this.parent.getType() || ["MorphOne", "MorphMany"].includes(t)) && r[t].includes(s.type))
1199
- return i;
349
+ }, this.parent, e, this.getRelated());
350
+ if (!(e in i))
351
+ throw new _e(e);
352
+ for (const s in t) {
353
+ const c = t[s];
354
+ if ((c.model === this.parent.getType() || ["MorphOne", "MorphMany"].includes(e)) && i[e].includes(c.type))
355
+ return s;
1200
356
  }
1201
- throw new We(this.parent.getType(), t, this.getRelated().getSchemaName(), r[t].join(" or "));
357
+ throw new $e(this.parent.getType(), e, this.getRelated().getSchemaName(), i[e].join(" or "));
1202
358
  }
1203
- set(e) {
1204
- if (e !== null && !E(e) && !($(e) && e.every(E)))
1205
- throw new M("Relation.set()", "Model, Collection<Model> or null");
1206
- !this.items || E(this.items) ? this.items = e : $(e) && this.items.splice(0, this.items.count(), ...e);
359
+ set(t) {
360
+ if (t !== null && !f(t) && !(t instanceof x && t.every(f)))
361
+ throw new w("Relation.set()", "Model, Collection<Model> or null");
362
+ !this.items || f(this.items) ? this.items = t : t instanceof x && this.items.splice(0, this.items.count(), ...t);
1207
363
  }
1208
364
  getForeignKey() {
1209
365
  return this.meta.foreignKey;
@@ -1218,13 +374,13 @@ class F {
1218
374
  return this.meta.model;
1219
375
  }
1220
376
  getRelated() {
1221
- return this.facades.model.make(this.meta.model);
377
+ return this.services.model.make(this.meta.model);
1222
378
  }
1223
379
  query() {
1224
- const e = this.getRelated().query();
1225
- return this.unsubscribeQuery && this.unsubscribeQuery(), this.unsubscribeQuery = e.on("success", (t) => {
1226
- this.items = t.items;
1227
- }), e;
380
+ const t = this.getRelated().query();
381
+ return this.unsubscribeQuery && this.unsubscribeQuery(), this.unsubscribeQuery = t.on("success", (e) => {
382
+ this.items = e.items;
383
+ }), t;
1228
384
  }
1229
385
  isLoaded() {
1230
386
  return this.items !== null;
@@ -1233,40 +389,40 @@ class F {
1233
389
  return this.items;
1234
390
  }
1235
391
  isSingle() {
1236
- return E(this.items);
392
+ return f(this.items);
1237
393
  }
1238
394
  isMultiple() {
1239
- return $(this.items);
395
+ return this.items instanceof x;
1240
396
  }
1241
397
  getParent() {
1242
398
  return this.parent;
1243
399
  }
1244
- where(...e) {
1245
- return this.query().where(...e);
400
+ where(...t) {
401
+ return this.query().where(...t);
1246
402
  }
1247
- whereNull(e) {
1248
- return this.query().whereNull(e);
403
+ whereNull(t) {
404
+ return this.query().whereNull(t);
1249
405
  }
1250
- whereNotNull(e) {
1251
- return this.query().whereNotNull(e);
406
+ whereNotNull(t) {
407
+ return this.query().whereNotNull(t);
1252
408
  }
1253
- whereBetween(e, t) {
1254
- return this.query().whereBetween(e, t);
409
+ whereBetween(t, e) {
410
+ return this.query().whereBetween(t, e);
1255
411
  }
1256
- whereNotBetween(e, t) {
1257
- return this.query().whereNotBetween(e, t);
412
+ whereNotBetween(t, e) {
413
+ return this.query().whereNotBetween(t, e);
1258
414
  }
1259
- orderBy(e, t = "asc") {
1260
- return this.query().orderBy(e, t);
415
+ orderBy(t, e = "asc") {
416
+ return this.query().orderBy(t, e);
1261
417
  }
1262
- searchBy(e) {
1263
- return this.query().searchBy(e);
418
+ searchBy(t) {
419
+ return this.query().searchBy(t);
1264
420
  }
1265
421
  minified() {
1266
422
  return this.query().minified();
1267
423
  }
1268
- limit(e) {
1269
- return this.query().limit(e);
424
+ limit(t) {
425
+ return this.query().limit(t);
1270
426
  }
1271
427
  // get(page = 1, perPage = 15, replaceLinksWith?: string): Promise<ModelPaginatedResponse>
1272
428
  // {
@@ -1281,134 +437,161 @@ class F {
1281
437
  // return this.query().find(id);
1282
438
  // }
1283
439
  }
1284
- var de, fe;
1285
- class Se extends (fe = Error, de = Symbol.toStringTag, fe) {
1286
- constructor(t, r) {
1287
- super(`[Luminix] Model "${t}" must be persisted before calling "${r}"`);
1288
- m(this, de, "ModelNotPersistedException");
440
+ var L, J;
441
+ class $ extends (J = Error, L = Symbol.toStringTag, J) {
442
+ constructor(e) {
443
+ super(`[Luminix] Expected ${e} to be reducible.`);
444
+ p(this, L, "NotReducibleException");
445
+ }
446
+ }
447
+ var U, F;
448
+ class Se extends (F = Error, U = Symbol.toStringTag, F) {
449
+ constructor() {
450
+ super("[Luminix] Method not implemented.");
451
+ p(this, U, "MethodNotImplementedException");
452
+ }
453
+ }
454
+ var G, V;
455
+ class ae extends (V = Error, G = Symbol.toStringTag, V) {
456
+ constructor(e, i) {
457
+ super(`[Luminix] Model "${e}" must be persisted before calling "${i}"`);
458
+ p(this, G, "ModelNotPersistedException");
1289
459
  }
1290
460
  }
1291
- function Ve(n, e) {
1292
- var r;
1293
- r = Symbol.toStringTag;
1294
- class t {
1295
- constructor(s = {}) {
1296
- m(this, "_attributes", new R({}));
1297
- m(this, "_original", {});
1298
- m(this, "_relations", {});
1299
- m(this, "_changedKeys", []);
1300
- m(this, "exists", !1);
1301
- m(this, "wasRecentlyCreated", !1);
1302
- m(this, r, d.upperFirst(d.camelCase(e)));
1303
- this.makeRelations(), this.makeAttributes(s);
1304
- }
1305
- cast(s, u) {
1306
- return s == null || !u ? s : ["boolean", "bool"].includes(u) ? !!s : ["date", "datetime", "immutable_date", "immutable_datetime"].includes(u) && typeof s == "string" ? new Date(s) : ["float", "double", "integer", "int"].includes(u) || u.startsWith("decimal:") ? Number(s) : s;
1307
- }
1308
- mutate(s, u) {
1309
- return s == null || !u ? s : ["boolean", "bool"].includes(u) ? !!s : ["date", "datetime", "immutable_date", "immutable_datetime"].includes(u) && s instanceof Date ? s.toISOString() : ["float", "double", "integer", "int"].includes(u) || u.startsWith("decimal:") ? Number(s) : s;
461
+ function Te(n, t, e, i, s) {
462
+ var c, g, l;
463
+ return l = class extends (g = q, c = Symbol.toStringTag, g) {
464
+ constructor(r = {}) {
465
+ super();
466
+ p(this, "_attributes", new R({}));
467
+ p(this, "_original", {});
468
+ p(this, "_relations", {});
469
+ p(this, "_changedKeys", []);
470
+ p(this, "exists", !1);
471
+ p(this, "wasRecentlyCreated", !1);
472
+ p(this, c, y.studly(s));
473
+ this.makeRelations(), this.makeAttributes(r);
474
+ }
475
+ cast(r, o) {
476
+ return r == null || !o ? r : ["boolean", "bool"].includes(o) ? !!r : ["date", "datetime", "immutable_date", "immutable_datetime"].includes(o) && typeof r == "string" ? new Date(r) : ["float", "double", "integer", "int"].includes(o) || o.startsWith("decimal:") ? Number(r) : r;
477
+ }
478
+ mutate(r, o) {
479
+ return r == null || !o ? r : ["boolean", "bool"].includes(o) ? !!r : ["date", "datetime", "immutable_date", "immutable_datetime"].includes(o) && r instanceof Date ? r.toISOString() : ["float", "double", "integer", "int"].includes(o) || o.startsWith("decimal:") ? Number(r) : r;
1310
480
  }
1311
481
  makeRelations() {
1312
- const { relations: s } = n.make("model").schema(e);
1313
- if (this._relations = {}, !s)
482
+ const { relations: r } = e.schema(s);
483
+ if (this._relations = {}, !r)
1314
484
  return;
1315
- const u = n.make("model").relationMap({}, e);
1316
- Object.entries(s).forEach(([l, a]) => {
1317
- const { type: f } = a, p = f in u ? u[f] : F;
1318
- this._relations[l] = new p(
1319
- { name: l, ...a },
1320
- n.make(),
485
+ const o = e.getRelationConstructors(s);
486
+ Object.entries(r).forEach(([a, h]) => {
487
+ const { type: d } = h, v = d in o ? o[d] : N;
488
+ this._relations[a] = new v(
489
+ { model: e, route: i },
490
+ { name: a, ...h },
1321
491
  this,
1322
492
  null
1323
493
  );
1324
494
  });
1325
495
  }
1326
- makeAttributes(s) {
1327
- const { relations: u } = n.make("model").schema(e), l = Object.keys(u || {}), a = d.omit(s, l);
1328
- if (this.fillable.filter((f) => !(f in a)).forEach((f) => {
1329
- a[f] = null;
1330
- }), u && Object.keys(u).forEach((f) => {
1331
- this.relation(d.camelCase(f)).make(s[f]);
1332
- }), !this.validateJsonObject(a)) {
1333
- if (n.isProduction())
1334
- throw new TypeError(`[Luminix] Invalid attributes for model "${e}"`);
1335
- n.make("log").warning(`Invalid attributes for model "${e}".
496
+ makeAttributes(r) {
497
+ const { relations: o } = e.schema(s), a = Object.keys(o || {}), h = m.omit(r, ...a);
498
+ if (this.fillable.filter((d) => !(d in h)).forEach((d) => {
499
+ h[d] = null;
500
+ }), o && Object.keys(o).forEach((d) => {
501
+ this.relation(y.camel(d)).make(r[d]);
502
+ }), !this.validateJsonObject(h)) {
503
+ if (n.get("app.env", "production") === "production")
504
+ throw new TypeError(`[Luminix] Invalid attributes for model "${s}"`);
505
+ t.warning(`Invalid attributes for model "${s}".
1336
506
  This will throw an error in production.`, {
1337
- attributes: s,
1338
- abstract: e
507
+ attributes: r,
508
+ abstract: s
1339
509
  });
1340
510
  }
1341
- this._attributes.set(".", a), this._original = a, this._changedKeys.splice(0, this._changedKeys.length);
511
+ this._attributes.set(".", h), this._original = h, this._changedKeys.splice(0, this._changedKeys.length);
1342
512
  }
1343
513
  makePrimaryKeyReplacer() {
1344
514
  return {
1345
515
  [this.getKeyName()]: this.getKey()
1346
516
  };
1347
517
  }
1348
- dispatchChangeEvent(s) {
518
+ dispatchChangeEvent(r) {
1349
519
  this.emit("change", {
1350
- value: s
520
+ value: r,
521
+ source: this
1351
522
  });
1352
523
  }
1353
- dispatchCreateEvent(s) {
524
+ dispatchCreateEvent(r) {
1354
525
  this.emit("create", {
1355
- value: s
1356
- }), n.make("model").emit("create", {
1357
- class: e,
1358
- model: this
526
+ value: r,
527
+ source: this
528
+ }), e.emit("create", {
529
+ class: s,
530
+ model: this,
531
+ source: e
1359
532
  });
1360
533
  }
1361
- dispatchUpdateEvent(s) {
534
+ dispatchUpdateEvent(r) {
1362
535
  this.emit("update", {
1363
- value: s
1364
- }), n.make("model").emit("update", {
1365
- class: e,
1366
- model: this
536
+ value: r,
537
+ source: this
538
+ }), e.emit("update", {
539
+ class: s,
540
+ model: this,
541
+ source: e
1367
542
  });
1368
543
  }
1369
544
  dispatchSaveEvent() {
1370
545
  this.emit("save", {
1371
- value: this.diff()
1372
- }), n.make("model").emit("save", {
1373
- class: e,
1374
- model: this
546
+ value: this.diff(),
547
+ source: this
548
+ }), e.emit("save", {
549
+ class: s,
550
+ model: this,
551
+ source: e
1375
552
  });
1376
553
  }
1377
- dispatchDeleteEvent(s = !1) {
554
+ dispatchDeleteEvent(r = !1) {
1378
555
  this.emit("delete", {
1379
- force: s,
1380
- [this.getKeyName()]: this.getKey()
1381
- }), n.make("model").emit("delete", {
1382
- class: e,
556
+ force: r,
557
+ [this.getKeyName()]: this.getKey(),
558
+ source: this
559
+ }), e.emit("delete", {
560
+ class: s,
1383
561
  model: this,
1384
- force: s
562
+ source: e,
563
+ force: r
1385
564
  });
1386
565
  }
1387
566
  dispatchRestoreEvent() {
1388
567
  this.emit("restore", {
1389
- value: this.attributes
1390
- }), n.make("model").emit("restore", {
1391
- class: e,
1392
- model: this
568
+ value: this.attributes,
569
+ source: this
570
+ }), e.emit("restore", {
571
+ class: s,
572
+ model: this,
573
+ source: e
1393
574
  });
1394
575
  }
1395
- dispatchErrorEvent(s, u) {
576
+ dispatchErrorEvent(r, o) {
1396
577
  this.emit("error", {
1397
- error: s,
1398
- operation: u
1399
- }), n.make("model").emit("error", {
1400
- class: e,
578
+ error: r,
579
+ operation: o,
580
+ source: this
581
+ }), e.emit("error", {
582
+ class: s,
1401
583
  model: this,
1402
- error: s,
1403
- operation: u
584
+ source: e,
585
+ error: r,
586
+ operation: o
1404
587
  });
1405
588
  }
1406
- updateChangedKeys(s) {
1407
- const u = (l, a) => typeof l == "object" && l !== null ? d.isEqual(l, a) : l == a;
1408
- !this._changedKeys.includes(s) && !u(d.get(this._original, s), this._attributes.get(s)) ? this._changedKeys.push(s) : this._changedKeys.includes(s) && u(d.get(this._original, s), this._attributes.get(s)) && this._changedKeys.splice(this._changedKeys.indexOf(s), 1);
589
+ updateChangedKeys(r) {
590
+ const o = (a, h) => typeof a == "object" && a !== null ? m.isEqual(a, h) : a == h;
591
+ !this._changedKeys.includes(r) && !o(m.get(this._original, r), this._attributes.get(r)) ? this._changedKeys.push(r) : this._changedKeys.includes(r) && o(m.get(this._original, r), this._attributes.get(r)) && this._changedKeys.splice(this._changedKeys.indexOf(r), 1);
1409
592
  }
1410
- validateJsonObject(s) {
1411
- return typeof s != "object" || s === null ? !1 : Object.entries(s).every(([, u]) => ["boolean", "number", "string"].includes(typeof u) || u === null || this.validateJsonObject(u) || Array.isArray(u) && u.every((l) => this.validateJsonObject(l)));
593
+ validateJsonObject(r) {
594
+ return typeof r != "object" || r === null ? !1 : Object.entries(r).every(([, o]) => ["boolean", "number", "string"].includes(typeof o) || o === null || this.validateJsonObject(o) || Array.isArray(o) && o.every((a) => this.validateJsonObject(a)));
1412
595
  }
1413
596
  get attributes() {
1414
597
  return this._attributes.all();
@@ -1420,20 +603,20 @@ function Ve(n, e) {
1420
603
  return this._relations;
1421
604
  }
1422
605
  get fillable() {
1423
- return n.make("model").schema(e).fillable;
606
+ return e.schema(s).fillable;
1424
607
  }
1425
608
  get primaryKey() {
1426
- return n.make("model").schema(e).primaryKey;
609
+ return e.schema(s).primaryKey;
1427
610
  }
1428
611
  get timestamps() {
1429
- return n.make("model").schema(e).timestamps;
612
+ return e.schema(s).timestamps;
1430
613
  }
1431
614
  // get softDeletes() {
1432
- // return app.make('model').schema(abstract).softDeletes;
615
+ // return ModelFacade.schema(abstract).softDeletes;
1433
616
  // }
1434
617
  get casts() {
1435
618
  return {
1436
- ...n.make("model").schema(e).casts,
619
+ ...e.schema(s).casts,
1437
620
  ...this.timestamps ? { created_at: "datetime", updated_at: "datetime" } : {}
1438
621
  // ...this.softDeletes ? { deleted_at: 'datetime' } : {},
1439
622
  };
@@ -1441,36 +624,36 @@ function Ve(n, e) {
1441
624
  get isDirty() {
1442
625
  return this._changedKeys.length > 0;
1443
626
  }
1444
- getAttribute(s) {
1445
- let u = this._attributes.get(s, null);
1446
- s in this.casts && (u = this.cast(u, this.casts[s]));
1447
- const l = n.make("model")[`model${d.upperFirst(d.camelCase(e))}Get${d.upperFirst(d.camelCase(s))}Attribute`];
1448
- if (typeof l != "function")
1449
- throw new T("ModelFacade");
1450
- return l.bind(n.make("model"))(u, this);
1451
- }
1452
- setAttribute(s, u) {
1453
- const l = n.make("model")[`model${d.upperFirst(d.camelCase(e))}Set${d.upperFirst(d.camelCase(s))}Attribute`];
1454
- if (typeof l != "function")
1455
- throw new T("ModelFacade");
1456
- const a = l.bind(n.make("model"))(
1457
- this.mutate(u, this.casts[s]),
627
+ getAttribute(r) {
628
+ let o = this._attributes.get(r, null);
629
+ r in this.casts && (o = this.cast(o, this.casts[r]));
630
+ const a = e[`model${y.studly(s)}Get${y.studly(r)}Attribute`];
631
+ if (typeof a != "function")
632
+ throw new $("ModelFacade");
633
+ return a.bind(e)(o, this);
634
+ }
635
+ setAttribute(r, o) {
636
+ const a = e[`model${y.studly(s)}Set${y.studly(r)}Attribute`];
637
+ if (typeof a != "function")
638
+ throw new $("ModelFacade");
639
+ const h = a.bind(e)(
640
+ this.mutate(o, this.casts[r]),
1458
641
  this
1459
642
  );
1460
- if (!this.validateJsonObject({ [s]: a })) {
1461
- if (n.isProduction())
1462
- throw new TypeError(`[Luminix] Attribute "${s}" in model "${e}" must be a boolean, number, string or null`);
1463
- n.make("log").warning(`Invalid type for attribute "${s}" in model "${e}" after mutation.
643
+ if (!this.validateJsonObject({ [r]: h })) {
644
+ if (n.get("app.env", "production") === "production")
645
+ throw new TypeError(`[Luminix] Attribute "${r}" in model "${s}" must be a boolean, number, string or null`);
646
+ t.warning(`Invalid type for attribute "${r}" in model "${s}" after mutation.
1464
647
  This will throw an error in production.`, {
1465
- key: s,
1466
- value: u,
1467
- mutated: a,
1468
- cast: this.casts[s],
648
+ key: r,
649
+ value: o,
650
+ mutated: h,
651
+ cast: this.casts[r],
1469
652
  item: this.toJson()
1470
653
  });
1471
654
  return;
1472
655
  }
1473
- this._attributes.set(s, a), this.updateChangedKeys(s), this.dispatchChangeEvent({ [s]: a });
656
+ this._attributes.set(r, h), this.updateChangedKeys(r), this.dispatchChangeEvent({ [r]: h });
1474
657
  }
1475
658
  getKey() {
1476
659
  return this.getAttribute(this.primaryKey);
@@ -1478,390 +661,330 @@ function Ve(n, e) {
1478
661
  getKeyName() {
1479
662
  return this.primaryKey;
1480
663
  }
1481
- fill(s) {
1482
- const u = d.pick(s, this.fillable), l = Object.entries(u).reduce((a, [f, p]) => {
1483
- const w = n.make("model")[`model${d.upperFirst(d.camelCase(e))}Set${d.upperFirst(d.camelCase(f))}Attribute`];
1484
- if (typeof w != "function")
1485
- throw new T("ModelFacade");
1486
- return a[f] = w.bind(n.make("model"))(
1487
- this.mutate(p, this.casts[f]),
664
+ fill(r) {
665
+ const o = m.pick(r, ...this.fillable), a = Object.entries(o).reduce((h, [d, v]) => {
666
+ const b = e[`model${y.studly(s)}Set${y.studly(d)}Attribute`];
667
+ if (typeof b != "function")
668
+ throw new $("ModelFacade");
669
+ return h[d] = b.bind(e)(
670
+ this.mutate(v, this.casts[d]),
1488
671
  this
1489
- ), a;
672
+ ), h;
1490
673
  }, {});
1491
- if (!this.validateJsonObject(l)) {
1492
- if (n.isProduction())
1493
- throw new TypeError(`[Luminix] Invalid attributes for model "${e}"`);
1494
- n.make("log").warning(`Invalid attributes for model "${e}" after mutation.
674
+ if (!this.validateJsonObject(a)) {
675
+ if (n.get("app.env", "production") === "production")
676
+ throw new TypeError(`[Luminix] Invalid attributes for model "${s}"`);
677
+ t.warning(`Invalid attributes for model "${s}" after mutation.
1495
678
  This will throw an error in production.`, {
1496
- attributes: s,
1497
- mutatedAttributes: l,
679
+ attributes: r,
680
+ mutatedAttributes: a,
1498
681
  item: this.toJson(),
1499
682
  casts: this.casts
1500
683
  });
1501
684
  return;
1502
685
  }
1503
- this._attributes.merge(".", l), Object.keys(l).forEach((a) => this.updateChangedKeys(a)), this.dispatchChangeEvent(l);
686
+ this._attributes.merge(".", a), Object.keys(a).forEach((h) => this.updateChangedKeys(h)), this.dispatchChangeEvent(a);
1504
687
  }
1505
688
  dump() {
1506
- n.make("log").info({
689
+ t.info({
1507
690
  ...this.toJson(),
1508
- [Symbol.toStringTag]: d.upperFirst(d.camelCase(e))
691
+ [Symbol.toStringTag]: y.studly(s)
1509
692
  });
1510
693
  }
1511
694
  toJson() {
1512
- const s = Object.entries(this.relations).reduce((l, [a, f]) => (f.isLoaded() && (f.isSingle() ? l[d.snakeCase(a)] = f.getLoadedItems().toJson() : f.isMultiple() && (l[d.snakeCase(a)] = f.getLoadedItems().map((p) => p.toJson()).all())), l), {}), u = n.make("model")[`model${d.upperFirst(d.camelCase(e))}Json`];
1513
- if (typeof u != "function")
1514
- throw new T("ModelFacade");
1515
- return u.bind(n.make("model"))({
695
+ const r = Object.entries(this.relations).reduce((a, [h, d]) => (d.isLoaded() && (d.isSingle() ? a[y.snake(h)] = d.getLoadedItems().toJson() : d.isMultiple() && (a[y.snake(h)] = d.getLoadedItems().map((v) => v.toJson()).all())), a), {}), o = e[`model${y.studly(s)}Json`];
696
+ if (typeof o != "function")
697
+ throw new $("ModelFacade");
698
+ return o.bind(e)({
1516
699
  ...this.attributes,
1517
- ...s
700
+ ...r
1518
701
  }, this);
1519
702
  }
1520
703
  diff() {
1521
- return this._changedKeys.reduce((s, u) => (s[u] = this._attributes.get(u), s), {});
704
+ return this._changedKeys.reduce((r, o) => (r[o] = this._attributes.get(o), r), {});
1522
705
  }
1523
706
  getType() {
1524
- return e;
707
+ return s;
1525
708
  }
1526
- relation(s) {
1527
- if (s === d.camelCase(s))
1528
- return this.relations[d.snakeCase(s)];
709
+ relation(r) {
710
+ if (r === y.camel(r))
711
+ return this.relations[y.snake(r)];
1529
712
  }
1530
- getErrorBag(s) {
1531
- return `${this.exists ? `${e}[${this.getKey()}].` : `${e}.`}${s}`;
713
+ getErrorBag(r) {
714
+ return `${this.exists ? `${s}[${this.getKey()}].` : `${s}.`}${r}`;
1532
715
  }
1533
716
  getRouteForSave() {
1534
717
  return this.exists ? [
1535
- `luminix.${e}.update`,
718
+ `luminix.${s}.update`,
1536
719
  this.makePrimaryKeyReplacer()
1537
- ] : `luminix.${e}.store`;
720
+ ] : `luminix.${s}.store`;
1538
721
  }
1539
722
  getRouteForUpdate() {
1540
723
  return [
1541
- `luminix.${e}.update`,
724
+ `luminix.${s}.update`,
1542
725
  this.makePrimaryKeyReplacer()
1543
726
  ];
1544
727
  }
1545
728
  getRouteForDelete() {
1546
729
  return [
1547
- `luminix.${e}.destroy`,
730
+ `luminix.${s}.destroy`,
1548
731
  this.makePrimaryKeyReplacer()
1549
732
  ];
1550
733
  }
1551
734
  getRouteForRefresh() {
1552
735
  return [
1553
- `luminix.${e}.show`,
736
+ `luminix.${s}.show`,
1554
737
  this.makePrimaryKeyReplacer()
1555
738
  ];
1556
739
  }
1557
740
  getLabel() {
1558
- const { labeledBy: s } = n.make("model").schema(e);
1559
- return this.getAttribute(s);
741
+ const { labeledBy: r } = e.schema(s);
742
+ return this.getAttribute(r);
1560
743
  }
1561
- async refresh() {
744
+ async refresh(r) {
1562
745
  if (!this.exists)
1563
- throw new Se(e, "refresh");
1564
- const { data: s } = await n.make("route").call(
746
+ throw new ae(s, "refresh");
747
+ const o = await i.call(
1565
748
  this.getRouteForRefresh(),
1566
- { errorBag: this.getErrorBag("fetch") }
749
+ r,
750
+ this.getErrorBag("fetch")
1567
751
  );
1568
- this.makeAttributes(s);
752
+ this.makeAttributes(o.json());
1569
753
  }
1570
- async save(s = {}) {
754
+ async save(r = {}, o) {
1571
755
  try {
1572
756
  const {
1573
- additionalPayload: u = {},
1574
- sendsOnlyModifiedFields: l = !0
1575
- } = s, a = this.exists, f = {
1576
- ...d.pick(
1577
- l && a ? this.diff() : this.attributes,
1578
- this.fillable
757
+ additionalPayload: a = {},
758
+ sendsOnlyModifiedFields: h = !0
759
+ } = r, d = this.exists, v = {
760
+ ...m.pick(
761
+ h && d ? this.diff() : this.attributes,
762
+ ...this.fillable
1579
763
  ),
1580
- ...u
764
+ ...a
1581
765
  };
1582
- if (d.isEmpty(f))
766
+ if (m.isEmpty(v))
1583
767
  return;
1584
- const p = await n.make("route").call(
768
+ const b = await i.call(
1585
769
  this.getRouteForSave(),
1586
- {
1587
- data: f,
1588
- errorBag: this.getErrorBag(a ? "update" : "store")
1589
- }
770
+ (k) => o ? o(k.withData(v)) : k.withData(v),
771
+ this.getErrorBag(d ? "update" : "store")
1590
772
  );
1591
- if ([200, 201].includes(p.status))
1592
- return this.makeAttributes(p.data), this.exists = !0, this.dispatchSaveEvent(), a ? this.dispatchUpdateEvent(p.data) : (this.wasRecentlyCreated = !0, this.dispatchCreateEvent(p.data)), p;
1593
- throw p;
1594
- } catch (u) {
1595
- throw this.dispatchErrorEvent(u, "save"), u;
773
+ if (b.successful())
774
+ return this.makeAttributes(b.json()), this.exists = !0, this.dispatchSaveEvent(), d ? this.dispatchUpdateEvent(b.json()) : (this.wasRecentlyCreated = !0, this.dispatchCreateEvent(b.json())), b;
775
+ throw b;
776
+ } catch (a) {
777
+ throw this.dispatchErrorEvent(a, "save"), a;
1596
778
  }
1597
779
  }
1598
780
  async push() {
1599
- throw new b();
781
+ throw new Se();
1600
782
  }
1601
783
  async delete() {
1602
784
  try {
1603
- const s = await n.make("route").call(
785
+ const r = await i.call(
1604
786
  this.getRouteForDelete(),
1605
- { errorBag: this.getErrorBag("delete") }
787
+ void 0,
788
+ this.getErrorBag("delete")
1606
789
  );
1607
- if (s.status === 204)
1608
- return this.dispatchDeleteEvent(), s;
1609
- throw s;
1610
- } catch (s) {
1611
- throw this.dispatchErrorEvent(s, "delete"), s;
790
+ if (r.noContent())
791
+ return this.dispatchDeleteEvent(), r;
792
+ throw r;
793
+ } catch (r) {
794
+ throw this.dispatchErrorEvent(r, "delete"), r;
1612
795
  }
1613
796
  }
1614
- async update(s) {
797
+ async update(r, o) {
1615
798
  try {
1616
- const u = await n.make("route").call(
799
+ const a = await i.call(
1617
800
  this.getRouteForUpdate(),
1618
- {
1619
- data: s,
1620
- errorBag: this.getErrorBag("update")
1621
- }
801
+ (h) => o ? o(h.withData(r)) : h.withData(r),
802
+ this.getErrorBag("update")
1622
803
  );
1623
- if (u.status === 200) {
1624
- this.makeAttributes(u.data), this.dispatchUpdateEvent(u.data);
804
+ if (a.ok()) {
805
+ this.makeAttributes(a.json()), this.dispatchUpdateEvent(a.json());
1625
806
  return;
1626
807
  }
1627
- throw u;
1628
- } catch (u) {
1629
- throw this.dispatchErrorEvent(u, "save"), u;
808
+ throw a;
809
+ } catch (a) {
810
+ throw this.dispatchErrorEvent(a, "save"), a;
1630
811
  }
1631
812
  }
1632
813
  async forceDelete() {
1633
814
  try {
1634
- const s = await n.make("route").call(
815
+ const r = await i.call(
1635
816
  this.getRouteForDelete(),
1636
- {
1637
- params: { force: !0 },
1638
- errorBag: this.getErrorBag("forceDelete")
1639
- }
817
+ (o) => o.withQueryParameters({ force: !0 }),
818
+ this.getErrorBag("forceDelete")
1640
819
  );
1641
- if (s.status === 204)
1642
- return this.dispatchDeleteEvent(!0), s;
1643
- throw s;
1644
- } catch (s) {
1645
- throw this.dispatchErrorEvent(s, "forceDelete"), s;
820
+ if (r.noContent())
821
+ return this.dispatchDeleteEvent(!0), r;
822
+ throw r;
823
+ } catch (r) {
824
+ throw this.dispatchErrorEvent(r, "forceDelete"), r;
1646
825
  }
1647
826
  }
1648
827
  async restore() {
1649
828
  try {
1650
- const s = await n.make("route").call(
829
+ const r = await i.call(
1651
830
  this.getRouteForUpdate(),
1652
- {
1653
- params: { restore: !0 },
1654
- errorBag: this.getErrorBag("restore")
1655
- }
831
+ (o) => o.withQueryParameters({ restore: !0 }),
832
+ this.getErrorBag("restore")
1656
833
  );
1657
- if (s.status === 200)
1658
- return this.dispatchRestoreEvent(), s;
1659
- throw s;
1660
- } catch (s) {
1661
- throw this.dispatchErrorEvent(s, "restore"), s;
834
+ if (r.ok())
835
+ return this.dispatchRestoreEvent(), r;
836
+ throw r;
837
+ } catch (r) {
838
+ throw this.dispatchErrorEvent(r, "restore"), r;
1662
839
  }
1663
840
  }
1664
841
  static getSchemaName() {
1665
- return e;
842
+ return s;
1666
843
  }
1667
844
  static getSchema() {
1668
- return n.make("model").schema(e);
845
+ return e.schema(s);
1669
846
  }
1670
847
  static query() {
1671
- return new He(n.make(), e);
848
+ return new Ee(
849
+ { config: n, route: i, model: e },
850
+ s
851
+ );
1672
852
  }
1673
- static where(...s) {
1674
- return this.query().where(...s);
853
+ static where(...r) {
854
+ return this.query().where(...r);
1675
855
  }
1676
- static whereNull(s) {
1677
- return this.query().whereNull(s);
856
+ static whereNull(r) {
857
+ return this.query().whereNull(r);
1678
858
  }
1679
- static whereNotNull(s) {
1680
- return this.query().whereNotNull(s);
859
+ static whereNotNull(r) {
860
+ return this.query().whereNotNull(r);
1681
861
  }
1682
- static whereBetween(s, u) {
1683
- return this.query().whereBetween(s, u);
862
+ static whereBetween(r, o) {
863
+ return this.query().whereBetween(r, o);
1684
864
  }
1685
- static whereNotBetween(s, u) {
1686
- return this.query().whereNotBetween(s, u);
865
+ static whereNotBetween(r, o) {
866
+ return this.query().whereNotBetween(r, o);
1687
867
  }
1688
- static orderBy(s, u = "asc") {
1689
- return this.query().orderBy(s, u);
868
+ static orderBy(r, o = "asc") {
869
+ return this.query().orderBy(r, o);
1690
870
  }
1691
- static searchBy(s) {
1692
- return this.query().searchBy(s);
871
+ static searchBy(r) {
872
+ return this.query().searchBy(r);
1693
873
  }
1694
874
  static minified() {
1695
875
  return this.query().minified();
1696
876
  }
1697
- static limit(s) {
1698
- return this.query().limit(s);
877
+ static limit(r) {
878
+ return this.query().limit(r);
1699
879
  }
1700
- static get(s = 1, u) {
1701
- return this.query().get(s, u);
880
+ static get(r = 1, o) {
881
+ return this.query().get(r, o);
1702
882
  }
1703
- static find(s) {
1704
- return this.query().find(s);
883
+ static find(r) {
884
+ return this.query().find(r);
1705
885
  }
1706
886
  static first() {
1707
887
  return this.query().first();
1708
888
  }
1709
- static async create(s) {
1710
- const u = n.make("model").make(e), l = new u();
1711
- return l.fill(s), await l.save(), l;
889
+ static async create(r) {
890
+ const o = e.make(s), a = new o();
891
+ return a.fill(r), await a.save(), a;
1712
892
  }
1713
- static async update(s, u) {
1714
- const l = n.make("model").make(e), a = new l({ id: s });
1715
- return a.fill(u), a.exists = !0, await a.save(), a;
893
+ static async update(r, o) {
894
+ const a = e.make(s), h = new a({ id: r });
895
+ return h.fill(o), h.exists = !0, await h.save(), h;
1716
896
  }
1717
- static delete(s) {
1718
- if (Array.isArray(s))
1719
- return n.make("route").call(`luminix.${e}.destroyMany`, {
1720
- params: { ids: s },
1721
- errorBag: `${e}.deleteMany`
1722
- });
1723
- const u = n.make("model").make(e);
1724
- return new u({ id: s }).delete();
1725
- }
1726
- static async restore(s) {
1727
- if (Array.isArray(s))
1728
- return n.make("route").call(`luminix.${e}.restoreMany`, {
1729
- data: { ids: s },
1730
- errorBag: `${e}.restoreMany`
1731
- });
1732
- const u = n.make("model").make(e);
1733
- return new u({ id: s }).restore();
1734
- }
1735
- static forceDelete(s) {
1736
- if (Array.isArray(s))
1737
- return n.make("route").call(`luminix.${e}.destroyMany`, {
1738
- params: { ids: s, force: !0 },
1739
- errorBag: `${e}.forceDeleteMany`
1740
- });
1741
- const u = n.make("model").make(e);
1742
- return new u({ id: s }).forceDelete();
897
+ static delete(r) {
898
+ if (Array.isArray(r))
899
+ return i.call(
900
+ `luminix.${s}.destroyMany`,
901
+ (h) => h.withQueryParameters({ ids: r }),
902
+ `${s}.deleteMany`
903
+ );
904
+ const o = e.make(s);
905
+ return new o({ id: r }).delete();
906
+ }
907
+ static async restore(r) {
908
+ if (Array.isArray(r))
909
+ return i.call(
910
+ `luminix.${s}.restoreMany`,
911
+ (h) => h.withData({ ids: r }),
912
+ `${s}.restoreMany`
913
+ );
914
+ const o = e.make(s);
915
+ return new o({ id: r }).restore();
916
+ }
917
+ static forceDelete(r) {
918
+ if (Array.isArray(r))
919
+ return i.call(
920
+ `luminix.${s}.destroyMany`,
921
+ (h) => h.withQueryParameters({ ids: r, force: !0 }),
922
+ `${s}.forceDeleteMany`
923
+ );
924
+ const o = e.make(s);
925
+ return new o({ id: r }).forceDelete();
1743
926
  }
1744
927
  static singular() {
1745
- return n.make("model").schema(e).displayName.singular;
928
+ return e.schema(s).displayName.singular;
1746
929
  }
1747
930
  static plural() {
1748
- return n.make("model").schema(e).displayName.plural;
1749
- }
1750
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
1751
- on(s, u) {
1752
- throw new b();
1753
- }
1754
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
1755
- once(s, u) {
1756
- throw new b();
931
+ return e.schema(s).displayName.plural;
1757
932
  }
1758
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
1759
- emit(s, u) {
1760
- throw new b();
1761
- }
1762
- }
1763
- return m(t, "name", d.upperFirst(d.camelCase(e))), S(t);
933
+ }, p(l, "name", y.studly(s)), l;
1764
934
  }
1765
- function Xe(n, e, t) {
1766
- var r, i;
1767
- return class extends (i = t, r = Symbol.toStringTag, i) {
1768
- constructor(u = {}) {
1769
- super(u);
1770
- m(this, r, d.upperFirst(d.camelCase(e)));
935
+ function Re(n, t, e) {
936
+ var i, s;
937
+ return class extends (s = e, i = Symbol.toStringTag, s) {
938
+ constructor(g = {}) {
939
+ super(g);
940
+ p(this, i, y.studly(t));
1771
941
  return new Proxy(this, {
1772
- get: (l, a) => {
1773
- if (a === "__isModel")
942
+ get: (l, u) => {
943
+ if (u === "__isModel")
1774
944
  return !0;
1775
- if (a in l)
1776
- return Reflect.get(l, a);
1777
- if (a !== d.camelCase(a))
1778
- return;
1779
- const f = d.snakeCase(a);
1780
- if (Object.keys(l.attributes).includes(f))
1781
- return l.getAttribute(f);
1782
- if (Object.keys(l.relations).includes(f))
1783
- return l.relations[f].getLoadedItems();
1784
- if (a.endsWith("Relation") && Object.keys(l.relations).includes(d.snakeCase(a.slice(0, -8))))
1785
- return () => l.relation(a.slice(0, -8));
1786
- if (n.model.hasReducer(`model${l.constructor.name}Get${d.upperFirst(a)}Attribute`)) {
1787
- const p = n.model[`model${l.constructor.name}Get${d.upperFirst(a)}Attribute`];
1788
- if (typeof p != "function")
1789
- throw new T("ModelFacade");
1790
- return p.bind(n.model)(void 0, l);
945
+ if (Reflect.has(l, u))
946
+ return Reflect.get(l, u);
947
+ if (Object.keys(l.attributes).includes(u))
948
+ return l.getAttribute(u);
949
+ if (Object.keys(l.relations).includes(u))
950
+ return l.relations[u].getLoadedItems();
951
+ if (u.endsWith("Relation") && Object.keys(l.relations).includes(y.snake(u.slice(0, -8))))
952
+ return () => l.relation(u.slice(0, -8));
953
+ if (n.hasReducer(`model${y.studly(l.getType())}Get${y.studly(u)}Attribute`)) {
954
+ const r = n[`model${y.studly(l.getType())}Get${y.studly(u)}Attribute`];
955
+ if (typeof r != "function")
956
+ throw new $("ModelFacade");
957
+ return r.bind(n)(void 0, l);
1791
958
  }
1792
- return Reflect.get(l, a);
959
+ return Reflect.get(l, u);
1793
960
  },
1794
- set: (l, a, f) => a in l && typeof l[a] != "function" ? Reflect.set(l, a, f) : (l.setAttribute(
1795
- d.snakeCase(a),
1796
- f
961
+ set: (l, u, r) => u in l && typeof l[u] != "function" ? Reflect.set(l, u, r) : (l.setAttribute(
962
+ y.snake(u),
963
+ r
1797
964
  ), !0)
1798
965
  });
1799
966
  }
1800
967
  };
1801
968
  }
1802
- var me, pe;
1803
- class Ye extends (pe = Error, me = Symbol.toStringTag, pe) {
1804
- constructor(t, r) {
1805
- super(`[Luminix] Cannot create reducer '${t}' on '${r}' as it is a reserved property`);
1806
- m(this, me, "ReducerOverrideException");
1807
- }
1808
- }
1809
- function Ae(n) {
1810
- return class extends n {
1811
- constructor(...t) {
1812
- super(...t);
1813
- m(this, "reducers", {});
1814
- return new Proxy(this, {
1815
- get(r, i, s) {
1816
- return typeof i == "symbol" || i in r ? Reflect.get(r, i, s) : (u, ...l) => {
1817
- const { [i]: a = c() } = r.reducers;
1818
- return Pe(u) ? N(u, (f) => a.sortBy("priority").reduce((p, w) => w.callback(p, ...l), f)) : a.sortBy("priority").reduce((f, p) => p.callback(f, ...l), u);
1819
- };
1820
- }
1821
- });
1822
- }
1823
- reducer(t, r, i = 10) {
1824
- if (t in this)
1825
- throw new Ye(t, this);
1826
- return this.reducers[t] || (this.reducers[t] = c()), this.reducers[t].push({ callback: r, priority: i }), () => this.removeReducer(t, r);
1827
- }
1828
- removeReducer(t, r) {
1829
- const i = this.reducers[t].search((s) => s.callback === r);
1830
- i !== !1 && this.reducers[t].pull(i);
1831
- }
1832
- getReducer(t) {
1833
- return this.reducers[t] || (this.reducers[t] = c()), this.reducers[t];
1834
- }
1835
- hasReducer(t) {
1836
- return !!this.reducers[t] && this.reducers[t].count() > 0;
1837
- }
1838
- clearReducer(t) {
1839
- this.reducers[t].splice(0, this.reducers[t].count());
1840
- }
1841
- flushReducers() {
1842
- Object.values(this.reducers).forEach((t) => t.splice(0, t.count()));
1843
- }
1844
- };
1845
- }
1846
- var ge, ye;
1847
- class W extends (ye = Error, ge = Symbol.toStringTag, ye) {
1848
- constructor(t) {
1849
- super(`[Luminix] Model "${t}" not found`);
1850
- m(this, ge, "ModelNotFoundException");
969
+ var W, z;
970
+ class j extends (z = Error, W = Symbol.toStringTag, z) {
971
+ constructor(e) {
972
+ super(`[Luminix] Model "${e}" not found`);
973
+ p(this, W, "ModelNotFoundException");
1851
974
  }
1852
975
  }
1853
- var we, be;
1854
- class B extends (be = TypeError, we = Symbol.toStringTag, be) {
1855
- constructor(t, r, i) {
1856
- super(`[Luminix] "${t}" expects a related model of type "${r}". Received "${i}" instead.`);
1857
- m(this, we, "ModelInvalidRelatedTypeException");
976
+ var X, Y;
977
+ class A extends (Y = TypeError, X = Symbol.toStringTag, Y) {
978
+ constructor(e, i, s) {
979
+ super(`[Luminix] "${e}" expects a related model of type "${i}". Received "${s}" instead.`);
980
+ p(this, X, "ModelInvalidRelatedTypeException");
1858
981
  }
1859
982
  }
1860
- class Re extends F {
1861
- constructor(e, t, r, i = null) {
1862
- if (!E(i) && i !== null)
1863
- throw new M("BelongsTo.constructor()", "Model or null");
1864
- super(e, t, r, i), this.meta = e, this.facades = t, this.parent = r, this.items = i;
983
+ class ue extends N {
984
+ constructor(t, e, i, s = null) {
985
+ if (!m.isModel(s) && s !== null)
986
+ throw new w("BelongsTo.constructor()", "Model or null");
987
+ super(t, e, i, s), this.services = t, this.meta = e, this.parent = i, this.items = s;
1865
988
  }
1866
989
  isSingle() {
1867
990
  return !0;
@@ -1870,21 +993,21 @@ class Re extends F {
1870
993
  return !1;
1871
994
  }
1872
995
  query() {
1873
- const e = super.query(), t = this.guessInverseRelation();
1874
- return e.where(t, this.parent.getKey()), e.lock(`where.${t}`), e;
996
+ const t = super.query(), e = this.guessInverseRelation();
997
+ return t.where(e, this.parent.getKey()), t.lock(`where.${e}`), t;
1875
998
  }
1876
999
  get() {
1877
1000
  return this.query().first();
1878
1001
  }
1879
- async associate(e) {
1880
- if (!E(e))
1881
- throw new M("BelongsTo.associate()");
1882
- if (e.getType() !== this.getRelated().getSchemaName())
1883
- throw new B("BelongsTo.associate()", this.getRelated().getSchemaName(), e.getType());
1884
- if (!e.exists)
1885
- throw new Se(this.getRelated().getSchemaName(), "save");
1002
+ async associate(t) {
1003
+ if (!m.isModel(t))
1004
+ throw new w("BelongsTo.associate()");
1005
+ if (t.getType() !== this.getRelated().getSchemaName())
1006
+ throw new A("BelongsTo.associate()", this.getRelated().getSchemaName(), t.getType());
1007
+ if (!t.exists)
1008
+ throw new ae(this.getRelated().getSchemaName(), "save");
1886
1009
  return this.parent.update({
1887
- [this.getForeignKey()]: e.getKey()
1010
+ [this.getForeignKey()]: t.getKey()
1888
1011
  });
1889
1012
  }
1890
1013
  dissociate() {
@@ -1893,11 +1016,11 @@ class Re extends F {
1893
1016
  });
1894
1017
  }
1895
1018
  }
1896
- class ve extends F {
1897
- constructor(e, t, r, i = null) {
1898
- if (i !== null && !(i instanceof L && i.every(E)))
1899
- throw new M("BelongsToMany.constructor()", "Collection<Model> or null");
1900
- super(e, t, r, i), this.meta = e, this.facades = t, this.parent = r, this.items = i;
1019
+ class he extends N {
1020
+ constructor(t, e, i, s = null) {
1021
+ if (s !== null && !(s instanceof x && s.every(f)))
1022
+ throw new w("BelongsToMany.constructor()", "Collection<Model> or null");
1023
+ super(t, e, i, s), this.services = t, this.meta = e, this.parent = i, this.items = s;
1901
1024
  }
1902
1025
  isSingle() {
1903
1026
  return !1;
@@ -1906,11 +1029,11 @@ class ve extends F {
1906
1029
  return !0;
1907
1030
  }
1908
1031
  query() {
1909
- const e = super.query(), t = this.guessInverseRelation();
1910
- return e.where(t, this.parent.getKey()), e.lock(`where.${t}`), e;
1032
+ const t = super.query(), e = this.guessInverseRelation();
1033
+ return t.where(e, this.parent.getKey()), t.lock(`where.${e}`), t;
1911
1034
  }
1912
- get(e = 1, t) {
1913
- return this.query().get(e, t);
1035
+ get(t = 1, e) {
1036
+ return this.query().get(t, e);
1914
1037
  }
1915
1038
  all() {
1916
1039
  return this.query().all();
@@ -1918,104 +1041,95 @@ class ve extends F {
1918
1041
  first() {
1919
1042
  return this.query().first();
1920
1043
  }
1921
- find(e) {
1922
- return this.query().find(e);
1044
+ find(t) {
1045
+ return this.query().find(t);
1923
1046
  }
1924
- attachQuietly(e, t = {}) {
1925
- return this.facades.route.call([
1047
+ attachQuietly(t, e = {}) {
1048
+ return this.services.route.call([
1926
1049
  `luminix.${this.parent.getType()}.${this.getName()}:attach`,
1927
1050
  {
1928
1051
  [this.parent.getKeyName()]: this.parent.getKey(),
1929
- itemId: e
1052
+ itemId: t
1930
1053
  }
1931
- ], {
1932
- data: t,
1933
- errorBag: `${this.parent.getType()}[${this.parent.getKey()}].${this.getName()}:attach`
1934
- });
1054
+ ], (i) => i.withData(e));
1935
1055
  }
1936
- async attach(e, t = {}) {
1937
- if (await this.attachQuietly(e, t), this.items) {
1938
- const r = this.items.search((s) => s.getKey() === e), i = await this.getRelated().find(e);
1939
- if (!i)
1056
+ async attach(t, e = {}) {
1057
+ if (await this.attachQuietly(t, e), this.items) {
1058
+ const i = this.items.search((c) => c.getKey() === t), s = await this.getRelated().find(t);
1059
+ if (!s)
1940
1060
  return;
1941
- r !== !1 ? this.items.put(r, i) : this.items.push(i);
1061
+ i !== !1 ? this.items.put(i, s) : this.items.push(s);
1942
1062
  } else
1943
1063
  this.items = await this.all();
1944
1064
  }
1945
- async detachQuietly(e) {
1946
- await this.facades.route.call(
1065
+ async detachQuietly(t) {
1066
+ await this.services.route.call(
1947
1067
  [
1948
1068
  `luminix.${this.parent.getType()}.${this.getName()}:detach`,
1949
1069
  {
1950
1070
  [this.parent.getKeyName()]: this.parent.getKey(),
1951
- itemId: e
1071
+ itemId: t
1952
1072
  }
1953
- ],
1954
- {
1955
- errorBag: `${this.parent.getType()}[${this.parent.getKey()}].${this.getName()}:detach`
1956
- }
1073
+ ]
1074
+ // {
1075
+ // errorBag: `${this.parent.getType()}[${this.parent.getKey()}].${this.getName()}:detach`
1076
+ // }
1957
1077
  );
1958
1078
  }
1959
- async detach(e) {
1960
- if (await this.detachQuietly(e), this.items) {
1961
- const t = this.items.search((r) => r.getKey() === e);
1962
- t !== !1 && this.items.pull(t);
1079
+ async detach(t) {
1080
+ if (await this.detachQuietly(t), this.items) {
1081
+ const e = this.items.search((i) => i.getKey() === t);
1082
+ e !== !1 && this.items.pull(e);
1963
1083
  }
1964
1084
  }
1965
- async syncQuietly(e) {
1966
- await this.facades.route.call([
1085
+ async syncQuietly(t) {
1086
+ await this.services.route.call([
1967
1087
  `luminix.${this.parent.getType()}.${this.getName()}:sync`,
1968
1088
  {
1969
1089
  [this.parent.getKeyName()]: this.parent.getKey()
1970
1090
  }
1971
- ], {
1972
- data: e,
1973
- errorBag: `${this.parent.getType()}[${this.parent.getKey()}].${this.getName()}:sync`
1974
- });
1091
+ ], (e) => e.withData(t));
1975
1092
  }
1976
- async syncWithPivotValuesQuietly(e, t) {
1977
- await this.facades.route.call([
1093
+ async syncWithPivotValuesQuietly(t, e) {
1094
+ await this.services.route.call([
1978
1095
  `luminix.${this.parent.getType()}.${this.getName()}:sync`,
1979
1096
  {
1980
1097
  [this.parent.getKeyName()]: this.parent.getKey()
1981
1098
  }
1982
- ], {
1983
- data: e.map((r) => ({
1984
- [this.getRelated().getSchema().primaryKey]: r,
1985
- ...t
1986
- })),
1987
- errorBag: `${this.parent.getType()}[${this.parent.getKey()}].${this.getName()}:sync`
1988
- });
1099
+ ], (i) => i.withData(t.map((s) => ({
1100
+ [this.getRelated().getSchema().primaryKey]: s,
1101
+ ...e
1102
+ }))));
1989
1103
  }
1990
- async sync(e) {
1991
- await this.syncQuietly(e);
1992
- const t = await this.all();
1993
- this.items ? this.items.splice(0, this.items.count(), ...t) : this.items = t;
1104
+ async sync(t) {
1105
+ await this.syncQuietly(t);
1106
+ const e = await this.all();
1107
+ this.items ? this.items.splice(0, this.items.count(), ...e) : this.items = e;
1994
1108
  }
1995
- async syncWithPivotValues(e, t) {
1996
- await this.syncWithPivotValuesQuietly(e, t);
1997
- const r = await this.all();
1998
- this.items ? this.items.splice(0, this.items.count(), ...r) : this.items = r;
1109
+ async syncWithPivotValues(t, e) {
1110
+ await this.syncWithPivotValuesQuietly(t, e);
1111
+ const i = await this.all();
1112
+ this.items ? this.items.splice(0, this.items.count(), ...i) : this.items = i;
1999
1113
  }
2000
1114
  }
2001
- class k extends F {
1115
+ class K extends N {
2002
1116
  query() {
2003
- const e = super.query(), t = this.guessInverseRelation();
2004
- return e.where(t, this.parent.getKey()), e.lock(`where.${t}`), e;
1117
+ const t = super.query(), e = this.guessInverseRelation();
1118
+ return t.where(e, this.parent.getKey()), t.lock(`where.${e}`), t;
2005
1119
  }
2006
- async saveQuietly(e) {
2007
- if (!E(e))
2008
- throw new M("HasOneOrMany.saveQuietly()");
2009
- if (e.getType() !== this.getRelated().getSchemaName())
2010
- throw new B("HasOneOrMany.saveQuietly()", this.getRelated().getSchemaName(), e.getType());
2011
- e.setAttribute(this.getForeignKey(), this.parent.getKey()), await e.save();
1120
+ async saveQuietly(t) {
1121
+ if (!f(t))
1122
+ throw new w("HasOneOrMany.saveQuietly()");
1123
+ if (t.getType() !== this.getRelated().getSchemaName())
1124
+ throw new A("HasOneOrMany.saveQuietly()", this.getRelated().getSchemaName(), t.getType());
1125
+ t.setAttribute(this.getForeignKey(), this.parent.getKey()), await t.save();
2012
1126
  }
2013
1127
  }
2014
- class Ze extends k {
2015
- constructor(e, t, r, i = null) {
2016
- if (!E(i) && i !== null)
2017
- throw new M("HasOne.constructor()", "Model or null");
2018
- super(e, t, r, i), this.meta = e, this.facades = t, this.parent = r, this.items = i;
1128
+ class Ae extends K {
1129
+ constructor(t, e, i, s = null) {
1130
+ if (!f(s) && s !== null)
1131
+ throw new w("HasOne.constructor()", "Model or null");
1132
+ super(t, e, i, s), this.services = t, this.meta = e, this.parent = i, this.items = s;
2019
1133
  }
2020
1134
  isSingle() {
2021
1135
  return !0;
@@ -2026,15 +1140,15 @@ class Ze extends k {
2026
1140
  get() {
2027
1141
  return this.query().first();
2028
1142
  }
2029
- async save(e) {
2030
- await this.saveQuietly(e), this.items = e;
1143
+ async save(t) {
1144
+ await this.saveQuietly(t), this.items = t;
2031
1145
  }
2032
1146
  }
2033
- class ze extends k {
2034
- constructor(e, t, r, i = null) {
2035
- if (i !== null && !(i instanceof L && i.every(E)))
2036
- throw new M("HasMany.constructor()", "Collection<Model> or null");
2037
- super(e, t, r, i), this.meta = e, this.facades = t, this.parent = r, this.items = i;
1147
+ class Ne extends K {
1148
+ constructor(t, e, i, s = null) {
1149
+ if (s !== null && !(s instanceof x && s.every(f)))
1150
+ throw new w("HasMany.constructor()", "Collection<Model> or null");
1151
+ super(t, e, i, s), this.services = t, this.meta = e, this.parent = i, this.items = s;
2038
1152
  }
2039
1153
  isSingle() {
2040
1154
  return !1;
@@ -2042,8 +1156,8 @@ class ze extends k {
2042
1156
  isMultiple() {
2043
1157
  return !0;
2044
1158
  }
2045
- get(e = 1, t) {
2046
- return this.query().get(e, t);
1159
+ get(t = 1, e) {
1160
+ return this.query().get(t, e);
2047
1161
  }
2048
1162
  all() {
2049
1163
  return this.query().all();
@@ -2051,48 +1165,48 @@ class ze extends k {
2051
1165
  first() {
2052
1166
  return this.query().first();
2053
1167
  }
2054
- find(e) {
2055
- return this.query().find(e);
1168
+ find(t) {
1169
+ return this.query().find(t);
2056
1170
  }
2057
- async saveManyQuietly(e) {
2058
- if (!Array.isArray(e) || !e.every(E))
2059
- throw new M("HasMany.saveManyQuietly()", "Model[]");
2060
- if (!e.every((t) => t.getType() === this.getRelated().getSchemaName()))
2061
- throw new B("HasMany.saveManyQuietly()", this.getRelated().getSchemaName(), e.map((t) => t.getType()).join(", "));
2062
- await Promise.all(e.map((t) => (t.setAttribute(this.getForeignKey(), this.parent.getKey()), t.save())));
1171
+ async saveManyQuietly(t) {
1172
+ if (!Array.isArray(t) || !t.every(f))
1173
+ throw new w("HasMany.saveManyQuietly()", "Model[]");
1174
+ if (!t.every((e) => e.getType() === this.getRelated().getSchemaName()))
1175
+ throw new A("HasMany.saveManyQuietly()", this.getRelated().getSchemaName(), t.map((e) => e.getType()).join(", "));
1176
+ await Promise.all(t.map((e) => (e.setAttribute(this.getForeignKey(), this.parent.getKey()), e.save())));
2063
1177
  }
2064
- async saveMany(e) {
2065
- await this.saveManyQuietly(e);
2066
- const t = await this.all();
2067
- this.items ? this.items.splice(0, this.items.count(), ...t) : this.items = t;
1178
+ async saveMany(t) {
1179
+ await this.saveManyQuietly(t);
1180
+ const e = await this.all();
1181
+ this.items ? this.items.splice(0, this.items.count(), ...e) : this.items = e;
2068
1182
  }
2069
- async save(e) {
2070
- await this.saveQuietly(e), this.items === null ? this.items = await this.all() : this.items.push(e);
1183
+ async save(t) {
1184
+ await this.saveQuietly(t), this.items === null ? this.items = await this.all() : this.items.push(t);
2071
1185
  }
2072
1186
  }
2073
- class Ne extends k {
1187
+ class le extends K {
2074
1188
  query() {
2075
- const e = this.getRelated().query();
2076
- e.once("success", (r) => {
2077
- this.items = r.items;
1189
+ const t = this.getRelated().query();
1190
+ t.once("success", (i) => {
1191
+ this.items = i.items;
2078
1192
  });
2079
- const t = this.guessInverseRelation();
2080
- return e.where(t + "_id", this.parent.getKey()), e.where(t + "_type", this.getRelated().getSchemaName()), e.lock(`where.${t}_id`), e.lock(`where.${t}_type`), e;
1193
+ const e = this.guessInverseRelation();
1194
+ return t.where(e + "_id", this.parent.getKey()), t.where(e + "_type", this.getRelated().getSchemaName()), t.lock(`where.${e}_id`), t.lock(`where.${e}_type`), t;
2081
1195
  }
2082
- async saveQuietly(e) {
2083
- if (!E(e))
2084
- throw new M("MorphOneOrMany.saveQuietly()");
2085
- if (e.getType() !== this.getRelated().getSchemaName())
2086
- throw new B("MorphOneOrMany.saveQuietly()", this.getRelated().getSchemaName(), e.getType());
2087
- const t = this.guessInverseRelation();
2088
- e.setAttribute(t + "_id", this.parent.getKey()), e.setAttribute(t + "_type", this.parent.getType()), await e.save();
1196
+ async saveQuietly(t) {
1197
+ if (!f(t))
1198
+ throw new w("MorphOneOrMany.saveQuietly()");
1199
+ if (t.getType() !== this.getRelated().getSchemaName())
1200
+ throw new A("MorphOneOrMany.saveQuietly()", this.getRelated().getSchemaName(), t.getType());
1201
+ const e = this.guessInverseRelation();
1202
+ t.setAttribute(e + "_id", this.parent.getKey()), t.setAttribute(e + "_type", this.parent.getType()), await t.save();
2089
1203
  }
2090
1204
  }
2091
- class Oe extends Ne {
2092
- constructor(e, t, r, i = null) {
2093
- if (i !== null && !(i instanceof L && i.every(E)))
2094
- throw new M("MorphMany.constructor()", "Collection<Model> or null");
2095
- super(e, t, r, i), this.meta = e, this.facades = t, this.parent = r, this.items = i;
1205
+ class qe extends le {
1206
+ constructor(t, e, i, s = null) {
1207
+ if (s !== null && !(s instanceof x && s.every(f)))
1208
+ throw new w("MorphMany.constructor()", "Collection<Model> or null");
1209
+ super(t, e, i, s), this.services = t, this.meta = e, this.parent = i, this.items = s;
2096
1210
  }
2097
1211
  isSingle() {
2098
1212
  return !1;
@@ -2100,8 +1214,8 @@ class Oe extends Ne {
2100
1214
  isMultiple() {
2101
1215
  return !0;
2102
1216
  }
2103
- get(e = 1, t) {
2104
- return this.query().get(e, t);
1217
+ get(t = 1, e) {
1218
+ return this.query().get(t, e);
2105
1219
  }
2106
1220
  all() {
2107
1221
  return this.query().all();
@@ -2109,29 +1223,29 @@ class Oe extends Ne {
2109
1223
  first() {
2110
1224
  return this.query().first();
2111
1225
  }
2112
- find(e) {
2113
- return this.query().find(e);
1226
+ find(t) {
1227
+ return this.query().find(t);
2114
1228
  }
2115
- async saveManyQuietly(e) {
2116
- if (!Array.isArray(e) || !e.every(E))
2117
- throw new M("MorphMany.saveManyQuietly()");
2118
- if (!e.every((t) => t.getType() === this.getRelated().getSchemaName()))
2119
- throw new B("MorphMany.saveManyQuietly()", this.getRelated().getSchemaName(), e.map((t) => t.getType()).join(", "));
2120
- await Promise.all(e.map((t) => (t.setAttribute(this.getName() + "_id", this.parent.getKey()), t.setAttribute(this.getName() + "_type", this.parent.getType()), t.save())));
1229
+ async saveManyQuietly(t) {
1230
+ if (!Array.isArray(t) || !t.every(f))
1231
+ throw new w("MorphMany.saveManyQuietly()");
1232
+ if (!t.every((e) => e.getType() === this.getRelated().getSchemaName()))
1233
+ throw new A("MorphMany.saveManyQuietly()", this.getRelated().getSchemaName(), t.map((e) => e.getType()).join(", "));
1234
+ await Promise.all(t.map((e) => (e.setAttribute(this.getName() + "_id", this.parent.getKey()), e.setAttribute(this.getName() + "_type", this.parent.getType()), e.save())));
2121
1235
  }
2122
- async save(e) {
2123
- await this.saveQuietly(e), this.items ? this.items.push(e) : this.items = await this.all();
1236
+ async save(t) {
1237
+ await this.saveQuietly(t), this.items ? this.items.push(t) : this.items = await this.all();
2124
1238
  }
2125
- async saveMany(e) {
2126
- await this.saveManyQuietly(e);
2127
- const t = await this.all();
2128
- this.items ? this.items.splice(0, this.items.count(), ...t) : this.items = t;
1239
+ async saveMany(t) {
1240
+ await this.saveManyQuietly(t);
1241
+ const e = await this.all();
1242
+ this.items ? this.items.splice(0, this.items.count(), ...e) : this.items = e;
2129
1243
  }
2130
1244
  }
2131
- class et extends Ne {
2132
- constructor(e, t, r, i = null) {
2133
- if (super(e, t, r, i), this.meta = e, this.facades = t, this.parent = r, this.items = i, i !== null && !E(i))
2134
- throw new M("MorphOne.constructor()", "Model or null");
1245
+ class Ke extends le {
1246
+ constructor(t, e, i, s = null) {
1247
+ if (super(t, e, i, s), this.services = t, this.meta = e, this.parent = i, this.items = s, s !== null && !f(s))
1248
+ throw new w("MorphOne.constructor()", "Model or null");
2135
1249
  }
2136
1250
  isSingle() {
2137
1251
  return !0;
@@ -2142,13 +1256,13 @@ class et extends Ne {
2142
1256
  get() {
2143
1257
  return this.query().first();
2144
1258
  }
2145
- async save(e) {
2146
- await this.saveQuietly(e), this.items = e;
1259
+ async save(t) {
1260
+ await this.saveQuietly(t), this.items = t;
2147
1261
  }
2148
1262
  }
2149
- class tt extends Re {
1263
+ class ke extends ue {
2150
1264
  getRelated() {
2151
- return this.facades.model.make(
1265
+ return this.services.model.make(
2152
1266
  this.parent.getAttribute(this.getName() + "_type")
2153
1267
  );
2154
1268
  }
@@ -2160,12 +1274,12 @@ class tt extends Re {
2160
1274
  // this.of(this.parent.getAttribute(this.getName() + '_type') as string);
2161
1275
  // return super.query();
2162
1276
  // }
2163
- async associate(e) {
2164
- if (!E(e))
2165
- throw new M("MorphTo.associate()");
2166
- return e.exists || await e.save(), this.parent.update({
2167
- [this.getName() + "_id"]: e.getKey(),
2168
- [this.getName() + "_type"]: e.getType()
1277
+ async associate(t) {
1278
+ if (!f(t))
1279
+ throw new w("MorphTo.associate()");
1280
+ return t.exists || await t.save(), this.parent.update({
1281
+ [this.getName() + "_id"]: t.getKey(),
1282
+ [this.getName() + "_type"]: t.getType()
2169
1283
  });
2170
1284
  }
2171
1285
  dissociate() {
@@ -2175,380 +1289,353 @@ class tt extends Re {
2175
1289
  });
2176
1290
  }
2177
1291
  }
2178
- class rt extends ve {
2179
- constructor(e, t, r, i = null) {
2180
- super(e, t, r, i), this.meta = e, this.facades = t, this.parent = r, this.items = i;
2181
- }
1292
+ class je extends he {
2182
1293
  query() {
2183
- const e = super.query(), t = this.guessInverseRelation();
2184
- return e.where(t + "_id", this.parent.getKey()), e.where(t + "_type", this.parent.getType()), e.lock(`where.${t}_id`), e.lock(`where.${t}_type`), e;
1294
+ const t = super.query(), e = this.guessInverseRelation();
1295
+ return t.where(e + "_id", this.parent.getKey()), t.where(e + "_type", this.parent.getType()), t.lock(`where.${e}_id`), t.lock(`where.${e}_type`), t;
2185
1296
  }
2186
1297
  }
2187
- var Ee;
2188
- Ee = Symbol.toStringTag;
2189
- class st {
1298
+ var Z, ee;
1299
+ class Oe extends (ee = q, Z = Symbol.toStringTag, ee) {
2190
1300
  constructor(e) {
2191
- m(this, "_models", {});
2192
- m(this, Ee, "ModelFacade");
1301
+ super();
1302
+ p(this, "_models", {});
1303
+ p(this, Z, "ModelService");
2193
1304
  this._schema = e;
2194
1305
  }
2195
1306
  boot(e) {
2196
- this._schema && (Object.keys(this._schema).forEach((t) => {
2197
- const r = this[`model${d.upperFirst(d.camelCase(t))}`];
2198
- if (typeof this.model != "function" || typeof r != "function")
2199
- throw new T("ModelFacade");
2200
- const i = this.model(
2201
- Ve(e, t),
2202
- t
2203
- ), s = r(i);
2204
- this._models[t] = Xe(e.make(), t, s);
2205
- }), this.reducer("relationMap", () => ({
2206
- BelongsTo: Re,
2207
- BelongsToMany: ve,
2208
- HasOne: Ze,
2209
- HasMany: ze,
2210
- MorphMany: Oe,
2211
- MorphOne: et,
2212
- MorphTo: tt,
2213
- MorphToMany: rt
2214
- }), 0));
1307
+ this._schema && Object.keys(this._schema).forEach((i) => {
1308
+ const s = this[`model${y.studly(i)}`], c = this.model(
1309
+ Te(
1310
+ e.make("config"),
1311
+ e.make("log"),
1312
+ e.make("model"),
1313
+ e.make("route"),
1314
+ i
1315
+ ),
1316
+ i
1317
+ ), g = s(c);
1318
+ this._models[i] = Re(e.make("model"), i, g);
1319
+ });
2215
1320
  }
2216
1321
  schema(e) {
2217
1322
  if (!this._schema || e && !this._schema[e])
2218
- throw new W(e || "undefined");
1323
+ throw new j(e || "undefined");
2219
1324
  return e ? this._schema[e] : this._schema;
2220
1325
  }
2221
1326
  make(e) {
2222
1327
  if (e && !this._models[e])
2223
- throw new W(e);
1328
+ throw new j(e);
2224
1329
  return e ? this._models[e] : this._models;
2225
1330
  }
1331
+ getRelationConstructors(e) {
1332
+ return this.relationMap({
1333
+ BelongsTo: ue,
1334
+ BelongsToMany: he,
1335
+ HasOne: Ae,
1336
+ HasMany: Ne,
1337
+ MorphMany: qe,
1338
+ MorphOne: Ke,
1339
+ MorphTo: ke,
1340
+ MorphToMany: je
1341
+ }, e);
1342
+ }
2226
1343
  toString() {
2227
1344
  return "model";
2228
1345
  }
2229
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2230
- on(e, t) {
2231
- throw new b();
2232
- }
2233
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2234
- once(e, t) {
2235
- throw new b();
2236
- }
2237
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2238
- emit(e, t) {
2239
- throw new b();
1346
+ }
1347
+ const Be = ne(Oe);
1348
+ var te, se;
1349
+ class Ce extends (se = Error, te = Symbol.toStringTag, se) {
1350
+ constructor(e) {
1351
+ super(`[Luminix] Route "${e}" not found`);
1352
+ p(this, te, "RouteNotFoundException");
2240
1353
  }
2241
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2242
- reducer(e, t, r) {
2243
- throw new b();
1354
+ }
1355
+ class Ie {
1356
+ constructor(t, e, i, s = "") {
1357
+ this.routes = t, this.error = e, this.http = i, this.appUrl = s;
2244
1358
  }
2245
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2246
- removeReducer(e) {
2247
- throw new b();
1359
+ isRouteTuple(t) {
1360
+ if (!Array.isArray(t) || t.length < 2)
1361
+ return !1;
1362
+ const [e, ...i] = t;
1363
+ if (typeof e != "string")
1364
+ return !1;
1365
+ const s = ["get", "post", "put", "patch", "delete"];
1366
+ return !!i.every((c) => s.includes(c));
2248
1367
  }
2249
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2250
- getReducer(e) {
2251
- throw new b();
1368
+ extractGenerator(t) {
1369
+ let e, i = !1;
1370
+ return Array.isArray(t) ? [e, i] = t : e = t, [e, i];
2252
1371
  }
2253
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2254
- hasReducer(e) {
2255
- throw new b();
1372
+ get(t) {
1373
+ if (!this.exists(t))
1374
+ throw new Ce(t);
1375
+ return m.get(this.routes, t);
2256
1376
  }
2257
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2258
- clearReducer(e) {
2259
- throw new b();
1377
+ url(t) {
1378
+ const [e, i] = this.extractGenerator(t), s = this.get(e)[0].replace(/^\/|\/$/g, ""), c = /{([^}]+)}/g;
1379
+ if (i === !1) {
1380
+ if (typeof this.replaceRouteParams != "function")
1381
+ throw new $("RouteFacade");
1382
+ return this.appUrl + this.replaceRouteParams(`/${s}`);
1383
+ }
1384
+ const g = s.match(c), l = g ? g.map((h) => h.slice(1, -1)) : [], u = Object.keys(i), r = l.filter((h) => !u.includes(h)), o = u.filter((h) => !l.includes(h));
1385
+ if (r.length > 0)
1386
+ throw new TypeError(`Missing values for parameter(s): ${r.join(", ")}`);
1387
+ if (o.length > 0)
1388
+ throw new TypeError(`Unexpected parameters: ${o.join(", ")}`);
1389
+ const a = l.reduce((h, d) => h.replace(`{${d}}`, `${i[d]}`), s);
1390
+ return this.appUrl + `/${a}`;
1391
+ }
1392
+ methods(t) {
1393
+ const [e] = this.extractGenerator(t);
1394
+ return this.get(e).slice(1);
1395
+ }
1396
+ exists(t) {
1397
+ return m.has(this.routes, t) && this.isRouteTuple(m.get(this.routes, t));
1398
+ }
1399
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1400
+ async call(t, e = (s) => s, i = "default") {
1401
+ if (typeof this.clientOptions != "function" || typeof this.clientError != "function")
1402
+ throw new $("RouteFacade");
1403
+ const [s, c] = this.extractGenerator(t), [, ...g] = this.get(s), l = this.url(c ? [s, c] : s), u = e(this.http()), r = this.clientOptions({}, s);
1404
+ m.isEmpty(r) || u.withOptions(r);
1405
+ const o = g[0] ?? r.method;
1406
+ this.error.clear(i);
1407
+ const a = await u[o](l);
1408
+ if (ge(a)) {
1409
+ const h = a.json("errors");
1410
+ this.error.set(Object.entries(h).reduce((d, [v, b]) => (d[v] = b.join(" "), d), {}), i);
1411
+ } else a.failed() && this.error.set(
1412
+ this.clientError({ axios: a.json("message") }, {
1413
+ response: a,
1414
+ name: s,
1415
+ replace: c,
1416
+ client: u
1417
+ }),
1418
+ i
1419
+ );
1420
+ return a;
2260
1421
  }
2261
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2262
- flushReducers() {
2263
- throw new b();
1422
+ toString() {
1423
+ return "route";
2264
1424
  }
2265
1425
  }
2266
- const it = S(Ae(st));
2267
- var xe, Me;
2268
- class nt extends (Me = Error, xe = Symbol.toStringTag, Me) {
2269
- constructor() {
2270
- super("[Luminix] Embed element not found. Make sure to include the `@luminixEmbed()` directive in your Blade template.");
2271
- m(this, xe, "NoEmbedException");
1426
+ const Pe = ne(Ie);
1427
+ class Qe {
1428
+ getClient() {
1429
+ return new ye();
2272
1430
  }
2273
- }
2274
- const Be = (n, e = "data") => {
2275
- if (!document.querySelector("#luminix-embed"))
2276
- throw new nt();
2277
- const t = document.getElementById(`luminix-${e}::` + n);
2278
- return t ? t.dataset.json && t.dataset.value ? JSON.parse(t.dataset.value) : t.dataset.value : null;
2279
- }, G = S(R), ot = (n) => Le(n) && n.response !== void 0 && n.response.data !== null && "message" in n.response.data && typeof n.response.data.message == "string" && "errors" in n.response.data && typeof n.response.data.errors == "object" && n.response.data.errors !== null && Object.values(n.response.data.errors).every((e) => Array.isArray(e) && e.every((t) => typeof t == "string")) && n.response.status === 422;
2280
- let ht = class {
2281
- constructor() {
2282
- m(this, "bags");
2283
- const e = {};
2284
- document.querySelectorAll('#luminix-embed [id^="luminix-error"]').forEach((r) => {
2285
- const s = r.id.replace("luminix-error::", "");
2286
- e[s] = Be(s, "error");
2287
- }), this.bags = {
2288
- default: new G(e)
2289
- };
1431
+ baseUrl(t) {
1432
+ return this.getClient().baseUrl(t);
2290
1433
  }
2291
- bag(e = "default") {
2292
- return this.bags[e] || (this.bags[e] = new G({})), this.bags[e];
1434
+ asForm() {
1435
+ return this.getClient().asForm();
2293
1436
  }
2294
- add(e, t, r = "default") {
2295
- this.bag(r).set(e, t);
1437
+ accept(t) {
1438
+ return this.getClient().accept(t);
2296
1439
  }
2297
- set(e, t = "default") {
2298
- this.bag(t).set(".", e);
1440
+ acceptJson() {
1441
+ return this.getClient().acceptJson();
2299
1442
  }
2300
- all(e = "default") {
2301
- return this.bag(e).all();
1443
+ withHeaders(t) {
1444
+ return this.getClient().withHeaders(t);
2302
1445
  }
2303
- get(e, t = "default") {
2304
- return this.bag(t).get(e, null);
1446
+ withOptions(t) {
1447
+ return this.getClient().withOptions(t);
2305
1448
  }
2306
- clear(e = "default") {
2307
- this.bag(e).set(".", {});
1449
+ withData(t) {
1450
+ return this.getClient().withData(t);
2308
1451
  }
2309
- };
2310
- var _e, Te;
2311
- class ut extends (Te = Error, _e = Symbol.toStringTag, Te) {
2312
- constructor(t) {
2313
- super(`[Luminix] Route "${t}" not found`);
2314
- m(this, _e, "RouteNotFoundException");
1452
+ withQueryParameters(t) {
1453
+ return this.getClient().withQueryParameters(t);
2315
1454
  }
2316
- }
2317
- class at {
2318
- constructor(e, t, r = "") {
2319
- this.routes = e, this.error = t, this.appUrl = r;
1455
+ withBasicAuth(t, e) {
1456
+ return this.getClient().withBasicAuth(t, e);
2320
1457
  }
2321
- isRouteTuple(e) {
2322
- if (!Array.isArray(e) || e.length < 2)
2323
- return !1;
2324
- const [t, ...r] = e;
2325
- if (typeof t != "string")
2326
- return !1;
2327
- const i = ["get", "post", "put", "patch", "delete"];
2328
- return !!r.every((s) => i.includes(s));
1458
+ withToken(t) {
1459
+ return this.getClient().withToken(t);
2329
1460
  }
2330
- extractGenerator(e) {
2331
- let t, r = !1;
2332
- return Array.isArray(e) ? [t, r] = e : t = e, [t, r];
1461
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1462
+ get(t, e) {
1463
+ return this.getClient().get(t, e);
2333
1464
  }
2334
- get(e) {
2335
- if (!this.exists(e))
2336
- throw new ut(e);
2337
- return d.get(this.routes, e);
1465
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1466
+ post(t, e) {
1467
+ return this.getClient().post(t, e);
2338
1468
  }
2339
- url(e) {
2340
- const [t, r] = this.extractGenerator(e), i = this.get(t)[0].replace(/^\/|\/$/g, ""), s = /{([^}]+)}/g;
2341
- if (r === !1) {
2342
- if (typeof this.replaceRouteParams != "function")
2343
- throw new T("RouteFacade");
2344
- return this.appUrl + this.replaceRouteParams(`/${i}`);
2345
- }
2346
- const u = i.match(s), l = u ? u.map((x) => x.slice(1, -1)) : [], a = Object.keys(r), f = l.filter((x) => !a.includes(x)), p = a.filter((x) => !l.includes(x));
2347
- if (f.length > 0)
2348
- throw new TypeError(`Missing values for parameter(s): ${f.join(", ")}`);
2349
- if (p.length > 0)
2350
- throw new TypeError(`Unexpected parameters: ${p.join(", ")}`);
2351
- const w = l.reduce((x, g) => x.replace(`{${g}}`, `${r[g]}`), i);
2352
- return this.appUrl + `/${w}`;
2353
- }
2354
- methods(e) {
2355
- const [t] = this.extractGenerator(e);
2356
- return this.get(t).slice(1);
2357
- }
2358
- exists(e) {
2359
- return d.has(this.routes, e) && this.isRouteTuple(d.get(this.routes, e));
2360
- }
2361
- async call(e, t = {}) {
2362
- if (typeof this.axiosOptions != "function" || typeof this.axiosError != "function")
2363
- throw new T("RouteFacade");
2364
- const [r, i] = this.extractGenerator(e), [, ...s] = this.get(r), u = this.url(i ? [r, i] : r), l = this.axiosOptions(t, r), { method: a = s[0], errorBag: f = "default", ...p } = l, { data: w, ...x } = p;
2365
- this.error.clear(f);
2366
- try {
2367
- return ["get", "delete"].includes(a) ? await I[a](u, p) : await I[a](u, w, x);
2368
- } catch (g) {
2369
- if (ot(g)) {
2370
- const { errors: qe } = g.response.data;
2371
- this.error.set(Object.entries(qe).reduce((Q, [Ie, Fe]) => (Q[Ie] = Fe.join(" "), Q), {}), f);
2372
- } else I.isAxiosError(g) && this.error.set(
2373
- this.axiosError({ axios: g.message }, {
2374
- error: g,
2375
- name: r,
2376
- replace: i,
2377
- config: t
2378
- }),
2379
- f
2380
- );
2381
- throw g;
2382
- }
1469
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1470
+ put(t, e) {
1471
+ return this.getClient().put(t, e);
2383
1472
  }
2384
- toString() {
2385
- return "route";
1473
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1474
+ patch(t, e) {
1475
+ return this.getClient().patch(t, e);
1476
+ }
1477
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1478
+ delete(t, e) {
1479
+ return this.getClient().delete(t, e);
2386
1480
  }
2387
1481
  }
2388
- const lt = Ae(at);
2389
- class ct {
1482
+ const De = oe(Qe);
1483
+ var re, ie;
1484
+ class He extends (ie = me, re = Symbol.toStringTag, ie) {
2390
1485
  constructor() {
2391
- m(this, "facades", {});
2392
- m(this, "booted", !1);
2393
- m(this, "_plugins", []);
2394
- }
2395
- make(e = void 0) {
2396
- if (!e)
2397
- return this.facades;
2398
- if (e in this.facades)
2399
- return this.facades[e];
2400
- }
2401
- has(e) {
2402
- return !!this.facades[e];
2403
- }
2404
- bind(e, t) {
2405
- this.facades[e] || (this.facades[e] = t);
2406
- }
2407
- plugins() {
2408
- return this._plugins;
2409
- }
2410
- async boot(e = {}) {
2411
- var l, a, f, p, w, x;
2412
- if (this.booted)
2413
- throw new window.Error("[Luminix] App already booted");
2414
- this.booted = !0, (l = e.app) != null && l.debug && console.log("[Luminix] Booting started..."), this.emit("init", {
2415
- register: (g) => {
2416
- this._plugins.push(g), typeof g.register == "function" && g.register(this);
2417
- }
2418
- });
2419
- const t = (((a = e.app) == null ? void 0 : a.url) ?? "") + (((f = e.app) == null ? void 0 : f.bootUrl) ?? "/luminix-api/init");
2420
- if (document.getElementById("luminix-data::config")) {
2421
- if (document.getElementById("luminix-data::config")) {
2422
- const g = Be("config");
2423
- g && typeof g == "object" && d.merge(e, g);
2424
- }
2425
- } else try {
2426
- const { data: g } = await I.get(t);
2427
- g && typeof g == "object" && d.merge(e, g);
2428
- } catch (g) {
2429
- (p = e.app) != null && p.debug && console.error(g);
2430
- }
2431
- this.bind("log", new Ce(!!((w = e.app) != null && w.debug)));
2432
- const { log: r } = this.facades, {
2433
- manifest: { routes: i = {}, models: s = {} } = {},
2434
- ...u
2435
- } = e;
2436
- this.bind("config", new R(u)), this.facades.config.has("auth.user") || this.facades.config.set("auth.user", null), this.facades.config.lock("auth.user"), this.bind("error", new ht()), this.bind("route", new lt(i, this.facades.error, ((x = e.app) == null ? void 0 : x.url) ?? "")), this.bind("model", new it(s)), this.bind("auth", new Qe(this)), this.emit("booting");
2437
- for (const g of Object.values(this.facades))
2438
- typeof g == "object" && g !== null && "boot" in g && typeof g.boot == "function" && g.boot(this);
2439
- for (const g of this._plugins)
2440
- typeof g.boot == "function" && g.boot(this.facades);
2441
- return r.info("[Luminix] App boot completed", {
2442
- config: this.facades.config.all(),
2443
- plugins: this._plugins,
2444
- manifest: {
2445
- routes: i,
2446
- models: s
2447
- }
2448
- }), this.emit("booted"), this.facades;
2449
- }
2450
- environment(...e) {
2451
- return e.length > 0 ? e.includes(this.facades.config.get("app.env", "production")) : this.facades.config.get("app.env", "production");
2452
- }
2453
- getLocale() {
2454
- return this.facades.config.get("app.locale", "en");
2455
- }
2456
- getPlugin(e) {
2457
- for (const t of this._plugins)
2458
- if (t instanceof e)
2459
- return t;
2460
- }
2461
- hasDebugModeEnabled() {
2462
- return this.facades.config.get("app.debug", !1);
1486
+ super(...arguments);
1487
+ p(this, re, "LuminixServiceProvider");
2463
1488
  }
2464
- isLocal() {
2465
- return this.facades.config.get("app.env", "production") === "local";
1489
+ register() {
1490
+ this.registerServices(), this.registerMacros(), this.app.on("ready", () => {
1491
+ this.app.dump("[Luminix] App boot completed");
1492
+ });
2466
1493
  }
2467
- isProduction() {
2468
- return this.facades.config.get("app.env", "production") === "production";
1494
+ boot() {
1495
+ this.app.make("model").boot(this.app);
1496
+ }
1497
+ registerServices() {
1498
+ this.app.singleton("auth", () => new ve(
1499
+ this.app.make("config"),
1500
+ this.app.make("model"),
1501
+ this.app.make("route")
1502
+ )), this.app.singleton("config", () => {
1503
+ const e = new R(m.omit(this.app.configuration, "manifest"));
1504
+ return e.has("auth.user") || e.set("auth.user", null), e.lock("auth.user"), e;
1505
+ }), this.app.singleton("error", () => new be()), this.app.singleton("http", () => new De()), this.app.singleton("log", () => {
1506
+ var e;
1507
+ return new xe(((e = this.app.configuration.app) == null ? void 0 : e.debug) ?? !1);
1508
+ }), this.app.singleton("model", () => {
1509
+ var e;
1510
+ return new Be(
1511
+ ((e = this.app.configuration.manifest) == null ? void 0 : e.models) ?? {}
1512
+ );
1513
+ }), this.app.singleton("route", () => {
1514
+ var e, i;
1515
+ return new Pe(
1516
+ ((e = this.app.configuration.manifest) == null ? void 0 : e.routes) ?? {},
1517
+ this.app.make("error"),
1518
+ () => this.app.make("http"),
1519
+ (i = this.app.configuration.app) == null ? void 0 : i.url
1520
+ );
1521
+ });
2469
1522
  }
2470
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2471
- on(e, t) {
2472
- throw new window.Error("Method not implemented.");
1523
+ registerMacros() {
1524
+ this.app.macro("environment", (...e) => e.length > 0 ? e.includes(this.app.make("config").get("app.env", "production")) : this.app.make("config").get("app.env", "production")), this.app.macro("getLocale", () => this.app.make("config").get("app.locale", "en")), this.app.macro("hasDebugModeEnabled", () => this.app.make("config").get("app.debug", !1)), this.app.macro("isLocal", () => this.app.make("config").get("app.env", "production") === "local"), this.app.macro("isProduction", () => this.app.make("config").get("app.env", "production") === "production"), m.macro("isModel", function(e) {
1525
+ return typeof e == "object" && e !== null && e.__isModel === !0;
1526
+ });
2473
1527
  }
2474
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2475
- once(e, t) {
2476
- throw new window.Error("Method not implemented.");
1528
+ }
1529
+ let S;
1530
+ class Le {
1531
+ getFacadeAccessor() {
1532
+ return S || (S = new (oe(fe))([
1533
+ He
1534
+ ])), S;
2477
1535
  }
2478
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2479
- emit(e, t) {
2480
- throw new window.Error("Method not implemented.");
1536
+ down() {
1537
+ S && (S.flush(), S = void 0);
2481
1538
  }
2482
1539
  }
2483
- const dt = S(ct);
2484
- let y;
2485
- function A(n = void 0) {
2486
- if (y || (y = new dt()), typeof n != "string")
2487
- return {
2488
- boot: y.boot.bind(y),
2489
- make: y.make.bind(y),
2490
- plugins: y.plugins.bind(y),
2491
- on: y.once.bind(y),
2492
- environment: y.environment.bind(y),
2493
- getLocale: y.getLocale.bind(y),
2494
- getPlugin: y.getPlugin.bind(y),
2495
- hasDebugModeEnabled: y.hasDebugModeEnabled.bind(y),
2496
- isLocal: y.isLocal.bind(y),
2497
- isProduction: y.isProduction.bind(y)
2498
- };
2499
- if (!y.has(n))
2500
- throw new ke(n);
2501
- return y.make(n);
1540
+ const M = E(Le);
1541
+ function _(n = void 0) {
1542
+ return typeof n != "string" ? M : M.make(n);
1543
+ }
1544
+ function Ze() {
1545
+ return _("auth");
1546
+ }
1547
+ function et(n) {
1548
+ return new x(n);
1549
+ }
1550
+ function tt(n, t) {
1551
+ const e = _("config");
1552
+ return typeof n > "u" ? e : e.get(n, t);
1553
+ }
1554
+ function st(n, t = "default") {
1555
+ return n ? _().make("error").get(n, t) : _().make("error");
2502
1556
  }
2503
- function bt() {
2504
- return A("auth");
1557
+ function rt(...n) {
1558
+ const t = _("log");
1559
+ return n.length ? t.debug(...n) : t;
2505
1560
  }
2506
- function Et(n) {
2507
- return c(n);
1561
+ function it(n) {
1562
+ const t = _("model");
1563
+ return n ? t.make(n) : t;
2508
1564
  }
2509
- function xt(n, e) {
2510
- const t = A("config");
2511
- return typeof n > "u" ? t : t.get(n, e);
1565
+ function nt(n, t = !1) {
1566
+ const e = _("route");
1567
+ return n ? t ? e.url([n, t]) : e.url(n) : e;
2512
1568
  }
2513
- function Mt(n, e = "default") {
2514
- return n ? A().make("error").get(n, e) : A().make("error");
1569
+ class Je {
1570
+ getFacadeAccessor() {
1571
+ return "auth";
1572
+ }
2515
1573
  }
2516
- function _t(...n) {
2517
- const e = A("log");
2518
- return n.length ? e.debug(...n) : e;
1574
+ const ot = E(Je, M);
1575
+ class Ue {
1576
+ getFacadeAccessor() {
1577
+ return "config";
1578
+ }
2519
1579
  }
2520
- function Tt(n) {
2521
- const e = A("model");
2522
- return n ? e.make(n) : e;
1580
+ const at = E(Ue, M), ut = (n) => n instanceof we && n.unprocessableEntity() && typeof n.json("message") == "string" && typeof n.json("errors") == "object" && n.json("errors") !== null && Object.values(n.json("errors")).every((t) => Array.isArray(t) && t.every((e) => typeof e == "string"));
1581
+ class Fe {
1582
+ getFacadeAccessor() {
1583
+ return "error";
1584
+ }
2523
1585
  }
2524
- function $t(n, e = !1) {
2525
- const t = A("route");
2526
- return n ? e ? t.url([n, e]) : t.url(n) : t;
1586
+ const ht = E(Fe, M);
1587
+ class Ge {
1588
+ getFacadeAccessor() {
1589
+ return "http";
1590
+ }
2527
1591
  }
2528
- class St {
1592
+ const lt = E(Ge, M);
1593
+ class Ve {
1594
+ getFacadeAccessor() {
1595
+ return "log";
1596
+ }
1597
+ }
1598
+ const ct = E(Ve, M);
1599
+ class We {
1600
+ getFacadeAccessor() {
1601
+ return "model";
1602
+ }
1603
+ }
1604
+ const dt = E(We, M);
1605
+ class ze {
1606
+ getFacadeAccessor() {
1607
+ return "route";
1608
+ }
1609
+ }
1610
+ const pt = E(ze, M);
1611
+ class gt {
2529
1612
  constructor() {
2530
- m(this, "name");
2531
- m(this, "version");
1613
+ p(this, "name");
1614
+ p(this, "version");
2532
1615
  }
2533
- register(e) {
1616
+ register(t) {
2534
1617
  }
2535
- boot(e) {
1618
+ boot(t) {
2536
1619
  }
2537
1620
  }
2538
1621
  export {
2539
- S as HasEvents,
2540
- St as Plugin,
2541
- R as PropertyBag,
2542
- Ae as Reducible,
2543
- A as app,
2544
- bt as auth,
2545
- Et as collect,
2546
- xt as config,
2547
- Mt as error,
2548
- $ as isCollection,
2549
- E as isModel,
2550
- ot as isValidationError,
2551
- _t as log,
2552
- Tt as model,
2553
- $t as route
1622
+ M as App,
1623
+ ot as Auth,
1624
+ at as Config,
1625
+ ht as Error,
1626
+ lt as Http,
1627
+ ct as Log,
1628
+ dt as Model,
1629
+ gt as Plugin,
1630
+ pt as Route,
1631
+ _ as app,
1632
+ Ze as auth,
1633
+ et as collect,
1634
+ tt as config,
1635
+ st as error,
1636
+ f as isModel,
1637
+ ut as isValidationError,
1638
+ rt as log,
1639
+ it as model,
1640
+ nt as route
2554
1641
  };