@glimmer/application-test-helpers
Advanced tools
Comparing version 0.14.0-alpha.10 to 0.14.0-alpha.11
@@ -1,2 +0,2 @@ | ||
'use strict'; | ||
"use strict"; | ||
@@ -7,3 +7,3 @@ Object.defineProperty(exports, "__esModule", { | ||
var _appBuilder = require('./src/app-builder'); | ||
var _appBuilder = require("./src/app-builder"); | ||
@@ -20,3 +20,3 @@ Object.keys(_appBuilder).forEach(function (key) { | ||
var _compiler = require('./src/compiler'); | ||
var _compiler = require("./src/compiler"); | ||
@@ -33,5 +33,5 @@ Object.keys(_compiler).forEach(function (key) { | ||
var _defaultResolverConfiguration = require('./src/default-resolver-configuration'); | ||
var _defaultResolverConfiguration = require("./src/default-resolver-configuration"); | ||
Object.defineProperty(exports, 'defaultResolverConfiguration', { | ||
Object.defineProperty(exports, "defaultResolverConfiguration", { | ||
enumerable: true, | ||
@@ -43,5 +43,5 @@ get: function () { | ||
var _didRender = require('./src/did-render'); | ||
var _didRender = require("./src/did-render"); | ||
Object.defineProperty(exports, 'didRender', { | ||
Object.defineProperty(exports, "didRender", { | ||
enumerable: true, | ||
@@ -53,3 +53,3 @@ get: function () { | ||
var _renderTest = require('./src/render-test'); | ||
var _renderTest = require("./src/render-test"); | ||
@@ -56,0 +56,0 @@ Object.keys(_renderTest).forEach(function (key) { |
@@ -1,33 +0,33 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.buildApp = exports.AppBuilder = exports.TestApplication = undefined; | ||
var _resolver = require('@glimmer/resolver'); | ||
var _resolver = require("@glimmer/resolver"); | ||
var _resolver2 = _interopRequireDefault(_resolver); | ||
var _defaultResolverConfiguration = require('./default-resolver-configuration'); | ||
var _defaultResolverConfiguration = require("./default-resolver-configuration"); | ||
var _defaultResolverConfiguration2 = _interopRequireDefault(_defaultResolverConfiguration); | ||
var _compiler = require('./compiler'); | ||
var _compiler = require("./compiler"); | ||
var _application = require('@glimmer/application'); | ||
var _application = require("@glimmer/application"); | ||
var _application2 = _interopRequireDefault(_application); | ||
var _component = require('@glimmer/component'); | ||
var _component = require("@glimmer/component"); | ||
var _util = require('@glimmer/util'); | ||
var _util = require("@glimmer/util"); | ||
var _bundleCompiler = require('@glimmer/bundle-compiler'); | ||
var _bundleCompiler = require("@glimmer/bundle-compiler"); | ||
var _opcodeCompiler = require('@glimmer/opcode-compiler'); | ||
var _opcodeCompiler = require("@glimmer/opcode-compiler"); | ||
var _ssr = require('@glimmer/ssr'); | ||
var _ssr = require("@glimmer/ssr"); | ||
var _didRender = require('./did-render'); | ||
var _didRender = require("./did-render"); | ||
@@ -39,187 +39,246 @@ var _didRender2 = _interopRequireDefault(_didRender); | ||
class TestApplication extends _application2.default {} | ||
exports.TestApplication = TestApplication; | ||
function locatorFor(module, name) { | ||
return { | ||
kind: 'template', | ||
module, | ||
name, | ||
meta: { | ||
module, | ||
name | ||
} | ||
}; | ||
return { | ||
kind: 'template', | ||
module, | ||
name, | ||
meta: { | ||
module, | ||
name | ||
} | ||
}; | ||
} | ||
class AppBuilder { | ||
constructor(name, options) { | ||
this.modules = {}; | ||
this.templates = {}; | ||
this.rootName = name; | ||
this.options = options; | ||
this.modules[`component-manager:/${this.rootName}/component-managers/main`] = this.options.ComponentManager; | ||
this.template('Main', '<div />'); | ||
this.helper('action', _application.buildAction, true); | ||
constructor(name, options) { | ||
this.modules = {}; | ||
this.templates = {}; | ||
this.rootName = name; | ||
this.options = options; | ||
this.modules[`component-manager:/${this.rootName}/component-managers/main`] = this.options.ComponentManager; | ||
this.template('Main', '<div />'); | ||
this.helper('action', _application.buildAction, true); | ||
} | ||
template(name, template) { | ||
(0, _util.assert)(name.charAt(0) === name.charAt(0).toUpperCase(), 'template names must start with a capital letter'); | ||
let specifier = `template:/${this.rootName}/components/${name}`; | ||
this.modules[specifier] = (0, _compiler.precompile)(template, { | ||
meta: { | ||
specifier | ||
} | ||
}); | ||
this.templates[specifier] = template; | ||
return this; | ||
} | ||
component(name, componentFactory) { | ||
let specifier = `component:/${this.rootName}/components/${name}`; | ||
this.modules[specifier] = componentFactory; | ||
return this; | ||
} | ||
helper(name, helperFunc, isFactory = false) { | ||
let specifier = `helper:/${this.rootName}/components/${name}`; | ||
helperFunc.isFactory = isFactory; | ||
this.modules[specifier] = helperFunc; | ||
return this; | ||
} | ||
buildResolver() { | ||
let resolverConfiguration = this.options.resolverConfiguration || _defaultResolverConfiguration2.default; | ||
resolverConfiguration.app = resolverConfiguration.app || { | ||
name: this.rootName, | ||
rootName: this.rootName | ||
}; | ||
let registry = new _resolver.BasicModuleRegistry(this.modules); | ||
return new _resolver2.default(resolverConfiguration, registry); | ||
} | ||
buildRuntimeCompilerLoader() { | ||
return new _application.RuntimeCompilerLoader(); | ||
} | ||
buildBytecodeLoader(resolver) { | ||
let delegate = new CompilerDelegate(resolver); | ||
let compiler = new _bundleCompiler.BundleCompiler(delegate); | ||
let mainLocator = locatorFor('template:mainTemplate', 'default'); | ||
mainLocator.meta.module = 'template:mainTemplate'; | ||
let block = JSON.parse(_application.mainTemplate.block); | ||
let compilableTemplate = (0, _opcodeCompiler.compilable)({ | ||
block, | ||
referrer: mainLocator.meta | ||
}); | ||
compiler.addCompilableTemplate(mainLocator, compilableTemplate); | ||
for (let module in this.templates) { | ||
compiler.addTemplateSource(locatorFor(module, 'default'), this.templates[module]); | ||
} | ||
template(name, template) { | ||
(0, _util.assert)(name.charAt(0) === name.charAt(0).toUpperCase(), 'template names must start with a capital letter'); | ||
let specifier = `template:/${this.rootName}/components/${name}`; | ||
this.modules[specifier] = (0, _compiler.precompile)(template, { meta: { specifier } }); | ||
this.templates[specifier] = template; | ||
return this; | ||
} | ||
component(name, componentFactory) { | ||
let specifier = `component:/${this.rootName}/components/${name}`; | ||
this.modules[specifier] = componentFactory; | ||
return this; | ||
} | ||
helper(name, helperFunc, isFactory = false) { | ||
let specifier = `helper:/${this.rootName}/components/${name}`; | ||
helperFunc.isFactory = isFactory; | ||
this.modules[specifier] = helperFunc; | ||
return this; | ||
} | ||
buildResolver() { | ||
let resolverConfiguration = this.options.resolverConfiguration || _defaultResolverConfiguration2.default; | ||
resolverConfiguration.app = resolverConfiguration.app || { | ||
name: this.rootName, | ||
rootName: this.rootName | ||
}; | ||
let registry = new _resolver.BasicModuleRegistry(this.modules); | ||
return new _resolver2.default(resolverConfiguration, registry); | ||
} | ||
buildRuntimeCompilerLoader() { | ||
return new _application.RuntimeCompilerLoader(); | ||
} | ||
buildBytecodeLoader(resolver) { | ||
let delegate = new CompilerDelegate(resolver); | ||
let compiler = new _bundleCompiler.BundleCompiler(delegate); | ||
let mainLocator = locatorFor('template:mainTemplate', 'default'); | ||
mainLocator.meta.module = 'template:mainTemplate'; | ||
let block = JSON.parse(_application.mainTemplate.block); | ||
let compilableTemplate = (0, _opcodeCompiler.compilable)({ | ||
block, | ||
referrer: mainLocator.meta | ||
}); | ||
compiler.addCompilableTemplate(mainLocator, compilableTemplate); | ||
for (let module in this.templates) { | ||
compiler.addTemplateSource(locatorFor(module, 'default'), this.templates[module]); | ||
let { | ||
heap, | ||
pool, | ||
table | ||
} = compiler.compile(); | ||
let resolverTable = []; | ||
let meta = {}; | ||
table.vmHandleByModuleLocator.forEach((vmHandle, locator) => { | ||
let handle = table.byModuleLocator.get(locator); | ||
let template = compiler.getTemplate(locator); | ||
meta[locator.module] = { | ||
v: vmHandle, | ||
h: handle, | ||
table: template.symbolTable | ||
}; | ||
}); | ||
table.byHandle.forEach((locator, handle) => { | ||
let module = locator.module.replace('template:/', 'component:/'); | ||
if (this.modules[module]) { | ||
if (module.indexOf('helper:') === 0) { | ||
const moduleType = this.modules[module].isFactory ? 0 | ||
/* HELPER_FACTORY */ | ||
: 1 | ||
/* HELPER */ | ||
; | ||
resolverTable[handle] = [moduleType, this.modules[module]]; | ||
} else { | ||
resolverTable[handle] = this.modules[module]; | ||
} | ||
let { heap, pool, table } = compiler.compile(); | ||
let resolverTable = []; | ||
let meta = {}; | ||
table.vmHandleByModuleLocator.forEach((vmHandle, locator) => { | ||
let handle = table.byModuleLocator.get(locator); | ||
let template = compiler.getTemplate(locator); | ||
meta[locator.module] = { | ||
v: vmHandle, | ||
h: handle, | ||
table: template.symbolTable | ||
}; | ||
}); | ||
table.byHandle.forEach((locator, handle) => { | ||
let module = locator.module.replace('template:/', 'component:/'); | ||
if (this.modules[module]) { | ||
if (module.indexOf('helper:') === 0) { | ||
const moduleType = this.modules[module].isFactory ? 0 /* HELPER_FACTORY */ : 1 /* HELPER */; | ||
resolverTable[handle] = [moduleType, this.modules[module]]; | ||
} else { | ||
resolverTable[handle] = this.modules[module]; | ||
} | ||
} | ||
}); | ||
let bytecode = heap.buffer; | ||
let data = { | ||
prefix: '', | ||
mainEntry: table.vmHandleByModuleLocator.get(mainLocator), | ||
pool, | ||
table: resolverTable, | ||
meta, | ||
heap: { | ||
table: heap.table, | ||
handle: heap.handle | ||
} | ||
}; | ||
return new _application.BytecodeLoader({ bytecode, data }); | ||
} | ||
}); | ||
let bytecode = heap.buffer; | ||
let data = { | ||
prefix: '', | ||
mainEntry: table.vmHandleByModuleLocator.get(mainLocator), | ||
pool, | ||
table: resolverTable, | ||
meta, | ||
heap: { | ||
table: heap.table, | ||
handle: heap.handle | ||
} | ||
}; | ||
return new _application.BytecodeLoader({ | ||
bytecode, | ||
data | ||
}); | ||
} | ||
buildLoader(resolver) { | ||
switch (this.options.loader) { | ||
case 'runtime-compiler': | ||
return this.buildRuntimeCompilerLoader(); | ||
case 'bytecode': | ||
return this.buildBytecodeLoader(resolver); | ||
default: | ||
throw new Error(`Unrecognized loader ${this.options.loader}`); | ||
} | ||
buildLoader(resolver) { | ||
switch (this.options.loader) { | ||
case 'runtime-compiler': | ||
return this.buildRuntimeCompilerLoader(); | ||
case 'bytecode': | ||
return this.buildBytecodeLoader(resolver); | ||
default: | ||
throw new Error(`Unrecognized loader ${this.options.loader}`); | ||
} | ||
} | ||
renderToString(componentName, data, options) { | ||
const resolver = this.buildResolver(); | ||
let loader = this.buildLoader(resolver); | ||
return _ssr.SSRApplication.renderToString(componentName, data, Object.assign({ rootName: this.rootName, resolver, | ||
loader, renderer: new _application.SyncRenderer() }, options)); | ||
} | ||
async boot() { | ||
let resolver = this.buildResolver(); | ||
let loader = this.buildLoader(resolver); | ||
let doc = this.options.document || document; | ||
let element = doc.body; | ||
let builder = new _application.DOMBuilder({ element }); | ||
let renderer = new _application.SyncRenderer(); | ||
let app = new this.options.ApplicationClass({ | ||
resolver, | ||
builder, | ||
loader, | ||
renderer, | ||
rootName: this.rootName, | ||
document: this.options.document | ||
}); | ||
let rootElement = doc.createElement('div'); | ||
app.rootElement = rootElement; | ||
app.renderComponent('Main', rootElement); | ||
app.boot(); | ||
await (0, _didRender2.default)(app); | ||
return app; | ||
} | ||
} | ||
renderToString(componentName, data, options) { | ||
const resolver = this.buildResolver(); | ||
let loader = this.buildLoader(resolver); | ||
return _ssr.SSRApplication.renderToString(componentName, data, Object.assign({ | ||
rootName: this.rootName, | ||
resolver, | ||
loader, | ||
renderer: new _application.SyncRenderer() | ||
}, options)); | ||
} | ||
async boot() { | ||
let resolver = this.buildResolver(); | ||
let loader = this.buildLoader(resolver); | ||
let doc = this.options.document || document; | ||
let element = doc.body; | ||
let builder = new _application.DOMBuilder({ | ||
element | ||
}); | ||
let renderer = new _application.SyncRenderer(); | ||
let app = new this.options.ApplicationClass({ | ||
resolver, | ||
builder, | ||
loader, | ||
renderer, | ||
rootName: this.rootName, | ||
document: this.options.document | ||
}); | ||
let rootElement = doc.createElement('div'); | ||
app.rootElement = rootElement; | ||
app.renderComponent('Main', rootElement); | ||
app.boot(); | ||
await (0, _didRender2.default)(app); | ||
return app; | ||
} | ||
} | ||
exports.AppBuilder = AppBuilder; | ||
class CompilerDelegate { | ||
constructor(resolver) { | ||
this.resolver = resolver; | ||
} | ||
hasComponentInScope(name, referrer) { | ||
return !!this.resolver.identify(`template:${name}`, referrer.module); | ||
} | ||
resolveComponent(name, referrer) { | ||
let resolved = this.resolver.identify(`template:${name}`, referrer.module); | ||
return { module: resolved, name: 'default' }; | ||
} | ||
getComponentCapabilities() { | ||
return _component.CAPABILITIES; | ||
} | ||
hasHelperInScope(helperName, referrer) { | ||
return !!this.resolver.identify(`helper:${helperName}`, referrer.module); | ||
} | ||
resolveHelper(helperName, referrer) { | ||
let resolved = this.resolver.identify(`helper:${helperName}`, referrer.module); | ||
return { module: resolved, name: 'default' }; | ||
} | ||
hasPartialInScope(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
} | ||
resolvePartial(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
} | ||
hasModifierInScope(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
} | ||
resolveModifier(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
} | ||
constructor(resolver) { | ||
this.resolver = resolver; | ||
} | ||
hasComponentInScope(name, referrer) { | ||
return !!this.resolver.identify(`template:${name}`, referrer.module); | ||
} | ||
resolveComponent(name, referrer) { | ||
let resolved = this.resolver.identify(`template:${name}`, referrer.module); | ||
return { | ||
module: resolved, | ||
name: 'default' | ||
}; | ||
} | ||
getComponentCapabilities() { | ||
return _component.CAPABILITIES; | ||
} | ||
hasHelperInScope(helperName, referrer) { | ||
return !!this.resolver.identify(`helper:${helperName}`, referrer.module); | ||
} | ||
resolveHelper(helperName, referrer) { | ||
let resolved = this.resolver.identify(`helper:${helperName}`, referrer.module); | ||
return { | ||
module: resolved, | ||
name: 'default' | ||
}; | ||
} | ||
hasPartialInScope(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
} | ||
resolvePartial(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
} | ||
hasModifierInScope(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
} | ||
resolveModifier(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
} | ||
} | ||
function buildApp(options = {}) { | ||
options.appName = options.appName || 'test-app'; | ||
options.loader = options.loader || 'runtime-compiler'; | ||
options.ComponentManager = options.ComponentManager || _component.ComponentManager; | ||
options.ApplicationClass = options.ApplicationClass || TestApplication; | ||
return new AppBuilder(options.appName, options); | ||
options.appName = options.appName || 'test-app'; | ||
options.loader = options.loader || 'runtime-compiler'; | ||
options.ComponentManager = options.ComponentManager || _component.ComponentManager; | ||
options.ApplicationClass = options.ApplicationClass || TestApplication; | ||
return new AppBuilder(options.appName, options); | ||
} | ||
exports.buildApp = buildApp; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUNBOztBQUNBOzs7O0FBVUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7O0FBRUE7Ozs7OztBQWVNLE1BQU8sZUFBUCxTQUErQixxQkFBL0IsQ0FBMEM7UUFBbkMsZSxHQUFBLGU7QUFxQmIsU0FBUyxVQUFULENBQW9CLE1BQXBCLEVBQW9DLElBQXBDLEVBQWdEO0FBQzlDLFdBQU87QUFDTCxjQUFNLFVBREQ7QUFFTCxjQUZLO0FBR0wsWUFISztBQUlMLGNBQU07QUFDSixrQkFESTtBQUVKO0FBRkk7QUFKRCxLQUFQO0FBU0Q7QUFFSyxNQUFPLFVBQVAsQ0FBaUI7QUFNckIsZ0JBQVksSUFBWixFQUEwQixPQUExQixFQUF1RDtBQUp2RCxhQUFBLE9BQUEsR0FBeUIsRUFBekI7QUFDQSxhQUFBLFNBQUEsR0FBMEIsRUFBMUI7QUFJRSxhQUFLLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxhQUFLLE9BQUwsR0FBZSxPQUFmO0FBQ0EsYUFBSyxPQUFMLENBQ0Usc0JBQXNCLEtBQUssUUFBUSwwQkFEckMsSUFFSSxLQUFLLE9BQUwsQ0FBYSxnQkFGakI7QUFHQSxhQUFLLFFBQUwsQ0FBYyxNQUFkLEVBQXNCLFNBQXRCO0FBQ0EsYUFBSyxNQUFMLENBQVksUUFBWixFQUFzQix3QkFBdEIsRUFBbUMsSUFBbkM7QUFDRDtBQUVELGFBQVMsSUFBVCxFQUF1QixRQUF2QixFQUF1QztBQUNyQywwQkFDRSxLQUFLLE1BQUwsQ0FBWSxDQUFaLE1BQW1CLEtBQUssTUFBTCxDQUFZLENBQVosRUFBZSxXQUFmLEVBRHJCLEVBRUUsaURBRkY7QUFLQSxZQUFJLFlBQVksYUFBYSxLQUFLLFFBQVEsZUFBZSxJQUFJLEVBQTdEO0FBQ0EsYUFBSyxPQUFMLENBQWEsU0FBYixJ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LENBQTZDLFVBQWdDLEVBQTdFLEVBQStFO0FBQzdFLFlBQVEsT0FBUixHQUFrQixRQUFRLE9BQVIsSUFBbUIsVUFBckM7QUFDQSxZQUFRLE1BQVIsR0FBaUIsUUFBUSxNQUFSLElBQWtCLGtCQUFuQztBQUNBLFlBQVEsZ0JBQVIsR0FBMkIsUUFBUSxnQkFBUixJQUE0QiwyQkFBdkQ7QUFDQSxZQUFRLGdCQUFSLEdBQ0UsUUFBUSxnQkFBUixJQUE2QixlQUQvQjtBQUdBLFdBQU8sSUFBSSxVQUFKLENBQWUsUUFBUSxPQUF2QixFQUFnQyxPQUFoQyxDQUFQO0FBQ0Q7UUFFUSxRLEdBQUEsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvbHZlciwgeyBCYXNpY01vZHVsZVJlZ2lzdHJ5LCBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0LCBNb2R1bGVMb2NhdG9yLCBUZW1wbGF0ZUxvY2F0b3IgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uIGZyb20gJy4vZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbiwge1xuICBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yLFxuICBCeXRlY29kZUxvYWRlcixcbiAgRE9NQnVpbGRlcixcbiAgTG9hZGVyLFxuICBSdW50aW1lQ29tcGlsZXJMb2FkZXIsXG4gIFN5bmNSZW5kZXJlcixcbiAgTW9kdWxlVHlwZXMsXG4gIElOVEVSTkFMX0RZTkFNSUNfU0NPUEVcbn0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFuYWdlciwgQ0FQQUJJTElUSUVTIH0gZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQnVuZGxlQ29tcGlsZXIsIENvbXBpbGVyRGVsZWdhdGUgYXMgSUNvbXBpbGVyRGVsZWdhdGUgfSBmcm9tICdAZ2xpbW1lci9idW5kbGUtY29tcGlsZXInO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb24sIG1haW5UZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IGNvbXBpbGFibGUgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9zcmMvbG9hZGVycy9ieXRlY29kZS9sb2FkZXInO1xuaW1wb3J0IHsgU2ltcGxlRG9jdW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1NSQXBwbGljYXRpb24gfSBmcm9tICdAZ2xpbW1lci9zc3InO1xuXG5pbXBvcnQgZGlkUmVuZGVyIGZyb20gJy4vZGlkLXJlbmRlcic7XG5pbXBvcnQgSFRNTFNlcmlhbGl6ZXIgZnJvbSAnQHNpbXBsZS1kb20vc2VyaWFsaXplcic7XG5pbXBvcnQgeyBSZW5kZXJlciB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uL3NyYy9iYXNlLWFwcGxpY2F0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBUZXN0U1NSQXBwbGljYXRpb25PcHRpb25zIHtcbiAgcm9vdE5hbWU/OiBzdHJpbmc7XG4gIHJlc29sdmVyPzogUmVzb2x2ZXI7XG4gIGxvYWRlcj86IExvYWRlcjtcbiAgcmVuZGVyZXI/OiBSZW5kZXJlcjtcbiAgc2VyaWFsaXplcj86IEhUTUxTZXJpYWxpemVyO1xuICBbSU5URVJOQUxfRFlOQU1JQ19TQ09QRV0/OiBEaWN0PHVua25vd24+O1xufVxuXG5mdW5jdGlvbiBsb2NhdG9yRm9yKG1vZHVsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZUxvY2F0b3I8TW9kdWxlTG9jYXRvcj4ge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICd0ZW1wbGF0ZScsXG4gICAgbW9kdWxlLFxuICAgIG5hbWUsXG4gICAgbWV0YToge1xuICAgICAgbW9kdWxlLFxuICAgICAgbmFtZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQXBwQnVpbGRlcjxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPiB7XG4gIHJvb3ROYW1lOiBzdHJpbmc7XG4gIG1vZHVsZXM6IERpY3Q8dW5rbm93bj4gPSB7fTtcbiAgdGVtcGxhdGVzOiBEaWN0PHN0cmluZz4gPSB7fTtcbiAgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD47XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPikge1xuICAgIHRoaXMucm9vdE5hbWUgPSBuYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5tb2R1bGVzW1xuICAgICAgYGNvbXBvbmVudC1tYW5hZ2VyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudC1tYW5hZ2Vycy9tYWluYFxuICAgIF0gPSB0aGlzLm9wdGlvbnMuQ29tcG9uZW50TWFuYWdlcjtcbiAgICB0aGlzLnRlbXBsYXRlKCdNYWluJywgJzxkaXYgLz4nKTtcbiAgICB0aGlzLmhlbHBlcignYWN0aW9uJywgYnVpbGRBY3Rpb24sIHRydWUpO1xuICB9XG5cbiAgdGVtcGxhdGUobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbmFtZS5jaGFyQXQoMCkgPT09IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCksXG4gICAgICAndGVtcGxhdGUgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInXG4gICAgKTtcblxuICAgIGxldCBzcGVjaWZpZXIgPSBgdGVtcGxhdGU6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IHByZWNvbXBpbGUodGVtcGxhdGUsIHsgbWV0YTogeyBzcGVjaWZpZXIgfSB9KTtcbiAgICB0aGlzLnRlbXBsYXRlc1tzcGVjaWZpZXJdID0gdGVtcGxhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21wb25lbnQobmFtZTogc3RyaW5nLCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5KSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBjb21wb25lbnQ6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGNvbXBvbmVudEZhY3Rvcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nLCBoZWxwZXJGdW5jOiBIZWxwZXJGdW5jdGlvbiwgaXNGYWN0b3J5ID0gZmFsc2UpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGhlbHBlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIGhlbHBlckZ1bmMuaXNGYWN0b3J5ID0gaXNGYWN0b3J5O1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gaGVscGVyRnVuYztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlc29sdmVyKCk6IFJlc29sdmVyIHtcbiAgICBsZXQgcmVzb2x2ZXJDb25maWd1cmF0aW9uID0gdGhpcy5vcHRpb25zLnJlc29sdmVyQ29uZmlndXJhdGlvbiB8fCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICAgIHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgPSByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwIHx8IHtcbiAgICAgIG5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICB9O1xuXG4gICAgbGV0IHJlZ2lzdHJ5ID0gbmV3IEJhc2ljTW9kdWxlUmVnaXN0cnkodGhpcy5tb2R1bGVzKTtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVyKHJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk6IExvYWRlciB7XG4gICAgcmV0dXJuIG5ldyBSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyOiBSZXNvbHZlcikge1xuICAgIGxldCBkZWxlZ2F0ZSA9IG5ldyBDb21waWxlckRlbGVnYXRlKHJlc29sdmVyKTtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgQnVuZGxlQ29tcGlsZXIoZGVsZWdhdGUpO1xuXG4gICAgbGV0IG1haW5Mb2NhdG9yID0gbG9jYXRvckZvcigndGVtcGxhdGU6bWFpblRlbXBsYXRlJywgJ2RlZmF1bHQnKTtcbiAgICBtYWluTG9jYXRvci5tZXRhLm1vZHVsZSA9ICd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnO1xuXG4gICAgbGV0IGJsb2NrID0gSlNPTi5wYXJzZShtYWluVGVtcGxhdGUuYmxvY2spO1xuICAgIGxldCBjb21waWxhYmxlVGVtcGxhdGUgPSBjb21waWxhYmxlKHtcbiAgICAgIGJsb2NrLFxuICAgICAgcmVmZXJyZXI6IG1haW5Mb2NhdG9yLm1ldGEsXG4gICAgfSk7XG5cbiAgICBjb21waWxlci5hZGRDb21waWxhYmxlVGVtcGxhdGUobWFpbkxvY2F0b3IsIGNvbXBpbGFibGVUZW1wbGF0ZSk7XG5cbiAgICBmb3IgKGxldCBtb2R1bGUgaW4gdGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbXBpbGVyLmFkZFRlbXBsYXRlU291cmNlKGxvY2F0b3JGb3IobW9kdWxlLCAnZGVmYXVsdCcpLCB0aGlzLnRlbXBsYXRlc1ttb2R1bGVdKTtcbiAgICB9XG5cbiAgICBsZXQgeyBoZWFwLCBwb29sLCB0YWJsZSB9ID0gY29tcGlsZXIuY29tcGlsZSgpO1xuXG4gICAgbGV0IHJlc29sdmVyVGFibGU6IHVua25vd25bXSA9IFtdO1xuXG4gICAgbGV0IG1ldGE6IERpY3Q8TWV0YWRhdGE+ID0ge307XG5cbiAgICB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5mb3JFYWNoKCh2bUhhbmRsZSwgbG9jYXRvcikgPT4ge1xuICAgICAgbGV0IGhhbmRsZSA9IHRhYmxlLmJ5TW9kdWxlTG9jYXRvci5nZXQobG9jYXRvcik7XG4gICAgICBsZXQgdGVtcGxhdGUgPSBjb21waWxlci5nZXRUZW1wbGF0ZShsb2NhdG9yKTtcblxuICAgICAgbWV0YVtsb2NhdG9yLm1vZHVsZV0gPSB7XG4gICAgICAgIHY6IHZtSGFuZGxlLFxuICAgICAgICBoOiBoYW5kbGUsXG4gICAgICAgIHRhYmxlOiB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0YWJsZS5ieUhhbmRsZS5mb3JFYWNoKChsb2NhdG9yLCBoYW5kbGUpID0+IHtcbiAgICAgIGxldCBtb2R1bGUgPSBsb2NhdG9yLm1vZHVsZS5yZXBsYWNlKCd0ZW1wbGF0ZTovJywgJ2NvbXBvbmVudDovJyk7XG4gICAgICBpZiAodGhpcy5tb2R1bGVzW21vZHVsZV0pIHtcbiAgICAgICAgaWYgKG1vZHVsZS5pbmRleE9mKCdoZWxwZXI6JykgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gKHRoaXMubW9kdWxlc1ttb2R1bGVdIGFzIEhlbHBlckZ1bmN0aW9uKS5pc0ZhY3RvcnkgPyBNb2R1bGVUeXBlcy5IRUxQRVJfRkFDVE9SWSA6IE1vZHVsZVR5cGVzLkhFTFBFUjtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSBbbW9kdWxlVHlwZSwgdGhpcy5tb2R1bGVzW21vZHVsZV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYnl0ZWNvZGUgPSBoZWFwLmJ1ZmZlcjtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIHByZWZpeDogJycsXG4gICAgICBtYWluRW50cnk6IHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmdldChtYWluTG9jYXRvciksXG4gICAgICBwb29sLFxuICAgICAgdGFibGU6IHJlc29sdmVyVGFibGUsXG4gICAgICBtZXRhLFxuICAgICAgaGVhcDoge1xuICAgICAgICB0YWJsZTogaGVhcC50YWJsZSxcbiAgICAgICAgaGFuZGxlOiBoZWFwLmhhbmRsZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQnl0ZWNvZGVMb2FkZXIoeyBieXRlY29kZSwgZGF0YSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZExvYWRlcihyZXNvbHZlcik6IExvYWRlciB7XG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubG9hZGVyKSB7XG4gICAgICBjYXNlICdydW50aW1lLWNvbXBpbGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgICAgIGNhc2UgJ2J5dGVjb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsb2FkZXIgJHt0aGlzLm9wdGlvbnMubG9hZGVyfWApO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogRGljdDx1bmtub3duPiwgb3B0aW9ucz86IFRlc3RTU1JBcHBsaWNhdGlvbk9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgcmV0dXJuIFNTUkFwcGxpY2F0aW9uLnJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWUsIGRhdGEsIHtcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcmVzb2x2ZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcjogbmV3IFN5bmNSZW5kZXJlcigpLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYm9vdCgpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyOiBMb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIGxldCBkb2M6IERvY3VtZW50ID0gKHRoaXMub3B0aW9ucy5kb2N1bWVudCBhcyBEb2N1bWVudCkgfHwgZG9jdW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBkb2MuYm9keTtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKHsgZWxlbWVudCB9KTtcbiAgICBsZXQgcmVuZGVyZXIgPSBuZXcgU3luY1JlbmRlcmVyKCk7XG5cbiAgICBsZXQgYXBwID0gbmV3IHRoaXMub3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzKHtcbiAgICAgIHJlc29sdmVyLFxuICAgICAgYnVpbGRlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICBkb2N1bWVudDogdGhpcy5vcHRpb25zLmRvY3VtZW50LFxuICAgIH0pO1xuXG4gICAgbGV0IHJvb3RFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFwcC5yb290RWxlbWVudCA9IHJvb3RFbGVtZW50O1xuICAgIGFwcC5yZW5kZXJDb21wb25lbnQoJ01haW4nLCByb290RWxlbWVudCk7XG4gICAgYXBwLmJvb3QoKTtcblxuICAgIGF3YWl0IGRpZFJlbmRlcihhcHApO1xuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlckRlbGVnYXRlIGltcGxlbWVudHMgSUNvbXBpbGVyRGVsZWdhdGU8TW9kdWxlTG9jYXRvcj4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVzb2x2ZXI6IFJlc29sdmVyKSB7fVxuXG4gIGhhc0NvbXBvbmVudEluU2NvcGUobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUNvbXBvbmVudChuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBnZXRDb21wb25lbnRDYXBhYmlsaXRpZXMoKSB7XG4gICAgcmV0dXJuIENBUEFCSUxJVElFUztcbiAgfVxuXG4gIGhhc0hlbHBlckluU2NvcGUoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxJblNjb3BlKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZVBhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBoYXNNb2RpZmllckluU2NvcGUobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZU1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEFwcDxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPihvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPiA9IHt9KTogQXBwQnVpbGRlcjxUPiB7XG4gIG9wdGlvbnMuYXBwTmFtZSA9IG9wdGlvbnMuYXBwTmFtZSB8fCAndGVzdC1hcHAnO1xuICBvcHRpb25zLmxvYWRlciA9IG9wdGlvbnMubG9hZGVyIHx8ICdydW50aW1lLWNvbXBpbGVyJztcbiAgb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyID0gb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyIHx8IENvbXBvbmVudE1hbmFnZXI7XG4gIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyA9XG4gICAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzIHx8IChUZXN0QXBwbGljYXRpb24gYXMgQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPik7XG5cbiAgcmV0dXJuIG5ldyBBcHBCdWlsZGVyKG9wdGlvbnMuYXBwTmFtZSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCB7IGJ1aWxkQXBwIH07XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7QUFDQTs7QUFDQTs7OztBQVVBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUVBOzs7Ozs7QUFlTSxNQUFPLGVBQVAsU0FBK0IscUJBQS9CLENBQTBDOztRQUFuQyxlLEdBQUEsZTs7QUFxQmIsU0FBUyxVQUFULENBQW9CLE1BQXBCLEVBQW9DLElBQXBDLEVBQWdEO0FBQzlDLFNBQU87QUFDTCxJQUFBLElBQUksRUFBRSxVQUREO0FBRUwsSUFBQSxNQUZLO0FBR0wsSUFBQSxJQUhLO0FBSUwsSUFBQSxJQUFJLEVBQUU7QUFDSixNQUFBLE1BREk7QUFFSixNQUFBO0FBRkk7QUFKRCxHQUFQO0FBU0Q7O0FBRUssTUFBTyxVQUFQLENBQWlCO0FBTXJCLEVBQUEsV0FBQSxDQUFZLElBQVosRUFBMEIsT0FBMUIsRUFBdUQ7QUFKdkQsU0FBQSxPQUFBLEdBQXlCLEVBQXpCO0FBQ0EsU0FBQSxTQUFBLEdBQTBCLEVBQTFCO0FBSUUsU0FBSyxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsU0FBSyxPQUFMLEdBQWUsT0FBZjtBQUNBLFNBQUssT0FBTCxDQUNFLHNCQUFzQixLQUFLLFFBQVEsMEJBRHJDLElBRUksS0FBSyxPQUFMLENBQWEsZ0JBRmpCO0FBR0EsU0FBSyxRQUFMLENBQWMsTUFBZCxFQUFzQixTQUF0QjtBQUNBLFNBQUssTUFBTCxDQUFZLFFBQVosRUFBc0Isd0JBQXRCLEVBQW1DLElBQW5DO0FBQ0Q7O0FBRUQsRUFBQSxRQUFRLENBQUMsSUFBRCxFQUFlLFFBQWYsRUFBK0I7QUFDckMsc0JBQ0UsSUFBSSxDQUFDLE1BQUwsQ0FBWSxDQUFaLE1BQW1CLElBQUksQ0FBQyxNQUFMLENBQVksQ0FBWixFQUFlLFdBQWYsRUFEckIsRUFFRSxpREFG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QSxHQUFnQyxFQUE3RSxFQUErRTtBQUM3RSxFQUFBLE9BQU8sQ0FBQyxPQUFSLEdBQWtCLE9BQU8sQ0FBQyxPQUFSLElBQW1CLFVBQXJDO0FBQ0EsRUFBQSxPQUFPLENBQUMsTUFBUixHQUFpQixPQUFPLENBQUMsTUFBUixJQUFrQixrQkFBbkM7QUFDQSxFQUFBLE9BQU8sQ0FBQyxnQkFBUixHQUEyQixPQUFPLENBQUMsZ0JBQVIsSUFBNEIsMkJBQXZEO0FBQ0EsRUFBQSxPQUFPLENBQUMsZ0JBQVIsR0FDRSxPQUFPLENBQUMsZ0JBQVIsSUFBNkIsZUFEL0I7QUFHQSxTQUFPLElBQUksVUFBSixDQUFlLE9BQU8sQ0FBQyxPQUF2QixFQUFnQyxPQUFoQyxDQUFQO0FBQ0Q7O1FBRVEsUSxHQUFBLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVzb2x2ZXIsIHsgQmFzaWNNb2R1bGVSZWdpc3RyeSwgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnQGdsaW1tZXIvcmVzb2x2ZXInO1xuaW1wb3J0IHsgRGljdCwgTW9kdWxlTG9jYXRvciwgVGVtcGxhdGVMb2NhdG9yIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbiBmcm9tICcuL2RlZmF1bHQtcmVzb2x2ZXItY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnLi9jb21waWxlcic7XG5pbXBvcnQgQXBwbGljYXRpb24sIHtcbiAgQXBwbGljYXRpb25Db25zdHJ1Y3RvcixcbiAgQnl0ZWNvZGVMb2FkZXIsXG4gIERPTUJ1aWxkZXIsXG4gIExvYWRlcixcbiAgUnVudGltZUNvbXBpbGVyTG9hZGVyLFxuICBTeW5jUmVuZGVyZXIsXG4gIE1vZHVsZVR5cGVzLFxuICBJTlRFUk5BTF9EWU5BTUlDX1NDT1BFXG59IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvbXBvbmVudE1hbmFnZXIsIENBUEFCSUxJVElFUyB9IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEJ1bmRsZUNvbXBpbGVyLCBDb21waWxlckRlbGVnYXRlIGFzIElDb21waWxlckRlbGVnYXRlIH0gZnJvbSAnQGdsaW1tZXIvYnVuZGxlLWNvbXBpbGVyJztcbmltcG9ydCB7IGJ1aWxkQWN0aW9uLCBtYWluVGVtcGxhdGUgfSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBjb21waWxhYmxlIH0gZnJvbSAnQGdsaW1tZXIvb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24vc3JjL2xvYWRlcnMvYnl0ZWNvZGUvbG9hZGVyJztcbmltcG9ydCB7IFNpbXBsZURvY3VtZW50IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IFNTUkFwcGxpY2F0aW9uIH0gZnJvbSAnQGdsaW1tZXIvc3NyJztcblxuaW1wb3J0IGRpZFJlbmRlciBmcm9tICcuL2RpZC1yZW5kZXInO1xuaW1wb3J0IEhUTUxTZXJpYWxpemVyIGZyb20gJ0BzaW1wbGUtZG9tL3NlcmlhbGl6ZXInO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbi9zcmMvYmFzZS1hcHBsaWNhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlck9wdGlvbnM8VD4ge1xuICBhcHBOYW1lPzogc3RyaW5nO1xuICBsb2FkZXI/OiBzdHJpbmc7XG4gIEFwcGxpY2F0aW9uQ2xhc3M/OiBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+O1xuICBDb21wb25lbnRNYW5hZ2VyPzogYW55OyAvLyBUT0RPIC0gdHlwaW5nXG4gIHJlc29sdmVyQ29uZmlndXJhdGlvbj86IFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgZG9jdW1lbnQ/OiBTaW1wbGVEb2N1bWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRGYWN0b3J5IHt9XG5cbmV4cG9ydCBjbGFzcyBUZXN0QXBwbGljYXRpb24gZXh0ZW5kcyBBcHBsaWNhdGlvbiB7XG4gIHJvb3RFbGVtZW50OiBFbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJUZW1wbGF0ZU1ldGEge1xuICBzcGVjaWZpZXI6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEhlbHBlckZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBpc0ZhY3Rvcnk/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVGVzdFNTUkFwcGxpY2F0aW9uT3B0aW9ucyB7XG4gIHJvb3ROYW1lPzogc3RyaW5nO1xuICByZXNvbHZlcj86IFJlc29sdmVyO1xuICBsb2FkZXI/OiBMb2FkZXI7XG4gIHJlbmRlcmVyPzogUmVuZGVyZXI7XG4gIHNlcmlhbGl6ZXI/OiBIVE1MU2VyaWFsaXplcjtcbiAgW0lOVEVSTkFMX0RZTkFNSUNfU0NPUEVdPzogRGljdDx1bmtub3duPjtcbn1cblxuZnVuY3Rpb24gbG9jYXRvckZvcihtb2R1bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogVGVtcGxhdGVMb2NhdG9yPE1vZHVsZUxvY2F0b3I+IHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiAndGVtcGxhdGUnLFxuICAgIG1vZHVsZSxcbiAgICBuYW1lLFxuICAgIG1ldGE6IHtcbiAgICAgIG1vZHVsZSxcbiAgICAgIG5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcEJ1aWxkZXI8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ge1xuICByb290TmFtZTogc3RyaW5nO1xuICBtb2R1bGVzOiBEaWN0PHVua25vd24+ID0ge307XG4gIHRlbXBsYXRlczogRGljdDxzdHJpbmc+ID0ge307XG4gIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4pIHtcbiAgICB0aGlzLnJvb3ROYW1lID0gbmFtZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMubW9kdWxlc1tcbiAgICAgIGBjb21wb25lbnQtbWFuYWdlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnQtbWFuYWdlcnMvbWFpbmBcbiAgICBdID0gdGhpcy5vcHRpb25zLkNvbXBvbmVudE1hbmFnZXI7XG4gICAgdGhpcy50ZW1wbGF0ZSgnTWFpbicsICc8ZGl2IC8+Jyk7XG4gICAgdGhpcy5oZWxwZXIoJ2FjdGlvbicsIGJ1aWxkQWN0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIHRlbXBsYXRlKG5hbWU6IHN0cmluZywgdGVtcGxhdGU6IHN0cmluZykge1xuICAgIGFzc2VydChcbiAgICAgIG5hbWUuY2hhckF0KDApID09PSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpLFxuICAgICAgJ3RlbXBsYXRlIG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyJ1xuICAgICk7XG5cbiAgICBsZXQgc3BlY2lmaWVyID0gYHRlbXBsYXRlOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBwcmVjb21waWxlKHRlbXBsYXRlLCB7IG1ldGE6IHsgc3BlY2lmaWVyIH0gfSk7XG4gICAgdGhpcy50ZW1wbGF0ZXNbc3BlY2lmaWVyXSA9IHRlbXBsYXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29tcG9uZW50KG5hbWU6IHN0cmluZywgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgY29tcG9uZW50Oi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaGVscGVyKG5hbWU6IHN0cmluZywgaGVscGVyRnVuYzogSGVscGVyRnVuY3Rpb24sIGlzRmFjdG9yeSA9IGZhbHNlKSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBoZWxwZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICBoZWxwZXJGdW5jLmlzRmFjdG9yeSA9IGlzRmFjdG9yeTtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGhlbHBlckZ1bmM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSZXNvbHZlcigpOiBSZXNvbHZlciB7XG4gICAgbGV0IHJlc29sdmVyQ29uZmlndXJhdGlvbiA9IHRoaXMub3B0aW9ucy5yZXNvbHZlckNvbmZpZ3VyYXRpb24gfHwgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgICByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwID0gcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCB8fCB7XG4gICAgICBuYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgfTtcblxuICAgIGxldCByZWdpc3RyeSA9IG5ldyBCYXNpY01vZHVsZVJlZ2lzdHJ5KHRoaXMubW9kdWxlcyk7XG4gICAgcmV0dXJuIG5ldyBSZXNvbHZlcihyZXNvbHZlckNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpOiBMb2FkZXIge1xuICAgIHJldHVybiBuZXcgUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcjogUmVzb2x2ZXIpIHtcbiAgICBsZXQgZGVsZWdhdGUgPSBuZXcgQ29tcGlsZXJEZWxlZ2F0ZShyZXNvbHZlcik7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEJ1bmRsZUNvbXBpbGVyKGRlbGVnYXRlKTtcblxuICAgIGxldCBtYWluTG9jYXRvciA9IGxvY2F0b3JGb3IoJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZScsICdkZWZhdWx0Jyk7XG4gICAgbWFpbkxvY2F0b3IubWV0YS5tb2R1bGUgPSAndGVtcGxhdGU6bWFpblRlbXBsYXRlJztcblxuICAgIGxldCBibG9jayA9IEpTT04ucGFyc2UobWFpblRlbXBsYXRlLmJsb2NrKTtcbiAgICBsZXQgY29tcGlsYWJsZVRlbXBsYXRlID0gY29tcGlsYWJsZSh7XG4gICAgICBibG9jayxcbiAgICAgIHJlZmVycmVyOiBtYWluTG9jYXRvci5tZXRhLFxuICAgIH0pO1xuXG4gICAgY29tcGlsZXIuYWRkQ29tcGlsYWJsZVRlbXBsYXRlKG1haW5Mb2NhdG9yLCBjb21waWxhYmxlVGVtcGxhdGUpO1xuXG4gICAgZm9yIChsZXQgbW9kdWxlIGluIHRoaXMudGVtcGxhdGVzKSB7XG4gICAgICBjb21waWxlci5hZGRUZW1wbGF0ZVNvdXJjZShsb2NhdG9yRm9yKG1vZHVsZSwgJ2RlZmF1bHQnKSwgdGhpcy50ZW1wbGF0ZXNbbW9kdWxlXSk7XG4gICAgfVxuXG4gICAgbGV0IHsgaGVhcCwgcG9vbCwgdGFibGUgfSA9IGNvbXBpbGVyLmNvbXBpbGUoKTtcblxuICAgIGxldCByZXNvbHZlclRhYmxlOiB1bmtub3duW10gPSBbXTtcblxuICAgIGxldCBtZXRhOiBEaWN0PE1ldGFkYXRhPiA9IHt9O1xuXG4gICAgdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZm9yRWFjaCgodm1IYW5kbGUsIGxvY2F0b3IpID0+IHtcbiAgICAgIGxldCBoYW5kbGUgPSB0YWJsZS5ieU1vZHVsZUxvY2F0b3IuZ2V0KGxvY2F0b3IpO1xuICAgICAgbGV0IHRlbXBsYXRlID0gY29tcGlsZXIuZ2V0VGVtcGxhdGUobG9jYXRvcik7XG5cbiAgICAgIG1ldGFbbG9jYXRvci5tb2R1bGVdID0ge1xuICAgICAgICB2OiB2bUhhbmRsZSxcbiAgICAgICAgaDogaGFuZGxlLFxuICAgICAgICB0YWJsZTogdGVtcGxhdGUuc3ltYm9sVGFibGUsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGFibGUuYnlIYW5kbGUuZm9yRWFjaCgobG9jYXRvciwgaGFuZGxlKSA9PiB7XG4gICAgICBsZXQgbW9kdWxlID0gbG9jYXRvci5tb2R1bGUucmVwbGFjZSgndGVtcGxhdGU6LycsICdjb21wb25lbnQ6LycpO1xuICAgICAgaWYgKHRoaXMubW9kdWxlc1ttb2R1bGVdKSB7XG4gICAgICAgIGlmIChtb2R1bGUuaW5kZXhPZignaGVscGVyOicpID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9ICh0aGlzLm1vZHVsZXNbbW9kdWxlXSBhcyBIZWxwZXJGdW5jdGlvbikuaXNGYWN0b3J5ID8gTW9kdWxlVHlwZXMuSEVMUEVSX0ZBQ1RPUlkgOiBNb2R1bGVUeXBlcy5IRUxQRVI7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gW21vZHVsZVR5cGUsIHRoaXMubW9kdWxlc1ttb2R1bGVdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSB0aGlzLm1vZHVsZXNbbW9kdWxlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGJ5dGVjb2RlID0gaGVhcC5idWZmZXI7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBwcmVmaXg6ICcnLFxuICAgICAgbWFpbkVudHJ5OiB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5nZXQobWFpbkxvY2F0b3IpLFxuICAgICAgcG9vbCxcbiAgICAgIHRhYmxlOiByZXNvbHZlclRhYmxlLFxuICAgICAgbWV0YSxcbiAgICAgIGhlYXA6IHtcbiAgICAgICAgdGFibGU6IGhlYXAudGFibGUsXG4gICAgICAgIGhhbmRsZTogaGVhcC5oYW5kbGUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEJ5dGVjb2RlTG9hZGVyKHsgYnl0ZWNvZGUsIGRhdGEgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRMb2FkZXIocmVzb2x2ZXIpOiBMb2FkZXIge1xuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmxvYWRlcikge1xuICAgICAgY2FzZSAncnVudGltZS1jb21waWxlcic6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gICAgICBjYXNlICdieXRlY29kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgbG9hZGVyICR7dGhpcy5vcHRpb25zLmxvYWRlcn1gKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lOiBzdHJpbmcsIGRhdGE6IERpY3Q8dW5rbm93bj4sIG9wdGlvbnM/OiBUZXN0U1NSQXBwbGljYXRpb25PcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIHJldHVybiBTU1JBcHBsaWNhdGlvbi5yZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lLCBkYXRhLCB7XG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJlc29sdmVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXI6IG5ldyBTeW5jUmVuZGVyZXIoKSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGJvb3QoKTogUHJvbWlzZTxUPiB7XG4gICAgbGV0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlcjogTG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICBsZXQgZG9jOiBEb2N1bWVudCA9ICh0aGlzLm9wdGlvbnMuZG9jdW1lbnQgYXMgRG9jdW1lbnQpIHx8IGRvY3VtZW50O1xuICAgIGxldCBlbGVtZW50ID0gZG9jLmJvZHk7XG4gICAgbGV0IGJ1aWxkZXIgPSBuZXcgRE9NQnVpbGRlcih7IGVsZW1lbnQgfSk7XG4gICAgbGV0IHJlbmRlcmVyID0gbmV3IFN5bmNSZW5kZXJlcigpO1xuXG4gICAgbGV0IGFwcCA9IG5ldyB0aGlzLm9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyh7XG4gICAgICByZXNvbHZlcixcbiAgICAgIGJ1aWxkZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcixcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgZG9jdW1lbnQ6IHRoaXMub3B0aW9ucy5kb2N1bWVudCxcbiAgICB9KTtcblxuICAgIGxldCByb290RWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBhcHAucm9vdEVsZW1lbnQgPSByb290RWxlbWVudDtcbiAgICBhcHAucmVuZGVyQ29tcG9uZW50KCdNYWluJywgcm9vdEVsZW1lbnQpO1xuICAgIGFwcC5ib290KCk7XG5cbiAgICBhd2FpdCBkaWRSZW5kZXIoYXBwKTtcblxuICAgIHJldHVybiBhcHA7XG4gIH1cbn1cblxuY2xhc3MgQ29tcGlsZXJEZWxlZ2F0ZSBpbXBsZW1lbnRzIElDb21waWxlckRlbGVnYXRlPE1vZHVsZUxvY2F0b3I+IHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlc29sdmVyOiBSZXNvbHZlcikge31cblxuICBoYXNDb21wb25lbnRJblNjb3BlKG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVDb21wb25lbnQobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50Q2FwYWJpbGl0aWVzKCkge1xuICAgIHJldHVybiBDQVBBQklMSVRJRVM7XG4gIH1cblxuICBoYXNIZWxwZXJJblNjb3BlKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBoYXNQYXJ0aWFsSW5TY29wZShwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgaGFzTW9kaWZpZXJJblNjb3BlKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRBcHA8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ob3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4gPSB7fSk6IEFwcEJ1aWxkZXI8VD4ge1xuICBvcHRpb25zLmFwcE5hbWUgPSBvcHRpb25zLmFwcE5hbWUgfHwgJ3Rlc3QtYXBwJztcbiAgb3B0aW9ucy5sb2FkZXIgPSBvcHRpb25zLmxvYWRlciB8fCAncnVudGltZS1jb21waWxlcic7XG4gIG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciA9IG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciB8fCBDb21wb25lbnRNYW5hZ2VyO1xuICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgPVxuICAgIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyB8fCAoVGVzdEFwcGxpY2F0aW9uIGFzIEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD4pO1xuXG4gIHJldHVybiBuZXcgQXBwQnVpbGRlcihvcHRpb25zLmFwcE5hbWUsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgeyBidWlsZEFwcCB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ== |
@@ -1,13 +0,13 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.precompile = precompile; | ||
var _compiler = require('@glimmer/compiler'); | ||
var _compiler = require("@glimmer/compiler"); | ||
function precompile(template, options) { | ||
return JSON.parse((0, _compiler.precompile)(template, options)); | ||
return JSON.parse((0, _compiler.precompile)(template, options)); | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFPZ0IsVSxHQUFBLFU7Ozs7QUFBVixTQUFVLFVBQVYsQ0FDSixRQURJLEVBRUosT0FGSSxFQUVzQjtBQUUxQixXQUFPLEtBQUssS0FBTCxDQUFXLDBCQUFrQixRQUFsQixFQUE0QixPQUE1QixDQUFYLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByZWNvbXBpbGUgYXMgZ2xpbW1lclByZWNvbXBpbGUsIFByZWNvbXBpbGVPcHRpb25zIH0gZnJvbSAnQGdsaW1tZXIvY29tcGlsZXInO1xuaW1wb3J0IHsgU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG4vLyBSYXRoZXIgdGhhbiBkdXBsaWNhdGluZyB0aGUgVGVtcGxhdGVNZXRhIGRlZmluaXRpb24gZnJvbSBAZ2xpbW1lci9jb21wb25lbnQsXG4vLyB3aGljaCBpcyBub3QgYSBkZXBlbmRlbmN5LCBsZXQncyBiZSBtb3JlIHBlcm1pc3NpdmUgZm9yIHRoaXMgdGVzdCBoZWxwZXIuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZU1ldGEgPSBhbnk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9uc1xuKTogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazxUZW1wbGF0ZU1ldGE+IHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoZ2xpbW1lclByZWNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMpKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFPZ0IsVSxHQUFBLFU7O0FBUGhCOztBQU9NLFNBQVUsVUFBVixDQUNKLFFBREksRUFFSixPQUZJLEVBRXNCO0FBRTFCLFNBQU8sSUFBSSxDQUFDLEtBQUwsQ0FBVywwQkFBa0IsUUFBbEIsRUFBNEIsT0FBNUIsQ0FBWCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVjb21waWxlIGFzIGdsaW1tZXJQcmVjb21waWxlLCBQcmVjb21waWxlT3B0aW9ucyB9IGZyb20gJ0BnbGltbWVyL2NvbXBpbGVyJztcbmltcG9ydCB7IFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2sgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuLy8gUmF0aGVyIHRoYW4gZHVwbGljYXRpbmcgdGhlIFRlbXBsYXRlTWV0YSBkZWZpbml0aW9uIGZyb20gQGdsaW1tZXIvY29tcG9uZW50LFxuLy8gd2hpY2ggaXMgbm90IGEgZGVwZW5kZW5jeSwgbGV0J3MgYmUgbW9yZSBwZXJtaXNzaXZlIGZvciB0aGlzIHRlc3QgaGVscGVyLlxuZXhwb3J0IHR5cGUgVGVtcGxhdGVNZXRhID0gYW55O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZShcbiAgdGVtcGxhdGU6IHN0cmluZyxcbiAgb3B0aW9uczogUHJlY29tcGlsZU9wdGlvbnNcbik6IFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2s8VGVtcGxhdGVNZXRhPiB7XG4gIHJldHVybiBKU09OLnBhcnNlKGdsaW1tZXJQcmVjb21waWxlKHRlbXBsYXRlLCBvcHRpb25zKSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -1,34 +0,48 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
const CONFIG = { | ||
types: { | ||
application: { definitiveCollection: 'main' }, | ||
component: { definitiveCollection: 'components' }, | ||
helper: { definitiveCollection: 'components' }, | ||
renderer: { definitiveCollection: 'main' }, | ||
template: { definitiveCollection: 'components' }, | ||
util: { definitiveCollection: 'utils' }, | ||
'component-manager': { definitiveCollection: 'component-managers' } | ||
types: { | ||
application: { | ||
definitiveCollection: 'main' | ||
}, | ||
collections: { | ||
main: { | ||
types: ['application', 'renderer'] | ||
}, | ||
components: { | ||
group: 'ui', | ||
types: ['component', 'template', 'helper'], | ||
defaultType: 'component' | ||
}, | ||
'component-managers': { | ||
types: ['component-manager'] | ||
}, | ||
utils: { | ||
unresolvable: true | ||
} | ||
component: { | ||
definitiveCollection: 'components' | ||
}, | ||
helper: { | ||
definitiveCollection: 'components' | ||
}, | ||
renderer: { | ||
definitiveCollection: 'main' | ||
}, | ||
template: { | ||
definitiveCollection: 'components' | ||
}, | ||
util: { | ||
definitiveCollection: 'utils' | ||
}, | ||
'component-manager': { | ||
definitiveCollection: 'component-managers' | ||
} | ||
}, | ||
collections: { | ||
main: { | ||
types: ['application', 'renderer'] | ||
}, | ||
components: { | ||
group: 'ui', | ||
types: ['component', 'template', 'helper'], | ||
defaultType: 'component' | ||
}, | ||
'component-managers': { | ||
types: ['component-manager'] | ||
}, | ||
utils: { | ||
unresolvable: true | ||
} | ||
} | ||
}; | ||
exports.default = CONFIG; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsTUFBTSxTQUFnQztBQUNwQyxXQUFPO0FBQ0wscUJBQWEsRUFBRSxzQkFBc0IsTUFBeEIsRUFEUjtBQUVMLG1CQUFXLEVBQUUsc0JBQXNCLFlBQXhCLEVBRk47QUFHTCxnQkFBUSxFQUFFLHNCQUFzQixZQUF4QixFQUhIO0FBSUwsa0JBQVUsRUFBRSxzQkFBc0IsTUFBeEIsRUFKTDtBQUtMLGtCQUFVLEVBQUUsc0JBQXNCLFlBQXhCLEVBTEw7QUFNTCxjQUFNLEVBQUUsc0JBQXNCLE9BQXhCLEVBTkQ7QUFPTCw2QkFBcUIsRUFBRSxzQkFBc0Isb0JBQXhCO0FBUGhCLEtBRDZCO0FBVXBDLGlCQUFhO0FBQ1gsY0FBTTtBQUNKLG1CQUFPLENBQUMsYUFBRCxFQUFnQixVQUFoQjtBQURILFNBREs7QUFJWCxvQkFBWTtBQUNWLG1CQUFPLElBREc7QUFFVixtQkFBTyxDQUFDLFdBQUQsRUFBYyxVQUFkLEVBQTBCLFFBQTFCLENBRkc7QUFHVix5QkFBYTtBQUhILFNBSkQ7QUFTWCw4QkFBc0I7QUFDcEIsbUJBQU8sQ0FBQyxtQkFBRDtBQURhLFNBVFg7QUFZWCxlQUFPO0FBQ0wsMEJBQWM7QUFEVDtBQVpJO0FBVnVCLENBQXRDO2tCQTRCZSxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnQGdsaW1tZXIvcmVzb2x2ZXInO1xuXG5jb25zdCBDT05GSUc6IFJlc29sdmVyQ29uZmlndXJhdGlvbiA9IHtcbiAgdHlwZXM6IHtcbiAgICBhcHBsaWNhdGlvbjogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ21haW4nIH0sXG4gICAgY29tcG9uZW50OiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnY29tcG9uZW50cycgfSxcbiAgICBoZWxwZXI6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdjb21wb25lbnRzJyB9LFxuICAgIHJlbmRlcmVyOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnbWFpbicgfSxcbiAgICB0ZW1wbGF0ZTogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ2NvbXBvbmVudHMnIH0sXG4gICAgdXRpbDogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ3V0aWxzJyB9LFxuICAgICdjb21wb25lbnQtbWFuYWdlcic6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdjb21wb25lbnQtbWFuYWdlcnMnIH0sXG4gIH0sXG4gIGNvbGxlY3Rpb25zOiB7XG4gICAgbWFpbjoge1xuICAgICAgdHlwZXM6IFsnYXBwbGljYXRpb24nLCAncmVuZGVyZXInXSxcbiAgICB9LFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgIGdyb3VwOiAndWknLFxuICAgICAgdHlwZXM6IFsnY29tcG9uZW50JywgJ3RlbXBsYXRlJywgJ2hlbHBlciddLFxuICAgICAgZGVmYXVsdFR5cGU6ICdjb21wb25lbnQnLFxuICAgIH0sXG4gICAgJ2NvbXBvbmVudC1tYW5hZ2Vycyc6IHtcbiAgICAgIHR5cGVzOiBbJ2NvbXBvbmVudC1tYW5hZ2VyJ10sXG4gICAgfSxcbiAgICB1dGlsczoge1xuICAgICAgdW5yZXNvbHZhYmxlOiB0cnVlLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDT05GSUc7XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsTUFBTSxNQUFNLEdBQTBCO0FBQ3BDLEVBQUEsS0FBSyxFQUFFO0FBQ0wsSUFBQSxXQUFXLEVBQUU7QUFBRSxNQUFBLG9CQUFvQixFQUFFO0FBQXhCLEtBRFI7QUFFTCxJQUFBLFNBQVMsRUFBRTtBQUFFLE1BQUEsb0JBQW9CLEVBQUU7QUFBeEIsS0FGTjtBQUdMLElBQUEsTUFBTSxFQUFFO0FBQUUsTUFBQSxvQkFBb0IsRUFBRTtBQUF4QixLQUhIO0FBSUwsSUFBQSxRQUFRLEVBQUU7QUFBRSxNQUFBLG9CQUFvQixFQUFFO0FBQXhCLEtBSkw7QUFLTCxJQUFBLFFBQVEsRUFBRTtBQUFFLE1BQUEsb0JBQW9CLEVBQUU7QUFBeEIsS0FMTDtBQU1MLElBQUEsSUFBSSxFQUFFO0FBQUUsTUFBQSxvQkFBb0IsRUFBRTtBQUF4QixLQU5EO0FBT0wseUJBQXFCO0FBQUUsTUFBQSxvQkFBb0IsRUFBRTtBQUF4QjtBQVBoQixHQUQ2QjtBQVVwQyxFQUFBLFdBQVcsRUFBRTtBQUNYLElBQUEsSUFBSSxFQUFFO0FBQ0osTUFBQSxLQUFLLEVBQUUsQ0FBQyxhQUFELEVBQWdCLFVBQWhCO0FBREgsS0FESztBQUlYLElBQUEsVUFBVSxFQUFFO0FBQ1YsTUFBQSxLQUFLLEVBQUUsSUFERztBQUVWLE1BQUEsS0FBSyxFQUFFLENBQUMsV0FBRCxFQUFjLFVBQWQsRUFBMEIsUUFBMUIsQ0FGRztBQUdWLE1BQUEsV0FBVyxFQUFFO0FBSEgsS0FKRDtBQVNYLDBCQUFzQjtBQUNwQixNQUFBLEtBQUssRUFBRSxDQUFDLG1CQUFEO0FBRGEsS0FUWDtBQVlYLElBQUEsS0FBSyxFQUFFO0FBQ0wsTUFBQSxZQUFZLEVBQUU7QUFEVDtBQVpJO0FBVnVCLENBQXRDO2tCQTRCZSxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnQGdsaW1tZXIvcmVzb2x2ZXInO1xuXG5jb25zdCBDT05GSUc6IFJlc29sdmVyQ29uZmlndXJhdGlvbiA9IHtcbiAgdHlwZXM6IHtcbiAgICBhcHBsaWNhdGlvbjogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ21haW4nIH0sXG4gICAgY29tcG9uZW50OiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnY29tcG9uZW50cycgfSxcbiAgICBoZWxwZXI6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdjb21wb25lbnRzJyB9LFxuICAgIHJlbmRlcmVyOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnbWFpbicgfSxcbiAgICB0ZW1wbGF0ZTogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ2NvbXBvbmVudHMnIH0sXG4gICAgdXRpbDogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ3V0aWxzJyB9LFxuICAgICdjb21wb25lbnQtbWFuYWdlcic6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdjb21wb25lbnQtbWFuYWdlcnMnIH0sXG4gIH0sXG4gIGNvbGxlY3Rpb25zOiB7XG4gICAgbWFpbjoge1xuICAgICAgdHlwZXM6IFsnYXBwbGljYXRpb24nLCAncmVuZGVyZXInXSxcbiAgICB9LFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgIGdyb3VwOiAndWknLFxuICAgICAgdHlwZXM6IFsnY29tcG9uZW50JywgJ3RlbXBsYXRlJywgJ2hlbHBlciddLFxuICAgICAgZGVmYXVsdFR5cGU6ICdjb21wb25lbnQnLFxuICAgIH0sXG4gICAgJ2NvbXBvbmVudC1tYW5hZ2Vycyc6IHtcbiAgICAgIHR5cGVzOiBbJ2NvbXBvbmVudC1tYW5hZ2VyJ10sXG4gICAgfSxcbiAgICB1dGlsczoge1xuICAgICAgdW5yZXNvbHZhYmxlOiB0cnVlLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDT05GSUc7XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -1,18 +0,20 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
async function didRender(app) { | ||
return new Promise((resolve, reject) => { | ||
// If the app is scheduled to re-render, or has not yet been rendered for | ||
// the first time, register to be notified when the next render completes. | ||
if (app['_scheduled'] || !app['_rendered']) { | ||
app['_notifiers'].push([resolve, reject]); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
return new Promise((resolve, reject) => { | ||
// If the app is scheduled to re-render, or has not yet been rendered for | ||
// the first time, register to be notified when the next render completes. | ||
if (app['_scheduled'] || !app['_rendered']) { | ||
app['_notifiers'].push([resolve, reject]); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
} | ||
exports.default = didRender; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGlkLXJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGVBQWUsU0FBZixDQUF5QixHQUF6QixFQUFpQztBQUMvQixXQUFPLElBQUksT0FBSixDQUFrQixDQUFDLE9BQUQsRUFBVSxNQUFWLEtBQW9CO0FBQzNDO0FBQ0E7QUFDQSxZQUFJLElBQUksWUFBSixLQUFxQixDQUFDLElBQUksV0FBSixDQUExQixFQUE0QztBQUMxQyxnQkFBSSxZQUFKLEVBQWtCLElBQWxCLENBQXVCLENBQUMsT0FBRCxFQUFVLE1BQVYsQ0FBdkI7QUFDRCxTQUZELE1BRU87QUFDTDtBQUNEO0FBQ0YsS0FSTSxDQUFQO0FBU0Q7a0JBRWMsUyIsInNvdXJjZXNDb250ZW50IjpbImFzeW5jIGZ1bmN0aW9uIGRpZFJlbmRlcihhcHA6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIElmIHRoZSBhcHAgaXMgc2NoZWR1bGVkIHRvIHJlLXJlbmRlciwgb3IgaGFzIG5vdCB5ZXQgYmVlbiByZW5kZXJlZCBmb3JcbiAgICAvLyB0aGUgZmlyc3QgdGltZSwgcmVnaXN0ZXIgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgbmV4dCByZW5kZXIgY29tcGxldGVzLlxuICAgIGlmIChhcHBbJ19zY2hlZHVsZWQnXSB8fCAhYXBwWydfcmVuZGVyZWQnXSkge1xuICAgICAgYXBwWydfbm90aWZpZXJzJ10ucHVzaChbcmVzb2x2ZSwgcmVqZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkaWRSZW5kZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGlkLXJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxlQUFlLFNBQWYsQ0FBeUIsR0FBekIsRUFBaUM7QUFDL0IsU0FBTyxJQUFJLE9BQUosQ0FBa0IsQ0FBQyxPQUFELEVBQVUsTUFBVixLQUFvQjtBQUMzQztBQUNBO0FBQ0EsUUFBSSxHQUFHLENBQUMsWUFBRCxDQUFILElBQXFCLENBQUMsR0FBRyxDQUFDLFdBQUQsQ0FBN0IsRUFBNEM7QUFDMUMsTUFBQSxHQUFHLENBQUMsWUFBRCxDQUFILENBQWtCLElBQWxCLENBQXVCLENBQUMsT0FBRCxFQUFVLE1BQVYsQ0FBdkI7QUFDRCxLQUZELE1BRU87QUFDTCxNQUFBLE9BQU87QUFDUjtBQUNGLEdBUk0sQ0FBUDtBQVNEOztrQkFFYyxTIiwic291cmNlc0NvbnRlbnQiOlsiYXN5bmMgZnVuY3Rpb24gZGlkUmVuZGVyKGFwcDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gSWYgdGhlIGFwcCBpcyBzY2hlZHVsZWQgdG8gcmUtcmVuZGVyLCBvciBoYXMgbm90IHlldCBiZWVuIHJlbmRlcmVkIGZvclxuICAgIC8vIHRoZSBmaXJzdCB0aW1lLCByZWdpc3RlciB0byBiZSBub3RpZmllZCB3aGVuIHRoZSBuZXh0IHJlbmRlciBjb21wbGV0ZXMuXG4gICAgaWYgKGFwcFsnX3NjaGVkdWxlZCddIHx8ICFhcHBbJ19yZW5kZXJlZCddKSB7XG4gICAgICBhcHBbJ19ub3RpZmllcnMnXS5wdXNoKFtyZXNvbHZlLCByZWplY3RdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpZFJlbmRlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -1,5 +0,5 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
@@ -10,47 +10,61 @@ exports.RenderTest = undefined; | ||
var _appBuilder = require('./app-builder'); | ||
var _appBuilder = require("./app-builder"); | ||
var _env = require('@glimmer/env'); | ||
var _env = require("@glimmer/env"); | ||
function renderModule(name, renderTest) { | ||
QUnit.module(name); | ||
for (let prop in renderTest.prototype) { | ||
const test = renderTest.prototype[prop]; | ||
if (isTestFunction(test) && shouldRun(test)) { | ||
['runtime-compiler', 'bytecode'].forEach(loader => { | ||
let app = (0, _appBuilder.buildApp)({ loader }); | ||
QUnit.test(`[${loader}] ${prop}`, assert => test.call({ app }, assert)); | ||
}); | ||
} | ||
QUnit.module(name); | ||
for (let prop in renderTest.prototype) { | ||
const test = renderTest.prototype[prop]; | ||
if (isTestFunction(test) && shouldRun(test)) { | ||
['runtime-compiler', 'bytecode'].forEach(loader => { | ||
let app = (0, _appBuilder.buildApp)({ | ||
loader | ||
}); | ||
QUnit.test(`[${loader}] ${prop}`, assert => test.call({ | ||
app | ||
}, assert)); | ||
}); | ||
} | ||
} | ||
} | ||
function shouldRun(testFunc) { | ||
if (testFunc['debug'] && !_env.DEBUG) { | ||
return false; | ||
} | ||
return true; | ||
if (testFunc['debug'] && !_env.DEBUG) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
function isTestFunction(value) { | ||
return typeof value === 'function' && value.isTest; | ||
return typeof value === 'function' && value.isTest; | ||
} | ||
class RenderTest {} | ||
exports.RenderTest = RenderTest; | ||
function setTestingDescriptor(descriptor) { | ||
let testFunction = descriptor.value; | ||
descriptor.enumerable = true; | ||
testFunction['isTest'] = true; | ||
let testFunction = descriptor.value; | ||
descriptor.enumerable = true; | ||
testFunction['isTest'] = true; | ||
} | ||
function test(...args) { | ||
if (args.length === 1) { | ||
let meta = args[0]; | ||
return (_target, _name, descriptor) => { | ||
let testFunction = descriptor.value; | ||
Object.keys(meta).forEach(key => testFunction[key] = meta[key]); | ||
setTestingDescriptor(descriptor); | ||
}; | ||
} | ||
let descriptor = args[2]; | ||
setTestingDescriptor(descriptor); | ||
return descriptor; | ||
if (args.length === 1) { | ||
let meta = args[0]; | ||
return (_target, _name, descriptor) => { | ||
let testFunction = descriptor.value; | ||
Object.keys(meta).forEach(key => testFunction[key] = meta[key]); | ||
setTestingDescriptor(descriptor); | ||
}; | ||
} | ||
let descriptor = args[2]; | ||
setTestingDescriptor(descriptor); | ||
return descriptor; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvcmVuZGVyLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBT2dCLFksR0FBQSxZO1FBcURBLEksR0FBQSxJOzs7O0FBM0RoQjs7QUFNTSxTQUFVLFlBQVYsQ0FBdUIsSUFBdkIsRUFBcUMsVUFBckMsRUFBd0U7QUFDNUUsVUFBTSxNQUFOLENBQWEsSUFBYjtBQUVBLFNBQUssSUFBSSxJQUFULElBQWlCLFdBQVcsU0FBNUIsRUFBdUM7QUFDckMsY0FBTSxPQUFPLFdBQVcsU0FBWCxDQUFxQixJQUFyQixDQUFiO0FBRUEsWUFBSSxlQUFlLElBQWYsS0FBd0IsVUFBVSxJQUFWLENBQTVCLEVBQTZDO0FBQzNDLGFBQUMsa0JBQUQsRUFBcUIsVUFBckIsRUFBaUMsT0FBakMsQ0FBeUMsVUFBUztBQUNoRCxvQkFBSSxNQUFNLDBCQUFTLEVBQUUsTUFBRixFQUFULENBQVY7QUFDQSxzQkFBTSxJQUFOLENBQVcsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUE5QixFQUFrQyxVQUFVLEtBQUssSUFBTCxDQUFVLEVBQUUsR0FBRixFQUFWLEVBQW1CLE1BQW5CLENBQTVDO0FBQ0QsYUFIRDtBQUlEO0FBQ0Y7QUFDRjtBQUVELFNBQVMsU0FBVCxDQUFtQixRQUFuQixFQUFnQztBQUM5QixRQUFJLFNBQVMsT0FBVCxLQUFxQixDQUFDLFVBQTFCLEVBQWlDO0FBQy9CLGVBQU8sS0FBUDtBQUNEO0FBQ0QsV0FBTyxJQUFQO0FBQ0Q7QUFFRCxTQUFTLGNBQVQsQ0FDRSxLQURGLEVBQ1k7QUFFVixXQUFPLE9BQU8sS0FBUCxLQUFpQixVQUFqQixJQUErQixNQUFNLE1BQTVDO0FBQ0Q7QUFFSyxNQUFPLFVBQVAsQ0FBaUI7UUFBVixVLEdBQUEsVTtBQUliLFNBQVMsb0JBQVQsQ0FBOEIsVUFBOUIsRUFBNEQ7QUFDMUQsUUFBSSxlQUE2QixXQUFXLEtBQTVDO0FBQ0EsZUFBVyxVQUFYLEdBQXdCLElBQXhCO0FBQ0EsaUJBQWEsUUFBYixJQUF5QixJQUF6QjtBQUNEO0FBaUJLLFNBQVUsSUFBVixDQUFlLEdBQUcsSUFBbEIsRUFBNkI7QUFDakMsUUFBSSxLQUFLLE1BQUwsS0FBZ0IsQ0FBcEIsRUFBdUI7QUFDckIsWUFBSSxPQUFpQixLQUFLLENBQUwsQ0FBckI7QUFDQSxlQUFPLENBQUMsT0FBRCxFQUFrQixLQUFsQixFQUFpQyxVQUFqQyxLQUFtRTtBQUN4RSxnQkFBSSxlQUE2QixXQUFXLEtBQTVDO0FBQ0EsbUJBQU8sSUFBUCxDQUFZLElBQVosRUFBa0IsT0FBbEIsQ0FBMEIsT0FBUSxhQUFhLEdBQWIsSUFBb0IsS0FBSyxHQUFMLENBQXREO0FBQ0EsaUNBQXFCLFVBQXJCO0FBQ0QsU0FKRDtBQUtEO0FBRUQsUUFBSSxhQUFhLEtBQUssQ0FBTCxDQUFqQjtBQUNBLHlCQUFxQixVQUFyQjtBQUNBLFdBQU8sVUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnVpbGRBcHAsIFRlc3RBcHBsaWNhdGlvbiwgQXBwQnVpbGRlciB9IGZyb20gJy4vYXBwLWJ1aWxkZXInO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdG9yPFQ+IHtcbiAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJNb2R1bGUobmFtZTogc3RyaW5nLCByZW5kZXJUZXN0OiBDb25zdHJ1Y3RvcjxSZW5kZXJUZXN0Pikge1xuICBRVW5pdC5tb2R1bGUobmFtZSk7XG5cbiAgZm9yIChsZXQgcHJvcCBpbiByZW5kZXJUZXN0LnByb3RvdHlwZSkge1xuICAgIGNvbnN0IHRlc3QgPSByZW5kZXJUZXN0LnByb3RvdHlwZVtwcm9wXTtcblxuICAgIGlmIChpc1Rlc3RGdW5jdGlvbih0ZXN0KSAmJiBzaG91bGRSdW4odGVzdCkpIHtcbiAgICAgIFsncnVudGltZS1jb21waWxlcicsICdieXRlY29kZSddLmZvckVhY2gobG9hZGVyID0+IHtcbiAgICAgICAgbGV0IGFwcCA9IGJ1aWxkQXBwKHsgbG9hZGVyIH0pO1xuICAgICAgICBRVW5pdC50ZXN0KGBbJHtsb2FkZXJ9XSAke3Byb3B9YCwgYXNzZXJ0ID0+IHRlc3QuY2FsbCh7IGFwcCB9LCBhc3NlcnQpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRSdW4odGVzdEZ1bmM6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodGVzdEZ1bmNbJ2RlYnVnJ10gJiYgIURFQlVHKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc1Rlc3RGdW5jdGlvbihcbiAgdmFsdWU6IGFueVxuKTogdmFsdWUgaXMgKHRoaXM6IFJlbmRlclRlc3QsIGFzc2VydDogdHlwZW9mIFFVbml0LmFzc2VydCkgPT4gdm9pZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdmFsdWUuaXNUZXN0O1xufVxuXG5leHBvcnQgY2xhc3MgUmVuZGVyVGVzdCB7XG4gIGFwcDogQXBwQnVpbGRlcjxUZXN0QXBwbGljYXRpb24+O1xufVxuXG5mdW5jdGlvbiBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpOiB2b2lkIHtcbiAgbGV0IHRlc3RGdW5jdGlvbjogVGVzdEZ1bmN0aW9uID0gZGVzY3JpcHRvci52YWx1ZSBhcyBUZXN0RnVuY3Rpb247XG4gIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG4gIHRlc3RGdW5jdGlvblsnaXNUZXN0J10gPSB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RNZXRhIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xuICBkZWJ1Zz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdEZ1bmN0aW9uIHtcbiAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobWV0YTogVGVzdE1ldGEpOiBNZXRob2REZWNvcmF0b3I7XG5leHBvcnQgZnVuY3Rpb24gdGVzdChcbiAgX3RhcmdldDogT2JqZWN0IHwgVGVzdE1ldGEsXG4gIF9uYW1lPzogc3RyaW5nLFxuICBkZXNjcmlwdG9yPzogUHJvcGVydHlEZXNjcmlwdG9yXG4pOiBQcm9wZXJ0eURlc2NyaXB0b3IgfCB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QoLi4uYXJnczogYW55W10pIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IG1ldGE6IFRlc3RNZXRhID0gYXJnc1swXTtcbiAgICByZXR1cm4gKF90YXJnZXQ6IE9iamVjdCwgX25hbWU6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgICBsZXQgdGVzdEZ1bmN0aW9uOiBUZXN0RnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlIGFzIFRlc3RGdW5jdGlvbjtcbiAgICAgIE9iamVjdC5rZXlzKG1ldGEpLmZvckVhY2goa2V5ID0+ICh0ZXN0RnVuY3Rpb25ba2V5XSA9IG1ldGFba2V5XSkpO1xuICAgICAgc2V0VGVzdGluZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgfTtcbiAgfVxuXG4gIGxldCBkZXNjcmlwdG9yID0gYXJnc1syXTtcbiAgc2V0VGVzdGluZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gIHJldHVybiBkZXNjcmlwdG9yO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvcmVuZGVyLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBT2dCLFksR0FBQSxZO1FBcURBLEksR0FBQSxJOztBQTVEaEI7O0FBQ0E7O0FBTU0sU0FBVSxZQUFWLENBQXVCLElBQXZCLEVBQXFDLFVBQXJDLEVBQXdFO0FBQzVFLEVBQUEsS0FBSyxDQUFDLE1BQU4sQ0FBYSxJQUFiOztBQUVBLE9BQUssSUFBSSxJQUFULElBQWlCLFVBQVUsQ0FBQyxTQUE1QixFQUF1QztBQUNyQyxVQUFNLElBQUksR0FBRyxVQUFVLENBQUMsU0FBWCxDQUFxQixJQUFyQixDQUFiOztBQUVBLFFBQUksY0FBYyxDQUFDLElBQUQsQ0FBZCxJQUF3QixTQUFTLENBQUMsSUFBRCxDQUFyQyxFQUE2QztBQUMzQyxPQUFDLGtCQUFELEVBQXFCLFVBQXJCLEVBQWlDLE9BQWpDLENBQXlDLE1BQU0sSUFBRztBQUNoRCxZQUFJLEdBQUcsR0FBRywwQkFBUztBQUFFLFVBQUE7QUFBRixTQUFULENBQVY7QUFDQSxRQUFBLEtBQUssQ0FBQyxJQUFOLENBQVcsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUE5QixFQUFrQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUwsQ0FBVTtBQUFFLFVBQUE7QUFBRixTQUFWLEVBQW1CLE1BQW5CLENBQTVDO0FBQ0QsT0FIRDtBQUlEO0FBQ0Y7QUFDRjs7QUFFRCxTQUFTLFNBQVQsQ0FBbUIsUUFBbkIsRUFBZ0M7QUFDOUIsTUFBSSxRQUFRLENBQUMsT0FBRCxDQUFSLElBQXFCLENBQUMsVUFBMUIsRUFBaUM7QUFDL0IsV0FBTyxLQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBUyxjQUFULENBQ0UsS0FERixFQUNZO0FBRVYsU0FBTyxPQUFPLEtBQVAsS0FBaUIsVUFBakIsSUFBK0IsS0FBSyxDQUFDLE1BQTVDO0FBQ0Q7O0FBRUssTUFBTyxVQUFQLENBQWlCOztRQUFWLFUsR0FBQSxVOztBQUliLFNBQVMsb0JBQVQsQ0FBOEIsVUFBOUIsRUFBNEQ7QUFDMUQsTUFBSSxZQUFZLEdBQWlCLFVBQVUsQ0FBQyxLQUE1QztBQUNBLEVBQUEsVUFBVSxDQUFDLFVBQVgsR0FBd0IsSUFBeEI7QUFDQSxFQUFBLFlBQVksQ0FBQyxRQUFELENBQVosR0FBeUIsSUFBekI7QUFDRDs7QUFpQkssU0FBVSxJQUFWLENBQWUsR0FBRyxJQUFsQixFQUE2QjtBQUNqQyxNQUFJLElBQUksQ0FBQyxNQUFMLEtBQWdCLENBQXBCLEVBQXVCO0FBQ3JCLFFBQUksSUFBSSxHQUFhLElBQUksQ0FBQyxDQUFELENBQXpCO0FBQ0EsV0FBTyxDQUFDLE9BQUQsRUFBa0IsS0FBbEIsRUFBaUMsVUFBakMsS0FBbUU7QUFDeEUsVUFBSSxZQUFZLEdBQWlCLFVBQVUsQ0FBQyxLQUE1QztBQUNBLE1BQUEsTUFBTSxDQUFDLElBQVAsQ0FBWSxJQUFaLEVBQWtCLE9BQWxCLENBQTBCLEdBQUcsSUFBSyxZQUFZLENBQUMsR0FBRCxDQUFaLEdBQW9CLElBQUksQ0FBQyxHQUFELENBQTFEO0FBQ0EsTUFBQSxvQkFBb0IsQ0FBQyxVQUFELENBQXBCO0FBQ0QsS0FKRDtBQUtEOztBQUVELE1BQUksVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFELENBQXJCO0FBQ0EsRUFBQSxvQkFBb0IsQ0FBQyxVQUFELENBQXBCO0FBQ0EsU0FBTyxVQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZEFwcCwgVGVzdEFwcGxpY2F0aW9uLCBBcHBCdWlsZGVyIH0gZnJvbSAnLi9hcHAtYnVpbGRlcic7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3I8VD4ge1xuICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1vZHVsZShuYW1lOiBzdHJpbmcsIHJlbmRlclRlc3Q6IENvbnN0cnVjdG9yPFJlbmRlclRlc3Q+KSB7XG4gIFFVbml0Lm1vZHVsZShuYW1lKTtcblxuICBmb3IgKGxldCBwcm9wIGluIHJlbmRlclRlc3QucHJvdG90eXBlKSB7XG4gICAgY29uc3QgdGVzdCA9IHJlbmRlclRlc3QucHJvdG90eXBlW3Byb3BdO1xuXG4gICAgaWYgKGlzVGVzdEZ1bmN0aW9uKHRlc3QpICYmIHNob3VsZFJ1bih0ZXN0KSkge1xuICAgICAgWydydW50aW1lLWNvbXBpbGVyJywgJ2J5dGVjb2RlJ10uZm9yRWFjaChsb2FkZXIgPT4ge1xuICAgICAgICBsZXQgYXBwID0gYnVpbGRBcHAoeyBsb2FkZXIgfSk7XG4gICAgICAgIFFVbml0LnRlc3QoYFske2xvYWRlcn1dICR7cHJvcH1gLCBhc3NlcnQgPT4gdGVzdC5jYWxsKHsgYXBwIH0sIGFzc2VydCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZFJ1bih0ZXN0RnVuYzogYW55KTogYm9vbGVhbiB7XG4gIGlmICh0ZXN0RnVuY1snZGVidWcnXSAmJiAhREVCVUcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzVGVzdEZ1bmN0aW9uKFxuICB2YWx1ZTogYW55XG4pOiB2YWx1ZSBpcyAodGhpczogUmVuZGVyVGVzdCwgYXNzZXJ0OiB0eXBlb2YgUVVuaXQuYXNzZXJ0KSA9PiB2b2lkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWx1ZS5pc1Rlc3Q7XG59XG5cbmV4cG9ydCBjbGFzcyBSZW5kZXJUZXN0IHtcbiAgYXBwOiBBcHBCdWlsZGVyPFRlc3RBcHBsaWNhdGlvbj47XG59XG5cbmZ1bmN0aW9uIHNldFRlc3RpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IHZvaWQge1xuICBsZXQgdGVzdEZ1bmN0aW9uOiBUZXN0RnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlIGFzIFRlc3RGdW5jdGlvbjtcbiAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgdGVzdEZ1bmN0aW9uWydpc1Rlc3QnXSA9IHRydWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE1ldGEge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIGRlYnVnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0RnVuY3Rpb24ge1xuICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdChtZXRhOiBUZXN0TWV0YSk6IE1ldGhvZERlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KFxuICBfdGFyZ2V0OiBPYmplY3QgfCBUZXN0TWV0YSxcbiAgX25hbWU/OiBzdHJpbmcsXG4gIGRlc2NyaXB0b3I/OiBQcm9wZXJ0eURlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB8IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gdGVzdCguLi5hcmdzOiBhbnlbXSkge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICBsZXQgbWV0YTogVGVzdE1ldGEgPSBhcmdzWzBdO1xuICAgIHJldHVybiAoX3RhcmdldDogT2JqZWN0LCBfbmFtZTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICAgIGxldCB0ZXN0RnVuY3Rpb246IFRlc3RGdW5jdGlvbiA9IGRlc2NyaXB0b3IudmFsdWUgYXMgVGVzdEZ1bmN0aW9uO1xuICAgICAgT2JqZWN0LmtleXMobWV0YSkuZm9yRWFjaChrZXkgPT4gKHRlc3RGdW5jdGlvbltrZXldID0gbWV0YVtrZXldKSk7XG4gICAgICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgICB9O1xuICB9XG5cbiAgbGV0IGRlc2NyaXB0b3IgPSBhcmdzWzJdO1xuICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3I7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -1,2 +0,2 @@ | ||
'use strict'; | ||
"use strict"; | ||
@@ -7,3 +7,3 @@ Object.defineProperty(exports, "__esModule", { | ||
var _appBuilder = require('./src/app-builder'); | ||
var _appBuilder = require("./src/app-builder"); | ||
@@ -20,3 +20,3 @@ Object.keys(_appBuilder).forEach(function (key) { | ||
var _compiler = require('./src/compiler'); | ||
var _compiler = require("./src/compiler"); | ||
@@ -33,5 +33,5 @@ Object.keys(_compiler).forEach(function (key) { | ||
var _defaultResolverConfiguration = require('./src/default-resolver-configuration'); | ||
var _defaultResolverConfiguration = require("./src/default-resolver-configuration"); | ||
Object.defineProperty(exports, 'defaultResolverConfiguration', { | ||
Object.defineProperty(exports, "defaultResolverConfiguration", { | ||
enumerable: true, | ||
@@ -43,5 +43,5 @@ get: function () { | ||
var _didRender = require('./src/did-render'); | ||
var _didRender = require("./src/did-render"); | ||
Object.defineProperty(exports, 'didRender', { | ||
Object.defineProperty(exports, "didRender", { | ||
enumerable: true, | ||
@@ -53,3 +53,3 @@ get: function () { | ||
var _renderTest = require('./src/render-test'); | ||
var _renderTest = require("./src/render-test"); | ||
@@ -56,0 +56,0 @@ Object.keys(_renderTest).forEach(function (key) { |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
@@ -39,294 +39,340 @@ exports.buildApp = exports.AppBuilder = exports.TestApplication = undefined; | ||
function _defaults(obj, defaults) { | ||
var keys = Object.getOwnPropertyNames(defaults);for (var i = 0; i < keys.length; i++) { | ||
var key = keys[i];var value = Object.getOwnPropertyDescriptor(defaults, key);if (value && value.configurable && obj[key] === undefined) { | ||
Object.defineProperty(obj, key, value); | ||
} | ||
}return obj; | ||
} | ||
var keys = Object.getOwnPropertyNames(defaults); | ||
function _asyncToGenerator(fn) { | ||
return function () { | ||
var gen = fn.apply(this, arguments);return new Promise(function (resolve, reject) { | ||
function step(key, arg) { | ||
try { | ||
var info = gen[key](arg);var value = info.value; | ||
} catch (error) { | ||
reject(error);return; | ||
}if (info.done) { | ||
resolve(value); | ||
} else { | ||
return Promise.resolve(value).then(function (value) { | ||
step("next", value); | ||
}, function (err) { | ||
step("throw", err); | ||
}); | ||
} | ||
}return step("next"); | ||
}); | ||
}; | ||
} | ||
for (var i = 0; i < keys.length; i++) { | ||
var key = keys[i]; | ||
var value = Object.getOwnPropertyDescriptor(defaults, key); | ||
function _classCallCheck(instance, Constructor) { | ||
if (!(instance instanceof Constructor)) { | ||
throw new TypeError("Cannot call a class as a function"); | ||
if (value && value.configurable && obj[key] === undefined) { | ||
Object.defineProperty(obj, key, value); | ||
} | ||
} | ||
return obj; | ||
} | ||
function _possibleConstructorReturn(self, call) { | ||
if (!self) { | ||
throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); | ||
}return call && (typeof call === "object" || typeof call === "function") ? call : self; | ||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { | ||
try { | ||
var info = gen[key](arg); | ||
var value = info.value; | ||
} catch (error) { | ||
reject(error); | ||
return; | ||
} | ||
if (info.done) { | ||
resolve(value); | ||
} else { | ||
Promise.resolve(value).then(_next, _throw); | ||
} | ||
} | ||
function _inherits(subClass, superClass) { | ||
if (typeof superClass !== "function" && superClass !== null) { | ||
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); | ||
}subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); | ||
function _asyncToGenerator(fn) { | ||
return function () { | ||
var self = this, | ||
args = arguments; | ||
return new Promise(function (resolve, reject) { | ||
var gen = fn.apply(self, args); | ||
function _next(value) { | ||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); | ||
} | ||
function _throw(err) { | ||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); | ||
} | ||
_next(undefined); | ||
}); | ||
}; | ||
} | ||
var TestApplication = exports.TestApplication = function (_Application) { | ||
_inherits(TestApplication, _Application); | ||
function _inheritsLoose(subClass, superClass) { | ||
subClass.prototype = Object.create(superClass.prototype); | ||
subClass.prototype.constructor = subClass; | ||
function TestApplication() { | ||
_classCallCheck(this, TestApplication); | ||
_defaults(subClass, superClass); | ||
} | ||
return _possibleConstructorReturn(this, _Application.apply(this, arguments)); | ||
} | ||
var TestApplication = | ||
/*#__PURE__*/ | ||
exports.TestApplication = function (_Application) { | ||
_inheritsLoose(TestApplication, _Application); | ||
return TestApplication; | ||
function TestApplication() { | ||
return _Application.apply(this, arguments) || this; | ||
} | ||
return TestApplication; | ||
}(_application2.default); | ||
function locatorFor(module, name) { | ||
return { | ||
kind: 'template', | ||
module: module, | ||
name: name, | ||
meta: { | ||
module: module, | ||
name: name | ||
} | ||
}; | ||
return { | ||
kind: 'template', | ||
module: module, | ||
name: name, | ||
meta: { | ||
module: module, | ||
name: name | ||
} | ||
}; | ||
} | ||
var AppBuilder = function () { | ||
function AppBuilder(name, options) { | ||
_classCallCheck(this, AppBuilder); | ||
var AppBuilder = | ||
/*#__PURE__*/ | ||
exports.AppBuilder = function () { | ||
function AppBuilder(name, options) { | ||
this.modules = {}; | ||
this.templates = {}; | ||
this.rootName = name; | ||
this.options = options; | ||
this.modules["component-manager:/" + this.rootName + "/component-managers/main"] = this.options.ComponentManager; | ||
this.template('Main', '<div />'); | ||
this.helper('action', _application.buildAction, true); | ||
} | ||
this.modules = {}; | ||
this.templates = {}; | ||
this.rootName = name; | ||
this.options = options; | ||
this.modules['component-manager:/' + this.rootName + '/component-managers/main'] = this.options.ComponentManager; | ||
this.template('Main', '<div />'); | ||
this.helper('action', _application.buildAction, true); | ||
} | ||
var _proto = AppBuilder.prototype; | ||
AppBuilder.prototype.template = function template(name, _template) { | ||
(0, _util.assert)(name.charAt(0) === name.charAt(0).toUpperCase(), 'template names must start with a capital letter'); | ||
var specifier = 'template:/' + this.rootName + '/components/' + name; | ||
this.modules[specifier] = (0, _compiler.precompile)(_template, { meta: { specifier: specifier } }); | ||
this.templates[specifier] = _template; | ||
return this; | ||
}; | ||
_proto.template = function template(name, _template) { | ||
(0, _util.assert)(name.charAt(0) === name.charAt(0).toUpperCase(), 'template names must start with a capital letter'); | ||
var specifier = "template:/" + this.rootName + "/components/" + name; | ||
this.modules[specifier] = (0, _compiler.precompile)(_template, { | ||
meta: { | ||
specifier: specifier | ||
} | ||
}); | ||
this.templates[specifier] = _template; | ||
return this; | ||
}; | ||
AppBuilder.prototype.component = function component(name, componentFactory) { | ||
var specifier = 'component:/' + this.rootName + '/components/' + name; | ||
this.modules[specifier] = componentFactory; | ||
return this; | ||
}; | ||
_proto.component = function component(name, componentFactory) { | ||
var specifier = "component:/" + this.rootName + "/components/" + name; | ||
this.modules[specifier] = componentFactory; | ||
return this; | ||
}; | ||
AppBuilder.prototype.helper = function helper(name, helperFunc) { | ||
var isFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; | ||
_proto.helper = function helper(name, helperFunc, isFactory) { | ||
if (isFactory === void 0) { | ||
isFactory = false; | ||
} | ||
var specifier = 'helper:/' + this.rootName + '/components/' + name; | ||
helperFunc.isFactory = isFactory; | ||
this.modules[specifier] = helperFunc; | ||
return this; | ||
}; | ||
var specifier = "helper:/" + this.rootName + "/components/" + name; | ||
helperFunc.isFactory = isFactory; | ||
this.modules[specifier] = helperFunc; | ||
return this; | ||
}; | ||
AppBuilder.prototype.buildResolver = function buildResolver() { | ||
var resolverConfiguration = this.options.resolverConfiguration || _defaultResolverConfiguration2.default; | ||
resolverConfiguration.app = resolverConfiguration.app || { | ||
name: this.rootName, | ||
rootName: this.rootName | ||
}; | ||
var registry = new _resolver.BasicModuleRegistry(this.modules); | ||
return new _resolver2.default(resolverConfiguration, registry); | ||
_proto.buildResolver = function buildResolver() { | ||
var resolverConfiguration = this.options.resolverConfiguration || _defaultResolverConfiguration2.default; | ||
resolverConfiguration.app = resolverConfiguration.app || { | ||
name: this.rootName, | ||
rootName: this.rootName | ||
}; | ||
var registry = new _resolver.BasicModuleRegistry(this.modules); | ||
return new _resolver2.default(resolverConfiguration, registry); | ||
}; | ||
AppBuilder.prototype.buildRuntimeCompilerLoader = function buildRuntimeCompilerLoader() { | ||
return new _application.RuntimeCompilerLoader(); | ||
}; | ||
_proto.buildRuntimeCompilerLoader = function buildRuntimeCompilerLoader() { | ||
return new _application.RuntimeCompilerLoader(); | ||
}; | ||
AppBuilder.prototype.buildBytecodeLoader = function buildBytecodeLoader(resolver) { | ||
var _this2 = this; | ||
_proto.buildBytecodeLoader = function buildBytecodeLoader(resolver) { | ||
var _this = this; | ||
var delegate = new CompilerDelegate(resolver); | ||
var compiler = new _bundleCompiler.BundleCompiler(delegate); | ||
var mainLocator = locatorFor('template:mainTemplate', 'default'); | ||
mainLocator.meta.module = 'template:mainTemplate'; | ||
var block = JSON.parse(_application.mainTemplate.block); | ||
var compilableTemplate = (0, _opcodeCompiler.compilable)({ | ||
block: block, | ||
referrer: mainLocator.meta | ||
}); | ||
compiler.addCompilableTemplate(mainLocator, compilableTemplate); | ||
for (var module in this.templates) { | ||
compiler.addTemplateSource(locatorFor(module, 'default'), this.templates[module]); | ||
} | ||
var delegate = new CompilerDelegate(resolver); | ||
var compiler = new _bundleCompiler.BundleCompiler(delegate); | ||
var mainLocator = locatorFor('template:mainTemplate', 'default'); | ||
mainLocator.meta.module = 'template:mainTemplate'; | ||
var block = JSON.parse(_application.mainTemplate.block); | ||
var compilableTemplate = (0, _opcodeCompiler.compilable)({ | ||
block: block, | ||
referrer: mainLocator.meta | ||
}); | ||
compiler.addCompilableTemplate(mainLocator, compilableTemplate); | ||
var _compiler$compile = compiler.compile(), | ||
heap = _compiler$compile.heap, | ||
pool = _compiler$compile.pool, | ||
table = _compiler$compile.table; | ||
for (var module in this.templates) { | ||
compiler.addTemplateSource(locatorFor(module, 'default'), this.templates[module]); | ||
} | ||
var resolverTable = []; | ||
var meta = {}; | ||
table.vmHandleByModuleLocator.forEach(function (vmHandle, locator) { | ||
var handle = table.byModuleLocator.get(locator); | ||
var template = compiler.getTemplate(locator); | ||
meta[locator.module] = { | ||
v: vmHandle, | ||
h: handle, | ||
table: template.symbolTable | ||
}; | ||
}); | ||
table.byHandle.forEach(function (locator, handle) { | ||
var module = locator.module.replace('template:/', 'component:/'); | ||
if (_this2.modules[module]) { | ||
if (module.indexOf('helper:') === 0) { | ||
var moduleType = _this2.modules[module].isFactory ? 0 /* HELPER_FACTORY */ : 1 /* HELPER */; | ||
resolverTable[handle] = [moduleType, _this2.modules[module]]; | ||
} else { | ||
resolverTable[handle] = _this2.modules[module]; | ||
} | ||
} | ||
}); | ||
var bytecode = heap.buffer; | ||
var data = { | ||
prefix: '', | ||
mainEntry: table.vmHandleByModuleLocator.get(mainLocator), | ||
pool: pool, | ||
table: resolverTable, | ||
meta: meta, | ||
heap: { | ||
table: heap.table, | ||
handle: heap.handle | ||
} | ||
}; | ||
return new _application.BytecodeLoader({ bytecode: bytecode, data: data }); | ||
}; | ||
var _compiler$compile = compiler.compile(), | ||
heap = _compiler$compile.heap, | ||
pool = _compiler$compile.pool, | ||
table = _compiler$compile.table; | ||
AppBuilder.prototype.buildLoader = function buildLoader(resolver) { | ||
switch (this.options.loader) { | ||
case 'runtime-compiler': | ||
return this.buildRuntimeCompilerLoader(); | ||
case 'bytecode': | ||
return this.buildBytecodeLoader(resolver); | ||
default: | ||
throw new Error('Unrecognized loader ' + this.options.loader); | ||
var resolverTable = []; | ||
var meta = {}; | ||
table.vmHandleByModuleLocator.forEach(function (vmHandle, locator) { | ||
var handle = table.byModuleLocator.get(locator); | ||
var template = compiler.getTemplate(locator); | ||
meta[locator.module] = { | ||
v: vmHandle, | ||
h: handle, | ||
table: template.symbolTable | ||
}; | ||
}); | ||
table.byHandle.forEach(function (locator, handle) { | ||
var module = locator.module.replace('template:/', 'component:/'); | ||
if (_this.modules[module]) { | ||
if (module.indexOf('helper:') === 0) { | ||
var moduleType = _this.modules[module].isFactory ? 0 | ||
/* HELPER_FACTORY */ | ||
: 1 | ||
/* HELPER */ | ||
; | ||
resolverTable[handle] = [moduleType, _this.modules[module]]; | ||
} else { | ||
resolverTable[handle] = _this.modules[module]; | ||
} | ||
} | ||
}); | ||
var bytecode = heap.buffer; | ||
var data = { | ||
prefix: '', | ||
mainEntry: table.vmHandleByModuleLocator.get(mainLocator), | ||
pool: pool, | ||
table: resolverTable, | ||
meta: meta, | ||
heap: { | ||
table: heap.table, | ||
handle: heap.handle | ||
} | ||
}; | ||
return new _application.BytecodeLoader({ | ||
bytecode: bytecode, | ||
data: data | ||
}); | ||
}; | ||
AppBuilder.prototype.renderToString = function renderToString(componentName, data, options) { | ||
var resolver = this.buildResolver(); | ||
var loader = this.buildLoader(resolver); | ||
return _ssr.SSRApplication.renderToString(componentName, data, Object.assign({ rootName: this.rootName, resolver: resolver, | ||
loader: loader, renderer: new _application.SyncRenderer() }, options)); | ||
}; | ||
_proto.buildLoader = function buildLoader(resolver) { | ||
switch (this.options.loader) { | ||
case 'runtime-compiler': | ||
return this.buildRuntimeCompilerLoader(); | ||
AppBuilder.prototype.boot = function () { | ||
var _ref = _asyncToGenerator(function* () { | ||
var resolver = this.buildResolver(); | ||
var loader = this.buildLoader(resolver); | ||
var doc = this.options.document || document; | ||
var element = doc.body; | ||
var builder = new _application.DOMBuilder({ element: element }); | ||
var renderer = new _application.SyncRenderer(); | ||
var app = new this.options.ApplicationClass({ | ||
resolver: resolver, | ||
builder: builder, | ||
loader: loader, | ||
renderer: renderer, | ||
rootName: this.rootName, | ||
document: this.options.document | ||
}); | ||
var rootElement = doc.createElement('div'); | ||
app.rootElement = rootElement; | ||
app.renderComponent('Main', rootElement); | ||
app.boot(); | ||
yield (0, _didRender2.default)(app); | ||
return app; | ||
}); | ||
case 'bytecode': | ||
return this.buildBytecodeLoader(resolver); | ||
function boot() { | ||
return _ref.apply(this, arguments); | ||
} | ||
default: | ||
throw new Error("Unrecognized loader " + this.options.loader); | ||
} | ||
}; | ||
return boot; | ||
}(); | ||
_proto.renderToString = function renderToString(componentName, data, options) { | ||
var resolver = this.buildResolver(); | ||
var loader = this.buildLoader(resolver); | ||
return _ssr.SSRApplication.renderToString(componentName, data, Object.assign({ | ||
rootName: this.rootName, | ||
resolver: resolver, | ||
loader: loader, | ||
renderer: new _application.SyncRenderer() | ||
}, options)); | ||
}; | ||
return AppBuilder; | ||
}(); | ||
_proto.boot = | ||
/*#__PURE__*/ | ||
function () { | ||
var _boot = _asyncToGenerator(function* () { | ||
var resolver = this.buildResolver(); | ||
var loader = this.buildLoader(resolver); | ||
var doc = this.options.document || document; | ||
var element = doc.body; | ||
var builder = new _application.DOMBuilder({ | ||
element: element | ||
}); | ||
var renderer = new _application.SyncRenderer(); | ||
var app = new this.options.ApplicationClass({ | ||
resolver: resolver, | ||
builder: builder, | ||
loader: loader, | ||
renderer: renderer, | ||
rootName: this.rootName, | ||
document: this.options.document | ||
}); | ||
var rootElement = doc.createElement('div'); | ||
app.rootElement = rootElement; | ||
app.renderComponent('Main', rootElement); | ||
app.boot(); | ||
yield (0, _didRender2.default)(app); | ||
return app; | ||
}); | ||
exports.AppBuilder = AppBuilder; | ||
function boot() { | ||
return _boot.apply(this, arguments); | ||
} | ||
return boot; | ||
}(); | ||
var CompilerDelegate = function () { | ||
function CompilerDelegate(resolver) { | ||
_classCallCheck(this, CompilerDelegate); | ||
return AppBuilder; | ||
}(); | ||
this.resolver = resolver; | ||
} | ||
var CompilerDelegate = | ||
/*#__PURE__*/ | ||
function () { | ||
function CompilerDelegate(resolver) { | ||
this.resolver = resolver; | ||
} | ||
CompilerDelegate.prototype.hasComponentInScope = function hasComponentInScope(name, referrer) { | ||
return !!this.resolver.identify('template:' + name, referrer.module); | ||
}; | ||
var _proto2 = CompilerDelegate.prototype; | ||
CompilerDelegate.prototype.resolveComponent = function resolveComponent(name, referrer) { | ||
var resolved = this.resolver.identify('template:' + name, referrer.module); | ||
return { module: resolved, name: 'default' }; | ||
}; | ||
_proto2.hasComponentInScope = function hasComponentInScope(name, referrer) { | ||
return !!this.resolver.identify("template:" + name, referrer.module); | ||
}; | ||
CompilerDelegate.prototype.getComponentCapabilities = function getComponentCapabilities() { | ||
return _component.CAPABILITIES; | ||
_proto2.resolveComponent = function resolveComponent(name, referrer) { | ||
var resolved = this.resolver.identify("template:" + name, referrer.module); | ||
return { | ||
module: resolved, | ||
name: 'default' | ||
}; | ||
}; | ||
CompilerDelegate.prototype.hasHelperInScope = function hasHelperInScope(helperName, referrer) { | ||
return !!this.resolver.identify('helper:' + helperName, referrer.module); | ||
}; | ||
_proto2.getComponentCapabilities = function getComponentCapabilities() { | ||
return _component.CAPABILITIES; | ||
}; | ||
CompilerDelegate.prototype.resolveHelper = function resolveHelper(helperName, referrer) { | ||
var resolved = this.resolver.identify('helper:' + helperName, referrer.module); | ||
return { module: resolved, name: 'default' }; | ||
}; | ||
_proto2.hasHelperInScope = function hasHelperInScope(helperName, referrer) { | ||
return !!this.resolver.identify("helper:" + helperName, referrer.module); | ||
}; | ||
CompilerDelegate.prototype.hasPartialInScope = function hasPartialInScope(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
_proto2.resolveHelper = function resolveHelper(helperName, referrer) { | ||
var resolved = this.resolver.identify("helper:" + helperName, referrer.module); | ||
return { | ||
module: resolved, | ||
name: 'default' | ||
}; | ||
}; | ||
CompilerDelegate.prototype.resolvePartial = function resolvePartial(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
_proto2.hasPartialInScope = function hasPartialInScope(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
CompilerDelegate.prototype.hasModifierInScope = function hasModifierInScope(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
_proto2.resolvePartial = function resolvePartial(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
CompilerDelegate.prototype.resolveModifier = function resolveModifier(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
_proto2.hasModifierInScope = function hasModifierInScope(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
return CompilerDelegate; | ||
_proto2.resolveModifier = function resolveModifier(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
return CompilerDelegate; | ||
}(); | ||
function buildApp() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
function buildApp(options) { | ||
if (options === void 0) { | ||
options = {}; | ||
} | ||
options.appName = options.appName || 'test-app'; | ||
options.loader = options.loader || 'runtime-compiler'; | ||
options.ComponentManager = options.ComponentManager || _component.ComponentManager; | ||
options.ApplicationClass = options.ApplicationClass || TestApplication; | ||
return new AppBuilder(options.appName, options); | ||
options.appName = options.appName || 'test-app'; | ||
options.loader = options.loader || 'runtime-compiler'; | ||
options.ComponentManager = options.ComponentManager || _component.ComponentManager; | ||
options.ApplicationClass = options.ApplicationClass || TestApplication; | ||
return new AppBuilder(options.appName, options); | ||
} | ||
exports.buildApp = buildApp; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7QUFDQTs7QUFDQTs7OztBQVVBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBLDRDQUFBLFVBQUEsWUFBQSxFQUFBO0FBQUEsY0FBQSxlQUFBLEVBQUEsWUFBQTs7QUFBQSxhQUFBLGVBQUEsR0FBQTtBQUFBLHdCQUFBLElBQUEsRUFBQSxlQUFBOztBQUFBLGVBQUEsMkJBQUEsSUFBQSxFQUFBLGFBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxTQUFBLENBQUEsQ0FBQTtBQUFBOztBQUFBLFdBQUEsZUFBQTtBQUFBLENBQUEsQ0FBQSxxQkFBQSxDQUFBO0FBcUJBLFNBQUEsVUFBQSxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQWdEO0FBQzlDLFdBQU87QUFDTCxjQURLLFVBQUE7QUFFTCxnQkFGSyxNQUFBO0FBR0wsY0FISyxJQUFBO0FBSUwsY0FBTTtBQUNKLG9CQURJLE1BQUE7QUFFSixrQkFBQTtBQUZJO0FBSkQsS0FBUDtBQVNEOztJQUVZLGE7QUFNWCxhQUFBLFVBQUEsQ0FBQSxJQUFBLEVBQUEsT0FBQSxFQUF1RDtBQUFBLHdCQUFBLElBQUEsRUFBQSxVQUFBOztBQUp2RCxhQUFBLE9BQUEsR0FBQSxFQUFBO0FBQ0EsYUFBQSxTQUFBLEdBQUEsRUFBQTtBQUlFLGFBQUEsUUFBQSxHQUFBLElBQUE7QUFDQSxhQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0EsYUFBQSxPQUFBLENBQUEsd0JBQ3dCLEtBRHhCLFFBQUEsR0FBQSwwQkFBQSxJQUVJLEtBQUEsT0FBQSxDQUZKLGdCQUFBO0FBR0EsYUFBQSxRQUFBLENBQUEsTUFBQSxF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TUFBM0IsU0FBTyxFQUFQOzs7K0JBR0YsaUIsOEJBQWtCLFcsRUFBcUIsUSxFQUF1QjtBQUM1RCxjQUFNLElBQUEsS0FBQSxDQUFOLHlCQUFNLENBQU47OzsrQkFHRixjLDJCQUFlLFcsRUFBcUIsUSxFQUF1QjtBQUN6RCxjQUFNLElBQUEsS0FBQSxDQUFOLHlCQUFNLENBQU47OzsrQkFHRixrQiwrQkFBbUIsWSxFQUFzQixRLEVBQXVCO0FBQzlELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7OytCQUdGLGUsNEJBQWdCLFksRUFBc0IsUSxFQUF1QjtBQUMzRCxjQUFNLElBQUEsS0FBQSxDQUFOLHlCQUFNLENBQU47Ozs7OztBQUlKLFNBQUEsUUFBQSxHQUErRTtBQUFBLFFBQWxDLFVBQWtDLFVBQUEsTUFBQSxHQUFBLENBQUEsSUFBQSxVQUFBLENBQUEsTUFBQSxTQUFBLEdBQUEsVUFBQSxDQUFBLENBQUEsR0FBRixFQUFFOztBQUM3RSxZQUFBLE9BQUEsR0FBa0IsUUFBQSxPQUFBLElBQWxCLFVBQUE7QUFDQSxZQUFBLE1BQUEsR0FBaUIsUUFBQSxNQUFBLElBQWpCLGtCQUFBO0FBQ0EsWUFBQSxnQkFBQSxHQUEyQixRQUFBLGdCQUFBLElBQTNCLDJCQUFBO0FBQ0EsWUFBQSxnQkFBQSxHQUNFLFFBQUEsZ0JBQUEsSUFERixlQUFBO0FBR0EsV0FBTyxJQUFBLFVBQUEsQ0FBZSxRQUFmLE9BQUEsRUFBUCxPQUFPLENBQVA7QUFDRDtRQUVELFEsR0FBQSxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc29sdmVyLCB7IEJhc2ljTW9kdWxlUmVnaXN0cnksIFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QsIE1vZHVsZUxvY2F0b3IsIFRlbXBsYXRlTG9jYXRvciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb24gZnJvbSAnLi9kZWZhdWx0LXJlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uLCB7XG4gIEFwcGxpY2F0aW9uQ29uc3RydWN0b3IsXG4gIEJ5dGVjb2RlTG9hZGVyLFxuICBET01CdWlsZGVyLFxuICBMb2FkZXIsXG4gIFJ1bnRpbWVDb21waWxlckxvYWRlcixcbiAgU3luY1JlbmRlcmVyLFxuICBNb2R1bGVUeXBlcyxcbiAgSU5URVJOQUxfRFlOQU1JQ19TQ09QRVxufSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyLCBDQVBBQklMSVRJRVMgfSBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBCdW5kbGVDb21waWxlciwgQ29tcGlsZXJEZWxlZ2F0ZSBhcyBJQ29tcGlsZXJEZWxlZ2F0ZSB9IGZyb20gJ0BnbGltbWVyL2J1bmRsZS1jb21waWxlcic7XG5pbXBvcnQgeyBidWlsZEFjdGlvbiwgbWFpblRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgY29tcGlsYWJsZSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3NyYy9sb2FkZXJzL2J5dGVjb2RlL2xvYWRlcic7XG5pbXBvcnQgeyBTaW1wbGVEb2N1bWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBTU1JBcHBsaWNhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Nzcic7XG5cbmltcG9ydCBkaWRSZW5kZXIgZnJvbSAnLi9kaWQtcmVuZGVyJztcbmltcG9ydCBIVE1MU2VyaWFsaXplciBmcm9tICdAc2ltcGxlLWRvbS9zZXJpYWxpemVyJztcbmltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24vc3JjL2Jhc2UtYXBwbGljYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJPcHRpb25zPFQ+IHtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBBcHBsaWNhdGlvbkNsYXNzPzogQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPjtcbiAgQ29tcG9uZW50TWFuYWdlcj86IGFueTsgLy8gVE9ETyAtIHR5cGluZ1xuICByZXNvbHZlckNvbmZpZ3VyYXRpb24/OiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIGRvY3VtZW50PzogU2ltcGxlRG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeSB7fVxuXG5leHBvcnQgY2xhc3MgVGVzdEFwcGxpY2F0aW9uIGV4dGVuZHMgQXBwbGljYXRpb24ge1xuICByb290RWxlbWVudDogRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyVGVtcGxhdGVNZXRhIHtcbiAgc3BlY2lmaWVyOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBIZWxwZXJGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgaXNGYWN0b3J5PzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFRlc3RTU1JBcHBsaWNhdGlvbk9wdGlvbnMge1xuICByb290TmFtZT86IHN0cmluZztcbiAgcmVzb2x2ZXI/OiBSZXNvbHZlcjtcbiAgbG9hZGVyPzogTG9hZGVyO1xuICByZW5kZXJlcj86IFJlbmRlcmVyO1xuICBzZXJpYWxpemVyPzogSFRNTFNlcmlhbGl6ZXI7XG4gIFtJTlRFUk5BTF9EWU5BTUlDX1NDT1BFXT86IERpY3Q8dW5rbm93bj47XG59XG5cbmZ1bmN0aW9uIGxvY2F0b3JGb3IobW9kdWxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlTG9jYXRvcjxNb2R1bGVMb2NhdG9yPiB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ3RlbXBsYXRlJyxcbiAgICBtb2R1bGUsXG4gICAgbmFtZSxcbiAgICBtZXRhOiB7XG4gICAgICBtb2R1bGUsXG4gICAgICBuYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBCdWlsZGVyPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+IHtcbiAgcm9vdE5hbWU6IHN0cmluZztcbiAgbW9kdWxlczogRGljdDx1bmtub3duPiA9IHt9O1xuICB0ZW1wbGF0ZXM6IERpY3Q8c3RyaW5nPiA9IHt9O1xuICBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5yb290TmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLm1vZHVsZXNbXG4gICAgICBgY29tcG9uZW50LW1hbmFnZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50LW1hbmFnZXJzL21haW5gXG4gICAgXSA9IHRoaXMub3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyO1xuICAgIHRoaXMudGVtcGxhdGUoJ01haW4nLCAnPGRpdiAvPicpO1xuICAgIHRoaXMuaGVscGVyKCdhY3Rpb24nLCBidWlsZEFjdGlvbiwgdHJ1ZSk7XG4gIH1cblxuICB0ZW1wbGF0ZShuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBuYW1lLmNoYXJBdCgwKSA9PT0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxcbiAgICAgICd0ZW1wbGF0ZSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlcidcbiAgICApO1xuXG4gICAgbGV0IHNwZWNpZmllciA9IGB0ZW1wbGF0ZTovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gcHJlY29tcGlsZSh0ZW1wbGF0ZSwgeyBtZXRhOiB7IHNwZWNpZmllciB9IH0pO1xuICAgIHRoaXMudGVtcGxhdGVzW3NwZWNpZmllcl0gPSB0ZW1wbGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbXBvbmVudChuYW1lOiBzdHJpbmcsIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGNvbXBvbmVudDovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gY29tcG9uZW50RmFjdG9yeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcsIGhlbHBlckZ1bmM6IEhlbHBlckZ1bmN0aW9uLCBpc0ZhY3RvcnkgPSBmYWxzZSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgaGVscGVyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgaGVscGVyRnVuYy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBoZWxwZXJGdW5jO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUmVzb2x2ZXIoKTogUmVzb2x2ZXIge1xuICAgIGxldCByZXNvbHZlckNvbmZpZ3VyYXRpb24gPSB0aGlzLm9wdGlvbnMucmVzb2x2ZXJDb25maWd1cmF0aW9uIHx8IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gICAgcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCA9IHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgfHwge1xuICAgICAgbmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgIH07XG5cbiAgICBsZXQgcmVnaXN0cnkgPSBuZXcgQmFzaWNNb2R1bGVSZWdpc3RyeSh0aGlzLm1vZHVsZXMpO1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZXIocmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTogTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXI6IFJlc29sdmVyKSB7XG4gICAgbGV0IGRlbGVnYXRlID0gbmV3IENvbXBpbGVyRGVsZWdhdGUocmVzb2x2ZXIpO1xuICAgIGxldCBjb21waWxlciA9IG5ldyBCdW5kbGVDb21waWxlcihkZWxlZ2F0ZSk7XG5cbiAgICBsZXQgbWFpbkxvY2F0b3IgPSBsb2NhdG9yRm9yKCd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnLCAnZGVmYXVsdCcpO1xuICAgIG1haW5Mb2NhdG9yLm1ldGEubW9kdWxlID0gJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZSc7XG5cbiAgICBsZXQgYmxvY2sgPSBKU09OLnBhcnNlKG1haW5UZW1wbGF0ZS5ibG9jayk7XG4gICAgbGV0IGNvbXBpbGFibGVUZW1wbGF0ZSA9IGNvbXBpbGFibGUoe1xuICAgICAgYmxvY2ssXG4gICAgICByZWZlcnJlcjogbWFpbkxvY2F0b3IubWV0YSxcbiAgICB9KTtcblxuICAgIGNvbXBpbGVyLmFkZENvbXBpbGFibGVUZW1wbGF0ZShtYWluTG9jYXRvciwgY29tcGlsYWJsZVRlbXBsYXRlKTtcblxuICAgIGZvciAobGV0IG1vZHVsZSBpbiB0aGlzLnRlbXBsYXRlcykge1xuICAgICAgY29tcGlsZXIuYWRkVGVtcGxhdGVTb3VyY2UobG9jYXRvckZvcihtb2R1bGUsICdkZWZhdWx0JyksIHRoaXMudGVtcGxhdGVzW21vZHVsZV0pO1xuICAgIH1cblxuICAgIGxldCB7IGhlYXAsIHBvb2wsIHRhYmxlIH0gPSBjb21waWxlci5jb21waWxlKCk7XG5cbiAgICBsZXQgcmVzb2x2ZXJUYWJsZTogdW5rbm93bltdID0gW107XG5cbiAgICBsZXQgbWV0YTogRGljdDxNZXRhZGF0YT4gPSB7fTtcblxuICAgIHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmZvckVhY2goKHZtSGFuZGxlLCBsb2NhdG9yKSA9PiB7XG4gICAgICBsZXQgaGFuZGxlID0gdGFibGUuYnlNb2R1bGVMb2NhdG9yLmdldChsb2NhdG9yKTtcbiAgICAgIGxldCB0ZW1wbGF0ZSA9IGNvbXBpbGVyLmdldFRlbXBsYXRlKGxvY2F0b3IpO1xuXG4gICAgICBtZXRhW2xvY2F0b3IubW9kdWxlXSA9IHtcbiAgICAgICAgdjogdm1IYW5kbGUsXG4gICAgICAgIGg6IGhhbmRsZSxcbiAgICAgICAgdGFibGU6IHRlbXBsYXRlLnN5bWJvbFRhYmxlLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRhYmxlLmJ5SGFuZGxlLmZvckVhY2goKGxvY2F0b3IsIGhhbmRsZSkgPT4ge1xuICAgICAgbGV0IG1vZHVsZSA9IGxvY2F0b3IubW9kdWxlLnJlcGxhY2UoJ3RlbXBsYXRlOi8nLCAnY29tcG9uZW50Oi8nKTtcbiAgICAgIGlmICh0aGlzLm1vZHVsZXNbbW9kdWxlXSkge1xuICAgICAgICBpZiAobW9kdWxlLmluZGV4T2YoJ2hlbHBlcjonKSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSAodGhpcy5tb2R1bGVzW21vZHVsZV0gYXMgSGVscGVyRnVuY3Rpb24pLmlzRmFjdG9yeSA/IE1vZHVsZVR5cGVzLkhFTFBFUl9GQUNUT1JZIDogTW9kdWxlVHlwZXMuSEVMUEVSO1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IFttb2R1bGVUeXBlLCB0aGlzLm1vZHVsZXNbbW9kdWxlXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gdGhpcy5tb2R1bGVzW21vZHVsZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBieXRlY29kZSA9IGhlYXAuYnVmZmVyO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgcHJlZml4OiAnJyxcbiAgICAgIG1haW5FbnRyeTogdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZ2V0KG1haW5Mb2NhdG9yKSxcbiAgICAgIHBvb2wsXG4gICAgICB0YWJsZTogcmVzb2x2ZXJUYWJsZSxcbiAgICAgIG1ldGEsXG4gICAgICBoZWFwOiB7XG4gICAgICAgIHRhYmxlOiBoZWFwLnRhYmxlLFxuICAgICAgICBoYW5kbGU6IGhlYXAuaGFuZGxlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBCeXRlY29kZUxvYWRlcih7IGJ5dGVjb2RlLCBkYXRhIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkTG9hZGVyKHJlc29sdmVyKTogTG9hZGVyIHtcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5sb2FkZXIpIHtcbiAgICAgIGNhc2UgJ3J1bnRpbWUtY29tcGlsZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICAgICAgY2FzZSAnYnl0ZWNvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxvYWRlciAke3RoaXMub3B0aW9ucy5sb2FkZXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZTogc3RyaW5nLCBkYXRhOiBEaWN0PHVua25vd24+LCBvcHRpb25zPzogVGVzdFNTUkFwcGxpY2F0aW9uT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICByZXR1cm4gU1NSQXBwbGljYXRpb24ucmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZSwgZGF0YSwge1xuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByZXNvbHZlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyOiBuZXcgU3luY1JlbmRlcmVyKCksXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBib290KCk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXI6IExvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgbGV0IGRvYzogRG9jdW1lbnQgPSAodGhpcy5vcHRpb25zLmRvY3VtZW50IGFzIERvY3VtZW50KSB8fCBkb2N1bWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGRvYy5ib2R5O1xuICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoeyBlbGVtZW50IH0pO1xuICAgIGxldCByZW5kZXJlciA9IG5ldyBTeW5jUmVuZGVyZXIoKTtcblxuICAgIGxldCBhcHAgPSBuZXcgdGhpcy5vcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3Moe1xuICAgICAgcmVzb2x2ZXIsXG4gICAgICBidWlsZGVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXIsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIGRvY3VtZW50OiB0aGlzLm9wdGlvbnMuZG9jdW1lbnQsXG4gICAgfSk7XG5cbiAgICBsZXQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXBwLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgYXBwLnJlbmRlckNvbXBvbmVudCgnTWFpbicsIHJvb3RFbGVtZW50KTtcbiAgICBhcHAuYm9vdCgpO1xuXG4gICAgYXdhaXQgZGlkUmVuZGVyKGFwcCk7XG5cbiAgICByZXR1cm4gYXBwO1xuICB9XG59XG5cbmNsYXNzIENvbXBpbGVyRGVsZWdhdGUgaW1wbGVtZW50cyBJQ29tcGlsZXJEZWxlZ2F0ZTxNb2R1bGVMb2NhdG9yPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZXNvbHZlcjogUmVzb2x2ZXIpIHt9XG5cbiAgaGFzQ29tcG9uZW50SW5TY29wZShuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlQ29tcG9uZW50KG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGdldENvbXBvbmVudENhcGFiaWxpdGllcygpIHtcbiAgICByZXR1cm4gQ0FQQUJJTElUSUVTO1xuICB9XG5cbiAgaGFzSGVscGVySW5TY29wZShoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgaGFzUGFydGlhbEluU2NvcGUocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGhhc01vZGlmaWVySW5TY29wZShtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXBwPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+KG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+ID0ge30pOiBBcHBCdWlsZGVyPFQ+IHtcbiAgb3B0aW9ucy5hcHBOYW1lID0gb3B0aW9ucy5hcHBOYW1lIHx8ICd0ZXN0LWFwcCc7XG4gIG9wdGlvbnMubG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgfHwgJ3J1bnRpbWUtY29tcGlsZXInO1xuICBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgPSBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgfHwgQ29tcG9uZW50TWFuYWdlcjtcbiAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzID1cbiAgICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgfHwgKFRlc3RBcHBsaWNhdGlvbiBhcyBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+KTtcblxuICByZXR1cm4gbmV3IEFwcEJ1aWxkZXIob3B0aW9ucy5hcHBOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRBcHAgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7QUFDQTs7QUFDQTs7OztBQVVBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsSUFBYSxlQUFiO0FBQUE7QUFBQSxRQUFhLGVBQWIsR0FBQSxVQUFBLFlBQUEsRUFBQTtBQUFBLEVBQUEsY0FBQSxDQUFBLGVBQUEsRUFBQSxZQUFBLENBQUE7O0FBQUEsV0FBQSxlQUFBLEdBQUE7QUFBQSxXQUFBLFlBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxFQUFBLFNBQUEsS0FBQSxJQUFBO0FBQUE7O0FBQUEsU0FBQSxlQUFBO0FBQUEsQ0FBQSxDQUFBLHFCQUFBLENBQUE7O0FBcUJBLFNBQUEsVUFBQSxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQWdEO0FBQzlDLFNBQU87QUFDTCxJQUFBLElBQUksRUFEQyxVQUFBO0FBRUwsSUFBQSxNQUFNLEVBRkQsTUFBQTtBQUdMLElBQUEsSUFBSSxFQUhDLElBQUE7QUFJTCxJQUFBLElBQUksRUFBRTtBQUNKLE1BQUEsTUFBTSxFQURGLE1BQUE7QUFFSixNQUFBLElBQUksRUFBSjtBQUZJO0FBSkQsR0FBUDtBQVNEOztBQUVELElBQWEsVUFBYjtBQUFBO0FBQUEsUUFBYSxVQUFiLEdBQUEsWUFBQTtBQU1FLFdBQUEsVUFBQSxDQUFBLElBQUEsRUFBQSxPQUFBLEVBQXVEO0FBSnZELFNBQUEsT0FBQSxHQUFBLEVBQUE7QUFDQSxTQUFBLFNBQUEsR0FBQSxFQUFBO0FBSUUsU0FBQSxRQUFBLEdBQUEsSUFBQTtBQUNBLFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFDQSxTQUFBLE9BQUEsQ0FBQSx3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U0FBQSxlQUFBLENBQUEsWUFBQSxFQUFBLFFBQUEsRUFBNkQ7QUFDM0QsVUFBTSxJQUFBLEtBQUEsQ0FBTix5QkFBTSxDQUFOOzs7Ozs7QUFJSixTQUFBLFFBQUEsQ0FBQSxPQUFBLEVBQStFO0FBQUEsTUFBbEMsT0FBa0MsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUFsQyxJQUFBLE9BQWtDLEdBQUYsRUFBaEM7QUFBa0M7O0FBQzdFLEVBQUEsT0FBTyxDQUFQLE9BQUEsR0FBa0IsT0FBTyxDQUFQLE9BQUEsSUFBbEIsVUFBQTtBQUNBLEVBQUEsT0FBTyxDQUFQLE1BQUEsR0FBaUIsT0FBTyxDQUFQLE1BQUEsSUFBakIsa0JBQUE7QUFDQSxFQUFBLE9BQU8sQ0FBUCxnQkFBQSxHQUEyQixPQUFPLENBQVAsZ0JBQUEsSUFBM0IsMkJBQUE7QUFDQSxFQUFBLE9BQU8sQ0FBUCxnQkFBQSxHQUNFLE9BQU8sQ0FBUCxnQkFBQSxJQURGLGVBQUE7QUFHQSxTQUFPLElBQUEsVUFBQSxDQUFlLE9BQU8sQ0FBdEIsT0FBQSxFQUFQLE9BQU8sQ0FBUDtBQUNEOztRQUVELFEsR0FBQSxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc29sdmVyLCB7IEJhc2ljTW9kdWxlUmVnaXN0cnksIFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QsIE1vZHVsZUxvY2F0b3IsIFRlbXBsYXRlTG9jYXRvciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb24gZnJvbSAnLi9kZWZhdWx0LXJlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uLCB7XG4gIEFwcGxpY2F0aW9uQ29uc3RydWN0b3IsXG4gIEJ5dGVjb2RlTG9hZGVyLFxuICBET01CdWlsZGVyLFxuICBMb2FkZXIsXG4gIFJ1bnRpbWVDb21waWxlckxvYWRlcixcbiAgU3luY1JlbmRlcmVyLFxuICBNb2R1bGVUeXBlcyxcbiAgSU5URVJOQUxfRFlOQU1JQ19TQ09QRVxufSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyLCBDQVBBQklMSVRJRVMgfSBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBCdW5kbGVDb21waWxlciwgQ29tcGlsZXJEZWxlZ2F0ZSBhcyBJQ29tcGlsZXJEZWxlZ2F0ZSB9IGZyb20gJ0BnbGltbWVyL2J1bmRsZS1jb21waWxlcic7XG5pbXBvcnQgeyBidWlsZEFjdGlvbiwgbWFpblRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgY29tcGlsYWJsZSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3NyYy9sb2FkZXJzL2J5dGVjb2RlL2xvYWRlcic7XG5pbXBvcnQgeyBTaW1wbGVEb2N1bWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBTU1JBcHBsaWNhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Nzcic7XG5cbmltcG9ydCBkaWRSZW5kZXIgZnJvbSAnLi9kaWQtcmVuZGVyJztcbmltcG9ydCBIVE1MU2VyaWFsaXplciBmcm9tICdAc2ltcGxlLWRvbS9zZXJpYWxpemVyJztcbmltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24vc3JjL2Jhc2UtYXBwbGljYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJPcHRpb25zPFQ+IHtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBBcHBsaWNhdGlvbkNsYXNzPzogQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPjtcbiAgQ29tcG9uZW50TWFuYWdlcj86IGFueTsgLy8gVE9ETyAtIHR5cGluZ1xuICByZXNvbHZlckNvbmZpZ3VyYXRpb24/OiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIGRvY3VtZW50PzogU2ltcGxlRG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeSB7fVxuXG5leHBvcnQgY2xhc3MgVGVzdEFwcGxpY2F0aW9uIGV4dGVuZHMgQXBwbGljYXRpb24ge1xuICByb290RWxlbWVudDogRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyVGVtcGxhdGVNZXRhIHtcbiAgc3BlY2lmaWVyOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBIZWxwZXJGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgaXNGYWN0b3J5PzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFRlc3RTU1JBcHBsaWNhdGlvbk9wdGlvbnMge1xuICByb290TmFtZT86IHN0cmluZztcbiAgcmVzb2x2ZXI/OiBSZXNvbHZlcjtcbiAgbG9hZGVyPzogTG9hZGVyO1xuICByZW5kZXJlcj86IFJlbmRlcmVyO1xuICBzZXJpYWxpemVyPzogSFRNTFNlcmlhbGl6ZXI7XG4gIFtJTlRFUk5BTF9EWU5BTUlDX1NDT1BFXT86IERpY3Q8dW5rbm93bj47XG59XG5cbmZ1bmN0aW9uIGxvY2F0b3JGb3IobW9kdWxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlTG9jYXRvcjxNb2R1bGVMb2NhdG9yPiB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ3RlbXBsYXRlJyxcbiAgICBtb2R1bGUsXG4gICAgbmFtZSxcbiAgICBtZXRhOiB7XG4gICAgICBtb2R1bGUsXG4gICAgICBuYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBCdWlsZGVyPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+IHtcbiAgcm9vdE5hbWU6IHN0cmluZztcbiAgbW9kdWxlczogRGljdDx1bmtub3duPiA9IHt9O1xuICB0ZW1wbGF0ZXM6IERpY3Q8c3RyaW5nPiA9IHt9O1xuICBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5yb290TmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLm1vZHVsZXNbXG4gICAgICBgY29tcG9uZW50LW1hbmFnZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50LW1hbmFnZXJzL21haW5gXG4gICAgXSA9IHRoaXMub3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyO1xuICAgIHRoaXMudGVtcGxhdGUoJ01haW4nLCAnPGRpdiAvPicpO1xuICAgIHRoaXMuaGVscGVyKCdhY3Rpb24nLCBidWlsZEFjdGlvbiwgdHJ1ZSk7XG4gIH1cblxuICB0ZW1wbGF0ZShuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBuYW1lLmNoYXJBdCgwKSA9PT0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxcbiAgICAgICd0ZW1wbGF0ZSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlcidcbiAgICApO1xuXG4gICAgbGV0IHNwZWNpZmllciA9IGB0ZW1wbGF0ZTovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gcHJlY29tcGlsZSh0ZW1wbGF0ZSwgeyBtZXRhOiB7IHNwZWNpZmllciB9IH0pO1xuICAgIHRoaXMudGVtcGxhdGVzW3NwZWNpZmllcl0gPSB0ZW1wbGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbXBvbmVudChuYW1lOiBzdHJpbmcsIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGNvbXBvbmVudDovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gY29tcG9uZW50RmFjdG9yeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcsIGhlbHBlckZ1bmM6IEhlbHBlckZ1bmN0aW9uLCBpc0ZhY3RvcnkgPSBmYWxzZSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgaGVscGVyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgaGVscGVyRnVuYy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBoZWxwZXJGdW5jO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUmVzb2x2ZXIoKTogUmVzb2x2ZXIge1xuICAgIGxldCByZXNvbHZlckNvbmZpZ3VyYXRpb24gPSB0aGlzLm9wdGlvbnMucmVzb2x2ZXJDb25maWd1cmF0aW9uIHx8IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gICAgcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCA9IHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgfHwge1xuICAgICAgbmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgIH07XG5cbiAgICBsZXQgcmVnaXN0cnkgPSBuZXcgQmFzaWNNb2R1bGVSZWdpc3RyeSh0aGlzLm1vZHVsZXMpO1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZXIocmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTogTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXI6IFJlc29sdmVyKSB7XG4gICAgbGV0IGRlbGVnYXRlID0gbmV3IENvbXBpbGVyRGVsZWdhdGUocmVzb2x2ZXIpO1xuICAgIGxldCBjb21waWxlciA9IG5ldyBCdW5kbGVDb21waWxlcihkZWxlZ2F0ZSk7XG5cbiAgICBsZXQgbWFpbkxvY2F0b3IgPSBsb2NhdG9yRm9yKCd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnLCAnZGVmYXVsdCcpO1xuICAgIG1haW5Mb2NhdG9yLm1ldGEubW9kdWxlID0gJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZSc7XG5cbiAgICBsZXQgYmxvY2sgPSBKU09OLnBhcnNlKG1haW5UZW1wbGF0ZS5ibG9jayk7XG4gICAgbGV0IGNvbXBpbGFibGVUZW1wbGF0ZSA9IGNvbXBpbGFibGUoe1xuICAgICAgYmxvY2ssXG4gICAgICByZWZlcnJlcjogbWFpbkxvY2F0b3IubWV0YSxcbiAgICB9KTtcblxuICAgIGNvbXBpbGVyLmFkZENvbXBpbGFibGVUZW1wbGF0ZShtYWluTG9jYXRvciwgY29tcGlsYWJsZVRlbXBsYXRlKTtcblxuICAgIGZvciAobGV0IG1vZHVsZSBpbiB0aGlzLnRlbXBsYXRlcykge1xuICAgICAgY29tcGlsZXIuYWRkVGVtcGxhdGVTb3VyY2UobG9jYXRvckZvcihtb2R1bGUsICdkZWZhdWx0JyksIHRoaXMudGVtcGxhdGVzW21vZHVsZV0pO1xuICAgIH1cblxuICAgIGxldCB7IGhlYXAsIHBvb2wsIHRhYmxlIH0gPSBjb21waWxlci5jb21waWxlKCk7XG5cbiAgICBsZXQgcmVzb2x2ZXJUYWJsZTogdW5rbm93bltdID0gW107XG5cbiAgICBsZXQgbWV0YTogRGljdDxNZXRhZGF0YT4gPSB7fTtcblxuICAgIHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmZvckVhY2goKHZtSGFuZGxlLCBsb2NhdG9yKSA9PiB7XG4gICAgICBsZXQgaGFuZGxlID0gdGFibGUuYnlNb2R1bGVMb2NhdG9yLmdldChsb2NhdG9yKTtcbiAgICAgIGxldCB0ZW1wbGF0ZSA9IGNvbXBpbGVyLmdldFRlbXBsYXRlKGxvY2F0b3IpO1xuXG4gICAgICBtZXRhW2xvY2F0b3IubW9kdWxlXSA9IHtcbiAgICAgICAgdjogdm1IYW5kbGUsXG4gICAgICAgIGg6IGhhbmRsZSxcbiAgICAgICAgdGFibGU6IHRlbXBsYXRlLnN5bWJvbFRhYmxlLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRhYmxlLmJ5SGFuZGxlLmZvckVhY2goKGxvY2F0b3IsIGhhbmRsZSkgPT4ge1xuICAgICAgbGV0IG1vZHVsZSA9IGxvY2F0b3IubW9kdWxlLnJlcGxhY2UoJ3RlbXBsYXRlOi8nLCAnY29tcG9uZW50Oi8nKTtcbiAgICAgIGlmICh0aGlzLm1vZHVsZXNbbW9kdWxlXSkge1xuICAgICAgICBpZiAobW9kdWxlLmluZGV4T2YoJ2hlbHBlcjonKSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSAodGhpcy5tb2R1bGVzW21vZHVsZV0gYXMgSGVscGVyRnVuY3Rpb24pLmlzRmFjdG9yeSA/IE1vZHVsZVR5cGVzLkhFTFBFUl9GQUNUT1JZIDogTW9kdWxlVHlwZXMuSEVMUEVSO1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IFttb2R1bGVUeXBlLCB0aGlzLm1vZHVsZXNbbW9kdWxlXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gdGhpcy5tb2R1bGVzW21vZHVsZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBieXRlY29kZSA9IGhlYXAuYnVmZmVyO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgcHJlZml4OiAnJyxcbiAgICAgIG1haW5FbnRyeTogdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZ2V0KG1haW5Mb2NhdG9yKSxcbiAgICAgIHBvb2wsXG4gICAgICB0YWJsZTogcmVzb2x2ZXJUYWJsZSxcbiAgICAgIG1ldGEsXG4gICAgICBoZWFwOiB7XG4gICAgICAgIHRhYmxlOiBoZWFwLnRhYmxlLFxuICAgICAgICBoYW5kbGU6IGhlYXAuaGFuZGxlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBCeXRlY29kZUxvYWRlcih7IGJ5dGVjb2RlLCBkYXRhIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkTG9hZGVyKHJlc29sdmVyKTogTG9hZGVyIHtcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5sb2FkZXIpIHtcbiAgICAgIGNhc2UgJ3J1bnRpbWUtY29tcGlsZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICAgICAgY2FzZSAnYnl0ZWNvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxvYWRlciAke3RoaXMub3B0aW9ucy5sb2FkZXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZTogc3RyaW5nLCBkYXRhOiBEaWN0PHVua25vd24+LCBvcHRpb25zPzogVGVzdFNTUkFwcGxpY2F0aW9uT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICByZXR1cm4gU1NSQXBwbGljYXRpb24ucmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZSwgZGF0YSwge1xuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByZXNvbHZlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyOiBuZXcgU3luY1JlbmRlcmVyKCksXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBib290KCk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXI6IExvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgbGV0IGRvYzogRG9jdW1lbnQgPSAodGhpcy5vcHRpb25zLmRvY3VtZW50IGFzIERvY3VtZW50KSB8fCBkb2N1bWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGRvYy5ib2R5O1xuICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoeyBlbGVtZW50IH0pO1xuICAgIGxldCByZW5kZXJlciA9IG5ldyBTeW5jUmVuZGVyZXIoKTtcblxuICAgIGxldCBhcHAgPSBuZXcgdGhpcy5vcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3Moe1xuICAgICAgcmVzb2x2ZXIsXG4gICAgICBidWlsZGVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXIsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIGRvY3VtZW50OiB0aGlzLm9wdGlvbnMuZG9jdW1lbnQsXG4gICAgfSk7XG5cbiAgICBsZXQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXBwLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgYXBwLnJlbmRlckNvbXBvbmVudCgnTWFpbicsIHJvb3RFbGVtZW50KTtcbiAgICBhcHAuYm9vdCgpO1xuXG4gICAgYXdhaXQgZGlkUmVuZGVyKGFwcCk7XG5cbiAgICByZXR1cm4gYXBwO1xuICB9XG59XG5cbmNsYXNzIENvbXBpbGVyRGVsZWdhdGUgaW1wbGVtZW50cyBJQ29tcGlsZXJEZWxlZ2F0ZTxNb2R1bGVMb2NhdG9yPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZXNvbHZlcjogUmVzb2x2ZXIpIHt9XG5cbiAgaGFzQ29tcG9uZW50SW5TY29wZShuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlQ29tcG9uZW50KG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGdldENvbXBvbmVudENhcGFiaWxpdGllcygpIHtcbiAgICByZXR1cm4gQ0FQQUJJTElUSUVTO1xuICB9XG5cbiAgaGFzSGVscGVySW5TY29wZShoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgaGFzUGFydGlhbEluU2NvcGUocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGhhc01vZGlmaWVySW5TY29wZShtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXBwPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+KG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+ID0ge30pOiBBcHBCdWlsZGVyPFQ+IHtcbiAgb3B0aW9ucy5hcHBOYW1lID0gb3B0aW9ucy5hcHBOYW1lIHx8ICd0ZXN0LWFwcCc7XG4gIG9wdGlvbnMubG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgfHwgJ3J1bnRpbWUtY29tcGlsZXInO1xuICBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgPSBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgfHwgQ29tcG9uZW50TWFuYWdlcjtcbiAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzID1cbiAgICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgfHwgKFRlc3RBcHBsaWNhdGlvbiBhcyBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+KTtcblxuICByZXR1cm4gbmV3IEFwcEJ1aWxkZXIob3B0aW9ucy5hcHBOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRBcHAgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -1,13 +0,13 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.precompile = precompile; | ||
var _compiler = require('@glimmer/compiler'); | ||
var _compiler = require("@glimmer/compiler"); | ||
function precompile(template, options) { | ||
return JSON.parse((0, _compiler.precompile)(template, options)); | ||
return JSON.parse((0, _compiler.precompile)(template, options)); | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFPTSxVLEdBQUEsVTs7OztBQUFBLFNBQUEsVUFBQSxDQUFBLFFBQUEsRUFBQSxPQUFBLEVBRXNCO0FBRTFCLFdBQU8sS0FBQSxLQUFBLENBQVcsMEJBQUEsUUFBQSxFQUFsQixPQUFrQixDQUFYLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByZWNvbXBpbGUgYXMgZ2xpbW1lclByZWNvbXBpbGUsIFByZWNvbXBpbGVPcHRpb25zIH0gZnJvbSAnQGdsaW1tZXIvY29tcGlsZXInO1xuaW1wb3J0IHsgU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG4vLyBSYXRoZXIgdGhhbiBkdXBsaWNhdGluZyB0aGUgVGVtcGxhdGVNZXRhIGRlZmluaXRpb24gZnJvbSBAZ2xpbW1lci9jb21wb25lbnQsXG4vLyB3aGljaCBpcyBub3QgYSBkZXBlbmRlbmN5LCBsZXQncyBiZSBtb3JlIHBlcm1pc3NpdmUgZm9yIHRoaXMgdGVzdCBoZWxwZXIuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZU1ldGEgPSBhbnk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9uc1xuKTogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazxUZW1wbGF0ZU1ldGE+IHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoZ2xpbW1lclByZWNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMpKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFPTSxVLEdBQUEsVTs7QUFQTjs7QUFPTSxTQUFBLFVBQUEsQ0FBQSxRQUFBLEVBQUEsT0FBQSxFQUVzQjtBQUUxQixTQUFPLElBQUksQ0FBSixLQUFBLENBQVcsMEJBQWlCLFFBQWpCLEVBQWxCLE9BQWtCLENBQVgsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJlY29tcGlsZSBhcyBnbGltbWVyUHJlY29tcGlsZSwgUHJlY29tcGlsZU9wdGlvbnMgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG5pbXBvcnQgeyBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbi8vIFJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIHRoZSBUZW1wbGF0ZU1ldGEgZGVmaW5pdGlvbiBmcm9tIEBnbGltbWVyL2NvbXBvbmVudCxcbi8vIHdoaWNoIGlzIG5vdCBhIGRlcGVuZGVuY3ksIGxldCdzIGJlIG1vcmUgcGVybWlzc2l2ZSBmb3IgdGhpcyB0ZXN0IGhlbHBlci5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlTWV0YSA9IGFueTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoXG4gIHRlbXBsYXRlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zXG4pOiBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrPFRlbXBsYXRlTWV0YT4ge1xuICByZXR1cm4gSlNPTi5wYXJzZShnbGltbWVyUHJlY29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucykpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
@@ -1,34 +0,48 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
var CONFIG = { | ||
types: { | ||
application: { definitiveCollection: 'main' }, | ||
component: { definitiveCollection: 'components' }, | ||
helper: { definitiveCollection: 'components' }, | ||
renderer: { definitiveCollection: 'main' }, | ||
template: { definitiveCollection: 'components' }, | ||
util: { definitiveCollection: 'utils' }, | ||
'component-manager': { definitiveCollection: 'component-managers' } | ||
types: { | ||
application: { | ||
definitiveCollection: 'main' | ||
}, | ||
collections: { | ||
main: { | ||
types: ['application', 'renderer'] | ||
}, | ||
components: { | ||
group: 'ui', | ||
types: ['component', 'template', 'helper'], | ||
defaultType: 'component' | ||
}, | ||
'component-managers': { | ||
types: ['component-manager'] | ||
}, | ||
utils: { | ||
unresolvable: true | ||
} | ||
component: { | ||
definitiveCollection: 'components' | ||
}, | ||
helper: { | ||
definitiveCollection: 'components' | ||
}, | ||
renderer: { | ||
definitiveCollection: 'main' | ||
}, | ||
template: { | ||
definitiveCollection: 'components' | ||
}, | ||
util: { | ||
definitiveCollection: 'utils' | ||
}, | ||
'component-manager': { | ||
definitiveCollection: 'component-managers' | ||
} | ||
}, | ||
collections: { | ||
main: { | ||
types: ['application', 'renderer'] | ||
}, | ||
components: { | ||
group: 'ui', | ||
types: ['component', 'template', 'helper'], | ||
defaultType: 'component' | ||
}, | ||
'component-managers': { | ||
types: ['component-manager'] | ||
}, | ||
utils: { | ||
unresolvable: true | ||
} | ||
} | ||
}; | ||
exports.default = CONFIG; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsSUFBTSxTQUFnQztBQUNwQyxXQUFPO0FBQ0wscUJBQWEsRUFBRSxzQkFEVixNQUNRLEVBRFI7QUFFTCxtQkFBVyxFQUFFLHNCQUZSLFlBRU0sRUFGTjtBQUdMLGdCQUFRLEVBQUUsc0JBSEwsWUFHRyxFQUhIO0FBSUwsa0JBQVUsRUFBRSxzQkFKUCxNQUlLLEVBSkw7QUFLTCxrQkFBVSxFQUFFLHNCQUxQLFlBS0ssRUFMTDtBQU1MLGNBQU0sRUFBRSxzQkFOSCxPQU1DLEVBTkQ7QUFPTCw2QkFBcUIsRUFBRSxzQkFBRixvQkFBQTtBQVBoQixLQUQ2QjtBQVVwQyxpQkFBYTtBQUNYLGNBQU07QUFDSixtQkFBTyxDQUFBLGFBQUEsRUFBQSxVQUFBO0FBREgsU0FESztBQUlYLG9CQUFZO0FBQ1YsbUJBRFUsSUFBQTtBQUVWLG1CQUFPLENBQUEsV0FBQSxFQUFBLFVBQUEsRUFGRyxRQUVILENBRkc7QUFHVix5QkFBYTtBQUhILFNBSkQ7QUFTWCw4QkFBc0I7QUFDcEIsbUJBQU8sQ0FBQSxtQkFBQTtBQURhLFNBVFg7QUFZWCxlQUFPO0FBQ0wsMEJBQWM7QUFEVDtBQVpJO0FBVnVCLENBQXRDO2tCQTRCQSxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnQGdsaW1tZXIvcmVzb2x2ZXInO1xuXG5jb25zdCBDT05GSUc6IFJlc29sdmVyQ29uZmlndXJhdGlvbiA9IHtcbiAgdHlwZXM6IHtcbiAgICBhcHBsaWNhdGlvbjogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ21haW4nIH0sXG4gICAgY29tcG9uZW50OiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnY29tcG9uZW50cycgfSxcbiAgICBoZWxwZXI6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdjb21wb25lbnRzJyB9LFxuICAgIHJlbmRlcmVyOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnbWFpbicgfSxcbiAgICB0ZW1wbGF0ZTogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ2NvbXBvbmVudHMnIH0sXG4gICAgdXRpbDogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ3V0aWxzJyB9LFxuICAgICdjb21wb25lbnQtbWFuYWdlcic6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdjb21wb25lbnQtbWFuYWdlcnMnIH0sXG4gIH0sXG4gIGNvbGxlY3Rpb25zOiB7XG4gICAgbWFpbjoge1xuICAgICAgdHlwZXM6IFsnYXBwbGljYXRpb24nLCAncmVuZGVyZXInXSxcbiAgICB9LFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgIGdyb3VwOiAndWknLFxuICAgICAgdHlwZXM6IFsnY29tcG9uZW50JywgJ3RlbXBsYXRlJywgJ2hlbHBlciddLFxuICAgICAgZGVmYXVsdFR5cGU6ICdjb21wb25lbnQnLFxuICAgIH0sXG4gICAgJ2NvbXBvbmVudC1tYW5hZ2Vycyc6IHtcbiAgICAgIHR5cGVzOiBbJ2NvbXBvbmVudC1tYW5hZ2VyJ10sXG4gICAgfSxcbiAgICB1dGlsczoge1xuICAgICAgdW5yZXNvbHZhYmxlOiB0cnVlLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDT05GSUc7XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsSUFBTSxNQUFNLEdBQTBCO0FBQ3BDLEVBQUEsS0FBSyxFQUFFO0FBQ0wsSUFBQSxXQUFXLEVBQUU7QUFBRSxNQUFBLG9CQUFvQixFQUFFO0FBQXhCLEtBRFI7QUFFTCxJQUFBLFNBQVMsRUFBRTtBQUFFLE1BQUEsb0JBQW9CLEVBQUU7QUFBeEIsS0FGTjtBQUdMLElBQUEsTUFBTSxFQUFFO0FBQUUsTUFBQSxvQkFBb0IsRUFBRTtBQUF4QixLQUhIO0FBSUwsSUFBQSxRQUFRLEVBQUU7QUFBRSxNQUFBLG9CQUFvQixFQUFFO0FBQXhCLEtBSkw7QUFLTCxJQUFBLFFBQVEsRUFBRTtBQUFFLE1BQUEsb0JBQW9CLEVBQUU7QUFBeEIsS0FMTDtBQU1MLElBQUEsSUFBSSxFQUFFO0FBQUUsTUFBQSxvQkFBb0IsRUFBRTtBQUF4QixLQU5EO0FBT0wseUJBQXFCO0FBQUUsTUFBQSxvQkFBb0IsRUFBRTtBQUF4QjtBQVBoQixHQUQ2QjtBQVVwQyxFQUFBLFdBQVcsRUFBRTtBQUNYLElBQUEsSUFBSSxFQUFFO0FBQ0osTUFBQSxLQUFLLEVBQUUsQ0FBQSxhQUFBLEVBQUEsVUFBQTtBQURILEtBREs7QUFJWCxJQUFBLFVBQVUsRUFBRTtBQUNWLE1BQUEsS0FBSyxFQURLLElBQUE7QUFFVixNQUFBLEtBQUssRUFBRSxDQUFBLFdBQUEsRUFBQSxVQUFBLEVBRkcsUUFFSCxDQUZHO0FBR1YsTUFBQSxXQUFXLEVBQUU7QUFISCxLQUpEO0FBU1gsMEJBQXNCO0FBQ3BCLE1BQUEsS0FBSyxFQUFFLENBQUEsbUJBQUE7QUFEYSxLQVRYO0FBWVgsSUFBQSxLQUFLLEVBQUU7QUFDTCxNQUFBLFlBQVksRUFBRTtBQURUO0FBWkk7QUFWdUIsQ0FBdEM7a0JBNEJBLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5cbmNvbnN0IENPTkZJRzogUmVzb2x2ZXJDb25maWd1cmF0aW9uID0ge1xuICB0eXBlczoge1xuICAgIGFwcGxpY2F0aW9uOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnbWFpbicgfSxcbiAgICBjb21wb25lbnQ6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdjb21wb25lbnRzJyB9LFxuICAgIGhlbHBlcjogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ2NvbXBvbmVudHMnIH0sXG4gICAgcmVuZGVyZXI6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdtYWluJyB9LFxuICAgIHRlbXBsYXRlOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnY29tcG9uZW50cycgfSxcbiAgICB1dGlsOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAndXRpbHMnIH0sXG4gICAgJ2NvbXBvbmVudC1tYW5hZ2VyJzogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ2NvbXBvbmVudC1tYW5hZ2VycycgfSxcbiAgfSxcbiAgY29sbGVjdGlvbnM6IHtcbiAgICBtYWluOiB7XG4gICAgICB0eXBlczogWydhcHBsaWNhdGlvbicsICdyZW5kZXJlciddLFxuICAgIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgZ3JvdXA6ICd1aScsXG4gICAgICB0eXBlczogWydjb21wb25lbnQnLCAndGVtcGxhdGUnLCAnaGVscGVyJ10sXG4gICAgICBkZWZhdWx0VHlwZTogJ2NvbXBvbmVudCcsXG4gICAgfSxcbiAgICAnY29tcG9uZW50LW1hbmFnZXJzJzoge1xuICAgICAgdHlwZXM6IFsnY29tcG9uZW50LW1hbmFnZXInXSxcbiAgICB9LFxuICAgIHV0aWxzOiB7XG4gICAgICB1bnJlc29sdmFibGU6IHRydWUsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENPTkZJRztcbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -1,47 +0,63 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
var didRender = function () { | ||
var _ref = _asyncToGenerator(function* (app) { | ||
return new Promise(function (resolve, reject) { | ||
// If the app is scheduled to re-render, or has not yet been rendered for | ||
// the first time, register to be notified when the next render completes. | ||
if (app['_scheduled'] || !app['_rendered']) { | ||
app['_notifiers'].push([resolve, reject]); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
return function didRender(_x) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
}(); | ||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { | ||
try { | ||
var info = gen[key](arg); | ||
var value = info.value; | ||
} catch (error) { | ||
reject(error); | ||
return; | ||
} | ||
if (info.done) { | ||
resolve(value); | ||
} else { | ||
Promise.resolve(value).then(_next, _throw); | ||
} | ||
} | ||
function _asyncToGenerator(fn) { | ||
return function () { | ||
var gen = fn.apply(this, arguments);return new Promise(function (resolve, reject) { | ||
function step(key, arg) { | ||
try { | ||
var info = gen[key](arg);var value = info.value; | ||
} catch (error) { | ||
reject(error);return; | ||
}if (info.done) { | ||
resolve(value); | ||
} else { | ||
return Promise.resolve(value).then(function (value) { | ||
step("next", value); | ||
}, function (err) { | ||
step("throw", err); | ||
}); | ||
} | ||
}return step("next"); | ||
}); | ||
}; | ||
return function () { | ||
var self = this, | ||
args = arguments; | ||
return new Promise(function (resolve, reject) { | ||
var gen = fn.apply(self, args); | ||
function _next(value) { | ||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); | ||
} | ||
function _throw(err) { | ||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); | ||
} | ||
_next(undefined); | ||
}); | ||
}; | ||
} | ||
function didRender(_x) { | ||
return _didRender.apply(this, arguments); | ||
} | ||
function _didRender() { | ||
_didRender = _asyncToGenerator(function* (app) { | ||
return new Promise(function (resolve, reject) { | ||
// If the app is scheduled to re-render, or has not yet been rendered for | ||
// the first time, register to be notified when the next render completes. | ||
if (app['_scheduled'] || !app['_rendered']) { | ||
app['_notifiers'].push([resolve, reject]); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
return _didRender.apply(this, arguments); | ||
} | ||
exports.default = didRender; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGlkLXJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7aUNBQUEsV0FBQSxHQUFBLEVBQWlDO0FBQy9CLGVBQU8sSUFBQSxPQUFBLENBQWtCLFVBQUEsT0FBQSxFQUFBLE1BQUEsRUFBb0I7QUFDM0M7QUFDQTtBQUNBLGdCQUFJLElBQUEsWUFBQSxLQUFxQixDQUFDLElBQTFCLFdBQTBCLENBQTFCLEVBQTRDO0FBQzFDLG9CQUFBLFlBQUEsRUFBQSxJQUFBLENBQXVCLENBQUEsT0FBQSxFQUF2QixNQUF1QixDQUF2QjtBQURGLGFBQUEsTUFFTztBQUNMO0FBQ0Q7QUFQSCxTQUFPLENBQVA7OztvQkFEYSxTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBWWYsUyIsInNvdXJjZXNDb250ZW50IjpbImFzeW5jIGZ1bmN0aW9uIGRpZFJlbmRlcihhcHA6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIElmIHRoZSBhcHAgaXMgc2NoZWR1bGVkIHRvIHJlLXJlbmRlciwgb3IgaGFzIG5vdCB5ZXQgYmVlbiByZW5kZXJlZCBmb3JcbiAgICAvLyB0aGUgZmlyc3QgdGltZSwgcmVnaXN0ZXIgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgbmV4dCByZW5kZXIgY29tcGxldGVzLlxuICAgIGlmIChhcHBbJ19zY2hlZHVsZWQnXSB8fCAhYXBwWydfcmVuZGVyZWQnXSkge1xuICAgICAgYXBwWydfbm90aWZpZXJzJ10ucHVzaChbcmVzb2x2ZSwgcmVqZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkaWRSZW5kZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGlkLXJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FBZSxTOzs7OztpQ0FBZixXQUFBLEdBQUEsRUFBaUM7QUFDL0IsV0FBTyxJQUFBLE9BQUEsQ0FBa0IsVUFBQSxPQUFBLEVBQUEsTUFBQSxFQUFvQjtBQUMzQztBQUNBO0FBQ0EsVUFBSSxHQUFHLENBQUgsWUFBRyxDQUFILElBQXFCLENBQUMsR0FBRyxDQUE3QixXQUE2QixDQUE3QixFQUE0QztBQUMxQyxRQUFBLEdBQUcsQ0FBSCxZQUFHLENBQUgsQ0FBQSxJQUFBLENBQXVCLENBQUEsT0FBQSxFQUF2QixNQUF1QixDQUF2QjtBQURGLE9BQUEsTUFFTztBQUNMLFFBQUEsT0FBTztBQUNSO0FBUEgsS0FBTyxDQUFQOzs7OztrQkFXRixTIiwic291cmNlc0NvbnRlbnQiOlsiYXN5bmMgZnVuY3Rpb24gZGlkUmVuZGVyKGFwcDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gSWYgdGhlIGFwcCBpcyBzY2hlZHVsZWQgdG8gcmUtcmVuZGVyLCBvciBoYXMgbm90IHlldCBiZWVuIHJlbmRlcmVkIGZvclxuICAgIC8vIHRoZSBmaXJzdCB0aW1lLCByZWdpc3RlciB0byBiZSBub3RpZmllZCB3aGVuIHRoZSBuZXh0IHJlbmRlciBjb21wbGV0ZXMuXG4gICAgaWYgKGFwcFsnX3NjaGVkdWxlZCddIHx8ICFhcHBbJ19yZW5kZXJlZCddKSB7XG4gICAgICBhcHBbJ19ub3RpZmllcnMnXS5wdXNoKFtyZXNvbHZlLCByZWplY3RdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpZFJlbmRlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -1,5 +0,5 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
@@ -10,63 +10,67 @@ exports.RenderTest = undefined; | ||
var _appBuilder = require('./app-builder'); | ||
var _appBuilder = require("./app-builder"); | ||
var _env = require('@glimmer/env'); | ||
var _env = require("@glimmer/env"); | ||
function _classCallCheck(instance, Constructor) { | ||
if (!(instance instanceof Constructor)) { | ||
throw new TypeError("Cannot call a class as a function"); | ||
} | ||
} | ||
function renderModule(name, renderTest) { | ||
QUnit.module(name); | ||
QUnit.module(name); | ||
var _loop = function _loop(prop) { | ||
var test = renderTest.prototype[prop]; | ||
if (isTestFunction(test) && shouldRun(test)) { | ||
['runtime-compiler', 'bytecode'].forEach(function (loader) { | ||
var app = (0, _appBuilder.buildApp)({ loader: loader }); | ||
QUnit.test('[' + loader + '] ' + prop, function (assert) { | ||
return test.call({ app: app }, assert); | ||
}); | ||
}); | ||
} | ||
}; | ||
var _loop = function _loop(prop) { | ||
var test = renderTest.prototype[prop]; | ||
for (var prop in renderTest.prototype) { | ||
_loop(prop); | ||
if (isTestFunction(test) && shouldRun(test)) { | ||
['runtime-compiler', 'bytecode'].forEach(function (loader) { | ||
var app = (0, _appBuilder.buildApp)({ | ||
loader: loader | ||
}); | ||
QUnit.test("[" + loader + "] " + prop, function (assert) { | ||
return test.call({ | ||
app: app | ||
}, assert); | ||
}); | ||
}); | ||
} | ||
}; | ||
for (var prop in renderTest.prototype) { | ||
_loop(prop); | ||
} | ||
} | ||
function shouldRun(testFunc) { | ||
if (testFunc['debug'] && !_env.DEBUG) { | ||
return false; | ||
} | ||
return true; | ||
if (testFunc['debug'] && !_env.DEBUG) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
function isTestFunction(value) { | ||
return typeof value === 'function' && value.isTest; | ||
return typeof value === 'function' && value.isTest; | ||
} | ||
var RenderTest = exports.RenderTest = function RenderTest() { | ||
_classCallCheck(this, RenderTest); | ||
}; | ||
var RenderTest = exports.RenderTest = function RenderTest() {}; | ||
function setTestingDescriptor(descriptor) { | ||
var testFunction = descriptor.value; | ||
descriptor.enumerable = true; | ||
testFunction['isTest'] = true; | ||
var testFunction = descriptor.value; | ||
descriptor.enumerable = true; | ||
testFunction['isTest'] = true; | ||
} | ||
function test() { | ||
if (arguments.length === 1) { | ||
var meta = arguments.length <= 0 ? undefined : arguments[0]; | ||
return function (_target, _name, descriptor) { | ||
var testFunction = descriptor.value; | ||
Object.keys(meta).forEach(function (key) { | ||
return testFunction[key] = meta[key]; | ||
}); | ||
setTestingDescriptor(descriptor); | ||
}; | ||
} | ||
var descriptor = arguments.length <= 2 ? undefined : arguments[2]; | ||
setTestingDescriptor(descriptor); | ||
return descriptor; | ||
if (arguments.length === 1) { | ||
var meta = arguments.length <= 0 ? undefined : arguments[0]; | ||
return function (_target, _name, descriptor) { | ||
var testFunction = descriptor.value; | ||
Object.keys(meta).forEach(function (key) { | ||
return testFunction[key] = meta[key]; | ||
}); | ||
setTestingDescriptor(descriptor); | ||
}; | ||
} | ||
var descriptor = arguments.length <= 2 ? undefined : arguments[2]; | ||
setTestingDescriptor(descriptor); | ||
return descriptor; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvcmVuZGVyLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBT00sWSxHQUFBLFk7UUFxREEsSSxHQUFBLEk7O0FBNUROOztBQUNBOzs7Ozs7OztBQU1NLFNBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxVQUFBLEVBQXdFO0FBQzVFLFVBQUEsTUFBQSxDQUFBLElBQUE7O0FBRDRFLFFBQUEsUUFBQSxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQUE7QUFJMUUsWUFBTSxPQUFPLFdBQUEsU0FBQSxDQUFiLElBQWEsQ0FBYjtBQUVBLFlBQUksZUFBQSxJQUFBLEtBQXdCLFVBQTVCLElBQTRCLENBQTVCLEVBQTZDO0FBQzNDLGFBQUEsa0JBQUEsRUFBQSxVQUFBLEVBQUEsT0FBQSxDQUF5QyxVQUFBLE1BQUEsRUFBUztBQUNoRCxvQkFBSSxNQUFNLDBCQUFTLEVBQUUsUUFBckIsTUFBbUIsRUFBVCxDQUFWO0FBQ0Esc0JBQUEsSUFBQSxDQUFBLE1BQUEsTUFBQSxHQUFBLElBQUEsR0FBQSxJQUFBLEVBQWtDLFVBQUEsTUFBQSxFQUFBO0FBQUEsMkJBQVUsS0FBQSxJQUFBLENBQVUsRUFBRSxLQUFaLEdBQVUsRUFBVixFQUFWLE1BQVUsQ0FBVjtBQUFsQyxpQkFBQTtBQUZGLGFBQUE7QUFJRDtBQVh5RSxLQUFBOztBQUc1RSxTQUFLLElBQUwsSUFBQSxJQUFpQixXQUFqQixTQUFBLEVBQXVDO0FBQUEsY0FBOUIsSUFBOEI7QUFTdEM7QUFDRjtBQUVELFNBQUEsU0FBQSxDQUFBLFFBQUEsRUFBZ0M7QUFDOUIsUUFBSSxTQUFBLE9BQUEsS0FBcUIsQ0FBekIsVUFBQSxFQUFpQztBQUMvQixlQUFBLEtBQUE7QUFDRDtBQUNELFdBQUEsSUFBQTtBQUNEO0FBRUQsU0FBQSxjQUFBLENBQUEsS0FBQSxFQUNZO0FBRVYsV0FBTyxPQUFBLEtBQUEsS0FBQSxVQUFBLElBQStCLE1BQXRDLE1BQUE7QUFDRDtBQUVELElBQUEsa0NBQUEsU0FBQSxVQUFBLEdBQUE7QUFBQSxvQkFBQSxJQUFBLEVBQUEsVUFBQTtBQUFBLENBQUE7QUFJQSxTQUFBLG9CQUFBLENBQUEsVUFBQSxFQUE0RDtBQUMxRCxRQUFJLGVBQTZCLFdBQWpDLEtBQUE7QUFDQSxlQUFBLFVBQUEsR0FBQSxJQUFBO0FBQ0EsaUJBQUEsUUFBQSxJQUFBLElBQUE7QUFDRDtBQWlCSyxTQUFBLElBQUEsR0FBNkI7QUFDakMsUUFBSSxVQUFBLE1BQUEsS0FBSixDQUFBLEVBQXVCO0FBQ3JCLFlBQUksT0FBQSxVQUFBLE1BQUEsSUFBQSxDQUFBLEdBQUEsU0FBQSxHQUFBLFVBQUosQ0FBSSxDQUFKO0FBQ0EsZUFBTyxVQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsVUFBQSxFQUFtRTtBQUN4RSxnQkFBSSxlQUE2QixXQUFqQyxLQUFBO0FBQ0EsbUJBQUEsSUFBQSxDQUFBLElBQUEsRUFBQSxPQUFBLENBQTBCLFVBQUEsR0FBQSxFQUFBO0FBQUEsdUJBQVEsYUFBQSxHQUFBLElBQW9CLEtBQTVCLEdBQTRCLENBQTVCO0FBQTFCLGFBQUE7QUFDQSxpQ0FBQSxVQUFBO0FBSEYsU0FBQTtBQUtEO0FBRUQsUUFBSSxhQUFBLFVBQUEsTUFBQSxJQUFBLENBQUEsR0FBQSxTQUFBLEdBQUEsVUFBSixDQUFJLENBQUo7QUFDQSx5QkFBQSxVQUFBO0FBQ0EsV0FBQSxVQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZEFwcCwgVGVzdEFwcGxpY2F0aW9uLCBBcHBCdWlsZGVyIH0gZnJvbSAnLi9hcHAtYnVpbGRlcic7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3I8VD4ge1xuICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1vZHVsZShuYW1lOiBzdHJpbmcsIHJlbmRlclRlc3Q6IENvbnN0cnVjdG9yPFJlbmRlclRlc3Q+KSB7XG4gIFFVbml0Lm1vZHVsZShuYW1lKTtcblxuICBmb3IgKGxldCBwcm9wIGluIHJlbmRlclRlc3QucHJvdG90eXBlKSB7XG4gICAgY29uc3QgdGVzdCA9IHJlbmRlclRlc3QucHJvdG90eXBlW3Byb3BdO1xuXG4gICAgaWYgKGlzVGVzdEZ1bmN0aW9uKHRlc3QpICYmIHNob3VsZFJ1bih0ZXN0KSkge1xuICAgICAgWydydW50aW1lLWNvbXBpbGVyJywgJ2J5dGVjb2RlJ10uZm9yRWFjaChsb2FkZXIgPT4ge1xuICAgICAgICBsZXQgYXBwID0gYnVpbGRBcHAoeyBsb2FkZXIgfSk7XG4gICAgICAgIFFVbml0LnRlc3QoYFske2xvYWRlcn1dICR7cHJvcH1gLCBhc3NlcnQgPT4gdGVzdC5jYWxsKHsgYXBwIH0sIGFzc2VydCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZFJ1bih0ZXN0RnVuYzogYW55KTogYm9vbGVhbiB7XG4gIGlmICh0ZXN0RnVuY1snZGVidWcnXSAmJiAhREVCVUcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzVGVzdEZ1bmN0aW9uKFxuICB2YWx1ZTogYW55XG4pOiB2YWx1ZSBpcyAodGhpczogUmVuZGVyVGVzdCwgYXNzZXJ0OiB0eXBlb2YgUVVuaXQuYXNzZXJ0KSA9PiB2b2lkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWx1ZS5pc1Rlc3Q7XG59XG5cbmV4cG9ydCBjbGFzcyBSZW5kZXJUZXN0IHtcbiAgYXBwOiBBcHBCdWlsZGVyPFRlc3RBcHBsaWNhdGlvbj47XG59XG5cbmZ1bmN0aW9uIHNldFRlc3RpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IHZvaWQge1xuICBsZXQgdGVzdEZ1bmN0aW9uOiBUZXN0RnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlIGFzIFRlc3RGdW5jdGlvbjtcbiAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgdGVzdEZ1bmN0aW9uWydpc1Rlc3QnXSA9IHRydWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE1ldGEge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIGRlYnVnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0RnVuY3Rpb24ge1xuICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdChtZXRhOiBUZXN0TWV0YSk6IE1ldGhvZERlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KFxuICBfdGFyZ2V0OiBPYmplY3QgfCBUZXN0TWV0YSxcbiAgX25hbWU/OiBzdHJpbmcsXG4gIGRlc2NyaXB0b3I/OiBQcm9wZXJ0eURlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB8IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gdGVzdCguLi5hcmdzOiBhbnlbXSkge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICBsZXQgbWV0YTogVGVzdE1ldGEgPSBhcmdzWzBdO1xuICAgIHJldHVybiAoX3RhcmdldDogT2JqZWN0LCBfbmFtZTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICAgIGxldCB0ZXN0RnVuY3Rpb246IFRlc3RGdW5jdGlvbiA9IGRlc2NyaXB0b3IudmFsdWUgYXMgVGVzdEZ1bmN0aW9uO1xuICAgICAgT2JqZWN0LmtleXMobWV0YSkuZm9yRWFjaChrZXkgPT4gKHRlc3RGdW5jdGlvbltrZXldID0gbWV0YVtrZXldKSk7XG4gICAgICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgICB9O1xuICB9XG5cbiAgbGV0IGRlc2NyaXB0b3IgPSBhcmdzWzJdO1xuICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3I7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvcmVuZGVyLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBT00sWSxHQUFBLFk7UUFxREEsSSxHQUFBLEk7O0FBNUROOztBQUNBOztBQU1NLFNBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxVQUFBLEVBQXdFO0FBQzVFLEVBQUEsS0FBSyxDQUFMLE1BQUEsQ0FBQSxJQUFBOztBQUQ0RSxNQUFBLEtBQUEsR0FBQSxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQUE7QUFJMUUsUUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFWLFNBQUEsQ0FBYixJQUFhLENBQWI7O0FBRUEsUUFBSSxjQUFjLENBQWQsSUFBYyxDQUFkLElBQXdCLFNBQVMsQ0FBckMsSUFBcUMsQ0FBckMsRUFBNkM7QUFDM0MsT0FBQSxrQkFBQSxFQUFBLFVBQUEsRUFBQSxPQUFBLENBQXlDLFVBQUEsTUFBQSxFQUFTO0FBQ2hELFlBQUksR0FBRyxHQUFHLDBCQUFTO0FBQUUsVUFBQSxNQUFNLEVBQU47QUFBRixTQUFULENBQVY7QUFDQSxRQUFBLEtBQUssQ0FBTCxJQUFBLENBQUEsTUFBQSxNQUFBLEdBQUEsSUFBQSxHQUFBLElBQUEsRUFBa0MsVUFBQSxNQUFBLEVBQU07QUFBQSxpQkFBSSxJQUFJLENBQUosSUFBQSxDQUFVO0FBQUUsWUFBQSxHQUFHLEVBQUg7QUFBRixXQUFWLEVBQUosTUFBSSxDQUFKO0FBQXhDLFNBQUE7QUFGRixPQUFBO0FBSUQ7QUFYeUUsR0FBQTs7QUFHNUUsT0FBSyxJQUFMLElBQUEsSUFBaUIsVUFBVSxDQUEzQixTQUFBLEVBQXVDO0FBQUEsSUFBQSxLQUFBLENBQTlCLElBQThCLENBQUE7QUFTdEM7QUFDRjs7QUFFRCxTQUFBLFNBQUEsQ0FBQSxRQUFBLEVBQWdDO0FBQzlCLE1BQUksUUFBUSxDQUFSLE9BQVEsQ0FBUixJQUFxQixDQUF6QixVQUFBLEVBQWlDO0FBQy9CLFdBQUEsS0FBQTtBQUNEOztBQUNELFNBQUEsSUFBQTtBQUNEOztBQUVELFNBQUEsY0FBQSxDQUFBLEtBQUEsRUFDWTtBQUVWLFNBQU8sT0FBQSxLQUFBLEtBQUEsVUFBQSxJQUErQixLQUFLLENBQTNDLE1BQUE7QUFDRDs7QUFFRCxJQUFhLFVBQWIsV0FBYSxVQUFiLEdBQUEsU0FBQSxVQUFBLEdBQUEsQ0FBQSxDQUFBOztBQUlBLFNBQUEsb0JBQUEsQ0FBQSxVQUFBLEVBQTREO0FBQzFELE1BQUksWUFBWSxHQUFpQixVQUFVLENBQTNDLEtBQUE7QUFDQSxFQUFBLFVBQVUsQ0FBVixVQUFBLEdBQUEsSUFBQTtBQUNBLEVBQUEsWUFBWSxDQUFaLFFBQVksQ0FBWixHQUFBLElBQUE7QUFDRDs7QUFpQkssU0FBQSxJQUFBLEdBQTZCO0FBQ2pDLE1BQUksU0FBQSxDQUFBLE1BQUEsS0FBSixDQUFBLEVBQXVCO0FBQ3JCLFFBQUksSUFBSSxHQUFBLFNBQUEsQ0FBQSxNQUFBLElBQUEsQ0FBQSxHQUFBLFNBQUEsR0FBQSxTQUFBLENBQVIsQ0FBUSxDQUFSO0FBQ0EsV0FBTyxVQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsVUFBQSxFQUFtRTtBQUN4RSxVQUFJLFlBQVksR0FBaUIsVUFBVSxDQUEzQyxLQUFBO0FBQ0EsTUFBQSxNQUFNLENBQU4sSUFBQSxDQUFBLElBQUEsRUFBQSxPQUFBLENBQTBCLFVBQUEsR0FBQSxFQUFHO0FBQUEsZUFBSyxZQUFZLENBQVosR0FBWSxDQUFaLEdBQW9CLElBQUksQ0FBN0IsR0FBNkIsQ0FBN0I7QUFBN0IsT0FBQTtBQUNBLE1BQUEsb0JBQW9CLENBQXBCLFVBQW9CLENBQXBCO0FBSEYsS0FBQTtBQUtEOztBQUVELE1BQUksVUFBVSxHQUFBLFNBQUEsQ0FBQSxNQUFBLElBQUEsQ0FBQSxHQUFBLFNBQUEsR0FBQSxTQUFBLENBQWQsQ0FBYyxDQUFkO0FBQ0EsRUFBQSxvQkFBb0IsQ0FBcEIsVUFBb0IsQ0FBcEI7QUFDQSxTQUFBLFVBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJ1aWxkQXBwLCBUZXN0QXBwbGljYXRpb24sIEFwcEJ1aWxkZXIgfSBmcm9tICcuL2FwcC1idWlsZGVyJztcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcblxuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RvcjxUPiB7XG4gIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTW9kdWxlKG5hbWU6IHN0cmluZywgcmVuZGVyVGVzdDogQ29uc3RydWN0b3I8UmVuZGVyVGVzdD4pIHtcbiAgUVVuaXQubW9kdWxlKG5hbWUpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gcmVuZGVyVGVzdC5wcm90b3R5cGUpIHtcbiAgICBjb25zdCB0ZXN0ID0gcmVuZGVyVGVzdC5wcm90b3R5cGVbcHJvcF07XG5cbiAgICBpZiAoaXNUZXN0RnVuY3Rpb24odGVzdCkgJiYgc2hvdWxkUnVuKHRlc3QpKSB7XG4gICAgICBbJ3J1bnRpbWUtY29tcGlsZXInLCAnYnl0ZWNvZGUnXS5mb3JFYWNoKGxvYWRlciA9PiB7XG4gICAgICAgIGxldCBhcHAgPSBidWlsZEFwcCh7IGxvYWRlciB9KTtcbiAgICAgICAgUVVuaXQudGVzdChgWyR7bG9hZGVyfV0gJHtwcm9wfWAsIGFzc2VydCA9PiB0ZXN0LmNhbGwoeyBhcHAgfSwgYXNzZXJ0KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2hvdWxkUnVuKHRlc3RGdW5jOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHRlc3RGdW5jWydkZWJ1ZyddICYmICFERUJVRykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNUZXN0RnVuY3Rpb24oXG4gIHZhbHVlOiBhbnlcbik6IHZhbHVlIGlzICh0aGlzOiBSZW5kZXJUZXN0LCBhc3NlcnQ6IHR5cGVvZiBRVW5pdC5hc3NlcnQpID0+IHZvaWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHZhbHVlLmlzVGVzdDtcbn1cblxuZXhwb3J0IGNsYXNzIFJlbmRlclRlc3Qge1xuICBhcHA6IEFwcEJ1aWxkZXI8VGVzdEFwcGxpY2F0aW9uPjtcbn1cblxuZnVuY3Rpb24gc2V0VGVzdGluZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKTogdm9pZCB7XG4gIGxldCB0ZXN0RnVuY3Rpb246IFRlc3RGdW5jdGlvbiA9IGRlc2NyaXB0b3IudmFsdWUgYXMgVGVzdEZ1bmN0aW9uO1xuICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSB0cnVlO1xuICB0ZXN0RnVuY3Rpb25bJ2lzVGVzdCddID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0TWV0YSB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbiAgZGVidWc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RGdW5jdGlvbiB7XG4gIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KG1ldGE6IFRlc3RNZXRhKTogTWV0aG9kRGVjb3JhdG9yO1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QoXG4gIF90YXJnZXQ6IE9iamVjdCB8IFRlc3RNZXRhLFxuICBfbmFtZT86IHN0cmluZyxcbiAgZGVzY3JpcHRvcj86IFByb3BlcnR5RGVzY3JpcHRvclxuKTogUHJvcGVydHlEZXNjcmlwdG9yIHwgdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KC4uLmFyZ3M6IGFueVtdKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgIGxldCBtZXRhOiBUZXN0TWV0YSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIChfdGFyZ2V0OiBPYmplY3QsIF9uYW1lOiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgICAgbGV0IHRlc3RGdW5jdGlvbjogVGVzdEZ1bmN0aW9uID0gZGVzY3JpcHRvci52YWx1ZSBhcyBUZXN0RnVuY3Rpb247XG4gICAgICBPYmplY3Qua2V5cyhtZXRhKS5mb3JFYWNoKGtleSA9PiAodGVzdEZ1bmN0aW9uW2tleV0gPSBtZXRhW2tleV0pKTtcbiAgICAgIHNldFRlc3RpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICAgIH07XG4gIH1cblxuICBsZXQgZGVzY3JpcHRvciA9IGFyZ3NbMl07XG4gIHNldFRlc3RpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -6,2 +6,2 @@ export * from './src/app-builder'; | ||
export * from './src/render-test'; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFkO0FBQ0EsY0FBYyxnQkFBZDtBQUNBLFNBQVMsV0FBVyw0QkFBcEIsUUFBd0Qsc0NBQXhEO0FBQ0EsU0FBUyxXQUFXLFNBQXBCLFFBQXFDLGtCQUFyQztBQUNBLGNBQWMsbUJBQWQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9hcHAtYnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb21waWxlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3NyYy9kZWZhdWx0LXJlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWRSZW5kZXIgfSBmcm9tICcuL3NyYy9kaWQtcmVuZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3JlbmRlci10ZXN0JztcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFkO0FBQ0EsY0FBYyxnQkFBZDtBQUNBLFNBQVMsT0FBTyxJQUFJLDRCQUFwQixRQUF3RCxzQ0FBeEQ7QUFDQSxTQUFTLE9BQU8sSUFBSSxTQUFwQixRQUFxQyxrQkFBckM7QUFDQSxjQUFjLG1CQUFkIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwLWJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29tcGlsZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9zcmMvZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlkUmVuZGVyIH0gZnJvbSAnLi9zcmMvZGlkLXJlbmRlcic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9yZW5kZXItdGVzdCc7XG4iXSwic291cmNlUm9vdCI6IiJ9 |
function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } | ||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } | ||
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); } | ||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } | ||
import Resolver, { BasicModuleRegistry } from '@glimmer/resolver'; | ||
@@ -22,246 +20,283 @@ import defaultResolverConfiguration from './default-resolver-configuration'; | ||
import didRender from './did-render'; | ||
export var TestApplication = function (_Application) { | ||
_inherits(TestApplication, _Application); | ||
export var TestApplication = | ||
/*#__PURE__*/ | ||
function (_Application) { | ||
_inheritsLoose(TestApplication, _Application); | ||
function TestApplication() { | ||
_classCallCheck(this, TestApplication); | ||
function TestApplication() { | ||
return _Application.apply(this, arguments) || this; | ||
} | ||
return _possibleConstructorReturn(this, _Application.apply(this, arguments)); | ||
} | ||
return TestApplication; | ||
}(Application); | ||
return TestApplication; | ||
}(Application); | ||
function locatorFor(module, name) { | ||
return { | ||
kind: 'template', | ||
module: module, | ||
name: name, | ||
meta: { | ||
module: module, | ||
name: name | ||
} | ||
}; | ||
return { | ||
kind: 'template', | ||
module: module, | ||
name: name, | ||
meta: { | ||
module: module, | ||
name: name | ||
} | ||
}; | ||
} | ||
var AppBuilder = function () { | ||
function AppBuilder(name, options) { | ||
_classCallCheck(this, AppBuilder); | ||
export var AppBuilder = | ||
/*#__PURE__*/ | ||
function () { | ||
function AppBuilder(name, options) { | ||
this.modules = {}; | ||
this.templates = {}; | ||
this.rootName = name; | ||
this.options = options; | ||
this.modules["component-manager:/" + this.rootName + "/component-managers/main"] = this.options.ComponentManager; | ||
this.template('Main', '<div />'); | ||
this.helper('action', buildAction, true); | ||
} | ||
this.modules = {}; | ||
this.templates = {}; | ||
this.rootName = name; | ||
this.options = options; | ||
this.modules['component-manager:/' + this.rootName + '/component-managers/main'] = this.options.ComponentManager; | ||
this.template('Main', '<div />'); | ||
this.helper('action', buildAction, true); | ||
} | ||
var _proto = AppBuilder.prototype; | ||
AppBuilder.prototype.template = function template(name, _template) { | ||
assert(name.charAt(0) === name.charAt(0).toUpperCase(), 'template names must start with a capital letter'); | ||
var specifier = 'template:/' + this.rootName + '/components/' + name; | ||
this.modules[specifier] = precompile(_template, { meta: { specifier: specifier } }); | ||
this.templates[specifier] = _template; | ||
return this; | ||
}; | ||
_proto.template = function template(name, _template) { | ||
assert(name.charAt(0) === name.charAt(0).toUpperCase(), 'template names must start with a capital letter'); | ||
var specifier = "template:/" + this.rootName + "/components/" + name; | ||
this.modules[specifier] = precompile(_template, { | ||
meta: { | ||
specifier: specifier | ||
} | ||
}); | ||
this.templates[specifier] = _template; | ||
return this; | ||
}; | ||
AppBuilder.prototype.component = function component(name, componentFactory) { | ||
var specifier = 'component:/' + this.rootName + '/components/' + name; | ||
this.modules[specifier] = componentFactory; | ||
return this; | ||
}; | ||
_proto.component = function component(name, componentFactory) { | ||
var specifier = "component:/" + this.rootName + "/components/" + name; | ||
this.modules[specifier] = componentFactory; | ||
return this; | ||
}; | ||
AppBuilder.prototype.helper = function helper(name, helperFunc) { | ||
var isFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; | ||
_proto.helper = function helper(name, helperFunc, isFactory) { | ||
if (isFactory === void 0) { | ||
isFactory = false; | ||
} | ||
var specifier = 'helper:/' + this.rootName + '/components/' + name; | ||
helperFunc.isFactory = isFactory; | ||
this.modules[specifier] = helperFunc; | ||
return this; | ||
}; | ||
var specifier = "helper:/" + this.rootName + "/components/" + name; | ||
helperFunc.isFactory = isFactory; | ||
this.modules[specifier] = helperFunc; | ||
return this; | ||
}; | ||
AppBuilder.prototype.buildResolver = function buildResolver() { | ||
var resolverConfiguration = this.options.resolverConfiguration || defaultResolverConfiguration; | ||
resolverConfiguration.app = resolverConfiguration.app || { | ||
name: this.rootName, | ||
rootName: this.rootName | ||
}; | ||
var registry = new BasicModuleRegistry(this.modules); | ||
return new Resolver(resolverConfiguration, registry); | ||
_proto.buildResolver = function buildResolver() { | ||
var resolverConfiguration = this.options.resolverConfiguration || defaultResolverConfiguration; | ||
resolverConfiguration.app = resolverConfiguration.app || { | ||
name: this.rootName, | ||
rootName: this.rootName | ||
}; | ||
var registry = new BasicModuleRegistry(this.modules); | ||
return new Resolver(resolverConfiguration, registry); | ||
}; | ||
AppBuilder.prototype.buildRuntimeCompilerLoader = function buildRuntimeCompilerLoader() { | ||
return new RuntimeCompilerLoader(); | ||
}; | ||
_proto.buildRuntimeCompilerLoader = function buildRuntimeCompilerLoader() { | ||
return new RuntimeCompilerLoader(); | ||
}; | ||
AppBuilder.prototype.buildBytecodeLoader = function buildBytecodeLoader(resolver) { | ||
var _this2 = this; | ||
_proto.buildBytecodeLoader = function buildBytecodeLoader(resolver) { | ||
var _this = this; | ||
var delegate = new CompilerDelegate(resolver); | ||
var compiler = new BundleCompiler(delegate); | ||
var mainLocator = locatorFor('template:mainTemplate', 'default'); | ||
mainLocator.meta.module = 'template:mainTemplate'; | ||
var block = JSON.parse(mainTemplate.block); | ||
var compilableTemplate = compilable({ | ||
block: block, | ||
referrer: mainLocator.meta | ||
}); | ||
compiler.addCompilableTemplate(mainLocator, compilableTemplate); | ||
for (var module in this.templates) { | ||
compiler.addTemplateSource(locatorFor(module, 'default'), this.templates[module]); | ||
} | ||
var delegate = new CompilerDelegate(resolver); | ||
var compiler = new BundleCompiler(delegate); | ||
var mainLocator = locatorFor('template:mainTemplate', 'default'); | ||
mainLocator.meta.module = 'template:mainTemplate'; | ||
var block = JSON.parse(mainTemplate.block); | ||
var compilableTemplate = compilable({ | ||
block: block, | ||
referrer: mainLocator.meta | ||
}); | ||
compiler.addCompilableTemplate(mainLocator, compilableTemplate); | ||
var _compiler$compile = compiler.compile(), | ||
heap = _compiler$compile.heap, | ||
pool = _compiler$compile.pool, | ||
table = _compiler$compile.table; | ||
for (var module in this.templates) { | ||
compiler.addTemplateSource(locatorFor(module, 'default'), this.templates[module]); | ||
} | ||
var resolverTable = []; | ||
var meta = {}; | ||
table.vmHandleByModuleLocator.forEach(function (vmHandle, locator) { | ||
var handle = table.byModuleLocator.get(locator); | ||
var template = compiler.getTemplate(locator); | ||
meta[locator.module] = { | ||
v: vmHandle, | ||
h: handle, | ||
table: template.symbolTable | ||
}; | ||
}); | ||
table.byHandle.forEach(function (locator, handle) { | ||
var module = locator.module.replace('template:/', 'component:/'); | ||
if (_this2.modules[module]) { | ||
if (module.indexOf('helper:') === 0) { | ||
var moduleType = _this2.modules[module].isFactory ? 0 /* HELPER_FACTORY */ : 1 /* HELPER */; | ||
resolverTable[handle] = [moduleType, _this2.modules[module]]; | ||
} else { | ||
resolverTable[handle] = _this2.modules[module]; | ||
} | ||
} | ||
}); | ||
var bytecode = heap.buffer; | ||
var data = { | ||
prefix: '', | ||
mainEntry: table.vmHandleByModuleLocator.get(mainLocator), | ||
pool: pool, | ||
table: resolverTable, | ||
meta: meta, | ||
heap: { | ||
table: heap.table, | ||
handle: heap.handle | ||
} | ||
}; | ||
return new BytecodeLoader({ bytecode: bytecode, data: data }); | ||
}; | ||
var _compiler$compile = compiler.compile(), | ||
heap = _compiler$compile.heap, | ||
pool = _compiler$compile.pool, | ||
table = _compiler$compile.table; | ||
AppBuilder.prototype.buildLoader = function buildLoader(resolver) { | ||
switch (this.options.loader) { | ||
case 'runtime-compiler': | ||
return this.buildRuntimeCompilerLoader(); | ||
case 'bytecode': | ||
return this.buildBytecodeLoader(resolver); | ||
default: | ||
throw new Error('Unrecognized loader ' + this.options.loader); | ||
var resolverTable = []; | ||
var meta = {}; | ||
table.vmHandleByModuleLocator.forEach(function (vmHandle, locator) { | ||
var handle = table.byModuleLocator.get(locator); | ||
var template = compiler.getTemplate(locator); | ||
meta[locator.module] = { | ||
v: vmHandle, | ||
h: handle, | ||
table: template.symbolTable | ||
}; | ||
}); | ||
table.byHandle.forEach(function (locator, handle) { | ||
var module = locator.module.replace('template:/', 'component:/'); | ||
if (_this.modules[module]) { | ||
if (module.indexOf('helper:') === 0) { | ||
var moduleType = _this.modules[module].isFactory ? 0 | ||
/* HELPER_FACTORY */ | ||
: 1 | ||
/* HELPER */ | ||
; | ||
resolverTable[handle] = [moduleType, _this.modules[module]]; | ||
} else { | ||
resolverTable[handle] = _this.modules[module]; | ||
} | ||
} | ||
}); | ||
var bytecode = heap.buffer; | ||
var data = { | ||
prefix: '', | ||
mainEntry: table.vmHandleByModuleLocator.get(mainLocator), | ||
pool: pool, | ||
table: resolverTable, | ||
meta: meta, | ||
heap: { | ||
table: heap.table, | ||
handle: heap.handle | ||
} | ||
}; | ||
return new BytecodeLoader({ | ||
bytecode: bytecode, | ||
data: data | ||
}); | ||
}; | ||
AppBuilder.prototype.renderToString = function renderToString(componentName, data, options) { | ||
var resolver = this.buildResolver(); | ||
var loader = this.buildLoader(resolver); | ||
return SSRApplication.renderToString(componentName, data, Object.assign({ rootName: this.rootName, resolver: resolver, | ||
loader: loader, renderer: new SyncRenderer() }, options)); | ||
}; | ||
_proto.buildLoader = function buildLoader(resolver) { | ||
switch (this.options.loader) { | ||
case 'runtime-compiler': | ||
return this.buildRuntimeCompilerLoader(); | ||
AppBuilder.prototype.boot = function () { | ||
var _ref = _asyncToGenerator(function* () { | ||
var resolver = this.buildResolver(); | ||
var loader = this.buildLoader(resolver); | ||
var doc = this.options.document || document; | ||
var element = doc.body; | ||
var builder = new DOMBuilder({ element: element }); | ||
var renderer = new SyncRenderer(); | ||
var app = new this.options.ApplicationClass({ | ||
resolver: resolver, | ||
builder: builder, | ||
loader: loader, | ||
renderer: renderer, | ||
rootName: this.rootName, | ||
document: this.options.document | ||
}); | ||
var rootElement = doc.createElement('div'); | ||
app.rootElement = rootElement; | ||
app.renderComponent('Main', rootElement); | ||
app.boot(); | ||
yield didRender(app); | ||
return app; | ||
}); | ||
case 'bytecode': | ||
return this.buildBytecodeLoader(resolver); | ||
function boot() { | ||
return _ref.apply(this, arguments); | ||
} | ||
default: | ||
throw new Error("Unrecognized loader " + this.options.loader); | ||
} | ||
}; | ||
return boot; | ||
}(); | ||
_proto.renderToString = function renderToString(componentName, data, options) { | ||
var resolver = this.buildResolver(); | ||
var loader = this.buildLoader(resolver); | ||
return SSRApplication.renderToString(componentName, data, Object.assign({ | ||
rootName: this.rootName, | ||
resolver: resolver, | ||
loader: loader, | ||
renderer: new SyncRenderer() | ||
}, options)); | ||
}; | ||
return AppBuilder; | ||
_proto.boot = | ||
/*#__PURE__*/ | ||
function () { | ||
var _boot = _asyncToGenerator(function* () { | ||
var resolver = this.buildResolver(); | ||
var loader = this.buildLoader(resolver); | ||
var doc = this.options.document || document; | ||
var element = doc.body; | ||
var builder = new DOMBuilder({ | ||
element: element | ||
}); | ||
var renderer = new SyncRenderer(); | ||
var app = new this.options.ApplicationClass({ | ||
resolver: resolver, | ||
builder: builder, | ||
loader: loader, | ||
renderer: renderer, | ||
rootName: this.rootName, | ||
document: this.options.document | ||
}); | ||
var rootElement = doc.createElement('div'); | ||
app.rootElement = rootElement; | ||
app.renderComponent('Main', rootElement); | ||
app.boot(); | ||
yield didRender(app); | ||
return app; | ||
}); | ||
function boot() { | ||
return _boot.apply(this, arguments); | ||
} | ||
return boot; | ||
}(); | ||
return AppBuilder; | ||
}(); | ||
export { AppBuilder }; | ||
var CompilerDelegate = | ||
/*#__PURE__*/ | ||
function () { | ||
function CompilerDelegate(resolver) { | ||
this.resolver = resolver; | ||
} | ||
var CompilerDelegate = function () { | ||
function CompilerDelegate(resolver) { | ||
_classCallCheck(this, CompilerDelegate); | ||
var _proto2 = CompilerDelegate.prototype; | ||
this.resolver = resolver; | ||
} | ||
_proto2.hasComponentInScope = function hasComponentInScope(name, referrer) { | ||
return !!this.resolver.identify("template:" + name, referrer.module); | ||
}; | ||
CompilerDelegate.prototype.hasComponentInScope = function hasComponentInScope(name, referrer) { | ||
return !!this.resolver.identify('template:' + name, referrer.module); | ||
_proto2.resolveComponent = function resolveComponent(name, referrer) { | ||
var resolved = this.resolver.identify("template:" + name, referrer.module); | ||
return { | ||
module: resolved, | ||
name: 'default' | ||
}; | ||
}; | ||
CompilerDelegate.prototype.resolveComponent = function resolveComponent(name, referrer) { | ||
var resolved = this.resolver.identify('template:' + name, referrer.module); | ||
return { module: resolved, name: 'default' }; | ||
}; | ||
_proto2.getComponentCapabilities = function getComponentCapabilities() { | ||
return CAPABILITIES; | ||
}; | ||
CompilerDelegate.prototype.getComponentCapabilities = function getComponentCapabilities() { | ||
return CAPABILITIES; | ||
}; | ||
_proto2.hasHelperInScope = function hasHelperInScope(helperName, referrer) { | ||
return !!this.resolver.identify("helper:" + helperName, referrer.module); | ||
}; | ||
CompilerDelegate.prototype.hasHelperInScope = function hasHelperInScope(helperName, referrer) { | ||
return !!this.resolver.identify('helper:' + helperName, referrer.module); | ||
_proto2.resolveHelper = function resolveHelper(helperName, referrer) { | ||
var resolved = this.resolver.identify("helper:" + helperName, referrer.module); | ||
return { | ||
module: resolved, | ||
name: 'default' | ||
}; | ||
}; | ||
CompilerDelegate.prototype.resolveHelper = function resolveHelper(helperName, referrer) { | ||
var resolved = this.resolver.identify('helper:' + helperName, referrer.module); | ||
return { module: resolved, name: 'default' }; | ||
}; | ||
_proto2.hasPartialInScope = function hasPartialInScope(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
CompilerDelegate.prototype.hasPartialInScope = function hasPartialInScope(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
_proto2.resolvePartial = function resolvePartial(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
CompilerDelegate.prototype.resolvePartial = function resolvePartial(partialName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
_proto2.hasModifierInScope = function hasModifierInScope(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
CompilerDelegate.prototype.hasModifierInScope = function hasModifierInScope(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
_proto2.resolveModifier = function resolveModifier(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
CompilerDelegate.prototype.resolveModifier = function resolveModifier(modifierName, referrer) { | ||
throw new Error('Method not implemented.'); | ||
}; | ||
return CompilerDelegate; | ||
return CompilerDelegate; | ||
}(); | ||
function buildApp() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
function buildApp(options) { | ||
if (options === void 0) { | ||
options = {}; | ||
} | ||
options.appName = options.appName || 'test-app'; | ||
options.loader = options.loader || 'runtime-compiler'; | ||
options.ComponentManager = options.ComponentManager || ComponentManager; | ||
options.ApplicationClass = options.ApplicationClass || TestApplication; | ||
return new AppBuilder(options.appName, options); | ||
options.appName = options.appName || 'test-app'; | ||
options.loader = options.loader || 'runtime-compiler'; | ||
options.ComponentManager = options.ComponentManager || ComponentManager; | ||
options.ApplicationClass = options.ApplicationClass || TestApplication; | ||
return new AppBuilder(options.appName, options); | ||
} | ||
export { buildApp }; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sUUFBUCxJQUFtQixtQkFBbkIsUUFBcUUsbUJBQXJFO0FBRUEsT0FBTyw0QkFBUCxNQUF5QyxrQ0FBekM7QUFDQSxTQUFTLFVBQVQsUUFBMkIsWUFBM0I7QUFDQSxPQUFPLFdBQVAsSUFFRSxjQUZGLEVBR0UsVUFIRixFQUtFLHFCQUxGLEVBTUUsWUFORixFQVFFLHNCQVJGLFFBU08sc0JBVFA7QUFVQSxTQUFTLGdCQUFULEVBQTJCLFlBQTNCLFFBQStDLG9CQUEvQztBQUNBLFNBQVMsTUFBVCxRQUF1QixlQUF2QjtBQUNBLFNBQVMsY0FBVCxRQUFzRSwwQkFBdEU7QUFDQSxTQUFTLFdBQVQsRUFBc0IsWUFBdEIsUUFBMEMsc0JBQTFDO0FBQ0EsU0FBUyxVQUFULFFBQTJCLDBCQUEzQjtBQUdBLFNBQVMsY0FBVCxRQUErQixjQUEvQjtBQUVBLE9BQU8sU0FBUCxNQUFzQixjQUF0QjtBQWVBLFdBQWEsZUFBYjtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBLEVBQXFDLFdBQXJDO0FBcUJBLFNBQVMsVUFBVCxDQUFvQixNQUFwQixFQUFvQyxJQUFwQyxFQUFnRDtBQUM5QyxXQUFPO0FBQ0wsY0FBTSxVQUREO0FBRUwsc0JBRks7QUFHTCxrQkFISztBQUlMLGNBQU07QUFDSiwwQkFESTtBQUVKO0FBRkk7QUFKRCxLQUFQO0FBU0Q7O0lBRVksVTtBQU1YLHdCQUFZLElBQVosRUFBMEIsT0FBMUIsRUFBdUQ7QUFBQTs7QUFKdkQsYUFBQSxPQUFBLEdBQXlCLEVBQXpCO0FBQ0EsYUFBQSxTQUFBLEdBQTBCLEVBQTFCO0FBSUUsYUFBSyxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsYUFBSyxPQUFMLEdBQWUsT0FBZjtBQUNBLGFBQUssT0FB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LFNBQTFCLEVBQVA7QUFDRCxLOzsrQkFFRCxpQiw4QkFBa0IsVyxFQUFxQixRLEVBQXVCO0FBQzVELGNBQU0sSUFBSSxLQUFKLENBQVUseUJBQVYsQ0FBTjtBQUNELEs7OytCQUVELGMsMkJBQWUsVyxFQUFxQixRLEVBQXVCO0FBQ3pELGNBQU0sSUFBSSxLQUFKLENBQVUseUJBQVYsQ0FBTjtBQUNELEs7OytCQUVELGtCLCtCQUFtQixZLEVBQXNCLFEsRUFBdUI7QUFDOUQsY0FBTSxJQUFJLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0QsSzs7K0JBRUQsZSw0QkFBZ0IsWSxFQUFzQixRLEVBQXVCO0FBQzNELGNBQU0sSUFBSSxLQUFKLENBQVUseUJBQVYsQ0FBTjtBQUNELEs7Ozs7O0FBR0gsU0FBUyxRQUFULEdBQStFO0FBQUEsUUFBbEMsT0FBa0MsdUVBQUYsRUFBRTs7QUFDN0UsWUFBUSxPQUFSLEdBQWtCLFFBQVEsT0FBUixJQUFtQixVQUFyQztBQUNBLFlBQVEsTUFBUixHQUFpQixRQUFRLE1BQVIsSUFBa0Isa0JBQW5DO0FBQ0EsWUFBUSxnQkFBUixHQUEyQixRQUFRLGdCQUFSLElBQTRCLGdCQUF2RDtBQUNBLFlBQVEsZ0JBQVIsR0FDRSxRQUFRLGdCQUFSLElBQTZCLGVBRC9CO0FBR0EsV0FBTyxJQUFJLFVBQUosQ0FBZSxRQUFRLE9BQXZCLEVBQWdDLE9BQWhDLENBQVA7QUFDRDtBQUVELFNBQVMsUUFBVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvbHZlciwgeyBCYXNpY01vZHVsZVJlZ2lzdHJ5LCBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0LCBNb2R1bGVMb2NhdG9yLCBUZW1wbGF0ZUxvY2F0b3IgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uIGZyb20gJy4vZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbiwge1xuICBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yLFxuICBCeXRlY29kZUxvYWRlcixcbiAgRE9NQnVpbGRlcixcbiAgTG9hZGVyLFxuICBSdW50aW1lQ29tcGlsZXJMb2FkZXIsXG4gIFN5bmNSZW5kZXJlcixcbiAgTW9kdWxlVHlwZXMsXG4gIElOVEVSTkFMX0RZTkFNSUNfU0NPUEVcbn0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFuYWdlciwgQ0FQQUJJTElUSUVTIH0gZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQnVuZGxlQ29tcGlsZXIsIENvbXBpbGVyRGVsZWdhdGUgYXMgSUNvbXBpbGVyRGVsZWdhdGUgfSBmcm9tICdAZ2xpbW1lci9idW5kbGUtY29tcGlsZXInO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb24sIG1haW5UZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IGNvbXBpbGFibGUgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9zcmMvbG9hZGVycy9ieXRlY29kZS9sb2FkZXInO1xuaW1wb3J0IHsgU2ltcGxlRG9jdW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1NSQXBwbGljYXRpb24gfSBmcm9tICdAZ2xpbW1lci9zc3InO1xuXG5pbXBvcnQgZGlkUmVuZGVyIGZyb20gJy4vZGlkLXJlbmRlcic7XG5pbXBvcnQgSFRNTFNlcmlhbGl6ZXIgZnJvbSAnQHNpbXBsZS1kb20vc2VyaWFsaXplcic7XG5pbXBvcnQgeyBSZW5kZXJlciB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uL3NyYy9iYXNlLWFwcGxpY2F0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBUZXN0U1NSQXBwbGljYXRpb25PcHRpb25zIHtcbiAgcm9vdE5hbWU/OiBzdHJpbmc7XG4gIHJlc29sdmVyPzogUmVzb2x2ZXI7XG4gIGxvYWRlcj86IExvYWRlcjtcbiAgcmVuZGVyZXI/OiBSZW5kZXJlcjtcbiAgc2VyaWFsaXplcj86IEhUTUxTZXJpYWxpemVyO1xuICBbSU5URVJOQUxfRFlOQU1JQ19TQ09QRV0/OiBEaWN0PHVua25vd24+O1xufVxuXG5mdW5jdGlvbiBsb2NhdG9yRm9yKG1vZHVsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZUxvY2F0b3I8TW9kdWxlTG9jYXRvcj4ge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICd0ZW1wbGF0ZScsXG4gICAgbW9kdWxlLFxuICAgIG5hbWUsXG4gICAgbWV0YToge1xuICAgICAgbW9kdWxlLFxuICAgICAgbmFtZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQXBwQnVpbGRlcjxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPiB7XG4gIHJvb3ROYW1lOiBzdHJpbmc7XG4gIG1vZHVsZXM6IERpY3Q8dW5rbm93bj4gPSB7fTtcbiAgdGVtcGxhdGVzOiBEaWN0PHN0cmluZz4gPSB7fTtcbiAgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD47XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPikge1xuICAgIHRoaXMucm9vdE5hbWUgPSBuYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5tb2R1bGVzW1xuICAgICAgYGNvbXBvbmVudC1tYW5hZ2VyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudC1tYW5hZ2Vycy9tYWluYFxuICAgIF0gPSB0aGlzLm9wdGlvbnMuQ29tcG9uZW50TWFuYWdlcjtcbiAgICB0aGlzLnRlbXBsYXRlKCdNYWluJywgJzxkaXYgLz4nKTtcbiAgICB0aGlzLmhlbHBlcignYWN0aW9uJywgYnVpbGRBY3Rpb24sIHRydWUpO1xuICB9XG5cbiAgdGVtcGxhdGUobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbmFtZS5jaGFyQXQoMCkgPT09IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCksXG4gICAgICAndGVtcGxhdGUgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInXG4gICAgKTtcblxuICAgIGxldCBzcGVjaWZpZXIgPSBgdGVtcGxhdGU6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IHByZWNvbXBpbGUodGVtcGxhdGUsIHsgbWV0YTogeyBzcGVjaWZpZXIgfSB9KTtcbiAgICB0aGlzLnRlbXBsYXRlc1tzcGVjaWZpZXJdID0gdGVtcGxhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21wb25lbnQobmFtZTogc3RyaW5nLCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5KSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBjb21wb25lbnQ6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGNvbXBvbmVudEZhY3Rvcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nLCBoZWxwZXJGdW5jOiBIZWxwZXJGdW5jdGlvbiwgaXNGYWN0b3J5ID0gZmFsc2UpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGhlbHBlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIGhlbHBlckZ1bmMuaXNGYWN0b3J5ID0gaXNGYWN0b3J5O1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gaGVscGVyRnVuYztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlc29sdmVyKCk6IFJlc29sdmVyIHtcbiAgICBsZXQgcmVzb2x2ZXJDb25maWd1cmF0aW9uID0gdGhpcy5vcHRpb25zLnJlc29sdmVyQ29uZmlndXJhdGlvbiB8fCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICAgIHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgPSByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwIHx8IHtcbiAgICAgIG5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICB9O1xuXG4gICAgbGV0IHJlZ2lzdHJ5ID0gbmV3IEJhc2ljTW9kdWxlUmVnaXN0cnkodGhpcy5tb2R1bGVzKTtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVyKHJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk6IExvYWRlciB7XG4gICAgcmV0dXJuIG5ldyBSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyOiBSZXNvbHZlcikge1xuICAgIGxldCBkZWxlZ2F0ZSA9IG5ldyBDb21waWxlckRlbGVnYXRlKHJlc29sdmVyKTtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgQnVuZGxlQ29tcGlsZXIoZGVsZWdhdGUpO1xuXG4gICAgbGV0IG1haW5Mb2NhdG9yID0gbG9jYXRvckZvcigndGVtcGxhdGU6bWFpblRlbXBsYXRlJywgJ2RlZmF1bHQnKTtcbiAgICBtYWluTG9jYXRvci5tZXRhLm1vZHVsZSA9ICd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnO1xuXG4gICAgbGV0IGJsb2NrID0gSlNPTi5wYXJzZShtYWluVGVtcGxhdGUuYmxvY2spO1xuICAgIGxldCBjb21waWxhYmxlVGVtcGxhdGUgPSBjb21waWxhYmxlKHtcbiAgICAgIGJsb2NrLFxuICAgICAgcmVmZXJyZXI6IG1haW5Mb2NhdG9yLm1ldGEsXG4gICAgfSk7XG5cbiAgICBjb21waWxlci5hZGRDb21waWxhYmxlVGVtcGxhdGUobWFpbkxvY2F0b3IsIGNvbXBpbGFibGVUZW1wbGF0ZSk7XG5cbiAgICBmb3IgKGxldCBtb2R1bGUgaW4gdGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbXBpbGVyLmFkZFRlbXBsYXRlU291cmNlKGxvY2F0b3JGb3IobW9kdWxlLCAnZGVmYXVsdCcpLCB0aGlzLnRlbXBsYXRlc1ttb2R1bGVdKTtcbiAgICB9XG5cbiAgICBsZXQgeyBoZWFwLCBwb29sLCB0YWJsZSB9ID0gY29tcGlsZXIuY29tcGlsZSgpO1xuXG4gICAgbGV0IHJlc29sdmVyVGFibGU6IHVua25vd25bXSA9IFtdO1xuXG4gICAgbGV0IG1ldGE6IERpY3Q8TWV0YWRhdGE+ID0ge307XG5cbiAgICB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5mb3JFYWNoKCh2bUhhbmRsZSwgbG9jYXRvcikgPT4ge1xuICAgICAgbGV0IGhhbmRsZSA9IHRhYmxlLmJ5TW9kdWxlTG9jYXRvci5nZXQobG9jYXRvcik7XG4gICAgICBsZXQgdGVtcGxhdGUgPSBjb21waWxlci5nZXRUZW1wbGF0ZShsb2NhdG9yKTtcblxuICAgICAgbWV0YVtsb2NhdG9yLm1vZHVsZV0gPSB7XG4gICAgICAgIHY6IHZtSGFuZGxlLFxuICAgICAgICBoOiBoYW5kbGUsXG4gICAgICAgIHRhYmxlOiB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0YWJsZS5ieUhhbmRsZS5mb3JFYWNoKChsb2NhdG9yLCBoYW5kbGUpID0+IHtcbiAgICAgIGxldCBtb2R1bGUgPSBsb2NhdG9yLm1vZHVsZS5yZXBsYWNlKCd0ZW1wbGF0ZTovJywgJ2NvbXBvbmVudDovJyk7XG4gICAgICBpZiAodGhpcy5tb2R1bGVzW21vZHVsZV0pIHtcbiAgICAgICAgaWYgKG1vZHVsZS5pbmRleE9mKCdoZWxwZXI6JykgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gKHRoaXMubW9kdWxlc1ttb2R1bGVdIGFzIEhlbHBlckZ1bmN0aW9uKS5pc0ZhY3RvcnkgPyBNb2R1bGVUeXBlcy5IRUxQRVJfRkFDVE9SWSA6IE1vZHVsZVR5cGVzLkhFTFBFUjtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSBbbW9kdWxlVHlwZSwgdGhpcy5tb2R1bGVzW21vZHVsZV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYnl0ZWNvZGUgPSBoZWFwLmJ1ZmZlcjtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIHByZWZpeDogJycsXG4gICAgICBtYWluRW50cnk6IHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmdldChtYWluTG9jYXRvciksXG4gICAgICBwb29sLFxuICAgICAgdGFibGU6IHJlc29sdmVyVGFibGUsXG4gICAgICBtZXRhLFxuICAgICAgaGVhcDoge1xuICAgICAgICB0YWJsZTogaGVhcC50YWJsZSxcbiAgICAgICAgaGFuZGxlOiBoZWFwLmhhbmRsZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQnl0ZWNvZGVMb2FkZXIoeyBieXRlY29kZSwgZGF0YSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZExvYWRlcihyZXNvbHZlcik6IExvYWRlciB7XG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubG9hZGVyKSB7XG4gICAgICBjYXNlICdydW50aW1lLWNvbXBpbGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgICAgIGNhc2UgJ2J5dGVjb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsb2FkZXIgJHt0aGlzLm9wdGlvbnMubG9hZGVyfWApO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogRGljdDx1bmtub3duPiwgb3B0aW9ucz86IFRlc3RTU1JBcHBsaWNhdGlvbk9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgcmV0dXJuIFNTUkFwcGxpY2F0aW9uLnJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWUsIGRhdGEsIHtcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcmVzb2x2ZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcjogbmV3IFN5bmNSZW5kZXJlcigpLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYm9vdCgpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyOiBMb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIGxldCBkb2M6IERvY3VtZW50ID0gKHRoaXMub3B0aW9ucy5kb2N1bWVudCBhcyBEb2N1bWVudCkgfHwgZG9jdW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBkb2MuYm9keTtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKHsgZWxlbWVudCB9KTtcbiAgICBsZXQgcmVuZGVyZXIgPSBuZXcgU3luY1JlbmRlcmVyKCk7XG5cbiAgICBsZXQgYXBwID0gbmV3IHRoaXMub3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzKHtcbiAgICAgIHJlc29sdmVyLFxuICAgICAgYnVpbGRlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICBkb2N1bWVudDogdGhpcy5vcHRpb25zLmRvY3VtZW50LFxuICAgIH0pO1xuXG4gICAgbGV0IHJvb3RFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFwcC5yb290RWxlbWVudCA9IHJvb3RFbGVtZW50O1xuICAgIGFwcC5yZW5kZXJDb21wb25lbnQoJ01haW4nLCByb290RWxlbWVudCk7XG4gICAgYXBwLmJvb3QoKTtcblxuICAgIGF3YWl0IGRpZFJlbmRlcihhcHApO1xuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlckRlbGVnYXRlIGltcGxlbWVudHMgSUNvbXBpbGVyRGVsZWdhdGU8TW9kdWxlTG9jYXRvcj4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVzb2x2ZXI6IFJlc29sdmVyKSB7fVxuXG4gIGhhc0NvbXBvbmVudEluU2NvcGUobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUNvbXBvbmVudChuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBnZXRDb21wb25lbnRDYXBhYmlsaXRpZXMoKSB7XG4gICAgcmV0dXJuIENBUEFCSUxJVElFUztcbiAgfVxuXG4gIGhhc0hlbHBlckluU2NvcGUoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxJblNjb3BlKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZVBhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBoYXNNb2RpZmllckluU2NvcGUobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZU1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEFwcDxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPihvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPiA9IHt9KTogQXBwQnVpbGRlcjxUPiB7XG4gIG9wdGlvbnMuYXBwTmFtZSA9IG9wdGlvbnMuYXBwTmFtZSB8fCAndGVzdC1hcHAnO1xuICBvcHRpb25zLmxvYWRlciA9IG9wdGlvbnMubG9hZGVyIHx8ICdydW50aW1lLWNvbXBpbGVyJztcbiAgb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyID0gb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyIHx8IENvbXBvbmVudE1hbmFnZXI7XG4gIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyA9XG4gICAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzIHx8IChUZXN0QXBwbGljYXRpb24gYXMgQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPik7XG5cbiAgcmV0dXJuIG5ldyBBcHBCdWlsZGVyKG9wdGlvbnMuYXBwTmFtZSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCB7IGJ1aWxkQXBwIH07XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPLFFBQVAsSUFBbUIsbUJBQW5CLFFBQXFFLG1CQUFyRTtBQUVBLE9BQU8sNEJBQVAsTUFBeUMsa0NBQXpDO0FBQ0EsU0FBUyxVQUFULFFBQTJCLFlBQTNCO0FBQ0EsT0FBTyxXQUFQLElBRUUsY0FGRixFQUdFLFVBSEYsRUFLRSxxQkFMRixFQU1FLFlBTkYsRUFRRSxzQkFSRixRQVNPLHNCQVRQO0FBVUEsU0FBUyxnQkFBVCxFQUEyQixZQUEzQixRQUErQyxvQkFBL0M7QUFDQSxTQUFTLE1BQVQsUUFBdUIsZUFBdkI7QUFDQSxTQUFTLGNBQVQsUUFBc0UsMEJBQXRFO0FBQ0EsU0FBUyxXQUFULEVBQXNCLFlBQXRCLFFBQTBDLHNCQUExQztBQUNBLFNBQVMsVUFBVCxRQUEyQiwwQkFBM0I7QUFHQSxTQUFTLGNBQVQsUUFBK0IsY0FBL0I7QUFFQSxPQUFPLFNBQVAsTUFBc0IsY0FBdEI7QUFlQSxXQUFhLGVBQWI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUEsRUFBcUMsV0FBckM7O0FBcUJBLFNBQVMsVUFBVCxDQUFvQixNQUFwQixFQUFvQyxJQUFwQyxFQUFnRDtBQUM5QyxTQUFPO0FBQ0wsSUFBQSxJQUFJLEVBQUUsVUFERDtBQUVMLElBQUEsTUFBTSxFQUFOLE1BRks7QUFHTCxJQUFBLElBQUksRUFBSixJQUhLO0FBSUwsSUFBQSxJQUFJLEVBQUU7QUFDSixNQUFBLE1BQU0sRUFBTixNQURJO0FBRUosTUFBQSxJQUFJLEVBQUo7QUFGSTtBQUpELEdBQVA7QUFTRDs7QUFFRCxXQUFhLFVBQWI7QUFBQTtBQUFBO0FBTUUsc0JBQVksSUFBWixFQUEwQixPQUExQixFQUF1RDtBQUp2RCxTQUFBLE9BQUEsR0FBeUIsRUFBekI7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LE1BQVIsSUFBa0Isa0JBQW5DO0FBQ0EsRUFBQSxPQUFPLENBQUMsZ0JBQVIsR0FBMkIsT0FBTyxDQUFDLGdCQUFSLElBQTRCLGdCQUF2RDtBQUNBLEVBQUEsT0FBTyxDQUFDLGdCQUFSLEdBQ0UsT0FBTyxDQUFDLGdCQUFSLElBQTZCLGVBRC9CO0FBR0EsU0FBTyxJQUFJLFVBQUosQ0FBZSxPQUFPLENBQUMsT0FBdkIsRUFBZ0MsT0FBaEMsQ0FBUDtBQUNEOztBQUVELFNBQVMsUUFBVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvbHZlciwgeyBCYXNpY01vZHVsZVJlZ2lzdHJ5LCBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0LCBNb2R1bGVMb2NhdG9yLCBUZW1wbGF0ZUxvY2F0b3IgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uIGZyb20gJy4vZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbiwge1xuICBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yLFxuICBCeXRlY29kZUxvYWRlcixcbiAgRE9NQnVpbGRlcixcbiAgTG9hZGVyLFxuICBSdW50aW1lQ29tcGlsZXJMb2FkZXIsXG4gIFN5bmNSZW5kZXJlcixcbiAgTW9kdWxlVHlwZXMsXG4gIElOVEVSTkFMX0RZTkFNSUNfU0NPUEVcbn0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFuYWdlciwgQ0FQQUJJTElUSUVTIH0gZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQnVuZGxlQ29tcGlsZXIsIENvbXBpbGVyRGVsZWdhdGUgYXMgSUNvbXBpbGVyRGVsZWdhdGUgfSBmcm9tICdAZ2xpbW1lci9idW5kbGUtY29tcGlsZXInO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb24sIG1haW5UZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IGNvbXBpbGFibGUgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9zcmMvbG9hZGVycy9ieXRlY29kZS9sb2FkZXInO1xuaW1wb3J0IHsgU2ltcGxlRG9jdW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1NSQXBwbGljYXRpb24gfSBmcm9tICdAZ2xpbW1lci9zc3InO1xuXG5pbXBvcnQgZGlkUmVuZGVyIGZyb20gJy4vZGlkLXJlbmRlcic7XG5pbXBvcnQgSFRNTFNlcmlhbGl6ZXIgZnJvbSAnQHNpbXBsZS1kb20vc2VyaWFsaXplcic7XG5pbXBvcnQgeyBSZW5kZXJlciB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uL3NyYy9iYXNlLWFwcGxpY2F0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBUZXN0U1NSQXBwbGljYXRpb25PcHRpb25zIHtcbiAgcm9vdE5hbWU/OiBzdHJpbmc7XG4gIHJlc29sdmVyPzogUmVzb2x2ZXI7XG4gIGxvYWRlcj86IExvYWRlcjtcbiAgcmVuZGVyZXI/OiBSZW5kZXJlcjtcbiAgc2VyaWFsaXplcj86IEhUTUxTZXJpYWxpemVyO1xuICBbSU5URVJOQUxfRFlOQU1JQ19TQ09QRV0/OiBEaWN0PHVua25vd24+O1xufVxuXG5mdW5jdGlvbiBsb2NhdG9yRm9yKG1vZHVsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZUxvY2F0b3I8TW9kdWxlTG9jYXRvcj4ge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICd0ZW1wbGF0ZScsXG4gICAgbW9kdWxlLFxuICAgIG5hbWUsXG4gICAgbWV0YToge1xuICAgICAgbW9kdWxlLFxuICAgICAgbmFtZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQXBwQnVpbGRlcjxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPiB7XG4gIHJvb3ROYW1lOiBzdHJpbmc7XG4gIG1vZHVsZXM6IERpY3Q8dW5rbm93bj4gPSB7fTtcbiAgdGVtcGxhdGVzOiBEaWN0PHN0cmluZz4gPSB7fTtcbiAgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD47XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPikge1xuICAgIHRoaXMucm9vdE5hbWUgPSBuYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5tb2R1bGVzW1xuICAgICAgYGNvbXBvbmVudC1tYW5hZ2VyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudC1tYW5hZ2Vycy9tYWluYFxuICAgIF0gPSB0aGlzLm9wdGlvbnMuQ29tcG9uZW50TWFuYWdlcjtcbiAgICB0aGlzLnRlbXBsYXRlKCdNYWluJywgJzxkaXYgLz4nKTtcbiAgICB0aGlzLmhlbHBlcignYWN0aW9uJywgYnVpbGRBY3Rpb24sIHRydWUpO1xuICB9XG5cbiAgdGVtcGxhdGUobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbmFtZS5jaGFyQXQoMCkgPT09IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCksXG4gICAgICAndGVtcGxhdGUgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInXG4gICAgKTtcblxuICAgIGxldCBzcGVjaWZpZXIgPSBgdGVtcGxhdGU6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IHByZWNvbXBpbGUodGVtcGxhdGUsIHsgbWV0YTogeyBzcGVjaWZpZXIgfSB9KTtcbiAgICB0aGlzLnRlbXBsYXRlc1tzcGVjaWZpZXJdID0gdGVtcGxhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21wb25lbnQobmFtZTogc3RyaW5nLCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5KSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBjb21wb25lbnQ6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGNvbXBvbmVudEZhY3Rvcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nLCBoZWxwZXJGdW5jOiBIZWxwZXJGdW5jdGlvbiwgaXNGYWN0b3J5ID0gZmFsc2UpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGhlbHBlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIGhlbHBlckZ1bmMuaXNGYWN0b3J5ID0gaXNGYWN0b3J5O1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gaGVscGVyRnVuYztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlc29sdmVyKCk6IFJlc29sdmVyIHtcbiAgICBsZXQgcmVzb2x2ZXJDb25maWd1cmF0aW9uID0gdGhpcy5vcHRpb25zLnJlc29sdmVyQ29uZmlndXJhdGlvbiB8fCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICAgIHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgPSByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwIHx8IHtcbiAgICAgIG5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICB9O1xuXG4gICAgbGV0IHJlZ2lzdHJ5ID0gbmV3IEJhc2ljTW9kdWxlUmVnaXN0cnkodGhpcy5tb2R1bGVzKTtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVyKHJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk6IExvYWRlciB7XG4gICAgcmV0dXJuIG5ldyBSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyOiBSZXNvbHZlcikge1xuICAgIGxldCBkZWxlZ2F0ZSA9IG5ldyBDb21waWxlckRlbGVnYXRlKHJlc29sdmVyKTtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgQnVuZGxlQ29tcGlsZXIoZGVsZWdhdGUpO1xuXG4gICAgbGV0IG1haW5Mb2NhdG9yID0gbG9jYXRvckZvcigndGVtcGxhdGU6bWFpblRlbXBsYXRlJywgJ2RlZmF1bHQnKTtcbiAgICBtYWluTG9jYXRvci5tZXRhLm1vZHVsZSA9ICd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnO1xuXG4gICAgbGV0IGJsb2NrID0gSlNPTi5wYXJzZShtYWluVGVtcGxhdGUuYmxvY2spO1xuICAgIGxldCBjb21waWxhYmxlVGVtcGxhdGUgPSBjb21waWxhYmxlKHtcbiAgICAgIGJsb2NrLFxuICAgICAgcmVmZXJyZXI6IG1haW5Mb2NhdG9yLm1ldGEsXG4gICAgfSk7XG5cbiAgICBjb21waWxlci5hZGRDb21waWxhYmxlVGVtcGxhdGUobWFpbkxvY2F0b3IsIGNvbXBpbGFibGVUZW1wbGF0ZSk7XG5cbiAgICBmb3IgKGxldCBtb2R1bGUgaW4gdGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbXBpbGVyLmFkZFRlbXBsYXRlU291cmNlKGxvY2F0b3JGb3IobW9kdWxlLCAnZGVmYXVsdCcpLCB0aGlzLnRlbXBsYXRlc1ttb2R1bGVdKTtcbiAgICB9XG5cbiAgICBsZXQgeyBoZWFwLCBwb29sLCB0YWJsZSB9ID0gY29tcGlsZXIuY29tcGlsZSgpO1xuXG4gICAgbGV0IHJlc29sdmVyVGFibGU6IHVua25vd25bXSA9IFtdO1xuXG4gICAgbGV0IG1ldGE6IERpY3Q8TWV0YWRhdGE+ID0ge307XG5cbiAgICB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5mb3JFYWNoKCh2bUhhbmRsZSwgbG9jYXRvcikgPT4ge1xuICAgICAgbGV0IGhhbmRsZSA9IHRhYmxlLmJ5TW9kdWxlTG9jYXRvci5nZXQobG9jYXRvcik7XG4gICAgICBsZXQgdGVtcGxhdGUgPSBjb21waWxlci5nZXRUZW1wbGF0ZShsb2NhdG9yKTtcblxuICAgICAgbWV0YVtsb2NhdG9yLm1vZHVsZV0gPSB7XG4gICAgICAgIHY6IHZtSGFuZGxlLFxuICAgICAgICBoOiBoYW5kbGUsXG4gICAgICAgIHRhYmxlOiB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0YWJsZS5ieUhhbmRsZS5mb3JFYWNoKChsb2NhdG9yLCBoYW5kbGUpID0+IHtcbiAgICAgIGxldCBtb2R1bGUgPSBsb2NhdG9yLm1vZHVsZS5yZXBsYWNlKCd0ZW1wbGF0ZTovJywgJ2NvbXBvbmVudDovJyk7XG4gICAgICBpZiAodGhpcy5tb2R1bGVzW21vZHVsZV0pIHtcbiAgICAgICAgaWYgKG1vZHVsZS5pbmRleE9mKCdoZWxwZXI6JykgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gKHRoaXMubW9kdWxlc1ttb2R1bGVdIGFzIEhlbHBlckZ1bmN0aW9uKS5pc0ZhY3RvcnkgPyBNb2R1bGVUeXBlcy5IRUxQRVJfRkFDVE9SWSA6IE1vZHVsZVR5cGVzLkhFTFBFUjtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSBbbW9kdWxlVHlwZSwgdGhpcy5tb2R1bGVzW21vZHVsZV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYnl0ZWNvZGUgPSBoZWFwLmJ1ZmZlcjtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIHByZWZpeDogJycsXG4gICAgICBtYWluRW50cnk6IHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmdldChtYWluTG9jYXRvciksXG4gICAgICBwb29sLFxuICAgICAgdGFibGU6IHJlc29sdmVyVGFibGUsXG4gICAgICBtZXRhLFxuICAgICAgaGVhcDoge1xuICAgICAgICB0YWJsZTogaGVhcC50YWJsZSxcbiAgICAgICAgaGFuZGxlOiBoZWFwLmhhbmRsZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQnl0ZWNvZGVMb2FkZXIoeyBieXRlY29kZSwgZGF0YSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZExvYWRlcihyZXNvbHZlcik6IExvYWRlciB7XG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubG9hZGVyKSB7XG4gICAgICBjYXNlICdydW50aW1lLWNvbXBpbGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgICAgIGNhc2UgJ2J5dGVjb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsb2FkZXIgJHt0aGlzLm9wdGlvbnMubG9hZGVyfWApO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogRGljdDx1bmtub3duPiwgb3B0aW9ucz86IFRlc3RTU1JBcHBsaWNhdGlvbk9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgcmV0dXJuIFNTUkFwcGxpY2F0aW9uLnJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWUsIGRhdGEsIHtcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcmVzb2x2ZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcjogbmV3IFN5bmNSZW5kZXJlcigpLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYm9vdCgpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyOiBMb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIGxldCBkb2M6IERvY3VtZW50ID0gKHRoaXMub3B0aW9ucy5kb2N1bWVudCBhcyBEb2N1bWVudCkgfHwgZG9jdW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBkb2MuYm9keTtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKHsgZWxlbWVudCB9KTtcbiAgICBsZXQgcmVuZGVyZXIgPSBuZXcgU3luY1JlbmRlcmVyKCk7XG5cbiAgICBsZXQgYXBwID0gbmV3IHRoaXMub3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzKHtcbiAgICAgIHJlc29sdmVyLFxuICAgICAgYnVpbGRlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICBkb2N1bWVudDogdGhpcy5vcHRpb25zLmRvY3VtZW50LFxuICAgIH0pO1xuXG4gICAgbGV0IHJvb3RFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFwcC5yb290RWxlbWVudCA9IHJvb3RFbGVtZW50O1xuICAgIGFwcC5yZW5kZXJDb21wb25lbnQoJ01haW4nLCByb290RWxlbWVudCk7XG4gICAgYXBwLmJvb3QoKTtcblxuICAgIGF3YWl0IGRpZFJlbmRlcihhcHApO1xuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlckRlbGVnYXRlIGltcGxlbWVudHMgSUNvbXBpbGVyRGVsZWdhdGU8TW9kdWxlTG9jYXRvcj4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVzb2x2ZXI6IFJlc29sdmVyKSB7fVxuXG4gIGhhc0NvbXBvbmVudEluU2NvcGUobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUNvbXBvbmVudChuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBnZXRDb21wb25lbnRDYXBhYmlsaXRpZXMoKSB7XG4gICAgcmV0dXJuIENBUEFCSUxJVElFUztcbiAgfVxuXG4gIGhhc0hlbHBlckluU2NvcGUoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxJblNjb3BlKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZVBhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBoYXNNb2RpZmllckluU2NvcGUobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZU1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEFwcDxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPihvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPiA9IHt9KTogQXBwQnVpbGRlcjxUPiB7XG4gIG9wdGlvbnMuYXBwTmFtZSA9IG9wdGlvbnMuYXBwTmFtZSB8fCAndGVzdC1hcHAnO1xuICBvcHRpb25zLmxvYWRlciA9IG9wdGlvbnMubG9hZGVyIHx8ICdydW50aW1lLWNvbXBpbGVyJztcbiAgb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyID0gb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyIHx8IENvbXBvbmVudE1hbmFnZXI7XG4gIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyA9XG4gICAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzIHx8IChUZXN0QXBwbGljYXRpb24gYXMgQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPik7XG5cbiAgcmV0dXJuIG5ldyBBcHBCdWlsZGVyKG9wdGlvbnMuYXBwTmFtZSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCB7IGJ1aWxkQXBwIH07XG4iXSwic291cmNlUm9vdCI6IiJ9 |
import { precompile as glimmerPrecompile } from '@glimmer/compiler'; | ||
export function precompile(template, options) { | ||
return JSON.parse(glimmerPrecompile(template, options)); | ||
return JSON.parse(glimmerPrecompile(template, options)); | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxjQUFjLGlCQUF2QixRQUFtRSxtQkFBbkU7QUFPQSxPQUFNLFNBQVUsVUFBVixDQUNKLFFBREksRUFFSixPQUZJLEVBRXNCO0FBRTFCLFdBQU8sS0FBSyxLQUFMLENBQVcsa0JBQWtCLFFBQWxCLEVBQTRCLE9BQTVCLENBQVgsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJlY29tcGlsZSBhcyBnbGltbWVyUHJlY29tcGlsZSwgUHJlY29tcGlsZU9wdGlvbnMgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG5pbXBvcnQgeyBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbi8vIFJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIHRoZSBUZW1wbGF0ZU1ldGEgZGVmaW5pdGlvbiBmcm9tIEBnbGltbWVyL2NvbXBvbmVudCxcbi8vIHdoaWNoIGlzIG5vdCBhIGRlcGVuZGVuY3ksIGxldCdzIGJlIG1vcmUgcGVybWlzc2l2ZSBmb3IgdGhpcyB0ZXN0IGhlbHBlci5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlTWV0YSA9IGFueTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoXG4gIHRlbXBsYXRlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zXG4pOiBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrPFRlbXBsYXRlTWV0YT4ge1xuICByZXR1cm4gSlNPTi5wYXJzZShnbGltbWVyUHJlY29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucykpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxVQUFVLElBQUksaUJBQXZCLFFBQW1FLG1CQUFuRTtBQU9BLE9BQU0sU0FBVSxVQUFWLENBQ0osUUFESSxFQUVKLE9BRkksRUFFc0I7QUFFMUIsU0FBTyxJQUFJLENBQUMsS0FBTCxDQUFXLGlCQUFpQixDQUFDLFFBQUQsRUFBVyxPQUFYLENBQTVCLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByZWNvbXBpbGUgYXMgZ2xpbW1lclByZWNvbXBpbGUsIFByZWNvbXBpbGVPcHRpb25zIH0gZnJvbSAnQGdsaW1tZXIvY29tcGlsZXInO1xuaW1wb3J0IHsgU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG4vLyBSYXRoZXIgdGhhbiBkdXBsaWNhdGluZyB0aGUgVGVtcGxhdGVNZXRhIGRlZmluaXRpb24gZnJvbSBAZ2xpbW1lci9jb21wb25lbnQsXG4vLyB3aGljaCBpcyBub3QgYSBkZXBlbmRlbmN5LCBsZXQncyBiZSBtb3JlIHBlcm1pc3NpdmUgZm9yIHRoaXMgdGVzdCBoZWxwZXIuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZU1ldGEgPSBhbnk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9uc1xuKTogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazxUZW1wbGF0ZU1ldGE+IHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoZ2xpbW1lclByZWNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMpKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
var CONFIG = { | ||
types: { | ||
application: { definitiveCollection: 'main' }, | ||
component: { definitiveCollection: 'components' }, | ||
helper: { definitiveCollection: 'components' }, | ||
renderer: { definitiveCollection: 'main' }, | ||
template: { definitiveCollection: 'components' }, | ||
util: { definitiveCollection: 'utils' }, | ||
'component-manager': { definitiveCollection: 'component-managers' } | ||
types: { | ||
application: { | ||
definitiveCollection: 'main' | ||
}, | ||
collections: { | ||
main: { | ||
types: ['application', 'renderer'] | ||
}, | ||
components: { | ||
group: 'ui', | ||
types: ['component', 'template', 'helper'], | ||
defaultType: 'component' | ||
}, | ||
'component-managers': { | ||
types: ['component-manager'] | ||
}, | ||
utils: { | ||
unresolvable: true | ||
} | ||
component: { | ||
definitiveCollection: 'components' | ||
}, | ||
helper: { | ||
definitiveCollection: 'components' | ||
}, | ||
renderer: { | ||
definitiveCollection: 'main' | ||
}, | ||
template: { | ||
definitiveCollection: 'components' | ||
}, | ||
util: { | ||
definitiveCollection: 'utils' | ||
}, | ||
'component-manager': { | ||
definitiveCollection: 'component-managers' | ||
} | ||
}, | ||
collections: { | ||
main: { | ||
types: ['application', 'renderer'] | ||
}, | ||
components: { | ||
group: 'ui', | ||
types: ['component', 'template', 'helper'], | ||
defaultType: 'component' | ||
}, | ||
'component-managers': { | ||
types: ['component-manager'] | ||
}, | ||
utils: { | ||
unresolvable: true | ||
} | ||
} | ||
}; | ||
export default CONFIG; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLElBQU0sU0FBZ0M7QUFDcEMsV0FBTztBQUNMLHFCQUFhLEVBQUUsc0JBQXNCLE1BQXhCLEVBRFI7QUFFTCxtQkFBVyxFQUFFLHNCQUFzQixZQUF4QixFQUZOO0FBR0wsZ0JBQVEsRUFBRSxzQkFBc0IsWUFBeEIsRUFISDtBQUlMLGtCQUFVLEVBQUUsc0JBQXNCLE1BQXhCLEVBSkw7QUFLTCxrQkFBVSxFQUFFLHNCQUFzQixZQUF4QixFQUxMO0FBTUwsY0FBTSxFQUFFLHNCQUFzQixPQUF4QixFQU5EO0FBT0wsNkJBQXFCLEVBQUUsc0JBQXNCLG9CQUF4QjtBQVBoQixLQUQ2QjtBQVVwQyxpQkFBYTtBQUNYLGNBQU07QUFDSixtQkFBTyxDQUFDLGFBQUQsRUFBZ0IsVUFBaEI7QUFESCxTQURLO0FBSVgsb0JBQVk7QUFDVixtQkFBTyxJQURHO0FBRVYsbUJBQU8sQ0FBQyxXQUFELEVBQWMsVUFBZCxFQUEwQixRQUExQixDQUZHO0FBR1YseUJBQWE7QUFISCxTQUpEO0FBU1gsOEJBQXNCO0FBQ3BCLG1CQUFPLENBQUMsbUJBQUQ7QUFEYSxTQVRYO0FBWVgsZUFBTztBQUNMLDBCQUFjO0FBRFQ7QUFaSTtBQVZ1QixDQUF0QztBQTRCQSxlQUFlLE1BQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5cbmNvbnN0IENPTkZJRzogUmVzb2x2ZXJDb25maWd1cmF0aW9uID0ge1xuICB0eXBlczoge1xuICAgIGFwcGxpY2F0aW9uOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnbWFpbicgfSxcbiAgICBjb21wb25lbnQ6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdjb21wb25lbnRzJyB9LFxuICAgIGhlbHBlcjogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ2NvbXBvbmVudHMnIH0sXG4gICAgcmVuZGVyZXI6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdtYWluJyB9LFxuICAgIHRlbXBsYXRlOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnY29tcG9uZW50cycgfSxcbiAgICB1dGlsOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAndXRpbHMnIH0sXG4gICAgJ2NvbXBvbmVudC1tYW5hZ2VyJzogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ2NvbXBvbmVudC1tYW5hZ2VycycgfSxcbiAgfSxcbiAgY29sbGVjdGlvbnM6IHtcbiAgICBtYWluOiB7XG4gICAgICB0eXBlczogWydhcHBsaWNhdGlvbicsICdyZW5kZXJlciddLFxuICAgIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgZ3JvdXA6ICd1aScsXG4gICAgICB0eXBlczogWydjb21wb25lbnQnLCAndGVtcGxhdGUnLCAnaGVscGVyJ10sXG4gICAgICBkZWZhdWx0VHlwZTogJ2NvbXBvbmVudCcsXG4gICAgfSxcbiAgICAnY29tcG9uZW50LW1hbmFnZXJzJzoge1xuICAgICAgdHlwZXM6IFsnY29tcG9uZW50LW1hbmFnZXInXSxcbiAgICB9LFxuICAgIHV0aWxzOiB7XG4gICAgICB1bnJlc29sdmFibGU6IHRydWUsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENPTkZJRztcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLElBQU0sTUFBTSxHQUEwQjtBQUNwQyxFQUFBLEtBQUssRUFBRTtBQUNMLElBQUEsV0FBVyxFQUFFO0FBQUUsTUFBQSxvQkFBb0IsRUFBRTtBQUF4QixLQURSO0FBRUwsSUFBQSxTQUFTLEVBQUU7QUFBRSxNQUFBLG9CQUFvQixFQUFFO0FBQXhCLEtBRk47QUFHTCxJQUFBLE1BQU0sRUFBRTtBQUFFLE1BQUEsb0JBQW9CLEVBQUU7QUFBeEIsS0FISDtBQUlMLElBQUEsUUFBUSxFQUFFO0FBQUUsTUFBQSxvQkFBb0IsRUFBRTtBQUF4QixLQUpMO0FBS0wsSUFBQSxRQUFRLEVBQUU7QUFBRSxNQUFBLG9CQUFvQixFQUFFO0FBQXhCLEtBTEw7QUFNTCxJQUFBLElBQUksRUFBRTtBQUFFLE1BQUEsb0JBQW9CLEVBQUU7QUFBeEIsS0FORDtBQU9MLHlCQUFxQjtBQUFFLE1BQUEsb0JBQW9CLEVBQUU7QUFBeEI7QUFQaEIsR0FENkI7QUFVcEMsRUFBQSxXQUFXLEVBQUU7QUFDWCxJQUFBLElBQUksRUFBRTtBQUNKLE1BQUEsS0FBSyxFQUFFLENBQUMsYUFBRCxFQUFnQixVQUFoQjtBQURILEtBREs7QUFJWCxJQUFBLFVBQVUsRUFBRTtBQUNWLE1BQUEsS0FBSyxFQUFFLElBREc7QUFFVixNQUFBLEtBQUssRUFBRSxDQUFDLFdBQUQsRUFBYyxVQUFkLEVBQTBCLFFBQTFCLENBRkc7QUFHVixNQUFBLFdBQVcsRUFBRTtBQUhILEtBSkQ7QUFTWCwwQkFBc0I7QUFDcEIsTUFBQSxLQUFLLEVBQUUsQ0FBQyxtQkFBRDtBQURhLEtBVFg7QUFZWCxJQUFBLEtBQUssRUFBRTtBQUNMLE1BQUEsWUFBWSxFQUFFO0FBRFQ7QUFaSTtBQVZ1QixDQUF0QztBQTRCQSxlQUFlLE1BQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5cbmNvbnN0IENPTkZJRzogUmVzb2x2ZXJDb25maWd1cmF0aW9uID0ge1xuICB0eXBlczoge1xuICAgIGFwcGxpY2F0aW9uOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnbWFpbicgfSxcbiAgICBjb21wb25lbnQ6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdjb21wb25lbnRzJyB9LFxuICAgIGhlbHBlcjogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ2NvbXBvbmVudHMnIH0sXG4gICAgcmVuZGVyZXI6IHsgZGVmaW5pdGl2ZUNvbGxlY3Rpb246ICdtYWluJyB9LFxuICAgIHRlbXBsYXRlOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAnY29tcG9uZW50cycgfSxcbiAgICB1dGlsOiB7IGRlZmluaXRpdmVDb2xsZWN0aW9uOiAndXRpbHMnIH0sXG4gICAgJ2NvbXBvbmVudC1tYW5hZ2VyJzogeyBkZWZpbml0aXZlQ29sbGVjdGlvbjogJ2NvbXBvbmVudC1tYW5hZ2VycycgfSxcbiAgfSxcbiAgY29sbGVjdGlvbnM6IHtcbiAgICBtYWluOiB7XG4gICAgICB0eXBlczogWydhcHBsaWNhdGlvbicsICdyZW5kZXJlciddLFxuICAgIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgZ3JvdXA6ICd1aScsXG4gICAgICB0eXBlczogWydjb21wb25lbnQnLCAndGVtcGxhdGUnLCAnaGVscGVyJ10sXG4gICAgICBkZWZhdWx0VHlwZTogJ2NvbXBvbmVudCcsXG4gICAgfSxcbiAgICAnY29tcG9uZW50LW1hbmFnZXJzJzoge1xuICAgICAgdHlwZXM6IFsnY29tcG9uZW50LW1hbmFnZXInXSxcbiAgICB9LFxuICAgIHV0aWxzOiB7XG4gICAgICB1bnJlc29sdmFibGU6IHRydWUsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENPTkZJRztcbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -1,22 +0,25 @@ | ||
var didRender = function () { | ||
var _ref = _asyncToGenerator(function* (app) { | ||
return new Promise(function (resolve, reject) { | ||
// If the app is scheduled to re-render, or has not yet been rendered for | ||
// the first time, register to be notified when the next render completes. | ||
if (app['_scheduled'] || !app['_rendered']) { | ||
app['_notifiers'].push([resolve, reject]); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } | ||
return function didRender(_x) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
}(); | ||
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
function didRender(_x) { | ||
return _didRender.apply(this, arguments); | ||
} | ||
function _didRender() { | ||
_didRender = _asyncToGenerator(function* (app) { | ||
return new Promise(function (resolve, reject) { | ||
// If the app is scheduled to re-render, or has not yet been rendered for | ||
// the first time, register to be notified when the next render completes. | ||
if (app['_scheduled'] || !app['_rendered']) { | ||
app['_notifiers'].push([resolve, reject]); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
return _didRender.apply(this, arguments); | ||
} | ||
export default didRender; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGlkLXJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO2lDQUFBLFdBQXlCLEdBQXpCLEVBQWlDO0FBQy9CLGVBQU8sSUFBSSxPQUFKLENBQWtCLFVBQUMsT0FBRCxFQUFVLE1BQVYsRUFBb0I7QUFDM0M7QUFDQTtBQUNBLGdCQUFJLElBQUksWUFBSixLQUFxQixDQUFDLElBQUksV0FBSixDQUExQixFQUE0QztBQUMxQyxvQkFBSSxZQUFKLEVBQWtCLElBQWxCLENBQXVCLENBQUMsT0FBRCxFQUFVLE1BQVYsQ0FBdkI7QUFDRCxhQUZELE1BRU87QUFDTDtBQUNEO0FBQ0YsU0FSTSxDQUFQO0FBU0QsSzs7b0JBVmMsUzs7Ozs7OztBQVlmLGVBQWUsU0FBZiIsInNvdXJjZXNDb250ZW50IjpbImFzeW5jIGZ1bmN0aW9uIGRpZFJlbmRlcihhcHA6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIElmIHRoZSBhcHAgaXMgc2NoZWR1bGVkIHRvIHJlLXJlbmRlciwgb3IgaGFzIG5vdCB5ZXQgYmVlbiByZW5kZXJlZCBmb3JcbiAgICAvLyB0aGUgZmlyc3QgdGltZSwgcmVnaXN0ZXIgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgbmV4dCByZW5kZXIgY29tcGxldGVzLlxuICAgIGlmIChhcHBbJ19zY2hlZHVsZWQnXSB8fCAhYXBwWydfcmVuZGVyZWQnXSkge1xuICAgICAgYXBwWydfbm90aWZpZXJzJ10ucHVzaChbcmVzb2x2ZSwgcmVqZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkaWRSZW5kZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvZGlkLXJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O1NBQWUsUzs7Ozs7aUNBQWYsV0FBeUIsR0FBekIsRUFBaUM7QUFDL0IsV0FBTyxJQUFJLE9BQUosQ0FBa0IsVUFBQyxPQUFELEVBQVUsTUFBVixFQUFvQjtBQUMzQztBQUNBO0FBQ0EsVUFBSSxHQUFHLENBQUMsWUFBRCxDQUFILElBQXFCLENBQUMsR0FBRyxDQUFDLFdBQUQsQ0FBN0IsRUFBNEM7QUFDMUMsUUFBQSxHQUFHLENBQUMsWUFBRCxDQUFILENBQWtCLElBQWxCLENBQXVCLENBQUMsT0FBRCxFQUFVLE1BQVYsQ0FBdkI7QUFDRCxPQUZELE1BRU87QUFDTCxRQUFBLE9BQU87QUFDUjtBQUNGLEtBUk0sQ0FBUDtBQVNELEc7Ozs7QUFFRCxlQUFlLFNBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJhc3luYyBmdW5jdGlvbiBkaWRSZW5kZXIoYXBwOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyBJZiB0aGUgYXBwIGlzIHNjaGVkdWxlZCB0byByZS1yZW5kZXIsIG9yIGhhcyBub3QgeWV0IGJlZW4gcmVuZGVyZWQgZm9yXG4gICAgLy8gdGhlIGZpcnN0IHRpbWUsIHJlZ2lzdGVyIHRvIGJlIG5vdGlmaWVkIHdoZW4gdGhlIG5leHQgcmVuZGVyIGNvbXBsZXRlcy5cbiAgICBpZiAoYXBwWydfc2NoZWR1bGVkJ10gfHwgIWFwcFsnX3JlbmRlcmVkJ10pIHtcbiAgICAgIGFwcFsnX25vdGlmaWVycyddLnB1c2goW3Jlc29sdmUsIHJlamVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGlkUmVuZGVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== |
@@ -1,56 +0,64 @@ | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
import { buildApp } from './app-builder'; | ||
import { DEBUG } from '@glimmer/env'; | ||
export function renderModule(name, renderTest) { | ||
QUnit.module(name); | ||
QUnit.module(name); | ||
var _loop = function _loop(prop) { | ||
var test = renderTest.prototype[prop]; | ||
if (isTestFunction(test) && shouldRun(test)) { | ||
['runtime-compiler', 'bytecode'].forEach(function (loader) { | ||
var app = buildApp({ loader: loader }); | ||
QUnit.test('[' + loader + '] ' + prop, function (assert) { | ||
return test.call({ app: app }, assert); | ||
}); | ||
}); | ||
} | ||
}; | ||
var _loop = function _loop(prop) { | ||
var test = renderTest.prototype[prop]; | ||
for (var prop in renderTest.prototype) { | ||
_loop(prop); | ||
if (isTestFunction(test) && shouldRun(test)) { | ||
['runtime-compiler', 'bytecode'].forEach(function (loader) { | ||
var app = buildApp({ | ||
loader: loader | ||
}); | ||
QUnit.test("[" + loader + "] " + prop, function (assert) { | ||
return test.call({ | ||
app: app | ||
}, assert); | ||
}); | ||
}); | ||
} | ||
}; | ||
for (var prop in renderTest.prototype) { | ||
_loop(prop); | ||
} | ||
} | ||
function shouldRun(testFunc) { | ||
if (testFunc['debug'] && !DEBUG) { | ||
return false; | ||
} | ||
return true; | ||
if (testFunc['debug'] && !DEBUG) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
function isTestFunction(value) { | ||
return typeof value === 'function' && value.isTest; | ||
return typeof value === 'function' && value.isTest; | ||
} | ||
export var RenderTest = function RenderTest() { | ||
_classCallCheck(this, RenderTest); | ||
}; | ||
export var RenderTest = function RenderTest() {}; | ||
function setTestingDescriptor(descriptor) { | ||
var testFunction = descriptor.value; | ||
descriptor.enumerable = true; | ||
testFunction['isTest'] = true; | ||
var testFunction = descriptor.value; | ||
descriptor.enumerable = true; | ||
testFunction['isTest'] = true; | ||
} | ||
export function test() { | ||
if (arguments.length === 1) { | ||
var meta = arguments.length <= 0 ? undefined : arguments[0]; | ||
return function (_target, _name, descriptor) { | ||
var testFunction = descriptor.value; | ||
Object.keys(meta).forEach(function (key) { | ||
return testFunction[key] = meta[key]; | ||
}); | ||
setTestingDescriptor(descriptor); | ||
}; | ||
} | ||
var descriptor = arguments.length <= 2 ? undefined : arguments[2]; | ||
setTestingDescriptor(descriptor); | ||
return descriptor; | ||
if (arguments.length === 1) { | ||
var meta = arguments.length <= 0 ? undefined : arguments[0]; | ||
return function (_target, _name, descriptor) { | ||
var testFunction = descriptor.value; | ||
Object.keys(meta).forEach(function (key) { | ||
return testFunction[key] = meta[key]; | ||
}); | ||
setTestingDescriptor(descriptor); | ||
}; | ||
} | ||
var descriptor = arguments.length <= 2 ? undefined : arguments[2]; | ||
setTestingDescriptor(descriptor); | ||
return descriptor; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvcmVuZGVyLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTLFFBQVQsUUFBc0QsZUFBdEQ7QUFDQSxTQUFTLEtBQVQsUUFBc0IsY0FBdEI7QUFNQSxPQUFNLFNBQVUsWUFBVixDQUF1QixJQUF2QixFQUFxQyxVQUFyQyxFQUF3RTtBQUM1RSxVQUFNLE1BQU4sQ0FBYSxJQUFiOztBQUQ0RSwrQkFHbkUsSUFIbUU7QUFJMUUsWUFBTSxPQUFPLFdBQVcsU0FBWCxDQUFxQixJQUFyQixDQUFiO0FBRUEsWUFBSSxlQUFlLElBQWYsS0FBd0IsVUFBVSxJQUFWLENBQTVCLEVBQTZDO0FBQzNDLGFBQUMsa0JBQUQsRUFBcUIsVUFBckIsRUFBaUMsT0FBakMsQ0FBeUMsa0JBQVM7QUFDaEQsb0JBQUksTUFBTSxTQUFTLEVBQUUsY0FBRixFQUFULENBQVY7QUFDQSxzQkFBTSxJQUFOLE9BQWUsTUFBZixVQUEwQixJQUExQixFQUFrQztBQUFBLDJCQUFVLEtBQUssSUFBTCxDQUFVLEVBQUUsUUFBRixFQUFWLEVBQW1CLE1BQW5CLENBQVY7QUFBQSxpQkFBbEM7QUFDRCxhQUhEO0FBSUQ7QUFYeUU7O0FBRzVFLFNBQUssSUFBSSxJQUFULElBQWlCLFdBQVcsU0FBNUIsRUFBdUM7QUFBQSxjQUE5QixJQUE4QjtBQVN0QztBQUNGO0FBRUQsU0FBUyxTQUFULENBQW1CLFFBQW5CLEVBQWdDO0FBQzlCLFFBQUksU0FBUyxPQUFULEtBQXFCLENBQUMsS0FBMUIsRUFBaUM7QUFDL0IsZUFBTyxLQUFQO0FBQ0Q7QUFDRCxXQUFPLElBQVA7QUFDRDtBQUVELFNBQVMsY0FBVCxDQUNFLEtBREYsRUFDWTtBQUVWLFdBQU8sT0FBTyxLQUFQLEtBQWlCLFVBQWpCLElBQStCLE1BQU0sTUFBNUM7QUFDRDtBQUVELFdBQWEsVUFBYjtBQUFBO0FBQUE7QUFJQSxTQUFTLG9CQUFULENBQThCLFVBQTlCLEVBQTREO0FBQzFELFFBQUksZUFBNkIsV0FBVyxLQUE1QztBQUNBLGVBQVcsVUFBWCxHQUF3QixJQUF4QjtBQUNBLGlCQUFhLFFBQWIsSUFBeUIsSUFBekI7QUFDRDtBQWlCRCxPQUFNLFNBQVUsSUFBVixHQUE2QjtBQUNqQyxRQUFJLFVBQUssTUFBTCxLQUFnQixDQUFwQixFQUF1QjtBQUNyQixZQUFJLHVEQUFKO0FBQ0EsZUFBTyxVQUFDLE9BQUQsRUFBa0IsS0FBbEIsRUFBaUMsVUFBakMsRUFBbUU7QUFDeEUsZ0JBQUksZUFBNkIsV0FBVyxLQUE1QztBQUNBLG1CQUFPLElBQVAsQ0FBWSxJQUFaLEVBQWtCLE9BQWxCLENBQTBCO0FBQUEsdUJBQVEsYUFBYSxHQUFiLElBQW9CLEtBQUssR0FBTCxDQUE1QjtBQUFBLGFBQTFCO0FBQ0EsaUNBQXFCLFVBQXJCO0FBQ0QsU0FKRDtBQUtEO0FBRUQsUUFBSSw2REFBSjtBQUNBLHlCQUFxQixVQUFyQjtBQUNBLFdBQU8sVUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnVpbGRBcHAsIFRlc3RBcHBsaWNhdGlvbiwgQXBwQnVpbGRlciB9IGZyb20gJy4vYXBwLWJ1aWxkZXInO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdG9yPFQ+IHtcbiAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJNb2R1bGUobmFtZTogc3RyaW5nLCByZW5kZXJUZXN0OiBDb25zdHJ1Y3RvcjxSZW5kZXJUZXN0Pikge1xuICBRVW5pdC5tb2R1bGUobmFtZSk7XG5cbiAgZm9yIChsZXQgcHJvcCBpbiByZW5kZXJUZXN0LnByb3RvdHlwZSkge1xuICAgIGNvbnN0IHRlc3QgPSByZW5kZXJUZXN0LnByb3RvdHlwZVtwcm9wXTtcblxuICAgIGlmIChpc1Rlc3RGdW5jdGlvbih0ZXN0KSAmJiBzaG91bGRSdW4odGVzdCkpIHtcbiAgICAgIFsncnVudGltZS1jb21waWxlcicsICdieXRlY29kZSddLmZvckVhY2gobG9hZGVyID0+IHtcbiAgICAgICAgbGV0IGFwcCA9IGJ1aWxkQXBwKHsgbG9hZGVyIH0pO1xuICAgICAgICBRVW5pdC50ZXN0KGBbJHtsb2FkZXJ9XSAke3Byb3B9YCwgYXNzZXJ0ID0+IHRlc3QuY2FsbCh7IGFwcCB9LCBhc3NlcnQpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRSdW4odGVzdEZ1bmM6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodGVzdEZ1bmNbJ2RlYnVnJ10gJiYgIURFQlVHKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc1Rlc3RGdW5jdGlvbihcbiAgdmFsdWU6IGFueVxuKTogdmFsdWUgaXMgKHRoaXM6IFJlbmRlclRlc3QsIGFzc2VydDogdHlwZW9mIFFVbml0LmFzc2VydCkgPT4gdm9pZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdmFsdWUuaXNUZXN0O1xufVxuXG5leHBvcnQgY2xhc3MgUmVuZGVyVGVzdCB7XG4gIGFwcDogQXBwQnVpbGRlcjxUZXN0QXBwbGljYXRpb24+O1xufVxuXG5mdW5jdGlvbiBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpOiB2b2lkIHtcbiAgbGV0IHRlc3RGdW5jdGlvbjogVGVzdEZ1bmN0aW9uID0gZGVzY3JpcHRvci52YWx1ZSBhcyBUZXN0RnVuY3Rpb247XG4gIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG4gIHRlc3RGdW5jdGlvblsnaXNUZXN0J10gPSB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RNZXRhIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xuICBkZWJ1Zz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdEZ1bmN0aW9uIHtcbiAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobWV0YTogVGVzdE1ldGEpOiBNZXRob2REZWNvcmF0b3I7XG5leHBvcnQgZnVuY3Rpb24gdGVzdChcbiAgX3RhcmdldDogT2JqZWN0IHwgVGVzdE1ldGEsXG4gIF9uYW1lPzogc3RyaW5nLFxuICBkZXNjcmlwdG9yPzogUHJvcGVydHlEZXNjcmlwdG9yXG4pOiBQcm9wZXJ0eURlc2NyaXB0b3IgfCB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QoLi4uYXJnczogYW55W10pIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IG1ldGE6IFRlc3RNZXRhID0gYXJnc1swXTtcbiAgICByZXR1cm4gKF90YXJnZXQ6IE9iamVjdCwgX25hbWU6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgICBsZXQgdGVzdEZ1bmN0aW9uOiBUZXN0RnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlIGFzIFRlc3RGdW5jdGlvbjtcbiAgICAgIE9iamVjdC5rZXlzKG1ldGEpLmZvckVhY2goa2V5ID0+ICh0ZXN0RnVuY3Rpb25ba2V5XSA9IG1ldGFba2V5XSkpO1xuICAgICAgc2V0VGVzdGluZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgfTtcbiAgfVxuXG4gIGxldCBkZXNjcmlwdG9yID0gYXJnc1syXTtcbiAgc2V0VGVzdGluZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gIHJldHVybiBkZXNjcmlwdG9yO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvcmVuZGVyLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxRQUFULFFBQXNELGVBQXREO0FBQ0EsU0FBUyxLQUFULFFBQXNCLGNBQXRCO0FBTUEsT0FBTSxTQUFVLFlBQVYsQ0FBdUIsSUFBdkIsRUFBcUMsVUFBckMsRUFBd0U7QUFDNUUsRUFBQSxLQUFLLENBQUMsTUFBTixDQUFhLElBQWI7O0FBRDRFLDZCQUduRSxJQUhtRTtBQUkxRSxRQUFNLElBQUksR0FBRyxVQUFVLENBQUMsU0FBWCxDQUFxQixJQUFyQixDQUFiOztBQUVBLFFBQUksY0FBYyxDQUFDLElBQUQsQ0FBZCxJQUF3QixTQUFTLENBQUMsSUFBRCxDQUFyQyxFQUE2QztBQUMzQyxPQUFDLGtCQUFELEVBQXFCLFVBQXJCLEVBQWlDLE9BQWpDLENBQXlDLFVBQUEsTUFBTSxFQUFHO0FBQ2hELFlBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQztBQUFFLFVBQUEsTUFBTSxFQUFOO0FBQUYsU0FBRCxDQUFsQjtBQUNBLFFBQUEsS0FBSyxDQUFDLElBQU4sT0FBZSxNQUFmLFVBQTBCLElBQTFCLEVBQWtDLFVBQUEsTUFBTTtBQUFBLGlCQUFJLElBQUksQ0FBQyxJQUFMLENBQVU7QUFBRSxZQUFBLEdBQUcsRUFBSDtBQUFGLFdBQVYsRUFBbUIsTUFBbkIsQ0FBSjtBQUFBLFNBQXhDO0FBQ0QsT0FIRDtBQUlEO0FBWHlFOztBQUc1RSxPQUFLLElBQUksSUFBVCxJQUFpQixVQUFVLENBQUMsU0FBNUIsRUFBdUM7QUFBQSxVQUE5QixJQUE4QjtBQVN0QztBQUNGOztBQUVELFNBQVMsU0FBVCxDQUFtQixRQUFuQixFQUFnQztBQUM5QixNQUFJLFFBQVEsQ0FBQyxPQUFELENBQVIsSUFBcUIsQ0FBQyxLQUExQixFQUFpQztBQUMvQixXQUFPLEtBQVA7QUFDRDs7QUFDRCxTQUFPLElBQVA7QUFDRDs7QUFFRCxTQUFTLGNBQVQsQ0FDRSxLQURGLEVBQ1k7QUFFVixTQUFPLE9BQU8sS0FBUCxLQUFpQixVQUFqQixJQUErQixLQUFLLENBQUMsTUFBNUM7QUFDRDs7QUFFRCxXQUFhLFVBQWI7O0FBSUEsU0FBUyxvQkFBVCxDQUE4QixVQUE5QixFQUE0RDtBQUMxRCxNQUFJLFlBQVksR0FBaUIsVUFBVSxDQUFDLEtBQTVDO0FBQ0EsRUFBQSxVQUFVLENBQUMsVUFBWCxHQUF3QixJQUF4QjtBQUNBLEVBQUEsWUFBWSxDQUFDLFFBQUQsQ0FBWixHQUF5QixJQUF6QjtBQUNEOztBQWlCRCxPQUFNLFNBQVUsSUFBVixHQUE2QjtBQUNqQyxNQUFJLFVBQUssTUFBTCxLQUFnQixDQUFwQixFQUF1QjtBQUNyQixRQUFJLElBQUksbURBQVI7QUFDQSxXQUFPLFVBQUMsT0FBRCxFQUFrQixLQUFsQixFQUFpQyxVQUFqQyxFQUFtRTtBQUN4RSxVQUFJLFlBQVksR0FBaUIsVUFBVSxDQUFDLEtBQTVDO0FBQ0EsTUFBQSxNQUFNLENBQUMsSUFBUCxDQUFZLElBQVosRUFBa0IsT0FBbEIsQ0FBMEIsVUFBQSxHQUFHO0FBQUEsZUFBSyxZQUFZLENBQUMsR0FBRCxDQUFaLEdBQW9CLElBQUksQ0FBQyxHQUFELENBQTdCO0FBQUEsT0FBN0I7QUFDQSxNQUFBLG9CQUFvQixDQUFDLFVBQUQsQ0FBcEI7QUFDRCxLQUpEO0FBS0Q7O0FBRUQsTUFBSSxVQUFVLG1EQUFkO0FBQ0EsRUFBQSxvQkFBb0IsQ0FBQyxVQUFELENBQXBCO0FBQ0EsU0FBTyxVQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZEFwcCwgVGVzdEFwcGxpY2F0aW9uLCBBcHBCdWlsZGVyIH0gZnJvbSAnLi9hcHAtYnVpbGRlcic7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3I8VD4ge1xuICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1vZHVsZShuYW1lOiBzdHJpbmcsIHJlbmRlclRlc3Q6IENvbnN0cnVjdG9yPFJlbmRlclRlc3Q+KSB7XG4gIFFVbml0Lm1vZHVsZShuYW1lKTtcblxuICBmb3IgKGxldCBwcm9wIGluIHJlbmRlclRlc3QucHJvdG90eXBlKSB7XG4gICAgY29uc3QgdGVzdCA9IHJlbmRlclRlc3QucHJvdG90eXBlW3Byb3BdO1xuXG4gICAgaWYgKGlzVGVzdEZ1bmN0aW9uKHRlc3QpICYmIHNob3VsZFJ1bih0ZXN0KSkge1xuICAgICAgWydydW50aW1lLWNvbXBpbGVyJywgJ2J5dGVjb2RlJ10uZm9yRWFjaChsb2FkZXIgPT4ge1xuICAgICAgICBsZXQgYXBwID0gYnVpbGRBcHAoeyBsb2FkZXIgfSk7XG4gICAgICAgIFFVbml0LnRlc3QoYFske2xvYWRlcn1dICR7cHJvcH1gLCBhc3NlcnQgPT4gdGVzdC5jYWxsKHsgYXBwIH0sIGFzc2VydCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZFJ1bih0ZXN0RnVuYzogYW55KTogYm9vbGVhbiB7XG4gIGlmICh0ZXN0RnVuY1snZGVidWcnXSAmJiAhREVCVUcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzVGVzdEZ1bmN0aW9uKFxuICB2YWx1ZTogYW55XG4pOiB2YWx1ZSBpcyAodGhpczogUmVuZGVyVGVzdCwgYXNzZXJ0OiB0eXBlb2YgUVVuaXQuYXNzZXJ0KSA9PiB2b2lkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWx1ZS5pc1Rlc3Q7XG59XG5cbmV4cG9ydCBjbGFzcyBSZW5kZXJUZXN0IHtcbiAgYXBwOiBBcHBCdWlsZGVyPFRlc3RBcHBsaWNhdGlvbj47XG59XG5cbmZ1bmN0aW9uIHNldFRlc3RpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IHZvaWQge1xuICBsZXQgdGVzdEZ1bmN0aW9uOiBUZXN0RnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlIGFzIFRlc3RGdW5jdGlvbjtcbiAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgdGVzdEZ1bmN0aW9uWydpc1Rlc3QnXSA9IHRydWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE1ldGEge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIGRlYnVnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0RnVuY3Rpb24ge1xuICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdChtZXRhOiBUZXN0TWV0YSk6IE1ldGhvZERlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KFxuICBfdGFyZ2V0OiBPYmplY3QgfCBUZXN0TWV0YSxcbiAgX25hbWU/OiBzdHJpbmcsXG4gIGRlc2NyaXB0b3I/OiBQcm9wZXJ0eURlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB8IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gdGVzdCguLi5hcmdzOiBhbnlbXSkge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICBsZXQgbWV0YTogVGVzdE1ldGEgPSBhcmdzWzBdO1xuICAgIHJldHVybiAoX3RhcmdldDogT2JqZWN0LCBfbmFtZTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICAgIGxldCB0ZXN0RnVuY3Rpb246IFRlc3RGdW5jdGlvbiA9IGRlc2NyaXB0b3IudmFsdWUgYXMgVGVzdEZ1bmN0aW9uO1xuICAgICAgT2JqZWN0LmtleXMobWV0YSkuZm9yRWFjaChrZXkgPT4gKHRlc3RGdW5jdGlvbltrZXldID0gbWV0YVtrZXldKSk7XG4gICAgICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgICB9O1xuICB9XG5cbiAgbGV0IGRlc2NyaXB0b3IgPSBhcmdzWzJdO1xuICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3I7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
{ | ||
"name": "@glimmer/application-test-helpers", | ||
"version": "0.14.0-alpha.10", | ||
"version": "0.14.0-alpha.11", | ||
"description": "Test helpers for developing @glimmer/component and @glimmer/application", | ||
@@ -5,0 +5,0 @@ "contributors": [ |
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
193849
33
1686
1