@angular-extensions/testing-library
Advanced tools
Comparing version 3.2.0 to 4.0.0
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"exports":[{"from":"dom-testing-library"}],"metadata":{"RenderResult":{"__symbolic":"interface"},"Options":{"__symbolic":"interface"},"ComponentInput":{"__symbolic":"interface"},"createComponent":{"__symbolic":"function"}},"origins":{"RenderResult":"./lib/models","Options":"./lib/models","ComponentInput":"./lib/models","createComponent":"./lib/testing-library"},"importAs":"@angular-extensions/testing-library"} | ||
{"__symbolic":"module","version":4,"exports":[{"from":"dom-testing-library"}],"metadata":{"RenderResultQueries":{"__symbolic":"interface"},"RenderResult":{"__symbolic":"interface"},"RenderOptions":{"__symbolic":"interface"},"render":{"__symbolic":"function"}},"origins":{"RenderResultQueries":"./lib/models","RenderResult":"./lib/models","RenderOptions":"./lib/models","render":"./lib/testing-library"},"importAs":"@angular-extensions/testing-library"} |
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/core/testing'), require('dom-testing-library'), require('jest')) : | ||
typeof define === 'function' && define.amd ? define('@angular-extensions/testing-library', ['exports', '@angular/core', '@angular/core/testing', 'dom-testing-library', 'jest'], factory) : | ||
(factory((global['angular-extensions'] = global['angular-extensions'] || {}, global['angular-extensions']['testing-library'] = {}),global.ng.core,global.ng.core.testing,null)); | ||
}(this, (function (exports,core,testing,domTestingLibrary) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/core/testing'), require('dom-testing-library'), require('@angular/platform-browser'), require('jest')) : | ||
typeof define === 'function' && define.amd ? define('@angular-extensions/testing-library', ['exports', '@angular/core', '@angular/core/testing', 'dom-testing-library', '@angular/platform-browser', 'jest'], factory) : | ||
(factory((global['angular-extensions'] = global['angular-extensions'] || {}, global['angular-extensions']['testing-library'] = {}),global.ng.core,global.ng.core.testing,null,global.ng.platformBrowser)); | ||
}(this, (function (exports,core,testing,domTestingLibrary,platformBrowser) { 'use strict'; | ||
@@ -166,4 +166,4 @@ /*! ***************************************************************************** | ||
*/ | ||
var TestComponent = /** @class */ (function () { | ||
function TestComponent(elemtRef) { | ||
var WrapperComponent = /** @class */ (function () { | ||
function WrapperComponent(elemtRef) { | ||
this.elemtRef = elemtRef; | ||
@@ -174,3 +174,3 @@ } | ||
*/ | ||
TestComponent.prototype.ngOnInit = /** | ||
WrapperComponent.prototype.ngOnInit = /** | ||
* @return {?} | ||
@@ -181,7 +181,7 @@ */ | ||
}; | ||
TestComponent.decorators = [ | ||
{ type: core.Component, args: [{ selector: 'test-component', template: '' },] }, | ||
WrapperComponent.decorators = [ | ||
{ type: core.Component, args: [{ selector: 'wrapper-component', template: '' },] }, | ||
]; | ||
/** @nocollapse */ | ||
TestComponent.ctorParameters = function () { | ||
WrapperComponent.ctorParameters = function () { | ||
return [ | ||
@@ -191,3 +191,3 @@ { type: core.ElementRef } | ||
}; | ||
return TestComponent; | ||
return WrapperComponent; | ||
}()); | ||
@@ -200,13 +200,13 @@ /** | ||
*/ | ||
function createComponent(templateOrComponent, _a) { | ||
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.providers, providers = _d === void 0 ? [] : _d, _e = _a.imports, imports = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f; | ||
function render(templateOrComponent, _a) { | ||
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.imports, imports = _d === void 0 ? [] : _d, _e = _a.providers, providers = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f, queries = _a.queries, _g = _a.wrapper, wrapper = _g === void 0 ? WrapperComponent : _g, _h = _a.componentProperties, componentProperties = _h === void 0 ? {} : _h; | ||
return __awaiter(this, void 0, void 0, function () { | ||
var isTemplate, testComponent, fixture, eventsWithDetectChanges; | ||
return __generator(this, function (_g) { | ||
switch (_g.label) { | ||
var isTemplate, componentDeclarations, fixture, eventsWithDetectChanges; | ||
return __generator(this, function (_j) { | ||
switch (_j.label) { | ||
case 0: | ||
isTemplate = typeof templateOrComponent === 'string'; | ||
testComponent = isTemplate ? [TestComponent] : []; | ||
componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent]; | ||
testing.TestBed.configureTestingModule({ | ||
declarations: __spread(declarations, testComponent), | ||
declarations: __spread(declarations, componentDeclarations), | ||
providers: __spread(providers), | ||
@@ -217,7 +217,7 @@ imports: __spread(imports), | ||
fixture = isTemplate | ||
? createTestComponentFixture(/** @type {?} */ (templateOrComponent)) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent)); | ||
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper: wrapper, componentProperties: componentProperties }) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties: componentProperties }); | ||
return [4 /*yield*/, testing.TestBed.compileComponents()]; | ||
case 1: | ||
_g.sent(); | ||
_j.sent(); | ||
if (detectChanges) { | ||
@@ -235,3 +235,8 @@ fixture.detectChanges(); | ||
}, /** @type {?} */ ({})); | ||
return [2 /*return*/, __assign({ fixture: fixture, container: fixture.nativeElement, getFromTestBed: testing.TestBed.get, debug: function () { return console.log(domTestingLibrary.prettyDOM(fixture.nativeElement)); } }, eventsWithDetectChanges, domTestingLibrary.getQueriesForElement(fixture.nativeElement))]; | ||
return [2 /*return*/, /** @type {?} */ (__assign({ fixture: fixture, container: fixture.nativeElement, debug: function (element) { | ||
if (element === void 0) { | ||
element = fixture.nativeElement; | ||
} | ||
return console.log(domTestingLibrary.prettyDOM(element)); | ||
} }, domTestingLibrary.getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges))]; | ||
} | ||
@@ -242,7 +247,11 @@ }); | ||
/** | ||
* Creates the wrapper component and sets its the template to the to-be-tested component | ||
* @template T | ||
* @param {?} template | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createTestComponentFixture(template) { | ||
testing.TestBed.overrideComponent(TestComponent, { | ||
function createWrapperComponentFixture(template, _a) { | ||
var wrapper = _a.wrapper, componentProperties = _a.componentProperties; | ||
testing.TestBed.overrideComponent(wrapper, { | ||
set: { | ||
@@ -252,18 +261,42 @@ template: template, | ||
}); | ||
return testing.TestBed.createComponent(TestComponent); | ||
/** @type {?} */ | ||
var fixture = testing.TestBed.createComponent(wrapper); | ||
/** @type {?} */ | ||
var componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/); | ||
if (!componentSelector) { | ||
throw Error("Template " + template + " is not valid."); | ||
} | ||
/** @type {?} */ | ||
var sut = fixture.debugElement.query(platformBrowser.By.css(componentSelector[1])); | ||
setComponentProperties(sut, { componentProperties: componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Creates the components and sets its properties | ||
* @template T | ||
* @param {?} componentInput | ||
* @param {?} component | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createComponentFixture(componentInput) { | ||
var e_1, _a; | ||
var component = componentInput.component, _b = componentInput.parameters, parameters = _b === void 0 ? {} : _b; | ||
function createComponentFixture(component, _a) { | ||
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b; | ||
/** @type {?} */ | ||
var fixture = testing.TestBed.createComponent(component); | ||
setComponentProperties(fixture, { componentProperties: componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Set the component properties | ||
* @template T | ||
* @param {?} fixture | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function setComponentProperties(fixture, _a) { | ||
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b; | ||
var e_1, _c; | ||
try { | ||
for (var _c = __values(Object.keys(parameters)), _d = _c.next(); !_d.done; _d = _c.next()) { | ||
var key = _d.value; | ||
fixture.componentInstance[key] = parameters[key]; | ||
for (var _d = __values(Object.keys(componentProperties)), _e = _d.next(); !_e.done; _e = _d.next()) { | ||
var key = _e.value; | ||
fixture.componentInstance[key] = componentProperties[key]; | ||
} | ||
@@ -276,4 +309,4 @@ } | ||
try { | ||
if (_d && !_d.done && (_a = _c.return)) | ||
_a.call(_c); | ||
if (_e && !_e.done && (_c = _d.return)) | ||
_c.call(_d); | ||
} | ||
@@ -332,45 +365,52 @@ finally { | ||
exports.within = domTestingLibrary.within; | ||
exports.getByLabelText = domTestingLibrary.getByLabelText; | ||
exports.getAllByLabelText = domTestingLibrary.getAllByLabelText; | ||
exports.queryByLabelText = domTestingLibrary.queryByLabelText; | ||
exports.queryAllByLabelText = domTestingLibrary.queryAllByLabelText; | ||
exports.findByLabelText = domTestingLibrary.findByLabelText; | ||
exports.findAllByLabelText = domTestingLibrary.findAllByLabelText; | ||
exports.getByPlaceholderText = domTestingLibrary.getByPlaceholderText; | ||
exports.getAllByPlaceholderText = domTestingLibrary.getAllByPlaceholderText; | ||
exports.queryByPlaceholderText = domTestingLibrary.queryByPlaceholderText; | ||
exports.queryAllByPlaceholderText = domTestingLibrary.queryAllByPlaceholderText; | ||
exports.getByPlaceholderText = domTestingLibrary.getByPlaceholderText; | ||
exports.getAllByPlaceholderText = domTestingLibrary.getAllByPlaceholderText; | ||
exports.queryBySelectText = domTestingLibrary.queryBySelectText; | ||
exports.queryAllBySelectText = domTestingLibrary.queryAllBySelectText; | ||
exports.getBySelectText = domTestingLibrary.getBySelectText; | ||
exports.getAllBySelectText = domTestingLibrary.getAllBySelectText; | ||
exports.findByPlaceholderText = domTestingLibrary.findByPlaceholderText; | ||
exports.findAllByPlaceholderText = domTestingLibrary.findAllByPlaceholderText; | ||
exports.getByText = domTestingLibrary.getByText; | ||
exports.getAllByText = domTestingLibrary.getAllByText; | ||
exports.queryByText = domTestingLibrary.queryByText; | ||
exports.queryAllByText = domTestingLibrary.queryAllByText; | ||
exports.getByText = domTestingLibrary.getByText; | ||
exports.getAllByText = domTestingLibrary.getAllByText; | ||
exports.queryByLabelText = domTestingLibrary.queryByLabelText; | ||
exports.queryAllByLabelText = domTestingLibrary.queryAllByLabelText; | ||
exports.getByLabelText = domTestingLibrary.getByLabelText; | ||
exports.getAllByLabelText = domTestingLibrary.getAllByLabelText; | ||
exports.findByText = domTestingLibrary.findByText; | ||
exports.findAllByText = domTestingLibrary.findAllByText; | ||
exports.getByAltText = domTestingLibrary.getByAltText; | ||
exports.getAllByAltText = domTestingLibrary.getAllByAltText; | ||
exports.queryByAltText = domTestingLibrary.queryByAltText; | ||
exports.queryAllByAltText = domTestingLibrary.queryAllByAltText; | ||
exports.getByAltText = domTestingLibrary.getByAltText; | ||
exports.getAllByAltText = domTestingLibrary.getAllByAltText; | ||
exports.queryByTestId = domTestingLibrary.queryByTestId; | ||
exports.queryAllByTestId = domTestingLibrary.queryAllByTestId; | ||
exports.getByTestId = domTestingLibrary.getByTestId; | ||
exports.getAllByTestId = domTestingLibrary.getAllByTestId; | ||
exports.findByAltText = domTestingLibrary.findByAltText; | ||
exports.findAllByAltText = domTestingLibrary.findAllByAltText; | ||
exports.getByTitle = domTestingLibrary.getByTitle; | ||
exports.getAllByTitle = domTestingLibrary.getAllByTitle; | ||
exports.queryByTitle = domTestingLibrary.queryByTitle; | ||
exports.queryAllByTitle = domTestingLibrary.queryAllByTitle; | ||
exports.getByTitle = domTestingLibrary.getByTitle; | ||
exports.getAllByTitle = domTestingLibrary.getAllByTitle; | ||
exports.queryByValue = domTestingLibrary.queryByValue; | ||
exports.queryAllByValue = domTestingLibrary.queryAllByValue; | ||
exports.getByValue = domTestingLibrary.getByValue; | ||
exports.getAllByValue = domTestingLibrary.getAllByValue; | ||
exports.findByTitle = domTestingLibrary.findByTitle; | ||
exports.findAllByTitle = domTestingLibrary.findAllByTitle; | ||
exports.getByDisplayValue = domTestingLibrary.getByDisplayValue; | ||
exports.getAllByDisplayValue = domTestingLibrary.getAllByDisplayValue; | ||
exports.queryByDisplayValue = domTestingLibrary.queryByDisplayValue; | ||
exports.queryAllByDisplayValue = domTestingLibrary.queryAllByDisplayValue; | ||
exports.getByDisplayValue = domTestingLibrary.getByDisplayValue; | ||
exports.getAllByDisplayValue = domTestingLibrary.getAllByDisplayValue; | ||
exports.findByDisplayValue = domTestingLibrary.findByDisplayValue; | ||
exports.findAllByDisplayValue = domTestingLibrary.findAllByDisplayValue; | ||
exports.getByRole = domTestingLibrary.getByRole; | ||
exports.getAllByRole = domTestingLibrary.getAllByRole; | ||
exports.queryByRole = domTestingLibrary.queryByRole; | ||
exports.queryAllByRole = domTestingLibrary.queryAllByRole; | ||
exports.getByRole = domTestingLibrary.getByRole; | ||
exports.getAllByRole = domTestingLibrary.getAllByRole; | ||
exports.findByRole = domTestingLibrary.findByRole; | ||
exports.findAllByRole = domTestingLibrary.findAllByRole; | ||
exports.getByTestId = domTestingLibrary.getByTestId; | ||
exports.getAllByTestId = domTestingLibrary.getAllByTestId; | ||
exports.queryByTestId = domTestingLibrary.queryByTestId; | ||
exports.queryAllByTestId = domTestingLibrary.queryAllByTestId; | ||
exports.findByTestId = domTestingLibrary.findByTestId; | ||
exports.findAllByTestId = domTestingLibrary.findAllByTestId; | ||
exports.queryByAttribute = domTestingLibrary.queryByAttribute; | ||
exports.queryAllByAttribute = domTestingLibrary.queryAllByAttribute; | ||
exports.firstResultOrNull = domTestingLibrary.firstResultOrNull; | ||
exports.debugDOM = domTestingLibrary.debugDOM; | ||
@@ -381,2 +421,3 @@ exports.getElementError = domTestingLibrary.getElementError; | ||
exports.waitForElement = domTestingLibrary.waitForElement; | ||
exports.waitForElementToBeRemoved = domTestingLibrary.waitForElementToBeRemoved; | ||
exports.getDefaultNormalizer = domTestingLibrary.getDefaultNormalizer; | ||
@@ -388,3 +429,3 @@ exports.getNodeText = domTestingLibrary.getNodeText; | ||
exports.configure = domTestingLibrary.configure; | ||
exports.createComponent = createComponent; | ||
exports.render = render; | ||
exports.configureJestSetup = configureJestSetup; | ||
@@ -396,2 +437,2 @@ | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS51bWQuanMubWFwIiwic291cmNlcyI6W251bGwsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IE9wdGlvbnMsIFJlbmRlclJlc3VsdCwgQ29tcG9uZW50SW5wdXQgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3Rlc3QtY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBUZXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPih0ZW1wbGF0ZTogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25zKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihjb21wb25lbnQ6IENvbXBvbmVudElucHV0PFQ+LCBvcHRpb25zOiBPcHRpb25zKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgQ29tcG9uZW50SW5wdXQ8VD4sXG4gIHsgZGV0ZWN0Q2hhbmdlcyA9IHRydWUsIGRlY2xhcmF0aW9ucyA9IFtdLCBwcm92aWRlcnMgPSBbXSwgaW1wb3J0cyA9IFtdLCBzY2hlbWFzID0gW10gfTogT3B0aW9ucyxcbik6IFByb21pc2U8UmVuZGVyUmVzdWx0PiB7XG4gIGNvbnN0IGlzVGVtcGxhdGUgPSB0eXBlb2YgdGVtcGxhdGVPckNvbXBvbmVudCA9PT0gJ3N0cmluZyc7XG4gIGNvbnN0IHRlc3RDb21wb25lbnQgPSBpc1RlbXBsYXRlID8gW1Rlc3RDb21wb25lbnRdIDogW107XG5cbiAgVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5kZWNsYXJhdGlvbnMsIC4uLnRlc3RDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVRlc3RDb21wb25lbnRGaXh0dXJlKDxzdHJpbmc+dGVtcGxhdGVPckNvbXBvbmVudClcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUoPENvbXBvbmVudElucHV0PFQ+PnRlbXBsYXRlT3JDb21wb25lbnQpO1xuXG4gIGF3YWl0IFRlc3RCZWQuY29tcGlsZUNvbXBvbmVudHMoKTtcblxuICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY29uc3QgZXZlbnRzV2l0aERldGVjdENoYW5nZXMgPSBPYmplY3Qua2V5cyhmaXJlRXZlbnQpLnJlZHVjZShcbiAgICAoZXZlbnRzLCBrZXkpID0+IHtcbiAgICAgIGV2ZW50c1trZXldID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zPzoge30pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZmlyZUV2ZW50W2tleV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBldmVudHM7XG4gICAgfSxcbiAgICB7fSBhcyBGaXJlRnVuY3Rpb24gJiBGaXJlT2JqZWN0LFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgZml4dHVyZSxcbiAgICBjb250YWluZXI6IGZpeHR1cmUubmF0aXZlRWxlbWVudCxcbiAgICBnZXRGcm9tVGVzdEJlZDogVGVzdEJlZC5nZXQsXG4gICAgZGVidWc6ICgpID0+IGNvbnNvbGUubG9nKHByZXR0eURPTShmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpKSxcbiAgICAuLi5ldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXN0Q29tcG9uZW50Rml4dHVyZSh0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQoVGVzdENvbXBvbmVudCwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuICByZXR1cm4gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoVGVzdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oY29tcG9uZW50SW5wdXQ6IENvbXBvbmVudElucHV0PFQ+KSB7XG4gIGNvbnN0IHsgY29tcG9uZW50LCBwYXJhbWV0ZXJzID0ge30gfSA9IGNvbXBvbmVudElucHV0O1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1ldGVycykpIHtcbiAgICBmaXh0dXJlLmNvbXBvbmVudEluc3RhbmNlW2tleV0gPSBwYXJhbWV0ZXJzW2tleV07XG4gIH1cbiAgcmV0dXJuIGZpeHR1cmU7XG59XG4iLCJpbXBvcnQgeyBUZXN0QmVkLCBnZXRUZXN0QmVkLCBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCAnamVzdCc7XG5cbi8vIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTI0MDlcbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVKZXN0U2V0dXAoKSB7XG4gIGNvbnN0IHRlc3RCZWRBcGk6IGFueSA9IGdldFRlc3RCZWQoKTtcbiAgY29uc3Qgb3JpZ2luUmVzZXQgPSBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZTtcblxuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlKCk7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUgPSAoKSA9PiBUZXN0QmVkO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHRlc3RCZWRBcGkuX2FjdGl2ZUZpeHR1cmVzLmZvckVhY2goKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55PikgPT4gZml4dHVyZS5kZXN0cm95KCkpO1xuICAgIHRlc3RCZWRBcGkuX2luc3RhbnRpYXRlZCA9IGZhbHNlO1xuICB9KTtcblxuICBhZnRlckFsbCgoKSA9PiB7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUgPSBvcmlnaW5SZXNldDtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSgpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJDb21wb25lbnQiLCJFbGVtZW50UmVmIiwiVGVzdEJlZCIsImZpcmVFdmVudCIsInByZXR0eURPTSIsImdldFF1ZXJpZXNGb3JFbGVtZW50IiwidHNsaWJfMS5fX3ZhbHVlcyIsImdldFRlc3RCZWQiXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7OztBQWNBLElBZU8sSUFBSSxRQUFRLEdBQUc7UUFDbEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxRQUFRLENBQUMsQ0FBQztZQUMzQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakQsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxD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QkFDakQsS0FBSyxDQUFDOzRCQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDOzRCQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7NEJBQUMsU0FBUzt3QkFDakQ7NEJBQ0ksSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dDQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQUMsU0FBUzs2QkFBRTs0QkFDNUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQUMsTUFBTTs2QkFBRTs0QkFDdEYsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dDQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0NBQUMsTUFBTTs2QkFBRTs0QkFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxD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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS51bWQuanMubWFwIiwic291cmNlcyI6W251bGwsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBUeXBlLCBEZWJ1Z0VsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlc3RCZWQsIENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgZ2V0UXVlcmllc0ZvckVsZW1lbnQsIHByZXR0eURPTSwgZmlyZUV2ZW50LCBGaXJlT2JqZWN0LCBGaXJlRnVuY3Rpb24gfSBmcm9tICdkb20tdGVzdGluZy1saWJyYXJ5JztcblxuaW1wb3J0IHsgUmVuZGVyUmVzdWx0LCBSZW5kZXJPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQnkgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiAnd3JhcHBlci1jb21wb25lbnQnLCB0ZW1wbGF0ZTogJycgfSlcbmNsYXNzIFdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW10UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZWxlbXRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ25nLXZlcnNpb24nKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyPFQ+KFxuICB0ZW1wbGF0ZU9yQ29tcG9uZW50OiBzdHJpbmcgfCBUeXBlPFQ+LFxuICB7XG4gICAgZGV0ZWN0Q2hhbmdlcyA9IHRydWUsXG4gICAgZGVjbGFyYXRpb25zID0gW10sXG4gICAgaW1wb3J0cyA9IFtdLFxuICAgIHByb3ZpZGVycyA9IFtdLFxuICAgIHNjaGVtYXMgPSBbXSxcbiAgICBxdWVyaWVzLFxuICAgIHdyYXBwZXIgPSBXcmFwcGVyQ29tcG9uZW50LFxuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfTogUmVuZGVyT3B0aW9uczxUPixcbik6IFByb21pc2U8UmVuZGVyUmVzdWx0PiB7XG4gIGNvbnN0IGlzVGVtcGxhdGUgPSB0eXBlb2YgdGVtcGxhdGVPckNvbXBvbmVudCA9PT0gJ3N0cmluZyc7XG4gIGNvbnN0IGNvbXBvbmVudERlY2xhcmF0aW9ucyA9IGlzVGVtcGxhdGUgPyBbd3JhcHBlcl0gOiBbdGVtcGxhdGVPckNvbXBvbmVudF07XG5cbiAgVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5kZWNsYXJhdGlvbnMsIC4uLmNvbXBvbmVudERlY2xhcmF0aW9uc10sXG4gICAgcHJvdmlkZXJzOiBbLi4ucHJvdmlkZXJzXSxcbiAgICBpbXBvcnRzOiBbLi4uaW1wb3J0c10sXG4gICAgc2NoZW1hczogWy4uLnNjaGVtYXNdLFxuICB9KTtcblxuICBjb25zdCBmaXh0dXJlID0gaXNUZW1wbGF0ZVxuICAgID8gY3JlYXRlV3JhcHBlckNvbXBvbmVudEZpeHR1cmUodGVtcGxhdGVPckNvbXBvbmVudCBhcyBzdHJpbmcsIHsgd3JhcHBlciwgY29tcG9uZW50UHJvcGVydGllcyB9KVxuICAgIDogY3JlYXRlQ29tcG9uZW50Rml4dHVyZSh0ZW1wbGF0ZU9yQ29tcG9uZW50IGFzIFR5cGU8VD4sIHsgY29tcG9uZW50UHJvcGVydGllcyB9KTtcblxuICBhd2FpdCBUZXN0QmVkLmNvbXBpbGVDb21wb25lbnRzKCk7XG5cbiAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNvbnN0IGV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzID0gT2JqZWN0LmtleXMoZmlyZUV2ZW50KS5yZWR1Y2UoXG4gICAgKGV2ZW50cywga2V5KSA9PiB7XG4gICAgICBldmVudHNba2V5XSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpcmVFdmVudFtrZXldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZXZlbnRzO1xuICAgIH0sXG4gICAge30gYXMgRmlyZUZ1bmN0aW9uICYgRmlyZU9iamVjdCxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGZpeHR1cmUsXG4gICAgY29udGFpbmVyOiBmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsXG4gICAgZGVidWc6IChlbGVtZW50ID0gZml4dHVyZS5uYXRpdmVFbGVtZW50KSA9PiBjb25zb2xlLmxvZyhwcmV0dHlET00oZWxlbWVudCkpLFxuICAgIC4uLmdldFF1ZXJpZXNGb3JFbGVtZW50KGZpeHR1cmUubmF0aXZlRWxlbWVudCwgcXVlcmllcyksXG4gICAgLi4uZXZlbnRzV2l0aERldGVjdENoYW5nZXMsXG4gIH0gYXMgYW55O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIHdyYXBwZXIgY29tcG9uZW50IGFuZCBzZXRzIGl0cyB0aGUgdGVtcGxhdGUgdG8gdGhlIHRvLWJlLXRlc3RlZCBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlV3JhcHBlckNvbXBvbmVudEZpeHR1cmU8VD4oXG4gIHRlbXBsYXRlOiBzdHJpbmcsXG4gIHtcbiAgICB3cmFwcGVyLFxuICAgIGNvbXBvbmVudFByb3BlcnRpZXMsXG4gIH06IHtcbiAgICB3cmFwcGVyOiBSZW5kZXJPcHRpb25zPFQ+Wyd3cmFwcGVyJ107XG4gICAgY29tcG9uZW50UHJvcGVydGllczogUmVuZGVyT3B0aW9uczxUPlsnY29tcG9uZW50UHJvcGVydGllcyddO1xuICB9LFxuKTogQ29tcG9uZW50Rml4dHVyZTxhbnk+IHtcbiAgVGVzdEJlZC5vdmVycmlkZUNvbXBvbmVudCh3cmFwcGVyLCB7XG4gICAgc2V0OiB7XG4gICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KHdyYXBwZXIpO1xuICAvLyBnZXQgdGhlIGNvbXBvbmVudCBzZWxlY3RvciwgZS5nLiA8Zm9vIGNvbG9yPVwiZ3JlZW5cIj4gYW5kIDxmb28+IHJlc3VsdHMgaW4gZm9vXG4gIGNvbnN0IGNvbXBvbmVudFNlbGVjdG9yID0gdGVtcGxhdGUubWF0Y2goL1xcPCguKj8pXFwgLykgfHwgdGVtcGxhdGUubWF0Y2goL1xcPCguKj8pXFw+Lyk7XG4gIGlmICghY29tcG9uZW50U2VsZWN0b3IpIHtcbiAgICB0aHJvdyBFcnJvcihgVGVtcGxhdGUgJHt0ZW1wbGF0ZX0gaXMgbm90IHZhbGlkLmApO1xuICB9XG5cbiAgY29uc3Qgc3V0ID0gZml4dHVyZS5kZWJ1Z0VsZW1lbnQucXVlcnkoQnkuY3NzKGNvbXBvbmVudFNlbGVjdG9yWzFdKSk7XG4gIHNldENvbXBvbmVudFByb3BlcnRpZXMoc3V0LCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG4gIHJldHVybiBmaXh0dXJlO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbXBvbmVudHMgYW5kIHNldHMgaXRzIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50Rml4dHVyZTxUPihcbiAgY29tcG9uZW50OiBUeXBlPFQ+LFxuICB7XG4gICAgY29tcG9uZW50UHJvcGVydGllcyA9IHt9LFxuICB9OiB7XG4gICAgY29tcG9uZW50UHJvcGVydGllczogUmVuZGVyT3B0aW9uczxUPlsnY29tcG9uZW50UHJvcGVydGllcyddO1xuICB9LFxuKTogQ29tcG9uZW50Rml4dHVyZTxUPiB7XG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICBzZXRDb21wb25lbnRQcm9wZXJ0aWVzKGZpeHR1cmUsIHsgY29tcG9uZW50UHJvcGVydGllcyB9KTtcbiAgcmV0dXJuIGZpeHR1cmU7XG59XG5cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnQgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBzZXRDb21wb25lbnRQcm9wZXJ0aWVzPFQ+KFxuICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPFQ+IHwgRGVidWdFbGVtZW50LFxuICB7XG4gICAgY29tcG9uZW50UHJvcGVydGllcyA9IHt9LFxuICB9OiB7XG4gICAgY29tcG9uZW50UHJvcGVydGllczogUmVuZGVyT3B0aW9uczxUPlsnY29tcG9uZW50UHJvcGVydGllcyddO1xuICB9LFxuKSB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbXBvbmVudFByb3BlcnRpZXMpKSB7XG4gICAgZml4dHVyZS5jb21wb25lbnRJbnN0YW5jZVtrZXldID0gY29tcG9uZW50UHJvcGVydGllc1trZXldO1xuICB9XG4gIHJldHVybiBmaXh0dXJlO1xufVxuIiwiaW1wb3J0IHsgVGVzdEJlZCwgZ2V0VGVzdEJlZCwgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgJ2plc3QnO1xuXG4vLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyNDA5XG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlSmVzdFNldHVwKCkge1xuICBjb25zdCB0ZXN0QmVkQXBpOiBhbnkgPSBnZXRUZXN0QmVkKCk7XG4gIGNvbnN0IG9yaWdpblJlc2V0ID0gVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGU7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSgpO1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gKCkgPT4gVGVzdEJlZDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICB0ZXN0QmVkQXBpLl9hY3RpdmVGaXh0dXJlcy5mb3JFYWNoKChmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4pID0+IGZpeHR1cmUuZGVzdHJveSgpKTtcbiAgICB0ZXN0QmVkQXBpLl9pbnN0YW50aWF0ZWQgPSBmYWxzZTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gb3JpZ2luUmVzZXQ7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUoKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiQ29tcG9uZW50IiwiRWxlbWVudFJlZiIsIlRlc3RCZWQiLCJmaXJlRXZlbnQiLCJ0c2xpYl8xLl9fYXNzaWduIiwicHJldHR5RE9NIiwiZ2V0UXVlcmllc0ZvckVsZW1lbnQiLCJCeSIsInRzbGliXzEuX192YWx1ZXMiLCJnZXRUZXN0QmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFjQSxJQWVPLElBQUksUUFBUSxHQUFHO1FBQ2xCLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsUUFBUSxDQUFDLENBQUM7WUFDM0MsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pELENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztvQkFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEY7WUFDRCxPQUFPLENBQUMsQ0FBQztTQUNaLENBQUE7UUFDRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQTtBQUVELGFBeUJnQixTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUztRQUN2RCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNO1lBQ3JELFNBQVMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJO2dCQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFBRTtZQUFDLE9BQU8sQ0FB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 |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/core/testing"),require("dom-testing-library"),require("jest")):"function"==typeof define&&define.amd?define("@angular-extensions/testing-library",["exports","@angular/core","@angular/core/testing","dom-testing-library","jest"],t):t((e["angular-extensions"]=e["angular-extensions"]||{},e["angular-extensions"]["testing-library"]={}),e.ng.core,e.ng.core.testing,null)}(this,function(e,t,B,f){"use strict";var d=function(){return(d=Object.assign||function(e){for(var t,r=1,l=arguments.length;r<l;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function T(l,n){var o,u,i,e,y={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return e={next:t(0),"throw":t(1),"return":t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function r(e){if(o)throw new TypeError("Generator is already executing.");for(;y;)try{if(o=1,u&&(i=2&e[0]?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;switch(u=0,i&&(e=[2&e[0],i.value]),e[0]){case 0:case 1:i=e;break;case 4:return y.label++,{value:e[1],done:!1};case 5:y.label++,u=e[1],e=[0];continue;case 7:e=y.ops.pop(),y.trys.pop();continue;default:if(!(i=0<(i=y.trys).length&&i[i.length-1])&&(6===e[0]||2===e[0])){y=0;continue}if(3===e[0]&&(!i||e[1]>i[0]&&e[1]<i[3])){y.label=e[1];break}if(6===e[0]&&y.label<i[1]){y.label=i[1],i=e;break}if(i&&y.label<i[2]){y.label=i[2],y.ops.push(e);break}i[2]&&y.ops.pop(),y.trys.pop();continue}e=n.call(l,y)}catch(t){e=[6,t],u=0}finally{o=i=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([t,e])}}}function r(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var l,n,o=r.call(e),u=[];try{for(;(void 0===t||0<t--)&&!(l=o.next()).done;)u.push(l.value)}catch(i){n={error:i}}finally{try{l&&!l.done&&(r=o["return"])&&r.call(o)}finally{if(n)throw n.error}}return u}function p(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(r(arguments[t]));return e}var x=function(){function e(e){this.elemtRef=e}return e.prototype.ngOnInit=function(){this.elemtRef.nativeElement.removeAttribute("ng-version")},e.decorators=[{type:t.Component,args:[{selector:"test-component",template:""}]}],e.ctorParameters=function(){return[{type:t.ElementRef}]},e}();e.queries=f.queries,e.queryHelpers=f.queryHelpers,e.within=f.within,e.queryByPlaceholderText=f.queryByPlaceholderText,e.queryAllByPlaceholderText=f.queryAllByPlaceholderText,e.getByPlaceholderText=f.getByPlaceholderText,e.getAllByPlaceholderText=f.getAllByPlaceholderText,e.queryBySelectText=f.queryBySelectText,e.queryAllBySelectText=f.queryAllBySelectText,e.getBySelectText=f.getBySelectText,e.getAllBySelectText=f.getAllBySelectText,e.queryByText=f.queryByText,e.queryAllByText=f.queryAllByText,e.getByText=f.getByText,e.getAllByText=f.getAllByText,e.queryByLabelText=f.queryByLabelText,e.queryAllByLabelText=f.queryAllByLabelText,e.getByLabelText=f.getByLabelText,e.getAllByLabelText=f.getAllByLabelText,e.queryByAltText=f.queryByAltText,e.queryAllByAltText=f.queryAllByAltText,e.getByAltText=f.getByAltText,e.getAllByAltText=f.getAllByAltText,e.queryByTestId=f.queryByTestId,e.queryAllByTestId=f.queryAllByTestId,e.getByTestId=f.getByTestId,e.getAllByTestId=f.getAllByTestId,e.queryByTitle=f.queryByTitle,e.queryAllByTitle=f.queryAllByTitle,e.getByTitle=f.getByTitle,e.getAllByTitle=f.getAllByTitle,e.queryByValue=f.queryByValue,e.queryAllByValue=f.queryAllByValue,e.getByValue=f.getByValue,e.getAllByValue=f.getAllByValue,e.queryByDisplayValue=f.queryByDisplayValue,e.queryAllByDisplayValue=f.queryAllByDisplayValue,e.getByDisplayValue=f.getByDisplayValue,e.getAllByDisplayValue=f.getAllByDisplayValue,e.queryByRole=f.queryByRole,e.queryAllByRole=f.queryAllByRole,e.getByRole=f.getByRole,e.getAllByRole=f.getAllByRole,e.queryByAttribute=f.queryByAttribute,e.queryAllByAttribute=f.queryAllByAttribute,e.firstResultOrNull=f.firstResultOrNull,e.debugDOM=f.debugDOM,e.getElementError=f.getElementError,e.wait=f.wait,e.waitForDomChange=f.waitForDomChange,e.waitForElement=f.waitForElement,e.getDefaultNormalizer=f.getDefaultNormalizer,e.getNodeText=f.getNodeText,e.fireEvent=f.fireEvent,e.getQueriesForElement=f.getQueriesForElement,e.prettyDOM=f.prettyDOM,e.configure=f.configure,e.createComponent=function A(u,e){var t=e.detectChanges,i=void 0===t||t,r=e.declarations,y=void 0===r?[]:r,l=e.providers,a=void 0===l?[]:l,n=e.imports,s=void 0===n?[]:n,o=e.schemas,c=void 0===o?[]:o;return function g(t,u,i,y){return new(i||(i=Promise))(function(e,r){function l(e){try{o(y.next(e))}catch(t){r(t)}}function n(e){try{o(y["throw"](e))}catch(t){r(t)}}function o(t){t.done?e(t.value):new i(function(e){e(t.value)}).then(l,n)}o((y=y.apply(t,u||[])).next())})}(this,void 0,void 0,function(){var r,l,n,o;return T(this,function(e){switch(e.label){case 0:return l=(r="string"==typeof u)?[x]:[],B.TestBed.configureTestingModule({declarations:p(y,l),providers:p(a),imports:p(s),schemas:p(c)}),n=r?function t(e){return B.TestBed.overrideComponent(x,{set:{template:e}}),B.TestBed.createComponent(x)}(u):function g(e){var t,r,l=e.component,n=e.parameters,o=void 0===n?{}:n,u=B.TestBed.createComponent(l);try{for(var i=function s(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}(Object.keys(o)),y=i.next();!y.done;y=i.next()){var a=y.value;u.componentInstance[a]=o[a]}}catch(c){t={error:c}}finally{try{y&&!y.done&&(r=i["return"])&&r.call(i)}finally{if(t)throw t.error}}return u}(u),[4,B.TestBed.compileComponents()];case 1:return e.sent(),i&&n.detectChanges(),o=Object.keys(f.fireEvent).reduce(function(e,l){return e[l]=function(e,t){var r=f.fireEvent[l](e,t);return n.detectChanges(),r},e},{}),[2,d({fixture:n,container:n.nativeElement,getFromTestBed:B.TestBed.get,debug:function(){return console.log(f.prettyDOM(n.nativeElement))}},o,f.getQueriesForElement(n.nativeElement))]}})})},e.configureJestSetup=function l(){var e=B.getTestBed(),t=B.TestBed.resetTestingModule;beforeAll(function(){B.TestBed.resetTestingModule(),B.TestBed.resetTestingModule=function(){return B.TestBed}}),afterEach(function(){e._activeFixtures.forEach(function(e){return e.destroy()}),e._instantiated=!1}),afterAll(function(){B.TestBed.resetTestingModule=t,B.TestBed.resetTestingModule()})},Object.defineProperty(e,"__esModule",{value:!0})}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/core/testing"),require("dom-testing-library"),require("@angular/platform-browser"),require("jest")):"function"==typeof define&&define.amd?define("@angular-extensions/testing-library",["exports","@angular/core","@angular/core/testing","dom-testing-library","@angular/platform-browser","jest"],t):t((e["angular-extensions"]=e["angular-extensions"]||{},e["angular-extensions"]["testing-library"]={}),e.ng.core,e.ng.core.testing,null,e.ng.platformBrowser)}(this,function(e,t,A,x,m){"use strict";var v=function(){return(v=Object.assign||function(e){for(var t,r=1,l=arguments.length;r<l;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function h(l,n){var o,i,a,e,y={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return e={next:t(0),"throw":t(1),"return":t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function r(e){if(o)throw new TypeError("Generator is already executing.");for(;y;)try{if(o=1,i&&(a=2&e[0]?i["return"]:e[0]?i["throw"]||((a=i["return"])&&a.call(i),0):i.next)&&!(a=a.call(i,e[1])).done)return a;switch(i=0,a&&(e=[2&e[0],a.value]),e[0]){case 0:case 1:a=e;break;case 4:return y.label++,{value:e[1],done:!1};case 5:y.label++,i=e[1],e=[0];continue;case 7:e=y.ops.pop(),y.trys.pop();continue;default:if(!(a=0<(a=y.trys).length&&a[a.length-1])&&(6===e[0]||2===e[0])){y=0;continue}if(3===e[0]&&(!a||e[1]>a[0]&&e[1]<a[3])){y.label=e[1];break}if(6===e[0]&&y.label<a[1]){y.label=a[1],a=e;break}if(a&&y.label<a[2]){y.label=a[2],y.ops.push(e);break}a[2]&&y.ops.pop(),y.trys.pop();continue}e=n.call(l,y)}catch(t){e=[6,t],i=0}finally{o=a=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([t,e])}}}function r(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var l,n,o=r.call(e),i=[];try{for(;(void 0===t||0<t--)&&!(l=o.next()).done;)i.push(l.value)}catch(a){n={error:a}}finally{try{l&&!l.done&&(r=o["return"])&&r.call(o)}finally{if(n)throw n.error}}return i}function b(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(r(arguments[t]));return e}var q=(l.prototype.ngOnInit=function(){this.elemtRef.nativeElement.removeAttribute("ng-version")},l.decorators=[{type:t.Component,args:[{selector:"wrapper-component",template:""}]}],l.ctorParameters=function(){return[{type:t.ElementRef}]},l);function l(e){this.elemtRef=e}function w(e,t){var r,l,n=t.componentProperties,o=void 0===n?{}:n;try{for(var i=function u(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}(Object.keys(o)),a=i.next();!a.done;a=i.next()){var y=a.value;e.componentInstance[y]=o[y]}}catch(s){r={error:s}}finally{try{a&&!a.done&&(l=i["return"])&&l.call(i)}finally{if(r)throw r.error}}return e}e.queries=x.queries,e.queryHelpers=x.queryHelpers,e.within=x.within,e.getByLabelText=x.getByLabelText,e.getAllByLabelText=x.getAllByLabelText,e.queryByLabelText=x.queryByLabelText,e.queryAllByLabelText=x.queryAllByLabelText,e.findByLabelText=x.findByLabelText,e.findAllByLabelText=x.findAllByLabelText,e.getByPlaceholderText=x.getByPlaceholderText,e.getAllByPlaceholderText=x.getAllByPlaceholderText,e.queryByPlaceholderText=x.queryByPlaceholderText,e.queryAllByPlaceholderText=x.queryAllByPlaceholderText,e.findByPlaceholderText=x.findByPlaceholderText,e.findAllByPlaceholderText=x.findAllByPlaceholderText,e.getByText=x.getByText,e.getAllByText=x.getAllByText,e.queryByText=x.queryByText,e.queryAllByText=x.queryAllByText,e.findByText=x.findByText,e.findAllByText=x.findAllByText,e.getByAltText=x.getByAltText,e.getAllByAltText=x.getAllByAltText,e.queryByAltText=x.queryByAltText,e.queryAllByAltText=x.queryAllByAltText,e.findByAltText=x.findByAltText,e.findAllByAltText=x.findAllByAltText,e.getByTitle=x.getByTitle,e.getAllByTitle=x.getAllByTitle,e.queryByTitle=x.queryByTitle,e.queryAllByTitle=x.queryAllByTitle,e.findByTitle=x.findByTitle,e.findAllByTitle=x.findAllByTitle,e.getByDisplayValue=x.getByDisplayValue,e.getAllByDisplayValue=x.getAllByDisplayValue,e.queryByDisplayValue=x.queryByDisplayValue,e.queryAllByDisplayValue=x.queryAllByDisplayValue,e.findByDisplayValue=x.findByDisplayValue,e.findAllByDisplayValue=x.findAllByDisplayValue,e.getByRole=x.getByRole,e.getAllByRole=x.getAllByRole,e.queryByRole=x.queryByRole,e.queryAllByRole=x.queryAllByRole,e.findByRole=x.findByRole,e.findAllByRole=x.findAllByRole,e.getByTestId=x.getByTestId,e.getAllByTestId=x.getAllByTestId,e.queryByTestId=x.queryByTestId,e.queryAllByTestId=x.queryAllByTestId,e.findByTestId=x.findByTestId,e.findAllByTestId=x.findAllByTestId,e.queryByAttribute=x.queryByAttribute,e.queryAllByAttribute=x.queryAllByAttribute,e.debugDOM=x.debugDOM,e.getElementError=x.getElementError,e.wait=x.wait,e.waitForDomChange=x.waitForDomChange,e.waitForElement=x.waitForElement,e.waitForElementToBeRemoved=x.waitForElementToBeRemoved,e.getDefaultNormalizer=x.getDefaultNormalizer,e.getNodeText=x.getNodeText,e.fireEvent=x.fireEvent,e.getQueriesForElement=x.getQueriesForElement,e.prettyDOM=x.prettyDOM,e.configure=x.configure,e.render=function E(a,e){var t=e.detectChanges,y=void 0===t||t,r=e.declarations,u=void 0===r?[]:r,l=e.imports,s=void 0===l?[]:l,n=e.providers,c=void 0===n?[]:n,o=e.schemas,d=void 0===o?[]:o,f=e.queries,i=e.wrapper,B=void 0===i?q:i,p=e.componentProperties,T=void 0===p?{}:p;return function g(t,i,a,y){return new(a||(a=Promise))(function(e,r){function l(e){try{o(y.next(e))}catch(t){r(t)}}function n(e){try{o(y["throw"](e))}catch(t){r(t)}}function o(t){t.done?e(t.value):new a(function(e){e(t.value)}).then(l,n)}o((y=y.apply(t,i||[])).next())})}(this,void 0,void 0,function(){var t,r,n,l;return h(this,function(e){switch(e.label){case 0:return r=(t="string"==typeof a)?[B]:[a],A.TestBed.configureTestingModule({declarations:b(u,r),providers:b(c),imports:b(s),schemas:b(d)}),n=t?function i(e,t){var r=t.wrapper,l=t.componentProperties;A.TestBed.overrideComponent(r,{set:{template:e}});var n=A.TestBed.createComponent(r),o=e.match(/\<(.*?)\ /)||e.match(/\<(.*?)\>/);if(o)return w(n.debugElement.query(m.By.css(o[1])),{componentProperties:l}),n;throw Error("Template "+e+" is not valid.")}(a,{wrapper:B,componentProperties:T}):function o(e,t){var r=t.componentProperties,l=void 0===r?{}:r,n=A.TestBed.createComponent(e);return w(n,{componentProperties:l}),n}(a,{componentProperties:T}),[4,A.TestBed.compileComponents()];case 1:return e.sent(),y&&n.detectChanges(),l=Object.keys(x.fireEvent).reduce(function(e,l){return e[l]=function(e,t){var r=x.fireEvent[l](e,t);return n.detectChanges(),r},e},{}),[2,v({fixture:n,container:n.nativeElement,debug:function(e){return void 0===e&&(e=n.nativeElement),console.log(x.prettyDOM(e))}},x.getQueriesForElement(n.nativeElement,f),l)]}})})},e.configureJestSetup=function n(){var e=A.getTestBed(),t=A.TestBed.resetTestingModule;beforeAll(function(){A.TestBed.resetTestingModule(),A.TestBed.resetTestingModule=function(){return A.TestBed}}),afterEach(function(){e._activeFixtures.forEach(function(e){return e.destroy()}),e._instantiated=!1}),afterAll(function(){A.TestBed.resetTestingModule=t,A.TestBed.resetTestingModule()})},Object.defineProperty(e,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=angular-extensions-testing-library.umd.min.js.map |
@@ -8,4 +8,4 @@ /** | ||
*/ | ||
export { createComponent, configureJestSetup, queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from './public_api'; | ||
export { render, configureJestSetup, queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from './public_api'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsMDlCQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEscW1DQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ== |
@@ -5,2 +5,5 @@ /** | ||
*/ | ||
/** @typedef {?} */ | ||
var RenderResultQueries; | ||
export { RenderResultQueries }; | ||
/** | ||
@@ -15,29 +18,26 @@ * @record | ||
/** @type {?} */ | ||
RenderResult.prototype.getFromTestBed; | ||
/** @type {?} */ | ||
RenderResult.prototype.fixture; | ||
// unsupported: template constraints. | ||
/** | ||
* @record | ||
* @template C, Q | ||
*/ | ||
export function Options() { } | ||
export function RenderOptions() { } | ||
/** @type {?|undefined} */ | ||
Options.prototype.detectChanges; | ||
/** @type {?} */ | ||
Options.prototype.declarations; | ||
RenderOptions.prototype.detectChanges; | ||
/** @type {?|undefined} */ | ||
Options.prototype.providers; | ||
RenderOptions.prototype.declarations; | ||
/** @type {?|undefined} */ | ||
Options.prototype.imports; | ||
RenderOptions.prototype.providers; | ||
/** @type {?|undefined} */ | ||
Options.prototype.schemas; | ||
/** | ||
* @record | ||
* @template T | ||
*/ | ||
export function ComponentInput() { } | ||
/** @type {?} */ | ||
ComponentInput.prototype.component; | ||
RenderOptions.prototype.imports; | ||
/** @type {?|undefined} */ | ||
ComponentInput.prototype.parameters; | ||
RenderOptions.prototype.schemas; | ||
/** @type {?|undefined} */ | ||
RenderOptions.prototype.componentProperties; | ||
/** @type {?|undefined} */ | ||
RenderOptions.prototype.queries; | ||
/** @type {?|undefined} */ | ||
RenderOptions.prototype.wrapper; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBGaXJlT2JqZWN0IH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUmVzdWx0IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0UXVlcmllc0ZvckVsZW1lbnQ+LCBGaXJlT2JqZWN0IHtcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgZGVidWc6ICgpID0+IHZvaWQ7XG4gIGdldEZyb21UZXN0QmVkOiAodG9rZW46IGFueSwgbm90Rm91bmRWYWx1ZT86IGFueSkgPT4gYW55O1xuICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuO1xuICBkZWNsYXJhdGlvbnM6IGFueVtdO1xuICBwcm92aWRlcnM/OiBhbnlbXTtcbiAgaW1wb3J0cz86IGFueVtdO1xuICBzY2hlbWFzPzogYW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50SW5wdXQ8VD4ge1xuICBjb21wb25lbnQ6IFR5cGU8VD47XG4gIHBhcmFtZXRlcnM/OiBQYXJ0aWFsPFQ+O1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEZpcmVPYmplY3QsIFF1ZXJpZXMsIHF1ZXJpZXMsIEJvdW5kRnVuY3Rpb24gfSBmcm9tICdkb20tdGVzdGluZy1saWJyYXJ5JztcblxuZXhwb3J0IHR5cGUgUmVuZGVyUmVzdWx0UXVlcmllczxRIGV4dGVuZHMgUXVlcmllcyA9IHR5cGVvZiBxdWVyaWVzPiA9IHsgW1AgaW4ga2V5b2YgUV06IEJvdW5kRnVuY3Rpb248UVtQXT4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJSZXN1bHQgZXh0ZW5kcyBSZW5kZXJSZXN1bHRRdWVyaWVzLCBGaXJlT2JqZWN0IHtcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgZGVidWc6IChlbGVtZW50PzogSFRNTEVsZW1lbnQpID0+IHZvaWQ7XG4gIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJPcHRpb25zPEMsIFEgZXh0ZW5kcyBRdWVyaWVzID0gdHlwZW9mIHF1ZXJpZXM+IHtcbiAgZGV0ZWN0Q2hhbmdlcz86IGJvb2xlYW47XG4gIGRlY2xhcmF0aW9ucz86IGFueVtdO1xuICBwcm92aWRlcnM/OiBhbnlbXTtcbiAgaW1wb3J0cz86IGFueVtdO1xuICBzY2hlbWFzPzogYW55W107XG4gIGNvbXBvbmVudFByb3BlcnRpZXM/OiBQYXJ0aWFsPEM+O1xuICBxdWVyaWVzPzogUTtcbiAgd3JhcHBlcj86IFR5cGU8YW55Pjtcbn1cbiJdfQ== |
@@ -9,3 +9,4 @@ /** | ||
import { getQueriesForElement, prettyDOM, fireEvent } from 'dom-testing-library'; | ||
class TestComponent { | ||
import { By } from '@angular/platform-browser'; | ||
class WrapperComponent { | ||
/** | ||
@@ -24,7 +25,7 @@ * @param {?} elemtRef | ||
} | ||
TestComponent.decorators = [ | ||
{ type: Component, args: [{ selector: 'test-component', template: '' },] }, | ||
WrapperComponent.decorators = [ | ||
{ type: Component, args: [{ selector: 'wrapper-component', template: '' },] }, | ||
]; | ||
/** @nocollapse */ | ||
TestComponent.ctorParameters = () => [ | ||
WrapperComponent.ctorParameters = () => [ | ||
{ type: ElementRef } | ||
@@ -34,3 +35,3 @@ ]; | ||
/** @type {?} */ | ||
TestComponent.prototype.elemtRef; | ||
WrapperComponent.prototype.elemtRef; | ||
} | ||
@@ -43,3 +44,3 @@ /** | ||
*/ | ||
export function createComponent(templateOrComponent, { detectChanges = true, declarations = [], providers = [], imports = [], schemas = [] }) { | ||
export function render(templateOrComponent, { detectChanges = true, declarations = [], imports = [], providers = [], schemas = [], queries, wrapper = WrapperComponent, componentProperties = {}, }) { | ||
return tslib_1.__awaiter(this, void 0, void 0, function* () { | ||
@@ -49,5 +50,5 @@ /** @type {?} */ | ||
/** @type {?} */ | ||
const testComponent = isTemplate ? [TestComponent] : []; | ||
const componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent]; | ||
TestBed.configureTestingModule({ | ||
declarations: [...declarations, ...testComponent], | ||
declarations: [...declarations, ...componentDeclarations], | ||
providers: [...providers], | ||
@@ -59,4 +60,4 @@ imports: [...imports], | ||
const fixture = isTemplate | ||
? createTestComponentFixture(/** @type {?} */ (templateOrComponent)) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent)); | ||
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper, componentProperties }) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties }); | ||
yield TestBed.compileComponents(); | ||
@@ -76,11 +77,14 @@ if (detectChanges) { | ||
}, /** @type {?} */ ({})); | ||
return Object.assign({ fixture, container: fixture.nativeElement, getFromTestBed: TestBed.get, debug: () => console.log(prettyDOM(fixture.nativeElement)) }, eventsWithDetectChanges, getQueriesForElement(fixture.nativeElement)); | ||
return /** @type {?} */ (Object.assign({ fixture, container: fixture.nativeElement, debug: (element = fixture.nativeElement) => console.log(prettyDOM(element)) }, getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges)); | ||
}); | ||
} | ||
/** | ||
* Creates the wrapper component and sets its the template to the to-be-tested component | ||
* @template T | ||
* @param {?} template | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createTestComponentFixture(template) { | ||
TestBed.overrideComponent(TestComponent, { | ||
function createWrapperComponentFixture(template, { wrapper, componentProperties, }) { | ||
TestBed.overrideComponent(wrapper, { | ||
set: { | ||
@@ -90,15 +94,37 @@ template: template, | ||
}); | ||
return TestBed.createComponent(TestComponent); | ||
/** @type {?} */ | ||
const fixture = TestBed.createComponent(wrapper); | ||
/** @type {?} */ | ||
const componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/); | ||
if (!componentSelector) { | ||
throw Error(`Template ${template} is not valid.`); | ||
} | ||
/** @type {?} */ | ||
const sut = fixture.debugElement.query(By.css(componentSelector[1])); | ||
setComponentProperties(sut, { componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Creates the components and sets its properties | ||
* @template T | ||
* @param {?} componentInput | ||
* @param {?} component | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createComponentFixture(componentInput) { | ||
const { component, parameters = {} } = componentInput; | ||
function createComponentFixture(component, { componentProperties = {}, }) { | ||
/** @type {?} */ | ||
const fixture = TestBed.createComponent(component); | ||
for (const key of Object.keys(parameters)) { | ||
fixture.componentInstance[key] = parameters[key]; | ||
setComponentProperties(fixture, { componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Set the component properties | ||
* @template T | ||
* @param {?} fixture | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function setComponentProperties(fixture, { componentProperties = {}, }) { | ||
for (const key of Object.keys(componentProperties)) { | ||
fixture.componentInstance[key] = componentProperties[key]; | ||
} | ||
@@ -108,2 +134,2 @@ return fixture; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvdGVzdGluZy1saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE0QixNQUFNLHFCQUFxQixDQUFDO0FBSTNHLE1BQ00sYUFBYTs7OztJQUNqQixZQUFvQixRQUFvQjtRQUFwQixhQUFRLEdBQVIsUUFBUSxDQUFZO0tBQUk7Ozs7SUFFNUMsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMzRDs7O1lBTkYsU0FBUyxTQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7Ozs7WUFOM0IsVUFBVTs7Ozs7Ozs7Ozs7O0FBaUJ0QyxNQUFNLFVBQWdCLGVBQWUsQ0FDbkMsbUJBQStDLEVBQy9DLEVBQUUsYUFBYSxHQUFHLElBQUksRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFXOzs7UUFFaEcsTUFBTSxVQUFVLEdBQUcsT0FBTyxtQkFBbUIsS0FBSyxRQUFRLENBQUM7O1FBQzNELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXhELE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztZQUM3QixZQUFZLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUNqRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztTQUN0QixDQUFDLENBQUM7O1FBRUgsTUFBTSxPQUFPLEdBQUcsVUFBVTtZQUN4QixDQUFDLENBQUMsMEJBQTBCLG1CQUFTLG1CQUFtQixFQUFDO1lBQ3pELENBQUMsQ0FBQyxzQkFBc0IsbUJBQW9CLG1CQUFtQixFQUFDLENBQUM7UUFFbkUsTUFBTSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVsQyxJQUFJLGFBQWEsRUFBRTtZQUNqQixPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDekI7O1FBRUQsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FDM0QsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDZCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFvQixFQUFFLE9BQVksRUFBRSxFQUFFOztnQkFDbkQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QixPQUFPLE1BQU0sQ0FBQzthQUNmLENBQUM7WUFDRixPQUFPLE1BQU0sQ0FBQztTQUNmLG9CQUNELEVBQStCLEVBQ2hDLENBQUM7UUFFRix1QkFDRSxPQUFPLEVBQ1AsU0FBUyxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQ2hDLGNBQWMsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUMzQixLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQ3ZELHVCQUF1QixFQUN2QixvQkFBb0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQzlDOztDQUNIOzs7OztBQUVELFNBQVMsMEJBQTBCLENBQUMsUUFBZ0I7SUFDbEQsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRTtRQUN2QyxHQUFHLEVBQUU7WUFDSCxRQUFRLEVBQUUsUUFBUTtTQUNuQjtLQUNGLENBQUMsQ0FBQztJQUNILE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUMvQzs7Ozs7O0FBRUQsU0FBUyxzQkFBc0IsQ0FBSSxjQUFpQztJQUNsRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQUUsR0FBRyxjQUFjLENBQUM7O0lBQ3RELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3pDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDbEQ7SUFDRCxPQUFPLE9BQU8sQ0FBQztDQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IE9wdGlvbnMsIFJlbmRlclJlc3VsdCwgQ29tcG9uZW50SW5wdXQgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3Rlc3QtY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBUZXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPih0ZW1wbGF0ZTogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25zKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihjb21wb25lbnQ6IENvbXBvbmVudElucHV0PFQ+LCBvcHRpb25zOiBPcHRpb25zKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgQ29tcG9uZW50SW5wdXQ8VD4sXG4gIHsgZGV0ZWN0Q2hhbmdlcyA9IHRydWUsIGRlY2xhcmF0aW9ucyA9IFtdLCBwcm92aWRlcnMgPSBbXSwgaW1wb3J0cyA9IFtdLCBzY2hlbWFzID0gW10gfTogT3B0aW9ucyxcbik6IFByb21pc2U8UmVuZGVyUmVzdWx0PiB7XG4gIGNvbnN0IGlzVGVtcGxhdGUgPSB0eXBlb2YgdGVtcGxhdGVPckNvbXBvbmVudCA9PT0gJ3N0cmluZyc7XG4gIGNvbnN0IHRlc3RDb21wb25lbnQgPSBpc1RlbXBsYXRlID8gW1Rlc3RDb21wb25lbnRdIDogW107XG5cbiAgVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5kZWNsYXJhdGlvbnMsIC4uLnRlc3RDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVRlc3RDb21wb25lbnRGaXh0dXJlKDxzdHJpbmc+dGVtcGxhdGVPckNvbXBvbmVudClcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUoPENvbXBvbmVudElucHV0PFQ+PnRlbXBsYXRlT3JDb21wb25lbnQpO1xuXG4gIGF3YWl0IFRlc3RCZWQuY29tcGlsZUNvbXBvbmVudHMoKTtcblxuICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY29uc3QgZXZlbnRzV2l0aERldGVjdENoYW5nZXMgPSBPYmplY3Qua2V5cyhmaXJlRXZlbnQpLnJlZHVjZShcbiAgICAoZXZlbnRzLCBrZXkpID0+IHtcbiAgICAgIGV2ZW50c1trZXldID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zPzoge30pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZmlyZUV2ZW50W2tleV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBldmVudHM7XG4gICAgfSxcbiAgICB7fSBhcyBGaXJlRnVuY3Rpb24gJiBGaXJlT2JqZWN0LFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgZml4dHVyZSxcbiAgICBjb250YWluZXI6IGZpeHR1cmUubmF0aXZlRWxlbWVudCxcbiAgICBnZXRGcm9tVGVzdEJlZDogVGVzdEJlZC5nZXQsXG4gICAgZGVidWc6ICgpID0+IGNvbnNvbGUubG9nKHByZXR0eURPTShmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpKSxcbiAgICAuLi5ldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXN0Q29tcG9uZW50Rml4dHVyZSh0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQoVGVzdENvbXBvbmVudCwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuICByZXR1cm4gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoVGVzdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oY29tcG9uZW50SW5wdXQ6IENvbXBvbmVudElucHV0PFQ+KSB7XG4gIGNvbnN0IHsgY29tcG9uZW50LCBwYXJhbWV0ZXJzID0ge30gfSA9IGNvbXBvbmVudElucHV0O1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1ldGVycykpIHtcbiAgICBmaXh0dXJlLmNvbXBvbmVudEluc3RhbmNlW2tleV0gPSBwYXJhbWV0ZXJzW2tleV07XG4gIH1cbiAgcmV0dXJuIGZpeHR1cmU7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvdGVzdGluZy1saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxPQUFPLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFHM0csT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRS9DLE1BQ00sZ0JBQWdCOzs7O0lBQ3BCLFlBQW9CLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7S0FBSTs7OztJQUU1QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQzNEOzs7WUFORixTQUFTLFNBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTs7OztZQVA5QixVQUFVOzs7Ozs7Ozs7Ozs7QUFnQnRDLE1BQU0sVUFBZ0IsTUFBTSxDQUMxQixtQkFBcUMsRUFDckMsRUFDRSxhQUFhLEdBQUcsSUFBSSxFQUNwQixZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsRUFBRSxFQUNaLFNBQVMsR0FBRyxFQUFFLEVBQ2QsT0FBTyxHQUFHLEVBQUUsRUFDWixPQUFPLEVBQ1AsT0FBTyxHQUFHLGdCQUFnQixFQUMxQixtQkFBbUIsR0FBRyxFQUFFLEdBQ1A7OztRQUVuQixNQUFNLFVBQVUsR0FBRyxPQUFPLG1CQUFtQixLQUFLLFFBQVEsQ0FBQzs7UUFDM0QsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsQ0FBQyxD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QyxTQUFTLENBQUMsQ0FBQztJQUNuRCxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDekQsT0FBTyxPQUFPLENBQUM7Q0FDaEI7Ozs7Ozs7O0FBS0QsU0FBUyxzQkFBc0IsQ0FDN0IsT0FBMkMsRUFDM0MsRUFDRSxtQkFBbUIsR0FBRyxFQUFFLEdBR3pCO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7UUFDbEQsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzNEO0lBQ0QsT0FBTyxPQUFPLENBQUM7Q0FDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgVHlwZSwgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkLCBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IFJlbmRlclJlc3VsdCwgUmVuZGVyT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3dyYXBwZXItY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlcjxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgVHlwZTxUPixcbiAge1xuICAgIGRldGVjdENoYW5nZXMgPSB0cnVlLFxuICAgIGRlY2xhcmF0aW9ucyA9IFtdLFxuICAgIGltcG9ydHMgPSBbXSxcbiAgICBwcm92aWRlcnMgPSBbXSxcbiAgICBzY2hlbWFzID0gW10sXG4gICAgcXVlcmllcyxcbiAgICB3cmFwcGVyID0gV3JhcHBlckNvbXBvbmVudCxcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IFJlbmRlck9wdGlvbnM8VD4sXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCBjb21wb25lbnREZWNsYXJhdGlvbnMgPSBpc1RlbXBsYXRlID8gW3dyYXBwZXJdIDogW3RlbXBsYXRlT3JDb21wb25lbnRdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi5jb21wb25lbnREZWNsYXJhdGlvbnNdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlT3JDb21wb25lbnQgYXMgc3RyaW5nLCB7IHdyYXBwZXIsIGNvbXBvbmVudFByb3BlcnRpZXMgfSlcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUodGVtcGxhdGVPckNvbXBvbmVudCBhcyBUeXBlPFQ+LCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG5cbiAgYXdhaXQgVGVzdEJlZC5jb21waWxlQ29tcG9uZW50cygpO1xuXG4gIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjb25zdCBldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyA9IE9iamVjdC5rZXlzKGZpcmVFdmVudCkucmVkdWNlKFxuICAgIChldmVudHMsIGtleSkgPT4ge1xuICAgICAgZXZlbnRzW2tleV0gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiB7fSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaXJlRXZlbnRba2V5XShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICB9LFxuICAgIHt9IGFzIEZpcmVGdW5jdGlvbiAmIEZpcmVPYmplY3QsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXh0dXJlLFxuICAgIGNvbnRhaW5lcjogZml4dHVyZS5uYXRpdmVFbGVtZW50LFxuICAgIGRlYnVnOiAoZWxlbWVudCA9IGZpeHR1cmUubmF0aXZlRWxlbWVudCkgPT4gY29uc29sZS5sb2cocHJldHR5RE9NKGVsZW1lbnQpKSxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsIHF1ZXJpZXMpLFxuICAgIC4uLmV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzLFxuICB9IGFzIGFueTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB3cmFwcGVyIGNvbXBvbmVudCBhbmQgc2V0cyBpdHMgdGhlIHRlbXBsYXRlIHRvIHRoZSB0by1iZS10ZXN0ZWQgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlPFQ+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICB7XG4gICAgd3JhcHBlcixcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzLFxuICB9OiB7XG4gICAgd3JhcHBlcjogUmVuZGVyT3B0aW9uczxUPlsnd3JhcHBlciddO1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8YW55PiB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQod3JhcHBlciwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudCh3cmFwcGVyKTtcbiAgLy8gZ2V0IHRoZSBjb21wb25lbnQgc2VsZWN0b3IsIGUuZy4gPGZvbyBjb2xvcj1cImdyZWVuXCI+IGFuZCA8Zm9vPiByZXN1bHRzIGluIGZvb1xuICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcIC8pIHx8IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcPi8pO1xuICBpZiAoIWNvbXBvbmVudFNlbGVjdG9yKSB7XG4gICAgdGhyb3cgRXJyb3IoYFRlbXBsYXRlICR7dGVtcGxhdGV9IGlzIG5vdCB2YWxpZC5gKTtcbiAgfVxuXG4gIGNvbnN0IHN1dCA9IGZpeHR1cmUuZGVidWdFbGVtZW50LnF1ZXJ5KEJ5LmNzcyhjb21wb25lbnRTZWxlY3RvclsxXSkpO1xuICBzZXRDb21wb25lbnRQcm9wZXJ0aWVzKHN1dCwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuICByZXR1cm4gZml4dHVyZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBjb21wb25lbnRzIGFuZCBzZXRzIGl0cyBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oXG4gIGNvbXBvbmVudDogVHlwZTxUPixcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8VD4ge1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgc2V0Q29tcG9uZW50UHJvcGVydGllcyhmaXh0dXJlLCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG4gIHJldHVybiBmaXh0dXJlO1xufVxuXG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50IHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gc2V0Q29tcG9uZW50UHJvcGVydGllczxUPihcbiAgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxUPiB8IERlYnVnRWxlbWVudCxcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbikge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21wb25lbnRQcm9wZXJ0aWVzKSkge1xuICAgIGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IGNvbXBvbmVudFByb3BlcnRpZXNba2V5XTtcbiAgfVxuICByZXR1cm4gZml4dHVyZTtcbn1cbiJdfQ== |
@@ -8,6 +8,6 @@ /** | ||
*/ | ||
export { createComponent } from './lib/testing-library'; | ||
export { render } from './lib/testing-library'; | ||
export { configureJestSetup } from './jest-utils'; | ||
export { queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library'; | ||
export { queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsZ0NBQWMsdUJBQXVCLENBQUM7QUFDdEMsbUNBQWMsY0FBYyxDQUFDO0FBQzdCLHE3QkFBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdGVzdGluZy1saWJyYXJ5XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3RpbmctbGlicmFyeSc7XG5leHBvcnQgKiBmcm9tICcuL2plc3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsdUJBQWMsdUJBQXVCLENBQUM7QUFDdEMsbUNBQWMsY0FBYyxDQUFDO0FBQzdCLHlrQ0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdGVzdGluZy1saWJyYXJ5XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3RpbmctbGlicmFyeSc7XG5leHBvcnQgKiBmcm9tICcuL2plc3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG4iXX0= |
@@ -8,4 +8,4 @@ /** | ||
*/ | ||
export { createComponent, configureJestSetup, queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from './public_api'; | ||
export { render, configureJestSetup, queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from './public_api'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsMDlCQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEscW1DQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ== |
@@ -5,2 +5,5 @@ /** | ||
*/ | ||
/** @typedef {?} */ | ||
var RenderResultQueries; | ||
export { RenderResultQueries }; | ||
/** | ||
@@ -15,29 +18,26 @@ * @record | ||
/** @type {?} */ | ||
RenderResult.prototype.getFromTestBed; | ||
/** @type {?} */ | ||
RenderResult.prototype.fixture; | ||
// unsupported: template constraints. | ||
/** | ||
* @record | ||
* @template C, Q | ||
*/ | ||
export function Options() { } | ||
export function RenderOptions() { } | ||
/** @type {?|undefined} */ | ||
Options.prototype.detectChanges; | ||
/** @type {?} */ | ||
Options.prototype.declarations; | ||
RenderOptions.prototype.detectChanges; | ||
/** @type {?|undefined} */ | ||
Options.prototype.providers; | ||
RenderOptions.prototype.declarations; | ||
/** @type {?|undefined} */ | ||
Options.prototype.imports; | ||
RenderOptions.prototype.providers; | ||
/** @type {?|undefined} */ | ||
Options.prototype.schemas; | ||
/** | ||
* @record | ||
* @template T | ||
*/ | ||
export function ComponentInput() { } | ||
/** @type {?} */ | ||
ComponentInput.prototype.component; | ||
RenderOptions.prototype.imports; | ||
/** @type {?|undefined} */ | ||
ComponentInput.prototype.parameters; | ||
RenderOptions.prototype.schemas; | ||
/** @type {?|undefined} */ | ||
RenderOptions.prototype.componentProperties; | ||
/** @type {?|undefined} */ | ||
RenderOptions.prototype.queries; | ||
/** @type {?|undefined} */ | ||
RenderOptions.prototype.wrapper; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBGaXJlT2JqZWN0IH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUmVzdWx0IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0UXVlcmllc0ZvckVsZW1lbnQ+LCBGaXJlT2JqZWN0IHtcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgZGVidWc6ICgpID0+IHZvaWQ7XG4gIGdldEZyb21UZXN0QmVkOiAodG9rZW46IGFueSwgbm90Rm91bmRWYWx1ZT86IGFueSkgPT4gYW55O1xuICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuO1xuICBkZWNsYXJhdGlvbnM6IGFueVtdO1xuICBwcm92aWRlcnM/OiBhbnlbXTtcbiAgaW1wb3J0cz86IGFueVtdO1xuICBzY2hlbWFzPzogYW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50SW5wdXQ8VD4ge1xuICBjb21wb25lbnQ6IFR5cGU8VD47XG4gIHBhcmFtZXRlcnM/OiBQYXJ0aWFsPFQ+O1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEZpcmVPYmplY3QsIFF1ZXJpZXMsIHF1ZXJpZXMsIEJvdW5kRnVuY3Rpb24gfSBmcm9tICdkb20tdGVzdGluZy1saWJyYXJ5JztcblxuZXhwb3J0IHR5cGUgUmVuZGVyUmVzdWx0UXVlcmllczxRIGV4dGVuZHMgUXVlcmllcyA9IHR5cGVvZiBxdWVyaWVzPiA9IHsgW1AgaW4ga2V5b2YgUV06IEJvdW5kRnVuY3Rpb248UVtQXT4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJSZXN1bHQgZXh0ZW5kcyBSZW5kZXJSZXN1bHRRdWVyaWVzLCBGaXJlT2JqZWN0IHtcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgZGVidWc6IChlbGVtZW50PzogSFRNTEVsZW1lbnQpID0+IHZvaWQ7XG4gIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJPcHRpb25zPEMsIFEgZXh0ZW5kcyBRdWVyaWVzID0gdHlwZW9mIHF1ZXJpZXM+IHtcbiAgZGV0ZWN0Q2hhbmdlcz86IGJvb2xlYW47XG4gIGRlY2xhcmF0aW9ucz86IGFueVtdO1xuICBwcm92aWRlcnM/OiBhbnlbXTtcbiAgaW1wb3J0cz86IGFueVtdO1xuICBzY2hlbWFzPzogYW55W107XG4gIGNvbXBvbmVudFByb3BlcnRpZXM/OiBQYXJ0aWFsPEM+O1xuICBxdWVyaWVzPzogUTtcbiAgd3JhcHBlcj86IFR5cGU8YW55Pjtcbn1cbiJdfQ== |
@@ -9,4 +9,5 @@ /** | ||
import { getQueriesForElement, prettyDOM, fireEvent } from 'dom-testing-library'; | ||
var TestComponent = /** @class */ (function () { | ||
function TestComponent(elemtRef) { | ||
import { By } from '@angular/platform-browser'; | ||
var WrapperComponent = /** @class */ (function () { | ||
function WrapperComponent(elemtRef) { | ||
this.elemtRef = elemtRef; | ||
@@ -17,3 +18,3 @@ } | ||
*/ | ||
TestComponent.prototype.ngOnInit = /** | ||
WrapperComponent.prototype.ngOnInit = /** | ||
* @return {?} | ||
@@ -24,14 +25,14 @@ */ | ||
}; | ||
TestComponent.decorators = [ | ||
{ type: Component, args: [{ selector: 'test-component', template: '' },] }, | ||
WrapperComponent.decorators = [ | ||
{ type: Component, args: [{ selector: 'wrapper-component', template: '' },] }, | ||
]; | ||
/** @nocollapse */ | ||
TestComponent.ctorParameters = function () { return [ | ||
WrapperComponent.ctorParameters = function () { return [ | ||
{ type: ElementRef } | ||
]; }; | ||
return TestComponent; | ||
return WrapperComponent; | ||
}()); | ||
if (false) { | ||
/** @type {?} */ | ||
TestComponent.prototype.elemtRef; | ||
WrapperComponent.prototype.elemtRef; | ||
} | ||
@@ -44,13 +45,13 @@ /** | ||
*/ | ||
export function createComponent(templateOrComponent, _a) { | ||
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.providers, providers = _d === void 0 ? [] : _d, _e = _a.imports, imports = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f; | ||
export function render(templateOrComponent, _a) { | ||
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.imports, imports = _d === void 0 ? [] : _d, _e = _a.providers, providers = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f, queries = _a.queries, _g = _a.wrapper, wrapper = _g === void 0 ? WrapperComponent : _g, _h = _a.componentProperties, componentProperties = _h === void 0 ? {} : _h; | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var isTemplate, testComponent, fixture, eventsWithDetectChanges; | ||
return tslib_1.__generator(this, function (_g) { | ||
switch (_g.label) { | ||
var isTemplate, componentDeclarations, fixture, eventsWithDetectChanges; | ||
return tslib_1.__generator(this, function (_j) { | ||
switch (_j.label) { | ||
case 0: | ||
isTemplate = typeof templateOrComponent === 'string'; | ||
testComponent = isTemplate ? [TestComponent] : []; | ||
componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent]; | ||
TestBed.configureTestingModule({ | ||
declarations: tslib_1.__spread(declarations, testComponent), | ||
declarations: tslib_1.__spread(declarations, componentDeclarations), | ||
providers: tslib_1.__spread(providers), | ||
@@ -61,7 +62,7 @@ imports: tslib_1.__spread(imports), | ||
fixture = isTemplate | ||
? createTestComponentFixture(/** @type {?} */ (templateOrComponent)) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent)); | ||
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper: wrapper, componentProperties: componentProperties }) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties: componentProperties }); | ||
return [4 /*yield*/, TestBed.compileComponents()]; | ||
case 1: | ||
_g.sent(); | ||
_j.sent(); | ||
if (detectChanges) { | ||
@@ -79,3 +80,6 @@ fixture.detectChanges(); | ||
}, /** @type {?} */ ({})); | ||
return [2 /*return*/, tslib_1.__assign({ fixture: fixture, container: fixture.nativeElement, getFromTestBed: TestBed.get, debug: function () { return console.log(prettyDOM(fixture.nativeElement)); } }, eventsWithDetectChanges, getQueriesForElement(fixture.nativeElement))]; | ||
return [2 /*return*/, /** @type {?} */ (tslib_1.__assign({ fixture: fixture, container: fixture.nativeElement, debug: function (element) { | ||
if (element === void 0) { element = fixture.nativeElement; } | ||
return console.log(prettyDOM(element)); | ||
} }, getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges))]; | ||
} | ||
@@ -86,7 +90,11 @@ }); | ||
/** | ||
* Creates the wrapper component and sets its the template to the to-be-tested component | ||
* @template T | ||
* @param {?} template | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createTestComponentFixture(template) { | ||
TestBed.overrideComponent(TestComponent, { | ||
function createWrapperComponentFixture(template, _a) { | ||
var wrapper = _a.wrapper, componentProperties = _a.componentProperties; | ||
TestBed.overrideComponent(wrapper, { | ||
set: { | ||
@@ -96,18 +104,42 @@ template: template, | ||
}); | ||
return TestBed.createComponent(TestComponent); | ||
/** @type {?} */ | ||
var fixture = TestBed.createComponent(wrapper); | ||
/** @type {?} */ | ||
var componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/); | ||
if (!componentSelector) { | ||
throw Error("Template " + template + " is not valid."); | ||
} | ||
/** @type {?} */ | ||
var sut = fixture.debugElement.query(By.css(componentSelector[1])); | ||
setComponentProperties(sut, { componentProperties: componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Creates the components and sets its properties | ||
* @template T | ||
* @param {?} componentInput | ||
* @param {?} component | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createComponentFixture(componentInput) { | ||
var e_1, _a; | ||
var component = componentInput.component, _b = componentInput.parameters, parameters = _b === void 0 ? {} : _b; | ||
function createComponentFixture(component, _a) { | ||
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b; | ||
/** @type {?} */ | ||
var fixture = TestBed.createComponent(component); | ||
setComponentProperties(fixture, { componentProperties: componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Set the component properties | ||
* @template T | ||
* @param {?} fixture | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function setComponentProperties(fixture, _a) { | ||
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b; | ||
var e_1, _c; | ||
try { | ||
for (var _c = tslib_1.__values(Object.keys(parameters)), _d = _c.next(); !_d.done; _d = _c.next()) { | ||
var key = _d.value; | ||
fixture.componentInstance[key] = parameters[key]; | ||
for (var _d = tslib_1.__values(Object.keys(componentProperties)), _e = _d.next(); !_e.done; _e = _d.next()) { | ||
var key = _e.value; | ||
fixture.componentInstance[key] = componentProperties[key]; | ||
} | ||
@@ -118,3 +150,3 @@ } | ||
try { | ||
if (_d && !_d.done && (_a = _c.return)) _a.call(_c); | ||
if (_e && !_e.done && (_c = _d.return)) _c.call(_d); | ||
} | ||
@@ -126,2 +158,2 @@ finally { if (e_1) throw e_1.error; } | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvdGVzdGluZy1saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE0QixNQUFNLHFCQUFxQixDQUFDOztJQU16Ryx1QkFBb0IsUUFBb0I7UUFBcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtLQUFJOzs7O0lBRTVDLGdDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMzRDs7Z0JBTkYsU0FBUyxTQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7Ozs7Z0JBTjNCLFVBQVU7O3dCQUF0Qzs7Ozs7Ozs7Ozs7O0FBaUJBLE1BQU0sVUFBZ0IsZUFBZSxDQUNuQyxtQkFBK0MsRUFDL0MsRUFBZ0c7UUFBOUYscUJBQW9CLEVBQXBCLHlDQUFvQixFQUFFLG9CQUFpQixFQUFqQixzQ0FBaUIsRUFBRSxpQkFBYyxFQUFkLG1DQUFjLEVBQUUsZUFBWSxFQUFaLGlDQUFZLEVBQUUsZUFBWSxFQUFaLGlDQUFZOzs7Ozs7b0JBRS9FLFVBQVUsR0FBRyxPQUFPLG1CQUFtQixLQUFLLFFBQVEsQ0FBQztvQkFDckQsYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUV4RCxPQUFPLENBQUMsc0JBQXNCLENBQUM7d0JBQzdCLFlBQVksbUJBQU0sWUFBWSxFQUFLLGFBQWEsQ0FBQzt3QkFDakQsU0FBUyxtQkFBTSxTQUFTLENBQUM7d0JBQ3pCLE9BQU8sbUJBQU0sT0FBTyxDQUFDO3dCQUNyQixPQUFPLG1CQUFNLE9BQU8sQ0FBQztxQkFDdEIsQ0FBQyxDQUFDO29CQUVHLE9BQU8sR0FBRyxVQUFVO3dCQUN4QixDQUFDLENBQUMsMEJBQTBCLG1CQUFTLG1CQUFtQixFQUFDO3dCQUN6RCxDQUFDLENBQUMsc0JBQXNCLG1CQUFvQixtQkFBbUIsRUFBQyxDQUFDO29CQUVuRSxxQkFBTSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBQTs7b0JBQWpDLFNBQWlDLENBQUM7b0JBRWxDLElBQUksYUFBYSxFQUFFO3dCQUNqQixPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7cUJBQ3pCO29CQUVLLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUMzRCxVQUFDLE1BQU0sRUFBRSxHQUFHO3dCQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFDLE9BQW9CLEVBQUUsT0FBWTs7NEJBQy9DLElBQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQ2hELE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDeEIsT0FBTyxNQUFNLENBQUM7eUJBQ2YsQ0FBQzt3QkFDRixPQUFPLE1BQU0sQ0FBQztxQkFDZixvQkFDRCxFQUErQixFQUNoQyxDQUFDO29CQUVGLHlDQUNFLE9BQU8sU0FBQSxFQUNQLFNBQVMsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUNoQyxjQUFjLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFDM0IsS0FBSyxFQUFFLGNBQU0sT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBN0MsQ0FBNkMsSUFDdkQsdUJBQXVCLEVBQ3ZCLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FDOUM7Ozs7Q0FDSDs7Ozs7QUFFRCxTQUFTLDBCQUEwQixDQUFDLFFBQWdCO0lBQ2xELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUU7UUFDdkMsR0FBRyxFQUFFO1lBQ0gsUUFBUSxFQUFFLFFBQVE7U0FDbkI7S0FDRixDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7Q0FDL0M7Ozs7OztBQUVELFNBQVMsc0JBQXNCLENBQUksY0FBaUM7O0lBQzFELElBQUEsb0NBQVMsRUFBRSw4QkFBZSxFQUFmLG9DQUFlLENBQW9COztJQUN0RCxJQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDOztRQUNuRCxLQUFrQixJQUFBLEtBQUEsaUJBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtZQUF0QyxJQUFNLEdBQUcsV0FBQTtZQUNaLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEQ7Ozs7Ozs7OztJQUNELE9BQU8sT0FBTyxDQUFDO0NBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlc3RCZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgZ2V0UXVlcmllc0ZvckVsZW1lbnQsIHByZXR0eURPTSwgZmlyZUV2ZW50LCBGaXJlT2JqZWN0LCBGaXJlRnVuY3Rpb24gfSBmcm9tICdkb20tdGVzdGluZy1saWJyYXJ5JztcblxuaW1wb3J0IHsgT3B0aW9ucywgUmVuZGVyUmVzdWx0LCBDb21wb25lbnRJbnB1dCB9IGZyb20gJy4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiAndGVzdC1jb21wb25lbnQnLCB0ZW1wbGF0ZTogJycgfSlcbmNsYXNzIFRlc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW10UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZWxlbXRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ25nLXZlcnNpb24nKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50PFQ+KHRlbXBsYXRlOiBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMpOiBQcm9taXNlPFJlbmRlclJlc3VsdD47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50PFQ+KGNvbXBvbmVudDogQ29tcG9uZW50SW5wdXQ8VD4sIG9wdGlvbnM6IE9wdGlvbnMpOiBQcm9taXNlPFJlbmRlclJlc3VsdD47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50PFQ+KFxuICB0ZW1wbGF0ZU9yQ29tcG9uZW50OiBzdHJpbmcgfCBDb21wb25lbnRJbnB1dDxUPixcbiAgeyBkZXRlY3RDaGFuZ2VzID0gdHJ1ZSwgZGVjbGFyYXRpb25zID0gW10sIHByb3ZpZGVycyA9IFtdLCBpbXBvcnRzID0gW10sIHNjaGVtYXMgPSBbXSB9OiBPcHRpb25zLFxuKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+IHtcbiAgY29uc3QgaXNUZW1wbGF0ZSA9IHR5cGVvZiB0ZW1wbGF0ZU9yQ29tcG9uZW50ID09PSAnc3RyaW5nJztcbiAgY29uc3QgdGVzdENvbXBvbmVudCA9IGlzVGVtcGxhdGUgPyBbVGVzdENvbXBvbmVudF0gOiBbXTtcblxuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogWy4uLmRlY2xhcmF0aW9ucywgLi4udGVzdENvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbLi4ucHJvdmlkZXJzXSxcbiAgICBpbXBvcnRzOiBbLi4uaW1wb3J0c10sXG4gICAgc2NoZW1hczogWy4uLnNjaGVtYXNdLFxuICB9KTtcblxuICBjb25zdCBmaXh0dXJlID0gaXNUZW1wbGF0ZVxuICAgID8gY3JlYXRlVGVzdENvbXBvbmVudEZpeHR1cmUoPHN0cmluZz50ZW1wbGF0ZU9yQ29tcG9uZW50KVxuICAgIDogY3JlYXRlQ29tcG9uZW50Rml4dHVyZSg8Q29tcG9uZW50SW5wdXQ8VD4+dGVtcGxhdGVPckNvbXBvbmVudCk7XG5cbiAgYXdhaXQgVGVzdEJlZC5jb21waWxlQ29tcG9uZW50cygpO1xuXG4gIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjb25zdCBldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyA9IE9iamVjdC5rZXlzKGZpcmVFdmVudCkucmVkdWNlKFxuICAgIChldmVudHMsIGtleSkgPT4ge1xuICAgICAgZXZlbnRzW2tleV0gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiB7fSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaXJlRXZlbnRba2V5XShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICB9LFxuICAgIHt9IGFzIEZpcmVGdW5jdGlvbiAmIEZpcmVPYmplY3QsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXh0dXJlLFxuICAgIGNvbnRhaW5lcjogZml4dHVyZS5uYXRpdmVFbGVtZW50LFxuICAgIGdldEZyb21UZXN0QmVkOiBUZXN0QmVkLmdldCxcbiAgICBkZWJ1ZzogKCkgPT4gY29uc29sZS5sb2cocHJldHR5RE9NKGZpeHR1cmUubmF0aXZlRWxlbWVudCkpLFxuICAgIC4uLmV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzLFxuICAgIC4uLmdldFF1ZXJpZXNGb3JFbGVtZW50KGZpeHR1cmUubmF0aXZlRWxlbWVudCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRlc3RDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgVGVzdEJlZC5vdmVycmlkZUNvbXBvbmVudChUZXN0Q29tcG9uZW50LCB7XG4gICAgc2V0OiB7XG4gICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUsXG4gICAgfSxcbiAgfSk7XG4gIHJldHVybiBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudChUZXN0Q29tcG9uZW50KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50Rml4dHVyZTxUPihjb21wb25lbnRJbnB1dDogQ29tcG9uZW50SW5wdXQ8VD4pIHtcbiAgY29uc3QgeyBjb21wb25lbnQsIHBhcmFtZXRlcnMgPSB7fSB9ID0gY29tcG9uZW50SW5wdXQ7XG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKSkge1xuICAgIGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IHBhcmFtZXRlcnNba2V5XTtcbiAgfVxuICByZXR1cm4gZml4dHVyZTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvdGVzdGluZy1saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxPQUFPLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFHM0csT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztJQUk3QywwQkFBb0IsUUFBb0I7UUFBcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtLQUFJOzs7O0lBRTVDLG1DQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMzRDs7Z0JBTkYsU0FBUyxTQUFDLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7Ozs7Z0JBUDlCLFVBQVU7OzJCQUF0Qzs7Ozs7Ozs7Ozs7O0FBZ0JBLE1BQU0sVUFBZ0IsTUFBTSxDQUMxQixtQkFBcUMsRUFDckMsRUFTbUI7UUFSakIscUJBQW9CLEVBQXBCLHlDQUFvQixFQUNwQixvQkFBaUIsRUFBakIsc0NBQWlCLEVBQ2pCLGVBQVksRUFBWixpQ0FBWSxFQUNaLGlCQUFjLEVBQWQsbUNBQWMsRUFDZCxlQUFZLEVBQVosaUNBQVksRUFDWixvQkFBTyxFQUNQLGVBQTBCLEVBQTFCLCtDQUEwQixFQUMxQiwyQkFBd0IsRUFBeEIsNkNBQXdCOzs7Ozs7b0JBR3BCLFVBQVUsR0FBRyxPQUFPLG1CQUFtQixLQUFLLFFBQVEsQ0FBQztvQkFDckQscUJBQXFCLEdBQUcsVUFB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OztJQUsxQixJQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFFLG1CQUFtQixxQkFBQSxFQUFFLENBQUMsQ0FBQztJQUN6RCxPQUFPLE9BQU8sQ0FBQztDQUNoQjs7Ozs7Ozs7QUFLRCxTQUFTLHNCQUFzQixDQUM3QixPQUEyQyxFQUMzQyxFQUlDO1FBSEMsMkJBQXdCLEVBQXhCLDZDQUF3Qjs7O1FBSzFCLEtBQWtCLElBQUEsS0FBQSxpQkFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUEsZ0JBQUEsNEJBQUU7WUFBL0MsSUFBTSxHQUFHLFdBQUE7WUFDWixPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDM0Q7Ozs7Ozs7OztJQUNELE9BQU8sT0FBTyxDQUFDO0NBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIFR5cGUsIERlYnVnRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVzdEJlZCwgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBnZXRRdWVyaWVzRm9yRWxlbWVudCwgcHJldHR5RE9NLCBmaXJlRXZlbnQsIEZpcmVPYmplY3QsIEZpcmVGdW5jdGlvbiB9IGZyb20gJ2RvbS10ZXN0aW5nLWxpYnJhcnknO1xuXG5pbXBvcnQgeyBSZW5kZXJSZXN1bHQsIFJlbmRlck9wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBCeSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6ICd3cmFwcGVyLWNvbXBvbmVudCcsIHRlbXBsYXRlOiAnJyB9KVxuY2xhc3MgV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbXRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lbGVtdFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmctdmVyc2lvbicpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXI8VD4oXG4gIHRlbXBsYXRlT3JDb21wb25lbnQ6IHN0cmluZyB8IFR5cGU8VD4sXG4gIHtcbiAgICBkZXRlY3RDaGFuZ2VzID0gdHJ1ZSxcbiAgICBkZWNsYXJhdGlvbnMgPSBbXSxcbiAgICBpbXBvcnRzID0gW10sXG4gICAgcHJvdmlkZXJzID0gW10sXG4gICAgc2NoZW1hcyA9IFtdLFxuICAgIHF1ZXJpZXMsXG4gICAgd3JhcHBlciA9IFdyYXBwZXJDb21wb25lbnQsXG4gICAgY29tcG9uZW50UHJvcGVydGllcyA9IHt9LFxuICB9OiBSZW5kZXJPcHRpb25zPFQ+LFxuKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+IHtcbiAgY29uc3QgaXNUZW1wbGF0ZSA9IHR5cGVvZiB0ZW1wbGF0ZU9yQ29tcG9uZW50ID09PSAnc3RyaW5nJztcbiAgY29uc3QgY29tcG9uZW50RGVjbGFyYXRpb25zID0gaXNUZW1wbGF0ZSA/IFt3cmFwcGVyXSA6IFt0ZW1wbGF0ZU9yQ29tcG9uZW50XTtcblxuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogWy4uLmRlY2xhcmF0aW9ucywgLi4uY29tcG9uZW50RGVjbGFyYXRpb25zXSxcbiAgICBwcm92aWRlcnM6IFsuLi5wcm92aWRlcnNdLFxuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRzXSxcbiAgICBzY2hlbWFzOiBbLi4uc2NoZW1hc10sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBpc1RlbXBsYXRlXG4gICAgPyBjcmVhdGVXcmFwcGVyQ29tcG9uZW50Rml4dHVyZSh0ZW1wbGF0ZU9yQ29tcG9uZW50IGFzIHN0cmluZywgeyB3cmFwcGVyLCBjb21wb25lbnRQcm9wZXJ0aWVzIH0pXG4gICAgOiBjcmVhdGVDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlT3JDb21wb25lbnQgYXMgVHlwZTxUPiwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuXG4gIGF3YWl0IFRlc3RCZWQuY29tcGlsZUNvbXBvbmVudHMoKTtcblxuICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY29uc3QgZXZlbnRzV2l0aERldGVjdENoYW5nZXMgPSBPYmplY3Qua2V5cyhmaXJlRXZlbnQpLnJlZHVjZShcbiAgICAoZXZlbnRzLCBrZXkpID0+IHtcbiAgICAgIGV2ZW50c1trZXldID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zPzoge30pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZmlyZUV2ZW50W2tleV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBldmVudHM7XG4gICAgfSxcbiAgICB7fSBhcyBGaXJlRnVuY3Rpb24gJiBGaXJlT2JqZWN0LFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgZml4dHVyZSxcbiAgICBjb250YWluZXI6IGZpeHR1cmUubmF0aXZlRWxlbWVudCxcbiAgICBkZWJ1ZzogKGVsZW1lbnQgPSBmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpID0+IGNvbnNvbGUubG9nKHByZXR0eURPTShlbGVtZW50KSksXG4gICAgLi4uZ2V0UXVlcmllc0ZvckVsZW1lbnQoZml4dHVyZS5uYXRpdmVFbGVtZW50LCBxdWVyaWVzKSxcbiAgICAuLi5ldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyxcbiAgfSBhcyBhbnk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgd3JhcHBlciBjb21wb25lbnQgYW5kIHNldHMgaXRzIHRoZSB0ZW1wbGF0ZSB0byB0aGUgdG8tYmUtdGVzdGVkIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBjcmVhdGVXcmFwcGVyQ29tcG9uZW50Rml4dHVyZTxUPihcbiAgdGVtcGxhdGU6IHN0cmluZyxcbiAge1xuICAgIHdyYXBwZXIsXG4gICAgY29tcG9uZW50UHJvcGVydGllcyxcbiAgfToge1xuICAgIHdyYXBwZXI6IFJlbmRlck9wdGlvbnM8VD5bJ3dyYXBwZXInXTtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzOiBSZW5kZXJPcHRpb25zPFQ+Wydjb21wb25lbnRQcm9wZXJ0aWVzJ107XG4gIH0sXG4pOiBDb21wb25lbnRGaXh0dXJlPGFueT4ge1xuICBUZXN0QmVkLm92ZXJyaWRlQ29tcG9uZW50KHdyYXBwZXIsIHtcbiAgICBzZXQ6IHtcbiAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQod3JhcHBlcik7XG4gIC8vIGdldCB0aGUgY29tcG9uZW50IHNlbGVjdG9yLCBlLmcuIDxmb28gY29sb3I9XCJncmVlblwiPiBhbmQgPGZvbz4gcmVzdWx0cyBpbiBmb29cbiAgY29uc3QgY29tcG9uZW50U2VsZWN0b3IgPSB0ZW1wbGF0ZS5tYXRjaCgvXFw8KC4qPylcXCAvKSB8fCB0ZW1wbGF0ZS5tYXRjaCgvXFw8KC4qPylcXD4vKTtcbiAgaWYgKCFjb21wb25lbnRTZWxlY3Rvcikge1xuICAgIHRocm93IEVycm9yKGBUZW1wbGF0ZSAke3RlbXBsYXRlfSBpcyBub3QgdmFsaWQuYCk7XG4gIH1cblxuICBjb25zdCBzdXQgPSBmaXh0dXJlLmRlYnVnRWxlbWVudC5xdWVyeShCeS5jc3MoY29tcG9uZW50U2VsZWN0b3JbMV0pKTtcbiAgc2V0Q29tcG9uZW50UHJvcGVydGllcyhzdXQsIHsgY29tcG9uZW50UHJvcGVydGllcyB9KTtcbiAgcmV0dXJuIGZpeHR1cmU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgY29tcG9uZW50cyBhbmQgc2V0cyBpdHMgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRGaXh0dXJlPFQ+KFxuICBjb21wb25lbnQ6IFR5cGU8VD4sXG4gIHtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IHtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzOiBSZW5kZXJPcHRpb25zPFQ+Wydjb21wb25lbnRQcm9wZXJ0aWVzJ107XG4gIH0sXG4pOiBDb21wb25lbnRGaXh0dXJlPFQ+IHtcbiAgY29uc3QgZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gIHNldENvbXBvbmVudFByb3BlcnRpZXMoZml4dHVyZSwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuICByZXR1cm4gZml4dHVyZTtcbn1cblxuLyoqXG4gKiBTZXQgdGhlIGNvbXBvbmVudCBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIHNldENvbXBvbmVudFByb3BlcnRpZXM8VD4oXG4gIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8VD4gfCBEZWJ1Z0VsZW1lbnQsXG4gIHtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IHtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzOiBSZW5kZXJPcHRpb25zPFQ+Wydjb21wb25lbnRQcm9wZXJ0aWVzJ107XG4gIH0sXG4pIHtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29tcG9uZW50UHJvcGVydGllcykpIHtcbiAgICBmaXh0dXJlLmNvbXBvbmVudEluc3RhbmNlW2tleV0gPSBjb21wb25lbnRQcm9wZXJ0aWVzW2tleV07XG4gIH1cbiAgcmV0dXJuIGZpeHR1cmU7XG59XG4iXX0= |
@@ -8,6 +8,6 @@ /** | ||
*/ | ||
export { createComponent } from './lib/testing-library'; | ||
export { render } from './lib/testing-library'; | ||
export { configureJestSetup } from './jest-utils'; | ||
export { queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library'; | ||
export { queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsZ0NBQWMsdUJBQXVCLENBQUM7QUFDdEMsbUNBQWMsY0FBYyxDQUFDO0FBQzdCLHE3QkFBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdGVzdGluZy1saWJyYXJ5XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3RpbmctbGlicmFyeSc7XG5leHBvcnQgKiBmcm9tICcuL2plc3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsdUJBQWMsdUJBQXVCLENBQUM7QUFDdEMsbUNBQWMsY0FBYyxDQUFDO0FBQzdCLHlrQ0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdGVzdGluZy1saWJyYXJ5XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3RpbmctbGlicmFyeSc7XG5leHBvcnQgKiBmcm9tICcuL2plc3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG4iXX0= |
@@ -5,3 +5,4 @@ import { __awaiter } from 'tslib'; | ||
import { getQueriesForElement, prettyDOM, fireEvent } from 'dom-testing-library'; | ||
export { queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library'; | ||
export { queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library'; | ||
import { By } from '@angular/platform-browser'; | ||
import 'jest'; | ||
@@ -13,3 +14,3 @@ | ||
*/ | ||
class TestComponent { | ||
class WrapperComponent { | ||
/** | ||
@@ -28,7 +29,7 @@ * @param {?} elemtRef | ||
} | ||
TestComponent.decorators = [ | ||
{ type: Component, args: [{ selector: 'test-component', template: '' },] }, | ||
WrapperComponent.decorators = [ | ||
{ type: Component, args: [{ selector: 'wrapper-component', template: '' },] }, | ||
]; | ||
/** @nocollapse */ | ||
TestComponent.ctorParameters = () => [ | ||
WrapperComponent.ctorParameters = () => [ | ||
{ type: ElementRef } | ||
@@ -42,3 +43,3 @@ ]; | ||
*/ | ||
function createComponent(templateOrComponent, { detectChanges = true, declarations = [], providers = [], imports = [], schemas = [] }) { | ||
function render(templateOrComponent, { detectChanges = true, declarations = [], imports = [], providers = [], schemas = [], queries, wrapper = WrapperComponent, componentProperties = {}, }) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
@@ -48,5 +49,5 @@ /** @type {?} */ | ||
/** @type {?} */ | ||
const testComponent = isTemplate ? [TestComponent] : []; | ||
const componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent]; | ||
TestBed.configureTestingModule({ | ||
declarations: [...declarations, ...testComponent], | ||
declarations: [...declarations, ...componentDeclarations], | ||
providers: [...providers], | ||
@@ -58,4 +59,4 @@ imports: [...imports], | ||
const fixture = isTemplate | ||
? createTestComponentFixture(/** @type {?} */ (templateOrComponent)) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent)); | ||
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper, componentProperties }) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties }); | ||
yield TestBed.compileComponents(); | ||
@@ -75,11 +76,14 @@ if (detectChanges) { | ||
}, /** @type {?} */ ({})); | ||
return Object.assign({ fixture, container: fixture.nativeElement, getFromTestBed: TestBed.get, debug: () => console.log(prettyDOM(fixture.nativeElement)) }, eventsWithDetectChanges, getQueriesForElement(fixture.nativeElement)); | ||
return /** @type {?} */ (Object.assign({ fixture, container: fixture.nativeElement, debug: (element = fixture.nativeElement) => console.log(prettyDOM(element)) }, getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges)); | ||
}); | ||
} | ||
/** | ||
* Creates the wrapper component and sets its the template to the to-be-tested component | ||
* @template T | ||
* @param {?} template | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createTestComponentFixture(template) { | ||
TestBed.overrideComponent(TestComponent, { | ||
function createWrapperComponentFixture(template, { wrapper, componentProperties, }) { | ||
TestBed.overrideComponent(wrapper, { | ||
set: { | ||
@@ -89,15 +93,37 @@ template: template, | ||
}); | ||
return TestBed.createComponent(TestComponent); | ||
/** @type {?} */ | ||
const fixture = TestBed.createComponent(wrapper); | ||
/** @type {?} */ | ||
const componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/); | ||
if (!componentSelector) { | ||
throw Error(`Template ${template} is not valid.`); | ||
} | ||
/** @type {?} */ | ||
const sut = fixture.debugElement.query(By.css(componentSelector[1])); | ||
setComponentProperties(sut, { componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Creates the components and sets its properties | ||
* @template T | ||
* @param {?} componentInput | ||
* @param {?} component | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createComponentFixture(componentInput) { | ||
const { component, parameters = {} } = componentInput; | ||
function createComponentFixture(component, { componentProperties = {}, }) { | ||
/** @type {?} */ | ||
const fixture = TestBed.createComponent(component); | ||
for (const key of Object.keys(parameters)) { | ||
fixture.componentInstance[key] = parameters[key]; | ||
setComponentProperties(fixture, { componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Set the component properties | ||
* @template T | ||
* @param {?} fixture | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function setComponentProperties(fixture, { componentProperties = {}, }) { | ||
for (const key of Object.keys(componentProperties)) { | ||
fixture.componentInstance[key] = componentProperties[key]; | ||
} | ||
@@ -148,4 +174,4 @@ return fixture; | ||
export { createComponent, configureJestSetup }; | ||
export { render, configureJestSetup }; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVzdEJlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBnZXRRdWVyaWVzRm9yRWxlbWVudCwgcHJldHR5RE9NLCBmaXJlRXZlbnQsIEZpcmVPYmplY3QsIEZpcmVGdW5jdGlvbiB9IGZyb20gJ2RvbS10ZXN0aW5nLWxpYnJhcnknO1xuXG5pbXBvcnQgeyBPcHRpb25zLCBSZW5kZXJSZXN1bHQsIENvbXBvbmVudElucHV0IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6ICd0ZXN0LWNvbXBvbmVudCcsIHRlbXBsYXRlOiAnJyB9KVxuY2xhc3MgVGVzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbXRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lbGVtdFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmctdmVyc2lvbicpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4odGVtcGxhdGU6IHN0cmluZywgb3B0aW9uczogT3B0aW9ucyk6IFByb21pc2U8UmVuZGVyUmVzdWx0PjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oY29tcG9uZW50OiBDb21wb25lbnRJbnB1dDxUPiwgb3B0aW9uczogT3B0aW9ucyk6IFByb21pc2U8UmVuZGVyUmVzdWx0PjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oXG4gIHRlbXBsYXRlT3JDb21wb25lbnQ6IHN0cmluZyB8IENvbXBvbmVudElucHV0PFQ+LFxuICB7IGRldGVjdENoYW5nZXMgPSB0cnVlLCBkZWNsYXJhdGlvbnMgPSBbXSwgcHJvdmlkZXJzID0gW10sIGltcG9ydHMgPSBbXSwgc2NoZW1hcyA9IFtdIH06IE9wdGlvbnMsXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCB0ZXN0Q29tcG9uZW50ID0gaXNUZW1wbGF0ZSA/IFtUZXN0Q29tcG9uZW50XSA6IFtdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi50ZXN0Q29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFsuLi5wcm92aWRlcnNdLFxuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRzXSxcbiAgICBzY2hlbWFzOiBbLi4uc2NoZW1hc10sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBpc1RlbXBsYXRlXG4gICAgPyBjcmVhdGVUZXN0Q29tcG9uZW50Rml4dHVyZSg8c3RyaW5nPnRlbXBsYXRlT3JDb21wb25lbnQpXG4gICAgOiBjcmVhdGVDb21wb25lbnRGaXh0dXJlKDxDb21wb25lbnRJbnB1dDxUPj50ZW1wbGF0ZU9yQ29tcG9uZW50KTtcblxuICBhd2FpdCBUZXN0QmVkLmNvbXBpbGVDb21wb25lbnRzKCk7XG5cbiAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNvbnN0IGV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzID0gT2JqZWN0LmtleXMoZmlyZUV2ZW50KS5yZWR1Y2UoXG4gICAgKGV2ZW50cywga2V5KSA9PiB7XG4gICAgICBldmVudHNba2V5XSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpcmVFdmVudFtrZXldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZXZlbnRzO1xuICAgIH0sXG4gICAge30gYXMgRmlyZUZ1bmN0aW9uICYgRmlyZU9iamVjdCxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGZpeHR1cmUsXG4gICAgY29udGFpbmVyOiBmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsXG4gICAgZ2V0RnJvbVRlc3RCZWQ6IFRlc3RCZWQuZ2V0LFxuICAgIGRlYnVnOiAoKSA9PiBjb25zb2xlLmxvZyhwcmV0dHlET00oZml4dHVyZS5uYXRpdmVFbGVtZW50KSksXG4gICAgLi4uZXZlbnRzV2l0aERldGVjdENoYW5nZXMsXG4gICAgLi4uZ2V0UXVlcmllc0ZvckVsZW1lbnQoZml4dHVyZS5uYXRpdmVFbGVtZW50KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGVzdENvbXBvbmVudEZpeHR1cmUodGVtcGxhdGU6IHN0cmluZykge1xuICBUZXN0QmVkLm92ZXJyaWRlQ29tcG9uZW50KFRlc3RDb21wb25lbnQsIHtcbiAgICBzZXQ6IHtcbiAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KFRlc3RDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRGaXh0dXJlPFQ+KGNvbXBvbmVudElucHV0OiBDb21wb25lbnRJbnB1dDxUPikge1xuICBjb25zdCB7IGNvbXBvbmVudCwgcGFyYW1ldGVycyA9IHt9IH0gPSBjb21wb25lbnRJbnB1dDtcbiAgY29uc3QgZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpKSB7XG4gICAgZml4dHVyZS5jb21wb25lbnRJbnN0YW5jZVtrZXldID0gcGFyYW1ldGVyc1trZXldO1xuICB9XG4gIHJldHVybiBmaXh0dXJlO1xufVxuIiwiaW1wb3J0IHsgVGVzdEJlZCwgZ2V0VGVzdEJlZCwgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgJ2plc3QnO1xuXG4vLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyNDA5XG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlSmVzdFNldHVwKCkge1xuICBjb25zdCB0ZXN0QmVkQXBpOiBhbnkgPSBnZXRUZXN0QmVkKCk7XG4gIGNvbnN0IG9yaWdpblJlc2V0ID0gVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGU7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSgpO1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gKCkgPT4gVGVzdEJlZDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICB0ZXN0QmVkQXBpLl9hY3RpdmVGaXh0dXJlcy5mb3JFYWNoKChmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4pID0+IGZpeHR1cmUuZGVzdHJveSgpKTtcbiAgICB0ZXN0QmVkQXBpLl9pbnN0YW50aWF0ZWQgPSBmYWxzZTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gb3JpZ2luUmVzZXQ7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdN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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgVHlwZSwgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkLCBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IFJlbmRlclJlc3VsdCwgUmVuZGVyT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3dyYXBwZXItY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlcjxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgVHlwZTxUPixcbiAge1xuICAgIGRldGVjdENoYW5nZXMgPSB0cnVlLFxuICAgIGRlY2xhcmF0aW9ucyA9IFtdLFxuICAgIGltcG9ydHMgPSBbXSxcbiAgICBwcm92aWRlcnMgPSBbXSxcbiAgICBzY2hlbWFzID0gW10sXG4gICAgcXVlcmllcyxcbiAgICB3cmFwcGVyID0gV3JhcHBlckNvbXBvbmVudCxcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IFJlbmRlck9wdGlvbnM8VD4sXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCBjb21wb25lbnREZWNsYXJhdGlvbnMgPSBpc1RlbXBsYXRlID8gW3dyYXBwZXJdIDogW3RlbXBsYXRlT3JDb21wb25lbnRdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi5jb21wb25lbnREZWNsYXJhdGlvbnNdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlT3JDb21wb25lbnQgYXMgc3RyaW5nLCB7IHdyYXBwZXIsIGNvbXBvbmVudFByb3BlcnRpZXMgfSlcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUodGVtcGxhdGVPckNvbXBvbmVudCBhcyBUeXBlPFQ+LCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG5cbiAgYXdhaXQgVGVzdEJlZC5jb21waWxlQ29tcG9uZW50cygpO1xuXG4gIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjb25zdCBldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyA9IE9iamVjdC5rZXlzKGZpcmVFdmVudCkucmVkdWNlKFxuICAgIChldmVudHMsIGtleSkgPT4ge1xuICAgICAgZXZlbnRzW2tleV0gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiB7fSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaXJlRXZlbnRba2V5XShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICB9LFxuICAgIHt9IGFzIEZpcmVGdW5jdGlvbiAmIEZpcmVPYmplY3QsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXh0dXJlLFxuICAgIGNvbnRhaW5lcjogZml4dHVyZS5uYXRpdmVFbGVtZW50LFxuICAgIGRlYnVnOiAoZWxlbWVudCA9IGZpeHR1cmUubmF0aXZlRWxlbWVudCkgPT4gY29uc29sZS5sb2cocHJldHR5RE9NKGVsZW1lbnQpKSxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsIHF1ZXJpZXMpLFxuICAgIC4uLmV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzLFxuICB9IGFzIGFueTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB3cmFwcGVyIGNvbXBvbmVudCBhbmQgc2V0cyBpdHMgdGhlIHRlbXBsYXRlIHRvIHRoZSB0by1iZS10ZXN0ZWQgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlPFQ+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICB7XG4gICAgd3JhcHBlcixcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzLFxuICB9OiB7XG4gICAgd3JhcHBlcjogUmVuZGVyT3B0aW9uczxUPlsnd3JhcHBlciddO1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8YW55PiB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQod3JhcHBlciwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudCh3cmFwcGVyKTtcbiAgLy8gZ2V0IHRoZSBjb21wb25lbnQgc2VsZWN0b3IsIGUuZy4gPGZvbyBjb2xvcj1cImdyZWVuXCI+IGFuZCA8Zm9vPiByZXN1bHRzIGluIGZvb1xuICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcIC8pIHx8IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcPi8pO1xuICBpZiAoIWNvbXBvbmVudFNlbGVjdG9yKSB7XG4gICAgdGhyb3cgRXJyb3IoYFRlbXBsYXRlICR7dGVtcGxhdGV9IGlzIG5vdCB2YWxpZC5gKTtcbiAgfVxuXG4gIGNvbnN0IHN1dCA9IGZpeHR1cmUuZGVidWdFbGVtZW50LnF1ZXJ5KEJ5LmNzcyhjb21wb25lbnRTZWxlY3RvclsxXSkpO1xuICBzZXRDb21wb25lbnRQcm9wZXJ0aWVzKHN1dCwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuICByZXR1cm4gZml4dHVyZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBjb21wb25lbnRzIGFuZCBzZXRzIGl0cyBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oXG4gIGNvbXBvbmVudDogVHlwZTxUPixcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8VD4ge1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgc2V0Q29tcG9uZW50UHJvcGVydGllcyhmaXh0dXJlLCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG4gIHJldHVybiBmaXh0dXJlO1xufVxuXG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50IHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gc2V0Q29tcG9uZW50UHJvcGVydGllczxUPihcbiAgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxUPiB8IERlYnVnRWxlbWVudCxcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbikge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21wb25lbnRQcm9wZXJ0aWVzKSkge1xuICAgIGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IGNvbXBvbmVudFByb3BlcnRpZXNba2V5XTtcbiAgfVxuICByZXR1cm4gZml4dHVyZTtcbn1cbiIsImltcG9ydCB7IFRlc3RCZWQsIGdldFRlc3RCZWQsIENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0ICdqZXN0JztcblxuLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMjQwOVxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZUplc3RTZXR1cCgpIHtcbiAgY29uc3QgdGVzdEJlZEFwaTogYW55ID0gZ2V0VGVzdEJlZCgpO1xuICBjb25zdCBvcmlnaW5SZXNldCA9IFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUoKTtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSA9ICgpID0+IFRlc3RCZWQ7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgdGVzdEJlZEFwaS5fYWN0aXZlRml4dHVyZXMuZm9yRWFjaCgoZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+KSA9PiBmaXh0dXJlLmRlc3Ryb3koKSk7XG4gICAgdGVzdEJlZEFwaS5faW5zdGFudGlhdGVkID0gZmFsc2U7XG4gIH0pO1xuXG4gIGFmdGVyQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSA9IG9yaWdpblJlc2V0O1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlKCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQU9BLE1BQ00sZ0JBQWdCOzs7O0lBQ3BCLFlBQW9CLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7S0FBSTs7OztJQUU1QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQzNEOzs7WUFORixTQUFTLFNBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTs7OztZQVA5QixVQUFVOzs7Ozs7OztBQWdCdEMsU0FBc0IsTUFBTSxDQUMxQixtQkFBcUMsRUFDckMsRUFDRSxhQUFhLEdBQUcsSUFBSSxFQUNwQixZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsRUFBRSxFQUNaLFNBQVMsR0FBRyxFQUFFLEVBQ2QsT0FBTyxHQUFHLEVBQUUsRUFDWixPQUFPLEVBQ1AsT0FBTyxHQUFHLGdCQUFnQixFQUMxQixtQkFBbUIsR0FBRyxFQUFFLEdBQ1A7OztRQUVuQixNQUFNLFVBQVUsR0FBRyxPQUFPLG1CQUFtQixLQUFLLFFBQVEsQ0FBQzs7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 |
@@ -5,3 +5,4 @@ import { __awaiter, __generator, __spread, __assign, __values } from 'tslib'; | ||
import { getQueriesForElement, prettyDOM, fireEvent } from 'dom-testing-library'; | ||
export { queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library'; | ||
export { queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library'; | ||
import { By } from '@angular/platform-browser'; | ||
import 'jest'; | ||
@@ -13,4 +14,4 @@ | ||
*/ | ||
var TestComponent = /** @class */ (function () { | ||
function TestComponent(elemtRef) { | ||
var WrapperComponent = /** @class */ (function () { | ||
function WrapperComponent(elemtRef) { | ||
this.elemtRef = elemtRef; | ||
@@ -21,3 +22,3 @@ } | ||
*/ | ||
TestComponent.prototype.ngOnInit = /** | ||
WrapperComponent.prototype.ngOnInit = /** | ||
* @return {?} | ||
@@ -28,10 +29,10 @@ */ | ||
}; | ||
TestComponent.decorators = [ | ||
{ type: Component, args: [{ selector: 'test-component', template: '' },] }, | ||
WrapperComponent.decorators = [ | ||
{ type: Component, args: [{ selector: 'wrapper-component', template: '' },] }, | ||
]; | ||
/** @nocollapse */ | ||
TestComponent.ctorParameters = function () { return [ | ||
WrapperComponent.ctorParameters = function () { return [ | ||
{ type: ElementRef } | ||
]; }; | ||
return TestComponent; | ||
return WrapperComponent; | ||
}()); | ||
@@ -44,13 +45,13 @@ /** | ||
*/ | ||
function createComponent(templateOrComponent, _a) { | ||
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.providers, providers = _d === void 0 ? [] : _d, _e = _a.imports, imports = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f; | ||
function render(templateOrComponent, _a) { | ||
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.imports, imports = _d === void 0 ? [] : _d, _e = _a.providers, providers = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f, queries = _a.queries, _g = _a.wrapper, wrapper = _g === void 0 ? WrapperComponent : _g, _h = _a.componentProperties, componentProperties = _h === void 0 ? {} : _h; | ||
return __awaiter(this, void 0, void 0, function () { | ||
var isTemplate, testComponent, fixture, eventsWithDetectChanges; | ||
return __generator(this, function (_g) { | ||
switch (_g.label) { | ||
var isTemplate, componentDeclarations, fixture, eventsWithDetectChanges; | ||
return __generator(this, function (_j) { | ||
switch (_j.label) { | ||
case 0: | ||
isTemplate = typeof templateOrComponent === 'string'; | ||
testComponent = isTemplate ? [TestComponent] : []; | ||
componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent]; | ||
TestBed.configureTestingModule({ | ||
declarations: __spread(declarations, testComponent), | ||
declarations: __spread(declarations, componentDeclarations), | ||
providers: __spread(providers), | ||
@@ -61,7 +62,7 @@ imports: __spread(imports), | ||
fixture = isTemplate | ||
? createTestComponentFixture(/** @type {?} */ (templateOrComponent)) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent)); | ||
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper: wrapper, componentProperties: componentProperties }) | ||
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties: componentProperties }); | ||
return [4 /*yield*/, TestBed.compileComponents()]; | ||
case 1: | ||
_g.sent(); | ||
_j.sent(); | ||
if (detectChanges) { | ||
@@ -79,3 +80,6 @@ fixture.detectChanges(); | ||
}, /** @type {?} */ ({})); | ||
return [2 /*return*/, __assign({ fixture: fixture, container: fixture.nativeElement, getFromTestBed: TestBed.get, debug: function () { return console.log(prettyDOM(fixture.nativeElement)); } }, eventsWithDetectChanges, getQueriesForElement(fixture.nativeElement))]; | ||
return [2 /*return*/, /** @type {?} */ (__assign({ fixture: fixture, container: fixture.nativeElement, debug: function (element) { | ||
if (element === void 0) { element = fixture.nativeElement; } | ||
return console.log(prettyDOM(element)); | ||
} }, getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges))]; | ||
} | ||
@@ -86,7 +90,11 @@ }); | ||
/** | ||
* Creates the wrapper component and sets its the template to the to-be-tested component | ||
* @template T | ||
* @param {?} template | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createTestComponentFixture(template) { | ||
TestBed.overrideComponent(TestComponent, { | ||
function createWrapperComponentFixture(template, _a) { | ||
var wrapper = _a.wrapper, componentProperties = _a.componentProperties; | ||
TestBed.overrideComponent(wrapper, { | ||
set: { | ||
@@ -96,18 +104,42 @@ template: template, | ||
}); | ||
return TestBed.createComponent(TestComponent); | ||
/** @type {?} */ | ||
var fixture = TestBed.createComponent(wrapper); | ||
/** @type {?} */ | ||
var componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/); | ||
if (!componentSelector) { | ||
throw Error("Template " + template + " is not valid."); | ||
} | ||
/** @type {?} */ | ||
var sut = fixture.debugElement.query(By.css(componentSelector[1])); | ||
setComponentProperties(sut, { componentProperties: componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Creates the components and sets its properties | ||
* @template T | ||
* @param {?} componentInput | ||
* @param {?} component | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function createComponentFixture(componentInput) { | ||
var e_1, _a; | ||
var component = componentInput.component, _b = componentInput.parameters, parameters = _b === void 0 ? {} : _b; | ||
function createComponentFixture(component, _a) { | ||
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b; | ||
/** @type {?} */ | ||
var fixture = TestBed.createComponent(component); | ||
setComponentProperties(fixture, { componentProperties: componentProperties }); | ||
return fixture; | ||
} | ||
/** | ||
* Set the component properties | ||
* @template T | ||
* @param {?} fixture | ||
* @param {?} __1 | ||
* @return {?} | ||
*/ | ||
function setComponentProperties(fixture, _a) { | ||
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b; | ||
var e_1, _c; | ||
try { | ||
for (var _c = __values(Object.keys(parameters)), _d = _c.next(); !_d.done; _d = _c.next()) { | ||
var key = _d.value; | ||
fixture.componentInstance[key] = parameters[key]; | ||
for (var _d = __values(Object.keys(componentProperties)), _e = _d.next(); !_e.done; _e = _d.next()) { | ||
var key = _e.value; | ||
fixture.componentInstance[key] = componentProperties[key]; | ||
} | ||
@@ -118,3 +150,3 @@ } | ||
try { | ||
if (_d && !_d.done && (_a = _c.return)) _a.call(_c); | ||
if (_e && !_e.done && (_c = _d.return)) _c.call(_d); | ||
} | ||
@@ -167,4 +199,4 @@ finally { if (e_1) throw e_1.error; } | ||
export { createComponent, configureJestSetup }; | ||
export { render, configureJestSetup }; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVzdEJlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBnZXRRdWVyaWVzRm9yRWxlbWVudCwgcHJldHR5RE9NLCBmaXJlRXZlbnQsIEZpcmVPYmplY3QsIEZpcmVGdW5jdGlvbiB9IGZyb20gJ2RvbS10ZXN0aW5nLWxpYnJhcnknO1xuXG5pbXBvcnQgeyBPcHRpb25zLCBSZW5kZXJSZXN1bHQsIENvbXBvbmVudElucHV0IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6ICd0ZXN0LWNvbXBvbmVudCcsIHRlbXBsYXRlOiAnJyB9KVxuY2xhc3MgVGVzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbXRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lbGVtdFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmctdmVyc2lvbicpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4odGVtcGxhdGU6IHN0cmluZywgb3B0aW9uczogT3B0aW9ucyk6IFByb21pc2U8UmVuZGVyUmVzdWx0PjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oY29tcG9uZW50OiBDb21wb25lbnRJbnB1dDxUPiwgb3B0aW9uczogT3B0aW9ucyk6IFByb21pc2U8UmVuZGVyUmVzdWx0PjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oXG4gIHRlbXBsYXRlT3JDb21wb25lbnQ6IHN0cmluZyB8IENvbXBvbmVudElucHV0PFQ+LFxuICB7IGRldGVjdENoYW5nZXMgPSB0cnVlLCBkZWNsYXJhdGlvbnMgPSBbXSwgcHJvdmlkZXJzID0gW10sIGltcG9ydHMgPSBbXSwgc2NoZW1hcyA9IFtdIH06IE9wdGlvbnMsXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCB0ZXN0Q29tcG9uZW50ID0gaXNUZW1wbGF0ZSA/IFtUZXN0Q29tcG9uZW50XSA6IFtdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi50ZXN0Q29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFsuLi5wcm92aWRlcnNdLFxuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRzXSxcbiAgICBzY2hlbWFzOiBbLi4uc2NoZW1hc10sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBpc1RlbXBsYXRlXG4gICAgPyBjcmVhdGVUZXN0Q29tcG9uZW50Rml4dHVyZSg8c3RyaW5nPnRlbXBsYXRlT3JDb21wb25lbnQpXG4gICAgOiBjcmVhdGVDb21wb25lbnRGaXh0dXJlKDxDb21wb25lbnRJbnB1dDxUPj50ZW1wbGF0ZU9yQ29tcG9uZW50KTtcblxuICBhd2FpdCBUZXN0QmVkLmNvbXBpbGVDb21wb25lbnRzKCk7XG5cbiAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNvbnN0IGV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzID0gT2JqZWN0LmtleXMoZmlyZUV2ZW50KS5yZWR1Y2UoXG4gICAgKGV2ZW50cywga2V5KSA9PiB7XG4gICAgICBldmVudHNba2V5XSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpcmVFdmVudFtrZXldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZXZlbnRzO1xuICAgIH0sXG4gICAge30gYXMgRmlyZUZ1bmN0aW9uICYgRmlyZU9iamVjdCxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGZpeHR1cmUsXG4gICAgY29udGFpbmVyOiBmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsXG4gICAgZ2V0RnJvbVRlc3RCZWQ6IFRlc3RCZWQuZ2V0LFxuICAgIGRlYnVnOiAoKSA9PiBjb25zb2xlLmxvZyhwcmV0dHlET00oZml4dHVyZS5uYXRpdmVFbGVtZW50KSksXG4gICAgLi4uZXZlbnRzV2l0aERldGVjdENoYW5nZXMsXG4gICAgLi4uZ2V0UXVlcmllc0ZvckVsZW1lbnQoZml4dHVyZS5uYXRpdmVFbGVtZW50KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGVzdENvbXBvbmVudEZpeHR1cmUodGVtcGxhdGU6IHN0cmluZykge1xuICBUZXN0QmVkLm92ZXJyaWRlQ29tcG9uZW50KFRlc3RDb21wb25lbnQsIHtcbiAgICBzZXQ6IHtcbiAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KFRlc3RDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRGaXh0dXJlPFQ+KGNvbXBvbmVudElucHV0OiBDb21wb25lbnRJbnB1dDxUPikge1xuICBjb25zdCB7IGNvbXBvbmVudCwgcGFyYW1ldGVycyA9IHt9IH0gPSBjb21wb25lbnRJbnB1dDtcbiAgY29uc3QgZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpKSB7XG4gICAgZml4dHVyZS5jb21wb25lbnRJbnN0YW5jZVtrZXldID0gcGFyYW1ldGVyc1trZXldO1xuICB9XG4gIHJldHVybiBmaXh0dXJlO1xufVxuIiwiaW1wb3J0IHsgVGVzdEJlZCwgZ2V0VGVzdEJlZCwgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgJ2plc3QnO1xuXG4vLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyNDA5XG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlSmVzdFNldHVwKCkge1xuICBjb25zdCB0ZXN0QmVkQXBpOiBhbnkgPSBnZXRUZXN0QmVkKCk7XG4gIGNvbnN0IG9yaWdpblJlc2V0ID0gVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGU7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSgpO1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gKCkgPT4gVGVzdEJlZDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICB0ZXN0QmVkQXBpLl9hY3RpdmVGaXh0dXJlcy5mb3JFYWNoKChmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4pID0+IGZpeHR1cmUuZGVzdHJveSgpKTtcbiAgICB0ZXN0QmVkQXBpLl9pbnN0YW50aWF0ZWQgPSBmYWxzZTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gb3JpZ2luUmVzZXQ7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdN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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgVHlwZSwgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkLCBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IFJlbmRlclJlc3VsdCwgUmVuZGVyT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3dyYXBwZXItY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlcjxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgVHlwZTxUPixcbiAge1xuICAgIGRldGVjdENoYW5nZXMgPSB0cnVlLFxuICAgIGRlY2xhcmF0aW9ucyA9IFtdLFxuICAgIGltcG9ydHMgPSBbXSxcbiAgICBwcm92aWRlcnMgPSBbXSxcbiAgICBzY2hlbWFzID0gW10sXG4gICAgcXVlcmllcyxcbiAgICB3cmFwcGVyID0gV3JhcHBlckNvbXBvbmVudCxcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IFJlbmRlck9wdGlvbnM8VD4sXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCBjb21wb25lbnREZWNsYXJhdGlvbnMgPSBpc1RlbXBsYXRlID8gW3dyYXBwZXJdIDogW3RlbXBsYXRlT3JDb21wb25lbnRdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi5jb21wb25lbnREZWNsYXJhdGlvbnNdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlT3JDb21wb25lbnQgYXMgc3RyaW5nLCB7IHdyYXBwZXIsIGNvbXBvbmVudFByb3BlcnRpZXMgfSlcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUodGVtcGxhdGVPckNvbXBvbmVudCBhcyBUeXBlPFQ+LCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG5cbiAgYXdhaXQgVGVzdEJlZC5jb21waWxlQ29tcG9uZW50cygpO1xuXG4gIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjb25zdCBldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyA9IE9iamVjdC5rZXlzKGZpcmVFdmVudCkucmVkdWNlKFxuICAgIChldmVudHMsIGtleSkgPT4ge1xuICAgICAgZXZlbnRzW2tleV0gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiB7fSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaXJlRXZlbnRba2V5XShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICB9LFxuICAgIHt9IGFzIEZpcmVGdW5jdGlvbiAmIEZpcmVPYmplY3QsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXh0dXJlLFxuICAgIGNvbnRhaW5lcjogZml4dHVyZS5uYXRpdmVFbGVtZW50LFxuICAgIGRlYnVnOiAoZWxlbWVudCA9IGZpeHR1cmUubmF0aXZlRWxlbWVudCkgPT4gY29uc29sZS5sb2cocHJldHR5RE9NKGVsZW1lbnQpKSxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsIHF1ZXJpZXMpLFxuICAgIC4uLmV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzLFxuICB9IGFzIGFueTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB3cmFwcGVyIGNvbXBvbmVudCBhbmQgc2V0cyBpdHMgdGhlIHRlbXBsYXRlIHRvIHRoZSB0by1iZS10ZXN0ZWQgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlPFQ+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICB7XG4gICAgd3JhcHBlcixcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzLFxuICB9OiB7XG4gICAgd3JhcHBlcjogUmVuZGVyT3B0aW9uczxUPlsnd3JhcHBlciddO1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8YW55PiB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQod3JhcHBlciwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudCh3cmFwcGVyKTtcbiAgLy8gZ2V0IHRoZSBjb21wb25lbnQgc2VsZWN0b3IsIGUuZy4gPGZvbyBjb2xvcj1cImdyZWVuXCI+IGFuZCA8Zm9vPiByZXN1bHRzIGluIGZvb1xuICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcIC8pIHx8IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcPi8pO1xuICBpZiAoIWNvbXBvbmVudFNlbGVjdG9yKSB7XG4gICAgdGhyb3cgRXJyb3IoYFRlbXBsYXRlICR7dGVtcGxhdGV9IGlzIG5vdCB2YWxpZC5gKTtcbiAgfVxuXG4gIGNvbnN0IHN1dCA9IGZpeHR1cmUuZGVidWdFbGVtZW50LnF1ZXJ5KEJ5LmNzcyhjb21wb25lbnRTZWxlY3RvclsxXSkpO1xuICBzZXRDb21wb25lbnRQcm9wZXJ0aWVzKHN1dCwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuICByZXR1cm4gZml4dHVyZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBjb21wb25lbnRzIGFuZCBzZXRzIGl0cyBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oXG4gIGNvbXBvbmVudDogVHlwZTxUPixcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8VD4ge1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgc2V0Q29tcG9uZW50UHJvcGVydGllcyhmaXh0dXJlLCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG4gIHJldHVybiBmaXh0dXJlO1xufVxuXG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50IHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gc2V0Q29tcG9uZW50UHJvcGVydGllczxUPihcbiAgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxUPiB8IERlYnVnRWxlbWVudCxcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbikge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21wb25lbnRQcm9wZXJ0aWVzKSkge1xuICAgIGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IGNvbXBvbmVudFByb3BlcnRpZXNba2V5XTtcbiAgfVxuICByZXR1cm4gZml4dHVyZTtcbn1cbiIsImltcG9ydCB7IFRlc3RCZWQsIGdldFRlc3RCZWQsIENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0ICdqZXN0JztcblxuLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMjQwOVxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZUplc3RTZXR1cCgpIHtcbiAgY29uc3QgdGVzdEJlZEFwaTogYW55ID0gZ2V0VGVzdEJlZCgpO1xuICBjb25zdCBvcmlnaW5SZXNldCA9IFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUoKTtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSA9ICgpID0+IFRlc3RCZWQ7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgdGVzdEJlZEFwaS5fYWN0aXZlRml4dHVyZXMuZm9yRWFjaCgoZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+KSA9PiBmaXh0dXJlLmRlc3Ryb3koKSk7XG4gICAgdGVzdEJlZEFwaS5faW5zdGFudGlhdGVkID0gZmFsc2U7XG4gIH0pO1xuXG4gIGFmdGVyQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSA9IG9yaWdpblJlc2V0O1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlKCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbInRzbGliXzEuX19hc3NpZ24iLCJ0c2xpYl8xLl9fdmFsdWVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBU0UsMEJBQW9CLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7S0FBSTs7OztJQUU1QyxtQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDM0Q7O2dCQU5GLFNBQVMsU0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFOzs7O2dCQVA5QixVQUFVOzsyQkFBdEM7Ozs7Ozs7O0FBZ0JBLFNBQXNCLE1BQU0sQ0FDMUIsbUJBQXFDLEVBQ3JDLEVBU21CO1FBUmpCLHFCQUFvQixFQUFwQix5Q0FBb0IsRUFDcEIsb0JBQWlCLEVBQWpCLHNDQUFpQixFQUNqQixlQUFZLEVBQVosaUNBQVksRUFDWixpQkFBYyxFQUFkLG1DQUFjLEVBQ2QsZUFBWSxFQUFaLGlDQUFZLEVBQ1osb0JBQU8sRUFDUCxlQUEwQixFQUExQiwrQ0FBMEIsRUFDMUIsMkJBQXdCLEVBQXhCLDZD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 |
import { Type } from '@angular/core'; | ||
import { ComponentFixture } from '@angular/core/testing'; | ||
import { getQueriesForElement, FireObject } from 'dom-testing-library'; | ||
export interface RenderResult extends ReturnType<typeof getQueriesForElement>, FireObject { | ||
import { FireObject, Queries, queries, BoundFunction } from 'dom-testing-library'; | ||
export declare type RenderResultQueries<Q extends Queries = typeof queries> = { | ||
[P in keyof Q]: BoundFunction<Q[P]>; | ||
}; | ||
export interface RenderResult extends RenderResultQueries, FireObject { | ||
container: HTMLElement; | ||
debug: () => void; | ||
getFromTestBed: (token: any, notFoundValue?: any) => any; | ||
debug: (element?: HTMLElement) => void; | ||
fixture: ComponentFixture<any>; | ||
} | ||
export interface Options { | ||
export interface RenderOptions<C, Q extends Queries = typeof queries> { | ||
detectChanges?: boolean; | ||
declarations: any[]; | ||
declarations?: any[]; | ||
providers?: any[]; | ||
imports?: any[]; | ||
schemas?: any[]; | ||
componentProperties?: Partial<C>; | ||
queries?: Q; | ||
wrapper?: Type<any>; | ||
} | ||
export interface ComponentInput<T> { | ||
component: Type<T>; | ||
parameters?: Partial<T>; | ||
} |
@@ -1,3 +0,3 @@ | ||
import { Options, RenderResult, ComponentInput } from './models'; | ||
export declare function createComponent<T>(template: string, options: Options): Promise<RenderResult>; | ||
export declare function createComponent<T>(component: ComponentInput<T>, options: Options): Promise<RenderResult>; | ||
import { Type } from '@angular/core'; | ||
import { RenderResult, RenderOptions } from './models'; | ||
export declare function render<T>(templateOrComponent: string | Type<T>, { detectChanges, declarations, imports, providers, schemas, queries, wrapper, componentProperties, }: RenderOptions<T>): Promise<RenderResult>; |
{ | ||
"name": "@angular-extensions/testing-library", | ||
"version": "3.2.0", | ||
"version": "4.0.0", | ||
"description": "Test your Angular components with the dom-testing-library", | ||
@@ -30,3 +30,5 @@ "repository": { | ||
"dependencies": { | ||
"dom-testing-library": "^3.11.1", | ||
"dom-testing-library": "^4.0.1", | ||
"@phenomnomnominal/tsquery": "^3.0.0", | ||
"tslint": "^5.16.0", | ||
"tslib": "^1.9.0" | ||
@@ -37,2 +39,5 @@ }, | ||
}, | ||
"ng-update": { | ||
"migrations": "./migrations/migration.json" | ||
}, | ||
"main": "bundles/angular-extensions-testing-library.umd.js", | ||
@@ -39,0 +44,0 @@ "module": "fesm5/angular-extensions-testing-library.js", |
311
README.md
@@ -1,182 +0,203 @@ | ||
# @angular-extensions/testing-library | ||
<div align="center"> | ||
<h1>@angular-extensions/testing-library</h1> | ||
Lightweight utility functions to test Angular components. | ||
<a href="https://www.emojione.com/emoji/1f994"> | ||
<img | ||
height="80" | ||
width="80" | ||
alt="hedgehog" | ||
src="https://raw.githubusercontent.com/angular-extensions/testing-library/master/other/hedgehog.png" | ||
/> | ||
</a> | ||
[**Read The Docs**](https://testing-library.com/angular) | [Edit the docs](https://github.com/alexkrolick/testing-library-docs) | ||
<p>Simple and complete Angular testing utilities that encourage good testing | ||
practices.</p> | ||
<br /> | ||
[**Read The Docs**](https://testing-library.com/angular) | | ||
[Edit the docs](https://github.com/alexkrolick/testing-library-docs) | ||
<br /> | ||
</div> | ||
<hr /> | ||
[![Build status][build-badge]][build] | ||
[![npm][npm-badge]][npm] | ||
[![Semantically released][sr-badge]][sr] | ||
[![Styled with prettier][prettier-badge]][prettier] | ||
<!-- prettier-ignore-start --> | ||
[![Build Status][build-badge]][build] | ||
[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] | ||
[![MIT License][license-badge]][license] | ||
[![Code of Conduct][coc-badge]][coc] | ||
## Table of Contents | ||
[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc] | ||
[![Join the community on Spectrum][spectrum-badge]][spectrum] | ||
- [Installation](#installation) | ||
- [Why](#why) | ||
- [What](#what) | ||
- [How](#how) | ||
- [`createComponent`](#createcomponent) | ||
- [`container: HTMLElement`](#container-htmlelement) | ||
- [`debug() => void`](#debug--void) | ||
- [`fixture: any`](#fixture-any) | ||
- [`getFromTestBed(token: any, notFoundValue?: any) => any`](#getfromtestbedtoken-any-notfoundvalue-any--any) | ||
- [Usage](#usage) | ||
- [LICENSE](#license) | ||
[![Watch on GitHub][github-watch-badge]][github-watch] | ||
[![Star on GitHub][github-star-badge]][github-star] | ||
[![Tweet][twitter-badge]][twitter] | ||
<!-- prettier-ignore-end --> | ||
## Installation | ||
<div align="center"> | ||
<a href="https://testingjavascript.com"> | ||
<img | ||
width="500" | ||
alt="TestingJavaScript.com Learn the smart, efficient way to test any JavaScript application." | ||
src="https://raw.githubusercontent.com/testing-library/react-testing-library/master/other/testingjavascript.jpg" | ||
/> | ||
</a> | ||
</div> | ||
Install `@angular-extensions/testing-library` from [npm] and add it your `devDependencies`: | ||
## Table of Contents | ||
`npm install @angular-extensions/testing-library --save-dev` | ||
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
## Why | ||
- [The problem](#the-problem) | ||
- [This solution](#this-solution) | ||
- [Example](#example) | ||
- [Installation](#installation) | ||
- [Guiding Principles](#guiding-principles) | ||
- [Docs](#docs) | ||
- [Issues](#issues) | ||
- [🐛 Bugs](#-bugs) | ||
- [💡 Feature Requests](#-feature-requests) | ||
- [❓ Questions](#-questions) | ||
- [LICENSE](#license) | ||
- test your UI components the way your users are using it | ||
- making your tests resilient to implementation changes | ||
<!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
## What | ||
## The problem | ||
`@angular-extensions/testing-library` is an Angular adapter around [dom-testing-library][dom-testing-library], | ||
which provides lightweight utility functions to test UI components. Your tests will work with actual DOM nodes. | ||
You want to write maintainable tests for your Angular components. As a part of | ||
this goal, you want your tests to avoid including implementation details of your | ||
components and rather focus on making your tests give you the confidence for | ||
which they are intended. As part of this, you want your testbase to be | ||
maintainable in the long run so refactors of your components (changes to | ||
implementation but not functionality) don't break your tests and slow you and | ||
your team down. | ||
## How | ||
## This solution | ||
### `createComponent` | ||
The `@angular-extensions/testing-library` is a very lightweight solution for testing Angular | ||
components. It provides light utility functions on top of `Angular` and | ||
`dom-testing-library`, in a way that encourages better testing practices. Its | ||
primary guiding principle is: | ||
This library only consists of one function, `createComponent` which is used to setup the Angular `TestBed` and creates the component fixture. | ||
> [The more your tests resemble the way your software is used, the more | ||
> confidence they can give you.][guiding-principle] | ||
This method can be used in two ways: | ||
## Example | ||
Based on a template: | ||
counter.component.ts | ||
```ts | ||
import { createComponent } from '@angular-extensions/testing-library'; | ||
@Component({ | ||
selector: 'counter', | ||
template: ` | ||
<button (click)="decrement()">-</button> | ||
<span data-testid="count">Current Count: {{ counter }}</span> | ||
<button (click)="increment()">+</button> | ||
`, | ||
}) | ||
export class CounterComponent { | ||
@Input() counter = 0; | ||
createComponent('<my-component [prop]="1"></my-component>', options); | ||
increment() { | ||
this.counter += 1; | ||
} | ||
decrement() { | ||
this.counter -= 1; | ||
} | ||
} | ||
``` | ||
Based on a component type: | ||
counter.component.spec.ts | ||
```ts | ||
import { createComponent } from '@angular-extensions/testing-library'; | ||
```javascript | ||
import { render } from '@angular-extensions/testing-library'; | ||
import CounterComponent from './counter.component.ts'; | ||
createComponent( | ||
{ | ||
component: MyComponent, | ||
parameters: { | ||
prop: 1, | ||
}, | ||
}, | ||
options, | ||
); | ||
``` | ||
describe('Counter', () => { | ||
test('should render counter', async () => { | ||
const { getByText } = await render(CounterComponent, { componentProperties: { counter: 5 } }); | ||
The second parameter in `createComponent` is the `options` parameter, which looks like this: | ||
expect(getByText('Current Count: 5')); | ||
}); | ||
```ts | ||
{ | ||
detectChanges?: boolean = true; | ||
declarations: any[] = []; | ||
providers?: any[] = []; | ||
imports?: any[] = []; | ||
schemas?: any[] = []; | ||
} | ||
``` | ||
test('should increment the counter on click', async () => { | ||
const { getByText, click } = await render(CounterComponent, { componentProperties: { counter: 5 } }); | ||
`detectChanges`: runs `detectChanges` on the fixture | ||
click(getByText('+')); | ||
`declarations`: passed to the `TestBed` | ||
expect(getByText('Current Count: 6')); | ||
}); | ||
}); | ||
``` | ||
`providers`: passed to the `TestBed` | ||
## Installation | ||
`imports`: passed to the `TestBed` | ||
This module is distributed via [npm][npm] which is bundled with [node][node] and | ||
should be installed as one of your project's `devDependencies`: | ||
`schemas`: passed to the `TestBed` | ||
```bash | ||
npm install @angular-extensions/testing-library --save-dev | ||
``` | ||
The `createComponent` function returns an object consisting all of the query functions from [dom-testing-library][dom-testing-library], all the event functions exposed from `fireEvent`, and adds the following properties: | ||
You may also be interested in installing `jest-dom` so you can use | ||
[the custom jest matchers](https://github.com/gnapse/jest-dom#readme). | ||
> Every event runs `detectChanges` on the fixture. | ||
> [**Docs**](https://testing-library.com/angular) | ||
#### `container: HTMLElement` | ||
## Guiding Principles | ||
The DOM node containing the Angular component. | ||
> [The more your tests resemble the way your software is used, the more | ||
> confidence they can give you.][guiding-principle] | ||
All of the [dom-testing-library][dom-testing-library] query functions are binded to this container. | ||
We try to only expose methods and utilities that encourage you to write tests | ||
that closely resemble how your Angular components are used. | ||
#### `debug() => void` | ||
Utilities are included in this project based on the following guiding | ||
principles: | ||
Prints out the container. | ||
1. If it relates to rendering components, it deals with DOM nodes rather than | ||
component instances, nor should it encourage dealing with component | ||
instances. | ||
2. It should be generally useful for testing individual Angular components or | ||
full Angular applications. | ||
3. Utility implementations and APIs should be simple and flexible. | ||
#### `fixture: any` | ||
At the end of the day, what we want is for this library to be pretty | ||
light-weight, simple, and understandable. | ||
The Angular fixture. | ||
## Docs | ||
#### `getFromTestBed(token: any, notFoundValue?: any) => any` | ||
[**Read The Docs**](https://testing-library.com/angular) | | ||
[Edit the docs](https://github.com/alexkrolick/testing-library-docs) | ||
Calls the the Angular `TestBed.get` function. | ||
## Issues | ||
## Usage | ||
_Looking to contribute? Look for the [Good First Issue][good-first-issue] | ||
label._ | ||
You can find some examples in the [tests folder](https://github.com/angular-extensions/testing-library/tree/master/projects/testing-library/tests). | ||
### 🐛 Bugs | ||
Here is how the "default" specifications can be written with `@angular-extensions/testing-library`. | ||
Please file an issue for bugs, missing documentation, or unexpected behavior. | ||
Before: | ||
[**See Bugs**][bugs] | ||
```ts | ||
import { TestBed, async } from '@angular/core/testing'; | ||
import { AppComponent } from './app.component'; | ||
### 💡 Feature Requests | ||
describe('AppComponent', () => { | ||
beforeEach(async(() => { | ||
TestBed.configureTestingModule({ | ||
declarations: [AppComponent], | ||
}).compileComponents(); | ||
})); | ||
Please file an issue to suggest new features. Vote on feature requests by adding | ||
a 👍. This helps maintainers prioritize what to work on. | ||
it(`should have as title 'my-awesome-app'`, async(() => { | ||
const fixture = TestBed.createComponent(AppComponent); | ||
const app = fixture.debugElement.componentInstance; | ||
expect(app.title).toEqual('my-awesome-app'); | ||
})); | ||
[**See Feature Requests**][requests] | ||
it(`should render title in a h1 tag`, async(() => { | ||
const fixture = TestBed.createComponent(AppComponent); | ||
fixture.detectChanges(); | ||
const compiled = fixture.debugElement.nativeElement; | ||
expect(compiled.querySelector('h1').textContent).toContain('Welcome to my-awesome-app!'); | ||
})); | ||
}); | ||
``` | ||
### ❓ Questions | ||
After: | ||
For questions related to using the library, please visit a support community | ||
instead of filing an issue on GitHub. | ||
```ts | ||
import { createComponent } from '@angular-extensions/testing-library'; | ||
import { AppComponent } from './app.component'; | ||
- [Spectrum][spectrum] | ||
- [Stack Overflow][stackoverflow] | ||
it(`should have as title 'my-awesome-app'`, async () => { | ||
const { getByText } = await createComponent('<app-root></app-root>', { | ||
declarations: [AppComponent], | ||
}); | ||
expect(getByText('Welcome to my-awesome-app!')).toBeDefined(); | ||
}); | ||
it(`should render title in a h1 tag`, async () => { | ||
const { container } = await createComponent( | ||
{ | ||
component: AppComponent, | ||
}, | ||
{ | ||
declarations: [AppComponent], | ||
}, | ||
); | ||
expect(container.querySelector('h1').textContent).toContain('Welcome to my-awesome-app!'); | ||
}); | ||
``` | ||
## LICENSE | ||
@@ -186,14 +207,40 @@ | ||
<!-- | ||
Links: | ||
--> | ||
<!-- prettier-ignore-start --> | ||
[npm]: https://www.npmjs.com/ | ||
[node]: https://nodejs.org | ||
[build-badge]: https://circleci.com/gh/angular-extensions/testing-library/tree/master.svg?style=shield | ||
[build]: https://circleci.com/gh/angular-extensions/testing-library/tree/master | ||
[sr-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg | ||
[sr]: https://github.com/semantic-release/semantic-release | ||
[prettier-badge]: https://img.shields.io/badge/styled_with-prettier-ff69b4.svg | ||
[prettier]: https://github.com/prettier/prettier | ||
[npm-badge]: https://img.shields.io/npm/v/@angular-extensions/testing-library.svg | ||
[npm]: https://www.npmjs.com/package/@angular-extensions/testing-library | ||
[version-badge]: https://img.shields.io/npm/v/@angular-extensions/testing-library.svg?style=flat-square | ||
[package]: https://www.npmjs.com/package/@angular-extensions/testing-library | ||
[downloads-badge]: https://img.shields.io/npm/dm/@angular-extensions/testing-library.svg?style=flat-square | ||
[npmtrends]: http://www.npmtrends.com/@angular-extensions/testing-library | ||
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg | ||
[spectrum]: https://spectrum.chat/testing-library | ||
[license-badge]: https://img.shields.io/npm/l/@angular-extensions/testing-library.svg?style=flat-square | ||
[license]: https://github.com/angular-extensions/testing-library/blob/master/LICENSE | ||
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square | ||
[prs]: http://makeapullrequest.com | ||
[donate-badge]: https://img.shields.io/badge/$-support-green.svg?style=flat-square | ||
[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square | ||
[coc]: https://github.com/angular-extensions/testing-library/blob/master/CODE_OF_CONDUCT.md | ||
[dom-testing-library]: https://testing-library.com/ | ||
[github-watch-badge]: https://img.shields.io/github/watchers/angular-extensions/testing-library.svg?style=social | ||
[github-watch]: https://github.com/angular-extensions/testing-library/watchers | ||
[github-star-badge]: https://img.shields.io/github/stars/angular-extensions/testing-library.svg?style=social | ||
[github-star]: https://github.com/angular-extensions/testing-library/stargazers | ||
[twitter]: https://twitter.com/intent/tweet?text=Check%20out%20🦔%20@angular-extensions/testing-library%20by%20%40tim_deschryver%20https%3A%2F%2Fgithub.com%2F@angular-extensions/testing-library | ||
[twitter-badge]: https://img.shields.io/twitter/url/https/github.com/angular-extensions/testing-library.svg?style=social | ||
[emojis]: https://github.com/all-contributors/all-contributors#emoji-key | ||
[all-contributors]: https://github.com/all-contributors/all-contributors | ||
[set-immediate]: https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate | ||
[guiding-principle]: https://twitter.com/kentcdodds/status/977018512689455106 | ||
[bugs]: https://github.com/angular-extensions/testing-library/issues?q=is%3Aissue+is%3Aopen+label%3Abug+sort%3Acreated-desc | ||
[requests]: https://github.com/angular-extensions/testing-library/issues?q=is%3Aissue+sort%3Areactions-%2B1-desc+label%3Aenhancement+is%3Aopen | ||
[good-first-issue]: https://github.com/angular-extensions/testing-library/issues?utf8=✓&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3A"good+first+issue"+ | ||
[stackoverflow]: https://stackoverflow.com/questions/tagged/angular-testing-library | ||
<!-- prettier-ignore-end --> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
230330
41
1487
246
6
1
+ Addedtslint@^5.16.0
+ Added@babel/code-frame@7.24.7(transitive)
+ Added@babel/helper-validator-identifier@7.24.7(transitive)
+ Added@babel/highlight@7.24.7(transitive)
+ Added@phenomnomnominal/tsquery@3.0.0(transitive)
+ Addedargparse@1.0.10(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedbuiltin-modules@1.1.1(transitive)
+ Addedchalk@2.4.2(transitive)
+ Addedcommander@2.20.3(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addeddiff@4.0.2(transitive)
+ Addeddom-testing-library@4.1.1(transitive)
+ Addedescape-string-regexp@1.0.5(transitive)
+ Addedesprima@4.0.1(transitive)
+ Addedesquery@1.5.0(transitive)
+ Addedestraverse@5.3.0(transitive)
+ Addedfs.realpath@1.0.0(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedglob@7.2.3(transitive)
+ Addedhas-flag@3.0.0(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedinflight@1.0.6(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedis-core-module@2.13.1(transitive)
+ Addedjs-tokens@4.0.0(transitive)
+ Addedjs-yaml@3.14.1(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedminimist@1.2.8(transitive)
+ Addedmkdirp@0.5.6(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedpath-parse@1.0.7(transitive)
+ Addedpicocolors@1.0.1(transitive)
+ Addedresolve@1.22.8(transitive)
+ Addedsemver@5.7.2(transitive)
+ Addedsprintf-js@1.0.3(transitive)
+ Addedsupports-color@5.5.0(transitive)
+ Addedsupports-preserve-symlinks-flag@1.0.0(transitive)
+ Addedtslint@5.20.1(transitive)
+ Addedtsutils@2.29.0(transitive)
+ Addedtypescript@3.9.10(transitive)
+ Addedwrappy@1.0.2(transitive)
- Removeddom-testing-library@3.19.4(transitive)
Updateddom-testing-library@^4.0.1