patron-oop 1.33.0 → 1.35.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/patron.cjs +62 -51
  3. package/dist/patron.cjs.map +1 -1
  4. package/dist/patron.d.ts +28 -24
  5. package/dist/patron.js +61 -51
  6. package/dist/patron.js.map +1 -1
  7. package/dist/patron.min.js +1 -1
  8. package/dist/patron.min.mjs +1 -1
  9. package/dist/patron.min.mjs.map +1 -1
  10. package/dist/patron.mjs +61 -51
  11. package/dist/patron.mjs.map +1 -1
  12. package/package.json +1 -1
  13. package/src/Factory/Module.test.ts +0 -2
  14. package/src/Guest/GuestAware.ts +17 -5
  15. package/src/Guest/GuestAwareActive.ts +2 -2
  16. package/src/Guest/{GuestChain._asArray.test.ts → GuestAwareAll._asArray.test.ts} +6 -6
  17. package/src/Guest/GuestAwareAll._twoValuesAfter.test.ts +16 -0
  18. package/src/Guest/GuestAwareAll._twoValuesBefore.test.ts +16 -0
  19. package/src/Guest/{GuestChain._withPatron.test.ts → GuestAwareAll._withPatron.test.ts} +6 -6
  20. package/src/Guest/GuestAwareAll.ts +88 -0
  21. package/src/Guest/GuestAwareMap.fn.test.ts +31 -0
  22. package/src/Guest/GuestAwareMap.test.ts +4 -3
  23. package/src/Guest/GuestAwareMap.ts +12 -11
  24. package/src/Guest/GuestAwareRace.ts +6 -6
  25. package/src/Guest/GuestAwareSequence.test.ts +5 -4
  26. package/src/Guest/GuestAwareSequence.ts +13 -13
  27. package/src/Source/Source.ts +2 -2
  28. package/src/Source/SourceDynamic.ts +2 -2
  29. package/src/index.ts +1 -1
  30. package/examples/elegant_objects.html +0 -118
  31. package/examples/reactive.html +0 -65
  32. package/src/Guest/GuestChain._twoValuesAfter.test.ts +0 -16
  33. package/src/Guest/GuestChain._twoValuesBefore.test.ts +0 -16
  34. package/src/Guest/GuestChain.ts +0 -88
package/dist/patron.js CHANGED
@@ -1,9 +1,16 @@
1
+ function value(guestAware, guest) {
2
+ if (typeof guestAware === "function") {
3
+ return guestAware(guest);
4
+ } else {
5
+ return guestAware.value(guest);
6
+ }
7
+ }
1
8
  class GuestAware {
2
- constructor(guestReceiver) {
3
- this.guestReceiver = guestReceiver;
9
+ constructor(guestAware) {
10
+ this.guestAware = guestAware;
4
11
  }
5
12
  value(guest) {
6
- this.guestReceiver(guest);
13
+ value(this.guestAware, guest);
7
14
  return guest;
8
15
  }
9
16
  }
@@ -229,65 +236,65 @@ class GuestPool {
229
236
  var __defProp$3 = Object.defineProperty;
230
237
  var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
231
238
  var __publicField$3 = (obj, key, value) => __defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
232
- class GuestChain {
239
+ class GuestAwareAll {
233
240
  constructor() {
234
- __publicField$3(this, "theChain");
241
+ __publicField$3(this, "theAll");
235
242
  __publicField$3(this, "keysKnown", /* @__PURE__ */ new Set());
236
243
  __publicField$3(this, "keysFilled", /* @__PURE__ */ new Set());
237
- __publicField$3(this, "filledChainPool", new GuestPool(this));
238
- this.theChain = new Source({});
244
+ __publicField$3(this, "filledAllPool", new GuestPool(this));
245
+ this.theAll = new Source({});
239
246
  }
240
- resultArray(guest) {
247
+ valueArray(guest) {
241
248
  const guestObject = new GuestObject(guest);
242
- this.filledChainPool.add(
249
+ this.filledAllPool.add(
243
250
  new GuestCast(guestObject, (value) => {
244
251
  guestObject.give(Object.values(value));
245
252
  })
246
253
  );
247
- if (this.isChainFilled()) {
248
- this.theChain.value(
249
- new Guest((chain) => {
250
- this.filledChainPool.give(Object.values(chain));
254
+ if (this.isAllFilled()) {
255
+ this.theAll.value(
256
+ new Guest((all) => {
257
+ this.filledAllPool.give(Object.values(all));
251
258
  })
252
259
  );
253
260
  }
254
261
  return this;
255
262
  }
256
- result(guest) {
263
+ value(guest) {
257
264
  const guestObject = new GuestObject(guest);
258
- if (this.isChainFilled()) {
259
- this.filledChainPool.add(guestObject);
260
- this.theChain.value(
261
- new Guest((chain) => {
262
- this.filledChainPool.give(chain);
265
+ if (this.isAllFilled()) {
266
+ this.filledAllPool.add(guestObject);
267
+ this.theAll.value(
268
+ new Guest((all) => {
269
+ this.filledAllPool.give(all);
263
270
  })
264
271
  );
265
272
  } else {
266
- this.filledChainPool.add(guestObject);
273
+ this.filledAllPool.add(guestObject);
267
274
  }
268
275
  return this;
269
276
  }
270
- receiveKey(key) {
277
+ guestKey(key) {
271
278
  this.keysKnown.add(key);
272
279
  return new Guest((value) => {
273
280
  queueMicrotask(() => {
274
- this.theChain.value(
275
- new Guest((chain) => {
281
+ this.theAll.value(
282
+ new Guest((all) => {
276
283
  this.keysFilled.add(key);
277
- const lastChain = {
278
- ...chain,
284
+ const lastAll = {
285
+ ...all,
279
286
  [key]: value
280
287
  };
281
- this.theChain.give(lastChain);
282
- if (this.isChainFilled()) {
283
- this.filledChainPool.give(lastChain);
288
+ this.theAll.give(lastAll);
289
+ if (this.isAllFilled()) {
290
+ this.filledAllPool.give(lastAll);
284
291
  }
285
292
  })
286
293
  );
287
294
  });
288
295
  });
289
296
  }
290
- isChainFilled() {
297
+ isAllFilled() {
291
298
  return this.keysFilled.size > 0 && this.keysFilled.size === this.keysKnown.size;
292
299
  }
293
300
  }
@@ -324,28 +331,29 @@ class GuestAwareSequence {
324
331
  this.targetSourceFactory = targetSourceFactory;
325
332
  }
326
333
  value(guest) {
327
- const chain = new GuestChain();
334
+ const all = new GuestAwareAll();
328
335
  const sequenceSource = new SourceEmpty();
329
336
  const targetSource = this.targetSourceFactory.create(
330
337
  sequenceSource
331
338
  );
332
- this.baseSource.value(
333
- new GuestCast(guest, (value) => {
339
+ value(
340
+ this.baseSource,
341
+ new GuestCast(guest, (theValue) => {
334
342
  let index = 0;
335
343
  const nextItemHandle = () => {
336
- if (value[index + 1] !== void 0) {
344
+ if (theValue[index + 1] !== void 0) {
337
345
  index = index + 1;
338
346
  handle();
339
347
  } else {
340
- chain.resultArray(guest);
348
+ all.valueArray(guest);
341
349
  }
342
350
  };
343
351
  function handle() {
344
- sequenceSource.give(value[index]);
345
- targetSource.value(chain.receiveKey("" + index));
346
- targetSource.value(nextItemHandle);
352
+ sequenceSource.give(theValue[index]);
353
+ value(targetSource, all.guestKey(index.toString()));
354
+ value(targetSource, nextItemHandle);
347
355
  }
348
- if (value[index] !== void 0) {
356
+ if (theValue[index] !== void 0) {
349
357
  handle();
350
358
  } else {
351
359
  give([], guest);
@@ -362,20 +370,21 @@ class GuestAwareMap {
362
370
  this.targetSourceFactory = targetSourceFactory;
363
371
  }
364
372
  value(guest) {
365
- const chain = new GuestChain();
366
- this.baseSource.value(
367
- new GuestCast(guest, (value) => {
368
- value.forEach((val, index) => {
373
+ const all = new GuestAwareAll();
374
+ value(
375
+ this.baseSource,
376
+ new GuestCast(guest, (theValue) => {
377
+ theValue.forEach((val, index) => {
369
378
  const targetSource = this.targetSourceFactory.create(
370
379
  new GuestAware((innerGuest) => {
371
380
  give(val, innerGuest);
372
381
  })
373
382
  );
374
- targetSource.value(chain.receiveKey("" + index));
383
+ value(targetSource, all.guestKey(index.toString()));
375
384
  });
376
385
  })
377
386
  );
378
- chain.resultArray(guest);
387
+ all.valueArray(guest);
379
388
  return this;
380
389
  }
381
390
  }
@@ -387,10 +396,11 @@ class GuestAwareRace {
387
396
  value(guest) {
388
397
  let connectedWithGuestAware = null;
389
398
  this.guestAwares.forEach((guestAware) => {
390
- guestAware.value(
391
- new GuestCast(guest, (value) => {
399
+ value(
400
+ guestAware,
401
+ new GuestCast(guest, (value2) => {
392
402
  if (!connectedWithGuestAware || connectedWithGuestAware === guestAware) {
393
- give(value, guest);
403
+ give(value2, guest);
394
404
  connectedWithGuestAware = guestAware;
395
405
  }
396
406
  })
@@ -495,11 +505,11 @@ class SourceDynamic {
495
505
  this.baseGuestAware = baseGuestAware;
496
506
  }
497
507
  value(guest) {
498
- this.baseGuestAware.value(guest);
508
+ value(this.baseGuestAware, guest);
499
509
  return this;
500
510
  }
501
- give(value) {
502
- give(value, this.baseGuest);
511
+ give(value2) {
512
+ give(value2, this.baseGuest);
503
513
  return this;
504
514
  }
505
515
  pool() {
@@ -529,5 +539,5 @@ class Module {
529
539
  }
530
540
  }
531
541
 
532
- export { Factory, Guest, GuestAware, GuestAwareActive, GuestAwareMap, GuestAwareRace, GuestAwareSequence, GuestCast, GuestChain, GuestDisposable, GuestObject, GuestPool, GuestSync, Module, Patron, PatronOnce, PatronPool, Source, SourceDynamic, SourceEmpty, give, isPatronInPools, removePatronFromPools };
542
+ export { Factory, Guest, GuestAware, GuestAwareActive, GuestAwareAll, GuestAwareMap, GuestAwareRace, GuestAwareSequence, GuestCast, GuestDisposable, GuestObject, GuestPool, GuestSync, Module, Patron, PatronOnce, PatronPool, Source, SourceDynamic, SourceEmpty, give, isPatronInPools, removePatronFromPools, value };
533
543
  //# sourceMappingURL=patron.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"patron.js","sources":["../src/Guest/GuestAware.ts","../src/Guest/Guest.ts","../src/Guest/GuestCast.ts","../src/Patron/PatronPool.ts","../src/Source/Source.ts","../src/Guest/GuestObject.ts","../src/Guest/GuestPool.ts","../src/Guest/GuestChain.ts","../src/Source/SourceEmpty.ts","../src/Guest/GuestAwareSequence.ts","../src/Guest/GuestAwareMap.ts","../src/Guest/GuestAwareRace.ts","../src/Guest/GuestAwareActive.ts","../src/Guest/GuestSync.ts","../src/Guest/GuestDisposable.ts","../src/Patron/Patron.ts","../src/Patron/PatronOnce.ts","../src/Source/SourceDynamic.ts","../src/Factory/Factory.ts","../src/Factory/Module.ts"],"sourcesContent":["import { GuestType } from \"./Guest\";\n\nexport interface GuestAwareType<T = any> {\n value(guest: GuestType<T>): unknown;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware\n */\nexport class GuestAware<T = any> implements GuestAwareType<T> {\n public constructor(private guestReceiver: (guest: GuestType<T>) => void) { }\n\n public value(guest: GuestType<T>): GuestType<T> {\n this.guestReceiver(guest);\n return guest;\n }\n}\n","type GuestIntroduction = \"guest\" | \"patron\";\n\nexport interface GiveOptions {\n data?: unknown;\n}\n\nexport type GuestExecutorType<T = any> = (\n value: T,\n options?: GiveOptions,\n) => void;\n\nexport interface GuestObjectType<T = any> {\n give(value: T, options?: GiveOptions): this;\n introduction?(): GuestIntroduction;\n}\n\nexport type GuestType<T = any> = GuestExecutorType<T> | GuestObjectType<T>;\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/give\n */\nexport function give<T>(data: T, guest: GuestType<T>, options?: GiveOptions) {\n if (typeof guest === \"function\") {\n guest(data, options);\n } else {\n guest.give(data, options);\n }\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest\n */\nexport class Guest<T> implements GuestObjectType<T> {\n public constructor(private receiver: GuestExecutorType<T>) { }\n\n public give(value: T, options?: GiveOptions) {\n this.receiver(value, options);\n return this;\n }\n}\n","import {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"./GuestDisposable\";\nimport { give, GiveOptions, GuestType } from \"./Guest\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-cast\n */\nexport class GuestCast<T> implements GuestDisposableType<T> {\n public constructor(\n private sourceGuest: GuestType<any>,\n private targetGuest: GuestType<T>,\n ) { }\n\n public introduction() {\n if (typeof this.sourceGuest === \"function\") {\n return \"guest\";\n }\n if (!this.sourceGuest.introduction) {\n return \"guest\";\n }\n return this.sourceGuest.introduction();\n }\n\n public give(value: T, options?: GiveOptions): this {\n give(value, this.targetGuest, options);\n return this;\n }\n\n public disposed(value: T | null): boolean {\n const maybeDisposable = this.sourceGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n }\n}\n","import { GuestDisposableType } from \"../Guest/GuestDisposable\";\nimport { give, GuestObjectType, GuestType, GiveOptions } from \"../Guest/Guest\";\n\nconst poolSets = new Map<PoolType, Set<GuestObjectType>>();\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/remove-patron-from-pools\n */\nexport const removePatronFromPools = (patron: GuestObjectType) => {\n poolSets.forEach((pool) => {\n pool.delete(patron);\n });\n};\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/is-patron-in-pools\n */\nexport const isPatronInPools = (patron: GuestObjectType) => {\n let inPool = false;\n poolSets.forEach((pool) => {\n if (!inPool) {\n inPool = pool.has(patron);\n }\n });\n return inPool;\n};\n\nexport interface PoolType<T = any> extends GuestObjectType<T> {\n add(guest: GuestObjectType<T>): this;\n distribute(receiving: T, possiblePatron: GuestObjectType<T>): this;\n remove(patron: GuestObjectType<T>): this;\n size(): number;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/patron/patron-pool\n */\nexport class PatronPool<T> implements PoolType<T> {\n private patrons: Set<GuestObjectType<T>>;\n\n public give: (value: T, options?: GiveOptions) => this;\n\n public constructor(private initiator: unknown) {\n this.patrons = new Set<GuestObjectType<T>>();\n poolSets.set(this, this.patrons);\n let lastMicrotask: (() => void) | null = null;\n const doReceive = (value: T, options?: GiveOptions) => {\n this.patrons.forEach((target) => {\n this.sendValueToGuest(value, target, options);\n });\n };\n this.give = (value: T, options?: GiveOptions) => {\n const currentMicroTask = () => {\n if (currentMicroTask === lastMicrotask) {\n doReceive(value, options);\n }\n };\n lastMicrotask = currentMicroTask;\n queueMicrotask(currentMicroTask);\n return this;\n };\n }\n\n public size(): number {\n return this.patrons.size;\n }\n\n public add(shouldBePatron: GuestType<T>) {\n if (!shouldBePatron) {\n throw new Error(\"PatronPool add method received nothing!\");\n }\n if (\n typeof shouldBePatron !== \"function\" &&\n shouldBePatron.introduction &&\n shouldBePatron.introduction() === \"patron\"\n ) {\n this.patrons.add(shouldBePatron);\n }\n return this;\n }\n\n public remove(patron: GuestObjectType<T>) {\n this.patrons.delete(patron);\n return this;\n }\n\n public distribute(receiving: T, possiblePatron: GuestType<T>): this {\n this.add(possiblePatron);\n this.sendValueToGuest(receiving, possiblePatron, {});\n return this;\n }\n\n private sendValueToGuest(\n value: T,\n guest: GuestType<T>,\n options?: GiveOptions,\n ) {\n const isDisposed = this.guestDisposed(value, guest);\n\n if (!isDisposed) {\n give(value, guest, {\n ...options,\n data: {\n ...((options?.data as Record<string, unknown>) ?? {}),\n initiator: this.initiator,\n pool: this,\n },\n });\n }\n }\n\n private guestDisposed(value: T, guest: GuestType<T>) {\n if ((guest as GuestDisposableType).disposed?.(value)) {\n this.remove(guest as GuestObjectType);\n return true;\n }\n\n return false;\n }\n}\n","import { GuestAwareType } from \"../Guest/GuestAware\";\nimport { Guest, GuestObjectType, GuestType } from \"../Guest/Guest\";\nimport { PatronPool } from \"../Patron/PatronPool\";\n\nexport interface PoolAware<T = any> {\n pool(): PatronPool<T>;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/source\n */\nexport type SourceType<T = any> = GuestAwareType<T> &\n GuestObjectType<T> &\n PoolAware<T>;\n\nexport class Source<T> implements SourceType<T> {\n private thePool = new PatronPool(this);\n\n public constructor(private sourceDocument: T) { }\n\n public pool() {\n return this.thePool;\n }\n\n public give(value: T): this {\n this.sourceDocument = value;\n this.thePool.give(this.sourceDocument);\n return this;\n }\n\n public value(guest: GuestType<T>): this {\n if (typeof guest === \"function\") {\n this.thePool.distribute(this.sourceDocument, new Guest(guest));\n } else {\n this.thePool.distribute(this.sourceDocument, guest);\n }\n return this;\n }\n}\n","import {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"./GuestDisposable\";\nimport { GiveOptions, Guest, GuestType } from \"./Guest\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-object\n */\nexport class GuestObject<T> implements GuestDisposableType<T> {\n public constructor(private baseGuest: GuestType<T>) { }\n\n public give(value: T, options?: GiveOptions): this {\n let guest = this.baseGuest;\n if (typeof guest === \"function\") {\n guest = new Guest(guest);\n }\n guest.give(value, options);\n return this;\n }\n\n public introduction() {\n if (typeof this.baseGuest === \"function\" || !this.baseGuest.introduction) {\n return \"guest\";\n }\n return this.baseGuest.introduction();\n }\n\n public disposed(value: T | null): boolean {\n const maybeDisposable = this.baseGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n }\n}\n","import { PatronPool } from \"../Patron/PatronPool\";\nimport { PoolType } from \"../Patron/PatronPool\";\nimport { give, GuestObjectType, GuestType, GiveOptions } from \"./Guest\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-pool\n */\nexport class GuestPool<T> implements GuestObjectType<T>, PoolType<T> {\n private guests = new Set<GuestType<T>>();\n\n private patronPool: PatronPool<T>;\n\n public constructor(initiator: unknown) {\n this.patronPool = new PatronPool(initiator);\n }\n\n public give(value: T, options?: GiveOptions): this {\n this.deliverToGuests(value, options);\n this.patronPool.give(value, options);\n return this;\n }\n\n public add(guest: GuestType<T>): this {\n if (\n typeof guest === \"function\" ||\n !guest.introduction ||\n guest.introduction() === \"guest\"\n ) {\n this.guests.add(guest);\n }\n this.patronPool.add(guest);\n return this;\n }\n\n public remove(patron: GuestObjectType<T>): this {\n this.guests.delete(patron);\n this.patronPool.remove(patron);\n return this;\n }\n\n public distribute(receiving: T, possiblePatron: GuestObjectType<T>): this {\n this.add(possiblePatron);\n this.give(receiving);\n return this;\n }\n\n public size() {\n return this.patronPool.size() + this.guests.size;\n }\n\n private deliverToGuests(value: T, options?: GiveOptions) {\n this.guests.forEach((target) => {\n give(value, target, options);\n });\n this.guests.clear();\n }\n}\n","import { GuestCast } from \"./GuestCast\";\nimport { Source } from \"../Source/Source\";\nimport { Guest, GuestObjectType, GuestType } from \"./Guest\";\nimport { GuestObject } from \"./GuestObject\";\nimport { GuestPool } from \"./GuestPool\";\n\nexport interface ChainType<T = any> {\n result(guest: GuestObjectType<T>): this;\n resultArray(guest: GuestObjectType<T>): this;\n receiveKey<R>(key: string): GuestObjectType<R>;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-chain\n */\nexport class GuestChain<T> implements ChainType<T> {\n private theChain: Source<Record<string, unknown>>;\n\n private keysKnown = new Set();\n\n private keysFilled = new Set();\n\n private filledChainPool = new GuestPool(this);\n\n public constructor() {\n this.theChain = new Source<Record<string, unknown>>({});\n }\n\n public resultArray(guest: GuestType<T>) {\n const guestObject = new GuestObject(guest);\n this.filledChainPool.add(\n new GuestCast(guestObject, (value: Record<string, unknown>) => {\n guestObject.give(Object.values(value) as T);\n }),\n );\n if (this.isChainFilled()) {\n this.theChain.value(\n new Guest((chain: Record<string, unknown>) => {\n this.filledChainPool.give(Object.values(chain));\n }),\n );\n }\n return this;\n }\n\n public result(guest: GuestType<T>) {\n const guestObject = new GuestObject(guest);\n if (this.isChainFilled()) {\n this.filledChainPool.add(guestObject);\n this.theChain.value(\n new Guest((chain) => {\n this.filledChainPool.give(chain);\n }),\n );\n } else {\n this.filledChainPool.add(guestObject);\n }\n return this;\n }\n\n public receiveKey<R>(key: string): GuestObjectType<R> {\n this.keysKnown.add(key);\n return new Guest((value) => {\n // Обернул в очередь чтобы можно было синхронно наполнить очередь известных ключей\n queueMicrotask(() => {\n this.theChain.value(\n new Guest((chain: Record<string, unknown>) => {\n this.keysFilled.add(key);\n const lastChain = {\n ...chain,\n [key]: value,\n };\n this.theChain.give(lastChain);\n if (this.isChainFilled()) {\n this.filledChainPool.give(lastChain);\n }\n }),\n );\n });\n });\n }\n\n private isChainFilled() {\n return (\n this.keysFilled.size > 0 && this.keysFilled.size === this.keysKnown.size\n );\n }\n}\n","import { PatronPool } from \"../Patron/PatronPool\";\nimport { GuestCast } from \"../Guest/GuestCast\";\nimport { give, GuestType } from \"./../Guest/Guest\";\nimport { Source, SourceType } from \"./Source\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/source/source-empty\n */\nexport class SourceEmpty<T> implements SourceType<T> {\n private baseSource = new Source<T | null>(null);\n\n public value(guest: GuestType<T>) {\n this.baseSource.value(\n new GuestCast(guest as GuestType, (value) => {\n if (value !== null) {\n give(value, guest);\n }\n }),\n );\n return this;\n }\n\n public give(value: T): this {\n this.baseSource.give(value);\n return this;\n }\n\n public pool(): PatronPool<T> {\n return this.baseSource.pool();\n }\n}\n","import { FactoryType } from \"../Factory/Factory\";\nimport { give } from \"./Guest\";\nimport { GuestAwareType } from \"./GuestAware\";\nimport { GuestCast } from \"./GuestCast\";\nimport { GuestChain } from \"./GuestChain\";\nimport { GuestType } from \"./Guest\";\nimport { SourceEmpty } from \"../Source/SourceEmpty\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware-sequence\n */\nexport class GuestAwareSequence<T, TG> implements GuestAwareType<TG[]> {\n public constructor(\n private baseSource: GuestAwareType<T[]>,\n private targetSourceFactory: FactoryType<GuestAwareType<TG>>\n ) { }\n\n public value(guest: GuestType<TG[]>) {\n const chain = new GuestChain<TG[]>();\n const sequenceSource = new SourceEmpty();\n const targetSource = this.targetSourceFactory.create(\n sequenceSource\n )\n\n this.baseSource.value(\n new GuestCast(guest, (value) => {\n let index = 0;\n\n const nextItemHandle = () => {\n if (value[index + 1] !== undefined) {\n index = index + 1;\n handle();\n } else {\n chain.resultArray(guest);\n }\n }\n\n function handle() {\n sequenceSource.give(value[index]);\n targetSource.value(chain.receiveKey('' + index));\n targetSource.value(nextItemHandle);\n }\n\n if (value[index] !== undefined) {\n handle();\n } else {\n give([], guest);\n }\n })\n );\n\n return this;\n }\n}\n","import { FactoryType } from \"../Factory/Factory\";\nimport { give } from \"./Guest\";\nimport { GuestAwareType } from \"./GuestAware\";\nimport { GuestCast } from \"./GuestCast\";\nimport { GuestChain } from \"./GuestChain\";\nimport { GuestType } from \"./Guest\";\nimport { GuestAware } from \"./GuestAware\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware-map\n */\nexport class GuestAwareMap<T, TG> implements GuestAwareType<TG[]> {\n public constructor(\n private baseSource: GuestAwareType<T[]>,\n private targetSourceFactory: FactoryType<GuestAwareType<TG>>\n ) { }\n\n value(guest: GuestType<TG[]>) {\n const chain = new GuestChain();\n this.baseSource.value(\n new GuestCast(<GuestType>guest, (value) => {\n value.forEach((val, index) => {\n const targetSource = this.targetSourceFactory.create(\n new GuestAware((innerGuest) => {\n give(val, innerGuest);\n })\n )\n targetSource.value(chain.receiveKey('' + index));\n });\n })\n );\n chain.resultArray(<GuestType>guest);\n return this;\n }\n}\n","import { give, GuestType } from \"./Guest\";\nimport { GuestAwareType } from \"./GuestAware\";\nimport { GuestCast } from \"./GuestCast\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware-race\n */\nexport class GuestAwareRace<T> implements GuestAwareType<T> {\n public constructor(private guestAwares: GuestAwareType[]) { }\n\n public value(guest: GuestType<T>): this {\n let connectedWithGuestAware: GuestAwareType | null = null;\n this.guestAwares.forEach(guestAware => {\n guestAware.value(\n new GuestCast(<GuestType>guest, (value) => {\n if (!connectedWithGuestAware || connectedWithGuestAware === guestAware) {\n give(value as T, guest);\n connectedWithGuestAware = guestAware\n }\n })\n )\n });\n\n return this;\n }\n}\n","import { SourceType } from \"../Source/Source\";\nimport { SourceEmpty } from \"../Source/SourceEmpty\";\nimport { GuestType } from \"./Guest\";\nimport { GuestAwareType } from \"./GuestAware\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/action-type\n */\nexport interface ActionType<P = any> {\n do(config: P): this;\n}\n\nexport interface GuestAwareAcitveType<R = unknown, T = unknown> extends GuestAwareType<T>, ActionType<R> {\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware-active\n */\nexport class GuestAwareActive<R, T> implements GuestAwareAcitveType<R, T> {\n private source = new SourceEmpty<T>();\n\n public constructor(private configExecutor: (config: R, source: SourceType<T>) => void) { }\n\n public do(config: R): this {\n this.configExecutor(config, this.source);\n return this;\n }\n\n public value(guest: GuestType<T>): this {\n this.source.value(guest);\n return this;\n }\n}\n","import { GuestObjectType } from \"./Guest\";\n\nexport interface GuestValueType<T = any> extends GuestObjectType<T> {\n value(): T;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-sync\n */\nexport class GuestSync<T> implements GuestValueType<T> {\n public constructor(private theValue: T) { }\n\n public give(value: T): this {\n this.theValue = value;\n return this;\n }\n\n public value() {\n return this.theValue;\n }\n}\n","import { give, GiveOptions, GuestObjectType, GuestType } from \"./Guest\";\n\nexport interface GuestDisposableType<T = any> extends GuestObjectType<T> {\n disposed(value: T | null): boolean;\n}\n\nexport type MaybeDisposableType<T = any> = Partial<GuestDisposableType<T>>;\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-disposable\n */\nexport class GuestDisposable<T> implements GuestDisposableType<T> {\n public constructor(\n private guest: GuestType,\n private disposeCheck: (value: T | null) => boolean,\n ) { }\n\n public disposed(value: T | null): boolean {\n return this.disposeCheck(value);\n }\n\n public give(value: T, options?: GiveOptions): this {\n give(value, this.guest, options);\n return this;\n }\n}\n","import { GuestDisposableType } from \"../Guest/GuestDisposable\";\nimport { give, GiveOptions, GuestType } from \"../Guest/Guest\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/patron\n */\nexport class Patron<T> implements GuestDisposableType<T> {\n public constructor(private willBePatron: GuestType<T>) { }\n\n public introduction() {\n return \"patron\" as const;\n }\n\n public give(value: T, options?: GiveOptions): this {\n give(value, this.willBePatron, options);\n return this;\n }\n\n public disposed(value: T | null): boolean {\n const maybeDisposable = this.willBePatron as GuestDisposableType;\n return maybeDisposable?.disposed?.(value) || false;\n }\n}\n","import { PoolType } from \"./PatronPool\";\nimport { give, GuestType, GiveOptions } from \"../Guest/Guest\";\nimport {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"../Guest/GuestDisposable\";\n\ntype PoolAware = {\n pool?: PoolType;\n};\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/patron/patron-once\n */\nexport class PatronOnce<T> implements GuestDisposableType<T> {\n private received = false;\n\n public constructor(private baseGuest: GuestType<T>) { }\n\n public introduction() {\n return \"patron\" as const;\n }\n\n public give(value: T, options?: GiveOptions): this {\n if (!this.received) {\n give(value, this.baseGuest, options);\n }\n const data = options?.data as PoolAware;\n if (data?.pool) {\n data.pool.remove(this);\n }\n return this;\n }\n\n public disposed(value: T | null): boolean {\n const maybeDisposable = this.baseGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n }\n}\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { GuestAwareType } from \"../Guest/GuestAware\";\nimport { PatronPool } from \"../Patron/PatronPool\";\nimport { SourceType } from \"./Source\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/source-dynamic\n */\nexport class SourceDynamic<T = unknown> implements SourceType<T> {\n public constructor(\n private baseGuest: GuestType<T>,\n private baseGuestAware: GuestAwareType<T>,\n ) { }\n\n public value(guest: GuestType<T>) {\n this.baseGuestAware.value(guest);\n return this;\n }\n\n public give(value: T) {\n give(value, this.baseGuest);\n return this;\n }\n\n public pool(): PatronPool<T> {\n throw Error('No pool in SourceDynamic');\n }\n}\n","interface Constructable<T> {\n new(...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\nexport interface FactoryType<T> {\n create<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/factory\n */\nexport class Factory<T> implements FactoryType<T> {\n public constructor(\n private constructorFn: Prototyped<T>,\n private factories: Record<string, unknown> = {},\n ) { }\n\n public create<R extends unknown[], CT = null>(\n ...args: R\n ): CT extends null ? T : CT {\n return new (this.constructorFn as Constructable<T>)(\n ...args,\n this.factories,\n ) as CT extends null ? T : CT;\n }\n}\n","import { FactoryType } from \"./Factory\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/module\n */\nexport class Module<T> implements FactoryType<T> {\n public constructor(private buildingFn: (...args: any[]) => T) { }\n\n public create<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return this.buildingFn(...args) as CT extends null ? T : CT;\n }\n}\n"],"names":["__publicField"],"mappings":"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"}
1
+ {"version":3,"file":"patron.js","sources":["../src/Guest/GuestAware.ts","../src/Guest/Guest.ts","../src/Guest/GuestCast.ts","../src/Patron/PatronPool.ts","../src/Source/Source.ts","../src/Guest/GuestObject.ts","../src/Guest/GuestPool.ts","../src/Guest/GuestAwareAll.ts","../src/Source/SourceEmpty.ts","../src/Guest/GuestAwareSequence.ts","../src/Guest/GuestAwareMap.ts","../src/Guest/GuestAwareRace.ts","../src/Guest/GuestAwareActive.ts","../src/Guest/GuestSync.ts","../src/Guest/GuestDisposable.ts","../src/Patron/Patron.ts","../src/Patron/PatronOnce.ts","../src/Source/SourceDynamic.ts","../src/Factory/Factory.ts","../src/Factory/Module.ts"],"sourcesContent":["import { GuestType } from \"./Guest\";\n\nexport type GuestAwareExecutorType<T> = (guest: GuestType<T>) => unknown;\n\nexport interface GuestAwareObjectType<T> {\n value: GuestAwareExecutorType<T>\n}\n\nexport type GuestAwareType<T = any> = GuestAwareExecutorType<T> | GuestAwareObjectType<T>\n\nexport function value<T>(guestAware: GuestAwareType<T>, guest: GuestType<T>) {\n if (typeof guestAware === 'function') {\n return guestAware(guest);\n } else {\n return guestAware.value(guest);\n }\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware\n */\nexport class GuestAware<T = any> implements GuestAwareObjectType<T> {\n public constructor(private guestAware: GuestAwareType<T>) { }\n\n public value(guest: GuestType<T>): GuestType<T> {\n value(this.guestAware, guest);\n return guest;\n }\n}\n","type GuestIntroduction = \"guest\" | \"patron\";\n\nexport interface GiveOptions {\n data?: unknown;\n}\n\nexport type GuestExecutorType<T = any> = (\n value: T,\n options?: GiveOptions,\n) => void;\n\nexport interface GuestObjectType<T = any> {\n give(value: T, options?: GiveOptions): this;\n introduction?(): GuestIntroduction;\n}\n\nexport type GuestType<T = any> = GuestExecutorType<T> | GuestObjectType<T>;\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/give\n */\nexport function give<T>(data: T, guest: GuestType<T>, options?: GiveOptions) {\n if (typeof guest === \"function\") {\n guest(data, options);\n } else {\n guest.give(data, options);\n }\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest\n */\nexport class Guest<T> implements GuestObjectType<T> {\n public constructor(private receiver: GuestExecutorType<T>) { }\n\n public give(value: T, options?: GiveOptions) {\n this.receiver(value, options);\n return this;\n }\n}\n","import {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"./GuestDisposable\";\nimport { give, GiveOptions, GuestType } from \"./Guest\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-cast\n */\nexport class GuestCast<T> implements GuestDisposableType<T> {\n public constructor(\n private sourceGuest: GuestType<any>,\n private targetGuest: GuestType<T>,\n ) { }\n\n public introduction() {\n if (typeof this.sourceGuest === \"function\") {\n return \"guest\";\n }\n if (!this.sourceGuest.introduction) {\n return \"guest\";\n }\n return this.sourceGuest.introduction();\n }\n\n public give(value: T, options?: GiveOptions): this {\n give(value, this.targetGuest, options);\n return this;\n }\n\n public disposed(value: T | null): boolean {\n const maybeDisposable = this.sourceGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n }\n}\n","import { GuestDisposableType } from \"../Guest/GuestDisposable\";\nimport { give, GuestObjectType, GuestType, GiveOptions } from \"../Guest/Guest\";\n\nconst poolSets = new Map<PoolType, Set<GuestObjectType>>();\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/remove-patron-from-pools\n */\nexport const removePatronFromPools = (patron: GuestObjectType) => {\n poolSets.forEach((pool) => {\n pool.delete(patron);\n });\n};\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/is-patron-in-pools\n */\nexport const isPatronInPools = (patron: GuestObjectType) => {\n let inPool = false;\n poolSets.forEach((pool) => {\n if (!inPool) {\n inPool = pool.has(patron);\n }\n });\n return inPool;\n};\n\nexport interface PoolType<T = any> extends GuestObjectType<T> {\n add(guest: GuestObjectType<T>): this;\n distribute(receiving: T, possiblePatron: GuestObjectType<T>): this;\n remove(patron: GuestObjectType<T>): this;\n size(): number;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/patron/patron-pool\n */\nexport class PatronPool<T> implements PoolType<T> {\n private patrons: Set<GuestObjectType<T>>;\n\n public give: (value: T, options?: GiveOptions) => this;\n\n public constructor(private initiator: unknown) {\n this.patrons = new Set<GuestObjectType<T>>();\n poolSets.set(this, this.patrons);\n let lastMicrotask: (() => void) | null = null;\n const doReceive = (value: T, options?: GiveOptions) => {\n this.patrons.forEach((target) => {\n this.sendValueToGuest(value, target, options);\n });\n };\n this.give = (value: T, options?: GiveOptions) => {\n const currentMicroTask = () => {\n if (currentMicroTask === lastMicrotask) {\n doReceive(value, options);\n }\n };\n lastMicrotask = currentMicroTask;\n queueMicrotask(currentMicroTask);\n return this;\n };\n }\n\n public size(): number {\n return this.patrons.size;\n }\n\n public add(shouldBePatron: GuestType<T>) {\n if (!shouldBePatron) {\n throw new Error(\"PatronPool add method received nothing!\");\n }\n if (\n typeof shouldBePatron !== \"function\" &&\n shouldBePatron.introduction &&\n shouldBePatron.introduction() === \"patron\"\n ) {\n this.patrons.add(shouldBePatron);\n }\n return this;\n }\n\n public remove(patron: GuestObjectType<T>) {\n this.patrons.delete(patron);\n return this;\n }\n\n public distribute(receiving: T, possiblePatron: GuestType<T>): this {\n this.add(possiblePatron);\n this.sendValueToGuest(receiving, possiblePatron, {});\n return this;\n }\n\n private sendValueToGuest(\n value: T,\n guest: GuestType<T>,\n options?: GiveOptions,\n ) {\n const isDisposed = this.guestDisposed(value, guest);\n\n if (!isDisposed) {\n give(value, guest, {\n ...options,\n data: {\n ...((options?.data as Record<string, unknown>) ?? {}),\n initiator: this.initiator,\n pool: this,\n },\n });\n }\n }\n\n private guestDisposed(value: T, guest: GuestType<T>) {\n if ((guest as GuestDisposableType).disposed?.(value)) {\n this.remove(guest as GuestObjectType);\n return true;\n }\n\n return false;\n }\n}\n","import { Guest, GuestObjectType, GuestType } from \"../Guest/Guest\";\nimport { GuestAwareObjectType } from \"../Guest/GuestAware\";\nimport { PatronPool } from \"../Patron/PatronPool\";\n\nexport interface PoolAware<T = any> {\n pool(): PatronPool<T>;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/source\n */\nexport type SourceType<T = any> = GuestAwareObjectType<T> &\n GuestObjectType<T> &\n PoolAware<T>;\n\nexport class Source<T> implements SourceType<T> {\n private thePool = new PatronPool(this);\n\n public constructor(private sourceDocument: T) { }\n\n public pool() {\n return this.thePool;\n }\n\n public give(value: T): this {\n this.sourceDocument = value;\n this.thePool.give(this.sourceDocument);\n return this;\n }\n\n public value(guest: GuestType<T>): this {\n if (typeof guest === \"function\") {\n this.thePool.distribute(this.sourceDocument, new Guest(guest));\n } else {\n this.thePool.distribute(this.sourceDocument, guest);\n }\n return this;\n }\n}\n","import {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"./GuestDisposable\";\nimport { GiveOptions, Guest, GuestType } from \"./Guest\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-object\n */\nexport class GuestObject<T> implements GuestDisposableType<T> {\n public constructor(private baseGuest: GuestType<T>) { }\n\n public give(value: T, options?: GiveOptions): this {\n let guest = this.baseGuest;\n if (typeof guest === \"function\") {\n guest = new Guest(guest);\n }\n guest.give(value, options);\n return this;\n }\n\n public introduction() {\n if (typeof this.baseGuest === \"function\" || !this.baseGuest.introduction) {\n return \"guest\";\n }\n return this.baseGuest.introduction();\n }\n\n public disposed(value: T | null): boolean {\n const maybeDisposable = this.baseGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n }\n}\n","import { PatronPool } from \"../Patron/PatronPool\";\nimport { PoolType } from \"../Patron/PatronPool\";\nimport { give, GuestObjectType, GuestType, GiveOptions } from \"./Guest\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-pool\n */\nexport class GuestPool<T> implements GuestObjectType<T>, PoolType<T> {\n private guests = new Set<GuestType<T>>();\n\n private patronPool: PatronPool<T>;\n\n public constructor(initiator: unknown) {\n this.patronPool = new PatronPool(initiator);\n }\n\n public give(value: T, options?: GiveOptions): this {\n this.deliverToGuests(value, options);\n this.patronPool.give(value, options);\n return this;\n }\n\n public add(guest: GuestType<T>): this {\n if (\n typeof guest === \"function\" ||\n !guest.introduction ||\n guest.introduction() === \"guest\"\n ) {\n this.guests.add(guest);\n }\n this.patronPool.add(guest);\n return this;\n }\n\n public remove(patron: GuestObjectType<T>): this {\n this.guests.delete(patron);\n this.patronPool.remove(patron);\n return this;\n }\n\n public distribute(receiving: T, possiblePatron: GuestObjectType<T>): this {\n this.add(possiblePatron);\n this.give(receiving);\n return this;\n }\n\n public size() {\n return this.patronPool.size() + this.guests.size;\n }\n\n private deliverToGuests(value: T, options?: GiveOptions) {\n this.guests.forEach((target) => {\n give(value, target, options);\n });\n this.guests.clear();\n }\n}\n","import { GuestAwareObjectType } from \"src/Guest/GuestAware\";\nimport { Source } from \"../Source/Source\";\nimport { Guest, GuestObjectType, GuestType } from \"./Guest\";\nimport { GuestCast } from \"./GuestCast\";\nimport { GuestObject } from \"./GuestObject\";\nimport { GuestPool } from \"./GuestPool\";\n\nexport interface GuestAwareAllType<T = any> extends GuestAwareObjectType<T> {\n valueArray(guest: GuestObjectType<T>): this;\n guestKey<R>(key: string): GuestObjectType<R>;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware-all\n */\nexport class GuestAwareAll<T> implements GuestAwareAllType<T> {\n private theAll: Source<Record<string, unknown>>;\n\n private keysKnown = new Set();\n\n private keysFilled = new Set();\n\n private filledAllPool = new GuestPool(this);\n\n public constructor() {\n this.theAll = new Source<Record<string, unknown>>({});\n }\n\n public valueArray(guest: GuestType<T>) {\n const guestObject = new GuestObject(guest);\n this.filledAllPool.add(\n new GuestCast(guestObject, (value: Record<string, unknown>) => {\n guestObject.give(Object.values(value) as T);\n }),\n );\n if (this.isAllFilled()) {\n this.theAll.value(\n new Guest((all: Record<string, unknown>) => {\n this.filledAllPool.give(Object.values(all));\n }),\n );\n }\n return this;\n }\n\n public value(guest: GuestType<T>) {\n const guestObject = new GuestObject(guest);\n if (this.isAllFilled()) {\n this.filledAllPool.add(guestObject);\n this.theAll.value(\n new Guest((all) => {\n this.filledAllPool.give(all);\n }),\n );\n } else {\n this.filledAllPool.add(guestObject);\n }\n return this;\n }\n\n public guestKey<R>(key: string): GuestObjectType<R> {\n this.keysKnown.add(key);\n return new Guest((value) => {\n // Обернул в очередь чтобы можно было синхронно наполнить очередь известных ключей\n queueMicrotask(() => {\n this.theAll.value(\n new Guest((all: Record<string, unknown>) => {\n this.keysFilled.add(key);\n const lastAll = {\n ...all,\n [key]: value,\n };\n this.theAll.give(lastAll);\n if (this.isAllFilled()) {\n this.filledAllPool.give(lastAll);\n }\n }),\n );\n });\n });\n }\n\n private isAllFilled() {\n return (\n this.keysFilled.size > 0 && this.keysFilled.size === this.keysKnown.size\n );\n }\n}\n","import { PatronPool } from \"../Patron/PatronPool\";\nimport { GuestCast } from \"../Guest/GuestCast\";\nimport { give, GuestType } from \"./../Guest/Guest\";\nimport { Source, SourceType } from \"./Source\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/source/source-empty\n */\nexport class SourceEmpty<T> implements SourceType<T> {\n private baseSource = new Source<T | null>(null);\n\n public value(guest: GuestType<T>) {\n this.baseSource.value(\n new GuestCast(guest as GuestType, (value) => {\n if (value !== null) {\n give(value, guest);\n }\n }),\n );\n return this;\n }\n\n public give(value: T): this {\n this.baseSource.give(value);\n return this;\n }\n\n public pool(): PatronPool<T> {\n return this.baseSource.pool();\n }\n}\n","import { FactoryType } from \"../Factory/Factory\";\nimport { give } from \"./Guest\";\nimport { GuestAwareObjectType, GuestAwareType, value } from \"./GuestAware\";\nimport { GuestCast } from \"./GuestCast\";\nimport { GuestAwareAll } from \"./GuestAwareAll\";\nimport { GuestType } from \"./Guest\";\nimport { SourceEmpty } from \"../Source/SourceEmpty\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware-sequence\n */\nexport class GuestAwareSequence<T, TG> implements GuestAwareObjectType<TG[]> {\n public constructor(\n private baseSource: GuestAwareType<T[]>,\n private targetSourceFactory: FactoryType<GuestAwareType<TG>>\n ) { }\n\n public value(guest: GuestType<TG[]>) {\n const all = new GuestAwareAll<TG[]>();\n const sequenceSource = new SourceEmpty();\n const targetSource = this.targetSourceFactory.create(\n sequenceSource\n )\n\n value(\n this.baseSource,\n new GuestCast(guest, (theValue) => {\n let index = 0;\n\n const nextItemHandle = () => {\n if (theValue[index + 1] !== undefined) {\n index = index + 1;\n handle();\n } else {\n all.valueArray(guest);\n }\n }\n\n function handle() {\n sequenceSource.give(theValue[index]);\n value(targetSource, all.guestKey(index.toString()));\n value(targetSource, nextItemHandle);\n }\n\n if (theValue[index] !== undefined) {\n handle();\n } else {\n give([], guest);\n }\n })\n );\n return this;\n }\n}\n","import { FactoryType } from \"../Factory/Factory\";\nimport { give } from \"./Guest\";\nimport { GuestAwareObjectType, GuestAwareType, value } from \"./GuestAware\";\nimport { GuestCast } from \"./GuestCast\";\nimport { GuestAwareAll } from \"./GuestAwareAll\";\nimport { GuestType } from \"./Guest\";\nimport { GuestAware } from \"./GuestAware\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware-map\n */\nexport class GuestAwareMap<T, TG> implements GuestAwareObjectType<TG[]> {\n public constructor(\n private baseSource: GuestAwareType<T[]>,\n private targetSourceFactory: FactoryType<GuestAwareType<TG>>\n ) { }\n\n public value(guest: GuestType<TG[]>) {\n const all = new GuestAwareAll();\n value(\n this.baseSource,\n new GuestCast(<GuestType>guest, (theValue) => {\n theValue.forEach((val, index) => {\n const targetSource = this.targetSourceFactory.create(\n new GuestAware((innerGuest) => {\n give(val, innerGuest);\n })\n )\n value(targetSource, all.guestKey(index.toString()));\n });\n })\n )\n all.valueArray(<GuestType>guest);\n return this;\n }\n}\n","import { give, GuestType } from \"./Guest\";\nimport { GuestAwareObjectType, GuestAwareType, value } from \"./GuestAware\";\nimport { GuestCast } from \"./GuestCast\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware-race\n */\nexport class GuestAwareRace<T> implements GuestAwareObjectType<T> {\n public constructor(private guestAwares: GuestAwareType<T>[]) { }\n\n public value(guest: GuestType<T>): this {\n let connectedWithGuestAware: GuestAwareType | null = null;\n this.guestAwares.forEach(guestAware => {\n value(\n guestAware,\n new GuestCast(<GuestType>guest, (value) => {\n if (!connectedWithGuestAware || connectedWithGuestAware === guestAware) {\n give(value as T, guest);\n connectedWithGuestAware = guestAware\n }\n })\n );\n });\n return this;\n }\n}\n","import { SourceType } from \"../Source/Source\";\nimport { SourceEmpty } from \"../Source/SourceEmpty\";\nimport { GuestType } from \"./Guest\";\nimport { GuestAwareObjectType } from \"./GuestAware\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/action-type\n */\nexport interface ActionType<P = any> {\n do(config: P): this;\n}\n\nexport interface GuestAwareAcitveType<R = unknown, T = unknown> extends GuestAwareObjectType<T>, ActionType<R> {\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware-active\n */\nexport class GuestAwareActive<R, T> implements GuestAwareAcitveType<R, T> {\n private source = new SourceEmpty<T>();\n\n public constructor(private configExecutor: (config: R, source: SourceType<T>) => void) { }\n\n public do(config: R): this {\n this.configExecutor(config, this.source);\n return this;\n }\n\n public value(guest: GuestType<T>): this {\n this.source.value(guest);\n return this;\n }\n}\n","import { GuestObjectType } from \"./Guest\";\n\nexport interface GuestValueType<T = any> extends GuestObjectType<T> {\n value(): T;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-sync\n */\nexport class GuestSync<T> implements GuestValueType<T> {\n public constructor(private theValue: T) { }\n\n public give(value: T): this {\n this.theValue = value;\n return this;\n }\n\n public value() {\n return this.theValue;\n }\n}\n","import { give, GiveOptions, GuestObjectType, GuestType } from \"./Guest\";\n\nexport interface GuestDisposableType<T = any> extends GuestObjectType<T> {\n disposed(value: T | null): boolean;\n}\n\nexport type MaybeDisposableType<T = any> = Partial<GuestDisposableType<T>>;\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/guest/guest-disposable\n */\nexport class GuestDisposable<T> implements GuestDisposableType<T> {\n public constructor(\n private guest: GuestType,\n private disposeCheck: (value: T | null) => boolean,\n ) { }\n\n public disposed(value: T | null): boolean {\n return this.disposeCheck(value);\n }\n\n public give(value: T, options?: GiveOptions): this {\n give(value, this.guest, options);\n return this;\n }\n}\n","import { GuestDisposableType } from \"../Guest/GuestDisposable\";\nimport { give, GiveOptions, GuestType } from \"../Guest/Guest\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/patron\n */\nexport class Patron<T> implements GuestDisposableType<T> {\n public constructor(private willBePatron: GuestType<T>) { }\n\n public introduction() {\n return \"patron\" as const;\n }\n\n public give(value: T, options?: GiveOptions): this {\n give(value, this.willBePatron, options);\n return this;\n }\n\n public disposed(value: T | null): boolean {\n const maybeDisposable = this.willBePatron as GuestDisposableType;\n return maybeDisposable?.disposed?.(value) || false;\n }\n}\n","import { PoolType } from \"./PatronPool\";\nimport { give, GuestType, GiveOptions } from \"../Guest/Guest\";\nimport {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"../Guest/GuestDisposable\";\n\ntype PoolAware = {\n pool?: PoolType;\n};\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/patron/patron-once\n */\nexport class PatronOnce<T> implements GuestDisposableType<T> {\n private received = false;\n\n public constructor(private baseGuest: GuestType<T>) { }\n\n public introduction() {\n return \"patron\" as const;\n }\n\n public give(value: T, options?: GiveOptions): this {\n if (!this.received) {\n give(value, this.baseGuest, options);\n }\n const data = options?.data as PoolAware;\n if (data?.pool) {\n data.pool.remove(this);\n }\n return this;\n }\n\n public disposed(value: T | null): boolean {\n const maybeDisposable = this.baseGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n }\n}\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { GuestAwareType, value } from \"../Guest/GuestAware\";\nimport { PatronPool } from \"../Patron/PatronPool\";\nimport { SourceType } from \"./Source\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/source-dynamic\n */\nexport class SourceDynamic<T = unknown> implements SourceType<T> {\n public constructor(\n private baseGuest: GuestType<T>,\n private baseGuestAware: GuestAwareType<T>,\n ) { }\n\n public value(guest: GuestType<T>) {\n value(this.baseGuestAware, guest);\n return this;\n }\n\n public give(value: T) {\n give(value, this.baseGuest);\n return this;\n }\n\n public pool(): PatronPool<T> {\n throw Error('No pool in SourceDynamic');\n }\n}\n","interface Constructable<T> {\n new(...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\nexport interface FactoryType<T> {\n create<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT;\n}\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/factory\n */\nexport class Factory<T> implements FactoryType<T> {\n public constructor(\n private constructorFn: Prototyped<T>,\n private factories: Record<string, unknown> = {},\n ) { }\n\n public create<R extends unknown[], CT = null>(\n ...args: R\n ): CT extends null ? T : CT {\n return new (this.constructorFn as Constructable<T>)(\n ...args,\n this.factories,\n ) as CT extends null ? T : CT;\n }\n}\n","import { FactoryType } from \"./Factory\";\n\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/module\n */\nexport class Module<T> implements FactoryType<T> {\n public constructor(private buildingFn: (...args: any[]) => T) { }\n\n public create<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return this.buildingFn(...args) as CT extends null ? T : CT;\n }\n}\n"],"names":["__publicField","value"],"mappings":"AAUgB,SAAA,KAAA,CAAS,YAA+B,KAAqB,EAAA;AAC3E,EAAI,IAAA,OAAO,eAAe,UAAY,EAAA;AACpC,IAAA,OAAO,WAAW,KAAK,CAAA,CAAA;AAAA,GAClB,MAAA;AACL,IAAO,OAAA,UAAA,CAAW,MAAM,KAAK,CAAA,CAAA;AAAA,GAC/B;AACF,CAAA;AAKO,MAAM,UAAuD,CAAA;AAAA,EAC3D,YAAoB,UAA+B,EAAA;AAA/B,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA,CAAA;AAAA,GAAiC;AAAA,EAErD,MAAM,KAAmC,EAAA;AAC9C,IAAM,KAAA,CAAA,IAAA,CAAK,YAAY,KAAK,CAAA,CAAA;AAC5B,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACF;;ACPgB,SAAA,IAAA,CAAQ,IAAS,EAAA,KAAA,EAAqB,OAAuB,EAAA;AAC3E,EAAI,IAAA,OAAO,UAAU,UAAY,EAAA;AAC/B,IAAA,KAAA,CAAM,MAAM,OAAO,CAAA,CAAA;AAAA,GACd,MAAA;AACL,IAAM,KAAA,CAAA,IAAA,CAAK,MAAM,OAAO,CAAA,CAAA;AAAA,GAC1B;AACF,CAAA;AAKO,MAAM,KAAuC,CAAA;AAAA,EAC3C,YAAoB,QAAgC,EAAA;AAAhC,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA,CAAA;AAAA,GAAkC;AAAA,EAEtD,IAAA,CAAK,OAAU,OAAuB,EAAA;AAC3C,IAAK,IAAA,CAAA,QAAA,CAAS,OAAO,OAAO,CAAA,CAAA;AAC5B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;AC9BO,MAAM,SAA+C,CAAA;AAAA,EACnD,WAAA,CACG,aACA,WACR,EAAA;AAFQ,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AACA,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AAAA,GACN;AAAA,EAEG,YAAe,GAAA;AACpB,IAAI,IAAA,OAAO,IAAK,CAAA,WAAA,KAAgB,UAAY,EAAA;AAC1C,MAAO,OAAA,OAAA,CAAA;AAAA,KACT;AACA,IAAI,IAAA,CAAC,IAAK,CAAA,WAAA,CAAY,YAAc,EAAA;AAClC,MAAO,OAAA,OAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,IAAA,CAAK,YAAY,YAAa,EAAA,CAAA;AAAA,GACvC;AAAA,EAEO,IAAA,CAAK,OAAU,OAA6B,EAAA;AACjD,IAAK,IAAA,CAAA,KAAA,EAAO,IAAK,CAAA,WAAA,EAAa,OAAO,CAAA,CAAA;AACrC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,SAAS,KAA0B,EAAA;AACxC,IAAA,MAAM,kBAAkB,IAAK,CAAA,WAAA,CAAA;AAC7B,IAAA,OAAO,eAAgB,CAAA,QAAA,GAAW,eAAgB,CAAA,QAAA,CAAS,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,GACtE;AACF;;;;;AC/BA,MAAM,QAAA,uBAAe,GAAoC,EAAA,CAAA;AAK5C,MAAA,qBAAA,GAAwB,CAAC,MAA4B,KAAA;AAChE,EAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACzB,IAAA,IAAA,CAAK,OAAO,MAAM,CAAA,CAAA;AAAA,GACnB,CAAA,CAAA;AACH,EAAA;AAKa,MAAA,eAAA,GAAkB,CAAC,MAA4B,KAAA;AAC1D,EAAA,IAAI,MAAS,GAAA,KAAA,CAAA;AACb,EAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACzB,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAS,MAAA,GAAA,IAAA,CAAK,IAAI,MAAM,CAAA,CAAA;AAAA,KAC1B;AAAA,GACD,CAAA,CAAA;AACD,EAAO,OAAA,MAAA,CAAA;AACT,EAAA;AAYO,MAAM,UAAqC,CAAA;AAAA,EAKzC,YAAoB,SAAoB,EAAA;AAApB,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA,CAAA;AAJ3B,IAAQA,eAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAER,IAAOA,eAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAGL,IAAK,IAAA,CAAA,OAAA,uBAAc,GAAwB,EAAA,CAAA;AAC3C,IAAS,QAAA,CAAA,GAAA,CAAI,IAAM,EAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AAC/B,IAAA,IAAI,aAAqC,GAAA,IAAA,CAAA;AACzC,IAAM,MAAA,SAAA,GAAY,CAAC,KAAA,EAAU,OAA0B,KAAA;AACrD,MAAK,IAAA,CAAA,OAAA,CAAQ,OAAQ,CAAA,CAAC,MAAW,KAAA;AAC/B,QAAK,IAAA,CAAA,gBAAA,CAAiB,KAAO,EAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAAA,OAC7C,CAAA,CAAA;AAAA,KACH,CAAA;AACA,IAAK,IAAA,CAAA,IAAA,GAAO,CAAC,KAAA,EAAU,OAA0B,KAAA;AAC/C,MAAA,MAAM,mBAAmB,MAAM;AAC7B,QAAA,IAAI,qBAAqB,aAAe,EAAA;AACtC,UAAA,SAAA,CAAU,OAAO,OAAO,CAAA,CAAA;AAAA,SAC1B;AAAA,OACF,CAAA;AACA,MAAgB,aAAA,GAAA,gBAAA,CAAA;AAChB,MAAA,cAAA,CAAe,gBAAgB,CAAA,CAAA;AAC/B,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAAA,GACF;AAAA,EAEO,IAAe,GAAA;AACpB,IAAA,OAAO,KAAK,OAAQ,CAAA,IAAA,CAAA;AAAA,GACtB;AAAA,EAEO,IAAI,cAA8B,EAAA;AACvC,IAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,MAAM,MAAA,IAAI,MAAM,yCAAyC,CAAA,CAAA;AAAA,KAC3D;AACA,IACE,IAAA,OAAO,mBAAmB,UAC1B,IAAA,cAAA,CAAe,gBACf,cAAe,CAAA,YAAA,OAAmB,QAClC,EAAA;AACA,MAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,cAAc,CAAA,CAAA;AAAA,KACjC;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,OAAO,MAA4B,EAAA;AACxC,IAAK,IAAA,CAAA,OAAA,CAAQ,OAAO,MAAM,CAAA,CAAA;AAC1B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,UAAA,CAAW,WAAc,cAAoC,EAAA;AAClE,IAAA,IAAA,CAAK,IAAI,cAAc,CAAA,CAAA;AACvB,IAAA,IAAA,CAAK,gBAAiB,CAAA,SAAA,EAAW,cAAgB,EAAA,EAAE,CAAA,CAAA;AACnD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEQ,gBAAA,CACN,KACA,EAAA,KAAA,EACA,OACA,EAAA;AACA,IAAA,MAAM,UAAa,GAAA,IAAA,CAAK,aAAc,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAElD,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAA,IAAA,CAAK,OAAO,KAAO,EAAA;AAAA,QACjB,GAAG,OAAA;AAAA,QACH,IAAM,EAAA;AAAA,UACJ,GAAK,OAAS,EAAA,IAAA,IAAoC,EAAC;AAAA,UACnD,WAAW,IAAK,CAAA,SAAA;AAAA,UAChB,IAAM,EAAA,IAAA;AAAA,SACR;AAAA,OACD,CAAA,CAAA;AAAA,KACH;AAAA,GACF;AAAA,EAEQ,aAAA,CAAc,OAAU,KAAqB,EAAA;AACnD,IAAK,IAAA,KAAA,CAA8B,QAAW,GAAA,KAAK,CAAG,EAAA;AACpD,MAAA,IAAA,CAAK,OAAO,KAAwB,CAAA,CAAA;AACpC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACF;;;;;ACxGO,MAAM,MAAmC,CAAA;AAAA,EAGvC,YAAoB,cAAmB,EAAA;AAAnB,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA,CAAA;AAF3B,IAAQA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAU,IAAI,UAAA,CAAW,IAAI,CAAA,CAAA,CAAA;AAAA,GAEW;AAAA,EAEzC,IAAO,GAAA;AACZ,IAAA,OAAO,IAAK,CAAA,OAAA,CAAA;AAAA,GACd;AAAA,EAEO,KAAK,KAAgB,EAAA;AAC1B,IAAA,IAAA,CAAK,cAAiB,GAAA,KAAA,CAAA;AACtB,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,IAAA,CAAK,cAAc,CAAA,CAAA;AACrC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,MAAM,KAA2B,EAAA;AACtC,IAAI,IAAA,OAAO,UAAU,UAAY,EAAA;AAC/B,MAAA,IAAA,CAAK,QAAQ,UAAW,CAAA,IAAA,CAAK,gBAAgB,IAAI,KAAA,CAAM,KAAK,CAAC,CAAA,CAAA;AAAA,KACxD,MAAA;AACL,MAAA,IAAA,CAAK,OAAQ,CAAA,UAAA,CAAW,IAAK,CAAA,cAAA,EAAgB,KAAK,CAAA,CAAA;AAAA,KACpD;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;AC7BO,MAAM,WAAiD,CAAA;AAAA,EACrD,YAAoB,SAAyB,EAAA;AAAzB,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA,CAAA;AAAA,GAA2B;AAAA,EAE/C,IAAA,CAAK,OAAU,OAA6B,EAAA;AACjD,IAAA,IAAI,QAAQ,IAAK,CAAA,SAAA,CAAA;AACjB,IAAI,IAAA,OAAO,UAAU,UAAY,EAAA;AAC/B,MAAQ,KAAA,GAAA,IAAI,MAAM,KAAK,CAAA,CAAA;AAAA,KACzB;AACA,IAAM,KAAA,CAAA,IAAA,CAAK,OAAO,OAAO,CAAA,CAAA;AACzB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,YAAe,GAAA;AACpB,IAAA,IAAI,OAAO,IAAK,CAAA,SAAA,KAAc,cAAc,CAAC,IAAA,CAAK,UAAU,YAAc,EAAA;AACxE,MAAO,OAAA,OAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,IAAA,CAAK,UAAU,YAAa,EAAA,CAAA;AAAA,GACrC;AAAA,EAEO,SAAS,KAA0B,EAAA;AACxC,IAAA,MAAM,kBAAkB,IAAK,CAAA,SAAA,CAAA;AAC7B,IAAA,OAAO,eAAgB,CAAA,QAAA,GAAW,eAAgB,CAAA,QAAA,CAAS,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,GACtE;AACF;;;;;ACzBO,MAAM,SAAwD,CAAA;AAAA,EAK5D,YAAY,SAAoB,EAAA;AAJvC,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,sBAAa,GAAkB,EAAA,CAAA,CAAA;AAEvC,IAAQA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAGN,IAAK,IAAA,CAAA,UAAA,GAAa,IAAI,UAAA,CAAW,SAAS,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEO,IAAA,CAAK,OAAU,OAA6B,EAAA;AACjD,IAAK,IAAA,CAAA,eAAA,CAAgB,OAAO,OAAO,CAAA,CAAA;AACnC,IAAK,IAAA,CAAA,UAAA,CAAW,IAAK,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AACnC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,IAAI,KAA2B,EAAA;AACpC,IACE,IAAA,OAAO,UAAU,UACjB,IAAA,CAAC,MAAM,YACP,IAAA,KAAA,CAAM,YAAa,EAAA,KAAM,OACzB,EAAA;AACA,MAAK,IAAA,CAAA,MAAA,CAAO,IAAI,KAAK,CAAA,CAAA;AAAA,KACvB;AACA,IAAK,IAAA,CAAA,UAAA,CAAW,IAAI,KAAK,CAAA,CAAA;AACzB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,OAAO,MAAkC,EAAA;AAC9C,IAAK,IAAA,CAAA,MAAA,CAAO,OAAO,MAAM,CAAA,CAAA;AACzB,IAAK,IAAA,CAAA,UAAA,CAAW,OAAO,MAAM,CAAA,CAAA;AAC7B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,UAAA,CAAW,WAAc,cAA0C,EAAA;AACxE,IAAA,IAAA,CAAK,IAAI,cAAc,CAAA,CAAA;AACvB,IAAA,IAAA,CAAK,KAAK,SAAS,CAAA,CAAA;AACnB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,IAAO,GAAA;AACZ,IAAA,OAAO,IAAK,CAAA,UAAA,CAAW,IAAK,EAAA,GAAI,KAAK,MAAO,CAAA,IAAA,CAAA;AAAA,GAC9C;AAAA,EAEQ,eAAA,CAAgB,OAAU,OAAuB,EAAA;AACvD,IAAK,IAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,CAAC,MAAW,KAAA;AAC9B,MAAK,IAAA,CAAA,KAAA,EAAO,QAAQ,OAAO,CAAA,CAAA;AAAA,KAC5B,CAAA,CAAA;AACD,IAAA,IAAA,CAAK,OAAO,KAAM,EAAA,CAAA;AAAA,GACpB;AACF;;;;;ACzCO,MAAM,aAAiD,CAAA;AAAA,EASrD,WAAc,GAAA;AARrB,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAER,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,sBAAgB,GAAI,EAAA,CAAA,CAAA;AAE5B,IAAQA,eAAA,CAAA,IAAA,EAAA,YAAA,sBAAiB,GAAI,EAAA,CAAA,CAAA;AAE7B,IAAQA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAgB,IAAI,SAAA,CAAU,IAAI,CAAA,CAAA,CAAA;AAGxC,IAAA,IAAA,CAAK,MAAS,GAAA,IAAI,MAAgC,CAAA,EAAE,CAAA,CAAA;AAAA,GACtD;AAAA,EAEO,WAAW,KAAqB,EAAA;AACrC,IAAM,MAAA,WAAA,GAAc,IAAI,WAAA,CAAY,KAAK,CAAA,CAAA;AACzC,IAAA,IAAA,CAAK,aAAc,CAAA,GAAA;AAAA,MACjB,IAAI,SAAA,CAAU,WAAa,EAAA,CAAC,KAAmC,KAAA;AAC7D,QAAA,WAAA,CAAY,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,KAAK,CAAM,CAAA,CAAA;AAAA,OAC3C,CAAA;AAAA,KACH,CAAA;AACA,IAAI,IAAA,IAAA,CAAK,aAAe,EAAA;AACtB,MAAA,IAAA,CAAK,MAAO,CAAA,KAAA;AAAA,QACV,IAAI,KAAM,CAAA,CAAC,GAAiC,KAAA;AAC1C,UAAA,IAAA,CAAK,aAAc,CAAA,IAAA,CAAK,MAAO,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA,CAAA;AAAA,SAC3C,CAAA;AAAA,OACH,CAAA;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,MAAM,KAAqB,EAAA;AAChC,IAAM,MAAA,WAAA,GAAc,IAAI,WAAA,CAAY,KAAK,CAAA,CAAA;AACzC,IAAI,IAAA,IAAA,CAAK,aAAe,EAAA;AACtB,MAAK,IAAA,CAAA,aAAA,CAAc,IAAI,WAAW,CAAA,CAAA;AAClC,MAAA,IAAA,CAAK,MAAO,CAAA,KAAA;AAAA,QACV,IAAI,KAAM,CAAA,CAAC,GAAQ,KAAA;AACjB,UAAK,IAAA,CAAA,aAAA,CAAc,KAAK,GAAG,CAAA,CAAA;AAAA,SAC5B,CAAA;AAAA,OACH,CAAA;AAAA,KACK,MAAA;AACL,MAAK,IAAA,CAAA,aAAA,CAAc,IAAI,WAAW,CAAA,CAAA;AAAA,KACpC;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,SAAY,GAAiC,EAAA;AAClD,IAAK,IAAA,CAAA,SAAA,CAAU,IAAI,GAAG,CAAA,CAAA;AACtB,IAAO,OAAA,IAAI,KAAM,CAAA,CAAC,KAAU,KAAA;AAE1B,MAAA,cAAA,CAAe,MAAM;AACnB,QAAA,IAAA,CAAK,MAAO,CAAA,KAAA;AAAA,UACV,IAAI,KAAM,CAAA,CAAC,GAAiC,KAAA;AAC1C,YAAK,IAAA,CAAA,UAAA,CAAW,IAAI,GAAG,CAAA,CAAA;AACvB,YAAA,MAAM,OAAU,GAAA;AAAA,cACd,GAAG,GAAA;AAAA,cACH,CAAC,GAAG,GAAG,KAAA;AAAA,aACT,CAAA;AACA,YAAK,IAAA,CAAA,MAAA,CAAO,KAAK,OAAO,CAAA,CAAA;AACxB,YAAI,IAAA,IAAA,CAAK,aAAe,EAAA;AACtB,cAAK,IAAA,CAAA,aAAA,CAAc,KAAK,OAAO,CAAA,CAAA;AAAA,aACjC;AAAA,WACD,CAAA;AAAA,SACH,CAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GACH;AAAA,EAEQ,WAAc,GAAA;AACpB,IACE,OAAA,IAAA,CAAK,WAAW,IAAO,GAAA,CAAA,IAAK,KAAK,UAAW,CAAA,IAAA,KAAS,KAAK,SAAU,CAAA,IAAA,CAAA;AAAA,GAExE;AACF;;;;;AC/EO,MAAM,WAAwC,CAAA;AAAA,EAA9C,WAAA,GAAA;AACL,IAAQA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAa,IAAI,MAAA,CAAiB,IAAI,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAEvC,MAAM,KAAqB,EAAA;AAChC,IAAA,IAAA,CAAK,UAAW,CAAA,KAAA;AAAA,MACd,IAAI,SAAA,CAAU,KAAoB,EAAA,CAAC,KAAU,KAAA;AAC3C,QAAA,IAAI,UAAU,IAAM,EAAA;AAClB,UAAA,IAAA,CAAK,OAAO,KAAK,CAAA,CAAA;AAAA,SACnB;AAAA,OACD,CAAA;AAAA,KACH,CAAA;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,KAAK,KAAgB,EAAA;AAC1B,IAAK,IAAA,CAAA,UAAA,CAAW,KAAK,KAAK,CAAA,CAAA;AAC1B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,IAAsB,GAAA;AAC3B,IAAO,OAAA,IAAA,CAAK,WAAW,IAAK,EAAA,CAAA;AAAA,GAC9B;AACF;;ACnBO,MAAM,kBAAgE,CAAA;AAAA,EACpE,WAAA,CACG,YACA,mBACR,EAAA;AAFQ,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA,CAAA;AACA,IAAA,IAAA,CAAA,mBAAA,GAAA,mBAAA,CAAA;AAAA,GACN;AAAA,EAEG,MAAM,KAAwB,EAAA;AACnC,IAAM,MAAA,GAAA,GAAM,IAAI,aAAoB,EAAA,CAAA;AACpC,IAAM,MAAA,cAAA,GAAiB,IAAI,WAAY,EAAA,CAAA;AACvC,IAAM,MAAA,YAAA,GAAe,KAAK,mBAAoB,CAAA,MAAA;AAAA,MAC5C,cAAA;AAAA,KACF,CAAA;AAEA,IAAA,KAAA;AAAA,MACE,IAAK,CAAA,UAAA;AAAA,MACL,IAAI,SAAA,CAAU,KAAO,EAAA,CAAC,QAAa,KAAA;AACjC,QAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AAEZ,QAAA,MAAM,iBAAiB,MAAM;AAC3B,UAAA,IAAI,QAAS,CAAA,KAAA,GAAQ,CAAC,CAAA,KAAM,KAAW,CAAA,EAAA;AACrC,YAAA,KAAA,GAAQ,KAAQ,GAAA,CAAA,CAAA;AAChB,YAAO,MAAA,EAAA,CAAA;AAAA,WACF,MAAA;AACL,YAAA,GAAA,CAAI,WAAW,KAAK,CAAA,CAAA;AAAA,WACtB;AAAA,SACF,CAAA;AAEA,QAAA,SAAS,MAAS,GAAA;AAChB,UAAe,cAAA,CAAA,IAAA,CAAK,QAAS,CAAA,KAAK,CAAC,CAAA,CAAA;AACnC,UAAA,KAAA,CAAM,cAAc,GAAI,CAAA,QAAA,CAAS,KAAM,CAAA,QAAA,EAAU,CAAC,CAAA,CAAA;AAClD,UAAA,KAAA,CAAM,cAAc,cAAc,CAAA,CAAA;AAAA,SACpC;AAEA,QAAI,IAAA,QAAA,CAAS,KAAK,CAAA,KAAM,KAAW,CAAA,EAAA;AACjC,UAAO,MAAA,EAAA,CAAA;AAAA,SACF,MAAA;AACL,UAAK,IAAA,CAAA,IAAI,KAAK,CAAA,CAAA;AAAA,SAChB;AAAA,OACD,CAAA;AAAA,KACH,CAAA;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;AC1CO,MAAM,aAA2D,CAAA;AAAA,EAC/D,WAAA,CACG,YACA,mBACR,EAAA;AAFQ,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA,CAAA;AACA,IAAA,IAAA,CAAA,mBAAA,GAAA,mBAAA,CAAA;AAAA,GACN;AAAA,EAEG,MAAM,KAAwB,EAAA;AACnC,IAAM,MAAA,GAAA,GAAM,IAAI,aAAc,EAAA,CAAA;AAC9B,IAAA,KAAA;AAAA,MACE,IAAK,CAAA,UAAA;AAAA,MACL,IAAI,SAAA,CAAqB,KAAO,EAAA,CAAC,QAAa,KAAA;AAC5C,QAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,GAAA,EAAK,KAAU,KAAA;AAC/B,UAAM,MAAA,YAAA,GAAe,KAAK,mBAAoB,CAAA,MAAA;AAAA,YAC5C,IAAI,UAAW,CAAA,CAAC,UAAe,KAAA;AAC7B,cAAA,IAAA,CAAK,KAAK,UAAU,CAAA,CAAA;AAAA,aACrB,CAAA;AAAA,WACH,CAAA;AACA,UAAA,KAAA,CAAM,cAAc,GAAI,CAAA,QAAA,CAAS,KAAM,CAAA,QAAA,EAAU,CAAC,CAAA,CAAA;AAAA,SACnD,CAAA,CAAA;AAAA,OACF,CAAA;AAAA,KACH,CAAA;AACA,IAAA,GAAA,CAAI,WAAsB,KAAK,CAAA,CAAA;AAC/B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;AC5BO,MAAM,cAAqD,CAAA;AAAA,EACzD,YAAoB,WAAkC,EAAA;AAAlC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AAAA,GAAoC;AAAA,EAExD,MAAM,KAA2B,EAAA;AACtC,IAAA,IAAI,uBAAiD,GAAA,IAAA,CAAA;AACrD,IAAK,IAAA,CAAA,WAAA,CAAY,QAAQ,CAAc,UAAA,KAAA;AACrC,MAAA,KAAA;AAAA,QACE,UAAA;AAAA,QACA,IAAI,SAAA,CAAqB,KAAO,EAAA,CAACC,MAAU,KAAA;AACzC,UAAI,IAAA,CAAC,uBAA2B,IAAA,uBAAA,KAA4B,UAAY,EAAA;AACtE,YAAA,IAAA,CAAKA,QAAY,KAAK,CAAA,CAAA;AACtB,YAA0B,uBAAA,GAAA,UAAA,CAAA;AAAA,WAC5B;AAAA,SACD,CAAA;AAAA,OACH,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;;;;ACPO,MAAM,gBAA6D,CAAA;AAAA,EAGjE,YAAoB,cAA4D,EAAA;AAA5D,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA,CAAA;AAF3B,IAAQD,eAAA,CAAA,IAAA,EAAA,QAAA,EAAS,IAAI,WAAe,EAAA,CAAA,CAAA;AAAA,GAEqD;AAAA,EAElF,GAAG,MAAiB,EAAA;AACzB,IAAK,IAAA,CAAA,cAAA,CAAe,MAAQ,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AACvC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,MAAM,KAA2B,EAAA;AACtC,IAAK,IAAA,CAAA,MAAA,CAAO,MAAM,KAAK,CAAA,CAAA;AACvB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;ACvBO,MAAM,SAA0C,CAAA;AAAA,EAC9C,YAAoB,QAAa,EAAA;AAAb,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA,CAAA;AAAA,GAAe;AAAA,EAEnC,KAAK,KAAgB,EAAA;AAC1B,IAAA,IAAA,CAAK,QAAW,GAAA,KAAA,CAAA;AAChB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,KAAQ,GAAA;AACb,IAAA,OAAO,IAAK,CAAA,QAAA,CAAA;AAAA,GACd;AACF;;ACTO,MAAM,eAAqD,CAAA;AAAA,EACzD,WAAA,CACG,OACA,YACR,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AACA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA,CAAA;AAAA,GACN;AAAA,EAEG,SAAS,KAA0B,EAAA;AACxC,IAAO,OAAA,IAAA,CAAK,aAAa,KAAK,CAAA,CAAA;AAAA,GAChC;AAAA,EAEO,IAAA,CAAK,OAAU,OAA6B,EAAA;AACjD,IAAK,IAAA,CAAA,KAAA,EAAO,IAAK,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAC/B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;ACnBO,MAAM,MAA4C,CAAA;AAAA,EAChD,YAAoB,YAA4B,EAAA;AAA5B,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA,CAAA;AAAA,GAA8B;AAAA,EAElD,YAAe,GAAA;AACpB,IAAO,OAAA,QAAA,CAAA;AAAA,GACT;AAAA,EAEO,IAAA,CAAK,OAAU,OAA6B,EAAA;AACjD,IAAK,IAAA,CAAA,KAAA,EAAO,IAAK,CAAA,YAAA,EAAc,OAAO,CAAA,CAAA;AACtC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,SAAS,KAA0B,EAAA;AACxC,IAAA,MAAM,kBAAkB,IAAK,CAAA,YAAA,CAAA;AAC7B,IAAO,OAAA,eAAA,EAAiB,QAAW,GAAA,KAAK,CAAK,IAAA,KAAA,CAAA;AAAA,GAC/C;AACF;;;;;ACRO,MAAM,UAAgD,CAAA;AAAA,EAGpD,YAAoB,SAAyB,EAAA;AAAzB,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA,CAAA;AAF3B,IAAA,aAAA,CAAA,IAAA,EAAQ,UAAW,EAAA,KAAA,CAAA,CAAA;AAAA,GAEmC;AAAA,EAE/C,YAAe,GAAA;AACpB,IAAO,OAAA,QAAA,CAAA;AAAA,GACT;AAAA,EAEO,IAAA,CAAK,OAAU,OAA6B,EAAA;AACjD,IAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AAClB,MAAK,IAAA,CAAA,KAAA,EAAO,IAAK,CAAA,SAAA,EAAW,OAAO,CAAA,CAAA;AAAA,KACrC;AACA,IAAA,MAAM,OAAO,OAAS,EAAA,IAAA,CAAA;AACtB,IAAA,IAAI,MAAM,IAAM,EAAA;AACd,MAAK,IAAA,CAAA,IAAA,CAAK,OAAO,IAAI,CAAA,CAAA;AAAA,KACvB;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,SAAS,KAA0B,EAAA;AACxC,IAAA,MAAM,kBAAkB,IAAK,CAAA,SAAA,CAAA;AAC7B,IAAA,OAAO,eAAgB,CAAA,QAAA,GAAW,eAAgB,CAAA,QAAA,CAAS,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,GACtE;AACF;;AC9BO,MAAM,aAAoD,CAAA;AAAA,EACxD,WAAA,CACG,WACA,cACR,EAAA;AAFQ,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA,CAAA;AACA,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA,CAAA;AAAA,GACN;AAAA,EAEG,MAAM,KAAqB,EAAA;AAChC,IAAM,KAAA,CAAA,IAAA,CAAK,gBAAgB,KAAK,CAAA,CAAA;AAChC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,KAAKC,MAAU,EAAA;AACpB,IAAKA,IAAAA,CAAAA,MAAAA,EAAO,KAAK,SAAS,CAAA,CAAA;AAC1B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEO,IAAsB,GAAA;AAC3B,IAAA,MAAM,MAAM,0BAA0B,CAAA,CAAA;AAAA,GACxC;AACF;;ACZO,MAAM,OAAqC,CAAA;AAAA,EACzC,WACG,CAAA,aAAA,EACA,SAAqC,GAAA,EAC7C,EAAA;AAFQ,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA,CAAA;AACA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA,CAAA;AAAA,GACN;AAAA,EAEG,UACF,IACuB,EAAA;AAC1B,IAAA,OAAO,IAAK,IAAK,CAAA,aAAA;AAAA,MACf,GAAG,IAAA;AAAA,MACH,IAAK,CAAA,SAAA;AAAA,KACP,CAAA;AAAA,GACF;AACF;;ACxBO,MAAM,MAAoC,CAAA;AAAA,EACxC,YAAoB,UAAmC,EAAA;AAAnC,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA,CAAA;AAAA,GAAqC;AAAA,EAEzD,UAA0C,IAAmC,EAAA;AAClF,IAAO,OAAA,IAAA,CAAK,UAAW,CAAA,GAAG,IAAI,CAAA,CAAA;AAAA,GAChC;AACF;;;;"}
@@ -1 +1 @@
1
- !function(e){"use strict";class t{constructor(e){this.guestReceiver=e}value(e){return this.guestReceiver(e),e}}function s(e,t,s){"function"==typeof t?t(e,s):t.give(e,s)}class i{constructor(e){this.receiver=e}give(e,t){return this.receiver(e,t),this}}class r{constructor(e,t){this.sourceGuest=e,this.targetGuest=t}introduction(){return"function"==typeof this.sourceGuest?"guest":this.sourceGuest.introduction?this.sourceGuest.introduction():"guest"}give(e,t){return s(e,this.targetGuest,t),this}disposed(e){const t=this.sourceGuest;return!!t.disposed&&t.disposed(e)}}var o=Object.defineProperty,n=(e,t,s)=>((e,t,s)=>t in e?o(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const u=new Map;class a{constructor(e){this.initiator=e,n(this,"patrons"),n(this,"give"),this.patrons=new Set,u.set(this,this.patrons);let t=null;const s=(e,t)=>{this.patrons.forEach((s=>{this.sendValueToGuest(e,s,t)}))};this.give=(e,i)=>{const r=()=>{r===t&&s(e,i)};return t=r,queueMicrotask(r),this}}size(){return this.patrons.size}add(e){if(!e)throw new Error("PatronPool add method received nothing!");return"function"!=typeof e&&e.introduction&&"patron"===e.introduction()&&this.patrons.add(e),this}remove(e){return this.patrons.delete(e),this}distribute(e,t){return this.add(t),this.sendValueToGuest(e,t,{}),this}sendValueToGuest(e,t,i){this.guestDisposed(e,t)||s(e,t,{...i,data:{...i?.data??{},initiator:this.initiator,pool:this}})}guestDisposed(e,t){return!!t.disposed?.(e)&&(this.remove(t),!0)}}var h=Object.defineProperty,c=(e,t,s)=>((e,t,s)=>t in e?h(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class l{constructor(e){this.sourceDocument=e,c(this,"thePool",new a(this))}pool(){return this.thePool}give(e){return this.sourceDocument=e,this.thePool.give(this.sourceDocument),this}value(e){return"function"==typeof e?this.thePool.distribute(this.sourceDocument,new i(e)):this.thePool.distribute(this.sourceDocument,e),this}}class d{constructor(e){this.baseGuest=e}give(e,t){let s=this.baseGuest;return"function"==typeof s&&(s=new i(s)),s.give(e,t),this}introduction(){return"function"!=typeof this.baseGuest&&this.baseGuest.introduction?this.baseGuest.introduction():"guest"}disposed(e){const t=this.baseGuest;return!!t.disposed&&t.disposed(e)}}var v=Object.defineProperty,b=(e,t,s)=>((e,t,s)=>t in e?v(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class g{constructor(e){b(this,"guests",new Set),b(this,"patronPool"),this.patronPool=new a(e)}give(e,t){return this.deliverToGuests(e,t),this.patronPool.give(e,t),this}add(e){return"function"!=typeof e&&e.introduction&&"guest"!==e.introduction()||this.guests.add(e),this.patronPool.add(e),this}remove(e){return this.guests.delete(e),this.patronPool.remove(e),this}distribute(e,t){return this.add(t),this.give(e),this}size(){return this.patronPool.size()+this.guests.size}deliverToGuests(e,t){this.guests.forEach((i=>{s(e,i,t)})),this.guests.clear()}}var p=Object.defineProperty,w=(e,t,s)=>((e,t,s)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class f{constructor(){w(this,"theChain"),w(this,"keysKnown",new Set),w(this,"keysFilled",new Set),w(this,"filledChainPool",new g(this)),this.theChain=new l({})}resultArray(e){const t=new d(e);return this.filledChainPool.add(new r(t,(e=>{t.give(Object.values(e))}))),this.isChainFilled()&&this.theChain.value(new i((e=>{this.filledChainPool.give(Object.values(e))}))),this}result(e){const t=new d(e);return this.isChainFilled()?(this.filledChainPool.add(t),this.theChain.value(new i((e=>{this.filledChainPool.give(e)})))):this.filledChainPool.add(t),this}receiveKey(e){return this.keysKnown.add(e),new i((t=>{queueMicrotask((()=>{this.theChain.value(new i((s=>{this.keysFilled.add(e);const i={...s,[e]:t};this.theChain.give(i),this.isChainFilled()&&this.filledChainPool.give(i)})))}))}))}isChainFilled(){return this.keysFilled.size>0&&this.keysFilled.size===this.keysKnown.size}}var y=Object.defineProperty,P=(e,t,s)=>((e,t,s)=>t in e?y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class G{constructor(){P(this,"baseSource",new l(null))}value(e){return this.baseSource.value(new r(e,(t=>{null!==t&&s(t,e)}))),this}give(e){return this.baseSource.give(e),this}pool(){return this.baseSource.pool()}}var m=Object.defineProperty,S=(e,t,s)=>((e,t,s)=>t in e?m(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);var C=Object.defineProperty,F=(e,t,s)=>((e,t,s)=>t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);e.Factory=class{constructor(e,t={}){this.constructorFn=e,this.factories=t}create(...e){return new this.constructorFn(...e,this.factories)}},e.Guest=i,e.GuestAware=t,e.GuestAwareActive=class{constructor(e){this.configExecutor=e,S(this,"source",new G)}do(e){return this.configExecutor(e,this.source),this}value(e){return this.source.value(e),this}},e.GuestAwareMap=class{constructor(e,t){this.baseSource=e,this.targetSourceFactory=t}value(e){const i=new f;return this.baseSource.value(new r(e,(e=>{e.forEach(((e,r)=>{this.targetSourceFactory.create(new t((t=>{s(e,t)}))).value(i.receiveKey(""+r))}))}))),i.resultArray(e),this}},e.GuestAwareRace=class{constructor(e){this.guestAwares=e}value(e){let t=null;return this.guestAwares.forEach((i=>{i.value(new r(e,(r=>{t&&t!==i||(s(r,e),t=i)})))})),this}},e.GuestAwareSequence=class{constructor(e,t){this.baseSource=e,this.targetSourceFactory=t}value(e){const t=new f,i=new G,o=this.targetSourceFactory.create(i);return this.baseSource.value(new r(e,(r=>{let n=0;const u=()=>{void 0!==r[n+1]?(n+=1,a()):t.resultArray(e)};function a(){i.give(r[n]),o.value(t.receiveKey(""+n)),o.value(u)}void 0!==r[n]?a():s([],e)}))),this}},e.GuestCast=r,e.GuestChain=f,e.GuestDisposable=class{constructor(e,t){this.guest=e,this.disposeCheck=t}disposed(e){return this.disposeCheck(e)}give(e,t){return s(e,this.guest,t),this}},e.GuestObject=d,e.GuestPool=g,e.GuestSync=class{constructor(e){this.theValue=e}give(e){return this.theValue=e,this}value(){return this.theValue}},e.Module=class{constructor(e){this.buildingFn=e}create(...e){return this.buildingFn(...e)}},e.Patron=class{constructor(e){this.willBePatron=e}introduction(){return"patron"}give(e,t){return s(e,this.willBePatron,t),this}disposed(e){const t=this.willBePatron;return t?.disposed?.(e)||!1}},e.PatronOnce=class{constructor(e){this.baseGuest=e,F(this,"received",!1)}introduction(){return"patron"}give(e,t){this.received||s(e,this.baseGuest,t);const i=t?.data;return i?.pool&&i.pool.remove(this),this}disposed(e){const t=this.baseGuest;return!!t.disposed&&t.disposed(e)}},e.PatronPool=a,e.Source=l,e.SourceDynamic=class{constructor(e,t){this.baseGuest=e,this.baseGuestAware=t}value(e){return this.baseGuestAware.value(e),this}give(e){return s(e,this.baseGuest),this}pool(){throw Error("No pool in SourceDynamic")}},e.SourceEmpty=G,e.give=s,e.isPatronInPools=e=>{let t=!1;return u.forEach((s=>{t||(t=s.has(e))})),t},e.removePatronFromPools=e=>{u.forEach((t=>{t.delete(e)}))}}({});
1
+ !function(t){"use strict";function e(t,e){return"function"==typeof t?t(e):t.value(e)}class s{constructor(t){this.guestAware=t}value(t){return e(this.guestAware,t),t}}function i(t,e,s){"function"==typeof e?e(t,s):e.give(t,s)}class r{constructor(t){this.receiver=t}give(t,e){return this.receiver(t,e),this}}class o{constructor(t,e){this.sourceGuest=t,this.targetGuest=e}introduction(){return"function"==typeof this.sourceGuest?"guest":this.sourceGuest.introduction?this.sourceGuest.introduction():"guest"}give(t,e){return i(t,this.targetGuest,e),this}disposed(t){const e=this.sourceGuest;return!!e.disposed&&e.disposed(t)}}var n=Object.defineProperty,u=(t,e,s)=>((t,e,s)=>e in t?n(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,"symbol"!=typeof e?e+"":e,s);const l=new Map;class a{constructor(t){this.initiator=t,u(this,"patrons"),u(this,"give"),this.patrons=new Set,l.set(this,this.patrons);let e=null;const s=(t,e)=>{this.patrons.forEach((s=>{this.sendValueToGuest(t,s,e)}))};this.give=(t,i)=>{const r=()=>{r===e&&s(t,i)};return e=r,queueMicrotask(r),this}}size(){return this.patrons.size}add(t){if(!t)throw new Error("PatronPool add method received nothing!");return"function"!=typeof t&&t.introduction&&"patron"===t.introduction()&&this.patrons.add(t),this}remove(t){return this.patrons.delete(t),this}distribute(t,e){return this.add(e),this.sendValueToGuest(t,e,{}),this}sendValueToGuest(t,e,s){this.guestDisposed(t,e)||i(t,e,{...s,data:{...s?.data??{},initiator:this.initiator,pool:this}})}guestDisposed(t,e){return!!e.disposed?.(t)&&(this.remove(e),!0)}}var c=Object.defineProperty,h=(t,e,s)=>((t,e,s)=>e in t?c(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,e+"",s);class d{constructor(t){this.sourceDocument=t,h(this,"thePool",new a(this))}pool(){return this.thePool}give(t){return this.sourceDocument=t,this.thePool.give(this.sourceDocument),this}value(t){return"function"==typeof t?this.thePool.distribute(this.sourceDocument,new r(t)):this.thePool.distribute(this.sourceDocument,t),this}}class v{constructor(t){this.baseGuest=t}give(t,e){let s=this.baseGuest;return"function"==typeof s&&(s=new r(s)),s.give(t,e),this}introduction(){return"function"!=typeof this.baseGuest&&this.baseGuest.introduction?this.baseGuest.introduction():"guest"}disposed(t){const e=this.baseGuest;return!!e.disposed&&e.disposed(t)}}var g=Object.defineProperty,p=(t,e,s)=>((t,e,s)=>e in t?g(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,"symbol"!=typeof e?e+"":e,s);class b{constructor(t){p(this,"guests",new Set),p(this,"patronPool"),this.patronPool=new a(t)}give(t,e){return this.deliverToGuests(t,e),this.patronPool.give(t,e),this}add(t){return"function"!=typeof t&&t.introduction&&"guest"!==t.introduction()||this.guests.add(t),this.patronPool.add(t),this}remove(t){return this.guests.delete(t),this.patronPool.remove(t),this}distribute(t,e){return this.add(e),this.give(t),this}size(){return this.patronPool.size()+this.guests.size}deliverToGuests(t,e){this.guests.forEach((s=>{i(t,s,e)})),this.guests.clear()}}var w=Object.defineProperty,f=(t,e,s)=>((t,e,s)=>e in t?w(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,"symbol"!=typeof e?e+"":e,s);class y{constructor(){f(this,"theAll"),f(this,"keysKnown",new Set),f(this,"keysFilled",new Set),f(this,"filledAllPool",new b(this)),this.theAll=new d({})}valueArray(t){const e=new v(t);return this.filledAllPool.add(new o(e,(t=>{e.give(Object.values(t))}))),this.isAllFilled()&&this.theAll.value(new r((t=>{this.filledAllPool.give(Object.values(t))}))),this}value(t){const e=new v(t);return this.isAllFilled()?(this.filledAllPool.add(e),this.theAll.value(new r((t=>{this.filledAllPool.give(t)})))):this.filledAllPool.add(e),this}guestKey(t){return this.keysKnown.add(t),new r((e=>{queueMicrotask((()=>{this.theAll.value(new r((s=>{this.keysFilled.add(t);const i={...s,[t]:e};this.theAll.give(i),this.isAllFilled()&&this.filledAllPool.give(i)})))}))}))}isAllFilled(){return this.keysFilled.size>0&&this.keysFilled.size===this.keysKnown.size}}var P=Object.defineProperty,G=(t,e,s)=>((t,e,s)=>e in t?P(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,e+"",s);class A{constructor(){G(this,"baseSource",new d(null))}value(t){return this.baseSource.value(new o(t,(e=>{null!==e&&i(e,t)}))),this}give(t){return this.baseSource.give(t),this}pool(){return this.baseSource.pool()}}var m=Object.defineProperty,S=(t,e,s)=>((t,e,s)=>e in t?m(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,e+"",s);var F=Object.defineProperty,k=(t,e,s)=>((t,e,s)=>e in t?F(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,e+"",s);t.Factory=class{constructor(t,e={}){this.constructorFn=t,this.factories=e}create(...t){return new this.constructorFn(...t,this.factories)}},t.Guest=r,t.GuestAware=s,t.GuestAwareActive=class{constructor(t){this.configExecutor=t,S(this,"source",new A)}do(t){return this.configExecutor(t,this.source),this}value(t){return this.source.value(t),this}},t.GuestAwareAll=y,t.GuestAwareMap=class{constructor(t,e){this.baseSource=t,this.targetSourceFactory=e}value(t){const r=new y;return e(this.baseSource,new o(t,(t=>{t.forEach(((t,o)=>{e(this.targetSourceFactory.create(new s((e=>{i(t,e)}))),r.guestKey(o.toString()))}))}))),r.valueArray(t),this}},t.GuestAwareRace=class{constructor(t){this.guestAwares=t}value(t){let s=null;return this.guestAwares.forEach((r=>{e(r,new o(t,(e=>{s&&s!==r||(i(e,t),s=r)})))})),this}},t.GuestAwareSequence=class{constructor(t,e){this.baseSource=t,this.targetSourceFactory=e}value(t){const s=new y,r=new A,n=this.targetSourceFactory.create(r);return e(this.baseSource,new o(t,(o=>{let u=0;const l=()=>{void 0!==o[u+1]?(u+=1,a()):s.valueArray(t)};function a(){r.give(o[u]),e(n,s.guestKey(u.toString())),e(n,l)}void 0!==o[u]?a():i([],t)}))),this}},t.GuestCast=o,t.GuestDisposable=class{constructor(t,e){this.guest=t,this.disposeCheck=e}disposed(t){return this.disposeCheck(t)}give(t,e){return i(t,this.guest,e),this}},t.GuestObject=v,t.GuestPool=b,t.GuestSync=class{constructor(t){this.theValue=t}give(t){return this.theValue=t,this}value(){return this.theValue}},t.Module=class{constructor(t){this.buildingFn=t}create(...t){return this.buildingFn(...t)}},t.Patron=class{constructor(t){this.willBePatron=t}introduction(){return"patron"}give(t,e){return i(t,this.willBePatron,e),this}disposed(t){const e=this.willBePatron;return e?.disposed?.(t)||!1}},t.PatronOnce=class{constructor(t){this.baseGuest=t,k(this,"received",!1)}introduction(){return"patron"}give(t,e){this.received||i(t,this.baseGuest,e);const s=e?.data;return s?.pool&&s.pool.remove(this),this}disposed(t){const e=this.baseGuest;return!!e.disposed&&e.disposed(t)}},t.PatronPool=a,t.Source=d,t.SourceDynamic=class{constructor(t,e){this.baseGuest=t,this.baseGuestAware=e}value(t){return e(this.baseGuestAware,t),this}give(t){return i(t,this.baseGuest),this}pool(){throw Error("No pool in SourceDynamic")}},t.SourceEmpty=A,t.give=i,t.isPatronInPools=t=>{let e=!1;return l.forEach((s=>{e||(e=s.has(t))})),e},t.removePatronFromPools=t=>{l.forEach((e=>{e.delete(t)}))},t.value=e}({});
@@ -1,2 +1,2 @@
1
- class e{constructor(e){this.guestReceiver=e}value(e){return this.guestReceiver(e),e}}function t(e,t,s){"function"==typeof t?t(e,s):t.give(e,s)}class s{constructor(e){this.receiver=e}give(e,t){return this.receiver(e,t),this}}class i{constructor(e,t){this.sourceGuest=e,this.targetGuest=t}introduction(){return"function"==typeof this.sourceGuest?"guest":this.sourceGuest.introduction?this.sourceGuest.introduction():"guest"}give(e,s){return t(e,this.targetGuest,s),this}disposed(e){const t=this.sourceGuest;return!!t.disposed&&t.disposed(e)}}var r=Object.defineProperty,o=(e,t,s)=>((e,t,s)=>t in e?r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const n=new Map,u=e=>{n.forEach((t=>{t.delete(e)}))},h=e=>{let t=!1;return n.forEach((s=>{t||(t=s.has(e))})),t};class a{constructor(e){this.initiator=e,o(this,"patrons"),o(this,"give"),this.patrons=new Set,n.set(this,this.patrons);let t=null;const s=(e,t)=>{this.patrons.forEach((s=>{this.sendValueToGuest(e,s,t)}))};this.give=(e,i)=>{const r=()=>{r===t&&s(e,i)};return t=r,queueMicrotask(r),this}}size(){return this.patrons.size}add(e){if(!e)throw new Error("PatronPool add method received nothing!");return"function"!=typeof e&&e.introduction&&"patron"===e.introduction()&&this.patrons.add(e),this}remove(e){return this.patrons.delete(e),this}distribute(e,t){return this.add(t),this.sendValueToGuest(e,t,{}),this}sendValueToGuest(e,s,i){this.guestDisposed(e,s)||t(e,s,{...i,data:{...i?.data??{},initiator:this.initiator,pool:this}})}guestDisposed(e,t){return!!t.disposed?.(e)&&(this.remove(t),!0)}}var c=Object.defineProperty,l=(e,t,s)=>((e,t,s)=>t in e?c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class d{constructor(e){this.sourceDocument=e,l(this,"thePool",new a(this))}pool(){return this.thePool}give(e){return this.sourceDocument=e,this.thePool.give(this.sourceDocument),this}value(e){return"function"==typeof e?this.thePool.distribute(this.sourceDocument,new s(e)):this.thePool.distribute(this.sourceDocument,e),this}}class v{constructor(e){this.baseGuest=e}give(e,t){let i=this.baseGuest;return"function"==typeof i&&(i=new s(i)),i.give(e,t),this}introduction(){return"function"!=typeof this.baseGuest&&this.baseGuest.introduction?this.baseGuest.introduction():"guest"}disposed(e){const t=this.baseGuest;return!!t.disposed&&t.disposed(e)}}var g=Object.defineProperty,b=(e,t,s)=>((e,t,s)=>t in e?g(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class p{constructor(e){b(this,"guests",new Set),b(this,"patronPool"),this.patronPool=new a(e)}give(e,t){return this.deliverToGuests(e,t),this.patronPool.give(e,t),this}add(e){return"function"!=typeof e&&e.introduction&&"guest"!==e.introduction()||this.guests.add(e),this.patronPool.add(e),this}remove(e){return this.guests.delete(e),this.patronPool.remove(e),this}distribute(e,t){return this.add(t),this.give(e),this}size(){return this.patronPool.size()+this.guests.size}deliverToGuests(e,s){this.guests.forEach((i=>{t(e,i,s)})),this.guests.clear()}}var f=Object.defineProperty,w=(e,t,s)=>((e,t,s)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class y{constructor(){w(this,"theChain"),w(this,"keysKnown",new Set),w(this,"keysFilled",new Set),w(this,"filledChainPool",new p(this)),this.theChain=new d({})}resultArray(e){const t=new v(e);return this.filledChainPool.add(new i(t,(e=>{t.give(Object.values(e))}))),this.isChainFilled()&&this.theChain.value(new s((e=>{this.filledChainPool.give(Object.values(e))}))),this}result(e){const t=new v(e);return this.isChainFilled()?(this.filledChainPool.add(t),this.theChain.value(new s((e=>{this.filledChainPool.give(e)})))):this.filledChainPool.add(t),this}receiveKey(e){return this.keysKnown.add(e),new s((t=>{queueMicrotask((()=>{this.theChain.value(new s((s=>{this.keysFilled.add(e);const i={...s,[e]:t};this.theChain.give(i),this.isChainFilled()&&this.filledChainPool.give(i)})))}))}))}isChainFilled(){return this.keysFilled.size>0&&this.keysFilled.size===this.keysKnown.size}}var P=Object.defineProperty,G=(e,t,s)=>((e,t,s)=>t in e?P(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class m{constructor(){G(this,"baseSource",new d(null))}value(e){return this.baseSource.value(new i(e,(s=>{null!==s&&t(s,e)}))),this}give(e){return this.baseSource.give(e),this}pool(){return this.baseSource.pool()}}class C{constructor(e,t){this.baseSource=e,this.targetSourceFactory=t}value(e){const s=new y,r=new m,o=this.targetSourceFactory.create(r);return this.baseSource.value(new i(e,(i=>{let n=0;const u=()=>{void 0!==i[n+1]?(n+=1,h()):s.resultArray(e)};function h(){r.give(i[n]),o.value(s.receiveKey(""+n)),o.value(u)}void 0!==i[n]?h():t([],e)}))),this}}class S{constructor(e,t){this.baseSource=e,this.targetSourceFactory=t}value(s){const r=new y;return this.baseSource.value(new i(s,(s=>{s.forEach(((s,i)=>{this.targetSourceFactory.create(new e((e=>{t(s,e)}))).value(r.receiveKey(""+i))}))}))),r.resultArray(s),this}}class F{constructor(e){this.guestAwares=e}value(e){let s=null;return this.guestAwares.forEach((r=>{r.value(new i(e,(i=>{s&&s!==r||(t(i,e),s=r)})))})),this}}var k=Object.defineProperty,E=(e,t,s)=>((e,t,s)=>t in e?k(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class j{constructor(e){this.configExecutor=e,E(this,"source",new m)}do(e){return this.configExecutor(e,this.source),this}value(e){return this.source.value(e),this}}class O{constructor(e){this.theValue=e}give(e){return this.theValue=e,this}value(){return this.theValue}}class z{constructor(e,t){this.guest=e,this.disposeCheck=t}disposed(e){return this.disposeCheck(e)}give(e,s){return t(e,this.guest,s),this}}class D{constructor(e){this.willBePatron=e}introduction(){return"patron"}give(e,s){return t(e,this.willBePatron,s),this}disposed(e){const t=this.willBePatron;return t?.disposed?.(e)||!1}}var A=Object.defineProperty,K=(e,t,s)=>((e,t,s)=>t in e?A(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class V{constructor(e){this.baseGuest=e,K(this,"received",!1)}introduction(){return"patron"}give(e,s){this.received||t(e,this.baseGuest,s);const i=s?.data;return i?.pool&&i.pool.remove(this),this}disposed(e){const t=this.baseGuest;return!!t.disposed&&t.disposed(e)}}class T{constructor(e,t){this.baseGuest=e,this.baseGuestAware=t}value(e){return this.baseGuestAware.value(e),this}give(e){return t(e,this.baseGuest),this}pool(){throw Error("No pool in SourceDynamic")}}class x{constructor(e,t={}){this.constructorFn=e,this.factories=t}create(...e){return new this.constructorFn(...e,this.factories)}}class B{constructor(e){this.buildingFn=e}create(...e){return this.buildingFn(...e)}}export{x as Factory,s as Guest,e as GuestAware,j as GuestAwareActive,S as GuestAwareMap,F as GuestAwareRace,C as GuestAwareSequence,i as GuestCast,y as GuestChain,z as GuestDisposable,v as GuestObject,p as GuestPool,O as GuestSync,B as Module,D as Patron,V as PatronOnce,a as PatronPool,d as Source,T as SourceDynamic,m as SourceEmpty,t as give,h as isPatronInPools,u as removePatronFromPools};
1
+ function t(t,e){return"function"==typeof t?t(e):t.value(e)}class e{constructor(t){this.guestAware=t}value(e){return t(this.guestAware,e),e}}function s(t,e,s){"function"==typeof e?e(t,s):e.give(t,s)}class i{constructor(t){this.receiver=t}give(t,e){return this.receiver(t,e),this}}class r{constructor(t,e){this.sourceGuest=t,this.targetGuest=e}introduction(){return"function"==typeof this.sourceGuest?"guest":this.sourceGuest.introduction?this.sourceGuest.introduction():"guest"}give(t,e){return s(t,this.targetGuest,e),this}disposed(t){const e=this.sourceGuest;return!!e.disposed&&e.disposed(t)}}var o=Object.defineProperty,n=(t,e,s)=>((t,e,s)=>e in t?o(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,"symbol"!=typeof e?e+"":e,s);const u=new Map,l=t=>{u.forEach((e=>{e.delete(t)}))},h=t=>{let e=!1;return u.forEach((s=>{e||(e=s.has(t))})),e};class a{constructor(t){this.initiator=t,n(this,"patrons"),n(this,"give"),this.patrons=new Set,u.set(this,this.patrons);let e=null;const s=(t,e)=>{this.patrons.forEach((s=>{this.sendValueToGuest(t,s,e)}))};this.give=(t,i)=>{const r=()=>{r===e&&s(t,i)};return e=r,queueMicrotask(r),this}}size(){return this.patrons.size}add(t){if(!t)throw new Error("PatronPool add method received nothing!");return"function"!=typeof t&&t.introduction&&"patron"===t.introduction()&&this.patrons.add(t),this}remove(t){return this.patrons.delete(t),this}distribute(t,e){return this.add(e),this.sendValueToGuest(t,e,{}),this}sendValueToGuest(t,e,i){this.guestDisposed(t,e)||s(t,e,{...i,data:{...i?.data??{},initiator:this.initiator,pool:this}})}guestDisposed(t,e){return!!e.disposed?.(t)&&(this.remove(e),!0)}}var c=Object.defineProperty,d=(t,e,s)=>((t,e,s)=>e in t?c(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,e+"",s);class v{constructor(t){this.sourceDocument=t,d(this,"thePool",new a(this))}pool(){return this.thePool}give(t){return this.sourceDocument=t,this.thePool.give(this.sourceDocument),this}value(t){return"function"==typeof t?this.thePool.distribute(this.sourceDocument,new i(t)):this.thePool.distribute(this.sourceDocument,t),this}}class g{constructor(t){this.baseGuest=t}give(t,e){let s=this.baseGuest;return"function"==typeof s&&(s=new i(s)),s.give(t,e),this}introduction(){return"function"!=typeof this.baseGuest&&this.baseGuest.introduction?this.baseGuest.introduction():"guest"}disposed(t){const e=this.baseGuest;return!!e.disposed&&e.disposed(t)}}var p=Object.defineProperty,b=(t,e,s)=>((t,e,s)=>e in t?p(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,"symbol"!=typeof e?e+"":e,s);class f{constructor(t){b(this,"guests",new Set),b(this,"patronPool"),this.patronPool=new a(t)}give(t,e){return this.deliverToGuests(t,e),this.patronPool.give(t,e),this}add(t){return"function"!=typeof t&&t.introduction&&"guest"!==t.introduction()||this.guests.add(t),this.patronPool.add(t),this}remove(t){return this.guests.delete(t),this.patronPool.remove(t),this}distribute(t,e){return this.add(e),this.give(t),this}size(){return this.patronPool.size()+this.guests.size}deliverToGuests(t,e){this.guests.forEach((i=>{s(t,i,e)})),this.guests.clear()}}var w=Object.defineProperty,y=(t,e,s)=>((t,e,s)=>e in t?w(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,"symbol"!=typeof e?e+"":e,s);class P{constructor(){y(this,"theAll"),y(this,"keysKnown",new Set),y(this,"keysFilled",new Set),y(this,"filledAllPool",new f(this)),this.theAll=new v({})}valueArray(t){const e=new g(t);return this.filledAllPool.add(new r(e,(t=>{e.give(Object.values(t))}))),this.isAllFilled()&&this.theAll.value(new i((t=>{this.filledAllPool.give(Object.values(t))}))),this}value(t){const e=new g(t);return this.isAllFilled()?(this.filledAllPool.add(e),this.theAll.value(new i((t=>{this.filledAllPool.give(t)})))):this.filledAllPool.add(e),this}guestKey(t){return this.keysKnown.add(t),new i((e=>{queueMicrotask((()=>{this.theAll.value(new i((s=>{this.keysFilled.add(t);const i={...s,[t]:e};this.theAll.give(i),this.isAllFilled()&&this.filledAllPool.give(i)})))}))}))}isAllFilled(){return this.keysFilled.size>0&&this.keysFilled.size===this.keysKnown.size}}var A=Object.defineProperty,G=(t,e,s)=>((t,e,s)=>e in t?A(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,e+"",s);class m{constructor(){G(this,"baseSource",new v(null))}value(t){return this.baseSource.value(new r(t,(e=>{null!==e&&s(e,t)}))),this}give(t){return this.baseSource.give(t),this}pool(){return this.baseSource.pool()}}class S{constructor(t,e){this.baseSource=t,this.targetSourceFactory=e}value(e){const i=new P,o=new m,n=this.targetSourceFactory.create(o);return t(this.baseSource,new r(e,(r=>{let u=0;const l=()=>{void 0!==r[u+1]?(u+=1,h()):i.valueArray(e)};function h(){o.give(r[u]),t(n,i.guestKey(u.toString())),t(n,l)}void 0!==r[u]?h():s([],e)}))),this}}class F{constructor(t,e){this.baseSource=t,this.targetSourceFactory=e}value(i){const o=new P;return t(this.baseSource,new r(i,(i=>{i.forEach(((i,r)=>{t(this.targetSourceFactory.create(new e((t=>{s(i,t)}))),o.guestKey(r.toString()))}))}))),o.valueArray(i),this}}class k{constructor(t){this.guestAwares=t}value(e){let i=null;return this.guestAwares.forEach((o=>{t(o,new r(e,(t=>{i&&i!==o||(s(t,e),i=o)})))})),this}}var E=Object.defineProperty,j=(t,e,s)=>((t,e,s)=>e in t?E(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,e+"",s);class O{constructor(t){this.configExecutor=t,j(this,"source",new m)}do(t){return this.configExecutor(t,this.source),this}value(t){return this.source.value(t),this}}class z{constructor(t){this.theValue=t}give(t){return this.theValue=t,this}value(){return this.theValue}}class D{constructor(t,e){this.guest=t,this.disposeCheck=e}disposed(t){return this.disposeCheck(t)}give(t,e){return s(t,this.guest,e),this}}class K{constructor(t){this.willBePatron=t}introduction(){return"patron"}give(t,e){return s(t,this.willBePatron,e),this}disposed(t){const e=this.willBePatron;return e?.disposed?.(t)||!1}}var V=Object.defineProperty,T=(t,e,s)=>((t,e,s)=>e in t?V(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,e+"",s);class x{constructor(t){this.baseGuest=t,T(this,"received",!1)}introduction(){return"patron"}give(t,e){this.received||s(t,this.baseGuest,e);const i=e?.data;return i?.pool&&i.pool.remove(this),this}disposed(t){const e=this.baseGuest;return!!e.disposed&&e.disposed(t)}}class B{constructor(t,e){this.baseGuest=t,this.baseGuestAware=e}value(e){return t(this.baseGuestAware,e),this}give(t){return s(t,this.baseGuest),this}pool(){throw Error("No pool in SourceDynamic")}}class M{constructor(t,e={}){this.constructorFn=t,this.factories=e}create(...t){return new this.constructorFn(...t,this.factories)}}class q{constructor(t){this.buildingFn=t}create(...t){return this.buildingFn(...t)}}export{M as Factory,i as Guest,e as GuestAware,O as GuestAwareActive,P as GuestAwareAll,F as GuestAwareMap,k as GuestAwareRace,S as GuestAwareSequence,r as GuestCast,D as GuestDisposable,g as GuestObject,f as GuestPool,z as GuestSync,q as Module,K as Patron,x as PatronOnce,a as PatronPool,v as Source,B as SourceDynamic,m as SourceEmpty,s as give,h as isPatronInPools,l as removePatronFromPools,t as value};
2
2
  //# sourceMappingURL=patron.min.mjs.map