@jscutlery/microwave 0.4.17 → 0.4.18

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.
@@ -1 +1 @@
1
- {"version":3,"file":"jscutlery-microwave.mjs","sources":["../../../../packages/microwave/src/lib/core/engine.ts","../../../../packages/microwave/src/lib/devkit.ts","../../../../packages/microwave/src/lib/shared/decorator.ts","../../../../packages/microwave/src/lib/apply-strategy.ts","../../../../packages/microwave/src/lib/strategies/local.ts","../../../../packages/microwave/src/lib/strategies/sync.ts","../../../../packages/microwave/src/lib/strategies/asap.ts","../../../../packages/microwave/src/lib/strategies/async.ts","../../../../packages/microwave/src/lib/strategies/raf.ts","../../../../packages/microwave/src/lib/microwave.ts","../../../../packages/microwave/src/jscutlery-microwave.ts"],"sourcesContent":["import {\n BehaviorSubject,\n map,\n mapTo,\n Observable,\n ReplaySubject,\n take,\n} from 'rxjs';\nimport { ChangeDetectionFns } from './change-detection-fns';\n\n/**\n * This should stay decoupled from Angular.\n *\n * @param component an instance of anything\n * @returns an set of methods and observables that respectively\n * control and represent the state of the object.\n */\nexport function getEngine<COMPONENT, K extends keyof COMPONENT = keyof COMPONENT>(\n component: COMPONENT\n): MicrowaveEngine<COMPONENT, K> {\n /* Memoize engine. */\n const microwavedComponent = component as Microwaved<COMPONENT>;\n const engine = microwavedComponent[_ENGINE_SYMBOL];\n if (engine != null) {\n return engine;\n }\n\n const destroyed$ = new ReplaySubject<void>(1);\n const initialized$ = new ReplaySubject<void>(1);\n const state$ = new BehaviorSubject<Partial<COMPONENT>>({});\n let changeDetectionFns: ChangeDetectionFns;\n\n return (microwavedComponent[_ENGINE_SYMBOL] = {\n destroyed$: destroyed$.pipe(take(1)),\n initialized$: initialized$.pipe(take(1)),\n changed$: state$.pipe(mapTo(undefined)),\n detach() {\n changeDetectionFns.detach();\n },\n detectChanges() {\n changeDetectionFns.detectChanges();\n },\n markDestroyed() {\n destroyed$.next();\n },\n markInitialized() {\n initialized$.next();\n },\n setChangeDetectionFns(_changeDetectionFns: ChangeDetectionFns) {\n changeDetectionFns = _changeDetectionFns;\n },\n getProperty(property) {\n return state$.value[property];\n },\n setProperty(property, value) {\n /* Don't set value if it didn't change.\n * This is more performant than `distinctUntilChanged` all over the place. */\n if (state$.value[property] === value) {\n return;\n }\n\n state$.next({ ...state$.value, [property]: value });\n },\n watchProperty(property) {\n return state$.pipe(map((state) => state[property]));\n },\n });\n}\n\nexport const _ENGINE_SYMBOL = Symbol('MicrowaveEngine');\n\nexport type Microwaved<T, K extends keyof T = keyof T> = T & {\n [_ENGINE_SYMBOL]?: MicrowaveEngine<T, K>;\n};\n\nexport interface MicrowaveEngine<T, K extends keyof T> {\n /**\n * Functions below form the strategy facade.\n */\n destroyed$: Observable<void>;\n /* Tells when component is initialized (ngOnInit). */\n initialized$: Observable<void>;\n /* Tells if some property changed. */\n changed$: Observable<void>;\n detach(): void;\n detectChanges(): void;\n\n /**\n * Functions below are used to bind with component.\n */\n setChangeDetectionFns(changeDetectionFns: ChangeDetectionFns): void;\n markDestroyed(): void;\n markInitialized(): void;\n getProperty<PROP extends K>(property: PROP): T[PROP] | undefined;\n setProperty<PROP extends K>(property: PROP, value: T[PROP]): void;\n watchProperty<PROP extends K>(\n property: PROP\n ): Observable<T[PROP] | undefined>;\n}\n\nexport type MicrowaveSubjectsMap<T, K extends keyof T> = Map<\n K,\n BehaviorSubject<T[K]>\n>;\n\nexport function _getPropertySubject<T, K extends keyof T, PROP extends K>(\n subjectsMap: MicrowaveSubjectsMap<T, K>,\n property: PROP\n): BehaviorSubject<T[PROP]> {\n let subject = subjectsMap.get(property);\n\n if (subject == null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n subject = new BehaviorSubject(undefined as any);\n subjectsMap.set(property, subject);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return subject as any;\n}\n","import { getEngine, MicrowaveEngine } from './core/engine';\n\nexport function getStrategyDevKit<COMPONENT, K extends keyof COMPONENT = keyof COMPONENT>(\n component: COMPONENT\n): StrategyDevKit<COMPONENT, K> {\n const { changed$, destroyed$, initialized$, detach, detectChanges } =\n getEngine(component);\n return { changed$, destroyed$, initialized$, detach, detectChanges };\n}\n\nexport type StrategyDevKit<T, K extends keyof T = keyof T> = Pick<\n MicrowaveEngine<T, K>,\n 'changed$' | 'destroyed$' | 'initialized$' | 'detach' | 'detectChanges'\n>;\n\nexport type Strategy<T> = (strategyDevKit: StrategyDevKit<T>) => void;\n","import { ChangeDetectorRef, Type, ɵɵdirectiveInject } from '@angular/core';\nimport { ChangeDetectionFns } from '../core/change-detection-fns';\n\n/**\n * Decorate Angular components with custom hooks.\n *\n * @param componentType the component class to decorate.\n * @param hooks\n */\nexport function decorateComponent<T, K extends keyof T = keyof T>(\n componentType: IvyComponentType<T>,\n hooks: DecoratorHooks<T>\n) {\n const {\n onCreate,\n onInit,\n onDestroy,\n onPropertyDeclare,\n onPropertyGet,\n onPropertySet,\n } = hooks;\n\n if (!componentType.ɵfac) {\n throw new Error(\n `${componentType.name} is either not a component or not compiled.`\n );\n }\n\n /**\n * Override component factory.\n */\n const factory = _decorate(\n componentType.ɵfac,\n /*\n * Override getters & setters.\n */\n (factoryFn: () => T) => () => {\n /* Grab change detector to control it. */\n const cdr = ɵɵdirectiveInject(ChangeDetectorRef);\n\n const component = factoryFn();\n\n /**\n * Notify about creation.\n */\n onCreate(component, {\n detach() {\n cdr.detach();\n },\n detectChanges() {\n cdr.detectChanges();\n },\n });\n\n /**\n * This will only list initialized properties.\n * That's the reason why all properties should be initialized\n * when using Microwave.\n */\n for (const property of Object.getOwnPropertyNames(\n component\n ) as Array<K>) {\n /**\n * Notify when property is discovered.\n */\n onPropertyDeclare(component, property, component[property]);\n\n Object.defineProperty(component, property, {\n set(value) {\n /**\n * Call setter.\n */\n onPropertySet(component, property, value);\n },\n get() {\n /**\n * Call getter.\n */\n return onPropertyGet(component, property);\n },\n });\n }\n\n return component;\n }\n );\n\n /**\n * Override factory with the newly decorated one.\n */\n Object.defineProperty(componentType, 'ɵfac', {\n get() {\n return factory;\n },\n });\n\n /**\n * Link hooks.\n */\n _spyOnMethod(componentType, 'ngOnInit', onInit);\n _spyOnMethod(componentType, 'ngOnDestroy', onDestroy);\n}\n\nexport interface DecoratorHooks<T, K extends keyof T = keyof T> {\n /**\n * Hook called when a new component is created.\n *\n * @param component the created component.\n * @param args change detection functions for controlling change detection.\n */\n onCreate(component: T, args: ChangeDetectionFns): void;\n\n /**\n * Hook called when a new component is initialized.\n *\n * @param component the created component.\n */\n onInit(component: T): void;\n\n /**\n * Hook called just before the real ngOnDestroy (if implemented) is called.\n */\n onDestroy(component: T): void;\n\n /**\n * Hook called when a property is discovered.\n * This is the opportunity to grab the initial value before\n * the property is replaced by getters and setters.\n */\n onPropertyDeclare(component: T, property: K, value: T[K]): void;\n\n /**\n * Hook called to retrieve a property.\n */\n onPropertyGet(component: T, property: K): T[K] | undefined;\n\n /**\n * Hook called to set a property.\n */\n onPropertySet(component: T, property: K, value: T[K]): void;\n}\n\nexport interface IvyComponentType<T> extends Type<T> {\n ɵfac?: () => T;\n}\n\nexport function _spyOnMethod<T>(\n klass: Type<T>,\n methodName: string,\n callback: (instance: T) => void\n) {\n const proto = klass.prototype;\n proto[methodName] = _decorate(\n proto[methodName],\n (wrappedMethod: () => void) => {\n return function (this: T) {\n callback(this);\n return wrappedMethod?.bind(this)?.();\n };\n }\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _decorate<F extends (...args: any[]) => any>(\n fn: F,\n decorator: (fn: F) => F\n) {\n return decorator(fn);\n}\n","import { getEngine } from './core/engine';\nimport { getStrategyDevKit, Strategy } from './devkit';\nimport { decorateComponent, IvyComponentType } from './shared/decorator';\n\nexport function applyStrategy<T>(\n componentType: IvyComponentType<T>,\n strategy: Strategy<T>\n) {\n _bindComponentToEngine(componentType, {\n onCreate(component) {\n strategy(getStrategyDevKit(component));\n },\n });\n}\n\nexport function _bindComponentToEngine<T>(\n componentType: IvyComponentType<T>,\n { onCreate }: { onCreate: (component: T) => void }\n) {\n decorateComponent(componentType, {\n onCreate(component, changeDetectionFns) {\n getEngine(component).setChangeDetectionFns(changeDetectionFns);\n onCreate(component);\n },\n onInit(component) {\n getEngine(component).markInitialized();\n },\n onDestroy(component) {\n getEngine(component).markDestroyed();\n },\n onPropertyDeclare(component, property, value) {\n getEngine(component).setProperty(property, value);\n },\n onPropertyGet(component, property) {\n return getEngine(component).getProperty(property);\n },\n onPropertySet(component, property, value) {\n getEngine(component).setProperty(property, value);\n },\n });\n}\n","import { concat, MonoTypeOperatorFunction, takeUntil } from 'rxjs';\nimport { Strategy } from '../devkit';\n\n/**\n * Creates a change detection strategy which is local to the component.\n * It implements optional coalescing which can be customized using `coalescer` parameter.\n *\n * @example createLocalStrategy()\n * @example createLocalStrategy({coalescer: audit(() => Promise.resolve())})\n *\n * @returns a strategy that can be used with Microwave decorator.\n */\nexport const createLocalStrategy =\n ({\n coalescer,\n }: { coalescer?: MonoTypeOperatorFunction<void> } = {}): Strategy<unknown> =>\n ({ initialized$, changed$, destroyed$, detach, detectChanges }) => {\n /**\n * Detach change detection as we want to take control.\n */\n detach();\n\n /**\n * Trigger change detection initially and on property changes.\n * Coalesce through micro-tasks.\n */\n let source$ = concat(initialized$, changed$);\n\n if (coalescer != null) {\n source$ = source$.pipe(coalescer);\n }\n\n source$.pipe(takeUntil(destroyed$)).subscribe(() => detectChanges());\n };\n","import { createLocalStrategy } from './local';\nimport { Strategy } from '../devkit';\n\nexport const syncStrategy: Strategy<unknown> = createLocalStrategy();\n","import { audit } from 'rxjs';\nimport { Strategy } from '../devkit';\nimport { createLocalStrategy } from './local';\n\n/**\n * A strategy that coalesces changes using microtask scheduling.\n */\nexport const asapStrategy: Strategy<unknown> = createLocalStrategy({\n coalescer: audit(() => Promise.resolve()),\n});\n","import { audit, timer } from 'rxjs';\nimport { Strategy } from '../devkit';\nimport { createLocalStrategy } from './local';\n\n/**\n * A strategy that coalesces changes using macrotask scheduling.\n */\nexport const asyncStrategy: Strategy<unknown> = createLocalStrategy({\n coalescer: audit(() => timer(0)),\n});\n","import { audit, animationFrames } from 'rxjs';\nimport { Strategy } from '../devkit';\nimport { createLocalStrategy } from './local';\n\n/**\n * A strategy that coalesces changes using requestAnimationFrame scheduler.\n */\nexport const rafStrategy: Strategy<unknown> = createLocalStrategy({\n coalescer: audit(() => animationFrames()),\n});\n","import { Observable, takeUntil } from 'rxjs';\nimport { applyStrategy } from './apply-strategy';\nimport { getEngine } from './core/engine';\nimport { IvyComponentType } from './shared/decorator';\nimport { asapStrategy } from './strategies';\n\nexport function Microwave({ strategy = asapStrategy } = {}) {\n return function MicrowaveDecorator<T>(componentType: IvyComponentType<T>) {\n applyStrategy(componentType, strategy);\n };\n}\n\nexport function watch<COMPONENT, K extends keyof COMPONENT = keyof COMPONENT>(\n component: COMPONENT,\n property: K\n): Observable<COMPONENT[K] | undefined> {\n const { destroyed$, watchProperty } = getEngine(component);\n return watchProperty(property).pipe(takeUntil(destroyed$));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵɵdirectiveInject"],"mappings":"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"}
1
+ {"version":3,"file":"jscutlery-microwave.mjs","sources":["../../../../packages/microwave/src/lib/core/engine.ts","../../../../packages/microwave/src/lib/devkit.ts","../../../../packages/microwave/src/lib/shared/decorator.ts","../../../../packages/microwave/src/lib/apply-strategy.ts","../../../../packages/microwave/src/lib/strategies/local.ts","../../../../packages/microwave/src/lib/strategies/sync.ts","../../../../packages/microwave/src/lib/strategies/asap.ts","../../../../packages/microwave/src/lib/strategies/async.ts","../../../../packages/microwave/src/lib/strategies/raf.ts","../../../../packages/microwave/src/lib/microwave.ts","../../../../packages/microwave/src/jscutlery-microwave.ts"],"sourcesContent":["import {\n BehaviorSubject,\n map,\n mapTo,\n Observable,\n ReplaySubject,\n take,\n} from 'rxjs';\nimport { ChangeDetectionFns } from './change-detection-fns';\n\n/**\n * This should stay decoupled from Angular.\n *\n * @param component an instance of anything\n * @returns an set of methods and observables that respectively\n * control and represent the state of the object.\n */\nexport function getEngine<COMPONENT, K extends keyof COMPONENT = keyof COMPONENT>(\n component: COMPONENT\n): MicrowaveEngine<COMPONENT, K> {\n /* Memoize engine. */\n const microwavedComponent = component as Microwaved<COMPONENT>;\n const engine = microwavedComponent[_ENGINE_SYMBOL];\n if (engine != null) {\n return engine;\n }\n\n const destroyed$ = new ReplaySubject<void>(1);\n const initialized$ = new ReplaySubject<void>(1);\n const state$ = new BehaviorSubject<Partial<COMPONENT>>({});\n let changeDetectionFns: ChangeDetectionFns;\n\n return (microwavedComponent[_ENGINE_SYMBOL] = {\n destroyed$: destroyed$.pipe(take(1)),\n initialized$: initialized$.pipe(take(1)),\n changed$: state$.pipe(mapTo(undefined)),\n detach() {\n changeDetectionFns.detach();\n },\n detectChanges() {\n changeDetectionFns.detectChanges();\n },\n markDestroyed() {\n destroyed$.next();\n },\n markInitialized() {\n initialized$.next();\n },\n setChangeDetectionFns(_changeDetectionFns: ChangeDetectionFns) {\n changeDetectionFns = _changeDetectionFns;\n },\n getProperty(property) {\n return state$.value[property];\n },\n setProperty(property, value) {\n /* Don't set value if it didn't change.\n * This is more performant than `distinctUntilChanged` all over the place. */\n if (state$.value[property] === value) {\n return;\n }\n\n state$.next({ ...state$.value, [property]: value });\n },\n watchProperty(property) {\n return state$.pipe(map((state) => state[property]));\n },\n });\n}\n\nexport const _ENGINE_SYMBOL = Symbol('MicrowaveEngine');\n\nexport type Microwaved<T, K extends keyof T = keyof T> = T & {\n [_ENGINE_SYMBOL]?: MicrowaveEngine<T, K>;\n};\n\nexport interface MicrowaveEngine<T, K extends keyof T> {\n /**\n * Functions below form the strategy facade.\n */\n destroyed$: Observable<void>;\n /* Tells when component is initialized (ngOnInit). */\n initialized$: Observable<void>;\n /* Tells if some property changed. */\n changed$: Observable<void>;\n detach(): void;\n detectChanges(): void;\n\n /**\n * Functions below are used to bind with component.\n */\n setChangeDetectionFns(changeDetectionFns: ChangeDetectionFns): void;\n markDestroyed(): void;\n markInitialized(): void;\n getProperty<PROP extends K>(property: PROP): T[PROP] | undefined;\n setProperty<PROP extends K>(property: PROP, value: T[PROP]): void;\n watchProperty<PROP extends K>(\n property: PROP\n ): Observable<T[PROP] | undefined>;\n}\n\nexport type MicrowaveSubjectsMap<T, K extends keyof T> = Map<\n K,\n BehaviorSubject<T[K]>\n>;\n\nexport function _getPropertySubject<T, K extends keyof T, PROP extends K>(\n subjectsMap: MicrowaveSubjectsMap<T, K>,\n property: PROP\n): BehaviorSubject<T[PROP]> {\n let subject = subjectsMap.get(property);\n\n if (subject == null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n subject = new BehaviorSubject(undefined as any);\n subjectsMap.set(property, subject);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return subject as any;\n}\n","import { getEngine, MicrowaveEngine } from './core/engine';\n\nexport function getStrategyDevKit<COMPONENT, K extends keyof COMPONENT = keyof COMPONENT>(\n component: COMPONENT\n): StrategyDevKit<COMPONENT, K> {\n const { changed$, destroyed$, initialized$, detach, detectChanges } =\n getEngine(component);\n return { changed$, destroyed$, initialized$, detach, detectChanges };\n}\n\nexport type StrategyDevKit<T, K extends keyof T = keyof T> = Pick<\n MicrowaveEngine<T, K>,\n 'changed$' | 'destroyed$' | 'initialized$' | 'detach' | 'detectChanges'\n>;\n\nexport type Strategy<T> = (strategyDevKit: StrategyDevKit<T>) => void;\n","import { ChangeDetectorRef, Type, ɵɵdirectiveInject } from '@angular/core';\nimport { ChangeDetectionFns } from '../core/change-detection-fns';\n\n/**\n * Decorate Angular components with custom hooks.\n *\n * @param componentType the component class to decorate.\n * @param hooks\n */\nexport function decorateComponent<T, K extends keyof T = keyof T>(\n componentType: IvyComponentType<T>,\n hooks: DecoratorHooks<T>\n) {\n const {\n onCreate,\n onInit,\n onDestroy,\n onPropertyDeclare,\n onPropertyGet,\n onPropertySet,\n } = hooks;\n\n if (!componentType.ɵfac) {\n throw new Error(\n `${componentType.name} is either not a component or not compiled.`\n );\n }\n\n /**\n * Override component factory.\n */\n const factory = _decorate(\n componentType.ɵfac,\n /*\n * Override getters & setters.\n */\n (factoryFn: () => T) => () => {\n /* Grab change detector to control it. */\n const cdr = ɵɵdirectiveInject(ChangeDetectorRef);\n\n const component = factoryFn();\n\n /**\n * Notify about creation.\n */\n onCreate(component, {\n detach() {\n cdr.detach();\n },\n detectChanges() {\n cdr.detectChanges();\n },\n });\n\n /**\n * This will only list initialized properties.\n * That's the reason why all properties should be initialized\n * when using Microwave.\n */\n for (const property of Object.getOwnPropertyNames(\n component\n ) as Array<K>) {\n /**\n * Notify when property is discovered.\n */\n onPropertyDeclare(component, property, component[property]);\n\n Object.defineProperty(component, property, {\n set(value) {\n /**\n * Call setter.\n */\n onPropertySet(component, property, value);\n },\n get() {\n /**\n * Call getter.\n */\n return onPropertyGet(component, property);\n },\n });\n }\n\n return component;\n }\n );\n\n /**\n * Override factory with the newly decorated one.\n */\n Object.defineProperty(componentType, 'ɵfac', {\n get() {\n return factory;\n },\n });\n\n /**\n * Link hooks.\n */\n _spyOnMethod(componentType, 'ngOnInit', onInit);\n _spyOnMethod(componentType, 'ngOnDestroy', onDestroy);\n}\n\nexport interface DecoratorHooks<T, K extends keyof T = keyof T> {\n /**\n * Hook called when a new component is created.\n *\n * @param component the created component.\n * @param args change detection functions for controlling change detection.\n */\n onCreate(component: T, args: ChangeDetectionFns): void;\n\n /**\n * Hook called when a new component is initialized.\n *\n * @param component the created component.\n */\n onInit(component: T): void;\n\n /**\n * Hook called just before the real ngOnDestroy (if implemented) is called.\n */\n onDestroy(component: T): void;\n\n /**\n * Hook called when a property is discovered.\n * This is the opportunity to grab the initial value before\n * the property is replaced by getters and setters.\n */\n onPropertyDeclare(component: T, property: K, value: T[K]): void;\n\n /**\n * Hook called to retrieve a property.\n */\n onPropertyGet(component: T, property: K): T[K] | undefined;\n\n /**\n * Hook called to set a property.\n */\n onPropertySet(component: T, property: K, value: T[K]): void;\n}\n\nexport interface IvyComponentType<T> extends Type<T> {\n ɵfac?: () => T;\n}\n\nexport function _spyOnMethod<T>(\n klass: Type<T>,\n methodName: string,\n callback: (instance: T) => void\n) {\n const proto = klass.prototype;\n proto[methodName] = _decorate(\n proto[methodName],\n (wrappedMethod: () => void) => {\n return function (this: T) {\n callback(this);\n return wrappedMethod?.bind(this)?.();\n };\n }\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _decorate<F extends (...args: any[]) => any>(\n fn: F,\n decorator: (fn: F) => F\n) {\n return decorator(fn);\n}\n","import { getEngine } from './core/engine';\nimport { getStrategyDevKit, Strategy } from './devkit';\nimport { decorateComponent, IvyComponentType } from './shared/decorator';\n\nexport function applyStrategy<T>(\n componentType: IvyComponentType<T>,\n strategy: Strategy<T>\n) {\n _bindComponentToEngine(componentType, {\n onCreate(component) {\n strategy(getStrategyDevKit(component));\n },\n });\n}\n\nexport function _bindComponentToEngine<T>(\n componentType: IvyComponentType<T>,\n { onCreate }: { onCreate: (component: T) => void }\n) {\n decorateComponent(componentType, {\n onCreate(component, changeDetectionFns) {\n getEngine(component).setChangeDetectionFns(changeDetectionFns);\n onCreate(component);\n },\n onInit(component) {\n getEngine(component).markInitialized();\n },\n onDestroy(component) {\n getEngine(component).markDestroyed();\n },\n onPropertyDeclare(component, property, value) {\n getEngine(component).setProperty(property, value);\n },\n onPropertyGet(component, property) {\n return getEngine(component).getProperty(property);\n },\n onPropertySet(component, property, value) {\n getEngine(component).setProperty(property, value);\n },\n });\n}\n","import { concat, MonoTypeOperatorFunction, takeUntil } from 'rxjs';\nimport { Strategy } from '../devkit';\n\n/**\n * Creates a change detection strategy which is local to the component.\n * It implements optional coalescing which can be customized using `coalescer` parameter.\n *\n * @example createLocalStrategy()\n * @example createLocalStrategy({coalescer: audit(() => Promise.resolve())})\n *\n * @returns a strategy that can be used with Microwave decorator.\n */\nexport const createLocalStrategy =\n ({\n coalescer,\n }: { coalescer?: MonoTypeOperatorFunction<void> } = {}): Strategy<unknown> =>\n ({ initialized$, changed$, destroyed$, detach, detectChanges }) => {\n /**\n * Detach change detection as we want to take control.\n */\n detach();\n\n /**\n * Trigger change detection initially and on property changes.\n * Coalesce through micro-tasks.\n */\n let source$ = concat(initialized$, changed$);\n\n if (coalescer != null) {\n source$ = source$.pipe(coalescer);\n }\n\n source$.pipe(takeUntil(destroyed$)).subscribe(() => detectChanges());\n };\n","import { createLocalStrategy } from './local';\nimport { Strategy } from '../devkit';\n\nexport const syncStrategy: Strategy<unknown> = createLocalStrategy();\n","import { audit } from 'rxjs';\nimport { Strategy } from '../devkit';\nimport { createLocalStrategy } from './local';\n\n/**\n * A strategy that coalesces changes using microtask scheduling.\n */\nexport const asapStrategy: Strategy<unknown> = createLocalStrategy({\n coalescer: audit(() => Promise.resolve()),\n});\n","import { audit, timer } from 'rxjs';\nimport { Strategy } from '../devkit';\nimport { createLocalStrategy } from './local';\n\n/**\n * A strategy that coalesces changes using macrotask scheduling.\n */\nexport const asyncStrategy: Strategy<unknown> = createLocalStrategy({\n coalescer: audit(() => timer(0)),\n});\n","import { audit, animationFrames } from 'rxjs';\nimport { Strategy } from '../devkit';\nimport { createLocalStrategy } from './local';\n\n/**\n * A strategy that coalesces changes using requestAnimationFrame scheduler.\n */\nexport const rafStrategy: Strategy<unknown> = createLocalStrategy({\n coalescer: audit(() => animationFrames()),\n});\n","import { Observable, takeUntil } from 'rxjs';\nimport { applyStrategy } from './apply-strategy';\nimport { getEngine } from './core/engine';\nimport { IvyComponentType } from './shared/decorator';\nimport { asapStrategy } from './strategies';\n\nexport function Microwave({ strategy = asapStrategy } = {}) {\n return function MicrowaveDecorator<T>(componentType: IvyComponentType<T>) {\n applyStrategy(componentType, strategy);\n };\n}\n\nexport function watch<COMPONENT, K extends keyof COMPONENT = keyof COMPONENT>(\n component: COMPONENT,\n property: K\n): Observable<COMPONENT[K] | undefined> {\n const { destroyed$, watchProperty } = getEngine(component);\n return watchProperty(property).pipe(takeUntil(destroyed$));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵɵdirectiveInject"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jscutlery/microwave",
3
- "version": "0.4.17",
3
+ "version": "0.4.18",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.2",
6
6
  "@angular/core": "^14.0.2",
@@ -14,8 +14,6 @@
14
14
  },
15
15
  ".": {
16
16
  "types": "./index.d.ts",
17
- "esm2022": "./esm2022/jscutlery-microwave.mjs",
18
- "esm": "./esm2022/jscutlery-microwave.mjs",
19
17
  "default": "./fesm2022/jscutlery-microwave.mjs"
20
18
  }
21
19
  },
package/esm2022/index.mjs DELETED
@@ -1,3 +0,0 @@
1
- export { Microwave, watch } from './lib/microwave';
2
- export { asapStrategy, asyncStrategy, createLocalStrategy, rafStrategy, syncStrategy, } from './lib/strategies';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taWNyb3dhdmUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFN0cmF0ZWd5LCBTdHJhdGVneURldktpdCB9IGZyb20gJy4vbGliL2RldmtpdCc7XG5leHBvcnQgeyBNaWNyb3dhdmUsIHdhdGNoIH0gZnJvbSAnLi9saWIvbWljcm93YXZlJztcbmV4cG9ydCB7XG4gIGFzYXBTdHJhdGVneSxcbiAgYXN5bmNTdHJhdGVneSxcbiAgY3JlYXRlTG9jYWxTdHJhdGVneSxcbiAgcmFmU3RyYXRlZ3ksXG4gIHN5bmNTdHJhdGVneSxcbn0gZnJvbSAnLi9saWIvc3RyYXRlZ2llcyc7XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNjdXRsZXJ5LW1pY3Jvd2F2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pY3Jvd2F2ZS9zcmMvanNjdXRsZXJ5LW1pY3Jvd2F2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,34 +0,0 @@
1
- import { getEngine } from './core/engine';
2
- import { getStrategyDevKit } from './devkit';
3
- import { decorateComponent } from './shared/decorator';
4
- export function applyStrategy(componentType, strategy) {
5
- _bindComponentToEngine(componentType, {
6
- onCreate(component) {
7
- strategy(getStrategyDevKit(component));
8
- },
9
- });
10
- }
11
- export function _bindComponentToEngine(componentType, { onCreate }) {
12
- decorateComponent(componentType, {
13
- onCreate(component, changeDetectionFns) {
14
- getEngine(component).setChangeDetectionFns(changeDetectionFns);
15
- onCreate(component);
16
- },
17
- onInit(component) {
18
- getEngine(component).markInitialized();
19
- },
20
- onDestroy(component) {
21
- getEngine(component).markDestroyed();
22
- },
23
- onPropertyDeclare(component, property, value) {
24
- getEngine(component).setProperty(property, value);
25
- },
26
- onPropertyGet(component, property) {
27
- return getEngine(component).getProperty(property);
28
- },
29
- onPropertySet(component, property, value) {
30
- getEngine(component).setProperty(property, value);
31
- },
32
- });
33
- }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taWNyb3dhdmUvc3JjL2xpYi9hcHBseS1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLFVBQVUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sb0JBQW9CLENBQUM7QUFFekUsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsYUFBa0MsRUFDbEMsUUFBcUI7SUFFckIsc0JBQXNCLENBQUMsYUFBYSxFQUFFO1FBQ3BDLFFBQVEsQ0FBQyxTQUFTO1lBQ2hCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxhQUFrQyxFQUNsQyxFQUFFLFFBQVEsRUFBd0M7SUFFbEQsaUJBQWlCLENBQUMsYUFBYSxFQUFFO1FBQy9CLFFBQVEsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCO1lBQ3BDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQy9ELFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsTUFBTSxDQUFDLFNBQVM7WUFDZCxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekMsQ0FBQztRQUNELFNBQVMsQ0FBQyxTQUFTO1lBQ2pCLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLO1lBQzFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxhQUFhLENBQUMsU0FBUyxFQUFFLFFBQVE7WUFDL0IsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxhQUFhLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLO1lBQ3RDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BELENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi9jb3JlL2VuZ2luZSc7XG5pbXBvcnQgeyBnZXRTdHJhdGVneURldktpdCwgU3RyYXRlZ3kgfSBmcm9tICcuL2RldmtpdCc7XG5pbXBvcnQgeyBkZWNvcmF0ZUNvbXBvbmVudCwgSXZ5Q29tcG9uZW50VHlwZSB9IGZyb20gJy4vc2hhcmVkL2RlY29yYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVN0cmF0ZWd5PFQ+KFxuICBjb21wb25lbnRUeXBlOiBJdnlDb21wb25lbnRUeXBlPFQ+LFxuICBzdHJhdGVneTogU3RyYXRlZ3k8VD5cbikge1xuICBfYmluZENvbXBvbmVudFRvRW5naW5lKGNvbXBvbmVudFR5cGUsIHtcbiAgICBvbkNyZWF0ZShjb21wb25lbnQpIHtcbiAgICAgIHN0cmF0ZWd5KGdldFN0cmF0ZWd5RGV2S2l0KGNvbXBvbmVudCkpO1xuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX2JpbmRDb21wb25lbnRUb0VuZ2luZTxUPihcbiAgY29tcG9uZW50VHlwZTogSXZ5Q29tcG9uZW50VHlwZTxUPixcbiAgeyBvbkNyZWF0ZSB9OiB7IG9uQ3JlYXRlOiAoY29tcG9uZW50OiBUKSA9PiB2b2lkIH1cbikge1xuICBkZWNvcmF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlLCB7XG4gICAgb25DcmVhdGUoY29tcG9uZW50LCBjaGFuZ2VEZXRlY3Rpb25GbnMpIHtcbiAgICAgIGdldEVuZ2luZShjb21wb25lbnQpLnNldENoYW5nZURldGVjdGlvbkZucyhjaGFuZ2VEZXRlY3Rpb25GbnMpO1xuICAgICAgb25DcmVhdGUoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIG9uSW5pdChjb21wb25lbnQpIHtcbiAgICAgIGdldEVuZ2luZShjb21wb25lbnQpLm1hcmtJbml0aWFsaXplZCgpO1xuICAgIH0sXG4gICAgb25EZXN0cm95KGNvbXBvbmVudCkge1xuICAgICAgZ2V0RW5naW5lKGNvbXBvbmVudCkubWFya0Rlc3Ryb3llZCgpO1xuICAgIH0sXG4gICAgb25Qcm9wZXJ0eURlY2xhcmUoY29tcG9uZW50LCBwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICAgIGdldEVuZ2luZShjb21wb25lbnQpLnNldFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSk7XG4gICAgfSxcbiAgICBvblByb3BlcnR5R2V0KGNvbXBvbmVudCwgcHJvcGVydHkpIHtcbiAgICAgIHJldHVybiBnZXRFbmdpbmUoY29tcG9uZW50KS5nZXRQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgfSxcbiAgICBvblByb3BlcnR5U2V0KGNvbXBvbmVudCwgcHJvcGVydHksIHZhbHVlKSB7XG4gICAgICBnZXRFbmdpbmUoY29tcG9uZW50KS5zZXRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpO1xuICAgIH0sXG4gIH0pO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWRldGVjdGlvbi1mbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taWNyb3dhdmUvc3JjL2xpYi9jb3JlL2NoYW5nZS1kZXRlY3Rpb24tZm5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGFsdGVybmF0aXZlIHRvIENoYW5nZURldGVjdG9yUmVmIHRvIHN0YXkgbG9vc2VseSBjb3VwbGVkLlxuICogUGx1cywgdGhpcyBmdW5jdGlvbnMgY2FuIGJlIGRlc3RydWN0dXJlZCBhcyB0aGV5IGRvbid0IHVzZSBgdGhpc2AuXG4gKiBMZXQncyB0cnkgdG8gcmVkdWNlIHRoZSBzdXJmYWNlIGFuZCBub3QgZXhwb3NlIGFsbCBmdW5jdGlvbnNcbiAqIGlmIHdlIGRvbid0IG5lZWQgdGhlbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VEZXRlY3Rpb25GbnMge1xuICBkZXRhY2goKTogdm9pZDtcbiAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkO1xufVxuIl19
@@ -1,66 +0,0 @@
1
- import { BehaviorSubject, map, mapTo, ReplaySubject, take, } from 'rxjs';
2
- /**
3
- * This should stay decoupled from Angular.
4
- *
5
- * @param component an instance of anything
6
- * @returns an set of methods and observables that respectively
7
- * control and represent the state of the object.
8
- */
9
- export function getEngine(component) {
10
- /* Memoize engine. */
11
- const microwavedComponent = component;
12
- const engine = microwavedComponent[_ENGINE_SYMBOL];
13
- if (engine != null) {
14
- return engine;
15
- }
16
- const destroyed$ = new ReplaySubject(1);
17
- const initialized$ = new ReplaySubject(1);
18
- const state$ = new BehaviorSubject({});
19
- let changeDetectionFns;
20
- return (microwavedComponent[_ENGINE_SYMBOL] = {
21
- destroyed$: destroyed$.pipe(take(1)),
22
- initialized$: initialized$.pipe(take(1)),
23
- changed$: state$.pipe(mapTo(undefined)),
24
- detach() {
25
- changeDetectionFns.detach();
26
- },
27
- detectChanges() {
28
- changeDetectionFns.detectChanges();
29
- },
30
- markDestroyed() {
31
- destroyed$.next();
32
- },
33
- markInitialized() {
34
- initialized$.next();
35
- },
36
- setChangeDetectionFns(_changeDetectionFns) {
37
- changeDetectionFns = _changeDetectionFns;
38
- },
39
- getProperty(property) {
40
- return state$.value[property];
41
- },
42
- setProperty(property, value) {
43
- /* Don't set value if it didn't change.
44
- * This is more performant than `distinctUntilChanged` all over the place. */
45
- if (state$.value[property] === value) {
46
- return;
47
- }
48
- state$.next({ ...state$.value, [property]: value });
49
- },
50
- watchProperty(property) {
51
- return state$.pipe(map((state) => state[property]));
52
- },
53
- });
54
- }
55
- export const _ENGINE_SYMBOL = Symbol('MicrowaveEngine');
56
- export function _getPropertySubject(subjectsMap, property) {
57
- let subject = subjectsMap.get(property);
58
- if (subject == null) {
59
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
- subject = new BehaviorSubject(undefined);
61
- subjectsMap.set(property, subject);
62
- }
63
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
- return subject;
65
- }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWljcm93YXZlL3NyYy9saWIvY29yZS9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixHQUFHLEVBQ0gsS0FBSyxFQUVMLGFBQWEsRUFDYixJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFHZDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUN2QixTQUFvQjtJQUVwQixxQkFBcUI7SUFDckIsTUFBTSxtQkFBbUIsR0FBRyxTQUFrQyxDQUFDO0lBQy9ELE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5QyxNQUFNLFlBQVksR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBcUIsRUFBRSxDQUFDLENBQUM7SUFDM0QsSUFBSSxrQkFBc0MsQ0FBQztJQUUzQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLEdBQUc7UUFDNUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsTUFBTTtZQUNKLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFDRCxhQUFhO1lBQ1gsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsQ0FBQztRQUNELGFBQWE7WUFDWCxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQztRQUNELGVBQWU7WUFDYixZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNELHFCQUFxQixDQUFDLG1CQUF1QztZQUMzRCxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsV0FBVyxDQUFDLFFBQVE7WUFDbEIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUs7WUFDekI7eUZBQzZFO1lBQzdFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDckMsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsYUFBYSxDQUFDLFFBQVE7WUFDcEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQW9DeEQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxXQUF1QyxFQUN2QyxRQUFjO0lBRWQsSUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QyxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNwQiw4REFBOEQ7UUFDOUQsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLFNBQWdCLENBQUMsQ0FBQztRQUNoRCxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsOERBQThEO0lBQzlELE9BQU8sT0FBYyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIG1hcCxcbiAgbWFwVG8sXG4gIE9ic2VydmFibGUsXG4gIFJlcGxheVN1YmplY3QsXG4gIHRha2UsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uRm5zIH0gZnJvbSAnLi9jaGFuZ2UtZGV0ZWN0aW9uLWZucyc7XG5cbi8qKlxuICogVGhpcyBzaG91bGQgc3RheSBkZWNvdXBsZWQgZnJvbSBBbmd1bGFyLlxuICpcbiAqIEBwYXJhbSBjb21wb25lbnQgYW4gaW5zdGFuY2Ugb2YgYW55dGhpbmdcbiAqIEByZXR1cm5zIGFuIHNldCBvZiBtZXRob2RzIGFuZCBvYnNlcnZhYmxlcyB0aGF0IHJlc3BlY3RpdmVseVxuICogY29udHJvbCBhbmQgcmVwcmVzZW50IHRoZSBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5naW5lPENPTVBPTkVOVCwgSyBleHRlbmRzIGtleW9mIENPTVBPTkVOVCA9IGtleW9mIENPTVBPTkVOVD4oXG4gIGNvbXBvbmVudDogQ09NUE9ORU5UXG4pOiBNaWNyb3dhdmVFbmdpbmU8Q09NUE9ORU5ULCBLPiB7XG4gIC8qIE1lbW9pemUgZW5naW5lLiAqL1xuICBjb25zdCBtaWNyb3dhdmVkQ29tcG9uZW50ID0gY29tcG9uZW50IGFzIE1pY3Jvd2F2ZWQ8Q09NUE9ORU5UPjtcbiAgY29uc3QgZW5naW5lID0gbWljcm93YXZlZENvbXBvbmVudFtfRU5HSU5FX1NZTUJPTF07XG4gIGlmIChlbmdpbmUgIT0gbnVsbCkge1xuICAgIHJldHVybiBlbmdpbmU7XG4gIH1cblxuICBjb25zdCBkZXN0cm95ZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gIGNvbnN0IGluaXRpYWxpemVkJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuICBjb25zdCBzdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhcnRpYWw8Q09NUE9ORU5UPj4oe30pO1xuICBsZXQgY2hhbmdlRGV0ZWN0aW9uRm5zOiBDaGFuZ2VEZXRlY3Rpb25GbnM7XG5cbiAgcmV0dXJuIChtaWNyb3dhdmVkQ29tcG9uZW50W19FTkdJTkVfU1lNQk9MXSA9IHtcbiAgICBkZXN0cm95ZWQkOiBkZXN0cm95ZWQkLnBpcGUodGFrZSgxKSksXG4gICAgaW5pdGlhbGl6ZWQkOiBpbml0aWFsaXplZCQucGlwZSh0YWtlKDEpKSxcbiAgICBjaGFuZ2VkJDogc3RhdGUkLnBpcGUobWFwVG8odW5kZWZpbmVkKSksXG4gICAgZGV0YWNoKCkge1xuICAgICAgY2hhbmdlRGV0ZWN0aW9uRm5zLmRldGFjaCgpO1xuICAgIH0sXG4gICAgZGV0ZWN0Q2hhbmdlcygpIHtcbiAgICAgIGNoYW5nZURldGVjdGlvbkZucy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSxcbiAgICBtYXJrRGVzdHJveWVkKCkge1xuICAgICAgZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgfSxcbiAgICBtYXJrSW5pdGlhbGl6ZWQoKSB7XG4gICAgICBpbml0aWFsaXplZCQubmV4dCgpO1xuICAgIH0sXG4gICAgc2V0Q2hhbmdlRGV0ZWN0aW9uRm5zKF9jaGFuZ2VEZXRlY3Rpb25GbnM6IENoYW5nZURldGVjdGlvbkZucykge1xuICAgICAgY2hhbmdlRGV0ZWN0aW9uRm5zID0gX2NoYW5nZURldGVjdGlvbkZucztcbiAgICB9LFxuICAgIGdldFByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gc3RhdGUkLnZhbHVlW3Byb3BlcnR5XTtcbiAgICB9LFxuICAgIHNldFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkge1xuICAgICAgLyogRG9uJ3Qgc2V0IHZhbHVlIGlmIGl0IGRpZG4ndCBjaGFuZ2UuXG4gICAgICAgKiBUaGlzIGlzIG1vcmUgcGVyZm9ybWFudCB0aGFuIGBkaXN0aW5jdFVudGlsQ2hhbmdlZGAgYWxsIG92ZXIgdGhlIHBsYWNlLiAqL1xuICAgICAgaWYgKHN0YXRlJC52YWx1ZVtwcm9wZXJ0eV0gPT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3RhdGUkLm5leHQoeyAuLi5zdGF0ZSQudmFsdWUsIFtwcm9wZXJ0eV06IHZhbHVlIH0pO1xuICAgIH0sXG4gICAgd2F0Y2hQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgcmV0dXJuIHN0YXRlJC5waXBlKG1hcCgoc3RhdGUpID0+IHN0YXRlW3Byb3BlcnR5XSkpO1xuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgX0VOR0lORV9TWU1CT0wgPSBTeW1ib2woJ01pY3Jvd2F2ZUVuZ2luZScpO1xuXG5leHBvcnQgdHlwZSBNaWNyb3dhdmVkPFQsIEsgZXh0ZW5kcyBrZXlvZiBUID0ga2V5b2YgVD4gPSBUICYge1xuICBbX0VOR0lORV9TWU1CT0xdPzogTWljcm93YXZlRW5naW5lPFQsIEs+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBNaWNyb3dhdmVFbmdpbmU8VCwgSyBleHRlbmRzIGtleW9mIFQ+IHtcbiAgLyoqXG4gICAqIEZ1bmN0aW9ucyBiZWxvdyBmb3JtIHRoZSBzdHJhdGVneSBmYWNhZGUuXG4gICAqL1xuICBkZXN0cm95ZWQkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAvKiBUZWxscyB3aGVuIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZCAobmdPbkluaXQpLiAqL1xuICBpbml0aWFsaXplZCQ6IE9ic2VydmFibGU8dm9pZD47XG4gIC8qIFRlbGxzIGlmIHNvbWUgcHJvcGVydHkgY2hhbmdlZC4gKi9cbiAgY2hhbmdlZCQ6IE9ic2VydmFibGU8dm9pZD47XG4gIGRldGFjaCgpOiB2b2lkO1xuICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9ucyBiZWxvdyBhcmUgdXNlZCB0byBiaW5kIHdpdGggY29tcG9uZW50LlxuICAgKi9cbiAgc2V0Q2hhbmdlRGV0ZWN0aW9uRm5zKGNoYW5nZURldGVjdGlvbkZuczogQ2hhbmdlRGV0ZWN0aW9uRm5zKTogdm9pZDtcbiAgbWFya0Rlc3Ryb3llZCgpOiB2b2lkO1xuICBtYXJrSW5pdGlhbGl6ZWQoKTogdm9pZDtcbiAgZ2V0UHJvcGVydHk8UFJPUCBleHRlbmRzIEs+KHByb3BlcnR5OiBQUk9QKTogVFtQUk9QXSB8IHVuZGVmaW5lZDtcbiAgc2V0UHJvcGVydHk8UFJPUCBleHRlbmRzIEs+KHByb3BlcnR5OiBQUk9QLCB2YWx1ZTogVFtQUk9QXSk6IHZvaWQ7XG4gIHdhdGNoUHJvcGVydHk8UFJPUCBleHRlbmRzIEs+KFxuICAgIHByb3BlcnR5OiBQUk9QXG4gICk6IE9ic2VydmFibGU8VFtQUk9QXSB8IHVuZGVmaW5lZD47XG59XG5cbmV4cG9ydCB0eXBlIE1pY3Jvd2F2ZVN1YmplY3RzTWFwPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IE1hcDxcbiAgSyxcbiAgQmVoYXZpb3JTdWJqZWN0PFRbS10+XG4+O1xuXG5leHBvcnQgZnVuY3Rpb24gX2dldFByb3BlcnR5U3ViamVjdDxULCBLIGV4dGVuZHMga2V5b2YgVCwgUFJPUCBleHRlbmRzIEs+KFxuICBzdWJqZWN0c01hcDogTWljcm93YXZlU3ViamVjdHNNYXA8VCwgSz4sXG4gIHByb3BlcnR5OiBQUk9QXG4pOiBCZWhhdmlvclN1YmplY3Q8VFtQUk9QXT4ge1xuICBsZXQgc3ViamVjdCA9IHN1YmplY3RzTWFwLmdldChwcm9wZXJ0eSk7XG5cbiAgaWYgKHN1YmplY3QgPT0gbnVsbCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgc3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkIGFzIGFueSk7XG4gICAgc3ViamVjdHNNYXAuc2V0KHByb3BlcnR5LCBzdWJqZWN0KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHJldHVybiBzdWJqZWN0IGFzIGFueTtcbn1cbiJdfQ==
@@ -1,6 +0,0 @@
1
- import { getEngine } from './core/engine';
2
- export function getStrategyDevKit(component) {
3
- const { changed$, destroyed$, initialized$, detach, detectChanges } = getEngine(component);
4
- return { changed$, destroyed$, initialized$, detach, detectChanges };
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2a2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWljcm93YXZlL3NyYy9saWIvZGV2a2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBRTNELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsU0FBb0I7SUFFcEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FDakUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUM7QUFDdkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEVuZ2luZSwgTWljcm93YXZlRW5naW5lIH0gZnJvbSAnLi9jb3JlL2VuZ2luZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHJhdGVneURldktpdDxDT01QT05FTlQsIEsgZXh0ZW5kcyBrZXlvZiBDT01QT05FTlQgPSBrZXlvZiBDT01QT05FTlQ+KFxuICBjb21wb25lbnQ6IENPTVBPTkVOVFxuKTogU3RyYXRlZ3lEZXZLaXQ8Q09NUE9ORU5ULCBLPiB7XG4gIGNvbnN0IHsgY2hhbmdlZCQsIGRlc3Ryb3llZCQsIGluaXRpYWxpemVkJCwgZGV0YWNoLCBkZXRlY3RDaGFuZ2VzIH0gPVxuICAgIGdldEVuZ2luZShjb21wb25lbnQpO1xuICByZXR1cm4geyBjaGFuZ2VkJCwgZGVzdHJveWVkJCwgaW5pdGlhbGl6ZWQkLCBkZXRhY2gsIGRldGVjdENoYW5nZXMgfTtcbn1cblxuZXhwb3J0IHR5cGUgU3RyYXRlZ3lEZXZLaXQ8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IFBpY2s8XG4gIE1pY3Jvd2F2ZUVuZ2luZTxULCBLPixcbiAgJ2NoYW5nZWQkJyB8ICdkZXN0cm95ZWQkJyB8ICdpbml0aWFsaXplZCQnIHwgJ2RldGFjaCcgfCAnZGV0ZWN0Q2hhbmdlcydcbj47XG5cbmV4cG9ydCB0eXBlIFN0cmF0ZWd5PFQ+ID0gKHN0cmF0ZWd5RGV2S2l0OiBTdHJhdGVneURldktpdDxUPikgPT4gdm9pZDtcbiJdfQ==
@@ -1,14 +0,0 @@
1
- import { takeUntil } from 'rxjs';
2
- import { applyStrategy } from './apply-strategy';
3
- import { getEngine } from './core/engine';
4
- import { asapStrategy } from './strategies';
5
- export function Microwave({ strategy = asapStrategy } = {}) {
6
- return function MicrowaveDecorator(componentType) {
7
- applyStrategy(componentType, strategy);
8
- };
9
- }
10
- export function watch(component, property) {
11
- const { destroyed$, watchProperty } = getEngine(component);
12
- return watchProperty(property).pipe(takeUntil(destroyed$));
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm93YXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWljcm93YXZlL3NyYy9saWIvbWljcm93YXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1QyxNQUFNLFVBQVUsU0FBUyxDQUFDLEVBQUUsUUFBUSxHQUFHLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDeEQsT0FBTyxTQUFTLGtCQUFrQixDQUFJLGFBQWtDO1FBQ3RFLGFBQWEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQ25CLFNBQW9CLEVBQ3BCLFFBQVc7SUFFWCxNQUFNLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYXBwbHlTdHJhdGVneSB9IGZyb20gJy4vYXBwbHktc3RyYXRlZ3knO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi9jb3JlL2VuZ2luZSc7XG5pbXBvcnQgeyBJdnlDb21wb25lbnRUeXBlIH0gZnJvbSAnLi9zaGFyZWQvZGVjb3JhdG9yJztcbmltcG9ydCB7IGFzYXBTdHJhdGVneSB9IGZyb20gJy4vc3RyYXRlZ2llcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBNaWNyb3dhdmUoeyBzdHJhdGVneSA9IGFzYXBTdHJhdGVneSB9ID0ge30pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIE1pY3Jvd2F2ZURlY29yYXRvcjxUPihjb21wb25lbnRUeXBlOiBJdnlDb21wb25lbnRUeXBlPFQ+KSB7XG4gICAgYXBwbHlTdHJhdGVneShjb21wb25lbnRUeXBlLCBzdHJhdGVneSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaDxDT01QT05FTlQsIEsgZXh0ZW5kcyBrZXlvZiBDT01QT05FTlQgPSBrZXlvZiBDT01QT05FTlQ+KFxuICBjb21wb25lbnQ6IENPTVBPTkVOVCxcbiAgcHJvcGVydHk6IEtcbik6IE9ic2VydmFibGU8Q09NUE9ORU5UW0tdIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHsgZGVzdHJveWVkJCwgd2F0Y2hQcm9wZXJ0eSB9ID0gZ2V0RW5naW5lKGNvbXBvbmVudCk7XG4gIHJldHVybiB3YXRjaFByb3BlcnR5KHByb3BlcnR5KS5waXBlKHRha2VVbnRpbChkZXN0cm95ZWQkKSk7XG59XG4iXX0=
@@ -1,89 +0,0 @@
1
- import { ChangeDetectorRef, ɵɵdirectiveInject } from '@angular/core';
2
- /**
3
- * Decorate Angular components with custom hooks.
4
- *
5
- * @param componentType the component class to decorate.
6
- * @param hooks
7
- */
8
- export function decorateComponent(componentType, hooks) {
9
- const { onCreate, onInit, onDestroy, onPropertyDeclare, onPropertyGet, onPropertySet, } = hooks;
10
- if (!componentType.ɵfac) {
11
- throw new Error(`${componentType.name} is either not a component or not compiled.`);
12
- }
13
- /**
14
- * Override component factory.
15
- */
16
- const factory = _decorate(componentType.ɵfac,
17
- /*
18
- * Override getters & setters.
19
- */
20
- (factoryFn) => () => {
21
- /* Grab change detector to control it. */
22
- const cdr = ɵɵdirectiveInject(ChangeDetectorRef);
23
- const component = factoryFn();
24
- /**
25
- * Notify about creation.
26
- */
27
- onCreate(component, {
28
- detach() {
29
- cdr.detach();
30
- },
31
- detectChanges() {
32
- cdr.detectChanges();
33
- },
34
- });
35
- /**
36
- * This will only list initialized properties.
37
- * That's the reason why all properties should be initialized
38
- * when using Microwave.
39
- */
40
- for (const property of Object.getOwnPropertyNames(component)) {
41
- /**
42
- * Notify when property is discovered.
43
- */
44
- onPropertyDeclare(component, property, component[property]);
45
- Object.defineProperty(component, property, {
46
- set(value) {
47
- /**
48
- * Call setter.
49
- */
50
- onPropertySet(component, property, value);
51
- },
52
- get() {
53
- /**
54
- * Call getter.
55
- */
56
- return onPropertyGet(component, property);
57
- },
58
- });
59
- }
60
- return component;
61
- });
62
- /**
63
- * Override factory with the newly decorated one.
64
- */
65
- Object.defineProperty(componentType, 'ɵfac', {
66
- get() {
67
- return factory;
68
- },
69
- });
70
- /**
71
- * Link hooks.
72
- */
73
- _spyOnMethod(componentType, 'ngOnInit', onInit);
74
- _spyOnMethod(componentType, 'ngOnDestroy', onDestroy);
75
- }
76
- export function _spyOnMethod(klass, methodName, callback) {
77
- const proto = klass.prototype;
78
- proto[methodName] = _decorate(proto[methodName], (wrappedMethod) => {
79
- return function () {
80
- callback(this);
81
- return wrappedMethod?.bind(this)?.();
82
- };
83
- });
84
- }
85
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
- export function _decorate(fn, decorator) {
87
- return decorator(fn);
88
- }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWljcm93YXZlL3NyYy9saWIvc2hhcmVkL2RlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQVEsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0U7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLGFBQWtDLEVBQ2xDLEtBQXdCO0lBRXhCLE1BQU0sRUFDSixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGFBQWEsR0FDZCxHQUFHLEtBQUssQ0FBQztJQUVWLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLGFBQWEsQ0FBQyxJQUFJLDZDQUE2QyxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUN2QixhQUFhLENBQUMsSUFBSTtJQUNsQjs7T0FFRztJQUNILENBQUMsU0FBa0IsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFO1FBQzNCLHlDQUF5QztRQUN6QyxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpELE1BQU0sU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBRTlCOztXQUVHO1FBQ0gsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUNsQixNQUFNO2dCQUNKLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLENBQUM7WUFDRCxhQUFhO2dCQUNYLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN0QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUg7Ozs7V0FJRztRQUNILEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUMvQyxTQUFTLENBQ0UsRUFBRSxDQUFDO1lBQ2Q7O2VBRUc7WUFDSCxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBRTVELE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRTtnQkFDekMsR0FBRyxDQUFDLEtBQUs7b0JBQ1A7O3VCQUVHO29CQUNILGFBQWEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2dCQUNELEdBQUc7b0JBQ0Q7O3VCQUVHO29CQUNILE9BQU8sYUFBYSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDNUMsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDLENBQ0YsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFO1FBQzNDLEdBQUc7WUFDRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBRUg7O09BRUc7SUFDSCxZQUFZLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxZQUFZLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBNkNELE1BQU0sVUFBVSxZQUFZLENBQzFCLEtBQWMsRUFDZCxVQUFrQixFQUNsQixRQUErQjtJQUUvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQzlCLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxTQUFTLENBQzNCLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFDakIsQ0FBQyxhQUF5QixFQUFFLEVBQUU7UUFDNUIsT0FBTztZQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLE9BQU8sYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsOERBQThEO0FBQzlELE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEVBQUssRUFDTCxTQUF1QjtJQUV2QixPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIFR5cGUsIMm1ybVkaXJlY3RpdmVJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvbkZucyB9IGZyb20gJy4uL2NvcmUvY2hhbmdlLWRldGVjdGlvbi1mbnMnO1xuXG4vKipcbiAqIERlY29yYXRlIEFuZ3VsYXIgY29tcG9uZW50cyB3aXRoIGN1c3RvbSBob29rcy5cbiAqXG4gKiBAcGFyYW0gY29tcG9uZW50VHlwZSB0aGUgY29tcG9uZW50IGNsYXNzIHRvIGRlY29yYXRlLlxuICogQHBhcmFtIGhvb2tzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvcmF0ZUNvbXBvbmVudDxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+KFxuICBjb21wb25lbnRUeXBlOiBJdnlDb21wb25lbnRUeXBlPFQ+LFxuICBob29rczogRGVjb3JhdG9ySG9va3M8VD5cbikge1xuICBjb25zdCB7XG4gICAgb25DcmVhdGUsXG4gICAgb25Jbml0LFxuICAgIG9uRGVzdHJveSxcbiAgICBvblByb3BlcnR5RGVjbGFyZSxcbiAgICBvblByb3BlcnR5R2V0LFxuICAgIG9uUHJvcGVydHlTZXQsXG4gIH0gPSBob29rcztcblxuICBpZiAoIWNvbXBvbmVudFR5cGUuybVmYWMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtjb21wb25lbnRUeXBlLm5hbWV9IGlzIGVpdGhlciBub3QgYSBjb21wb25lbnQgb3Igbm90IGNvbXBpbGVkLmBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIGNvbXBvbmVudCBmYWN0b3J5LlxuICAgKi9cbiAgY29uc3QgZmFjdG9yeSA9IF9kZWNvcmF0ZShcbiAgICBjb21wb25lbnRUeXBlLsm1ZmFjLFxuICAgIC8qXG4gICAgICogT3ZlcnJpZGUgZ2V0dGVycyAmIHNldHRlcnMuXG4gICAgICovXG4gICAgKGZhY3RvcnlGbjogKCkgPT4gVCkgPT4gKCkgPT4ge1xuICAgICAgLyogR3JhYiBjaGFuZ2UgZGV0ZWN0b3IgdG8gY29udHJvbCBpdC4gKi9cbiAgICAgIGNvbnN0IGNkciA9IMm1ybVkaXJlY3RpdmVJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgICBjb25zdCBjb21wb25lbnQgPSBmYWN0b3J5Rm4oKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBOb3RpZnkgYWJvdXQgY3JlYXRpb24uXG4gICAgICAgKi9cbiAgICAgIG9uQ3JlYXRlKGNvbXBvbmVudCwge1xuICAgICAgICBkZXRhY2goKSB7XG4gICAgICAgICAgY2RyLmRldGFjaCgpO1xuICAgICAgICB9LFxuICAgICAgICBkZXRlY3RDaGFuZ2VzKCkge1xuICAgICAgICAgIGNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIHdpbGwgb25seSBsaXN0IGluaXRpYWxpemVkIHByb3BlcnRpZXMuXG4gICAgICAgKiBUaGF0J3MgdGhlIHJlYXNvbiB3aHkgYWxsIHByb3BlcnRpZXMgc2hvdWxkIGJlIGluaXRpYWxpemVkXG4gICAgICAgKiB3aGVuIHVzaW5nIE1pY3Jvd2F2ZS5cbiAgICAgICAqL1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhcbiAgICAgICAgY29tcG9uZW50XG4gICAgICApIGFzIEFycmF5PEs+KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb3RpZnkgd2hlbiBwcm9wZXJ0eSBpcyBkaXNjb3ZlcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgb25Qcm9wZXJ0eURlY2xhcmUoY29tcG9uZW50LCBwcm9wZXJ0eSwgY29tcG9uZW50W3Byb3BlcnR5XSk7XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbXBvbmVudCwgcHJvcGVydHksIHtcbiAgICAgICAgICBzZXQodmFsdWUpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FsbCBzZXR0ZXIuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9uUHJvcGVydHlTZXQoY29tcG9uZW50LCBwcm9wZXJ0eSwgdmFsdWUpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYWxsIGdldHRlci5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmV0dXJuIG9uUHJvcGVydHlHZXQoY29tcG9uZW50LCBwcm9wZXJ0eSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxuICApO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBmYWN0b3J5IHdpdGggdGhlIG5ld2x5IGRlY29yYXRlZCBvbmUuXG4gICAqL1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29tcG9uZW50VHlwZSwgJ8m1ZmFjJywge1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBmYWN0b3J5O1xuICAgIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBMaW5rIGhvb2tzLlxuICAgKi9cbiAgX3NweU9uTWV0aG9kKGNvbXBvbmVudFR5cGUsICduZ09uSW5pdCcsIG9uSW5pdCk7XG4gIF9zcHlPbk1ldGhvZChjb21wb25lbnRUeXBlLCAnbmdPbkRlc3Ryb3knLCBvbkRlc3Ryb3kpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRvckhvb2tzPFQsIEsgZXh0ZW5kcyBrZXlvZiBUID0ga2V5b2YgVD4ge1xuICAvKipcbiAgICogSG9vayBjYWxsZWQgd2hlbiBhIG5ldyBjb21wb25lbnQgaXMgY3JlYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIGNvbXBvbmVudCB0aGUgY3JlYXRlZCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBhcmdzIGNoYW5nZSBkZXRlY3Rpb24gZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgKi9cbiAgb25DcmVhdGUoY29tcG9uZW50OiBULCBhcmdzOiBDaGFuZ2VEZXRlY3Rpb25GbnMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBIb29rIGNhbGxlZCB3aGVuIGEgbmV3IGNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cbiAgICpcbiAgICogQHBhcmFtIGNvbXBvbmVudCB0aGUgY3JlYXRlZCBjb21wb25lbnQuXG4gICAqL1xuICBvbkluaXQoY29tcG9uZW50OiBUKTogdm9pZDtcblxuICAvKipcbiAgICogSG9vayBjYWxsZWQganVzdCBiZWZvcmUgdGhlIHJlYWwgbmdPbkRlc3Ryb3kgKGlmIGltcGxlbWVudGVkKSBpcyBjYWxsZWQuXG4gICAqL1xuICBvbkRlc3Ryb3koY29tcG9uZW50OiBUKTogdm9pZDtcblxuICAvKipcbiAgICogSG9vayBjYWxsZWQgd2hlbiBhIHByb3BlcnR5IGlzIGRpc2NvdmVyZWQuXG4gICAqIFRoaXMgaXMgdGhlIG9wcG9ydHVuaXR5IHRvIGdyYWIgdGhlIGluaXRpYWwgdmFsdWUgYmVmb3JlXG4gICAqIHRoZSBwcm9wZXJ0eSBpcyByZXBsYWNlZCBieSBnZXR0ZXJzIGFuZCBzZXR0ZXJzLlxuICAgKi9cbiAgb25Qcm9wZXJ0eURlY2xhcmUoY29tcG9uZW50OiBULCBwcm9wZXJ0eTogSywgdmFsdWU6IFRbS10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBIb29rIGNhbGxlZCB0byByZXRyaWV2ZSBhIHByb3BlcnR5LlxuICAgKi9cbiAgb25Qcm9wZXJ0eUdldChjb21wb25lbnQ6IFQsIHByb3BlcnR5OiBLKTogVFtLXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSG9vayBjYWxsZWQgdG8gc2V0IGEgcHJvcGVydHkuXG4gICAqL1xuICBvblByb3BlcnR5U2V0KGNvbXBvbmVudDogVCwgcHJvcGVydHk6IEssIHZhbHVlOiBUW0tdKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdnlDb21wb25lbnRUeXBlPFQ+IGV4dGVuZHMgVHlwZTxUPiB7XG4gIMm1ZmFjPzogKCkgPT4gVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9zcHlPbk1ldGhvZDxUPihcbiAga2xhc3M6IFR5cGU8VD4sXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgY2FsbGJhY2s6IChpbnN0YW5jZTogVCkgPT4gdm9pZFxuKSB7XG4gIGNvbnN0IHByb3RvID0ga2xhc3MucHJvdG90eXBlO1xuICBwcm90b1ttZXRob2ROYW1lXSA9IF9kZWNvcmF0ZShcbiAgICBwcm90b1ttZXRob2ROYW1lXSxcbiAgICAod3JhcHBlZE1ldGhvZDogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBUKSB7XG4gICAgICAgIGNhbGxiYWNrKHRoaXMpO1xuICAgICAgICByZXR1cm4gd3JhcHBlZE1ldGhvZD8uYmluZCh0aGlzKT8uKCk7XG4gICAgICB9O1xuICAgIH1cbiAgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBfZGVjb3JhdGU8RiBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgZm46IEYsXG4gIGRlY29yYXRvcjogKGZuOiBGKSA9PiBGXG4pIHtcbiAgcmV0dXJuIGRlY29yYXRvcihmbik7XG59XG4iXX0=
@@ -1,9 +0,0 @@
1
- import { audit } from 'rxjs';
2
- import { createLocalStrategy } from './local';
3
- /**
4
- * A strategy that coalesces changes using microtask scheduling.
5
- */
6
- export const asapStrategy = createLocalStrategy({
7
- coalescer: audit(() => Promise.resolve()),
8
- });
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pY3Jvd2F2ZS9zcmMvbGliL3N0cmF0ZWdpZXMvYXNhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBc0IsbUJBQW1CLENBQUM7SUFDakUsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDMUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXVkaXQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0cmF0ZWd5IH0gZnJvbSAnLi4vZGV2a2l0JztcbmltcG9ydCB7IGNyZWF0ZUxvY2FsU3RyYXRlZ3kgfSBmcm9tICcuL2xvY2FsJztcblxuLyoqXG4gKiBBIHN0cmF0ZWd5IHRoYXQgY29hbGVzY2VzIGNoYW5nZXMgdXNpbmcgbWljcm90YXNrIHNjaGVkdWxpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2FwU3RyYXRlZ3k6IFN0cmF0ZWd5PHVua25vd24+ID0gY3JlYXRlTG9jYWxTdHJhdGVneSh7XG4gIGNvYWxlc2NlcjogYXVkaXQoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCkpLFxufSk7XG4iXX0=
@@ -1,9 +0,0 @@
1
- import { audit, timer } from 'rxjs';
2
- import { createLocalStrategy } from './local';
3
- /**
4
- * A strategy that coalesces changes using macrotask scheduling.
5
- */
6
- export const asyncStrategy = createLocalStrategy({
7
- coalescer: audit(() => timer(0)),
8
- });
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taWNyb3dhdmUvc3JjL2xpYi9zdHJhdGVnaWVzL2FzeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBc0IsbUJBQW1CLENBQUM7SUFDbEUsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDakMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXVkaXQsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdHJhdGVneSB9IGZyb20gJy4uL2RldmtpdCc7XG5pbXBvcnQgeyBjcmVhdGVMb2NhbFN0cmF0ZWd5IH0gZnJvbSAnLi9sb2NhbCc7XG5cbi8qKlxuICogQSBzdHJhdGVneSB0aGF0IGNvYWxlc2NlcyBjaGFuZ2VzIHVzaW5nIG1hY3JvdGFzayBzY2hlZHVsaW5nLlxuICovXG5leHBvcnQgY29uc3QgYXN5bmNTdHJhdGVneTogU3RyYXRlZ3k8dW5rbm93bj4gPSBjcmVhdGVMb2NhbFN0cmF0ZWd5KHtcbiAgY29hbGVzY2VyOiBhdWRpdCgoKSA9PiB0aW1lcigwKSksXG59KTtcbiJdfQ==
@@ -1,6 +0,0 @@
1
- export { createLocalStrategy } from './local';
2
- export { syncStrategy } from './sync';
3
- export { asapStrategy } from './asap';
4
- export { asyncStrategy } from './async';
5
- export { rafStrategy } from './raf';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taWNyb3dhdmUvc3JjL2xpYi9zdHJhdGVnaWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgY3JlYXRlTG9jYWxTdHJhdGVneSB9IGZyb20gJy4vbG9jYWwnO1xuZXhwb3J0IHsgc3luY1N0cmF0ZWd5IH0gZnJvbSAnLi9zeW5jJztcbmV4cG9ydCB7IGFzYXBTdHJhdGVneSB9IGZyb20gJy4vYXNhcCc7XG5leHBvcnQgeyBhc3luY1N0cmF0ZWd5IH0gZnJvbSAnLi9hc3luYyc7XG5leHBvcnQgeyByYWZTdHJhdGVneSB9IGZyb20gJy4vcmFmJztcbiJdfQ==
@@ -1,26 +0,0 @@
1
- import { concat, takeUntil } from 'rxjs';
2
- /**
3
- * Creates a change detection strategy which is local to the component.
4
- * It implements optional coalescing which can be customized using `coalescer` parameter.
5
- *
6
- * @example createLocalStrategy()
7
- * @example createLocalStrategy({coalescer: audit(() => Promise.resolve())})
8
- *
9
- * @returns a strategy that can be used with Microwave decorator.
10
- */
11
- export const createLocalStrategy = ({ coalescer, } = {}) => ({ initialized$, changed$, destroyed$, detach, detectChanges }) => {
12
- /**
13
- * Detach change detection as we want to take control.
14
- */
15
- detach();
16
- /**
17
- * Trigger change detection initially and on property changes.
18
- * Coalesce through micro-tasks.
19
- */
20
- let source$ = concat(initialized$, changed$);
21
- if (coalescer != null) {
22
- source$ = source$.pipe(coalescer);
23
- }
24
- source$.pipe(takeUntil(destroyed$)).subscribe(() => detectChanges());
25
- };
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taWNyb3dhdmUvc3JjL2xpYi9zdHJhdGVnaWVzL2xvY2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQTRCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUduRTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUM5QixDQUFDLEVBQ0MsU0FBUyxNQUN5QyxFQUFFLEVBQXFCLEVBQUUsQ0FDN0UsQ0FBQyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFO0lBQ2hFOztPQUVHO0lBQ0gsTUFBTSxFQUFFLENBQUM7SUFFVDs7O09BR0c7SUFDSCxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTdDLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmNhdCwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0cmF0ZWd5IH0gZnJvbSAnLi4vZGV2a2l0JztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSB3aGljaCBpcyBsb2NhbCB0byB0aGUgY29tcG9uZW50LlxuICogSXQgaW1wbGVtZW50cyBvcHRpb25hbCBjb2FsZXNjaW5nIHdoaWNoIGNhbiBiZSBjdXN0b21pemVkIHVzaW5nIGBjb2FsZXNjZXJgIHBhcmFtZXRlci5cbiAqXG4gKiBAZXhhbXBsZSBjcmVhdGVMb2NhbFN0cmF0ZWd5KClcbiAqIEBleGFtcGxlIGNyZWF0ZUxvY2FsU3RyYXRlZ3koe2NvYWxlc2NlcjogYXVkaXQoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCkpfSlcbiAqXG4gKiBAcmV0dXJucyBhIHN0cmF0ZWd5IHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBNaWNyb3dhdmUgZGVjb3JhdG9yLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlTG9jYWxTdHJhdGVneSA9XG4gICh7XG4gICAgY29hbGVzY2VyLFxuICB9OiB7IGNvYWxlc2Nlcj86IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjx2b2lkPiB9ID0ge30pOiBTdHJhdGVneTx1bmtub3duPiA9PlxuICAoeyBpbml0aWFsaXplZCQsIGNoYW5nZWQkLCBkZXN0cm95ZWQkLCBkZXRhY2gsIGRldGVjdENoYW5nZXMgfSkgPT4ge1xuICAgIC8qKlxuICAgICAqIERldGFjaCBjaGFuZ2UgZGV0ZWN0aW9uIGFzIHdlIHdhbnQgdG8gdGFrZSBjb250cm9sLlxuICAgICAqL1xuICAgIGRldGFjaCgpO1xuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGluaXRpYWxseSBhbmQgb24gcHJvcGVydHkgY2hhbmdlcy5cbiAgICAgKiBDb2FsZXNjZSB0aHJvdWdoIG1pY3JvLXRhc2tzLlxuICAgICAqL1xuICAgIGxldCBzb3VyY2UkID0gY29uY2F0KGluaXRpYWxpemVkJCwgY2hhbmdlZCQpO1xuXG4gICAgaWYgKGNvYWxlc2NlciAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UkID0gc291cmNlJC5waXBlKGNvYWxlc2Nlcik7XG4gICAgfVxuXG4gICAgc291cmNlJC5waXBlKHRha2VVbnRpbChkZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCgpID0+IGRldGVjdENoYW5nZXMoKSk7XG4gIH07XG4iXX0=
@@ -1,9 +0,0 @@
1
- import { audit, animationFrames } from 'rxjs';
2
- import { createLocalStrategy } from './local';
3
- /**
4
- * A strategy that coalesces changes using requestAnimationFrame scheduler.
5
- */
6
- export const rafStrategy = createLocalStrategy({
7
- coalescer: audit(() => animationFrames()),
8
- });
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWljcm93YXZlL3NyYy9saWIvc3RyYXRlZ2llcy9yYWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTlDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFzQixtQkFBbUIsQ0FBQztJQUNoRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO0NBQzFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF1ZGl0LCBhbmltYXRpb25GcmFtZXMgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0cmF0ZWd5IH0gZnJvbSAnLi4vZGV2a2l0JztcbmltcG9ydCB7IGNyZWF0ZUxvY2FsU3RyYXRlZ3kgfSBmcm9tICcuL2xvY2FsJztcblxuLyoqXG4gKiBBIHN0cmF0ZWd5IHRoYXQgY29hbGVzY2VzIGNoYW5nZXMgdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNjaGVkdWxlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHJhZlN0cmF0ZWd5OiBTdHJhdGVneTx1bmtub3duPiA9IGNyZWF0ZUxvY2FsU3RyYXRlZ3koe1xuICBjb2FsZXNjZXI6IGF1ZGl0KCgpID0+IGFuaW1hdGlvbkZyYW1lcygpKSxcbn0pO1xuIl19
@@ -1,3 +0,0 @@
1
- import { createLocalStrategy } from './local';
2
- export const syncStrategy = createLocalStrategy();
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pY3Jvd2F2ZS9zcmMvbGliL3N0cmF0ZWdpZXMvc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHOUMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFzQixtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlTG9jYWxTdHJhdGVneSB9IGZyb20gJy4vbG9jYWwnO1xuaW1wb3J0IHsgU3RyYXRlZ3kgfSBmcm9tICcuLi9kZXZraXQnO1xuXG5leHBvcnQgY29uc3Qgc3luY1N0cmF0ZWd5OiBTdHJhdGVneTx1bmtub3duPiA9IGNyZWF0ZUxvY2FsU3RyYXRlZ3koKTtcbiJdfQ==