@angular/core 14.0.0-next.1 → 14.0.0-next.2
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/core.d.ts +48 -74
- package/esm2020/src/application_init.mjs +1 -1
- package/esm2020/src/application_ref.mjs +3 -22
- package/esm2020/src/change_detection/change_detection.mjs +2 -3
- package/esm2020/src/compiler/compiler_facade_interface.mjs +1 -1
- package/esm2020/src/core_private_export.mjs +2 -1
- package/esm2020/src/debug/debug_node.mjs +128 -45
- package/esm2020/src/reflection/reflector.mjs +1 -1
- package/esm2020/src/render3/context_discovery.mjs +1 -1
- package/esm2020/src/render3/jit/directive.mjs +5 -2
- package/esm2020/src/render3/jit/pipe.mjs +5 -2
- package/esm2020/src/util/coercion.mjs +12 -0
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/testing/src/logger.mjs +3 -3
- package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
- package/fesm2015/core.mjs +152 -70
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/testing.mjs +1 -1
- package/fesm2020/core.mjs +152 -70
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/testing.mjs +1 -1
- package/package.json +1 -1
- package/testing/testing.d.ts +1 -1
package/core.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.0.0-next.
|
|
2
|
+
* @license Angular v14.0.0-next.2
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -1702,13 +1702,18 @@ export declare const CUSTOM_ELEMENTS_SCHEMA: SchemaMetadata;
|
|
|
1702
1702
|
* @see [Basics of testing components](guide/testing-components-basics)
|
|
1703
1703
|
* @see [Testing utility APIs](guide/testing-utility-apis)
|
|
1704
1704
|
*/
|
|
1705
|
-
export declare
|
|
1705
|
+
export declare class DebugElement extends DebugNode {
|
|
1706
|
+
constructor(nativeNode: Element);
|
|
1707
|
+
/**
|
|
1708
|
+
* The underlying DOM element at the root of the component.
|
|
1709
|
+
*/
|
|
1710
|
+
get nativeElement(): any;
|
|
1706
1711
|
/**
|
|
1707
1712
|
* The element tag name, if it is an element.
|
|
1708
1713
|
*/
|
|
1709
|
-
|
|
1714
|
+
get name(): string;
|
|
1710
1715
|
/**
|
|
1711
|
-
*
|
|
1716
|
+
* Gets a map of property names to property values for an element.
|
|
1712
1717
|
*
|
|
1713
1718
|
* This map includes:
|
|
1714
1719
|
* - Regular property bindings (e.g. `[id]="id"`)
|
|
@@ -1719,13 +1724,23 @@ export declare interface DebugElement extends DebugNode {
|
|
|
1719
1724
|
* - input property bindings (e.g. `[myCustomInput]="value"`)
|
|
1720
1725
|
* - attribute bindings (e.g. `[attr.role]="menu"`)
|
|
1721
1726
|
*/
|
|
1722
|
-
|
|
1727
|
+
get properties(): {
|
|
1723
1728
|
[key: string]: any;
|
|
1724
1729
|
};
|
|
1725
1730
|
/**
|
|
1726
1731
|
* A map of attribute names to attribute values for an element.
|
|
1727
1732
|
*/
|
|
1728
|
-
|
|
1733
|
+
get attributes(): {
|
|
1734
|
+
[key: string]: string | null;
|
|
1735
|
+
};
|
|
1736
|
+
/**
|
|
1737
|
+
* The inline styles of the DOM element.
|
|
1738
|
+
*
|
|
1739
|
+
* Will be `null` if there is no `style` property on the underlying DOM element.
|
|
1740
|
+
*
|
|
1741
|
+
* @see [ElementCSSInlineStyle](https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style)
|
|
1742
|
+
*/
|
|
1743
|
+
get styles(): {
|
|
1729
1744
|
[key: string]: string | null;
|
|
1730
1745
|
};
|
|
1731
1746
|
/**
|
|
@@ -1738,33 +1753,19 @@ export declare interface DebugElement extends DebugNode {
|
|
|
1738
1753
|
*
|
|
1739
1754
|
* @see [Element.className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className)
|
|
1740
1755
|
*/
|
|
1741
|
-
|
|
1756
|
+
get classes(): {
|
|
1742
1757
|
[key: string]: boolean;
|
|
1743
1758
|
};
|
|
1744
|
-
/**
|
|
1745
|
-
* The inline styles of the DOM element.
|
|
1746
|
-
*
|
|
1747
|
-
* Will be `null` if there is no `style` property on the underlying DOM element.
|
|
1748
|
-
*
|
|
1749
|
-
* @see [ElementCSSInlineStyle](https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style)
|
|
1750
|
-
*/
|
|
1751
|
-
readonly styles: {
|
|
1752
|
-
[key: string]: string | null;
|
|
1753
|
-
};
|
|
1754
1759
|
/**
|
|
1755
1760
|
* The `childNodes` of the DOM element as a `DebugNode` array.
|
|
1756
1761
|
*
|
|
1757
1762
|
* @see [Node.childNodes](https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes)
|
|
1758
1763
|
*/
|
|
1759
|
-
|
|
1760
|
-
/**
|
|
1761
|
-
* The underlying DOM element at the root of the component.
|
|
1762
|
-
*/
|
|
1763
|
-
readonly nativeElement: any;
|
|
1764
|
+
get childNodes(): DebugNode[];
|
|
1764
1765
|
/**
|
|
1765
1766
|
* The immediate `DebugElement` children. Walk the tree by descending through `children`.
|
|
1766
1767
|
*/
|
|
1767
|
-
|
|
1768
|
+
get children(): DebugElement[];
|
|
1768
1769
|
/**
|
|
1769
1770
|
* @returns the first `DebugElement` that matches the predicate at any depth in the subtree.
|
|
1770
1771
|
*/
|
|
@@ -1792,13 +1793,6 @@ export declare interface DebugElement extends DebugNode {
|
|
|
1792
1793
|
triggerEventHandler(eventName: string, eventObj: any): void;
|
|
1793
1794
|
}
|
|
1794
1795
|
|
|
1795
|
-
/**
|
|
1796
|
-
* @publicApi
|
|
1797
|
-
*/
|
|
1798
|
-
export declare const DebugElement: {
|
|
1799
|
-
new (...args: any[]): DebugElement;
|
|
1800
|
-
};
|
|
1801
|
-
|
|
1802
1796
|
/**
|
|
1803
1797
|
* @publicApi
|
|
1804
1798
|
*/
|
|
@@ -1811,28 +1805,24 @@ export declare class DebugEventListener {
|
|
|
1811
1805
|
/**
|
|
1812
1806
|
* @publicApi
|
|
1813
1807
|
*/
|
|
1814
|
-
export declare
|
|
1808
|
+
export declare class DebugNode {
|
|
1815
1809
|
/**
|
|
1816
|
-
* The
|
|
1817
|
-
* properties.
|
|
1810
|
+
* The underlying DOM node.
|
|
1818
1811
|
*/
|
|
1819
|
-
readonly
|
|
1812
|
+
readonly nativeNode: any;
|
|
1813
|
+
constructor(nativeNode: Node);
|
|
1820
1814
|
/**
|
|
1821
1815
|
* The `DebugElement` parent. Will be `null` if this is the root element.
|
|
1822
1816
|
*/
|
|
1823
|
-
|
|
1824
|
-
/**
|
|
1825
|
-
* The underlying DOM node.
|
|
1826
|
-
*/
|
|
1827
|
-
readonly nativeNode: any;
|
|
1817
|
+
get parent(): DebugElement | null;
|
|
1828
1818
|
/**
|
|
1829
1819
|
* The host dependency injector. For example, the root element's component instance injector.
|
|
1830
1820
|
*/
|
|
1831
|
-
|
|
1821
|
+
get injector(): Injector;
|
|
1832
1822
|
/**
|
|
1833
1823
|
* The element's own component instance, if it has one.
|
|
1834
1824
|
*/
|
|
1835
|
-
|
|
1825
|
+
get componentInstance(): any;
|
|
1836
1826
|
/**
|
|
1837
1827
|
* An object that provides parent context for this element. Often an ancestor component instance
|
|
1838
1828
|
* that governs this element.
|
|
@@ -1841,28 +1831,26 @@ export declare interface DebugNode {
|
|
|
1841
1831
|
* property is the value of the row instance value. For example, the `hero` in `*ngFor="let hero
|
|
1842
1832
|
* of heroes"`.
|
|
1843
1833
|
*/
|
|
1844
|
-
|
|
1834
|
+
get context(): any;
|
|
1835
|
+
/**
|
|
1836
|
+
* The callbacks attached to the component's @Output properties and/or the element's event
|
|
1837
|
+
* properties.
|
|
1838
|
+
*/
|
|
1839
|
+
get listeners(): DebugEventListener[];
|
|
1845
1840
|
/**
|
|
1846
1841
|
* Dictionary of objects associated with template local variables (e.g. #foo), keyed by the local
|
|
1847
1842
|
* variable name.
|
|
1848
1843
|
*/
|
|
1849
|
-
|
|
1844
|
+
get references(): {
|
|
1850
1845
|
[key: string]: any;
|
|
1851
1846
|
};
|
|
1852
1847
|
/**
|
|
1853
1848
|
* This component's injector lookup tokens. Includes the component itself plus the tokens that the
|
|
1854
1849
|
* component lists in its providers metadata.
|
|
1855
1850
|
*/
|
|
1856
|
-
|
|
1851
|
+
get providerTokens(): any[];
|
|
1857
1852
|
}
|
|
1858
1853
|
|
|
1859
|
-
/**
|
|
1860
|
-
* @publicApi
|
|
1861
|
-
*/
|
|
1862
|
-
export declare const DebugNode: {
|
|
1863
|
-
new (...args: any[]): DebugNode;
|
|
1864
|
-
};
|
|
1865
|
-
|
|
1866
1854
|
/**
|
|
1867
1855
|
* A logical node which comprise into `LView`s.
|
|
1868
1856
|
*
|
|
@@ -2779,7 +2767,7 @@ export declare interface ForwardRefFn {
|
|
|
2779
2767
|
/**
|
|
2780
2768
|
* @publicApi
|
|
2781
2769
|
*/
|
|
2782
|
-
declare
|
|
2770
|
+
declare function getDebugNode(nativeNode: any): DebugNode | null;
|
|
2783
2771
|
export { getDebugNode }
|
|
2784
2772
|
export { getDebugNode as ɵgetDebugNode }
|
|
2785
2773
|
|
|
@@ -5592,33 +5580,14 @@ export declare class PlatformRef {
|
|
|
5592
5580
|
private _destroyListeners;
|
|
5593
5581
|
private _destroyed;
|
|
5594
5582
|
/**
|
|
5595
|
-
* Creates an instance of an `@NgModule` for the given platform
|
|
5596
|
-
*
|
|
5597
|
-
* @usageNotes
|
|
5598
|
-
*
|
|
5599
|
-
* The following example creates the NgModule for a browser platform.
|
|
5600
|
-
*
|
|
5601
|
-
* ```typescript
|
|
5602
|
-
* my_module.ts:
|
|
5603
|
-
*
|
|
5604
|
-
* @NgModule({
|
|
5605
|
-
* imports: [BrowserModule]
|
|
5606
|
-
* })
|
|
5607
|
-
* class MyModule {}
|
|
5608
|
-
*
|
|
5609
|
-
* main.ts:
|
|
5610
|
-
* import {MyModuleNgFactory} from './my_module.ngfactory';
|
|
5611
|
-
* import {platformBrowser} from '@angular/platform-browser';
|
|
5612
|
-
*
|
|
5613
|
-
* let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);
|
|
5614
|
-
* ```
|
|
5583
|
+
* Creates an instance of an `@NgModule` for the given platform.
|
|
5615
5584
|
*
|
|
5616
5585
|
* @deprecated Passing NgModule factories as the `PlatformRef.bootstrapModuleFactory` function
|
|
5617
5586
|
* argument is deprecated. Use the `PlatformRef.bootstrapModule` API instead.
|
|
5618
5587
|
*/
|
|
5619
5588
|
bootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>, options?: BootstrapOptions): Promise<NgModuleRef<M>>;
|
|
5620
5589
|
/**
|
|
5621
|
-
* Creates an instance of an `@NgModule` for a given platform
|
|
5590
|
+
* Creates an instance of an `@NgModule` for a given platform.
|
|
5622
5591
|
*
|
|
5623
5592
|
* @usageNotes
|
|
5624
5593
|
* ### Simple Example
|
|
@@ -6037,6 +6006,7 @@ declare interface R3DeclareDirectiveFacade {
|
|
|
6037
6006
|
exportAs?: string[];
|
|
6038
6007
|
usesInheritance?: boolean;
|
|
6039
6008
|
usesOnChanges?: boolean;
|
|
6009
|
+
isStandalone?: boolean;
|
|
6040
6010
|
}
|
|
6041
6011
|
|
|
6042
6012
|
declare interface R3DeclareFactoryFacade {
|
|
@@ -9464,6 +9434,10 @@ export declare enum ɵChangeDetectorStatus {
|
|
|
9464
9434
|
|
|
9465
9435
|
export declare function ɵclearResolutionOfComponentResourcesQueue(): Map<Type<any>, Component>;
|
|
9466
9436
|
|
|
9437
|
+
|
|
9438
|
+
/** Coerces a value (typically a string) to a boolean. */
|
|
9439
|
+
export declare function ɵcoerceToBoolean(value: unknown): boolean;
|
|
9440
|
+
|
|
9467
9441
|
/**
|
|
9468
9442
|
* Compile an Angular component according to its decorator metadata, and patch the resulting
|
|
9469
9443
|
* component def (ɵcmp) onto the component type.
|
|
@@ -9811,7 +9785,7 @@ export declare function ɵfindLocaleData(locale: string): any;
|
|
|
9811
9785
|
*/
|
|
9812
9786
|
export declare function ɵflushModuleScopingQueueAsMuchAsPossible(): void;
|
|
9813
9787
|
|
|
9814
|
-
export declare
|
|
9788
|
+
export declare function ɵgetDebugNodeR2(_nativeNode: any): DebugNode | null;
|
|
9815
9789
|
|
|
9816
9790
|
/**
|
|
9817
9791
|
* Retrieves directive instances associated with a given DOM node. Does not include
|
|
@@ -137,4 +137,4 @@ ApplicationInitStatus.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: Ap
|
|
|
137
137
|
}, {
|
|
138
138
|
type: Optional
|
|
139
139
|
}] }]; }, null); })();
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25faW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2FwcGxpY2F0aW9uX2luaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sYUFBYSxDQUFDOztBQUdqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUN4QixJQUFJLGNBQWMsQ0FDZCx5QkFBeUIsQ0FBQyxDQUFDO0FBRW5DOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDLFlBQWtFLFFBQ2M7UUFEZCxhQUFRLEdBQVIsUUFBUSxDQUNNO1FBUHhFLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFWixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBSTNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsT0FBTztTQUNSO1FBRUQsTUFBTSxpQkFBaUIsR0FBbUIsRUFBRSxDQUFDO1FBRTdDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNuQixJQUF3QixDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDdEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQ3pCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDcEM7cUJBQU0sSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQ25DLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7d0JBQ2hFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO29CQUMzRCxDQUFDLENBQUMsQ0FBQztvQkFDSCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztpQkFDN0M7YUFDRjtTQUNGO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQzthQUN6QixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsUUFBUSxFQUFFLENBQUM7UUFDYixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLFFBQVEsRUFBRSxDQUFDO1NBQ1o7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDOzswRkF0RFUscUJBQXFCLGNBT1osZUFBZTsyRUFQeEIscUJBQXFCLFdBQXJCLHFCQUFxQjtzRkFBckIscUJBQXFCO2NBRGpDLFVBQVU7O3NCQVFJLE1BQU07dUJBQUMsZUFBZTs7c0JBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsfSBmcm9tICcuL2RpJztcbmltcG9ydCB7aXNPYnNlcnZhYmxlLCBpc1Byb21pc2V9IGZyb20gJy4vdXRpbC9sYW5nJztcbmltcG9ydCB7bm9vcH0gZnJvbSAnLi91dGlsL25vb3AnO1xuXG5cbi8qKlxuICogQSBbREkgdG9rZW5dKGd1aWRlL2dsb3NzYXJ5I2RpLXRva2VuIFwiREkgdG9rZW4gZGVmaW5pdGlvblwiKSB0aGF0IHlvdSBjYW4gdXNlIHRvIHByb3ZpZGVcbiAqIG9uZSBvciBtb3JlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucy5cbiAqXG4gKiBUaGUgcHJvdmlkZWQgZnVuY3Rpb25zIGFyZSBpbmplY3RlZCBhdCBhcHBsaWNhdGlvbiBzdGFydHVwIGFuZCBleGVjdXRlZCBkdXJpbmdcbiAqIGFwcCBpbml0aWFsaXphdGlvbi4gSWYgYW55IG9mIHRoZXNlIGZ1bmN0aW9ucyByZXR1cm5zIGEgUHJvbWlzZSBvciBhbiBPYnNlcnZhYmxlLCBpbml0aWFsaXphdGlvblxuICogZG9lcyBub3QgY29tcGxldGUgdW50aWwgdGhlIFByb21pc2UgaXMgcmVzb2x2ZWQgb3IgdGhlIE9ic2VydmFibGUgaXMgY29tcGxldGVkLlxuICpcbiAqIFlvdSBjYW4sIGZvciBleGFtcGxlLCBjcmVhdGUgYSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgbG9hZHMgbGFuZ3VhZ2UgZGF0YVxuICogb3IgYW4gZXh0ZXJuYWwgY29uZmlndXJhdGlvbiwgYW5kIHByb3ZpZGUgdGhhdCBmdW5jdGlvbiB0byB0aGUgYEFQUF9JTklUSUFMSVpFUmAgdG9rZW4uXG4gKiBUaGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgZHVyaW5nIHRoZSBhcHBsaWNhdGlvbiBib290c3RyYXAgcHJvY2VzcyxcbiAqIGFuZCB0aGUgbmVlZGVkIGRhdGEgaXMgYXZhaWxhYmxlIG9uIHN0YXJ0dXAuXG4gKlxuICogQHNlZSBgQXBwbGljYXRpb25Jbml0U3RhdHVzYFxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGlsbHVzdHJhdGVzIGhvdyB0byBjb25maWd1cmUgYSBtdWx0aS1wcm92aWRlciB1c2luZyBgQVBQX0lOSVRJQUxJWkVSYCB0b2tlblxuICogYW5kIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGEgcHJvbWlzZS5cbiAqXG4gKiBgYGBcbiAqICBmdW5jdGlvbiBpbml0aWFsaXplQXBwKCk6IFByb21pc2U8YW55PiB7XG4gKiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICogICAgICAvLyBEbyBzb21lIGFzeW5jaHJvbm91cyBzdHVmZlxuICogICAgICByZXNvbHZlKCk7XG4gKiAgICB9KTtcbiAqICB9XG4gKlxuICogIEBOZ01vZHVsZSh7XG4gKiAgIGltcG9ydHM6IFtCcm93c2VyTW9kdWxlXSxcbiAqICAgZGVjbGFyYXRpb25zOiBbQXBwQ29tcG9uZW50XSxcbiAqICAgYm9vdHN0cmFwOiBbQXBwQ29tcG9uZW50XSxcbiAqICAgcHJvdmlkZXJzOiBbe1xuICogICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAqICAgICB1c2VGYWN0b3J5OiAoKSA9PiBpbml0aWFsaXplQXBwLFxuICogICAgIG11bHRpOiB0cnVlXG4gKiAgICB9XVxuICogICB9KVxuICogIGV4cG9ydCBjbGFzcyBBcHBNb2R1bGUge31cbiAqIGBgYFxuICpcbiAqIEl0J3MgYWxzbyBwb3NzaWJsZSB0byBjb25maWd1cmUgYSBtdWx0aS1wcm92aWRlciB1c2luZyBgQVBQX0lOSVRJQUxJWkVSYCB0b2tlbiBhbmQgYSBmdW5jdGlvblxuICogcmV0dXJuaW5nIGFuIG9ic2VydmFibGUsIHNlZSBhbiBleGFtcGxlIGJlbG93LiBOb3RlOiB0aGUgYEh0dHBDbGllbnRgIGluIHRoaXMgZXhhbXBsZSBpcyB1c2VkIGZvclxuICogZGVtbyBwdXJwb3NlcyB0byBpbGx1c3RyYXRlIGhvdyB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjYW4gd29yayB3aXRoIG90aGVyIHByb3ZpZGVycyBhdmFpbGFibGVcbiAqIHRocm91Z2ggREkuXG4gKlxuICogYGBgXG4gKiAgZnVuY3Rpb24gaW5pdGlhbGl6ZUFwcEZhY3RvcnkoaHR0cENsaWVudDogSHR0cENsaWVudCk6ICgpID0+IE9ic2VydmFibGU8YW55PiB7XG4gKiAgIHJldHVybiAoKSA9PiBodHRwQ2xpZW50LmdldChcImh0dHBzOi8vc29tZVVybC5jb20vYXBpL3VzZXJcIilcbiAqICAgICAucGlwZShcbiAqICAgICAgICB0YXAodXNlciA9PiB7IC4uLiB9KVxuICogICAgICk7XG4gKiAgfVxuICpcbiAqICBATmdNb2R1bGUoe1xuICogICAgaW1wb3J0czogW0Jyb3dzZXJNb2R1bGUsIEh0dHBDbGllbnRNb2R1bGVdLFxuICogICAgZGVjbGFyYXRpb25zOiBbQXBwQ29tcG9uZW50XSxcbiAqICAgIGJvb3RzdHJhcDogW0FwcENvbXBvbmVudF0sXG4gKiAgICBwcm92aWRlcnM6IFt7XG4gKiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAqICAgICAgdXNlRmFjdG9yeTogaW5pdGlhbGl6ZUFwcEZhY3RvcnksXG4gKiAgICAgIGRlcHM6IFtIdHRwQ2xpZW50XSxcbiAqICAgICAgbXVsdGk6IHRydWVcbiAqICAgIH1dXG4gKiAgfSlcbiAqICBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBfSU5JVElBTElaRVIgPVxuICAgIG5ldyBJbmplY3Rpb25Ub2tlbjxSZWFkb25seUFycmF5PCgpID0+IE9ic2VydmFibGU8dW5rbm93bj58IFByb21pc2U8dW5rbm93bj58IHZvaWQ+PihcbiAgICAgICAgJ0FwcGxpY2F0aW9uIEluaXRpYWxpemVyJyk7XG5cbi8qKlxuICogQSBjbGFzcyB0aGF0IHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiBydW5uaW5nIHtAbGluayBBUFBfSU5JVElBTElaRVJ9IGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkluaXRTdGF0dXMge1xuICBwcml2YXRlIHJlc29sdmUgPSBub29wO1xuICBwcml2YXRlIHJlamVjdCA9IG5vb3A7XG4gIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IGRvbmVQcm9taXNlOiBQcm9taXNlPGFueT47XG4gIHB1YmxpYyByZWFkb25seSBkb25lID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChBUFBfSU5JVElBTElaRVIpIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgYXBwSW5pdHM6XG4gICAgICAgICAgICAgICAgICBSZWFkb25seUFycmF5PCgpID0+IE9ic2VydmFibGU8dW5rbm93bj58IFByb21pc2U8dW5rbm93bj58IHZvaWQ+KSB7XG4gICAgdGhpcy5kb25lUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlID0gcmVzO1xuICAgICAgdGhpcy5yZWplY3QgPSByZWo7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHJ1bkluaXRpYWxpemVycygpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFzeW5jSW5pdFByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICAodGhpcyBhcyB7ZG9uZTogYm9vbGVhbn0pLmRvbmUgPSB0cnVlO1xuICAgICAgdGhpcy5yZXNvbHZlKCk7XG4gICAgfTtcblxuICAgIGlmICh0aGlzLmFwcEluaXRzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXBwSW5pdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaW5pdFJlc3VsdCA9IHRoaXMuYXBwSW5pdHNbaV0oKTtcbiAgICAgICAgaWYgKGlzUHJvbWlzZShpbml0UmVzdWx0KSkge1xuICAgICAgICAgIGFzeW5jSW5pdFByb21pc2VzLnB1c2goaW5pdFJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKGluaXRSZXN1bHQpKSB7XG4gICAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZUFzUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGluaXRSZXN1bHQuc3Vic2NyaWJlKHtjb21wbGV0ZTogcmVzb2x2ZSwgZXJyb3I6IHJlamVjdH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFzeW5jSW5pdFByb21pc2VzLnB1c2gob2JzZXJ2YWJsZUFzUHJvbWlzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBQcm9taXNlLmFsbChhc3luY0luaXRQcm9taXNlcylcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNvbXBsZXRlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLnJlamVjdChlKTtcbiAgICAgICAgfSk7XG5cbiAgICBpZiAoYXN5bmNJbml0UHJvbWlzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb21wbGV0ZSgpO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxufVxuIl19
|