@angular/core 14.1.0-next.2 → 14.1.0-rc.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/esm2020/src/application_ref.mjs +29 -15
- package/esm2020/src/change_detection/change_detector_ref.mjs +1 -1
- package/esm2020/src/core.mjs +2 -2
- package/esm2020/src/core_render3_private_export.mjs +2 -2
- package/esm2020/src/debug/debug_node.mjs +3 -4
- package/esm2020/src/di/index.mjs +1 -1
- package/esm2020/src/di/injector_compatibility.mjs +13 -8
- package/esm2020/src/di/injector_token.mjs +2 -2
- package/esm2020/src/di/interface/injector.mjs +2 -1
- package/esm2020/src/di/jit/util.mjs +3 -2
- package/esm2020/src/di/r3_injector.mjs +13 -1
- package/esm2020/src/di/reflective_key.mjs +3 -2
- package/esm2020/src/errors.mjs +1 -1
- package/esm2020/src/i18n/locale_data_api.mjs +3 -2
- package/esm2020/src/linker/component_factory.mjs +1 -1
- package/esm2020/src/linker/ng_module_factory.mjs +2 -2
- package/esm2020/src/linker/view_container_ref.mjs +2 -2
- package/esm2020/src/metadata/di.mjs +1 -1
- package/esm2020/src/render/api.mjs +2 -11
- package/esm2020/src/render3/component.mjs +3 -57
- package/esm2020/src/render3/component_ref.mjs +30 -5
- package/esm2020/src/render3/features/standalone_feature.mjs +2 -2
- package/esm2020/src/render3/index.mjs +4 -4
- package/esm2020/src/render3/instructions/change_detection.mjs +2 -20
- package/esm2020/src/render3/instructions/element_validation.mjs +4 -1
- package/esm2020/src/render3/instructions/listener.mjs +34 -44
- package/esm2020/src/render3/instructions/lview_debug.mjs +1 -1
- package/esm2020/src/render3/instructions/property_interpolation.mjs +2 -2
- package/esm2020/src/render3/instructions/shared.mjs +22 -59
- package/esm2020/src/render3/instructions/styling.mjs +2 -2
- package/esm2020/src/render3/interfaces/i18n.mjs +2 -2
- package/esm2020/src/render3/interfaces/renderer.mjs +1 -17
- package/esm2020/src/render3/interfaces/styling.mjs +1 -1
- package/esm2020/src/render3/interfaces/view.mjs +1 -1
- package/esm2020/src/render3/ng_module_ref.mjs +15 -2
- package/esm2020/src/render3/node_manipulation.mjs +24 -87
- package/esm2020/src/render3/node_manipulation_i18n.mjs +1 -1
- package/esm2020/src/render3/util/attrs_utils.mjs +4 -12
- package/esm2020/src/render3/util/view_utils.mjs +3 -6
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/src/zone/ng_zone.mjs +9 -4
- package/esm2020/testing/src/logger.mjs +3 -3
- package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
- package/fesm2015/core.mjs +1697 -1830
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/testing.mjs +1037 -1279
- package/fesm2015/testing.mjs.map +1 -1
- package/fesm2020/core.mjs +1697 -1830
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/testing.mjs +1037 -1279
- package/fesm2020/testing.mjs.map +1 -1
- package/index.d.ts +169 -144
- package/package.json +1 -1
- package/schematics/migrations/typed-forms/util.js +2 -2
- package/schematics/utils/typescript/symbol.js +2 -2
- package/testing/index.d.ts +1 -1
- package/schematics/utils/schematics_prompt.d.ts +0 -17
- package/schematics/utils/schematics_prompt.js +0 -45
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.1.0-
|
|
2
|
+
* @license Angular v14.1.0-rc.0
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -401,7 +401,6 @@ export declare class ApplicationRef {
|
|
|
401
401
|
private _zone;
|
|
402
402
|
private _injector;
|
|
403
403
|
private _exceptionHandler;
|
|
404
|
-
private _initStatus;
|
|
405
404
|
private _views;
|
|
406
405
|
private _runningTick;
|
|
407
406
|
private _stable;
|
|
@@ -427,6 +426,10 @@ export declare class ApplicationRef {
|
|
|
427
426
|
* @see [Usage notes](#is-stable-examples) for examples and caveats when using this API.
|
|
428
427
|
*/
|
|
429
428
|
readonly isStable: Observable<boolean>;
|
|
429
|
+
/**
|
|
430
|
+
* The `EnvironmentInjector` used to create this application.
|
|
431
|
+
*/
|
|
432
|
+
get injector(): EnvironmentInjector;
|
|
430
433
|
/**
|
|
431
434
|
* Bootstrap a component onto the element identified by its selector or, optionally, to a
|
|
432
435
|
* specified element.
|
|
@@ -530,7 +533,7 @@ export declare class ApplicationRef {
|
|
|
530
533
|
private _loadComponent;
|
|
531
534
|
/**
|
|
532
535
|
* Destroys an Angular application represented by this `ApplicationRef`. Calling this function
|
|
533
|
-
* will destroy the associated
|
|
536
|
+
* will destroy the associated environment injectors as well as all the bootstrapped components
|
|
534
537
|
* with their views.
|
|
535
538
|
*/
|
|
536
539
|
destroy(): void;
|
|
@@ -608,9 +611,11 @@ export declare interface AttributeDecorator {
|
|
|
608
611
|
}
|
|
609
612
|
|
|
610
613
|
/**
|
|
611
|
-
* Provides additional options to the
|
|
614
|
+
* Provides additional options to the bootstrapping process.
|
|
615
|
+
*
|
|
616
|
+
* @publicApi
|
|
612
617
|
*/
|
|
613
|
-
declare interface BootstrapOptions {
|
|
618
|
+
export declare interface BootstrapOptions {
|
|
614
619
|
/**
|
|
615
620
|
* Optionally specify which `NgZone` should be used.
|
|
616
621
|
*
|
|
@@ -629,7 +634,7 @@ declare interface BootstrapOptions {
|
|
|
629
634
|
*
|
|
630
635
|
* When button is clicked, because of the event bubbling, both
|
|
631
636
|
* event handlers will be called and 2 change detections will be
|
|
632
|
-
* triggered. We can
|
|
637
|
+
* triggered. We can coalesce such kind of events to only trigger
|
|
633
638
|
* change detection only once.
|
|
634
639
|
*
|
|
635
640
|
* By default, this option will be false. So the events will not be
|
|
@@ -738,7 +743,7 @@ export declare abstract class ChangeDetectorRef {
|
|
|
738
743
|
*
|
|
739
744
|
* Components are normally marked as dirty (in need of rerendering) when inputs
|
|
740
745
|
* have changed or events have fired in the view. Call this method to ensure that
|
|
741
|
-
* a component is checked even if these triggers have not
|
|
746
|
+
* a component is checked even if these triggers have not occurred.
|
|
742
747
|
*
|
|
743
748
|
* <!-- TODO: Add a link to a chapter on OnPush components -->
|
|
744
749
|
*
|
|
@@ -1321,6 +1326,15 @@ declare type ComponentInstance = {};
|
|
|
1321
1326
|
* @publicApi
|
|
1322
1327
|
*/
|
|
1323
1328
|
export declare abstract class ComponentRef<C> {
|
|
1329
|
+
/**
|
|
1330
|
+
* Updates a specified input name to a new value. Using this method will properly mark for check
|
|
1331
|
+
* component using the `OnPush` change detection strategy. It will also assure that the
|
|
1332
|
+
* `OnChanges` lifecycle hook runs when a dynamically created component is change-detected.
|
|
1333
|
+
*
|
|
1334
|
+
* @param name The name of an input.
|
|
1335
|
+
* @param value The new value of an input.
|
|
1336
|
+
*/
|
|
1337
|
+
abstract setInput(name: string, value: unknown): void;
|
|
1324
1338
|
/**
|
|
1325
1339
|
* The host or anchor [element](guide/glossary#element) for this component instance.
|
|
1326
1340
|
*/
|
|
@@ -1453,6 +1467,8 @@ export declare interface ContentChildDecorator {
|
|
|
1453
1467
|
* **Metadata Properties**:
|
|
1454
1468
|
*
|
|
1455
1469
|
* * **selector** - The directive type or the name used for querying.
|
|
1470
|
+
* * **descendants** - If `true` (default) include all descendants of the element. If `false` then
|
|
1471
|
+
* only query direct children of the element.
|
|
1456
1472
|
* * **read** - Used to read a different token from the queried element.
|
|
1457
1473
|
* * **static** - True to resolve query results before change detection runs,
|
|
1458
1474
|
* false to resolve after change detection. Defaults to false.
|
|
@@ -1486,10 +1502,12 @@ export declare interface ContentChildDecorator {
|
|
|
1486
1502
|
* @Annotation
|
|
1487
1503
|
*/
|
|
1488
1504
|
(selector: ProviderToken<unknown> | Function | string, opts?: {
|
|
1505
|
+
descendants?: boolean;
|
|
1489
1506
|
read?: any;
|
|
1490
1507
|
static?: boolean;
|
|
1491
1508
|
}): any;
|
|
1492
1509
|
new (selector: ProviderToken<unknown> | Function | string, opts?: {
|
|
1510
|
+
descendants?: boolean;
|
|
1493
1511
|
read?: any;
|
|
1494
1512
|
static?: boolean;
|
|
1495
1513
|
}): ContentChild;
|
|
@@ -1600,49 +1618,6 @@ declare type ContentQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U
|
|
|
1600
1618
|
|
|
1601
1619
|
declare const CONTEXT = 8;
|
|
1602
1620
|
|
|
1603
|
-
/** Options that control how the component should be bootstrapped. */
|
|
1604
|
-
declare interface CreateComponentOptions {
|
|
1605
|
-
/** Which renderer factory to use. */
|
|
1606
|
-
rendererFactory?: RendererFactory3;
|
|
1607
|
-
/** A custom sanitizer instance */
|
|
1608
|
-
sanitizer?: Sanitizer;
|
|
1609
|
-
/** A custom animation player handler */
|
|
1610
|
-
playerHandler?: ɵPlayerHandler;
|
|
1611
|
-
/**
|
|
1612
|
-
* Host element on which the component will be bootstrapped. If not specified,
|
|
1613
|
-
* the component definition's `tag` is used to query the existing DOM for the
|
|
1614
|
-
* element to bootstrap.
|
|
1615
|
-
*/
|
|
1616
|
-
host?: RElement | string;
|
|
1617
|
-
/** Module injector for the component. If unspecified, the injector will be NULL_INJECTOR. */
|
|
1618
|
-
injector?: Injector;
|
|
1619
|
-
/**
|
|
1620
|
-
* List of features to be applied to the created component. Features are simply
|
|
1621
|
-
* functions that decorate a component with a certain behavior.
|
|
1622
|
-
*
|
|
1623
|
-
* Typically, the features in this list are features that cannot be added to the
|
|
1624
|
-
* other features list in the component definition because they rely on other factors.
|
|
1625
|
-
*
|
|
1626
|
-
* Example: `LifecycleHooksFeature` is a function that adds lifecycle hook capabilities
|
|
1627
|
-
* to root components in a tree-shakable way. It cannot be added to the component
|
|
1628
|
-
* features list because there's no way of knowing when the component will be used as
|
|
1629
|
-
* a root component.
|
|
1630
|
-
*/
|
|
1631
|
-
hostFeatures?: HostFeature[];
|
|
1632
|
-
/**
|
|
1633
|
-
* A function which is used to schedule change detection work in the future.
|
|
1634
|
-
*
|
|
1635
|
-
* When marking components as dirty, it is necessary to schedule the work of
|
|
1636
|
-
* change detection in the future. This is done to coalesce multiple
|
|
1637
|
-
* {@link markDirty} calls into a single changed detection processing.
|
|
1638
|
-
*
|
|
1639
|
-
* The default value of the scheduler is the `requestAnimationFrame` function.
|
|
1640
|
-
*
|
|
1641
|
-
* It is also useful to override this function for testing purposes.
|
|
1642
|
-
*/
|
|
1643
|
-
scheduler?: (work: () => void) => void;
|
|
1644
|
-
}
|
|
1645
|
-
|
|
1646
1621
|
/**
|
|
1647
1622
|
* Create a new environment injector.
|
|
1648
1623
|
*
|
|
@@ -1661,12 +1636,23 @@ export declare function createEnvironmentInjector(providers: Array<Provider | Im
|
|
|
1661
1636
|
|
|
1662
1637
|
/**
|
|
1663
1638
|
* Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.
|
|
1639
|
+
*
|
|
1664
1640
|
* @param ngModule NgModule class.
|
|
1665
1641
|
* @param parentInjector Optional injector instance to use as a parent for the module injector. If
|
|
1666
1642
|
* not provided, `NullInjector` will be used instead.
|
|
1643
|
+
* @returns NgModuleRef that represents an NgModule instance.
|
|
1644
|
+
*
|
|
1667
1645
|
* @publicApi
|
|
1668
1646
|
*/
|
|
1669
|
-
export declare function
|
|
1647
|
+
export declare function createNgModule<T>(ngModule: Type<T>, parentInjector?: Injector): NgModuleRef<T>;
|
|
1648
|
+
|
|
1649
|
+
/**
|
|
1650
|
+
* The `createNgModule` function alias for backwards-compatibility.
|
|
1651
|
+
* Please avoid using it directly and use `createNgModule` instead.
|
|
1652
|
+
*
|
|
1653
|
+
* @deprecated Use `createNgModule` instead.
|
|
1654
|
+
*/
|
|
1655
|
+
export declare const createNgModuleRef: typeof createNgModule;
|
|
1670
1656
|
|
|
1671
1657
|
/**
|
|
1672
1658
|
* Creates a platform.
|
|
@@ -2640,6 +2626,17 @@ export declare abstract class EnvironmentInjector implements Injector {
|
|
|
2640
2626
|
* @suppress {duplicate}
|
|
2641
2627
|
*/
|
|
2642
2628
|
abstract get(token: any, notFoundValue?: any): any;
|
|
2629
|
+
/**
|
|
2630
|
+
* Runs the given function in the context of this `EnvironmentInjector`.
|
|
2631
|
+
*
|
|
2632
|
+
* Within the function's stack frame, `inject` can be used to inject dependencies from this
|
|
2633
|
+
* injector. Note that `inject` is only usable synchronously, and cannot be used in any
|
|
2634
|
+
* asynchronous callbacks or after any `await` points.
|
|
2635
|
+
*
|
|
2636
|
+
* @param fn the closure to be run in the context of this injector
|
|
2637
|
+
* @returns the return value of the function, if any
|
|
2638
|
+
*/
|
|
2639
|
+
abstract runInContext<ReturnT>(fn: () => ReturnT): ReturnT;
|
|
2643
2640
|
abstract destroy(): void;
|
|
2644
2641
|
}
|
|
2645
2642
|
|
|
@@ -2945,6 +2942,14 @@ export declare interface GetTestability {
|
|
|
2945
2942
|
findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean): Testability | null;
|
|
2946
2943
|
}
|
|
2947
2944
|
|
|
2945
|
+
/**
|
|
2946
|
+
* The goal here is to make sure that the browser DOM API is the Renderer.
|
|
2947
|
+
* We do this by defining a subset of DOM API to be the renderer and then
|
|
2948
|
+
* use that at runtime for rendering.
|
|
2949
|
+
*
|
|
2950
|
+
* At runtime we can then use the DOM api directly, in server or web-worker
|
|
2951
|
+
* it will be easy to implement such API.
|
|
2952
|
+
*/
|
|
2948
2953
|
declare type GlobalTargetName = 'document' | 'window' | 'body';
|
|
2949
2954
|
|
|
2950
2955
|
declare type GlobalTargetResolver = (element: any) => EventTarget;
|
|
@@ -3149,9 +3154,6 @@ export declare interface HostDecorator {
|
|
|
3149
3154
|
new (): Host;
|
|
3150
3155
|
}
|
|
3151
3156
|
|
|
3152
|
-
/** See CreateComponentOptions.hostFeatures */
|
|
3153
|
-
declare type HostFeature = (<T>(component: T, componentDef: ɵComponentDef<T>) => void);
|
|
3154
|
-
|
|
3155
3157
|
/**
|
|
3156
3158
|
* Type of the HostListener metadata.
|
|
3157
3159
|
*
|
|
@@ -3615,9 +3617,38 @@ export declare function inject<T>(token: ProviderToken<T>): T;
|
|
|
3615
3617
|
* @throws if called outside of a supported context.
|
|
3616
3618
|
*
|
|
3617
3619
|
* @publicApi
|
|
3620
|
+
* @deprecated prefer an options object instead of `InjectFlags`
|
|
3618
3621
|
*/
|
|
3619
3622
|
export declare function inject<T>(token: ProviderToken<T>, flags?: InjectFlags): T | null;
|
|
3620
3623
|
|
|
3624
|
+
/**
|
|
3625
|
+
* @param token A token that represents a dependency that should be injected.
|
|
3626
|
+
* @param options Control how injection is executed. Options correspond to injection strategies
|
|
3627
|
+
* that can be specified with parameter decorators `@Host`, `@Self`, `@SkipSelf`, and
|
|
3628
|
+
* `@Optional`.
|
|
3629
|
+
* @returns the injected value if operation is successful.
|
|
3630
|
+
* @throws if called outside of a supported context, or if the token is not found.
|
|
3631
|
+
*
|
|
3632
|
+
* @publicApi
|
|
3633
|
+
*/
|
|
3634
|
+
export declare function inject<T>(token: ProviderToken<T>, options: InjectOptions & {
|
|
3635
|
+
optional?: false;
|
|
3636
|
+
}): T;
|
|
3637
|
+
|
|
3638
|
+
/**
|
|
3639
|
+
* @param token A token that represents a dependency that should be injected.
|
|
3640
|
+
* @param options Control how injection is executed. Options correspond to injection strategies
|
|
3641
|
+
* that can be specified with parameter decorators `@Host`, `@Self`, `@SkipSelf`, and
|
|
3642
|
+
* `@Optional`.
|
|
3643
|
+
* @returns the injected value if operation is successful, `null` if the token is not
|
|
3644
|
+
* found and optional injection has been requested.
|
|
3645
|
+
* @throws if called outside of a supported context, or if the token is not found and optional
|
|
3646
|
+
* injection was not requested.
|
|
3647
|
+
*
|
|
3648
|
+
* @publicApi
|
|
3649
|
+
*/
|
|
3650
|
+
export declare function inject<T>(token: ProviderToken<T>, options: InjectOptions): T | null;
|
|
3651
|
+
|
|
3621
3652
|
/**
|
|
3622
3653
|
* Type of the Injectable metadata.
|
|
3623
3654
|
*
|
|
@@ -3741,6 +3772,7 @@ export declare interface InjectDecorator {
|
|
|
3741
3772
|
* Injection flags for DI.
|
|
3742
3773
|
*
|
|
3743
3774
|
* @publicApi
|
|
3775
|
+
* @deprecated use an options object for `inject` instead.
|
|
3744
3776
|
*/
|
|
3745
3777
|
export declare enum InjectFlags {
|
|
3746
3778
|
/** Check self and check parent injector if needed */
|
|
@@ -3815,6 +3847,32 @@ export declare class InjectionToken<T> {
|
|
|
3815
3847
|
toString(): string;
|
|
3816
3848
|
}
|
|
3817
3849
|
|
|
3850
|
+
/**
|
|
3851
|
+
* Type of the options argument to `inject`.
|
|
3852
|
+
*
|
|
3853
|
+
* @publicApi
|
|
3854
|
+
*/
|
|
3855
|
+
export declare interface InjectOptions {
|
|
3856
|
+
/**
|
|
3857
|
+
* Use optional injection, and return `null` if the requested token is not found.
|
|
3858
|
+
*/
|
|
3859
|
+
optional?: boolean;
|
|
3860
|
+
/**
|
|
3861
|
+
* Start injection at the parent of the current injector.
|
|
3862
|
+
*/
|
|
3863
|
+
skipSelf?: boolean;
|
|
3864
|
+
/**
|
|
3865
|
+
* Only query the current injector for the token, and don't fall back to the parent injector if
|
|
3866
|
+
* it's not found.
|
|
3867
|
+
*/
|
|
3868
|
+
self?: boolean;
|
|
3869
|
+
/**
|
|
3870
|
+
* Stop injection at the host component's injector. Only relevant when injecting from an element
|
|
3871
|
+
* injector, and a no-op for environment injectors.
|
|
3872
|
+
*/
|
|
3873
|
+
host?: boolean;
|
|
3874
|
+
}
|
|
3875
|
+
|
|
3818
3876
|
/**
|
|
3819
3877
|
* An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.
|
|
3820
3878
|
*
|
|
@@ -4574,8 +4632,8 @@ declare interface LView<T = unknown> extends Array<any> {
|
|
|
4574
4632
|
* TView.cleanup saves an index to the necessary context in this array.
|
|
4575
4633
|
*
|
|
4576
4634
|
* After `LView` is created it is possible to attach additional instance specific functions at the
|
|
4577
|
-
* end of the `lView[
|
|
4578
|
-
*
|
|
4635
|
+
* end of the `lView[CLEANUP]` because we know that no more `T` level cleanup functions will be
|
|
4636
|
+
* added here.
|
|
4579
4637
|
*/
|
|
4580
4638
|
[CLEANUP]: any[] | null;
|
|
4581
4639
|
/**
|
|
@@ -4589,9 +4647,9 @@ declare interface LView<T = unknown> extends Array<any> {
|
|
|
4589
4647
|
/** An optional Module Injector to be used as fall back after Element Injectors are consulted. */
|
|
4590
4648
|
readonly [INJECTOR_2]: Injector | null;
|
|
4591
4649
|
/** Factory to be used for creating Renderer. */
|
|
4592
|
-
[RENDERER_FACTORY]:
|
|
4650
|
+
[RENDERER_FACTORY]: RendererFactory;
|
|
4593
4651
|
/** Renderer to be used for this view. */
|
|
4594
|
-
[RENDERER]:
|
|
4652
|
+
[RENDERER]: Renderer;
|
|
4595
4653
|
/** An optional custom sanitizer. */
|
|
4596
4654
|
[SANITIZER]: Sanitizer | null;
|
|
4597
4655
|
/**
|
|
@@ -5191,7 +5249,7 @@ export declare interface NgModuleDecorator {
|
|
|
5191
5249
|
* JIT mode. See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes)
|
|
5192
5250
|
* for additional context. Angular provides APIs that accept NgModule classes directly (such as
|
|
5193
5251
|
* [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and
|
|
5194
|
-
* [
|
|
5252
|
+
* [createNgModule](api/core/createNgModule)), consider switching to those APIs instead of
|
|
5195
5253
|
* using factory-based ones.
|
|
5196
5254
|
*/
|
|
5197
5255
|
export declare abstract class NgModuleFactory<T> {
|
|
@@ -5436,21 +5494,6 @@ declare interface NodeInjectorDebug {
|
|
|
5436
5494
|
parentInjectorIndex: number;
|
|
5437
5495
|
}
|
|
5438
5496
|
|
|
5439
|
-
/**
|
|
5440
|
-
* Object Oriented style of API needed to create elements and text nodes.
|
|
5441
|
-
*
|
|
5442
|
-
* This is the native browser API style, e.g. operations are methods on individual objects
|
|
5443
|
-
* like HTMLElement. With this style, no additional code is needed as a facade
|
|
5444
|
-
* (reducing payload size).
|
|
5445
|
-
* */
|
|
5446
|
-
declare interface ObjectOrientedRenderer3 {
|
|
5447
|
-
createComment(data: string): RComment;
|
|
5448
|
-
createElement(tagName: string): RElement;
|
|
5449
|
-
createElementNS(namespace: string, tagName: string): RElement;
|
|
5450
|
-
createTextNode(data: string): RText;
|
|
5451
|
-
querySelector(selectors: string): RElement | null;
|
|
5452
|
-
}
|
|
5453
|
-
|
|
5454
5497
|
/**
|
|
5455
5498
|
* @description
|
|
5456
5499
|
* A lifecycle hook that is called when any data-bound property of a directive changes.
|
|
@@ -5875,41 +5918,6 @@ declare const enum PreOrderHookFlags {
|
|
|
5875
5918
|
NumberOfInitHooksCalledMask = 4294901760
|
|
5876
5919
|
}
|
|
5877
5920
|
|
|
5878
|
-
/**
|
|
5879
|
-
* Procedural style of API needed to create elements and text nodes.
|
|
5880
|
-
*
|
|
5881
|
-
* In non-native browser environments (e.g. platforms such as web-workers), this is the
|
|
5882
|
-
* facade that enables element manipulation. This also facilitates backwards compatibility
|
|
5883
|
-
* with Renderer2.
|
|
5884
|
-
*/
|
|
5885
|
-
declare interface ProceduralRenderer3 {
|
|
5886
|
-
destroy(): void;
|
|
5887
|
-
createComment(value: string): RComment;
|
|
5888
|
-
createElement(name: string, namespace?: string | null): RElement;
|
|
5889
|
-
createText(value: string): RText;
|
|
5890
|
-
/**
|
|
5891
|
-
* This property is allowed to be null / undefined,
|
|
5892
|
-
* in which case the view engine won't call it.
|
|
5893
|
-
* This is used as a performance optimization for production mode.
|
|
5894
|
-
*/
|
|
5895
|
-
destroyNode?: ((node: RNode) => void) | null;
|
|
5896
|
-
appendChild(parent: RElement, newChild: RNode): void;
|
|
5897
|
-
insertBefore(parent: RNode, newChild: RNode, refChild: RNode | null, isMove?: boolean): void;
|
|
5898
|
-
removeChild(parent: RElement, oldChild: RNode, isHostElement?: boolean): void;
|
|
5899
|
-
selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): RElement;
|
|
5900
|
-
parentNode(node: RNode): RElement | null;
|
|
5901
|
-
nextSibling(node: RNode): RNode | null;
|
|
5902
|
-
setAttribute(el: RElement, name: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL, namespace?: string | null): void;
|
|
5903
|
-
removeAttribute(el: RElement, name: string, namespace?: string | null): void;
|
|
5904
|
-
addClass(el: RElement, name: string): void;
|
|
5905
|
-
removeClass(el: RElement, name: string): void;
|
|
5906
|
-
setStyle(el: RElement, style: string, value: any, flags?: RendererStyleFlags2 | RendererStyleFlags3): void;
|
|
5907
|
-
removeStyle(el: RElement, style: string, flags?: RendererStyleFlags2 | RendererStyleFlags3): void;
|
|
5908
|
-
setProperty(el: RElement, name: string, value: any): void;
|
|
5909
|
-
setValue(node: RText | RComment, value: string): void;
|
|
5910
|
-
listen(target: GlobalTargetName | RNode, eventName: string, callback: (event: any) => boolean | void): () => void;
|
|
5911
|
-
}
|
|
5912
|
-
|
|
5913
5921
|
/**
|
|
5914
5922
|
* Describes a function that is used to process provider lists (such as provider
|
|
5915
5923
|
* overrides).
|
|
@@ -6308,6 +6316,7 @@ declare class R3Injector extends EnvironmentInjector {
|
|
|
6308
6316
|
*/
|
|
6309
6317
|
destroy(): void;
|
|
6310
6318
|
onDestroy(callback: () => void): void;
|
|
6319
|
+
runInContext<ReturnT>(fn: () => ReturnT): ReturnT;
|
|
6311
6320
|
get<T>(token: ProviderToken<T>, notFoundValue?: any, flags?: InjectFlags): T;
|
|
6312
6321
|
toString(): string;
|
|
6313
6322
|
private assertNotDestroyed;
|
|
@@ -6638,6 +6647,40 @@ declare interface RElement extends RNode {
|
|
|
6638
6647
|
|
|
6639
6648
|
declare const RENDERER = 11;
|
|
6640
6649
|
|
|
6650
|
+
/**
|
|
6651
|
+
* Procedural style of API needed to create elements and text nodes.
|
|
6652
|
+
*
|
|
6653
|
+
* In non-native browser environments (e.g. platforms such as web-workers), this is the
|
|
6654
|
+
* facade that enables element manipulation. In practice, this is implemented by `Renderer2`.
|
|
6655
|
+
*/
|
|
6656
|
+
declare interface Renderer {
|
|
6657
|
+
destroy(): void;
|
|
6658
|
+
createComment(value: string): RComment;
|
|
6659
|
+
createElement(name: string, namespace?: string | null): RElement;
|
|
6660
|
+
createText(value: string): RText;
|
|
6661
|
+
/**
|
|
6662
|
+
* This property is allowed to be null / undefined,
|
|
6663
|
+
* in which case the view engine won't call it.
|
|
6664
|
+
* This is used as a performance optimization for production mode.
|
|
6665
|
+
*/
|
|
6666
|
+
destroyNode?: ((node: RNode) => void) | null;
|
|
6667
|
+
appendChild(parent: RElement, newChild: RNode): void;
|
|
6668
|
+
insertBefore(parent: RNode, newChild: RNode, refChild: RNode | null, isMove?: boolean): void;
|
|
6669
|
+
removeChild(parent: RElement, oldChild: RNode, isHostElement?: boolean): void;
|
|
6670
|
+
selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): RElement;
|
|
6671
|
+
parentNode(node: RNode): RElement | null;
|
|
6672
|
+
nextSibling(node: RNode): RNode | null;
|
|
6673
|
+
setAttribute(el: RElement, name: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL, namespace?: string | null): void;
|
|
6674
|
+
removeAttribute(el: RElement, name: string, namespace?: string | null): void;
|
|
6675
|
+
addClass(el: RElement, name: string): void;
|
|
6676
|
+
removeClass(el: RElement, name: string): void;
|
|
6677
|
+
setStyle(el: RElement, style: string, value: any, flags?: RendererStyleFlags2): void;
|
|
6678
|
+
removeStyle(el: RElement, style: string, flags?: RendererStyleFlags2): void;
|
|
6679
|
+
setProperty(el: RElement, name: string, value: any): void;
|
|
6680
|
+
setValue(node: RText | RComment, value: string): void;
|
|
6681
|
+
listen(target: GlobalTargetName | RNode, eventName: string, callback: (event: any) => boolean | void): () => void;
|
|
6682
|
+
}
|
|
6683
|
+
|
|
6641
6684
|
/**
|
|
6642
6685
|
* Extend this base class to implement custom rendering. By default, Angular
|
|
6643
6686
|
* renders a template into DOM. You can use custom rendering to intercept
|
|
@@ -6814,10 +6857,14 @@ export declare abstract class Renderer2 {
|
|
|
6814
6857
|
abstract listen(target: 'window' | 'document' | 'body' | any, eventName: string, callback: (event: any) => boolean | void): () => void;
|
|
6815
6858
|
}
|
|
6816
6859
|
|
|
6817
|
-
declare type Renderer3 = ObjectOrientedRenderer3 | ProceduralRenderer3;
|
|
6818
|
-
|
|
6819
6860
|
declare const RENDERER_FACTORY = 10;
|
|
6820
6861
|
|
|
6862
|
+
declare interface RendererFactory {
|
|
6863
|
+
createRenderer(hostElement: RElement | null, rendererType: RendererType2 | null): Renderer;
|
|
6864
|
+
begin?(): void;
|
|
6865
|
+
end?(): void;
|
|
6866
|
+
}
|
|
6867
|
+
|
|
6821
6868
|
/**
|
|
6822
6869
|
* Creates and initializes a custom renderer that implements the `Renderer2` base class.
|
|
6823
6870
|
*
|
|
@@ -6846,12 +6893,6 @@ export declare abstract class RendererFactory2 {
|
|
|
6846
6893
|
abstract whenRenderingDone?(): Promise<any>;
|
|
6847
6894
|
}
|
|
6848
6895
|
|
|
6849
|
-
declare interface RendererFactory3 {
|
|
6850
|
-
createRenderer(hostElement: RElement | null, rendererType: RendererType2 | null): Renderer3;
|
|
6851
|
-
begin?(): void;
|
|
6852
|
-
end?(): void;
|
|
6853
|
-
}
|
|
6854
|
-
|
|
6855
6896
|
/**
|
|
6856
6897
|
* Flags for renderer-specific style modifiers.
|
|
6857
6898
|
* @publicApi
|
|
@@ -6867,11 +6908,6 @@ export declare enum RendererStyleFlags2 {
|
|
|
6867
6908
|
DashCase = 2
|
|
6868
6909
|
}
|
|
6869
6910
|
|
|
6870
|
-
declare enum RendererStyleFlags3 {
|
|
6871
|
-
Important = 1,
|
|
6872
|
-
DashCase = 2
|
|
6873
|
-
}
|
|
6874
|
-
|
|
6875
6911
|
/**
|
|
6876
6912
|
* Used by `RendererFactory2` to associate custom rendering data and styles
|
|
6877
6913
|
* with a rendering implementation.
|
|
@@ -7046,6 +7082,7 @@ declare const enum RuntimeErrorCode {
|
|
|
7046
7082
|
INVALID_INJECTION_TOKEN = 204,
|
|
7047
7083
|
INJECTOR_ALREADY_DESTROYED = 205,
|
|
7048
7084
|
PROVIDER_IN_WRONG_CONTEXT = 207,
|
|
7085
|
+
MISSING_INJECTION_TOKEN = 208,
|
|
7049
7086
|
MULTIPLE_COMPONENTS_MATCH = -300,
|
|
7050
7087
|
EXPORT_NOT_FOUND = -301,
|
|
7051
7088
|
PIPE_NOT_FOUND = -302,
|
|
@@ -7060,7 +7097,9 @@ declare const enum RuntimeErrorCode {
|
|
|
7060
7097
|
PLATFORM_ALREADY_DESTROYED = 404,
|
|
7061
7098
|
ASYNC_INITIALIZERS_STILL_RUNNING = 405,
|
|
7062
7099
|
APPLICATION_REF_ALREADY_DESTROYED = 406,
|
|
7100
|
+
RENDERER_NOT_FOUND = 407,
|
|
7063
7101
|
INVALID_I18N_STRUCTURE = 700,
|
|
7102
|
+
MISSING_LOCALE_DATA = 701,
|
|
7064
7103
|
IMPORT_PROVIDERS_FROM_STANDALONE = 800,
|
|
7065
7104
|
INVALID_DIFFER_INPUT = 900,
|
|
7066
7105
|
NO_SUPPORTING_DIFFER_FACTORY = 901,
|
|
@@ -7069,7 +7108,9 @@ declare const enum RuntimeErrorCode {
|
|
|
7069
7108
|
UNSAFE_VALUE_IN_RESOURCE_URL = 904,
|
|
7070
7109
|
UNSAFE_VALUE_IN_SCRIPT = 905,
|
|
7071
7110
|
MISSING_GENERATED_DEF = 906,
|
|
7072
|
-
TYPE_IS_NOT_STANDALONE = 907
|
|
7111
|
+
TYPE_IS_NOT_STANDALONE = 907,
|
|
7112
|
+
MISSING_ZONEJS = 908,
|
|
7113
|
+
UNEXPECTED_ZONE_STATE = 909
|
|
7073
7114
|
}
|
|
7074
7115
|
|
|
7075
7116
|
declare const SANITIZER = 12;
|
|
@@ -8834,7 +8875,7 @@ declare const enum TViewType {
|
|
|
8834
8875
|
Component = 1,
|
|
8835
8876
|
/**
|
|
8836
8877
|
* `TView` associated with a template. Such as `*ngIf`, `<ng-template>` etc... A `Component`
|
|
8837
|
-
* can have zero or more `
|
|
8878
|
+
* can have zero or more `Embedded` `TView`s.
|
|
8838
8879
|
*/
|
|
8839
8880
|
Embedded = 2
|
|
8840
8881
|
}
|
|
@@ -10675,6 +10716,7 @@ export declare class ɵRender3ComponentRef<T> extends ComponentRef<T> {
|
|
|
10675
10716
|
changeDetectorRef: ChangeDetectorRef;
|
|
10676
10717
|
componentType: Type<T>;
|
|
10677
10718
|
constructor(componentType: Type<T>, instance: T, location: ElementRef, _rootLView: LView, _tNode: TElementNode | TContainerNode | TElementContainerNode);
|
|
10719
|
+
setInput(name: string, value: unknown): void;
|
|
10678
10720
|
get injector(): Injector;
|
|
10679
10721
|
destroy(): void;
|
|
10680
10722
|
onDestroy(callback: () => void): void;
|
|
@@ -10690,25 +10732,11 @@ export declare class ɵRender3NgModuleRef<T> extends NgModuleRef<T> implements I
|
|
|
10690
10732
|
readonly componentFactoryResolver: ComponentFactoryResolver_2;
|
|
10691
10733
|
constructor(ngModuleType: Type<T>, _parent: Injector | null);
|
|
10692
10734
|
get(token: any, notFoundValue?: any, injectFlags?: InjectFlags): any;
|
|
10735
|
+
runInContext<ReturnT>(fn: () => ReturnT): ReturnT;
|
|
10693
10736
|
destroy(): void;
|
|
10694
10737
|
onDestroy(callback: () => void): void;
|
|
10695
10738
|
}
|
|
10696
10739
|
|
|
10697
|
-
/**
|
|
10698
|
-
* Bootstraps a Component into an existing host element and returns an instance
|
|
10699
|
-
* of the component.
|
|
10700
|
-
*
|
|
10701
|
-
* Use this function to bootstrap a component into the DOM tree. Each invocation
|
|
10702
|
-
* of this function will create a separate tree of components, injectors and
|
|
10703
|
-
* change detection cycles and lifetimes. To dynamically insert a new component
|
|
10704
|
-
* into an existing tree such that it shares the same injection, change detection
|
|
10705
|
-
* and object lifetime, use {@link ViewContainer#createComponent}.
|
|
10706
|
-
*
|
|
10707
|
-
* @param componentType Component to bootstrap
|
|
10708
|
-
* @param options Optional parameters which control bootstrapping
|
|
10709
|
-
*/
|
|
10710
|
-
export declare function ɵrenderComponent<T>(componentType: ɵComponentType<T> | Type<T>, opts?: CreateComponentOptions): T;
|
|
10711
|
-
|
|
10712
10740
|
/**
|
|
10713
10741
|
* Flags passed into template functions to determine which blocks (i.e. creation, update)
|
|
10714
10742
|
* should be executed.
|
|
@@ -12758,9 +12786,6 @@ export declare function ɵɵinvalidFactory(): never;
|
|
|
12758
12786
|
* Throws an error indicating that a factory function could not be generated by the compiler for a
|
|
12759
12787
|
* particular class.
|
|
12760
12788
|
*
|
|
12761
|
-
* This instruction allows the actual error message to be optimized away when ngDevMode is turned
|
|
12762
|
-
* off, saving bytes of generated code while still providing a good experience in dev mode.
|
|
12763
|
-
*
|
|
12764
12789
|
* The name of the class is not mentioned here, but will be in the generated factory function name
|
|
12765
12790
|
* and thus in the stack trace.
|
|
12766
12791
|
*
|
|
@@ -13428,7 +13453,7 @@ export declare function ɵɵpropertyInterpolate8(propName: string, prefix: strin
|
|
|
13428
13453
|
* be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
|
|
13429
13454
|
*
|
|
13430
13455
|
* @param propName The name of the property to update.
|
|
13431
|
-
* @param values The collection of values and the strings
|
|
13456
|
+
* @param values The collection of values and the strings in between those values, beginning with a
|
|
13432
13457
|
* string prefix and ending with a string suffix.
|
|
13433
13458
|
* (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
|
|
13434
13459
|
* @param sanitizer An optional sanitizer function
|
|
@@ -13867,7 +13892,7 @@ export declare function ɵɵsetNgModuleScope(type: any, scope: {
|
|
|
13867
13892
|
/**
|
|
13868
13893
|
* A feature that acts as a setup code for the {@link StandaloneService}.
|
|
13869
13894
|
*
|
|
13870
|
-
* The most important
|
|
13895
|
+
* The most important responsibility of this feature is to expose the "getStandaloneInjector"
|
|
13871
13896
|
* function (an entry points to a standalone injector creation) on a component definition object. We
|
|
13872
13897
|
* go through the features infrastructure to make sure that the standalone injector creation logic
|
|
13873
13898
|
* is tree-shakable and not included in applications that don't use standalone components.
|
package/package.json
CHANGED
|
@@ -104,7 +104,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
104
104
|
var _a, _b;
|
|
105
105
|
const symbol = typeChecker.getSymbolAtLocation(node);
|
|
106
106
|
// We check symbol.declarations because we actually care about the name at the declaration site,
|
|
107
|
-
// not the usage site. These could be different in the case of
|
|
107
|
+
// not the usage site. These could be different in the case of overridden constructors.
|
|
108
108
|
if (!symbol || symbol.declarations === undefined || !symbol.declarations.length)
|
|
109
109
|
return false;
|
|
110
110
|
const decl = symbol.declarations[0];
|
|
@@ -131,4 +131,4 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
131
131
|
return false;
|
|
132
132
|
}
|
|
133
133
|
});
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3R5cGVkLWZvcm1zL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsNERBQTRCO0lBRTVCLCtFQUFrRTtJQUVyRCxRQUFBLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUUsUUFBQSxXQUFXLEdBQUcsYUFBYSxDQUFDO0lBQzVCLFFBQUEsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUMxQixRQUFBLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQztJQVN0QyxTQUFnQixXQUFXLENBQ3ZCLFVBQXlCLEVBQUUsV0FBMkIsRUFBRSxPQUFrQjtRQUM1RSxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkMsMERBQTBEO1FBQzFELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUVqQyxtREFBbUQ7UUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLHNGQUFzRjtnQkFDdEYsOENBQThDO2dCQUM5QyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0QjtZQUNELEtB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UUFDaEcsMkJBQTJCO1FBQzNCLElBQUksUUFBUSxLQUFLLG1CQUFXLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUUzRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldEltcG9ydFNwZWNpZmllcn0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9pbXBvcnRzJztcblxuZXhwb3J0IGNvbnN0IGNsYXNzZXMgPSBuZXcgU2V0KFsnRm9ybUFycmF5JywgJ0Zvcm1CdWlsZGVyJywgJ0Zvcm1Db250cm9sJywgJ0Zvcm1Hcm91cCddKTtcbmV4cG9ydCBjb25zdCBmb3JtQ29udHJvbCA9ICdGb3JtQ29udHJvbCc7XG5leHBvcnQgY29uc3QgdW50eXBlZFByZWZpeCA9ICdVbnR5cGVkJztcbmV4cG9ydCBjb25zdCBmb3JtcyA9ICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0YWJsZU5vZGUge1xuICBub2RlOiB0cy5Ob2RlO1xuICBpbXBvcnROYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIHJld3JpdGVGbiA9IChzdGFydFBvczogbnVtYmVyLCBvcmlnTGVuZ3RoOiBudW1iZXIsIHRleHQ6IHN0cmluZykgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIG1pZ3JhdGVGaWxlKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgcmV3cml0ZTogcmV3cml0ZUZuKSB7XG4gIGNvbnN0IGltcG9ydHMgPSBnZXRJbXBvcnRzKHNvdXJjZUZpbGUpO1xuXG4gIC8vIElmIG5vIHJlbGV2YW50IGNsYXNzZXMgYXJlIGltcG9ydGVkLCB3ZSBjYW4gZXhpdCBlYXJseS5cbiAgaWYgKGltcG9ydHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgLy8gRm9yIGVhY2ggY29udHJvbCBjbGFzcywgbWlncmF0ZSBhbGwgb2YgaXRzIHVzZXMuXG4gIGZvciAobGV0IGkgPSBpbXBvcnRzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBpbXAgPSBpbXBvcnRzW2ldO1xuICAgIGNvbnN0IHVzYWdlcyA9IGdldFVzYWdlcyhzb3VyY2VGaWxlLCB0eXBlQ2hlY2tlciwgaW1wKTtcbiAgICBpZiAodXNhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gU2luY2UgdGhlcmUgYXJlIG5vIHVzYWdlcyBvZiB0aGlzIGNsYXNzIHdlIG5lZWQgdG8gbWlncmF0ZSBpdCwgd2Ugc2hvdWxkIGNvbXBsZXRlbHlcbiAgICAgIC8vIHNraXAgaXQgZm9yIHRoZSBzdWJzZXF1ZW50IG1pZ3JhdGlvbiBzdGVwcy5cbiAgICAgIGltcG9ydHMuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHVzYWdlIG9mIHVzYWdlcykge1xuICAgICAgY29uc3QgbmV3TmFtZSA9IGdldFVudHlwZWRWZXJzaW9uT2ZJbXBvcnRPck5hbWUodXNhZ2UuaW1wb3J0TmFtZSk7XG4gICAgICBpZiAobmV3TmFtZSA9PT0gbnVsbCkge1xuICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgVHlwZWQgZm9ybXMgbWlncmF0aW9uIGVycm9yOiB1bmtub3duIHJlcGxhY2VtZW50IGZvciB1c2FnZSAke3VzYWdlLm5vZGUuZ2V0VGV4dCgpfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJld3JpdGUodXNhZ2Uubm9kZS5nZXRTdGFydCgpLCB1c2FnZS5ub2RlLmdldFdpZHRoKCksIG5ld05hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBlYWNoIGltcG9ydGVkIGNvbnRyb2wgY2xhc3MsIG1pZ3JhdGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdXB0eXBlZCBpbXBvcnQuXG4gIGZvciAoY29uc3QgaW1wIG9mIGltcG9ydHMpIHtcbiAgICBjb25zdCB1bnR5cGVkQ2xhc3MgPSBnZXRVbnR5cGVkVmVyc2lvbk9mSW1wb3J0T3JOYW1lKGltcC5nZXRUZXh0KCkpO1xuICAgIGlmICh1bnR5cGVkQ2xhc3MgPT09IG51bGwpIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFR5cGVkIGZvcm1zIG1pZ3JhdGlvbiBlcnJvcjogdW5rbm93biB1bnR5cGVkIHZlcnNpb24gb2YgaW1wb3J0ICR7aW1wLmdldFRleHQoKX1gKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZ2V0SW1wb3J0U3BlY2lmaWVyKHNvdXJjZUZpbGUsIGZvcm1zLCB1bnR5cGVkQ2xhc3MpKSB7XG4gICAgICAvLyBJbiBvcmRlciB0byBtYWtlIHRoZSBtaWdyYXRpb24gaWRlbXBvdGVudCwgd2UgbXVzdCBjaGVjayB3aGV0aGVyIHRoZSB1bnR5cGVkIHZlcnNpb24gb2YgdGhlXG4gICAgICAvLyBjbGFzcyBpcyBhbHJlYWR5IHByZXNlbnQuIElmIHByZXNlbnQsIGltbWVkaWF0ZWx5IGNvbnRpbnVlLlxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJld3JpdGUoaW1wLmdldFN0YXJ0KCksIGltcC5nZXRXaWR0aCgpLCB1bnR5cGVkQ2xhc3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEltcG9ydHMoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IHRzLkltcG9ydFNwZWNpZmllcltdIHtcbiAgbGV0IGltcG9ydHM6IHRzLkltcG9ydFNwZWNpZmllcltdID0gW107XG4gIGZvciAoY29uc3QgY2Mgb2YgY2xhc3Nlcykge1xuICAgIGNvbnN0IHNwZWNpZmllciA9IGdldEltcG9ydFNwZWNpZmllcihzb3VyY2VGaWxlLCBmb3JtcywgY2MpO1xuICAgIGlmICghc3BlY2lmaWVyKSBjb250aW51ZTtcbiAgICBpbXBvcnRzLnB1c2goc3BlY2lmaWVyKTtcbiAgfVxuICByZXR1cm4gaW1wb3J0cztcbn1cblxuZnVuY3Rpb24gZ2V0VW50eXBlZFZlcnNpb25PZkltcG9ydE9yTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmd8bnVsbCB7XG4gIGZvciAoY29uc3QgY2Mgb2YgY2xhc3Nlcykge1xuICAgIGlmIChuYW1lLmluY2x1ZGVzKGNjKSkge1xuICAgICAgcmV0dXJuIGAke3VudHlwZWRQcmVmaXh9JHtjY31gO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VXNhZ2VzKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgICBpbXBvcnRTcGVjaWZpZXI6IHRzLkltcG9ydFNwZWNpZmllcik6IE1pZ3JhdGFibGVOb2RlW10ge1xuICBjb25zdCB1c2FnZXM6IE1pZ3JhdGFibGVOb2RlW10gPSBbXTtcbiAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICBpZiAodHMuaXNJbXBvcnRTcGVjaWZpZXIobm9kZSkpIHtcbiAgICAgIC8vIFNraXAgdGhpcyBub2RlIGFuZCBhbGwgb2YgaXRzIGNoaWxkcmVuOyBpbXBvcnRzIGFyZSBhIHNwZWNpYWwgY2FzZS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSAmJiBpc1VzYWdlT2ZGb3Jtc0ltcG9ydCh0eXBlQ2hlY2tlciwgbm9kZSwgaW1wb3J0U3BlY2lmaWVyKSkge1xuICAgICAgdXNhZ2VzLnB1c2goe25vZGUsIGltcG9ydE5hbWU6IGltcG9ydFNwZWNpZmllci5nZXRUZXh0KCl9KTtcbiAgICB9XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSk7XG4gIH07XG4gIHRzLmZvckVhY2hDaGlsZChzb3VyY2VGaWxlLCB2aXNpdE5vZGUpO1xuICByZXR1cm4gdXNhZ2VzO1xufVxuXG5mdW5jdGlvbiBpc1VzYWdlT2ZGb3Jtc0ltcG9ydChcbiAgICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIG5vZGU6IHRzLklkZW50aWZpZXIsXG4gICAgaW1wb3J0U3BlY2lmaWVyOiB0cy5JbXBvcnRTcGVjaWZpZXIpOiBib29sZWFuIHtcbiAgY29uc3Qgc3ltYm9sID0gdHlwZUNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihub2RlKTtcblxuICAvLyBXZSBjaGVjayBzeW1ib2wuZGVjbGFyYXRpb25zIGJlY2F1c2Ugd2UgYWN0dWFsbHkgY2FyZSBhYm91dCB0aGUgbmFtZSBhdCB0aGUgZGVjbGFyYXRpb24gc2l0ZSxcbiAgLy8gbm90IHRoZSB1c2FnZSBzaXRlLiBUaGVzZSBjb3VsZCBiZSBkaWZmZXJlbnQgaW4gdGhlIGNhc2Ugb2Ygb3ZlcnJpZGVuIGNvbnN0cnVjdG9ycy5cbiAgaWYgKCFzeW1ib2wgfHwgc3ltYm9sLmRlY2xhcmF0aW9ucyA9PT0gdW5kZWZpbmVkIHx8ICFzeW1ib2wuZGVjbGFyYXRpb25zLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGRlY2wgPSBzeW1ib2wuZGVjbGFyYXRpb25zWzBdO1xuICBpZiAoIXRzLmlzSW1wb3J0U3BlY2lmaWVyKGRlY2wpKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQXMgcGVyIGB0eXBlc2NyaXB0L2ltcG9ydHMudHNgLCB3ZSBtdXN0IHdhbGsgdXAgdGhlIHRyZWUgdG8gZmluZCB0aGUgZW5jbG9zaW5nIGltcG9ydFxuICAvLyBkZWNsYXJhdGlvbi4gRm9yIHJlYXNvbnMgc3BlY2lmaWMgdG8gdGhlIFRTIEFTVCwgdGhpcyBpcyBhbHdheXMgMyBsZXZlbHMgdXAgZnJvbSBhbiBpbXBvcnRcbiAgLy8gc3BlY2lmaWVyIG5vZGUuXG4gIGNvbnN0IGltcG9ydERlY2wgPSBkZWNsLnBhcmVudC5wYXJlbnQucGFyZW50O1xuICBpZiAoIXRzLmlzU3RyaW5nTGl0ZXJhbChpbXBvcnREZWNsLm1vZHVsZVNwZWNpZmllcikpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBpbXBvcnROYW1lID0gdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24oaW1wb3J0U3BlY2lmaWVyKT8uZ2V0U3ltYm9sKCk/LmdldE5hbWUoKTtcbiAgaWYgKCFpbXBvcnROYW1lKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSGFuZGxlcyBhbGlhc2VkIGltcG9ydHM6IGUuZy4gXCJpbXBvcnQge0NvbXBvbmVudCBhcyBteUNvbXB9IGZyb20gLi4uXCI7XG4gIGNvbnN0IGRlY2xOYW1lID0gZGVjbC5wcm9wZXJ0eU5hbWUgPyBkZWNsLnByb3BlcnR5TmFtZS50ZXh0IDogZGVjbC5uYW1lLnRleHQ7XG5cbiAgaWYgKGltcG9ydE5hbWUgPT09IGRlY2xOYW1lKSByZXR1cm4gdHJ1ZTtcblxuICAvLyBJbiB0aGUgY2FzZSBvZiBGb3JtQ29udHJvbCdzIG92ZXJyaWRkZW4gZXhwb3J0ZWQgY29uc3RydWN0b3IsIHRoZSB2YWx1ZSBuYW1lIGFuZCBkZWNsYXJhdGlvblxuICAvLyBuYW1lIGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZS4gRm9yIG91ciBwdXJwb3NlcywgaXQncyBlbm91Z2ggdG8gY2hlY2sgd2hldGhlciB0aGUgbGF0dGVyIGlzIGFcbiAgLy8gc3Vic3RyaW5nIG9mIHRoZSBmb3JtZXIuXG4gIGlmIChkZWNsTmFtZSA9PT0gZm9ybUNvbnRyb2wgJiYgaW1wb3J0TmFtZS5pbmNsdWRlcyhkZWNsTmFtZSkpIHJldHVybiB0cnVlO1xuXG4gIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3R5cGVkLWZvcm1zL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsNERBQTRCO0lBRTVCLCtFQUFrRTtJQUVyRCxRQUFBLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUUsUUFBQSxXQUFXLEdBQUcsYUFBYSxDQUFDO0lBQzVCLFFBQUEsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUMxQixRQUFBLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQztJQVN0QyxTQUFnQixXQUFXLENBQ3ZCLFVBQXlCLEVBQUUsV0FBMkIsRUFBRSxPQUFrQjtRQUM1RSxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkMsMERBQTBEO1FBQzFELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUVqQyxtREFBbUQ7UUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLHNGQUFzRjtnQkFDdEYsOENBQThDO2dCQUM5QyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0QjtZQUNELEtB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UUFDaEcsMkJBQTJCO1FBQzNCLElBQUksUUFBUSxLQUFLLG1CQUFXLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUUzRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldEltcG9ydFNwZWNpZmllcn0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9pbXBvcnRzJztcblxuZXhwb3J0IGNvbnN0IGNsYXNzZXMgPSBuZXcgU2V0KFsnRm9ybUFycmF5JywgJ0Zvcm1CdWlsZGVyJywgJ0Zvcm1Db250cm9sJywgJ0Zvcm1Hcm91cCddKTtcbmV4cG9ydCBjb25zdCBmb3JtQ29udHJvbCA9ICdGb3JtQ29udHJvbCc7XG5leHBvcnQgY29uc3QgdW50eXBlZFByZWZpeCA9ICdVbnR5cGVkJztcbmV4cG9ydCBjb25zdCBmb3JtcyA9ICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0YWJsZU5vZGUge1xuICBub2RlOiB0cy5Ob2RlO1xuICBpbXBvcnROYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIHJld3JpdGVGbiA9IChzdGFydFBvczogbnVtYmVyLCBvcmlnTGVuZ3RoOiBudW1iZXIsIHRleHQ6IHN0cmluZykgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIG1pZ3JhdGVGaWxlKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgcmV3cml0ZTogcmV3cml0ZUZuKSB7XG4gIGNvbnN0IGltcG9ydHMgPSBnZXRJbXBvcnRzKHNvdXJjZUZpbGUpO1xuXG4gIC8vIElmIG5vIHJlbGV2YW50IGNsYXNzZXMgYXJlIGltcG9ydGVkLCB3ZSBjYW4gZXhpdCBlYXJseS5cbiAgaWYgKGltcG9ydHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgLy8gRm9yIGVhY2ggY29udHJvbCBjbGFzcywgbWlncmF0ZSBhbGwgb2YgaXRzIHVzZXMuXG4gIGZvciAobGV0IGkgPSBpbXBvcnRzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBpbXAgPSBpbXBvcnRzW2ldO1xuICAgIGNvbnN0IHVzYWdlcyA9IGdldFVzYWdlcyhzb3VyY2VGaWxlLCB0eXBlQ2hlY2tlciwgaW1wKTtcbiAgICBpZiAodXNhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gU2luY2UgdGhlcmUgYXJlIG5vIHVzYWdlcyBvZiB0aGlzIGNsYXNzIHdlIG5lZWQgdG8gbWlncmF0ZSBpdCwgd2Ugc2hvdWxkIGNvbXBsZXRlbHlcbiAgICAgIC8vIHNraXAgaXQgZm9yIHRoZSBzdWJzZXF1ZW50IG1pZ3JhdGlvbiBzdGVwcy5cbiAgICAgIGltcG9ydHMuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHVzYWdlIG9mIHVzYWdlcykge1xuICAgICAgY29uc3QgbmV3TmFtZSA9IGdldFVudHlwZWRWZXJzaW9uT2ZJbXBvcnRPck5hbWUodXNhZ2UuaW1wb3J0TmFtZSk7XG4gICAgICBpZiAobmV3TmFtZSA9PT0gbnVsbCkge1xuICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgVHlwZWQgZm9ybXMgbWlncmF0aW9uIGVycm9yOiB1bmtub3duIHJlcGxhY2VtZW50IGZvciB1c2FnZSAke3VzYWdlLm5vZGUuZ2V0VGV4dCgpfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJld3JpdGUodXNhZ2Uubm9kZS5nZXRTdGFydCgpLCB1c2FnZS5ub2RlLmdldFdpZHRoKCksIG5ld05hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBlYWNoIGltcG9ydGVkIGNvbnRyb2wgY2xhc3MsIG1pZ3JhdGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdXB0eXBlZCBpbXBvcnQuXG4gIGZvciAoY29uc3QgaW1wIG9mIGltcG9ydHMpIHtcbiAgICBjb25zdCB1bnR5cGVkQ2xhc3MgPSBnZXRVbnR5cGVkVmVyc2lvbk9mSW1wb3J0T3JOYW1lKGltcC5nZXRUZXh0KCkpO1xuICAgIGlmICh1bnR5cGVkQ2xhc3MgPT09IG51bGwpIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFR5cGVkIGZvcm1zIG1pZ3JhdGlvbiBlcnJvcjogdW5rbm93biB1bnR5cGVkIHZlcnNpb24gb2YgaW1wb3J0ICR7aW1wLmdldFRleHQoKX1gKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZ2V0SW1wb3J0U3BlY2lmaWVyKHNvdXJjZUZpbGUsIGZvcm1zLCB1bnR5cGVkQ2xhc3MpKSB7XG4gICAgICAvLyBJbiBvcmRlciB0byBtYWtlIHRoZSBtaWdyYXRpb24gaWRlbXBvdGVudCwgd2UgbXVzdCBjaGVjayB3aGV0aGVyIHRoZSB1bnR5cGVkIHZlcnNpb24gb2YgdGhlXG4gICAgICAvLyBjbGFzcyBpcyBhbHJlYWR5IHByZXNlbnQuIElmIHByZXNlbnQsIGltbWVkaWF0ZWx5IGNvbnRpbnVlLlxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJld3JpdGUoaW1wLmdldFN0YXJ0KCksIGltcC5nZXRXaWR0aCgpLCB1bnR5cGVkQ2xhc3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEltcG9ydHMoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IHRzLkltcG9ydFNwZWNpZmllcltdIHtcbiAgbGV0IGltcG9ydHM6IHRzLkltcG9ydFNwZWNpZmllcltdID0gW107XG4gIGZvciAoY29uc3QgY2Mgb2YgY2xhc3Nlcykge1xuICAgIGNvbnN0IHNwZWNpZmllciA9IGdldEltcG9ydFNwZWNpZmllcihzb3VyY2VGaWxlLCBmb3JtcywgY2MpO1xuICAgIGlmICghc3BlY2lmaWVyKSBjb250aW51ZTtcbiAgICBpbXBvcnRzLnB1c2goc3BlY2lmaWVyKTtcbiAgfVxuICByZXR1cm4gaW1wb3J0cztcbn1cblxuZnVuY3Rpb24gZ2V0VW50eXBlZFZlcnNpb25PZkltcG9ydE9yTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmd8bnVsbCB7XG4gIGZvciAoY29uc3QgY2Mgb2YgY2xhc3Nlcykge1xuICAgIGlmIChuYW1lLmluY2x1ZGVzKGNjKSkge1xuICAgICAgcmV0dXJuIGAke3VudHlwZWRQcmVmaXh9JHtjY31gO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VXNhZ2VzKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgICBpbXBvcnRTcGVjaWZpZXI6IHRzLkltcG9ydFNwZWNpZmllcik6IE1pZ3JhdGFibGVOb2RlW10ge1xuICBjb25zdCB1c2FnZXM6IE1pZ3JhdGFibGVOb2RlW10gPSBbXTtcbiAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICBpZiAodHMuaXNJbXBvcnRTcGVjaWZpZXIobm9kZSkpIHtcbiAgICAgIC8vIFNraXAgdGhpcyBub2RlIGFuZCBhbGwgb2YgaXRzIGNoaWxkcmVuOyBpbXBvcnRzIGFyZSBhIHNwZWNpYWwgY2FzZS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSAmJiBpc1VzYWdlT2ZGb3Jtc0ltcG9ydCh0eXBlQ2hlY2tlciwgbm9kZSwgaW1wb3J0U3BlY2lmaWVyKSkge1xuICAgICAgdXNhZ2VzLnB1c2goe25vZGUsIGltcG9ydE5hbWU6IGltcG9ydFNwZWNpZmllci5nZXRUZXh0KCl9KTtcbiAgICB9XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSk7XG4gIH07XG4gIHRzLmZvckVhY2hDaGlsZChzb3VyY2VGaWxlLCB2aXNpdE5vZGUpO1xuICByZXR1cm4gdXNhZ2VzO1xufVxuXG5mdW5jdGlvbiBpc1VzYWdlT2ZGb3Jtc0ltcG9ydChcbiAgICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIG5vZGU6IHRzLklkZW50aWZpZXIsXG4gICAgaW1wb3J0U3BlY2lmaWVyOiB0cy5JbXBvcnRTcGVjaWZpZXIpOiBib29sZWFuIHtcbiAgY29uc3Qgc3ltYm9sID0gdHlwZUNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihub2RlKTtcblxuICAvLyBXZSBjaGVjayBzeW1ib2wuZGVjbGFyYXRpb25zIGJlY2F1c2Ugd2UgYWN0dWFsbHkgY2FyZSBhYm91dCB0aGUgbmFtZSBhdCB0aGUgZGVjbGFyYXRpb24gc2l0ZSxcbiAgLy8gbm90IHRoZSB1c2FnZSBzaXRlLiBUaGVzZSBjb3VsZCBiZSBkaWZmZXJlbnQgaW4gdGhlIGNhc2Ugb2Ygb3ZlcnJpZGRlbiBjb25zdHJ1Y3RvcnMuXG4gIGlmICghc3ltYm9sIHx8IHN5bWJvbC5kZWNsYXJhdGlvbnMgPT09IHVuZGVmaW5lZCB8fCAhc3ltYm9sLmRlY2xhcmF0aW9ucy5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBkZWNsID0gc3ltYm9sLmRlY2xhcmF0aW9uc1swXTtcbiAgaWYgKCF0cy5pc0ltcG9ydFNwZWNpZmllcihkZWNsKSkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIEFzIHBlciBgdHlwZXNjcmlwdC9pbXBvcnRzLnRzYCwgd2UgbXVzdCB3YWxrIHVwIHRoZSB0cmVlIHRvIGZpbmQgdGhlIGVuY2xvc2luZyBpbXBvcnRcbiAgLy8gZGVjbGFyYXRpb24uIEZvciByZWFzb25zIHNwZWNpZmljIHRvIHRoZSBUUyBBU1QsIHRoaXMgaXMgYWx3YXlzIDMgbGV2ZWxzIHVwIGZyb20gYW4gaW1wb3J0XG4gIC8vIHNwZWNpZmllciBub2RlLlxuICBjb25zdCBpbXBvcnREZWNsID0gZGVjbC5wYXJlbnQucGFyZW50LnBhcmVudDtcbiAgaWYgKCF0cy5pc1N0cmluZ0xpdGVyYWwoaW1wb3J0RGVjbC5tb2R1bGVTcGVjaWZpZXIpKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgaW1wb3J0TmFtZSA9IHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGltcG9ydFNwZWNpZmllcik/LmdldFN5bWJvbCgpPy5nZXROYW1lKCk7XG4gIGlmICghaW1wb3J0TmFtZSkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIEhhbmRsZXMgYWxpYXNlZCBpbXBvcnRzOiBlLmcuIFwiaW1wb3J0IHtDb21wb25lbnQgYXMgbXlDb21wfSBmcm9tIC4uLlwiO1xuICBjb25zdCBkZWNsTmFtZSA9IGRlY2wucHJvcGVydHlOYW1lID8gZGVjbC5wcm9wZXJ0eU5hbWUudGV4dCA6IGRlY2wubmFtZS50ZXh0O1xuXG4gIGlmIChpbXBvcnROYW1lID09PSBkZWNsTmFtZSkgcmV0dXJuIHRydWU7XG5cbiAgLy8gSW4gdGhlIGNhc2Ugb2YgRm9ybUNvbnRyb2wncyBvdmVycmlkZGVuIGV4cG9ydGVkIGNvbnN0cnVjdG9yLCB0aGUgdmFsdWUgbmFtZSBhbmQgZGVjbGFyYXRpb25cbiAgLy8gbmFtZSBhcmUgbm90IGV4YWN0bHkgdGhlIHNhbWUuIEZvciBvdXIgcHVycG9zZXMsIGl0J3MgZW5vdWdoIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGxhdHRlciBpcyBhXG4gIC8vIHN1YnN0cmluZyBvZiB0aGUgZm9ybWVyLlxuICBpZiAoZGVjbE5hbWUgPT09IGZvcm1Db250cm9sICYmIGltcG9ydE5hbWUuaW5jbHVkZXMoZGVjbE5hbWUpKSByZXR1cm4gdHJ1ZTtcblxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0=
|