patron-oop 1.32.0 → 1.33.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 +7 -0
- package/dist/patron.cjs +44 -25
- package/dist/patron.cjs.map +1 -1
- package/dist/patron.d.ts +66 -47
- package/dist/patron.js +44 -26
- package/dist/patron.js.map +1 -1
- package/dist/patron.min.js +1 -1
- package/dist/patron.min.mjs +1 -1
- package/dist/patron.min.mjs.map +1 -1
- package/dist/patron.mjs +44 -26
- package/dist/patron.mjs.map +1 -1
- package/package.json +1 -1
- package/src/Guest/GuestAwareActive.test.ts +14 -0
- package/src/Guest/GuestAwareActive.ts +33 -0
- package/src/index.ts +1 -0
package/dist/patron.js.map
CHANGED
@@ -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/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 { 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/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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"}
|
package/dist/patron.min.js
CHANGED
@@ -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,
|
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)}))}}({});
|
package/dist/patron.min.mjs
CHANGED
@@ -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
|
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};
|
2
2
|
//# sourceMappingURL=patron.min.mjs.map
|
package/dist/patron.min.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"patron.min.mjs","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/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 { 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":["GuestAware","constructor","guestReceiver","this","value","guest","give","data","options","Guest","receiver","GuestCast","sourceGuest","targetGuest","introduction","disposed","maybeDisposable","poolSets","Map","removePatronFromPools","patron","forEach","pool","delete","isPatronInPools","inPool","has","PatronPool","initiator","__publicField","patrons","Set","set","lastMicrotask","doReceive","target","sendValueToGuest","currentMicroTask","queueMicrotask","size","add","shouldBePatron","Error","remove","distribute","receiving","possiblePatron","guestDisposed","Source","sourceDocument","thePool","GuestObject","baseGuest","GuestPool","patronPool","deliverToGuests","guests","clear","GuestChain","theChain","resultArray","guestObject","filledChainPool","Object","values","isChainFilled","chain","result","receiveKey","key","keysKnown","keysFilled","lastChain","SourceEmpty","baseSource","GuestAwareSequence","targetSourceFactory","sequenceSource","targetSource","create","index","nextItemHandle","handle","GuestAwareMap","val","innerGuest","GuestAwareRace","guestAwares","connectedWithGuestAware","guestAware","GuestSync","theValue","GuestDisposable","disposeCheck","Patron","willBePatron","PatronOnce","received","SourceDynamic","baseGuestAware","Factory","constructorFn","factories","args","Module","buildingFn"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"patron.min.mjs","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":["GuestAware","constructor","guestReceiver","this","value","guest","give","data","options","Guest","receiver","GuestCast","sourceGuest","targetGuest","introduction","disposed","maybeDisposable","poolSets","Map","removePatronFromPools","patron","forEach","pool","delete","isPatronInPools","inPool","has","PatronPool","initiator","__publicField","patrons","Set","set","lastMicrotask","doReceive","target","sendValueToGuest","currentMicroTask","queueMicrotask","size","add","shouldBePatron","Error","remove","distribute","receiving","possiblePatron","guestDisposed","Source","sourceDocument","thePool","GuestObject","baseGuest","GuestPool","patronPool","deliverToGuests","guests","clear","GuestChain","theChain","resultArray","guestObject","filledChainPool","Object","values","isChainFilled","chain","result","receiveKey","key","keysKnown","keysFilled","lastChain","SourceEmpty","baseSource","GuestAwareSequence","targetSourceFactory","sequenceSource","targetSource","create","index","nextItemHandle","handle","GuestAwareMap","val","innerGuest","GuestAwareRace","guestAwares","connectedWithGuestAware","guestAware","GuestAwareActive","configExecutor","config","source","GuestSync","theValue","GuestDisposable","disposeCheck","Patron","willBePatron","PatronOnce","received","SourceDynamic","baseGuestAware","Factory","constructorFn","factories","args","Module","buildingFn"],"mappings":"AASO,MAAMA,EACJ,WAAAC,CAAoBC,GAAAC,KAAAD,cAAAA,CAAgD,CAEpE,KAAAE,CAAMC,GAEJ,OADPF,KAAKD,cAAcG,GACZA,CACT,ECMc,SAAAC,EAAQC,EAASF,EAAqBG,GAC/B,mBAAVH,EACTA,EAAME,EAAMC,GAENH,EAAAC,KAAKC,EAAMC,EAErB,CAKO,MAAMC,EACJ,WAAAR,CAAoBS,GAAAP,KAAAO,SAAAA,CAAkC,CAEtD,IAAAJ,CAAKF,EAAUI,GAEb,OADFL,KAAAO,SAASN,EAAOI,GACdL,IACT,EC7BK,MAAMQ,EACJ,WAAAV,CACGW,EACAC,GADAV,KAAAS,YAAAA,EACAT,KAAAU,YAAAA,CACN,CAEG,YAAAC,GACD,MAA4B,mBAArBX,KAAKS,YACP,QAEJT,KAAKS,YAAYE,aAGfX,KAAKS,YAAYE,eAFf,OAGX,CAEO,IAAAR,CAAKF,EAAUI,GAEb,OADFF,EAAAF,EAAOD,KAAKU,YAAaL,GACvBL,IACT,CAEO,QAAAY,CAASX,GACd,MAAMY,EAAkBb,KAAKS,YAC7B,QAAOI,EAAgBD,UAAWC,EAAgBD,SAASX,EAC7D,4JC9BF,MAAMa,MAAeC,IAKRC,EAAyBC,IAC3BH,EAAAI,SAASC,IAChBA,EAAKC,OAAOH,EAAM,GACnB,EAMUI,EAAmBJ,IAC9B,IAAIK,GAAS,EAMN,OALER,EAAAI,SAASC,IACXG,IACMA,EAAAH,EAAKI,IAAIN,GACpB,IAEKK,CAAA,EAaF,MAAME,EAKJ,WAAA1B,CAAoB2B,GAAAzB,KAAAyB,UAAAA,EAJnBC,EAAA1B,KAAA,WAED0B,EAAA1B,KAAA,QAGAA,KAAA2B,YAAcC,IACVd,EAAAe,IAAI7B,KAAMA,KAAK2B,SACxB,IAAIG,EAAqC,KACnC,MAAAC,EAAY,CAAC9B,EAAUI,KACtBL,KAAA2B,QAAQT,SAASc,IACfhC,KAAAiC,iBAAiBhC,EAAO+B,EAAQ3B,EAAO,GAC7C,EAEEL,KAAAG,KAAO,CAACF,EAAUI,KACrB,MAAM6B,EAAmB,KACnBA,IAAqBJ,GACvBC,EAAU9B,EAAOI,EACnB,EAIK,OAFSyB,EAAAI,EAChBC,eAAeD,GACRlC,IAAA,CAEX,CAEO,IAAAoC,GACL,OAAOpC,KAAK2B,QAAQS,IACtB,CAEO,GAAAC,CAAIC,GACT,IAAKA,EACG,MAAA,IAAIC,MAAM,2CASX,MANqB,mBAAnBD,GACPA,EAAe3B,cACmB,WAAlC2B,EAAe3B,gBAEVX,KAAA2B,QAAQU,IAAIC,GAEZtC,IACT,CAEO,MAAAwC,CAAOvB,GAEL,OADFjB,KAAA2B,QAAQP,OAAOH,GACbjB,IACT,CAEO,UAAAyC,CAAWC,EAAcC,GAGvB,OAFP3C,KAAKqC,IAAIM,GACT3C,KAAKiC,iBAAiBS,EAAWC,EAAgB,CAAE,GAC5C3C,IACT,CAEQ,gBAAAiC,CACNhC,EACAC,EACAG,GAEmBL,KAAK4C,cAAc3C,EAAOC,IAG3CC,EAAKF,EAAOC,EAAO,IACdG,EACHD,KAAM,IACCC,GAASD,MAAoC,CAAC,EACnDqB,UAAWzB,KAAKyB,UAChBN,KAAMnB,OAId,CAEQ,aAAA4C,CAAc3C,EAAUC,GACzB,QAAAA,EAA8BU,WAAWX,KAC5CD,KAAKwC,OAAOtC,IACL,EAIX,uICvGK,MAAM2C,EAGJ,WAAA/C,CAAoBgD,GAAA9C,KAAA8C,eAAAA,EAFnBpB,EAAA1B,KAAA,UAAU,IAAIwB,EAAWxB,MAEe,CAEzC,IAAAmB,GACL,OAAOnB,KAAK+C,OACd,CAEO,IAAA5C,CAAKF,GAGH,OAFPD,KAAK8C,eAAiB7C,EACjBD,KAAA+C,QAAQ5C,KAAKH,KAAK8C,gBAChB9C,IACT,CAEO,KAAAC,CAAMC,GAMJ,MALc,mBAAVA,EACTF,KAAK+C,QAAQN,WAAWzC,KAAK8C,eAAgB,IAAIxC,EAAMJ,IAEvDF,KAAK+C,QAAQN,WAAWzC,KAAK8C,eAAgB5C,GAExCF,IACT,EC5BK,MAAMgD,EACJ,WAAAlD,CAAoBmD,GAAAjD,KAAAiD,UAAAA,CAA2B,CAE/C,IAAA9C,CAAKF,EAAUI,GACpB,IAAIH,EAAQF,KAAKiD,UAKV,MAJc,mBAAV/C,IACDA,EAAA,IAAII,EAAMJ,IAEdA,EAAAC,KAAKF,EAAOI,GACXL,IACT,CAEO,YAAAW,GACL,MAA8B,mBAAnBX,KAAKiD,WAA6BjD,KAAKiD,UAAUtC,aAGrDX,KAAKiD,UAAUtC,eAFb,OAGX,CAEO,QAAAC,CAASX,GACd,MAAMY,EAAkBb,KAAKiD,UAC7B,QAAOpC,EAAgBD,UAAWC,EAAgBD,SAASX,EAC7D,4JCxBK,MAAMiD,EAKJ,WAAApD,CAAY2B,GAJXC,EAAA1B,KAAA,aAAa4B,KAEbF,EAAA1B,KAAA,cAGDA,KAAAmD,WAAa,IAAI3B,EAAWC,EACnC,CAEO,IAAAtB,CAAKF,EAAUI,GAGb,OAFFL,KAAAoD,gBAAgBnD,EAAOI,GACvBL,KAAAmD,WAAWhD,KAAKF,EAAOI,GACrBL,IACT,CAEO,GAAAqC,CAAInC,GASF,MAPY,mBAAVA,GACNA,EAAMS,cACkB,UAAzBT,EAAMS,gBAEDX,KAAAqD,OAAOhB,IAAInC,GAEbF,KAAAmD,WAAWd,IAAInC,GACbF,IACT,CAEO,MAAAwC,CAAOvB,GAGL,OAFFjB,KAAAqD,OAAOjC,OAAOH,GACdjB,KAAAmD,WAAWX,OAAOvB,GAChBjB,IACT,CAEO,UAAAyC,CAAWC,EAAcC,GAGvB,OAFP3C,KAAKqC,IAAIM,GACT3C,KAAKG,KAAKuC,GACH1C,IACT,CAEO,IAAAoC,GACL,OAAOpC,KAAKmD,WAAWf,OAASpC,KAAKqD,OAAOjB,IAC9C,CAEQ,eAAAgB,CAAgBnD,EAAUI,GAC3BL,KAAAqD,OAAOnC,SAASc,IACd7B,EAAAF,EAAO+B,EAAQ3B,EAAO,IAE7BL,KAAKqD,OAAOC,OACd,4JCxCK,MAAMC,EASJ,WAAAzD,GARC4B,EAAA1B,KAAA,YAEA0B,EAAA1B,KAAA,gBAAgB4B,KAEhBF,EAAA1B,KAAA,iBAAiB4B,KAEjBF,EAAA1B,KAAA,kBAAkB,IAAIkD,EAAUlD,OAGtCA,KAAKwD,SAAW,IAAIX,EAAgC,CAAE,EACxD,CAEO,WAAAY,CAAYvD,GACX,MAAAwD,EAAc,IAAIV,EAAY9C,GAa7B,OAZPF,KAAK2D,gBAAgBtB,IACnB,IAAI7B,EAAUkD,GAAczD,IAC1ByD,EAAYvD,KAAKyD,OAAOC,OAAO5D,GAAW,KAG1CD,KAAK8D,iBACP9D,KAAKwD,SAASvD,MACZ,IAAIK,GAAOyD,IACT/D,KAAK2D,gBAAgBxD,KAAKyD,OAAOC,OAAOE,GAAM,KAI7C/D,IACT,CAEO,MAAAgE,CAAO9D,GACN,MAAAwD,EAAc,IAAIV,EAAY9C,GAW7B,OAVHF,KAAK8D,iBACF9D,KAAA2D,gBAAgBtB,IAAIqB,GACzB1D,KAAKwD,SAASvD,MACZ,IAAIK,GAAOyD,IACJ/D,KAAA2D,gBAAgBxD,KAAK4D,EAAK,MAI9B/D,KAAA2D,gBAAgBtB,IAAIqB,GAEpB1D,IACT,CAEO,UAAAiE,CAAcC,GAEZ,OADFlE,KAAAmE,UAAU9B,IAAI6B,GACZ,IAAI5D,GAAOL,IAEhBkC,gBAAe,KACbnC,KAAKwD,SAASvD,MACZ,IAAIK,GAAOyD,IACJ/D,KAAAoE,WAAW/B,IAAI6B,GACpB,MAAMG,EAAY,IACbN,EACHG,CAACA,GAAMjE,GAEJD,KAAAwD,SAASrD,KAAKkE,GACfrE,KAAK8D,iBACF9D,KAAA2D,gBAAgBxD,KAAKkE,EAC5B,IAEJ,GACD,GAEL,CAEQ,aAAAP,GAEJ,OAAA9D,KAAKoE,WAAWhC,KAAO,GAAKpC,KAAKoE,WAAWhC,OAASpC,KAAKmE,UAAU/B,IAExE,uIC9EK,MAAMkC,EAAN,WAAAxE,GACG4B,EAAA1B,KAAA,aAAa,IAAI6C,EAAiB,MAAI,CAEvC,KAAA5C,CAAMC,GAQJ,OAPPF,KAAKuE,WAAWtE,MACd,IAAIO,EAAUN,GAAqBD,IACnB,OAAVA,GACFE,EAAKF,EAAOC,EACd,KAGGF,IACT,CAEO,IAAAG,CAAKF,GAEH,OADFD,KAAAuE,WAAWpE,KAAKF,GACdD,IACT,CAEO,IAAAmB,GACE,OAAAnB,KAAKuE,WAAWpD,MACzB,EClBK,MAAMqD,EACJ,WAAA1E,CACGyE,EACAE,GADAzE,KAAAuE,WAAAA,EACAvE,KAAAyE,oBAAAA,CACN,CAEG,KAAAxE,CAAMC,GACL,MAAA6D,EAAQ,IAAIR,EACZmB,EAAiB,IAAIJ,EACrBK,EAAe3E,KAAKyE,oBAAoBG,OAC5CF,GA8BK,OA3BP1E,KAAKuE,WAAWtE,MACd,IAAIO,EAAUN,GAAQD,IACpB,IAAI4E,EAAQ,EAEZ,MAAMC,EAAiB,UACI,IAArB7E,EAAM4E,EAAQ,IAChBA,GAAgB,EACTE,KAEPhB,EAAMN,YAAYvD,EACpB,EAGF,SAAS6E,IACQL,EAAAvE,KAAKF,EAAM4E,IAC1BF,EAAa1E,MAAM8D,EAAME,WAAW,GAAKY,IACzCF,EAAa1E,MAAM6E,EACrB,MAEqB,IAAjB7E,EAAM4E,GACDE,IAEF5E,EAAA,GAAID,EACX,KAIGF,IACT,ECzCK,MAAMgF,EACJ,WAAAlF,CACGyE,EACAE,GADAzE,KAAAuE,WAAAA,EACAvE,KAAAyE,oBAAAA,CACN,CAEJ,KAAAxE,CAAMC,GACE,MAAA6D,EAAQ,IAAIR,EAcX,OAbPvD,KAAKuE,WAAWtE,MACd,IAAIO,EAAqBN,GAAQD,IACzBA,EAAAiB,SAAQ,CAAC+D,EAAKJ,KACG7E,KAAKyE,oBAAoBG,OAC5C,IAAI/E,GAAYqF,IACd/E,EAAK8E,EAAKC,EAAU,KAGXjF,MAAM8D,EAAME,WAAW,GAAKY,GAAM,GAChD,KAGLd,EAAMN,YAAuBvD,GACtBF,IACT,EC1BK,MAAMmF,EACJ,WAAArF,CAAoBsF,GAAApF,KAAAoF,YAAAA,CAAiC,CAErD,KAAAnF,CAAMC,GACX,IAAImF,EAAiD,KAY9C,OAXFrF,KAAAoF,YAAYlE,SAAsBoE,IAC1BA,EAAArF,MACT,IAAIO,EAAqBN,GAAQD,IAC1BoF,GAA2BA,IAA4BC,IAC1DnF,EAAKF,EAAYC,GACSmF,EAAAC,EAC5B,IAEJ,IAGKtF,IACT,uICNK,MAAMuF,EAGJ,WAAAzF,CAAoB0F,GAAAxF,KAAAwF,eAAAA,EAFnB9D,EAAA1B,KAAA,SAAS,IAAIsE,EAEoE,CAElF,GAAGmB,GAED,OADFzF,KAAAwF,eAAeC,EAAQzF,KAAK0F,QAC1B1F,IACT,CAEO,KAAAC,CAAMC,GAEJ,OADFF,KAAA0F,OAAOzF,MAAMC,GACXF,IACT,ECtBK,MAAM2F,EACJ,WAAA7F,CAAoB8F,GAAA5F,KAAA4F,SAAAA,CAAe,CAEnC,IAAAzF,CAAKF,GAEH,OADPD,KAAK4F,SAAW3F,EACTD,IACT,CAEO,KAAAC,GACL,OAAOD,KAAK4F,QACd,ECRK,MAAMC,EACJ,WAAA/F,CACGI,EACA4F,GADA9F,KAAAE,MAAAA,EACAF,KAAA8F,aAAAA,CACN,CAEG,QAAAlF,CAASX,GACP,OAAAD,KAAK8F,aAAa7F,EAC3B,CAEO,IAAAE,CAAKF,EAAUI,GAEb,OADFF,EAAAF,EAAOD,KAAKE,MAAOG,GACjBL,IACT,EClBK,MAAM+F,EACJ,WAAAjG,CAAoBkG,GAAAhG,KAAAgG,aAAAA,CAA8B,CAElD,YAAArF,GACE,MAAA,QACT,CAEO,IAAAR,CAAKF,EAAUI,GAEb,OADFF,EAAAF,EAAOD,KAAKgG,aAAc3F,GACxBL,IACT,CAEO,QAAAY,CAASX,GACd,MAAMY,EAAkBb,KAAKgG,aACtB,OAAAnF,GAAiBD,WAAWX,KAAU,CAC/C,uICPK,MAAMgG,EAGJ,WAAAnG,CAAoBmD,GAAAjD,KAAAiD,UAAAA,EAF3BvB,EAAA1B,KAAQ,YAAW,EAEmC,CAE/C,YAAAW,GACE,MAAA,QACT,CAEO,IAAAR,CAAKF,EAAUI,GACfL,KAAKkG,UACH/F,EAAAF,EAAOD,KAAKiD,UAAW5C,GAE9B,MAAMD,EAAOC,GAASD,KAIf,OAHHA,GAAMe,MACHf,EAAAe,KAAKqB,OAAOxC,MAEZA,IACT,CAEO,QAAAY,CAASX,GACd,MAAMY,EAAkBb,KAAKiD,UAC7B,QAAOpC,EAAgBD,UAAWC,EAAgBD,SAASX,EAC7D,EC7BK,MAAMkG,EACJ,WAAArG,CACGmD,EACAmD,GADApG,KAAAiD,UAAAA,EACAjD,KAAAoG,eAAAA,CACN,CAEG,KAAAnG,CAAMC,GAEJ,OADFF,KAAAoG,eAAenG,MAAMC,GACnBF,IACT,CAEO,IAAAG,CAAKF,GAEH,OADFE,EAAAF,EAAOD,KAAKiD,WACVjD,IACT,CAEO,IAAAmB,GACL,MAAMoB,MAAM,2BACd,ECXK,MAAM8D,EACJ,WAAAvG,CACGwG,EACAC,EAAqC,IADrCvG,KAAAsG,cAAAA,EACAtG,KAAAuG,UAAAA,CACN,CAEG,MAAA3B,IACF4B,GAEH,OAAO,IAAKxG,KAAKsG,iBACZE,EACHxG,KAAKuG,UAET,ECvBK,MAAME,EACJ,WAAA3G,CAAoB4G,GAAA1G,KAAA0G,WAAAA,CAAqC,CAEzD,MAAA9B,IAA0C4B,GACxC,OAAAxG,KAAK0G,cAAcF,EAC5B"}
|
package/dist/patron.mjs
CHANGED
@@ -49,9 +49,9 @@ class GuestCast {
|
|
49
49
|
}
|
50
50
|
}
|
51
51
|
|
52
|
-
var __defProp$
|
53
|
-
var __defNormalProp$
|
54
|
-
var __publicField$
|
52
|
+
var __defProp$6 = Object.defineProperty;
|
53
|
+
var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
54
|
+
var __publicField$6 = (obj, key, value) => __defNormalProp$6(obj, typeof key !== "symbol" ? key + "" : key, value);
|
55
55
|
const poolSets = /* @__PURE__ */ new Map();
|
56
56
|
const removePatronFromPools = (patron) => {
|
57
57
|
poolSets.forEach((pool) => {
|
@@ -70,8 +70,8 @@ const isPatronInPools = (patron) => {
|
|
70
70
|
class PatronPool {
|
71
71
|
constructor(initiator) {
|
72
72
|
this.initiator = initiator;
|
73
|
-
__publicField$
|
74
|
-
__publicField$
|
73
|
+
__publicField$6(this, "patrons");
|
74
|
+
__publicField$6(this, "give");
|
75
75
|
this.patrons = /* @__PURE__ */ new Set();
|
76
76
|
poolSets.set(this, this.patrons);
|
77
77
|
let lastMicrotask = null;
|
@@ -134,13 +134,13 @@ class PatronPool {
|
|
134
134
|
}
|
135
135
|
}
|
136
136
|
|
137
|
-
var __defProp$
|
138
|
-
var __defNormalProp$
|
139
|
-
var __publicField$
|
137
|
+
var __defProp$5 = Object.defineProperty;
|
138
|
+
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
139
|
+
var __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, key + "" , value);
|
140
140
|
class Source {
|
141
141
|
constructor(sourceDocument) {
|
142
142
|
this.sourceDocument = sourceDocument;
|
143
|
-
__publicField$
|
143
|
+
__publicField$5(this, "thePool", new PatronPool(this));
|
144
144
|
}
|
145
145
|
pool() {
|
146
146
|
return this.thePool;
|
@@ -184,13 +184,13 @@ class GuestObject {
|
|
184
184
|
}
|
185
185
|
}
|
186
186
|
|
187
|
-
var __defProp$
|
188
|
-
var __defNormalProp$
|
189
|
-
var __publicField$
|
187
|
+
var __defProp$4 = Object.defineProperty;
|
188
|
+
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
189
|
+
var __publicField$4 = (obj, key, value) => __defNormalProp$4(obj, typeof key !== "symbol" ? key + "" : key, value);
|
190
190
|
class GuestPool {
|
191
191
|
constructor(initiator) {
|
192
|
-
__publicField$
|
193
|
-
__publicField$
|
192
|
+
__publicField$4(this, "guests", /* @__PURE__ */ new Set());
|
193
|
+
__publicField$4(this, "patronPool");
|
194
194
|
this.patronPool = new PatronPool(initiator);
|
195
195
|
}
|
196
196
|
give(value, options) {
|
@@ -226,15 +226,15 @@ class GuestPool {
|
|
226
226
|
}
|
227
227
|
}
|
228
228
|
|
229
|
-
var __defProp$
|
230
|
-
var __defNormalProp$
|
231
|
-
var __publicField$
|
229
|
+
var __defProp$3 = Object.defineProperty;
|
230
|
+
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
231
|
+
var __publicField$3 = (obj, key, value) => __defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
|
232
232
|
class GuestChain {
|
233
233
|
constructor() {
|
234
|
-
__publicField$
|
235
|
-
__publicField$
|
236
|
-
__publicField$
|
237
|
-
__publicField$
|
234
|
+
__publicField$3(this, "theChain");
|
235
|
+
__publicField$3(this, "keysKnown", /* @__PURE__ */ new Set());
|
236
|
+
__publicField$3(this, "keysFilled", /* @__PURE__ */ new Set());
|
237
|
+
__publicField$3(this, "filledChainPool", new GuestPool(this));
|
238
238
|
this.theChain = new Source({});
|
239
239
|
}
|
240
240
|
resultArray(guest) {
|
@@ -292,12 +292,12 @@ class GuestChain {
|
|
292
292
|
}
|
293
293
|
}
|
294
294
|
|
295
|
-
var __defProp$
|
296
|
-
var __defNormalProp$
|
297
|
-
var __publicField$
|
295
|
+
var __defProp$2 = Object.defineProperty;
|
296
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
297
|
+
var __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, key + "" , value);
|
298
298
|
class SourceEmpty {
|
299
299
|
constructor() {
|
300
|
-
__publicField$
|
300
|
+
__publicField$2(this, "baseSource", new Source(null));
|
301
301
|
}
|
302
302
|
value(guest) {
|
303
303
|
this.baseSource.value(
|
@@ -400,6 +400,24 @@ class GuestAwareRace {
|
|
400
400
|
}
|
401
401
|
}
|
402
402
|
|
403
|
+
var __defProp$1 = Object.defineProperty;
|
404
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
405
|
+
var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + "" , value);
|
406
|
+
class GuestAwareActive {
|
407
|
+
constructor(configExecutor) {
|
408
|
+
this.configExecutor = configExecutor;
|
409
|
+
__publicField$1(this, "source", new SourceEmpty());
|
410
|
+
}
|
411
|
+
do(config) {
|
412
|
+
this.configExecutor(config, this.source);
|
413
|
+
return this;
|
414
|
+
}
|
415
|
+
value(guest) {
|
416
|
+
this.source.value(guest);
|
417
|
+
return this;
|
418
|
+
}
|
419
|
+
}
|
420
|
+
|
403
421
|
class GuestSync {
|
404
422
|
constructor(theValue) {
|
405
423
|
this.theValue = theValue;
|
@@ -511,5 +529,5 @@ class Module {
|
|
511
529
|
}
|
512
530
|
}
|
513
531
|
|
514
|
-
export { Factory, Guest, GuestAware, GuestAwareMap, GuestAwareRace, GuestAwareSequence, GuestCast, GuestChain, GuestDisposable, GuestObject, GuestPool, GuestSync, Module, Patron, PatronOnce, PatronPool, Source, SourceDynamic, SourceEmpty, give, isPatronInPools, removePatronFromPools };
|
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 };
|
515
533
|
//# sourceMappingURL=patron.mjs.map
|