patron-oop 1.37.0 → 1.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [1.39.0](https://github.com/kosukhin/patron/compare/v1.38.0...v1.39.0) (2025-01-23)
6
+
7
+
8
+ ### Features
9
+
10
+ * **28-guestawaresuequence-and-guestawaremap-must-work-with-array-of-guestawares:** added tests ([4307227](https://github.com/kosukhin/patron/commit/4307227b7d14e3b8c99fda5296a28287a84b4cc9))
11
+ * **28-guestawaresuequence-and-guestawaremap-must-work-with-array-of-guestawares:** guest aware for map and sequence ([67bf8ed](https://github.com/kosukhin/patron/commit/67bf8ed64d95097487d1e839348cea58cec29cfa))
12
+
13
+ ## [1.38.0](https://github.com/kosukhin/patron/compare/v1.37.0...v1.38.0) (2025-01-22)
14
+
15
+
16
+ ### Features
17
+
18
+ * **25-fix-srcguestguestaware-import:** import fixed ([3a43594](https://github.com/kosukhin/patron/commit/3a43594167f738ec463d7f9b12673f6cc550a8b8))
19
+
5
20
  ## [1.37.0](https://github.com/kosukhin/patron/compare/v1.36.0...v1.37.0) (2025-01-21)
6
21
 
7
22
 
package/dist/patron.cjs CHANGED
@@ -7,6 +7,9 @@ function value(guestAware, guest) {
7
7
  return guestAware.value(guest);
8
8
  }
9
9
  }
10
+ function isGuestAware(mbGuestAware) {
11
+ return typeof mbGuestAware === "function" || typeof mbGuestAware?.value === "function";
12
+ }
10
13
  class GuestAware {
11
14
  constructor(guestAware) {
12
15
  this.guestAware = guestAware;
@@ -24,6 +27,9 @@ function give(data, guest, options) {
24
27
  guest.give(data, options);
25
28
  }
26
29
  }
30
+ function isGuest(mbGuest) {
31
+ return typeof mbGuest === "function" || typeof mbGuest?.give === "function";
32
+ }
27
33
  class Guest {
28
34
  constructor(receiver) {
29
35
  this.receiver = receiver;
@@ -333,6 +339,33 @@ class SourceEmpty {
333
339
  }
334
340
  }
335
341
 
342
+ var __defProp$1 = Object.defineProperty;
343
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
344
+ var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + "" , value);
345
+ class PatronOnce {
346
+ constructor(baseGuest) {
347
+ this.baseGuest = baseGuest;
348
+ __publicField$1(this, "received", false);
349
+ }
350
+ introduction() {
351
+ return "patron";
352
+ }
353
+ give(value, options) {
354
+ if (!this.received) {
355
+ this.received = true;
356
+ give(value, this.baseGuest, options);
357
+ }
358
+ return this;
359
+ }
360
+ disposed(value) {
361
+ if (this.received) {
362
+ return true;
363
+ }
364
+ const maybeDisposable = this.baseGuest;
365
+ return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;
366
+ }
367
+ }
368
+
336
369
  class GuestAwareSequence {
337
370
  constructor(baseSource, targetSourceFactory) {
338
371
  this.baseSource = baseSource;
@@ -357,9 +390,17 @@ class GuestAwareSequence {
357
390
  }
358
391
  };
359
392
  function handle() {
360
- sequenceSource.give(theValue[index]);
361
393
  value(targetSource, all.guestKey(index.toString()));
362
- value(targetSource, nextItemHandle);
394
+ const nextValue = theValue[index];
395
+ if (isGuestAware(nextValue)) {
396
+ value(nextValue, new PatronOnce((theNextValue) => {
397
+ sequenceSource.give(theNextValue);
398
+ nextItemHandle();
399
+ }));
400
+ } else {
401
+ sequenceSource.give(theValue[index]);
402
+ nextItemHandle();
403
+ }
363
404
  }
364
405
  if (theValue[index] !== void 0) {
365
406
  handle();
@@ -383,11 +424,10 @@ class GuestAwareMap {
383
424
  this.baseSource,
384
425
  new GuestCast(guest, (theValue) => {
385
426
  theValue.forEach((val, index) => {
386
- const targetSource = this.targetSourceFactory.create(
387
- new GuestAware((innerGuest) => {
388
- give(val, innerGuest);
389
- })
390
- );
427
+ const valueSource = isGuestAware(val) ? val : new GuestAware((innerGuest) => {
428
+ give(val, innerGuest);
429
+ });
430
+ const targetSource = this.targetSourceFactory.create(valueSource);
391
431
  value(targetSource, all.guestKey(index.toString()));
392
432
  });
393
433
  })
@@ -418,13 +458,13 @@ class GuestAwareRace {
418
458
  }
419
459
  }
420
460
 
421
- var __defProp$1 = Object.defineProperty;
422
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
423
- var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + "" , value);
461
+ var __defProp = Object.defineProperty;
462
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
463
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
424
464
  class GuestAwareActive {
425
465
  constructor(configExecutor) {
426
466
  this.configExecutor = configExecutor;
427
- __publicField$1(this, "source", new SourceEmpty());
467
+ __publicField(this, "source", new SourceEmpty());
428
468
  }
429
469
  do(config) {
430
470
  this.configExecutor(config, this.source);
@@ -480,33 +520,6 @@ class Patron {
480
520
  }
481
521
  }
482
522
 
483
- var __defProp = Object.defineProperty;
484
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
485
- var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
486
- class PatronOnce {
487
- constructor(baseGuest) {
488
- this.baseGuest = baseGuest;
489
- __publicField(this, "received", false);
490
- }
491
- introduction() {
492
- return "patron";
493
- }
494
- give(value, options) {
495
- if (!this.received) {
496
- this.received = true;
497
- give(value, this.baseGuest, options);
498
- }
499
- return this;
500
- }
501
- disposed(value) {
502
- if (this.received) {
503
- return true;
504
- }
505
- const maybeDisposable = this.baseGuest;
506
- return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;
507
- }
508
- }
509
-
510
523
  class SourceDynamic {
511
524
  constructor(baseGuest, baseGuestAware) {
512
525
  this.baseGuest = baseGuest;
@@ -568,6 +581,8 @@ exports.Source = Source;
568
581
  exports.SourceDynamic = SourceDynamic;
569
582
  exports.SourceEmpty = SourceEmpty;
570
583
  exports.give = give;
584
+ exports.isGuest = isGuest;
585
+ exports.isGuestAware = isGuestAware;
571
586
  exports.isPatronInPools = isPatronInPools;
572
587
  exports.removePatronFromPools = removePatronFromPools;
573
588
  exports.value = value;
@@ -1 +1 @@
1
- {"version":3,"file":"patron.cjs","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\";\nimport { PoolAwareOptions } from \"../Patron/PatronOnce\";\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, {\n ...options,\n data: {\n ...(options?.data ?? {}),\n castedGuest: (options?.data as PoolAwareOptions)?.castedGuest ?? this,\n }\n });\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, options) => {\n if (value !== null) {\n give(value, guest, options);\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, GuestObjectType } from \"../Guest/Guest\";\nimport {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"../Guest/GuestDisposable\";\n\nexport type PoolAwareOptions = {\n pool?: PoolType;\n castedGuest?: GuestObjectType;\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 this.received = true;\n give(value, this.baseGuest, options);\n }\n return this;\n }\n\n public disposed(value: T | null): boolean {\n if (this.received) {\n return true;\n }\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":"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"}
1
+ {"version":3,"file":"patron.cjs","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/Patron/PatronOnce.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/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\n/**\n * @url https://kosukhin.github.io/patron.site/#/utils/give\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/#/utils/is-guest-aware\n */\nexport function isGuestAware(mbGuestAware: any): mbGuestAware is GuestAwareType {\n return typeof mbGuestAware === 'function' || typeof mbGuestAware?.value === 'function';\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/#/utils/is-guest\n */\nexport function isGuest(mbGuest: any): mbGuest is GuestType {\n return typeof mbGuest === 'function' || typeof mbGuest?.give === 'function';\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\";\nimport { PoolAwareOptions } from \"../Patron/PatronOnce\";\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, {\n ...options,\n data: {\n ...(options?.data ?? {}),\n castedGuest: (options?.data as PoolAwareOptions)?.castedGuest ?? this,\n }\n });\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 \"./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, options) => {\n if (value !== null) {\n give(value, guest, options);\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 { PoolType } from \"./PatronPool\";\nimport { give, GuestType, GiveOptions, GuestObjectType } from \"../Guest/Guest\";\nimport {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"../Guest/GuestDisposable\";\n\nexport type PoolAwareOptions = {\n pool?: PoolType;\n castedGuest?: GuestObjectType;\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 this.received = true;\n give(value, this.baseGuest, options);\n }\n return this;\n }\n\n public disposed(value: T | null): boolean {\n if (this.received) {\n return true;\n }\n const maybeDisposable = this.baseGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n }\n}\n","import { FactoryType } from \"../Factory/Factory\";\nimport { give } from \"./Guest\";\nimport { GuestAwareObjectType, GuestAwareType, isGuestAware, value } from \"./GuestAware\";\nimport { GuestCast } from \"./GuestCast\";\nimport { GuestAwareAll } from \"./GuestAwareAll\";\nimport { GuestType } from \"./Guest\";\nimport { SourceEmpty } from \"../Source/SourceEmpty\";\nimport { PatronOnce } from \"../Patron/PatronOnce\";\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 value(targetSource, all.guestKey(index.toString()));\n const nextValue = theValue[index];\n if (isGuestAware(nextValue)) {\n value(nextValue, new PatronOnce((theNextValue) => {\n sequenceSource.give(theNextValue);\n nextItemHandle();\n }));\n } else {\n sequenceSource.give(theValue[index]);\n nextItemHandle();\n }\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, isGuestAware, 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 valueSource = isGuestAware(val)\n ? val\n : new GuestAware((innerGuest) => {\n give(val, innerGuest);\n });\n const targetSource = this.targetSourceFactory.create(valueSource)\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 { 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":"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"}
package/dist/patron.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- import { GuestAwareObjectType as GuestAwareObjectType$1 } from 'src/Guest/GuestAware';
2
-
3
1
  type GuestIntroduction = "guest" | "patron";
4
2
  interface GiveOptions {
5
3
  data?: unknown;
@@ -14,6 +12,10 @@ type GuestType<T = any> = GuestExecutorType<T> | GuestObjectType<T>;
14
12
  * @url https://kosukhin.github.io/patron.site/#/utils/give
15
13
  */
16
14
  declare function give<T>(data: T, guest: GuestType<T>, options?: GiveOptions): void;
15
+ /**
16
+ * @url https://kosukhin.github.io/patron.site/#/utils/is-guest
17
+ */
18
+ declare function isGuest(mbGuest: any): mbGuest is GuestType;
17
19
  /**
18
20
  * @url https://kosukhin.github.io/patron.site/#/guest
19
21
  */
@@ -28,7 +30,14 @@ interface GuestAwareObjectType<T> {
28
30
  value: GuestAwareExecutorType<T>;
29
31
  }
30
32
  type GuestAwareType<T = any> = GuestAwareExecutorType<T> | GuestAwareObjectType<T>;
33
+ /**
34
+ * @url https://kosukhin.github.io/patron.site/#/utils/give
35
+ */
31
36
  declare function value<T>(guestAware: GuestAwareType<T>, guest: GuestType<T>): unknown;
37
+ /**
38
+ * @url https://kosukhin.github.io/patron.site/#/utils/is-guest-aware
39
+ */
40
+ declare function isGuestAware(mbGuestAware: any): mbGuestAware is GuestAwareType;
32
41
  /**
33
42
  * @url https://kosukhin.github.io/patron.site/#/guest/guest-aware
34
43
  */
@@ -175,7 +184,7 @@ declare class GuestCast<T> implements GuestDisposableType<T> {
175
184
  disposed(value: T | null): boolean;
176
185
  }
177
186
 
178
- interface GuestAwareAllType<T = any> extends GuestAwareObjectType$1<T> {
187
+ interface GuestAwareAllType<T = any> extends GuestAwareObjectType<T> {
179
188
  valueArray(guest: GuestObjectType<T>): this;
180
189
  guestKey<R>(key: string): GuestObjectType<R>;
181
190
  }
@@ -291,4 +300,4 @@ declare class Module<T> implements FactoryType<T> {
291
300
  create<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT;
292
301
  }
293
302
 
294
- export { type ActionType, Factory, type FactoryType, type GiveOptions, Guest, GuestAware, type GuestAwareAcitveType, GuestAwareActive, GuestAwareAll, type GuestAwareAllType, type GuestAwareExecutorType, GuestAwareMap, type GuestAwareObjectType, GuestAwareRace, GuestAwareSequence, type GuestAwareType, GuestCast, GuestDisposable, type GuestDisposableType, type GuestExecutorType, GuestObject, type GuestObjectType, GuestPool, GuestSync, type GuestType, type GuestValueType, type MaybeDisposableType, Module, Patron, PatronOnce, PatronPool, type PoolAware, type PoolAwareOptions, type PoolType, Source, SourceDynamic, SourceEmpty, type SourceType, give, isPatronInPools, removePatronFromPools, value };
303
+ export { type ActionType, Factory, type FactoryType, type GiveOptions, Guest, GuestAware, type GuestAwareAcitveType, GuestAwareActive, GuestAwareAll, type GuestAwareAllType, type GuestAwareExecutorType, GuestAwareMap, type GuestAwareObjectType, GuestAwareRace, GuestAwareSequence, type GuestAwareType, GuestCast, GuestDisposable, type GuestDisposableType, type GuestExecutorType, GuestObject, type GuestObjectType, GuestPool, GuestSync, type GuestType, type GuestValueType, type MaybeDisposableType, Module, Patron, PatronOnce, PatronPool, type PoolAware, type PoolAwareOptions, type PoolType, Source, SourceDynamic, SourceEmpty, type SourceType, give, isGuest, isGuestAware, isPatronInPools, removePatronFromPools, value };
package/dist/patron.js CHANGED
@@ -5,6 +5,9 @@ function value(guestAware, guest) {
5
5
  return guestAware.value(guest);
6
6
  }
7
7
  }
8
+ function isGuestAware(mbGuestAware) {
9
+ return typeof mbGuestAware === "function" || typeof mbGuestAware?.value === "function";
10
+ }
8
11
  class GuestAware {
9
12
  constructor(guestAware) {
10
13
  this.guestAware = guestAware;
@@ -22,6 +25,9 @@ function give(data, guest, options) {
22
25
  guest.give(data, options);
23
26
  }
24
27
  }
28
+ function isGuest(mbGuest) {
29
+ return typeof mbGuest === "function" || typeof mbGuest?.give === "function";
30
+ }
25
31
  class Guest {
26
32
  constructor(receiver) {
27
33
  this.receiver = receiver;
@@ -331,6 +337,33 @@ class SourceEmpty {
331
337
  }
332
338
  }
333
339
 
340
+ var __defProp$1 = Object.defineProperty;
341
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
342
+ var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + "" , value);
343
+ class PatronOnce {
344
+ constructor(baseGuest) {
345
+ this.baseGuest = baseGuest;
346
+ __publicField$1(this, "received", false);
347
+ }
348
+ introduction() {
349
+ return "patron";
350
+ }
351
+ give(value, options) {
352
+ if (!this.received) {
353
+ this.received = true;
354
+ give(value, this.baseGuest, options);
355
+ }
356
+ return this;
357
+ }
358
+ disposed(value) {
359
+ if (this.received) {
360
+ return true;
361
+ }
362
+ const maybeDisposable = this.baseGuest;
363
+ return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;
364
+ }
365
+ }
366
+
334
367
  class GuestAwareSequence {
335
368
  constructor(baseSource, targetSourceFactory) {
336
369
  this.baseSource = baseSource;
@@ -355,9 +388,17 @@ class GuestAwareSequence {
355
388
  }
356
389
  };
357
390
  function handle() {
358
- sequenceSource.give(theValue[index]);
359
391
  value(targetSource, all.guestKey(index.toString()));
360
- value(targetSource, nextItemHandle);
392
+ const nextValue = theValue[index];
393
+ if (isGuestAware(nextValue)) {
394
+ value(nextValue, new PatronOnce((theNextValue) => {
395
+ sequenceSource.give(theNextValue);
396
+ nextItemHandle();
397
+ }));
398
+ } else {
399
+ sequenceSource.give(theValue[index]);
400
+ nextItemHandle();
401
+ }
361
402
  }
362
403
  if (theValue[index] !== void 0) {
363
404
  handle();
@@ -381,11 +422,10 @@ class GuestAwareMap {
381
422
  this.baseSource,
382
423
  new GuestCast(guest, (theValue) => {
383
424
  theValue.forEach((val, index) => {
384
- const targetSource = this.targetSourceFactory.create(
385
- new GuestAware((innerGuest) => {
386
- give(val, innerGuest);
387
- })
388
- );
425
+ const valueSource = isGuestAware(val) ? val : new GuestAware((innerGuest) => {
426
+ give(val, innerGuest);
427
+ });
428
+ const targetSource = this.targetSourceFactory.create(valueSource);
389
429
  value(targetSource, all.guestKey(index.toString()));
390
430
  });
391
431
  })
@@ -416,13 +456,13 @@ class GuestAwareRace {
416
456
  }
417
457
  }
418
458
 
419
- var __defProp$1 = Object.defineProperty;
420
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
421
- var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + "" , value);
459
+ var __defProp = Object.defineProperty;
460
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
461
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
422
462
  class GuestAwareActive {
423
463
  constructor(configExecutor) {
424
464
  this.configExecutor = configExecutor;
425
- __publicField$1(this, "source", new SourceEmpty());
465
+ __publicField(this, "source", new SourceEmpty());
426
466
  }
427
467
  do(config) {
428
468
  this.configExecutor(config, this.source);
@@ -478,33 +518,6 @@ class Patron {
478
518
  }
479
519
  }
480
520
 
481
- var __defProp = Object.defineProperty;
482
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
483
- var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
484
- class PatronOnce {
485
- constructor(baseGuest) {
486
- this.baseGuest = baseGuest;
487
- __publicField(this, "received", false);
488
- }
489
- introduction() {
490
- return "patron";
491
- }
492
- give(value, options) {
493
- if (!this.received) {
494
- this.received = true;
495
- give(value, this.baseGuest, options);
496
- }
497
- return this;
498
- }
499
- disposed(value) {
500
- if (this.received) {
501
- return true;
502
- }
503
- const maybeDisposable = this.baseGuest;
504
- return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;
505
- }
506
- }
507
-
508
521
  class SourceDynamic {
509
522
  constructor(baseGuest, baseGuestAware) {
510
523
  this.baseGuest = baseGuest;
@@ -545,5 +558,5 @@ class Module {
545
558
  }
546
559
  }
547
560
 
548
- 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 };
561
+ export { Factory, Guest, GuestAware, GuestAwareActive, GuestAwareAll, GuestAwareMap, GuestAwareRace, GuestAwareSequence, GuestCast, GuestDisposable, GuestObject, GuestPool, GuestSync, Module, Patron, PatronOnce, PatronPool, Source, SourceDynamic, SourceEmpty, give, isGuest, isGuestAware, isPatronInPools, removePatronFromPools, value };
549
562
  //# sourceMappingURL=patron.js.map