diff --git a/package.json b/package.json index df115f9947c..181f18c8119 100644 --- a/package.json +++ b/package.json @@ -89,14 +89,14 @@ "@babel/plugin-transform-shorthand-properties": "^7.2.0", "@babel/plugin-transform-spread": "^7.2.2", "@babel/plugin-transform-template-literals": "^7.2.0", - "@glimmer/compiler": "^0.37.1", + "@glimmer/compiler": "^0.38.1", "@glimmer/env": "^0.1.7", - "@glimmer/interfaces": "^0.37.1", - "@glimmer/node": "^0.37.1", - "@glimmer/opcode-compiler": "^0.37.1", - "@glimmer/program": "^0.37.1", - "@glimmer/reference": "^0.37.1", - "@glimmer/runtime": "^0.37.1", + "@glimmer/interfaces": "^0.38.1", + "@glimmer/node": "^0.38.1", + "@glimmer/opcode-compiler": "^0.38.1", + "@glimmer/program": "^0.38.1", + "@glimmer/reference": "^0.38.1", + "@glimmer/runtime": "^0.38.1", "@types/qunit": "^2.5.4", "@types/rsvp": "^4.0.2", "auto-dist-tag": "^1.0.0", @@ -115,7 +115,7 @@ "broccoli-rollup": "^2.1.1", "broccoli-source": "^1.1.0", "broccoli-string-replace": "^0.1.2", - "broccoli-typescript-compiler": "^4.0.1", + "broccoli-typescript-compiler": "^4.1.0", "broccoli-uglify-sourcemap": "^2.2.0", "common-tags": "^1.8.0", "core-js": "^2.6.5", diff --git a/packages/@ember/-internals/glimmer/lib/helpers/loc.ts b/packages/@ember/-internals/glimmer/lib/helpers/loc.ts index 905c08cdaf9..310c090c209 100644 --- a/packages/@ember/-internals/glimmer/lib/helpers/loc.ts +++ b/packages/@ember/-internals/glimmer/lib/helpers/loc.ts @@ -38,5 +38,5 @@ import { helper } from '../helper'; @public */ export default helper(function(params) { - return loc.apply(null, params); + return loc.apply(null, params as any /* let the other side handle errors */); }); diff --git a/packages/@ember/-internals/glimmer/lib/utils/references.ts b/packages/@ember/-internals/glimmer/lib/utils/references.ts index 098b85b675e..10576fc5e09 100644 --- a/packages/@ember/-internals/glimmer/lib/utils/references.ts +++ b/packages/@ember/-internals/glimmer/lib/utils/references.ts @@ -21,7 +21,7 @@ import { ConditionalReference as GlimmerConditionalReference, PrimitiveReference, } from '@glimmer/runtime'; -import { Option } from '@glimmer/util'; +import { Option, unreachable } from '@glimmer/util'; import { HelperFunction, HelperInstance, RECOMPUTE_TAG } from '../helper'; import emberToBool from './to-bool'; @@ -481,14 +481,56 @@ export function referenceFromParts( return reference; } +type Primitive = undefined | null | boolean | number | string; + +function isObject(value: Opaque): value is object { + return value !== null && typeof value === 'object'; +} + +function isFunction(value: Opaque): value is Function { + return typeof value === 'function'; +} + +function isPrimitive(value: Opaque): value is Primitive { + if (DEBUG) { + let type = typeof value; + return ( + value === undefined || + value === null || + type === 'boolean' || + type === 'number' || + type === 'string' + ); + } else { + return true; + } +} + export function valueToRef(value: T, bound = true): VersionedPathReference { - if (value !== null && typeof value === 'object') { + if (isObject(value)) { // root of interop with ember objects return bound ? new RootReference(value) : new UnboundReference(value); - } - // ember doesn't do observing with functions - if (typeof value === 'function') { + } else if (isFunction(value)) { + // ember doesn't do observing with functions return new UnboundReference(value); + } else if (isPrimitive(value)) { + return PrimitiveReference.create(value); + } else if (DEBUG) { + let type = typeof value; + let output: Option; + + try { + output = String(value); + } catch (e) { + output = null; + } + + if (output) { + throw unreachable(`[BUG] Unexpected ${type} (${output})`); + } else { + throw unreachable(`[BUG] Unexpected ${type}`); + } + } else { + throw unreachable(); } - return PrimitiveReference.create(value); } diff --git a/packages/@ember/-internals/glimmer/lib/utils/serialization-first-node-helpers.ts b/packages/@ember/-internals/glimmer/lib/utils/serialization-first-node-helpers.ts index 15467280a84..57d23ea7e86 100644 --- a/packages/@ember/-internals/glimmer/lib/utils/serialization-first-node-helpers.ts +++ b/packages/@ember/-internals/glimmer/lib/utils/serialization-first-node-helpers.ts @@ -1 +1 @@ -export { isSerializationFirstNode } from '@glimmer/util'; +export { isSerializationFirstNode } from '@glimmer/runtime'; diff --git a/packages/@ember/-internals/metal/lib/computed.ts b/packages/@ember/-internals/metal/lib/computed.ts index 9b9b50dc03a..4bcda19132d 100644 --- a/packages/@ember/-internals/metal/lib/computed.ts +++ b/packages/@ember/-internals/metal/lib/computed.ts @@ -23,7 +23,7 @@ import { tagForProperty, update } from './tags'; import { getCurrentTracker, setCurrentTracker } from './tracked'; export type ComputedPropertyGetter = (keyName: string) => any; -export type ComputedPropertySetter = (keyName: string, value: any) => any; +export type ComputedPropertySetter = (keyName: string, value: any, cachedValue?: any) => any; export interface ComputedPropertyGetterAndSetter { get?: ComputedPropertyGetter; diff --git a/packages/@ember/-internals/metal/lib/transaction.ts b/packages/@ember/-internals/metal/lib/transaction.ts index bca99055a78..8279f8e1008 100644 --- a/packages/@ember/-internals/metal/lib/transaction.ts +++ b/packages/@ember/-internals/metal/lib/transaction.ts @@ -170,9 +170,9 @@ if (DEBUG) { let runner = new TransactionRunner(); - runInTransaction = runner.runInTransaction.bind(runner); - didRender = runner.didRender.bind(runner); - assertNotRendered = runner.assertNotRendered.bind(runner); + runInTransaction = (...args) => runner.runInTransaction(...args); + didRender = (...args) => runner.didRender(...args); + assertNotRendered = (...args) => runner.assertNotRendered(...args); } else { // in production do nothing to detect reflushes runInTransaction = >(context: T, methodName: K) => { diff --git a/packages/@ember/-internals/routing/lib/location/auto_location.ts b/packages/@ember/-internals/routing/lib/location/auto_location.ts index 97139b16f3b..2a02d7a6e80 100644 --- a/packages/@ember/-internals/routing/lib/location/auto_location.ts +++ b/packages/@ember/-internals/routing/lib/location/auto_location.ts @@ -243,7 +243,7 @@ function detectImplementation(options: DetectionOptions) { if (currentPath === historyPath) { implementation = 'history'; } else if (currentPath.substr(0, 2) === '/#') { - history!.replaceState({ path: historyPath }, undefined, historyPath); + history!.replaceState({ path: historyPath }, '', historyPath); implementation = 'history'; } else { cancelRouterSetup = true; diff --git a/packages/@ember/-internals/routing/lib/system/dsl.ts b/packages/@ember/-internals/routing/lib/system/dsl.ts index 9ae610aa4a7..06ea29175a3 100644 --- a/packages/@ember/-internals/routing/lib/system/dsl.ts +++ b/packages/@ember/-internals/routing/lib/system/dsl.ts @@ -1,58 +1,96 @@ import { Factory } from '@ember/-internals/owner'; import { assert } from '@ember/debug'; import { assign } from '@ember/polyfills'; +import { Option } from '@glimmer/interfaces'; import { MatchCallback } from 'route-recognizer'; import { EngineInfo, EngineRouteInfo } from './engines'; let uuid = 0; -interface DSLOptions { - enableLoadingSubstates: boolean; - overrideNameAssertion?: boolean; - engineInfo?: EngineInfo; - addRouteForEngine(name: string, routeOptions: EngineRouteInfo): void; - resolveRouteMap(name: string): Factory; - path?: string; -} - -interface RouteOptions { +export interface RouteOptions { path?: string; resetNamespace?: boolean; serialize?: any; overrideNameAssertion?: boolean; } -interface MountOptions { +export interface MountOptions { path?: string; as?: string; resetNamespace?: boolean; } -class DSL { +export interface DSLCallback { + (this: DSL): void; +} + +export interface DSL { + route(name: string): void; + route(name: string, callback: DSLCallback): void; + route(name: string, options: RouteOptions): void; + route(name: string, options: RouteOptions, callback: DSLCallback): void; + + mount(name: string): void; + mount(name: string, options: MountOptions): void; +} + +function isCallback(value?: RouteOptions | DSLCallback): value is DSLCallback { + return typeof value === 'function'; +} + +function isOptions(value?: RouteOptions | DSLCallback): value is RouteOptions { + return value !== null && typeof value === 'object'; +} +export interface DSLImplOptions { + enableLoadingSubstates: boolean; + overrideNameAssertion?: boolean; + engineInfo?: EngineInfo; + addRouteForEngine(name: string, routeOptions: EngineRouteInfo): void; + resolveRouteMap(name: string): Factory; + path?: string; +} + +export default class DSLImpl implements DSL { parent: string | null; matches: any[]; enableLoadingSubstates: boolean; explicitIndex = false; - options: DSLOptions; + options: DSLImplOptions; - constructor(name: string | null = null, options: DSLOptions) { + constructor(name: string | null = null, options: DSLImplOptions) { this.parent = name; this.enableLoadingSubstates = Boolean(options && options.enableLoadingSubstates); this.matches = []; this.options = options; } - route(name: string, options: any = {}, callback?: MatchCallback) { + /* eslint-disable no-dupe-class-members */ + route(name: string): void; + route(name: string, callback: DSLCallback): void; + route(name: string, options: RouteOptions): void; + route(name: string, options: RouteOptions, callback: DSLCallback): void; + route(name: string, _options?: RouteOptions | DSLCallback, _callback?: DSLCallback) { + let options: RouteOptions; + let callback: Option = null; + let dummyErrorRoute = `/_unused_dummy_error_path_route_${name}/:error`; - if (arguments.length === 2 && typeof options === 'function') { - callback = options; + if (isCallback(_options)) { + assert('Unexpected arguments', arguments.length === 2); options = {}; + callback = _options; + } else if (isCallback(_callback)) { + assert('Unexpected arguments', arguments.length === 3); + assert('Unexpected arguments', isOptions(_options)); + options = _options as RouteOptions; + callback = _callback; + } else { + options = _options || {}; } assert( `'${name}' cannot be used as a route name.`, (() => { - if (options!.overrideNameAssertion === true) { + if (options.overrideNameAssertion === true) { return true; } @@ -77,7 +115,7 @@ class DSL { if (callback) { let fullName = getFullName(this, name, options.resetNamespace); - let dsl = new DSL(fullName, this.options); + let dsl = new DSLImpl(fullName, this.options); createRoute(dsl, 'loading'); createRoute(dsl, 'error', { path: dummyErrorRoute }); @@ -89,6 +127,7 @@ class DSL { createRoute(this, name, options); } } + /* eslint-enable no-dupe-class-members */ push(url: string, name: string, callback?: MatchCallback, serialize?: any) { let parts = name.split('.'); @@ -129,7 +168,7 @@ class DSL { }; } - mount(_name: string, options: MountOptions = {}) { + mount(_name: string, options: Partial = {}) { let engineRouteMap = this.options.resolveRouteMap(_name); let name = _name; @@ -163,7 +202,7 @@ class DSL { } let optionsForChild = assign({ engineInfo }, this.options); - let childDSL = new DSL(fullName, optionsForChild); + let childDSL = new DSLImpl(fullName, optionsForChild); createRoute(childDSL, 'loading'); createRoute(childDSL, 'error', { path: dummyErrorRoute }); @@ -207,13 +246,11 @@ class DSL { } } -export default DSL; - -function canNest(dsl: DSL) { +function canNest(dsl: DSLImpl) { return dsl.parent !== 'application'; } -function getFullName(dsl: DSL, name: string, resetNamespace?: boolean) { +function getFullName(dsl: DSLImpl, name: string, resetNamespace?: boolean) { if (canNest(dsl) && resetNamespace !== true) { return `${dsl.parent}.${name}`; } else { @@ -221,7 +258,12 @@ function getFullName(dsl: DSL, name: string, resetNamespace?: boolean) { } } -function createRoute(dsl: DSL, name: string, options: RouteOptions = {}, callback?: MatchCallback) { +function createRoute( + dsl: DSLImpl, + name: string, + options: RouteOptions = {}, + callback?: MatchCallback +) { let fullName = getFullName(dsl, name, options.resetNamespace); if (typeof options.path !== 'string') { diff --git a/packages/@ember/-internals/routing/lib/system/router.ts b/packages/@ember/-internals/routing/lib/system/router.ts index 11f3a4e6ef2..91330848f84 100644 --- a/packages/@ember/-internals/routing/lib/system/router.ts +++ b/packages/@ember/-internals/routing/lib/system/router.ts @@ -15,7 +15,7 @@ import { cancel, once, run, scheduleOnce } from '@ember/runloop'; import { DEBUG } from '@glimmer/env'; import EmberLocation, { EmberLocation as IEmberLocation } from '../location/api'; import { calculateCacheKey, extractRouteArgs, getActiveTargetName, resemblesURL } from '../utils'; -import EmberRouterDSL from './dsl'; +import DSL from './dsl'; import Route, { defaultSerialize, hasDefaultSerialize, @@ -466,7 +466,7 @@ class EmberRouter extends EmberObject { dsl.route( 'application', { path: '/', resetNamespace: true, overrideNameAssertion: true }, - function(this: EmberRouterDSL) { + function() { for (let i = 0; i < dslCallbacks.length; i++) { dslCallbacks[i].call(this); } @@ -482,7 +482,7 @@ class EmberRouter extends EmberObject { routerMicrolib.map(dsl.generate()); } - _buildDSL() { + _buildDSL(): DSL { let enableLoadingSubstates = this._hasModuleBasedResolver(); let router = this; let owner = getOwner(this); @@ -498,7 +498,7 @@ class EmberRouter extends EmberObject { }, }; - return new EmberRouterDSL(null, options); + return new DSL(null, options); } init() { @@ -1735,7 +1735,7 @@ EmberRouter.reopenClass({ }, _routePath(routeInfos: PrivateRouteInfo[]) { - let path = []; + let path: string[] = []; // We have to handle coalescing resource names that // are prefixed with their parent's names, e.g. diff --git a/packages/@ember/debug/index.ts b/packages/@ember/debug/index.ts index 1c392bd3678..f30309f37cd 100644 --- a/packages/@ember/debug/index.ts +++ b/packages/@ember/debug/index.ts @@ -242,10 +242,10 @@ if (DEBUG) { */ setDebugFunction('deprecateFunc', function deprecateFunc(...args: any[]) { if (args.length === 3) { - let [message, options, func] = args as [string, DeprecationOptions, () => any]; - return function(this: any) { + let [message, options, func] = args as [string, DeprecationOptions, (...args: any[]) => any]; + return function(this: any, ...args: any[]) { deprecate(message, false, options); - return func.apply(this, arguments); + return func.apply(this, args); }; } else { let [message, func] = args; diff --git a/packages/@ember/instrumentation/index.ts b/packages/@ember/instrumentation/index.ts index 65c2df6d9e4..e1382d0ac9e 100644 --- a/packages/@ember/instrumentation/index.ts +++ b/packages/@ember/instrumentation/index.ts @@ -111,6 +111,14 @@ const time = ((): (() => number) => { return fn ? fn.bind(perf) : Date.now; })(); +type InstrumentCallback = (this: Binding) => Result; + +function isCallback( + value: InstrumentCallback | object +): value is InstrumentCallback { + return typeof value === 'function'; +} + /** Notifies event's subscribers, calls `before` and `after` hooks. @@ -123,83 +131,107 @@ const time = ((): (() => number) => { @param {Object} binding Context that instrument function is called with. @private */ -export function instrument(name: string, callback: () => T, binding: object): T; -export function instrument( +export function instrument( + name: string, + callback: InstrumentCallback +): Result; +export function instrument( + name: string, + callback: InstrumentCallback, + binding: Binding +): Result; +export function instrument( name: string, payload: object, - callback: () => TPayload, - binding: object -): TPayload; -export function instrument( + callback: InstrumentCallback +): Result; +export function instrument( name: string, - p1: (() => TPayload) | TPayload, - p2: TPayload | (() => TPayload), - p3?: object -): TPayload { - let payload: TPayload; - let callback: () => TPayload; - let binding: object; - if (arguments.length <= 3 && typeof p1 === 'function') { - payload = {} as TPayload; + payload: object, + callback: InstrumentCallback, + binding: Binding +): Result; +export function instrument( + name: string, + p1: InstrumentCallback | object, + p2?: Binding | InstrumentCallback, + p3?: Binding +): Result { + let _payload: object | undefined; + let callback: InstrumentCallback; + let binding: Binding; + + if (arguments.length <= 3 && isCallback(p1)) { callback = p1; - binding = p2; + binding = p2 as Binding; } else { - payload = (p1 || {}) as TPayload; - callback = p2 as () => TPayload; - binding = p3 as TPayload; + _payload = p1 as object; + callback = p2 as InstrumentCallback; + binding = p3 as Binding; } + + // fast path if (subscribers.length === 0) { return callback.call(binding); } + + // avoid allocating the payload in fast path + let payload = _payload || {}; + let finalizer = _instrumentStart(name, () => payload); - if (finalizer) { - return withFinalizer(callback, finalizer, payload, binding); - } else { + if (finalizer === NOOP) { return callback.call(binding); + } else { + return withFinalizer(callback, finalizer, payload, binding); } } -let flaggedInstrument: (name: string, payload: TPayload, callback: () => T) => T; +let flaggedInstrument: (name: string, payload: object, callback: () => Result) => Result; + if (EMBER_IMPROVED_INSTRUMENTATION) { - flaggedInstrument = instrument as typeof flaggedInstrument; + flaggedInstrument = instrument; } else { - flaggedInstrument = (_name: string, _payload: TPayload, callback: () => T) => - callback(); + flaggedInstrument = function instrument( + _name: string, + _payload: object, + callback: () => Result + ): Result { + return callback(); + }; } + export { flaggedInstrument }; -function withFinalizer( - callback: () => T, +function withFinalizer( + callback: InstrumentCallback, finalizer: () => void, - payload: T, - binding: object -): T & PayloadWithException { - let result: T; + payload: object, + binding: Binding +): Result { try { - result = callback.call(binding); + return callback.call(binding); } catch (e) { - (payload as PayloadWithException).exception = e; - result = payload; + (payload as { exception: any }).exception = e; + throw e; } finally { finalizer(); } - return result; } function NOOP() {} // private for now -export function _instrumentStart( +export function _instrumentStart(name: string, payloadFunc: () => object): () => void; +export function _instrumentStart( name: string, - _payload: (_payloadParam: TPayloadParam) => object, - _payloadParam: TPayloadParam + payloadFunc: (arg: Arg) => object, + payloadArg: Arg ): () => void; -export function _instrumentStart(name: string, _payload: () => object): () => void; -export function _instrumentStart( +export function _instrumentStart( name: string, - _payload: (_payloadParam: TPayloadParam) => object, - _payloadParam?: TPayloadParam + payloadFunc: ((arg: Arg) => object) | (() => object), + payloadArg?: Arg ): () => void { if (subscribers.length === 0) { return NOOP; @@ -215,7 +247,7 @@ export function _instrumentStart( return NOOP; } - let payload = _payload(_payloadParam!); + let payload = payloadFunc(payloadArg!); let STRUCTURED_PROFILE = ENV.STRUCTURED_PROFILE; let timeName: string; @@ -224,21 +256,17 @@ export function _instrumentStart( console.time(timeName); } - let beforeValues = new Array(listeners.length); - let i: number; - let listener: Listener; + let beforeValues: any[] = []; let timestamp = time(); - for (i = 0; i < listeners.length; i++) { - listener = listeners[i]; - beforeValues[i] = listener.before(name, timestamp, payload); + for (let i = 0; i < listeners.length; i++) { + let listener = listeners[i]; + beforeValues.push(listener.before(name, timestamp, payload)); } return function _instrumentEnd(): void { - let i: number; - let listener: Listener; let timestamp = time(); - for (i = 0; i < listeners.length; i++) { - listener = listeners[i]; + for (let i = 0; i < listeners.length; i++) { + let listener = listeners[i]; if (typeof listener.after === 'function') { listener.after(name, timestamp, payload, beforeValues[i]); } diff --git a/packages/@ember/instrumentation/tests/index-test.js b/packages/@ember/instrumentation/tests/index-test.js index 5c2e5b385f2..a3b79c2d927 100644 --- a/packages/@ember/instrumentation/tests/index-test.js +++ b/packages/@ember/instrumentation/tests/index-test.js @@ -149,7 +149,7 @@ moduleFor( } ['@test raising an exception in the instrumentation attaches it to the payload'](assert) { - assert.expect(2); + assert.expect(3); let error = new Error('Instrumentation'); @@ -167,9 +167,13 @@ moduleFor( }, }); - instrument('render.handlebars', null, function() { - throw error; - }); + assert.throws( + () => + instrument('render.handlebars', null, () => { + throw error; + }), + /Instrumentation/ + ); } ['@test it is possible to add a new subscriber after the first instrument'](assert) { diff --git a/yarn.lock b/yarn.lock index b885ae1a8d8..9fdcf34d962 100644 --- a/yarn.lock +++ b/yarn.lock @@ -655,120 +655,122 @@ lodash "^4.17.10" to-fast-properties "^2.0.0" -"@glimmer/compiler@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.37.1.tgz#a3d59e0b1e51341314d3f8202aa0d4b70dc55173" - integrity sha512-bGdRb52eWZuHEGaIa1Rl0e0f4vPpQtp+gnpsaRwBMmRLqDrCZKdEJ8jCN5bI8TMFbtvP78s/5O0qi/XK+UzO4A== +"@glimmer/compiler@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.38.1.tgz#03b43a2a8a04b1ed39517862158e8897d0f6798b" + integrity sha512-V4wRYRPH6FSVZw9dNfZn3IRxBofUBL0oGeBLm7wNdUOg4oXE26BMmxRVtYzTsBmmSj7SqB+B6VKuH1jEuvOOhQ== dependencies: - "@glimmer/interfaces" "^0.37.1" - "@glimmer/syntax" "^0.37.1" - "@glimmer/util" "^0.37.1" - "@glimmer/wire-format" "^0.37.1" + "@glimmer/interfaces" "^0.38.1" + "@glimmer/syntax" "^0.38.1" + "@glimmer/util" "^0.38.1" + "@glimmer/wire-format" "^0.38.1" -"@glimmer/encoder@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.37.1.tgz#5cd95e04043c74ee4253811a768871b02fcd12c5" - integrity sha512-XvtlyFYibYxwYBfak5NK62u/iNtOgP1hbccxJNuDgK2pwYakrnZX6KSOg/6QnFNknjJkSQ/cwpW696ROliPTfw== +"@glimmer/encoder@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.38.1.tgz#1b7fd08a83e4412148126d50cbc9c6a08739caa7" + integrity sha512-E5d15cy0F/qiFCJ67KVOxJLkbV5pebiiczjzf/zHTmL250Fj4reISoKsBt0SBWc2IJAj2En3RLEyq6WS8U1sZQ== + dependencies: + "@glimmer/interfaces" "^0.38.1" + "@glimmer/vm" "^0.38.1" "@glimmer/env@^0.1.7": version "0.1.7" resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07" integrity sha1-/S0rVakCnGs3psk16MiHGucN+gc= -"@glimmer/interfaces@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.37.1.tgz#44328c49d835445fda26efa7c8d5463ee2e626ed" - integrity sha512-ys5I6iEeaPvSPY9dn6uc9NAh9HkL8fnUZjTHJhlKV5nFv5qqXhBK8hFE86fVXqGRtXLHfOa90pg75vLXgw7u/g== +"@glimmer/interfaces@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.38.1.tgz#5b1c174363396b99d6a6bddb35538151e4c4c989" + integrity sha512-YXnzRR7IviHdN+k2Llp8rQ+ADrdzme++A5EFZRxcUoD14Eu1u2S3al7FlLLfwHhp5R2leO+x3zSYoWsuzfvsqw== dependencies: - "@glimmer/wire-format" "^0.37.1" + "@glimmer/wire-format" "^0.38.1" "@simple-dom/interface" "1.4.0" -"@glimmer/low-level@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.37.1.tgz#307f818b20b8df43c04750c01eb92ead2af4b455" - integrity sha512-CIscEE0BKNMlx6PCNUJVyPWYGCwtfoYTbwUIyQdY5IeVXLvBweT8fteMmHv4HapsPCKubPPkvwwm3bgBLSq3dA== - -"@glimmer/node@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.37.1.tgz#f401e366b6b6d71a16f9aa7e3fddaeb7f9cf7b3b" - integrity sha512-eQiIhfx3MJqXhjDTqQMtzAfI+IJ+5aw0bLXjBikXHCau/lpSS6EqO12WZR1QN+K1wchdVlYkseme4wEs89fyag== - dependencies: - "@glimmer/interfaces" "^0.37.1" - "@glimmer/runtime" "^0.37.1" - -"@glimmer/opcode-compiler@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.37.1.tgz#e69eaa227ea85f2b6316f447617fedef58a38ca3" - integrity sha512-Nf6BOgcSfOUDDlExNWqjGqNUx6m6biebnMX6aEwfJwD/JrnwQuMo20/K4d8+6ZvJwqwn1Bwth9Jk3rsp7caLAw== - dependencies: - "@glimmer/encoder" "^0.37.1" - "@glimmer/interfaces" "^0.37.1" - "@glimmer/program" "^0.37.1" - "@glimmer/reference" "^0.37.1" - "@glimmer/util" "^0.37.1" - "@glimmer/vm" "^0.37.1" - "@glimmer/wire-format" "^0.37.1" - -"@glimmer/program@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.37.1.tgz#440efc86fdc2e870dfca9c678c1986c84e8ab5dc" - integrity sha512-HVaF3U1bCTH7cryMccgkxHn7/IzLfy9LGbyQK0wgeiHsY+xCSBb7Kq1WP4LPUH8+84/BzEpuLJN7u2n5GGdZlw== - dependencies: - "@glimmer/encoder" "^0.37.1" - "@glimmer/interfaces" "^0.37.1" - "@glimmer/util" "^0.37.1" - -"@glimmer/reference@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.37.1.tgz#a444a56eb3e79d9d6d991c423f32c6491778d57b" - integrity sha512-nGelUwaQ1jBnI1OH80JV3cMiWfjgsi399y61ajARiHjl1DK8gXchZ0qLpNu83Sa5UbL09AMbVaUTb8xsy6MFwA== - dependencies: - "@glimmer/util" "^0.37.1" - -"@glimmer/runtime@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.37.1.tgz#3f690f003d00af710823449afadeaf01e379533e" - integrity sha512-ujkaODl2DDrwOttXZTcobH8ML4eSpgepnPpsYYEafCBXxKxkTWHV7JzSuuh3/hnHZVdrRO/vP6zIJ0P86FXBLQ== - dependencies: - "@glimmer/interfaces" "^0.37.1" - "@glimmer/low-level" "^0.37.1" - "@glimmer/program" "^0.37.1" - "@glimmer/reference" "^0.37.1" - "@glimmer/util" "^0.37.1" - "@glimmer/vm" "^0.37.1" - "@glimmer/wire-format" "^0.37.1" +"@glimmer/low-level@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.38.1.tgz#101147d71a4f1ca1874e45e16a7a777fa8f65d46" + integrity sha512-XydeZ5XzLFKLxtnwsy4Zu3WHJfL4/XYzs24KLaW4HeDxKfhVnJxr2hVWfpF17I3Q35yCOLdbSWp+igVHFA4/7w== + +"@glimmer/node@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.38.1.tgz#46d18041207953218bf841110b5c4d1db11eb3ac" + integrity sha512-okAyjPhrUy4d4txuz2qXxo5z2gGZg3e4gjFPpTDKOZRGhWZMAa1mu0KEtnCHtJ4unvhJBBNI7TdSHQX+492Tlw== + dependencies: + "@glimmer/interfaces" "^0.38.1" + "@glimmer/runtime" "^0.38.1" + +"@glimmer/opcode-compiler@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.38.1.tgz#da4e871e13ca87c8d80ebb905d0ff2c51c7d9a84" + integrity sha512-p5VdtZDWrW8F3gKS6/DoFGIwpWoquiswAP2XyyQPlXI7IsbnxUhwLd0uQa/rjTPkOIH3okDW/h6ZVAEqEdwTKg== + dependencies: + "@glimmer/encoder" "^0.38.1" + "@glimmer/interfaces" "^0.38.1" + "@glimmer/program" "^0.38.1" + "@glimmer/reference" "^0.38.1" + "@glimmer/util" "^0.38.1" + "@glimmer/vm" "^0.38.1" + "@glimmer/wire-format" "^0.38.1" + +"@glimmer/program@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.38.1.tgz#cb50934749fc88843f925d5c9c43ba673de9f473" + integrity sha512-nipMJiYx9ufZkt2iKlNdoi22U2asZ16NUhEllsd/fVw07+CwjI2Ylf93CFtWGDxjQ0qr9ZGPWFk1D7O7Gm6kmA== + dependencies: + "@glimmer/encoder" "^0.38.1" + "@glimmer/interfaces" "^0.38.1" + "@glimmer/util" "^0.38.1" + +"@glimmer/reference@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.38.1.tgz#555bcf90b7e5ea8d39d1089e2bd6a2da14b56184" + integrity sha512-iGuTZhHc0NTw9i7eVdCnbENPGHzJecfPCNNQ1GUm5rsY1/NnLB4tNAEioDz81HAJygOHhnMZgb9YqLEwcwnONw== + dependencies: + "@glimmer/util" "^0.38.1" + +"@glimmer/runtime@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.38.1.tgz#abe0b4affbe29dfe5b15307713a1c03a83fdc41b" + integrity sha512-zArtVsLNXV7VY+1Y8iaouOKvvAdNx1Ios5od7EH3RqAvkx4wxXNBKEAEG4ecj2avxELw+SwhajB/eGBbgBB8ng== + dependencies: + "@glimmer/interfaces" "^0.38.1" + "@glimmer/low-level" "^0.38.1" + "@glimmer/program" "^0.38.1" + "@glimmer/reference" "^0.38.1" + "@glimmer/util" "^0.38.1" + "@glimmer/vm" "^0.38.1" + "@glimmer/wire-format" "^0.38.1" "@simple-dom/interface" "^1.4.0" -"@glimmer/syntax@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.37.1.tgz#f3c507122f7c4b859ce712e0c5bbc43608ca12db" - integrity sha512-DtSRWrbZlgAvLOR62slBvMgUmcnYxfq4Jv5uqCqD4/DUrjV2ezmOMhDFW4zxAVz55luqx9/900XHYiUzsicPyA== +"@glimmer/syntax@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.38.1.tgz#625875da5f1e827ad5806fdaa23e2cd00369fda8" + integrity sha512-tzc1NeUd7hbBWqIlgSY5Oq8bEiMpp7ClawVt8hWUarbr9G+qR0toDEQYqZmeRtCXjHAIh9M9oYbpbzLP6+iiag== dependencies: - "@glimmer/interfaces" "^0.37.1" - "@glimmer/util" "^0.37.1" + "@glimmer/interfaces" "^0.38.1" + "@glimmer/util" "^0.38.1" handlebars "^4.0.6" simple-html-tokenizer "^0.5.6" -"@glimmer/util@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.37.1.tgz#b6dafd36134556053121fc8a8ffceb68e490a4b5" - integrity sha512-Of58Of07fsT8JOkok/tXJvewEdI6LzDxdlIIcdhv6iOJgYUsJUQKUYf6XY+5o/rtsrByPQ5da2WwHbLAcpq0aQ== +"@glimmer/util@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.38.1.tgz#41ca0544f95ec980bc492f4f0e5a85564964c028" + integrity sha512-WAe+bqJSFBR8EmA/NsxcqWmyi2AfOyW9x1jpWczZHJiBkvssiRF6nre39CJVwwMPlFDtdKzvnRQkWVl8ZBhcNw== -"@glimmer/vm@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.37.1.tgz#26ad736b1228dac88fd8c1b9ce2b8ffefa91bdc0" - integrity sha512-EIhJoDrXX+WW3vyovTiEQSYwdbAQgaJKGR25mkMKGLSwvIu4RcX2d9uUPSkm+pBvijHNk2f67q86k1s6j8cBIQ== +"@glimmer/vm@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.38.1.tgz#30f5bb659c42fbe69a6b5cf42a06c6bd815721ac" + integrity sha512-pxmdJp0GskbwBz7WFvBNWaeoP1+977A0cFnEc3U+GbLBCmyrCq7mRQwFYSRBI8B5/6CkzWhsGXj42Qrkk34m3Q== dependencies: - "@glimmer/interfaces" "^0.37.1" - "@glimmer/program" "^0.37.1" - "@glimmer/util" "^0.37.1" + "@glimmer/interfaces" "^0.38.1" + "@glimmer/util" "^0.38.1" -"@glimmer/wire-format@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.37.1.tgz#34906e320d38bc65b1730b5f78890b184211a0d5" - integrity sha512-iDj8D1eCVDmcsNUcz5epdOCN6Gt53W3cMsS2qAkf2H6REiXQ9kG7ySIGIdahNsLT/f21MT+JzqawylZR0hrw0w== +"@glimmer/wire-format@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.38.1.tgz#a77963cf7193ab23cbce242116aac613f17cd3dc" + integrity sha512-AT1dToybQxbY29XpkNra9/j7svq65ZNnSXmRs1zUKAarvgh6qxOBsnYeVBNrxBFduNuNJOxP8G0Y+nXEGrUoRQ== dependencies: - "@glimmer/util" "^0.37.1" + "@glimmer/util" "^0.38.1" "@simple-dom/document@^1.4.0": version "1.4.0" @@ -1818,10 +1820,10 @@ broccoli-string-replace@^0.1.2: broccoli-persistent-filter "^1.1.5" minimatch "^3.0.3" -broccoli-typescript-compiler@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/broccoli-typescript-compiler/-/broccoli-typescript-compiler-4.0.1.tgz#7a03e003b3032acf9a2feaae973ae2e257393d04" - integrity sha512-3psnblHnaMTfh3sE9lkLTKs8XjK563vbKMh/1mslmabqt9wuAOfTMUNEMbmGCofVoMUd9C/ydrmN5eZ6mJUNpQ== +broccoli-typescript-compiler@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/broccoli-typescript-compiler/-/broccoli-typescript-compiler-4.1.0.tgz#8511b73a7b019f6b6267679df64e211ca65ba036" + integrity sha512-pz+hQMlfwvklezPB1K4COYdf5SIQX6Dl4bdLX/R0uTNEJAwVa3Is/4YSXXm2L+LQdfMCZSXzqjbC5AGgvdbB6A== dependencies: broccoli-funnel "^2.0.1" broccoli-merge-trees "^3.0.0" @@ -1829,7 +1831,7 @@ broccoli-typescript-compiler@^4.0.1: fs-tree-diff "^0.5.7" heimdalljs "0.3.3" md5-hex "^2.0.0" - typescript "~3.0.1" + typescript "~3.2.1" walk-sync "^0.3.2" broccoli-uglify-sourcemap@^2.2.0: @@ -8293,10 +8295,10 @@ typescript-estree@18.0.0: lodash.unescape "4.0.1" semver "5.5.0" -typescript@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.1.tgz#43738f29585d3a87575520a4b93ab6026ef11fdb" - integrity sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg== +typescript@~3.2.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d" + integrity sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg== uc.micro@^1.0.0, uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.5"