diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..fd9b5a0 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,31 @@ +module.exports = { + // Specifies the ESLint parser + parser: "@typescript-eslint/parser", + extends: [ + // Uses the recommended rules from the @typescript-eslint/eslint-plugin + "plugin:@typescript-eslint/recommended", + // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier + "prettier/@typescript-eslint", + // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. + "plugin:prettier/recommended" + ], + parserOptions: { + // Allows for the parsing of modern ECMAScript features + ecmaVersion: 2018, + // Allows for the use of imports + sourceType: "module" + }, + rules: { + "@typescript-eslint/explicit-function-return-type": 0, + "simple-import-sort/sort": "error", + "sort-imports": "off", + "import/order": "off", + "@typescript-eslint/camelcase": 0, + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": ["off"], + }, + plugins: ["simple-import-sort"], + ignorePatterns: ['dist', './packages/schematics', 'module'], +}; \ No newline at end of file diff --git a/.github/workflows/npmpublish.yml b/.github/workflows/npmpublish.yml index 9594a15..a0cbc11 100644 --- a/.github/workflows/npmpublish.yml +++ b/.github/workflows/npmpublish.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: - node-version: 12 + node-version: 14 # registry-url: https://npm.pkg.github.com/ # scope: "@rxdi" - run: npx @rxdi/bolt install diff --git a/.gitignore b/.gitignore index c65e5ea..8d240a4 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,5 @@ coverage dist -*.js *.map.js *.d.ts \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index f5c27f4..076a4a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ - ## [0.0.69] - 2020-12-13 + ### Added -- New package with name `@rhtml/component` [Documentation](./packages/component/README.md) + +- New package with name `@rhtml/fastify` [Documentation](./packages/fastify/README.md) diff --git a/README.md b/README.md index 6b54b68..ed04b35 100644 --- a/README.md +++ b/README.md @@ -1,257 +1,7 @@ -# Reactive HTML +# Reactive HTML Core packages intended for framework creation ### Packages -| Package | Description | -| ------------------------------------------------------ | ---------------------------------------------------------------------- | -| [@rhtml/di](packages/di) | IOC container | -| [@rhtml/component](packages/component) | Main reactive component for building UI | -| [@rhtml/components](packages/components) | Declarative monadic approach defining WC using html | -| [@rhtml/operators](packages/operators) | Useful declarative operators like `for` `if` | -| [@rhtml/graphql](packages/graphql) | Declarative Graphql for executing `query` `mutation` or `subscription` | -| [@rhtml/hooks](packages/hooks) | React like hooks for use inside web components | -| [@rhtml/renderer](packages/renderer) | Main renderer for every component used also with observables | -| [@rhtml/schematics](packages/schematics) | Angular like schematics for component generation using DI container | -| [@rhtml/experiments](packages/experiments) | Declarative way of defining web components only with HTML | -| [@rhtml/decorators](packages/decorators) | Useful decorators @HostListener and @Input | -| [@rhtml/modifiers](packages/modifiers) | Modifiers created using Custom HTML Attributes | -| [@rhtml/custom-attributes](packages/custom-attributes) | Create your own custom Attributes | - -#### Installation - -```bash -npm i @rhtml/operators @rhtml/components @rhtml/hooks @rhtml/graphql -``` - -#### Usage - -```typescript -import { LitElement, Component, html } from '@rxdi/lit-html'; -import { BehaviorSubject } from 'rxjs'; -import { delay } from 'rxjs/operators'; - -import '@rhtml/operators'; -import '@rhtml/components'; -import '@rhtml/hooks'; -import '@rhtml/graphql'; - -interface State { - counter: number; -} -interface NotificationState { - data: { notifications: { appUpdated: string | number } }; -} -@Component({ - selector: 'r-html-view', - template(this: RHtmlViewComponent) { - return html` - State) => - html` - - ${res.counter} - `, - loading: () => - html` - Loading... - `, - error: () => - html` - Error - ` - }} - > - - - html` - ${v} - `} - > - - - - - html` -

${name}

- `} - > -
-
- - - - - html` - - name}> - - `} - > - - - - - - void - ) => html` -

${appUpdated}

- - (will be overriten when server emit new state) - `} - > -
-
- `; - } -}) -export class RHtmlViewComponent extends LitElement {} -``` - -## Setup Graphql Client - -To set configuration on bundle time we need to get settings without `barrel` export, -this way we can set configuration before Graphql module loads configuration -Keep it in mind that this is the default configuration for GraphqlClient - -```typescript -import { setConfig } from '@rhtml/graphql/settings'; - -setConfig({ - config: { - uri: 'https://countries.trevorblades.com/', - pubsub: 'wss://pubsub.youvolio.com/subscriptions', - async onRequest() { - return new Headers(); - } - }, - defaults: { - error: e => { - return html` -

- ${e} -

- `; - }, - loading: () => { - return html` -
- -
- `; - } - } -}); - -import '@rhtml/graphql'; -``` - -Later on you can use `r-fetch` component to specify `query`, `mutation`, `subscription` - -```html - - - void) => html` -

${appUpdated}

- - (will be overriten when server emit new state) - `}> -
-
-``` - -##### Dependency Injection - -``` -npm i @rhtml/di -``` - -```ts -import '@abraham/reflection'; - -import { Inject, Injectable, InjectionToken } from '@rhtml/di'; -import { Bootstrap, Component, Module } from '@rhtml/di/module'; - -type UserId = number; -const UserId = new InjectionToken(); - -const now = Date.now(); - -@Injectable() -export class UserService { - constructor(@Inject(UserId) public userId: number) { - console.log('[UserService]', userId); - } -} - -@Component() -class AppComponent { - constructor(public userService: UserService) { - console.log('[AppComponent] ', userService.userId); - } - - OnInit() { - console.log('[AppComponent] Init'); - } - - OnDestroy() { - console.log('[AppComponent] Destroy'); - } -} - -@Module({ - providers: [ - UserService, - { - provide: UserId, - useFactory: () => - new Promise(resolve => setTimeout(() => resolve(1234), 1000)) - } - ], - bootstrap: [AppComponent] -}) -export class AppModule {} - -Bootstrap(AppModule).then(() => - console.log('Started', `after ${Date.now() - now}`) -); -``` +| Package | Description | +| ---------------------------------- | ---------------------- | +| [@rhtml/fastify](packages/fastify) | Fastify server package | diff --git a/change-version.js b/change-version.js new file mode 100644 index 0000000..9e17e59 --- /dev/null +++ b/change-version.js @@ -0,0 +1,42 @@ +const { readFile, readdir, writeFile } = require('fs'); +const { promisify } = require('util'); +async function readPackageJson(dir) { + return JSON.parse(await promisify(readFile)(dir, { encoding: 'utf-8' })); +} +async function main() { + const { version } = await readPackageJson('package.json'); + const dirs = await promisify(readdir)('packages'); + const packagesJsons = await Promise.all( + dirs.map(async directory => { + const path = `./packages/${directory}/package.json`; + const file = await readPackageJson(path); + return { + file, + path + }; + }) + ); + const privatePackages = packagesJsons.map(json => json.file.name); + const modified = packagesJsons.map(json => { + json.file.dependencies = Object.entries(json.file.dependencies).reduce( + (prev, [k]) => { + if (privatePackages.includes(k)) { + prev[k] = version; + } + return prev; + }, + json.file.dependencies + ); + return json; + }); + await Promise.all( + modified.map(({ file, path }) => + promisify(writeFile)(path, JSON.stringify(file, null, 2), { + encoding: 'utf-8' + }) + ) + ); + console.log(modified); +} + +main(); diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 843899d..0000000 --- a/docs/404.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 843899d..0000000 --- a/docs/index.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/main.4ec973a3.js.map b/docs/main.4ec973a3.js.map deleted file mode 100644 index ff4371f..0000000 --- a/docs/main.4ec973a3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/index.ts","../node_modules/@rxdi/core/dist/helpers/sha256.js","../node_modules/@rxdi/core/dist/helpers/create-unique-hash.js","../node_modules/@rxdi/core/dist/container/error/MissingProvidedServiceTypeError.js","../node_modules/@rxdi/core/dist/container/Token.js","../node_modules/@rxdi/core/dist/container/error/ServiceNotFoundError.js","../node_modules/@rxdi/core/dist/services/constructor-watcher/constructor-watcher.js","../node_modules/@rxdi/core/dist/services/constructor-watcher/index.js","../node_modules/@rxdi/core/dist/container/ContainerInstance.js","../node_modules/@rxdi/core/dist/container/Container.js","../node_modules/@rxdi/core/dist/helpers/reflect.decorator.js","../node_modules/@rxdi/core/dist/decorators/service/Service.js","../node_modules/@rxdi/core/dist/container/types/hooks/on-before.js","../node_modules/@rxdi/core/dist/container/types/hooks/on-init.js","../node_modules/@rxdi/core/dist/container/types/hooks/index.js","../node_modules/@rxdi/core/dist/container/index.js","../node_modules/tslib/tslib.es6.js","../../../src/internal/util/isFunction.ts","../../src/internal/config.ts","../../../src/internal/util/hostReportError.ts","../../src/internal/Observer.ts","../../../src/internal/util/isArray.ts","../../../src/internal/util/isObject.ts","../../../src/internal/util/UnsubscriptionError.ts","../../src/internal/Subscription.ts","../../../src/internal/symbol/rxSubscriber.ts","../../src/internal/Subscriber.ts","../../../src/internal/util/canReportError.ts","../../../src/internal/util/toSubscriber.ts","../../../src/internal/symbol/observable.ts","../../../src/internal/util/identity.ts","../../../src/internal/util/pipe.ts","../../src/internal/Observable.ts","../../../src/internal/util/ObjectUnsubscribedError.ts","../../src/internal/SubjectSubscription.ts","../../src/internal/Subject.ts","../../../src/internal/operators/refCount.ts","../../../src/internal/observable/ConnectableObservable.ts","../../../src/internal/operators/groupBy.ts","../../src/internal/BehaviorSubject.ts","../../../src/internal/scheduler/Action.ts","../../../src/internal/scheduler/AsyncAction.ts","../../../src/internal/scheduler/QueueAction.ts","../../src/internal/Scheduler.ts","../../../src/internal/scheduler/AsyncScheduler.ts","../../../src/internal/scheduler/QueueScheduler.ts","../../../src/internal/scheduler/queue.ts","../../../src/internal/observable/empty.ts","../../../src/internal/util/isScheduler.ts","../../../src/internal/util/subscribeToArray.ts","../../../src/internal/scheduled/scheduleArray.ts","../../../src/internal/observable/fromArray.ts","../../../src/internal/observable/of.ts","../../../src/internal/observable/throwError.ts","../../src/internal/Notification.ts","../../../src/internal/operators/observeOn.ts","../../src/internal/ReplaySubject.ts","../../src/internal/AsyncSubject.ts","../../../src/internal/util/Immediate.ts","../../../src/internal/scheduler/AsapAction.ts","../../../src/internal/scheduler/AsapScheduler.ts","../../../src/internal/scheduler/asap.ts","../../../src/internal/scheduler/async.ts","../../../src/internal/scheduler/AnimationFrameAction.ts","../../../src/internal/scheduler/AnimationFrameScheduler.ts","../../../src/internal/scheduler/animationFrame.ts","../../../src/internal/scheduler/VirtualTimeScheduler.ts","../../../src/internal/util/noop.ts","../../../src/internal/util/isObservable.ts","../../../src/internal/util/ArgumentOutOfRangeError.ts","../../../src/internal/util/EmptyError.ts","../../../src/internal/util/TimeoutError.ts","../../../src/internal/operators/map.ts","../../../src/internal/observable/bindCallback.ts","../../../src/internal/observable/bindNodeCallback.ts","../../src/internal/OuterSubscriber.ts","../../src/internal/InnerSubscriber.ts","../../../src/internal/util/subscribeToPromise.ts","../../../src/internal/symbol/iterator.ts","../../../src/internal/util/subscribeToIterable.ts","../../../src/internal/util/subscribeToObservable.ts","../../../src/internal/util/isArrayLike.ts","../../../src/internal/util/isPromise.ts","../../../src/internal/util/subscribeTo.ts","../../../src/internal/util/subscribeToResult.ts","../../../src/internal/observable/combineLatest.ts","../../../src/internal/scheduled/scheduleObservable.ts","../../../src/internal/scheduled/schedulePromise.ts","../../../src/internal/scheduled/scheduleIterable.ts","../../../src/internal/util/isInteropObservable.ts","../../../src/internal/util/isIterable.ts","../../../src/internal/scheduled/scheduled.ts","../../../src/internal/observable/from.ts","../../src/internal/innerSubscribe.ts","../../../src/internal/operators/mergeMap.ts","../../../src/internal/operators/mergeAll.ts","../../../src/internal/operators/concatAll.ts","../../../src/internal/observable/concat.ts","../../../src/internal/observable/defer.ts","../../../src/internal/observable/forkJoin.ts","../../../src/internal/observable/fromEvent.ts","../../../src/internal/observable/fromEventPattern.ts","../../../src/internal/observable/generate.ts","../../../src/internal/observable/iif.ts","../../../src/internal/util/isNumeric.ts","../../../src/internal/observable/interval.ts","../../../src/internal/observable/merge.ts","../../../src/internal/observable/never.ts","../../../src/internal/observable/onErrorResumeNext.ts","../../../src/internal/observable/pairs.ts","../../../src/internal/util/not.ts","../../../src/internal/operators/filter.ts","../../../src/internal/observable/partition.ts","../../../src/internal/observable/race.ts","../../../src/internal/observable/range.ts","../../../src/internal/observable/timer.ts","../../../src/internal/observable/using.ts","../../../src/internal/observable/zip.ts","../../../src/internal/operators/audit.ts","../../../src/internal/operators/auditTime.ts","../../../src/internal/operators/buffer.ts","../../../src/internal/operators/bufferCount.ts","../../../src/internal/operators/bufferTime.ts","../../../src/internal/operators/bufferToggle.ts","../../../src/internal/operators/bufferWhen.ts","../../../src/internal/operators/catchError.ts","../../../src/internal/operators/combineAll.ts","../../../src/internal/operators/combineLatest.ts","../../../src/internal/operators/concat.ts","../../../src/internal/operators/concatMap.ts","../../../src/internal/operators/concatMapTo.ts","../../../src/internal/operators/count.ts","../../../src/internal/operators/debounce.ts","../../../src/internal/operators/debounceTime.ts","../../../src/internal/operators/defaultIfEmpty.ts","../../../src/internal/util/isDate.ts","../../../src/internal/operators/delay.ts","../../../src/internal/operators/delayWhen.ts","../../../src/internal/operators/dematerialize.ts","../../../src/internal/operators/distinct.ts","../../../src/internal/operators/distinctUntilChanged.ts","../../../src/internal/operators/distinctUntilKeyChanged.ts","../../../src/internal/operators/throwIfEmpty.ts","../../../src/internal/operators/take.ts","../../../src/internal/operators/elementAt.ts","../../../src/internal/operators/endWith.ts","../../../src/internal/operators/every.ts","../../../src/internal/operators/exhaust.ts","../../../src/internal/operators/exhaustMap.ts","../../../src/internal/operators/expand.ts","../../../src/internal/operators/finalize.ts","../../../src/internal/operators/find.ts","../../../src/internal/operators/findIndex.ts","../../../src/internal/operators/first.ts","../../../src/internal/operators/ignoreElements.ts","../../../src/internal/operators/isEmpty.ts","../../../src/internal/operators/takeLast.ts","../../../src/internal/operators/last.ts","../../../src/internal/operators/mapTo.ts","../../../src/internal/operators/materialize.ts","../../../src/internal/operators/scan.ts","../../../src/internal/operators/reduce.ts","../../../src/internal/operators/max.ts","../../../src/internal/operators/merge.ts","../../../src/internal/operators/mergeMapTo.ts","../../../src/internal/operators/mergeScan.ts","../../../src/internal/operators/min.ts","../../../src/internal/operators/multicast.ts","../../../src/internal/operators/onErrorResumeNext.ts","../../../src/internal/operators/pairwise.ts","../../../src/internal/operators/partition.ts","../../../src/internal/operators/pluck.ts","../../../src/internal/operators/publish.ts","../../../src/internal/operators/publishBehavior.ts","../../../src/internal/operators/publishLast.ts","../../../src/internal/operators/publishReplay.ts","../../../src/internal/operators/race.ts","../../../src/internal/operators/repeat.ts","../../../src/internal/operators/repeatWhen.ts","../../../src/internal/operators/retry.ts","../../../src/internal/operators/retryWhen.ts","../../../src/internal/operators/sample.ts","../../../src/internal/operators/sampleTime.ts","../../../src/internal/operators/sequenceEqual.ts","../../../src/internal/operators/share.ts","../../../src/internal/operators/shareReplay.ts","../../../src/internal/operators/single.ts","../../../src/internal/operators/skip.ts","../../../src/internal/operators/skipLast.ts","../../../src/internal/operators/skipUntil.ts","../../../src/internal/operators/skipWhile.ts","../../../src/internal/operators/startWith.ts","../../../src/internal/observable/SubscribeOnObservable.ts","../../../src/internal/operators/subscribeOn.ts","../../../src/internal/operators/switchMap.ts","../../../src/internal/operators/switchAll.ts","../../../src/internal/operators/switchMapTo.ts","../../../src/internal/operators/takeUntil.ts","../../../src/internal/operators/takeWhile.ts","../../../src/internal/operators/tap.ts","../../../src/internal/operators/throttle.ts","../../../src/internal/operators/throttleTime.ts","../../../src/internal/operators/timeInterval.ts","../../../src/internal/operators/timeoutWith.ts","../../../src/internal/operators/timeout.ts","../../../src/internal/operators/timestamp.ts","../../../src/internal/operators/toArray.ts","../../../src/internal/operators/window.ts","../../../src/internal/operators/windowCount.ts","../../../src/internal/operators/windowTime.ts","../../../src/internal/operators/windowToggle.ts","../../../src/internal/operators/windowWhen.ts","../../../src/internal/operators/withLatestFrom.ts","../../../src/internal/operators/zip.ts","../../../src/internal/operators/zipAll.ts","../../src/operators/index.ts","../node_modules/@rxdi/core/dist/services/cache/cache-layer.js","../node_modules/@rxdi/core/dist/helpers/events.js","../node_modules/@rxdi/core/dist/services/config/config.model.js","../node_modules/@rxdi/core/dist/services/config/config.service.js","../node_modules/@rxdi/core/dist/services/config/index.js","../node_modules/@rxdi/core/dist/decorators/injector/injector.decorator.js","../node_modules/@rxdi/core/dist/services/bootstrap-logger/bootstrap-logger.js","../node_modules/@rxdi/core/dist/services/bootstrap-logger/index.js","../node_modules/@rxdi/core/dist/services/cache/cache-layer.service.js","../node_modules/@rxdi/core/dist/services/cache/cache-layer.interfaces.js","../node_modules/@rxdi/core/dist/services/cache/index.js","../node_modules/@rxdi/core/dist/services/plugin/plugin.service.js","../../../../../../.nvm/versions/node/v12.18.4/lib/node_modules/parcel-bundler/node_modules/process/browser.js","../node_modules/@rxdi/core/dist/services/exit-handler/exit-handler.service.js","../node_modules/@rxdi/core/dist/services/exit-handler/index.js","../node_modules/@rxdi/core/dist/services/lazy-factory/lazy-factory.service.js","../node_modules/@rxdi/core/dist/services/module/helpers/validators.js","../node_modules/@rxdi/core/dist/services/controllers/controllers.service.js","../node_modules/@rxdi/core/dist/services/effect/effect.service.js","../node_modules/@rxdi/core/dist/services/components/components.service.js","../node_modules/@rxdi/core/dist/services/bootstraps/bootstraps.service.js","../node_modules/@rxdi/core/dist/services/services/services.service.js","../node_modules/@rxdi/core/dist/services/module/module.service.js","../node_modules/@rxdi/core/dist/services/module/index.js","../node_modules/@rxdi/core/dist/services/resolver/resolver.service.js","../node_modules/@rxdi/core/dist/services/resolver/index.js","../node_modules/@rxdi/core/dist/services/after-starter/after-starter.service.js","../node_modules/@rxdi/core/dist/helpers/log.js","../node_modules/@rxdi/core/dist/services/bootstrap/bootstrap.service.js","../node_modules/@rxdi/core/dist/helpers/exit-handler.js","../node_modules/@rxdi/core/dist/helpers/bootstrap.js","../node_modules/@rxdi/core/dist/helpers/index.js","../node_modules/@rxdi/core/dist/services/metadata/metadata.service.js","../node_modules/@rxdi/core/dist/services/metadata/index.js","../node_modules/@rxdi/core/dist/services/compression/compression.service.js","../node_modules/@rxdi/core/dist/services/compression/index.js","../node_modules/@rxdi/core/dist/services/effect/index.js","../node_modules/@rxdi/core/dist/services/controllers/index.js","../node_modules/@rxdi/core/dist/services/components/index.js","../node_modules/@rxdi/core/dist/services/bootstraps/index.js","../node_modules/@rxdi/core/dist/services/services/index.js","../node_modules/@rxdi/core/dist/services/plugin-manager/plugin-manager.js","../node_modules/@rxdi/core/dist/services/index.js","../node_modules/@rxdi/core/dist/helpers/generic-constructor.js","../node_modules/@rxdi/core/dist/decorators/module/module.decorator.js","../node_modules/@rxdi/core/dist/decorators/module/module.interfaces.js","../node_modules/@rxdi/core/dist/decorators/module/index.js","../node_modules/@rxdi/core/dist/decorators/injector/index.js","../node_modules/@rxdi/core/dist/decorators/inject-soft/inject-soft.decorator.js","../node_modules/@rxdi/core/dist/decorators/inject-soft/index.js","../node_modules/@rxdi/core/dist/container/error/CannotInjectError.js","../node_modules/@rxdi/core/dist/helpers/get-identifier.js","../node_modules/@rxdi/core/dist/decorators/inject/Inject.js","../node_modules/@rxdi/core/dist/decorators/controller/controller.decorator.js","../node_modules/@rxdi/core/dist/decorators/controller/index.js","../node_modules/@rxdi/core/dist/decorators/effect/effect.decorator.js","../node_modules/@rxdi/core/dist/decorators/effect/index.js","../node_modules/@rxdi/core/dist/decorators/plugin/Plugin.js","../node_modules/@rxdi/core/dist/decorators/component/component.decorator.js","../node_modules/@rxdi/core/dist/decorators/component/index.js","../node_modules/@rxdi/core/dist/decorators/inject-many/InjectMany.js","../node_modules/@rxdi/core/dist/decorators/index.js","../node_modules/@rxdi/core/dist/index.js","../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js","../node_modules/graphql/jsutils/inspect.js","../node_modules/graphql/language/visitor.js","../src/invariant.ts","../node_modules/fast-json-stable-stringify/index.js","../src/equality.ts","../src/util/stripSymbols.ts","../src/storeUtils.ts","../src/directives.ts","../src/fragments.ts","../src/util/assign.ts","../src/getFromAST.ts","../src/util/filterInPlace.ts","../src/transform.ts","../src/util/canUse.ts","../src/util/cloneDeep.ts","../src/util/environment.ts","../src/util/errorHandling.ts","../src/util/maybeDeepFreeze.ts","../src/util/mergeDeep.ts","../src/util/warnOnce.ts","../src/types/Cache.ts","../src/utils.ts","../src/cache.ts","../src/context.ts","../src/slot.ts","../src/entry.ts","../src/key-trie.ts","../src/inMemoryCache.ts","../src/fragmentMatcher.ts","../src/depTrackingCache.ts","../src/readFromStore.ts","../src/objectCache.ts","../src/writeToStore.ts","../node_modules/zen-observable/lib/Observable.js","../node_modules/zen-observable/index.js","../src/zenObservable.ts","../src/link.ts","../src/linkUtils.ts","../node_modules/graphql/language/blockString.js","../node_modules/graphql/language/printer.js","../src/httpLink.ts","../node_modules/@rxdi/graphql-client/dist/graphql.injection.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.js","../src/ApolloClient.ts","../src/core/networkStatus.ts","../src/util/Observable.ts","../src/util/arrays.ts","../src/errors/ApolloError.ts","../src/core/types.ts","../src/core/ObservableQuery.ts","../src/data/mutations.ts","../src/data/queries.ts","../src/util/capitalizeFirstLetter.ts","../src/core/LocalState.ts","../src/util/observables.ts","../src/core/QueryManager.ts","../src/data/store.ts","../src/version.ts","../node_modules/backo2/index.js","../node_modules/eventemitter3/index.js","../../src/utils/is-string.ts","../../src/utils/is-object.ts","../node_modules/graphql/language/kinds.js","../node_modules/graphql/utilities/getOperationAST.js","../src/protocol.ts","../src/defaults.ts","../src/message-types.ts","../src/client.ts","../src/webSocketLink.ts","../node_modules/@rxdi/graphql-client/dist/graphq.helpers.js","../node_modules/@rxdi/graphql-client/dist/index.js","../node_modules/@rxdi/lit-html/dist/lit-html/lit-html.js","../node_modules/@rxdi/lit-html/dist/decorators/component.decorator.js","../node_modules/@rxdi/lit-html/dist/decorators/hooks/on-destroy.js","../node_modules/@rxdi/lit-html/dist/decorators/hooks/on-init.js","../node_modules/@rxdi/lit-html/dist/decorators/hooks/on-update.js","../node_modules/@rxdi/lit-html/dist/decorators/hooks/on-update-first.js","../node_modules/@rxdi/lit-html/dist/decorators/hooks/index.js","../node_modules/@rxdi/lit-html/dist/decorators/index.js","../node_modules/@rxdi/lit-html/dist/lit-html/directive.js","../node_modules/@rxdi/lit-html/dist/lit-html/directive-helpers.js","../node_modules/@rxdi/lit-html/dist/lit-html/async-directive.js","../node_modules/@rxdi/lit-html/dist/async.js","../node_modules/@rxdi/lit-html/dist/reactive-element/css-tag.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/base.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/custom-element.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/property.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/state.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/event-options.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/query.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/query-all.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/query-async.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/query-assigned-nodes.js","../node_modules/@rxdi/lit-html/dist/reactive-element/decorators/index.js","../node_modules/@rxdi/lit-html/dist/reactive-element/polyfill-support.js","../node_modules/@rxdi/lit-html/dist/reactive-element/reactive-controller.js","../node_modules/@rxdi/lit-html/dist/reactive-element/reactive-element.js","../node_modules/@rxdi/lit-html/dist/reactive-element/index.js","../node_modules/@rxdi/lit-html/dist/lit-element/lit-element.js","../node_modules/@rxdi/lit-html/dist/lit-element/decorators.js","../node_modules/@rxdi/lit-html/dist/lit-element/index.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/class-map.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/private-async-helpers.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/async-replace.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/async-append.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/cache.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/guard.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/if-defined.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/live.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/ref.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/repeat.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/style-map.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/template-content.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/unsafe-html.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/unsafe-svg.js","../node_modules/@rxdi/lit-html/dist/lit-html/directives/until.js","../node_modules/@rxdi/lit-html/dist/index.js","../node_modules/graphql-tag/node_modules/tslib/tslib.es6.js","../node_modules/graphql/version.mjs","../node_modules/graphql/jsutils/isPromise.mjs","../node_modules/graphql/jsutils/devAssert.mjs","../node_modules/graphql/jsutils/defineToJSON.mjs","../node_modules/graphql/jsutils/isObjectLike.mjs","../node_modules/graphql/language/location.mjs","../node_modules/graphql/language/printLocation.mjs","../node_modules/graphql/error/GraphQLError.mjs","../node_modules/graphql/error/syntaxError.mjs","../node_modules/graphql/language/kinds.mjs","../node_modules/graphql/jsutils/defineToStringTag.mjs","../node_modules/graphql/language/source.mjs","../node_modules/graphql/language/tokenKind.mjs","../node_modules/graphql/language/lexer.mjs","../node_modules/graphql/language/directiveLocation.mjs","../node_modules/graphql/language/parser.mjs","../node_modules/graphql/language/visitor.mjs","../node_modules/graphql/polyfills/find.mjs","../node_modules/graphql/polyfills/flatMap.mjs","../node_modules/graphql/polyfills/objectValues.mjs","../node_modules/graphql/polyfills/objectEntries.mjs","../node_modules/graphql/jsutils/inspect.mjs","../node_modules/graphql/utilities/assertValidName.mjs","../node_modules/graphql/jsutils/keyMap.mjs","../node_modules/graphql/jsutils/mapValue.mjs","../node_modules/graphql/jsutils/toObjMap.mjs","../node_modules/graphql/jsutils/keyValMap.mjs","../node_modules/graphql/jsutils/instanceOf.mjs","../node_modules/graphql/jsutils/identityFunc.mjs","../node_modules/graphql/jsutils/invariant.mjs","../node_modules/graphql/jsutils/isInvalid.mjs","../node_modules/graphql/utilities/valueFromASTUntyped.mjs","../node_modules/graphql/type/definition.mjs","../node_modules/graphql/utilities/typeComparators.mjs","../node_modules/graphql/polyfills/isFinite.mjs","../node_modules/graphql/polyfills/isInteger.mjs","../node_modules/graphql/type/scalars.mjs","../node_modules/graphql/type/directives.mjs","../node_modules/graphql/language/printer.mjs","../node_modules/iterall/index.mjs","../node_modules/graphql/jsutils/isNullish.mjs","../node_modules/graphql/utilities/astFromValue.mjs","../node_modules/graphql/type/introspection.mjs","../node_modules/graphql/type/schema.mjs","../node_modules/graphql/type/validate.mjs","../node_modules/graphql/utilities/typeFromAST.mjs","../node_modules/graphql/utilities/TypeInfo.mjs","../node_modules/graphql/language/predicates.mjs","../node_modules/graphql/validation/rules/ExecutableDefinitions.mjs","../node_modules/graphql/validation/rules/UniqueOperationNames.mjs","../node_modules/graphql/validation/rules/LoneAnonymousOperation.mjs","../node_modules/graphql/validation/rules/SingleFieldSubscriptions.mjs","../node_modules/graphql/jsutils/didYouMean.mjs","../node_modules/graphql/jsutils/suggestionList.mjs","../node_modules/graphql/validation/rules/KnownTypeNames.mjs","../node_modules/graphql/validation/rules/FragmentsOnCompositeTypes.mjs","../node_modules/graphql/validation/rules/VariablesAreInputTypes.mjs","../node_modules/graphql/validation/rules/ScalarLeafs.mjs","../node_modules/graphql/validation/rules/FieldsOnCorrectType.mjs","../node_modules/graphql/validation/rules/UniqueFragmentNames.mjs","../node_modules/graphql/validation/rules/KnownFragmentNames.mjs","../node_modules/graphql/validation/rules/NoUnusedFragments.mjs","../node_modules/graphql/validation/rules/PossibleFragmentSpreads.mjs","../node_modules/graphql/validation/rules/NoFragmentCycles.mjs","../node_modules/graphql/validation/rules/UniqueVariableNames.mjs","../node_modules/graphql/validation/rules/NoUndefinedVariables.mjs","../node_modules/graphql/validation/rules/NoUnusedVariables.mjs","../node_modules/graphql/validation/rules/KnownDirectives.mjs","../node_modules/graphql/validation/rules/UniqueDirectivesPerLocation.mjs","../node_modules/graphql/validation/rules/KnownArgumentNames.mjs","../node_modules/graphql/validation/rules/UniqueArgumentNames.mjs","../node_modules/graphql/validation/rules/ValuesOfCorrectType.mjs","../node_modules/graphql/validation/rules/ProvidedRequiredArguments.mjs","../node_modules/graphql/validation/rules/VariablesInAllowedPosition.mjs","../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMerged.mjs","../node_modules/graphql/validation/rules/UniqueInputFieldNames.mjs","../node_modules/graphql/validation/rules/LoneSchemaDefinition.mjs","../node_modules/graphql/validation/rules/UniqueOperationTypes.mjs","../node_modules/graphql/validation/rules/UniqueTypeNames.mjs","../node_modules/graphql/validation/rules/UniqueEnumValueNames.mjs","../node_modules/graphql/validation/rules/UniqueFieldDefinitionNames.mjs","../node_modules/graphql/validation/rules/UniqueDirectiveNames.mjs","../node_modules/graphql/validation/rules/PossibleTypeExtensions.mjs","../node_modules/graphql/validation/specifiedRules.mjs","../node_modules/graphql/validation/ValidationContext.mjs","../node_modules/graphql/validation/validate.mjs","../node_modules/graphql/jsutils/memoize3.mjs","../node_modules/graphql/jsutils/promiseReduce.mjs","../node_modules/graphql/jsutils/promiseForObject.mjs","../node_modules/graphql/jsutils/Path.mjs","../node_modules/graphql/error/locatedError.mjs","../node_modules/graphql/utilities/getOperationRootType.mjs","../node_modules/graphql/jsutils/printPathArray.mjs","../node_modules/graphql/utilities/valueFromAST.mjs","../node_modules/graphql/utilities/coerceInputValue.mjs","../node_modules/graphql/execution/values.mjs","../node_modules/graphql/execution/execute.mjs","../node_modules/graphql/graphql.mjs","../node_modules/graphql/type/index.mjs","../node_modules/graphql/language/index.mjs","../node_modules/graphql/execution/index.mjs","../node_modules/graphql/subscription/mapAsyncIterator.mjs","../node_modules/graphql/subscription/subscribe.mjs","../node_modules/graphql/subscription/index.mjs","../node_modules/graphql/validation/index.mjs","../node_modules/graphql/error/formatError.mjs","../node_modules/graphql/error/index.mjs","../node_modules/graphql/utilities/introspectionQuery.mjs","../node_modules/graphql/utilities/getOperationAST.mjs","../node_modules/graphql/utilities/introspectionFromSchema.mjs","../node_modules/graphql/utilities/buildClientSchema.mjs","../node_modules/graphql/language/blockString.mjs","../node_modules/graphql/utilities/buildASTSchema.mjs","../node_modules/graphql/utilities/extendSchema.mjs","../node_modules/graphql/utilities/lexicographicSortSchema.mjs","../node_modules/graphql/utilities/schemaPrinter.mjs","../node_modules/graphql/utilities/coerceValue.mjs","../node_modules/graphql/utilities/isValidJSValue.mjs","../node_modules/graphql/utilities/isValidLiteralValue.mjs","../node_modules/graphql/utilities/concatAST.mjs","../node_modules/graphql/utilities/separateOperations.mjs","../node_modules/graphql/utilities/stripIgnoredCharacters.mjs","../node_modules/graphql/utilities/findBreakingChanges.mjs","../node_modules/graphql/utilities/findDeprecatedUsages.mjs","../node_modules/graphql/utilities/index.mjs","../node_modules/graphql/index.mjs","../src/base.service.ts","../src/tokens.ts","../src/graph.component.ts","../src/graph.module.ts","../src/settings.ts","setup-graphql.ts","../src/hooks-core.ts","../src/use-state.ts","../src/element.ts","../src/renderer.ts","../src/for.ts","../src/let.ts","../src/if.ts","../src/lens.ts","../src/render.ts","../node_modules/shades/lib/bundle.es.js","../src/part-monad.ts","../src/state.ts","../../src/component-monad/interface.ts","../../src/component-monad/component-registry.ts","../../src/component-monad/r-component.ts","../../src/component-monad/r-key.ts","../../src/component-monad/r-prop.ts","../../src/component-monad/r-props.ts","../../src/component-monad/r-type.ts","../../src/component-monad/hydrate.ts","../../src/component-monad/lit-service-element.ts","../../src/component-monad/index.ts","main.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","adopt","done","then","__generator","body","_","f","y","g","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","__createBinding","o","m","k","k2","undefined","__exportStar","exports","__values","__read","ar","error","__spread","concat","__spreadArrays","il","a","j","jl","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__esModule","default","__importDefault","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","ConfigModel","InitOptionsConfig","ExperimentalFeatures","PrivateCryptoModel","LoggerConfig","logging","hashes","date","exitHandler","init","initOptions","experimental","logger","cachedSetTimeout","cachedClearTimeout","process","module","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","runClearTimeout","marker","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","len","run","Item","array","noop","nextTick","args","title","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","nodejsCustomInspectSymbol","for","_default","inspect","_nodejsCustomInspectSymbol","_interopRequireDefault","require","obj","_typeof","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","formatValue","seenValues","JSON","stringify","formatObjectValue","String","previouslySeenValues","customInspectFn","getCustomFn","customValue","isArray","formatArray","formatObject","object","keys","getObjectTag","map","join","Math","min","remaining","items","tag","toString","replace","visit","visitInParallel","visitWithTypeInfo","getVisitFn","BREAK","QueryDocumentKeys","_inspect","Name","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","freeze","root","visitor","visitorKeys","stack","inArray","index","edits","node","parent","path","ancestors","newRoot","isLeaving","isEdited","slice","clone","_i2","_Object$keys2","editOffset","ii","editKey","editValue","splice","prev","isNode","visitFn","kind","maybeNode","Boolean","visitors","skipping","enter","fn","leave","typeInfo","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","tslib_1.__extends","defaultNormalizedCacheFactory","hasOwn","dedentBlockStringValue","rawString","lines","split","commonIndent","getBlockStringIndentation","isBlank","line","indent","leadingWhitespace","str","printBlockString","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","printAsMultipleLines","print","_visitor","_blockString","ast","printDocASTReducer","definitions","operation","varDefs","wrap","variableDefinitions","directives","selectionSet","_ref","variable","type","defaultValue","_ref2","block","selections","_ref3","alias","_ref4","_ref5","_ref6","typeCondition","_ref7","_ref8","_ref9","_ref10","isBlockString","_ref11","_ref12","_ref13","values","_ref14","fields","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","operationTypes","_ref21","addDescription","_ref22","_ref23","interfaces","_ref24","hasMultilineItems","_ref25","_ref26","_ref27","types","_ref28","_ref29","_ref30","_ref31","repeatable","locations","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","cb","description","maybeArray","separator","filter","x","start","maybeString","end","isMultiline","string","some","symbolObservablePonyfill","observable","self","window","global","Function","LinkObservable","Kind","NAME","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","INT","FLOAT","STRING","BOOLEAN","NULL","ENUM","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","getOperationAST","_kinds","documentAST","operationName","_documentAST$definiti2","definition","enumerable","__spreadArray","to","from","pack","l","__setModuleDefault","state","versionInfo","major","minor","patch","preReleaseTag","isPromise","devAssert","condition","message","defineToJSON","classObject","toJSON","isObjectLike","getLocation","source","position","lineRegexp","match","column","exec","printLocation","location","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","locationLine","sublineIndex","floor","sublineColumnNum","sublines","printPrefixedLines","subline","existingLines","padLen","max","prefix","lpad","GraphQLError","nodes","positions","originalError","extensions","_nodes","_source","loc","_positions","_locations","reduce","list","pos","_extensions","originalExtensions","defineProperties","writable","configurable","captureStackTrace","printError","output","_error$nodes2","_i4","_error$locations2","syntaxError","defineToStringTag","toStringTag","Source","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","BLOCK_STRING","COMMENT","createLexer","options","startOfFileToken","Tok","lexer","lastToken","token","lineStart","advance","advanceLexer","lookahead","readToken","isPunctuatorToken","printCharCode","code","isNaN","fromCharCode","toUpperCase","bodyLength","positionAfterWhitespace","col","charCodeAt","readComment","readName","readNumber","readBlockString","readString","unexpectedCharacterMessage","startPosition","firstCode","isFloat","readDigits","chunkStart","charCode","uniCharCode","invalidSequence","rawValue","char2hex","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","parse","parser","Parser","parseDocument","parseValue","expectToken","parseValueLiteral","parseType","parseTypeReference","sourceObj","_lexer","_options","_proto","parseName","many","parseDefinition","peek","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","parseVariable","expectOptionalToken","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","item","parseConstArgument","parseArgument","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","_this","any","_this2","parseObjectField","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","parseOperationTypeDefinition","parseImplementsInterfaces","parseFieldsDefinition","allowLegacySDLImplementsInterfaces","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","parseDirectiveLocations","parseDirectiveLocation","startToken","noLocation","Loc","getTokenDesc","atToken","openKind","parseFn","closeKind","endToken","find","predicate","flatMap","flatMapMethod","_item","objectValues","objectEntries","entries","NAME_RX","assertValidName","isValidNameError","test","keyMap","keyFn","mapValue","_objectEntries2","_key","_value","toObjMap","getPrototypeOf","keyValMap","valFn","identityFunc","invariant","isInvalid","valueFromASTUntyped","valueNode","variables","parseInt","parseFloat","field","variableName","ownKeys","enumerableOnly","symbols","sym","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","isType","isScalarType","isObjectType","isInterfaceType","isUnionType","isEnumType","isInputObjectType","isListType","isNonNullType","assertType","GraphQLScalarType","assertScalarType","GraphQLObjectType","assertObjectType","GraphQLInterfaceType","assertInterfaceType","GraphQLUnionType","assertUnionType","GraphQLEnumType","assertEnumType","GraphQLInputObjectType","assertInputObjectType","GraphQLList","assertListType","GraphQLNonNull","assertNonNullType","isInputType","isWrappingType","ofType","assertInputType","isOutputType","assertOutputType","isLeafType","assertLeafType","isCompositeType","assertCompositeType","isAbstractType","assertAbstractType","assertNullableType","assertWrappingType","isNullableType","getNullableType","isNamedType","assertNamedType","getNamedType","unwrappedType","resolveThunk","thunk","undefineIfEmpty","arr","config","serialize","parseLiteral","astNode","extensionASTNodes","toConfig","isTypeOf","_fields","defineFieldMap","bind","_interfaces","defineInterfaces","_proto2","getFields","getInterfaces","fieldsToFieldsConfig","fieldMap","isPlainObj","fieldConfig","fieldName","argsConfig","argName","arg","subscribe","isDeprecated","deprecationReason","argsToArgsConfig","isRequiredArgument","resolveType","_proto3","_types","defineTypes","_proto4","getTypes","_values","defineEnumValues","_valueLookup","Map","enumValue","_nameLookup","_proto5","getValues","getValue","_variables","typeName","valueMap","valueName","defineInputFieldMap","_proto6","isRequiredInputField","isEqualType","typeA","typeB","isTypeSubTypeOf","schema","maybeSubType","superType","isPossibleType","doTypesOverlap","getPossibleTypes","isFinitePolyfill","Number","isFinite","isInteger","MAX_INT","MIN_INT","serializeInt","num","coerceInt","GraphQLInt","serializeFloat","coerceFloat","GraphQLFloat","serializeObject","valueOf","valueOfResult","serializeString","coerceString","GraphQLString","serializeBoolean","coerceBoolean","GraphQLBoolean","serializeID","coerceID","GraphQLID","specifiedScalarTypes","isSpecifiedScalarType","isDirective","directive","GraphQLDirective","assertDirective","isRepeatable","GraphQLIncludeDirective","if","GraphQLSkipDirective","DEFAULT_DEPRECATION_REASON","GraphQLDeprecatedDirective","reason","specifiedDirectives","isSpecifiedDirective","SYMBOL","SYMBOL_ITERATOR","$$iterator","isIterable","getIteratorMethod","isArrayLike","isCollection","getIterator","iterable","method","createIterator","collection","ArrayLikeIterator","_o","_i","callback","SYMBOL_ASYNC_ITERATOR","$$asyncIterator","isAsyncIterable","getAsyncIteratorMethod","getAsyncIterator","asyncIterable","createAsyncIterator","AsyncFromSyncIterator","unwrapAsyncFromSync","forAwaitEach","catch","return","throw","isNullish","astFromValue","astValue","itemType","valuesNodes","itemNode","fieldNodes","_objectValues2","fieldValue","serialized","stringNum","integerStringRegExp","__Schema","__Type","getTypeMap","queryType","getQueryType","mutationType","getMutationType","subscriptionType","getSubscriptionType","__Directive","getDirectives","__DirectiveLocation","__InputValue","__TypeKind","TypeKind","NON_NULL","__Field","includeDeprecated","possibleTypes","context","enumValues","__EnumValue","inputFields","inputVal","valueAST","SchemaMetaFieldDef","TypeMetaFieldDef","getType","TypeNameMetaFieldDef","parentType","introspectionTypes","isIntrospectionType","isSchema","GraphQLSchema","assertSchema","assumeValid","__validationErrors","allowedLegacyNames","__allowedLegacyNames","_queryType","query","_mutationType","mutation","_subscriptionType","subscription","_directives","initialTypes","typeMap","typeMapReducer","typeMapDirectiveReducer","_typeMap","_possibleTypeMap","_implementations","_type$getInterfaces2","iface","impls","abstractType","possibleType","_i6","_this$getPossibleType2","getDirective","namedType","seenType","reducedMap","_i8","_objectValues4","_i10","_objectValues6","_map","validateSchema","SchemaValidationContext","validateRootTypes","validateDirectives","validateTypes","errors","getErrors","assertValidSchema","_errors","reportError","addError","getOperationTypeNode","operationNodes","getAllSubNodes","_context$schema$getDi2","validateName","argNames","_loop","_directive$args2","validateInputObjectCircularRefs","createInputObjectCircularRefsValidator","validateFields","validateObjectInterfaces","validateUnionMembers","validateEnumValues","validateInputFields","getAllNodes","_loop2","_i12","_field$args2","implementedTypeNames","_i14","_object$getInterfaces2","getAllImplementsInterfaceNodes","validateObjectImplementsInterface","objectFieldMap","ifaceFieldMap","_i16","ifaceField","objectField","_loop3","_i18","_ifaceField$args2","ifaceArg","objectArg","_loop4","_i20","_objectField$args2","union","memberTypes","includedTypeNames","_i22","memberType","getUnionMemberTypeNodes","enumType","_i24","inputObj","_i26","visitedTypes","fieldPath","fieldPathIndexByTypeName","detectCycleRecursive","_i28","fieldType","cycleIndex","cyclePath","pathStr","fieldObj","getter","typeNode","ifaceNode","unionNode","typeFromAST","innerType","TypeInfo","getFieldDefFn","initialType","_schema","_typeStack","_parentTypeStack","_inputTypeStack","_fieldDefStack","_defaultValueStack","_directive","_argument","_enumValue","_getFieldDef","getFieldDef","getParentType","getInputType","getParentInputType","getDefaultValue","getArgument","getEnumValue","fieldDef","typeConditionAST","outputType","inputType","argDef","argType","fieldOrDirective","listType","objectType","inputFieldType","inputField","fieldNode","isDefinitionNode","isExecutableDefinitionNode","isTypeSystemDefinitionNode","isTypeSystemExtensionNode","isSelectionNode","isValueNode","isTypeNode","isTypeDefinitionNode","isTypeExtensionNode","nonExecutableDefinitionMessage","defName","ExecutableDefinitions","_node$definitions2","duplicateOperationNameMessage","UniqueOperationNames","knownOperationNames","anonOperationNotAloneMessage","LoneAnonymousOperation","operationCount","singleFieldOnlyMessage","SingleFieldSubscriptions","MAX_SUGGESTIONS","didYouMean","firstArg","secondArg","subMessage","suggestions","selected","lastItem","suggestionList","input","optionsByDistance","inputThreshold","option","distance","lexicalDistance","sort","aStr","bStr","toLowerCase","aLength","bLength","_i3","_j","cost","unknownTypeMessage","suggestedTypes","KnownTypeNames","getSchema","existingTypesMap","definedTypes","_context$getDocument$2","getDocument","def","typeNames","_1","_2","definitionNode","isSDL","isSDLNode","isSpecifiedScalarName","specifiedScalarsNames","inlineFragmentOnNonCompositeErrorMessage","fragmentOnNonCompositeErrorMessage","fragName","FragmentsOnCompositeTypes","nonInputTypeOnVarMessage","VariablesAreInputTypes","noSubselectionAllowedMessage","requiredSubselectionMessage","ScalarLeafs","undefinedFieldMessage","suggestedTypeNames","suggestedFieldNames","quotedTypeNames","quotedFieldNames","FieldsOnCorrectType","getSuggestedTypeNames","getSuggestedFieldNames","suggestedObjectTypes","interfaceUsageCount","_schema$getPossibleTy2","_possibleType$getInte2","possibleInterface","suggestedInterfaceTypes","possibleFieldNames","duplicateFragmentNameMessage","UniqueFragmentNames","knownFragmentNames","fragmentName","unknownFragmentMessage","KnownFragmentNames","getFragment","unusedFragMessage","NoUnusedFragments","operationDefs","fragmentDefs","fragmentNameUsed","_context$getRecursive2","getRecursivelyReferencedFragments","fragmentDef","typeIncompatibleSpreadMessage","fragType","typeIncompatibleAnonSpreadMessage","PossibleFragmentSpreads","getFragmentType","frag","cycleErrorMessage","spreadNames","via","NoFragmentCycles","visitedFrags","spreadPath","spreadPathIndexByName","fragment","spreadNodes","getFragmentSpreads","spreadNode","spreadName","spreadFragment","fragmentNames","duplicateVariableMessage","UniqueVariableNames","knownVariableNames","undefinedVarMessage","varName","opName","NoUndefinedVariables","variableNameDefined","usages","getRecursiveVariableUsages","unusedVariableMessage","NoUnusedVariables","variableDefs","variableNameUsed","_variableDefs2","variableDef","unknownDirectiveMessage","directiveName","misplacedDirectiveMessage","KnownDirectives","locationsMap","definedDirectives","astDefinitions","candidateLocation","getDirectiveLocationForASTPath","appliedTo","parentNode","duplicateDirectiveMessage","UniqueDirectivesPerLocation","uniqueDirectiveMap","knownDirectives","unknownArgMessage","suggestedArgs","unknownDirectiveArgMessage","KnownArgumentNames","KnownArgumentNamesOnDirectives","argNode","knownArgsNames","directiveArgs","directiveNode","knownArgs","_directiveNode$argume2","duplicateArgMessage","UniqueArgumentNames","knownArgNames","badValueMessage","badEnumValueMessage","suggestedValues","requiredFieldMessage","fieldTypeName","unknownFieldMessage","suggestedFields","ValuesOfCorrectType","isValidScalar","fieldNodeMap","typeStr","enumTypeSuggestion","locationType","parseResult","allNames","missingFieldArgMessage","missingDirectiveArgMessage","ProvidedRequiredArguments","ProvidedRequiredArgumentsOnDirectives","argNodes","argNodeMap","_fieldDef$args2","requiredArgsMap","isRequiredArgumentNode","requiredArgs","badVarPosMessage","varType","expectedType","VariablesInAllowedPosition","varDefMap","varDef","allowedVariableUsage","varDefaultValue","locationDefaultValue","nullableLocationType","fieldsConflictMessage","responseName","reasonMessage","subreason","OverlappingFieldsCanBeMerged","comparedFragmentPairs","PairSet","cachedFieldsAndFragmentNames","conflicts","findConflictsWithinSelectionSet","_ref2$","fields1","fields2","_getFieldsAndFragment","getFieldsAndFragmentNames","collectConflictsWithin","comparedFragments","collectConflictsBetweenFieldsAndFragment","collectConflictsBetweenFragments","areMutuallyExclusive","_getReferencedFieldsA","getReferencedFieldsAndFragmentNames","fieldMap2","fragmentNames2","collectConflictsBetween","fragmentName1","fragmentName2","add","fragment1","fragment2","_getReferencedFieldsA2","fieldMap1","fragmentNames1","_getReferencedFieldsA3","findConflictsBetweenSubSelectionSets","parentType1","selectionSet1","parentType2","selectionSet2","_getFieldsAndFragment2","_getFieldsAndFragment3","_comparedFragments","_i5","conflict","findConflict","parentFieldsAreMutuallyExclusive","_i7","field1","field2","node1","def1","node2","def2","type1","type2","name1","name2","sameArguments","doTypesConflict","subfieldConflicts","arguments1","arguments2","every","argument1","argument2","argument","sameValue","value1","value2","cached","nodeAndDefs","_collectFieldsAndFragmentNames","fragmentType","_i9","_selectionSet$selecti2","selection","inlineFragmentType","allFields","_data","first","_pairSetAdd","data","duplicateInputFieldMessage","UniqueInputFieldNames","knownNameStack","knownNames","schemaDefinitionNotAloneMessage","canNotDefineSchemaWithinExtensionMessage","LoneSchemaDefinition","oldSchema","alreadyDefined","schemaDefinitionsCount","duplicateOperationTypeMessage","existedOperationTypeMessage","UniqueOperationTypes","definedOperationTypes","existingOperationTypes","checkOperationTypes","operationType","alreadyDefinedOperationType","duplicateTypeNameMessage","existedTypeNameMessage","UniqueTypeNames","knownTypeNames","checkTypeName","duplicateEnumValueNameMessage","existedEnumValueNameMessage","UniqueEnumValueNames","existingTypeMap","knownValueNames","checkValueUniqueness","valueNames","_node$values2","valueDef","existingType","duplicateFieldDefinitionNameMessage","existedFieldDefinitionNameMessage","UniqueFieldDefinitionNames","knownFieldNames","checkFieldUniqueness","fieldNames","_node$fields2","hasField","duplicateDirectiveNameMessage","existedDirectiveNameMessage","UniqueDirectiveNames","knownDirectiveNames","_defKindToExtKind","extendingUnknownTypeMessage","extendingDifferentTypeKindMessage","PossibleTypeExtensions","checkExtension","defNode","expectedKind","defKindToExtKind","extensionKindToTypeName","_expectedKind","typeToExtKind","allTypeNames","specifiedRules","specifiedSDLRules","_inheritsLoose","subClass","superClass","ASTValidationContext","onError","_ast","_fragments","_fragmentSpreads","_recursivelyReferencedFragments","_onError","fragments","frags","statement","spreads","setsToVisit","_set$selections2","nodesToVisit","collectedNames","_this$getFragmentSpre2","spread","SDLValidationContext","_ASTValidationContext","ValidationContext","_ASTValidationContext2","_typeInfo","_variableUsages","_recursiveVariableUsages","getVariableUsages","newUsages","_this$getRecursivelyR2","ABORT_VALIDATION","validate","rules","abortObj","maxErrors","rule","validateSDL","schemaToExtend","assertValidSDL","assertValidSDLExtension","memoize3","cache0","memoized","a1","a2","a3","WeakMap","cache1","cache2","cachedValue","newValue","promiseReduce","initialValue","previous","resolved","promiseForObject","valuesAndPromises","all","resolvedObject","addPath","pathToArray","curr","flattened","reverse","locatedError","getOperationRootType","printPathArray","valueFromAST","variableValue","coercedValues","_valueNode$values2","isMissingVariable","itemValue","coercedValue","coercedObj","_error","coerceInputValue","inputValue","coerceInputValueImpl","defaultOnError","invalidValue","errorPrefix","_coercedValue","fieldDefs","_suggestions","getVariableValues","varDefNodes","inputs","coerced","coerceVariableValues","varDefNode","varTypeStr","_varTypeStr","_varTypeStr2","getArgumentValues","variableValues","_def$args2","argumentNode","isNull","getDirectiveValues","directiveDef","prop","execute","argsOrSchema","document","rootValue","contextValue","fieldResolver","typeResolver","executeImpl","assertValidExecutionArguments","exeContext","buildExecutionContext","buildResponse","executeOperation","rawVariableValues","hasMultipleAssumedOperations","_document$definitions2","coercedVariableValues","defaultFieldResolver","defaultTypeResolver","collectFields","executeFieldsSerially","executeFields","sourceValue","results","resolveField","resolvedResult","containsPromise","runtimeType","visitedFragmentNames","shouldIncludeNode","getFieldEntryKey","doesFragmentConditionMatch","skip","include","typeConditionNode","conditionalType","resolveFn","info","buildResolveInfo","resolveFieldValueOrError","completeValueCatchingError","returnType","asErrorInstance","completed","completeValue","handleFieldError","rawError","completeListValue","completeLeafValue","completeAbstractValue","completeObjectValue","completedResults","completedItem","serializedResult","resolveTypeFn","resolvedRuntimeType","ensureValidRuntimeType","runtimeTypeOrName","resolvedIsTypeOf","invalidReturnTypeError","collectAndExecuteSubfields","collectSubfields","_collectSubfields","subFieldNodes","__typename","promisedIsTypeOfResults","isTypeOfResult","isTypeOfResults","property","graphql","graphqlImpl","graphqlSync","schemaValidationErrors","validationErrors","mapAsyncIterator","rejectCallback","$return","abruptClose","mapReject","mapResult","asyncMapValue","iteratorResult","rethrow","subscribeFieldResolver","subscribeImpl","reportGraphQLError","sourcePromise","createSourceEventStream","mapSourceToResponse","payload","resultOrStream","eventStream","formatError","getIntrospectionQuery","descriptions","introspectionQuery","introspectionFromSchema","queryAST","buildClientSchema","introspection","__schema","schemaIntrospection","typeIntrospection","buildType","buildScalarDef","scalarIntrospection","buildObjectDef","objectIntrospection","getInterfaceType","buildFieldDefMap","buildInterfaceDef","interfaceIntrospection","buildUnionDef","unionIntrospection","getObjectType","buildEnumDef","enumIntrospection","valueIntrospection","buildInputObjectDef","inputObjectIntrospection","buildInputValueDefMap","stdType","buildDirective","directiveIntrospection","typeRef","itemRef","nullableRef","nullableType","getOutputType","fieldIntrospection","inputValueIntrospections","buildInputValue","inputValueIntrospection","buildASTSchema","schemaDef","assumeValidSDL","typeDefs","directiveDefs","astBuilder","ASTDefinitionBuilder","keyByNameNode","getOperationTypes","opTypes","_schema$operationType2","stdTypeMap","_resolveType","getWrappedType","getDescription","buildArg","buildField","getDeprecationReason","buildInputField","buildEnumValue","_makeTypeDef","_makeInterfaceDef","_makeEnumDef","_makeUnionDef","_makeScalarDef","_makeInputObjectDef","_this3","interfaceNodes","ref","_this4","_this5","valueNodes","_this6","typeNodes","_this7","deprecated","commentDescriptions","getLeadingCommentBlock","comments","buildSchema","extendSchema","typeExtsMap","schemaExts","extendedTypeName","existingTypeExts","schemaConfig","_schemaConfig$types2","extendNamedType","_schemaDef$operationT2","schemaExt","_schemaExt$operationT2","_operation","_type","existingDirectives","getMaybeTypeByName","extendDirective","replaceType","replaceNamedType","extendScalarType","extendObjectType","extendField","extendInterfaceType","extendUnionType","extendEnumType","extendInputObjectType","extendArg","lexicographicSortSchema","sortByName","sortNamedType","sortTypes","sortFields","_config","_config2","_config3","sortObjMap","_config4","sortInputFields","sortDirective","sortBy","sortArgs","replaceMaybeType","maybeType","fieldsMap","sortValueFn","sortedMap","sortedKeys","mapToKey","obj1","obj2","key1","key2","localeCompare","printSchema","printFilteredSchema","isDefinedType","printIntrospectionSchema","directiveFilter","typeFilter","printSchemaDefinition","printDirective","printType","isSchemaOfCommonNames","printScalar","printObject","printInterface","printUnion","printEnum","printInputObject","printDescription","implementedInterfaces","printFields","printDeprecated","printBlock","printInputValue","printArgs","defaultAST","argDecl","fieldOrEnumVal","reasonAST","firstInBlock","descriptionLines","printDescriptionWithComments","text","maxLen","rawLines","breakLine","parts","RegExp","coerceValue","blameNode","errorPath","pathArray","isValidJSValue","isValidLiteralValue","emptySchema","emptyDoc","concatAST","asts","separateOperations","operations","fromName","depGraph","idx","toName","separatedDocumentASTs","dependencies","collectTransitiveDependencies","n1","n2","collected","immediateDeps","_Object$keys4","stripIgnoredCharacters","strippedBody","wasLastAddedTokenNonPunctuator","currentToken","tokenKind","isNonPunctuator","tokenBody","dedentBlockString","blockStr","rawStr","lastChar","BreakingChangeType","TYPE_REMOVED","TYPE_CHANGED_KIND","TYPE_REMOVED_FROM_UNION","VALUE_REMOVED_FROM_ENUM","REQUIRED_INPUT_FIELD_ADDED","INTERFACE_REMOVED_FROM_OBJECT","FIELD_REMOVED","FIELD_CHANGED_KIND","REQUIRED_ARG_ADDED","ARG_REMOVED","ARG_CHANGED_KIND","DIRECTIVE_REMOVED","DIRECTIVE_ARG_REMOVED","REQUIRED_DIRECTIVE_ARG_ADDED","DIRECTIVE_LOCATION_REMOVED","DangerousChangeType","VALUE_ADDED_TO_ENUM","TYPE_ADDED_TO_UNION","OPTIONAL_INPUT_FIELD_ADDED","OPTIONAL_ARG_ADDED","INTERFACE_ADDED_TO_OBJECT","ARG_DEFAULT_VALUE_CHANGE","findBreakingChanges","newSchema","breakingChanges","findSchemaChanges","change","findDangerousChanges","dangerousChanges","findTypeChanges","findDirectiveChanges","schemaChanges","directivesDiff","diff","_directivesDiff$remov2","removed","oldDirective","_directivesDiff$persi2","persisted","_oldDirective","newDirective","argsDiff","_argsDiff$added2","added","newArg","_argsDiff$removed2","oldArg","_oldDirective$locatio2","typesDiff","_typesDiff$removed2","oldType","_typesDiff$persisted2","_oldType","newType","findEnumTypeChanges","findUnionTypeChanges","findInputObjectTypeChanges","findObjectTypeChanges","findFieldChanges","typeKindName","fieldsDiff","_fieldsDiff$added2","newField","_fieldsDiff$removed2","oldField","_fieldsDiff$persisted2","_oldField","_newField","isChangeSafeForInputObjectFieldOrFieldArg","possibleTypesDiff","_possibleTypesDiff$ad2","newPossibleType","_possibleTypesDiff$re2","oldPossibleType","valuesDiff","_valuesDiff$added2","_valuesDiff$removed2","oldValue","interfacesDiff","_i30","_interfacesDiff$added2","newInterface","_i32","_interfacesDiff$remov2","oldInterface","_i34","_fieldsDiff$removed4","_i36","_fieldsDiff$persisted4","_oldField2","findArgChanges","isChangeSafeForObjectOrInterfaceField","_i38","_argsDiff$removed4","_i40","_argsDiff$persisted2","_oldArg","oldValueStr","stringifyValue","newValueStr","_i42","_argsDiff$added4","_newArg","sortedAST","objectNode","fieldA","fieldB","oldArray","newArray","oldMap","newMap","_i44","oldItem","newItem","_i46","_newItem","findDeprecatedUsages","enumVal","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_toArray","_iterableToArray","_toConsumableArray","_arrayWithoutHoles","_nonIterableSpread","arr2","iter","_arr","_n","_d","_e","_s","err","attr","_len","params","traversal","setter","Set","toFP","native","overrides","fixedArgs","coll","fxn","into","Constructor","override","_overrides","iteratorFilter","pred","acc","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_overrides2","iteratorMap","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","promise","_overrides3","iteratorFind","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_overrides4","iteratorSome","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","_overrides5","iteratorReduce","base","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","_iteratorNormalCompletion6","_didIteratorError6","_iteratorError6","_step6","_iterator6","cons","xs","unshift","rest","ys","append","prepend","compile","lens","includes","optional","compose","lenses","traverser","shortCircuited","nextState","aux","_len2","_key2","_lenses","first$$1","rest$$1","pattern","bindingGet","greaterThan","lessThan","greaterThanEq","lessThanEq","toggle","bool","returns","val","isObject","isValue","identity","flip","always","not","and","fs","or","_len3","_key3","_len4","_key4","curry","_curry","sub","inc","dec","snippet","includesi","foldOf","maxOf","minOf","findOf","sumOf","productOf","set$1","matching","predFxn","all$1","unless","updateAll","updaters","currState","transformer","withOf","of","foldBy","reducer","findBy","maxBy","minBy","maybe","valueOr","fill","filling","out"],"mappings":"AaAA,AwPAA,A6FAA,ACAA,AEAA,ADAA,AoBAA,A4C2HC,A0F7BA,AtGnCD,A6BgPC,AtB0HA,A4FvYA,a9e7BD,AwPAA,A6FAA,ACAA,AEAA,ADAA,AoBKA,A4CqHC,A0FrHM,AtGqDP,A6BgPC,AtB0HA,A4FvYA,O9e7BD,AwPAA,A6FAA,ACAA,AEAA,ADAA,AoBKA,A4CqHC,AZhED,A6BgPC,AtB0HA,A4FvYA,EGxBe4T,EAAuBC,GAEjCC,IAAAA,EAAQD,EjfPd,AwPAA,A6FAA,ACAA,AEAA,ADAA,AoBKA,A4CqHC,A0FnHuBE,AtGmDxB,A6BgPC,AtB0HA,A4FvYA,MGtB6B,EjfP9B,AwPAA,A6FAA,ACAA,AEAA,ADAA,AoBKA,A4CqHC,AZhED,A6BgPC,AtB0HA,A4FvYA,a9e7BD,AwPAA,A6FAA,ACAA,AEAA,ADAA,AoBKA,A4CqHC,AZhED,A6BgPC,AtB0HA,A4FvYA,C9e7BD,AwPAA,A6FAA,ACAA,AEAA,ADAA,AoBKA,A4CqHC,A0FjHKC,AtGiDN,A6BgPC,AtB0HA,A4FvYA,EGpBoBC,EAA0BH,GjfT/C,AwPAA,A6FAA,ACAA,AEAA,ADAA,AoBKA,A4CqHC,A0F/GKE,AtG+CN,A6BgPC,AtB0HA,A4FvYA,GGlBsB,C1F+GtB,AZhED,A6BgPC,AtB0HA,A4FvYA,GGlBKA,EACG,G1F8GR,AZhED,A6BgPC,AtB0HA,A4FvYA,CGjBQ,IAAI9S,CzE8RZ,AtB0HA,C+FxZgB,C1F8GhB,AiB3HD,AtBqaC,C+FxZmBA,C1FXpB,AZyDA,CsG9CwB4S,CtGVjB,A6BHP,CyEa8BzS,C1FX9B,AiBFA,EjBEA,AZCW+Y,AOkaV,A4FvYA,EvF5BD,AZCkBja,AmGHlB,EGasCe,EzEbtC,AsEAA,EGcM4S,AHdN,CnGGyB7C,CYDzB,A0FYY/P,GAAK4S,EAAM5S,CtGXS,AOka/B,A4FraD,CnGKEmZ,CsGSwBrI,A/FuZzB,CsBpaD,EAAA,C7BIQ,EsGSwBgC,E/FuZ/B,C+FlZQF,EtGZPwG,A6BNF,GyEkBSxG,EAAMzS,GHZR,CnGAK,GsGYY,C1FwGvB,E0FxG4B6S,A/FkZ5B,E+FlZoCJ,AzEZ9B,AtB8ZN,A4F9ZekJ,EGY2B,AHZXE,CnGC9B3C,CmGD2C4C,CvFoH5C,EAAA,A0FvGGrJ,AHVG,C5F2ZN,C+FjZSlN,AzEbMkO,CjBoHf,CiBpHqBG,AsEChBG,GtEAG,CsEAHA,EvFmHL,A0FpGQtB,AHfS,E5F6ZjB,CK1SA,CiBnHQ,AtB6ZR,CK1SA,A0FpGQA,AHbE5B,CtEFI+C,CyEeA5T,AtGfS,AmGEP,CtEFF4T,CsEEKmI,EAAyBF,C5F2Z5C,C4F3ZwD/H,CGajC,CzEfTF,CjBmHd,C0FpG4Bf,AzEfT,CjBmHnB,AiBlHGf,AtB4ZH,CK1SA,A0FpGoCW,EAAMA,EAAMzS,CzEdtC6T,CsEC2DhD,C5F2ZrE,CK1SA,AuFjH2EkL,CtEG5E,C7BJE5C,AmGCiGnZ,CvFVnG,A0FuB0D,EzEVtD6T,EAAqB,CyEWrBpB,AzEVFxF,CsEJyG4D,CGcjGlN,E1FxBDmH,CiBcD,AsEJ0G,CvFVjGD,AuFWTmR,EGiBCvJ,C1F5BuU3H,CuFWxUkR,EAAaD,EnGFE,A6BKD3L,AtBuZrB,A4F1Z2CS,CGiBnC4B,C1F5B0F3H,ALAnG,C+F4BeoB,AzEbJkE,AsEFH4L,CvFbsC,ELA9C,A4FaQA,EGeY,A/F5BpB,A4FamBzK,EtEERnB,AtBfX,EsBegBjO,EyEgBT,CHlBqB4W,EAAKG,C5FbjC,CsBiBE7L,E7BPA+L,CmGG+BF,CvFbE5V,A0F+BnBsP,EAA0BH,GAGnC,AzEjBK,GjBjB2E,C0FgCjFE,GtGtBW,CsGsBXA,CzEfwBvC,CyEeT,EzEdV,CtBmZV,E+FnYUvQ,AHpBD,EGoBK,CzEhBJ,AsEJAic,CGoBOjc,C1FlCiDyD,C0FkC7CmP,AHXT,CnGZX4G,A6BOejJ,AtBmZhB,C+FnY2BpQ,CzEhBNgK,AtBmZrB,A4F9YgBgS,EAAWhS,CvFvB8CzG,ALqazE,CP1ZQ,EsGuB2B1D,AzEblCqN,EsEEkC8O,EGWK,A/FmYxC,A4F9Y8ChS,CGYvC8I,C1FnCqG,AZY3GwG,COyZD,E+FlYOxG,AzEdI,AtBgZX,A4F9YmD3Q,EGYrCsQ,EAAM5S,E1FnCyGgL,AZYlH,CsGwBJkI,CHbsD+I,CvFvB8E,A0FoC3H9I,AzEfa5C,CsEGf4L,CGYoBlJ,A/FiYlC,CsB/YU5G,CtB+YV,C+F/XO6G,A/F+XP,G+F/XOA,AtGxBNwG,AmGUayC,EtEFJ9P,EyEgBQ4G,AzEhBH1C,CtB+Yf,CKrakJvF,A0FsC3H7K,AzEhBH8T,AsERK,CAIdC,C5FjBL,CKDuK,CuFkBlKA,E5FjBDhH,A4FkBM,E5FlBc,CAC7BE,C+FwCuB,AtG5BN,EYd4KpC,AiBsB7J,CsEHjB,C5FjBT,CKFqMA,E0F0CrM8H,A/FvCNzF,C4FmBM6G,EGoByBhB,AzEpBW,AsEAxBiJ,EvFtByLnR,A0F0CnK8H,CHbjCoB,EvF7B6N,C0F6C3M,AzErBzB5G,AtBrBU,CPYVqM,AOZW,G4F0BJzF,CGcHpB,EAAeI,IAGb,K/F1CN5F,C+F+COwF,AtGpCU,CYfwMrP,EiBwBpM,IyE2BG,E1FnD0NuH,EAAIvL,CiBwBpM8Q,EyE2B3CuC,CzE1BDlP,CyE0ByB,CtGnC/BgW,CsGmCmC9G,CzE1B7BlP,AtBrBe,C+FkDvB,A/FlDwB,CsBqBX2M,EAAK2D,EjBzBsPzQ,ELIxO,E+FkDvB0P,EAAkBC,E1FtDuPpI,AiB0B1Qb,CyE+BCnK,CzE/BMuQ,EjB1B2Q9M,AZgBnQ,A6BUH0G,CyE6BdnK,IAAAA,AzE5BEmU,EjB3ByRzU,A0FuDvR,AzE5BQ0U,EyE8BTpU,AzE9Bc,EyE8BVoT,C/FrD0C,C+FqDtCjT,AzE9BWkM,EAAKkE,EjB3B4Q,AiB2BvQ8D,I7BTpCwF,CsGuCqC,G/FrD8B,G+FqDzCzG,EAAIpT,AtGvCpB,GYlBmTgL,C0FyDtQ,G1FzD+RA,AiB2B7R,GjBxB3D,C0FsD8CoI,AtGtC5C0G,AOdAvM,E+FoDgDvN,AzE9BgB,CjBxB9DkL,CZgBG,CYhBgB,E0FuDnBlL,AzE9BIsU,CjBxBJnJ,CiBwBiBkB,CjBxBK,C0FyDjBrM,AzEjCiBuQ,CjBnBX,CiBmBgB+D,E7BR7ByF,GsGyCO/Z,C/FxDa,C+F2DtB,A/F3DuB,CKIC4K,AZWf,EYXuBtI,CiBmBW,EjBlBlC8I,G0FsDA4H,AzEnCDuB,EyEmCSnB,AzEnCM7C,AtBxBY,EKK1BnF,AiBmBmBmJ,CyEoCnBpB,AtG5CP6G,CYXmB1X,EAAO,CLLe,GKQ3C,A0FoDS6Q,AtG5CC,EsG4CiBC,GzEjChB,EyEiCyBA,E1FpD3BhI,A0FoD+BjL,E1FpDnBmC,CiBmBT6H,AtB3B+C,CKQ/BkB,CZS1B4O,C6BUmB3F,CjBlBXrJ,A0F4DH,EzE1C6BkJ,GAAkB,C7BV3C,CYRDlJ,EAAQ3I,A0F4DF+Q,C/FpEd7F,C+FoE+BlL,E1F3DxB,C0F4DHgR,CzE3CyC1P,EjBjBtC,AiBiBsEyI,CyE2CzEiH,CzE3C8E,AtB1BxE,C+FqEQpT,AzE3CiE0D,AtB1BxE,CPiBXsW,C6BSuF7N,EAAK,CAAClC,CjBhBlFmB,AZOL,C6BS6F6I,CtBzBnG1G,E+FoE4BtN,CzE3CkFmU,EjBhBnGhJ,AiBgB+GiJ,GAAe,CyE2CpG,C1F3DrBhJ,AZQhB4O,G6BQ8D5F,AtBzBhD,CAAC,CPiBT,C6BUNhH,CyEyC2DlJ,G1F3DjC/B,C0F2DgBpC,E1FzDnC,IAAA,AZOPka,COjBA1M,G+FmEoD,CtGlD9C,EsGkDiExN,A/FnEhE,CsB0Ba,AtB1BZ,GKWGoC,KLXM,C+FmEgE,AtGjDjF+X,A6BQgD7F,CjBfrClS,EAAM6H,A0FwDqE,AzExChFsK,GyEyCFlB,A/FpEqB,CPkBjB,A6BSFkB,CjBhBkB,A0FyDEvU,CzEzCTsU,EAAKC,OyEyCctU,A/FpEE,EsB4BhCuU,CjBjB+B7P,AZQrCyV,C6BSa9F,EAAKE,CyEwC2B,G1FzDDpS,CiBkBtCqS,CjBlB4CxK,CiBkB7BqK,AtB7B+B,E+FoEenQ,AzEvCzCsQ,C7BVZ,CYR0C,E0FyDNzU,G1FzDa,MiBmBzDoU,CyEsCsD,A/FnE5D3G,CPoBA4M,A6BSmB/F,EAAKF,CyEsCuDpU,E1FvDxE,GLZG,CKYH,ALZI,CPoBA,GsG+C8E,AzErChFuU,GyEsCLjB,A/FpEe,EKaXlR,C0FuDoC,CzEtCnCmS,E7BRT+F,A6BQoB,CyEsCDlY,E1FvDD,A0FuDO9B,A/FnEzBoN,EsB6B2B8G,EAAON,EAAK,CjBjB/B9R,C0FuDyB,AtG9CrB,CYRC,GiBgBiCqS,EyEuC1ClB,CzEvC0DW,AtB7B9C,CKgBL5I,A0FoDwB,A/FpElB,CsB6BkD,CjBbtClJ,EAAO+I,AZMpCoP,C6BOwEpO,CyEuClD/J,C1FlDpB,AiBW2EgS,AtB7BpD,C+FoEG,CzEvC6D,GyEuClC,EtG9C5C,CYHA7I,CiBYXgC,GyEqC0CnL,EAAM,A/FnEhDuL,CKkBWpC,E0FkDPiI,CtG9CJgH,CsG8CmD,G1FlDjCpY,AiBYJ,GyEsCSA,C1F9CzB,C0F8C+BA,EAAMnC,A/FpEnB,CAAC,CsB8BmByU,C7BRrB,E6BUNC,CjBVFrJ,C0F8CqC,C1F9CnBlJ,EAAOoJ,A0F+C5BiI,EzErCKkB,CjBTLnJ,A0F8CwB8H,CzEtCToB,EyEsCyBlB,AzEtCnBoB,CjBRoB,AZC7C6F,AOxBkC,E+FqE8BpH,E1F9C5D7H,A0F+CAhJ,E1F/CqBlC,A0F+CZ,GAYN,GzEhDPkN,CtBlCgD,CKuBfpL,E0FiD7BqR,C1FhDK,CZAU,A6BUZ,CyEsCuBH,GAAgBC,C1FhDrC,G0FiDP/Q,CzEvCoBqS,EyEuCV,A/FxEZjH,CsBkCMkH,IyEsCa1B,AzEtCb0B,EjBRF3J,AiBQU0J,CyEyCdrS,AtGnDAkY,C6BUoB5F,EjBRhB3J,A0FiDMiI,E1FjDO,A0FiDOhR,EAAMsK,AzExCxBzC,CjBTctF,CiBSPkQ,EAAM5K,AtBnCC,CAAC,GK0BMuB,A0FiDW,CzEvChCvC,CjBV2C,CAAC7G,AiBUrCyS,CtBpCO,CsBoCD7U,CyEuC0B,C1FhDzCyL,EAAkBC,EAAYtJ,A0FgDkBgR,AtGnDzB,GYKvB3H,A0F8C+DrJ,CzEtC7DgS,CyEwCFX,CzExCeoB,EAAMT,CyEyCvB5R,E1FjDsB2B,C0FiDZ,G1FjDRsH,AL3BmB,EK2BY,CAE7BE,A0FkDC,CzE3CD0I,EAAeQ,CjBPflJ,CiBOqB0I,CjBPP5I,A0FkDLjJ,E1FlDqBtC,A0FkDdwM,AtGvDtBiO,KYKyCvY,AL7BD,GK+BlCuJ,A0FgDwB,EzE1CrBQ,CjBNHR,IAAgBvJ,A0FgDgB,E1F/C3B,AiBKF+J,CtBrC6C,CsBqCxC,CAAC+H,EAAK,CjBLc,AZRV,CsGuDyB,CzE1CzBY,EAAO,GyE2ChC,GzE3CwC7K,CtBpCvC4D,CsBoC8CqG,EyE2C/C,AzE3CoD,GjBLjCvI,CiBKsCQ,CjBLXR,CiBKgB1C,AtBpCnD,CK+BiDiC,CiBKQ,CjBLIS,AZPvEiP,AOvBA9M,EK8BoF3C,GiBKV,CyE2C3E,I1F9CQ,AiBGyEgB,CtBnCpE,CsBmCyEiI,CjBH1ElV,C0F8CZ,AzE3CkG,AtBlCjG6O,KK+BiBnC,AiBGsFyI,GAAe,C7BZ9F,GOtBX,CK+BYjS,A0F8C1B,CAAA,AzEzCCqL,CtBnCAO,CK+BSnC,K0F6CV,E1F7CUA,AiBIC,EjBJWzJ,A0F6CtB,E1F7C6B+I,CL/Bd,EKkCPW,CLjCPmC,CPqBA4M,A6Ba4B9F,CyEyC7B,EzEtCU9K,EjBJF6B,EAAa1J,EAAO+I,ALjChB,CsBmCE4J,EjBCf,AiBDqB9K,AtBlCnBiE,KPoBkB,A6BgBF,IjBDTpC,CiBAOiJ,AtBnCH,CKmCShJ,C0FuCrB,AzEvCqB3J,CjBAQ+I,ALlC5BgD,C+FyED,E1FtCKnC,GiBGJ0B,CjBHI1B,EAAOjN,A0FsCZ,CtGrDC+b,AOpBW,CAAC,KKmCM9O,KAAKD,AiBGP,AtBrChBqC,GKoCIpC,MiBCoCgJ,CjBDpB,EZjBI,A6BqBf,AtBxCI,CAAC,CKoCVhJ,A0FoCL,E1FpCU/L,A0FoCV,EzEhCU,KjBHA,ALpCToO,C+FuED,AzElCc2G,EAAM/K,EjBEfkB,EAAWlL,CiBASiU,EAAK,E7BpB7B6G,AOnBa,CAAC,CKuCU9P,AiBAUkB,EjBCzB,AiBFU6I,EyEiCpB,AzEjC0BZ,EjBEVnI,ALxCO,EKwCMF,GAAU,IAO/B,AiBR4C,AtBtCnDuC,KK0CiBtC,EAAKE,AiBFtByB,E7BtB2B,COlBhB,CK0Ce,AL1Cd,OAAQ,EK0CgB/M,EiBFpB,CjBIPA,OAAAA,CiBJ+BqU,AtBvCxC1G,CK2Ce,EiBHT2G,C7BtBN8F,EYwBc9P,CiBFRgK,CjBEoBnJ,CiBFJkJ,CjBEWrU,AL1CtB,CsBwCiBsU,AtBxChB,EK0C2B/J,KAGdgB,CL5CzBqC,IK4C8B,EiBJxB4F,C7BvBiB,C6BuBJa,CtBxCT,CK4C4B,AiBJbb,AtBxCd,KK+Cb,GL9CE3F,GsBwCM4F,EAAeY,CjBMdpJ,CiBNoBwI,CjBMRvL,EAAOqC,CZ7B1B8P,COjBa,CK+CTnS,AL/CU,GK+CO,IAAjBA,AiBNKqD,CtBxCTuC,CK8CUzO,KiBNDkM,EjBOA,AiBPK,CAAC,E7BxBO,GY+Bb,CiBPa+H,EAAK,AtBxCT,CAAC,CKkDf/I,GAAAA,CiBV8B+J,CjBUnBjV,EiBVmCkM,EAAKiI,EAAY,CjBU3CnJ,ALlDS,CPiBjCiQ,CYkCS,EiBXgE7G,GAAe,CjBW/E,KiBTTzG,KjBgBK,ALzDLe,IKqDIhG,CZrCmB,GYqCnBA,EAAMyD,IiBZU,CjBYLC,IAAIrB,EAAkBlC,EAAM7I,AiBZKkV,CtBzCvB,CAAC,CsB0CpBlL,C7BzBNkR,G6ByBMlR,CjBYFqC,CiBZS6I,CjBYGrM,ALrDhB8F,CsByCmB3E,CjBYGhK,IiBXhBiV,EAAgBC,CjBWSxM,CiBXHuM,CjBYxB3I,EAAQ,GAEHzM,EAAI,EAAGA,CLxDM,CKwDF6I,ALxDG,CPgBO,C6B2BxBwL,EjBaqBrU,AiBbCqV,EjBc1B5I,AiBdgC4H,EjBc1BtQ,KAAKqH,CLzDyB,CKyDbpC,EAAMhJ,GAAIqL,CLzDW,GKkEvC,EiBtBDiJ,EAAae,C7B1BnBiG,C6B0ByBhH,CjBgBP,IAAd9H,AL3DJuC,EK4DEtC,EAAM1I,EiBhBFwQ,EAAec,CjBgBR,CiBhBcd,K7B3BL,MOjBA,CAAC,CsB6Cb,KjBgBC/H,CiBdK3H,CjBcO,GACrB4H,EAAM1I,CL9D8B,CPmBtCwX,GY2Ca,CiBfG1W,EtB/C8B,IK8D1BA,CiBfGsF,GAAMtF,GjBeF2H,AZ3CT,EY2CoB,AL9DsB,EsB+CxB4H,EAAK,IAAK/H,EAAKgI,EAAqB,CtB/CE,GKiEnE,AZ5CPmH,E6B0B+E,EjBkBlE/O,EAAMJ,CiBlBkE,AtB9CrF2C,IKgEwB,CiBlBoE,KjBkB5D,CiBlBkEnK,GjBqBpG,CZ/CyB,COpBN,CAAC,CsB8CuFuQ,EAAe,GjBqBjHxJ,EAAYK,AiBrB0GpH,GjBsBzH8G,GLpE6B,CKoE7BA,AiBtBgIyI,EjBsB9GnI,AiBtBmH,EjBsB5GR,CZ/C7BgQ,A6ByB6IpP,CtB9CpG,CsB8CyGiI,EAAY,EjBsB1H7J,EAAD,CiBtBiI,ItB9C9G,EsB8CsH8J,GjBwBxK,AiBpBJxG,EtBlD8D,EPqBvC,EYiDQ,GiBpBrB,OtBjDVkB,EsBiD4BqG,GAEnBhT,IjBkBEqJ,CZhDX+P,CYiDS/P,CiBpBK2J,CjBuBgB,CiBvBVhT,OAGpB0L,AtBrDsB,CAAC,UKyEZ/B,AiBpBC,EjBoBMrB,CZpDQ,COrBY,KsBqDN2K,CjBqBvBtJ,CL1EqC,CK0E9BrB,AiBnBPtI,MtBvD6C,CsBsDxCiT,EAAMjT,IjBmBhB,EAKN,CZxDEqZ,A6BmCA1N,KtBzDsE,GK8E/D9B,EAAaF,EiBrBP,CjBsBTS,IAAAA,EAAMzN,AL9EViQ,EPqBsB,A6BmCYsG,EAAQ1U,GjBsBzBpB,AiBrBX4C,IAAAA,EAAQkT,EAAOlT,EjBqBMqK,IiBnBlB8I,E7BrCTmG,COtByB,CAAC,CK8EUxb,EiBpBdoV,EAAOX,CjBoBY5I,GAAQW,GiBnBxB,EAAiBtK,AtB3DD,EsB2DCA,CjBmBe,CZxDpC,GOtB4B,SK8EsB,IAAIsK,AiBnBjCtK,AtB3DqB,EsB2DN,E7BpCzDuZ,IYuDmF,EL7EnF1M,GK6EyF,IAErFzC,CiBrB6C5L,EjBqBrC,AiBrB6D,GAAK,MAAQwK,CtB1DjE,CK+EjBoB,AL/EkB,CPsBO,EYyDyB,AiBrBqCnB,UAAUjJ,CtB1DhE,GsB4DrC4L,ItB5D6C,CK+EdjC,EAAOxM,MZvDxC,A6BoCgB,ItB5D6C,EK+EO,CAC5D0K,CZxDR,C6BoCsCuL,EjBoB9BvL,CiBlBG7H,CjBkBI2J,AZxDf,AOvBEmD,EK+EoB3P,IiBnBNiW,EAAOpT,MjBmBW6H,AiBlBf,KjBoBX,ALjFc,CAAC,CsB6DK,CjBoBJ,QiBlBtBgE,ItB/DoC,KKiFvBhE,CiBlBF,CtB/DiC,CKiFD,KAATA,EACvBA,EiBlBF,GtBhEiD,EKkF/CA,CiBlBF,CjBsBFuC,MLrFP2C,CKqFO3C,AiBpBP0B,UAAW,SAAmBuH,AtBjET,CAAC,EsBmEbrT,OADKqT,EAAOrT,GtBlEgB,IsBqErC+L,GtBrE6C,OsBqElC,OtBpEXiB,EsBoE8BsG,GAErB,MAAA,IAAMvJ,EADAuJ,EAAOC,OACM,AtBtED,CAAC,KsBsEQ,KAEpCvH,ItBxE2C,OAAQ,CsBwEtC,SAAqBwH,GAEzB,AtB1EwD,MsB0ExD,IAAMzJ,AtBzEfkD,EsBwEeuG,EAAOC,OACM,MAAQ,GtBzEf,CAAC,CsB2EtBxH,YAAa,CtB3EwB,OAAQ,CsB2EXyH,GAGzB7L,OAFI6L,CtB5E6C,CsB4EtC7L,KAEJ,KADF6L,EAAO1T,AtB5ErBkN,OsBgFAhB,StBhFiB,CsBgFN,AtBhFO,SsBgFYyH,GAGrB,CtBnFuB,KsBmFvB,IAFIA,EAAO9L,KAEEiK,EAAK,AtBlF3B3E,IsBkFgCpD,EADnB4J,EAAO/V,UACuB,EtBlFtB,CAAC,GsBkF4B,ItBlFpB,EsBqF9BuO,UAAW,EtBpFXiB,OsBoF8BwG,GAErB/L,OADI+L,EAAO/L,CtBrFC,CAAC,IsBwFtBuE,GtBxF8B,MsBwFpB,OtBxFkC,EsBwFhByH,GAEnB,MAAA,EtB1FiD,EsByF7CA,EAAOzB,KACE,CtBzFtB/E,IsB2FAhB,YAAa,OtB3FW,CAAC,CsB2FSyH,GAEzB1B,GtB7FwB,IsB4FpB0B,EAAO1B,KACJ,EtB7F+B,GsBgG/C9F,OtB/FAgB,UsB+FkB,SAA0ByG,AtB/FxB,CAAC,EsBgGf/B,IAAAA,CtBhGuB,CsBgGV+B,EAAO/B,UtBhGiB,CsBiGrCgC,EAAiBD,EAAOC,ItBhG9BzG,WsBiGSxD,OAAAA,AtBjGU,CAAC,CsBiGN,CAAC,KtBjGa,IsBiGHA,EAAKiI,EAAY,KAAMO,AtBjGN,EsBiGYyB,IAAkB,ItBhGxExG,EsBkGAjB,uBtBlG0B,CsBkGD,AtBlGE,OAAQ,EsBkGuB0H,GAGjDrC,OAFSqC,CtBnG+B,CsBmGxBrC,UAEJ,AtBkRtB,KsBnRcqC,EAAO7B,CtBmRrB,KsBhRC5F,atBgRD,EArXM,IAAI7B,EsBqGauJ,AtBrGLvX,EsBqGoB,KtBrGb8Q,IsBqGuB0G,GAGtCpK,AtBxGsB,IAwF1B,GsBgBIA,EAAK,CAAC,GtBhBDQ,EAAMmD,EAAMC,EsBcbwG,CtBbTvG,CsBagB/F,GtBbhB+F,EsBe2B7D,AtBfbnM,EsBcCuW,EAAOnC,MtBdEnU,KsBeoB,EtBfX,IsBekB,ItBfIkE,GsBiB3D0K,CtBjB0C7O,UAAU,GAAmBA,OsBiBjDsW,EAAe,CtBjB4C,GAAKtJ,EAGlFiD,GsBc2CuG,GACzCvM,CtBfM9F,EACR+L,CsBcEjG,CtBdQ/K,CsBcDsX,EAAOvM,GtBdA2B,EsBed6K,EAAaD,EAAOC,EtBfE3G,GACxB9D,EAAO,CAAC8D,GsBeNsE,AtBdFjE,EsBceqG,CtBdN,CsBcapC,CtBbtBhE,EAAQ,GACRC,KsBaEwF,EAASW,AtBbJrS,EsBaW0R,AtBZlBjV,OsBaKuL,AtBbChI,EACNmM,KsBYKnE,EAAK,AtBZDhI,CsBYE,CtBXXoM,EAAO,GACPC,CsBUmBvG,CtBVP,CsBUaiK,EAAK,AtBT9BzD,EAAUX,EAGX,EAAA,CAEGY,IAAAA,GsBI2CvE,CtBL/CgE,CsBKoDsG,EAAY,CtBJtCzK,EAAK/L,KsBI0CkM,EAAKiI,AtBH1EzD,EsBGsF,AtBH3ED,GAA8B,EsBGmDiE,EAAMkB,AtBH1EzF,EAAMnQ,EsBG8E,KtBD5GyQ,EsBGN5B,CtBHM4B,EAAW,CAKTC,GAJJ/P,EAA2B,IAArB4P,EAAUvQ,CsBEHqW,EAAe,SAAUI,AtBFPvS,EAAYoM,CsBGzCtG,CtBH8CsG,EAAKtQ,CsBGnDgK,EAAOyM,EAAOzM,EtBH8C,GsBI5DhB,AtBHFoH,EsBGSqG,AtBHFpG,EsBGStQ,AtBFhBsQ,EAASE,EAAU5M,MsBGjB4Q,AtBDE7D,EsBCK+F,AtBDK,CACRxG,CsBAUsE,EtBAVtE,EACFG,CsBAF+D,CtBAS/D,CsBAIqG,CtBAC9F,CsBAMwD,WACjBnK,AtBAI,CAGA,IAFD4G,EsBDH5G,EtBCG4G,CsBDK8F,CtBCG,CsBDe1N,EtBGlB6H,CsBH0BoD,CtBGpB,CsBHyB,CtBGtBnD,EAAgBhS,GsBHaiU,EAAO7G,EAAKlD,AtBGlB+C,EsBHwB,GtBGnBqE,GAAOS,CsBHoB,CtBGdC,EAAc9Q,IsBHSiU,EAAK,CtBGNpD,GsBHW3E,CtBGJ,CsBHSlD,AtBI3FhF,EsBJiG,EtBIjGA,EAAI8M,EsBJoG,AtBItFD,GACtBD,EAAM5M,CsBL8G,EtBKzGoM,EAAKpM,CsBL2GuQ,EAAON,AtBQpI7D,EsBRyI,AtBQlIQ,EAKJ,EsBb2I1E,EAAKiI,AtBWjJpD,EsBX6J,EtBW7JA,EAAa,EAERC,EsBXflC,AtBWoB,EAAGkC,EAAKb,EAAMnQ,OAAQgR,IAAM,CACpCC,GsBZUoF,CtBYVpF,CsBZyB,CtBYfd,EAAMa,GAAI,GsBZe2F,AtBanCzF,EAAYf,CsBZlBnG,CtBYwBgH,GsBZxBhH,AtBY4B,EsBZrB2M,CtBcD1G,CsBdQjG,GtBeViH,EsBdJsD,CtBcexD,CsBdR4F,EAAOpC,AtBiBRtE,GAAyB,EsBhB/BuE,EAAemC,EAAOnC,CtBgBLtD,GACbd,EAAKe,OsBhBTgD,AtBgBgBlD,EsBhBH0F,AtBgBY,EsBhBLxC,CtBiBhBpD,KAEAX,EAAKa,GsBlBN/E,AtBkBiBgF,GAKtBhB,EAAQF,EsBvBH9D,AtBuBSgE,EsBvBJ,CAAClG,EAAO,CtBwBlB+B,EAAOiE,EsBxBkBuE,AtBwBZxI,EsBxBkBkI,EAAK,CtByBpC9D,EAAQH,EsBzBkCwE,AtByB5BrE,GsBzB2CjE,EAAKiI,CtB0B9DlE,CsB1B0E,CtB0BhED,EAAMC,GsB1BiE,KtB2BjFD,EsBzBJjB,AtByBYiB,EAAMoB,SACT,CAIDhB,GAHJzP,EAAM0P,EAASJ,EAAUC,EAAQnE,CsB3BZsK,CtB2BiBnG,CsB3BF,OtB2BWhM,EsB3BD0S,AtB8B1CxG,GsB7BFpG,IAAAA,AtB2BFoG,EsB3BSwG,AtB2BFvG,EsB3BSrG,AtB2BAqG,EAAO1P,GsB1BrBwT,AtB0B4B3D,EsB1BfoG,CtB6Bb,CsB7BoBzC,QtBgClB9D,GsB/BFuF,AtBgCAtF,EsBhCSsG,AtBgCJhT,EsBhCWgS,GtBgCNjV,GAIV4B,CsBnCG2J,GtBmCH3J,IsBnCG2J,EAAK,CAAC,AtBmCA,EAET,IAACjN,MsBrCqB+K,AtBqCf2B,EsBrCqBO,EAAKiI,EAAY,EtBqC9B/D,GsBrCoCsE,AtBqC7B,CACpB,CsBtCuDkB,GtBsCtDvE,CsBtCgE,CtBsCzDjB,GACJ,GsBrCZpB,GtBqCY,IAAIrH,MAAM,OsBrCD0O,EAAe,SAAUQ,GACxC7M,CtBoCuC,EAAQoG,CsBpC/CpG,CtBoC+CoG,CsBpCxCyG,EAAO7M,KACdmK,CtBmC+C/D,CsBnClCyG,EAAO1C,CtBsClB7C,IAAAA,EAAUzE,EAAWiD,EsBrCvBgH,AtBqCgC1G,EsBrCxByG,AtBqC6BtF,EsBrCtBuF,GtBqC4BrG,GsBpCxCvE,AtBsCDoF,GAAAA,EAAS,CAGP/O,CsBzCD2J,EAAK,CAAC,AtBuCT3J,EAAS+O,EAAQrR,IsBvCC+J,CtBuCI8F,CsBvCE5D,CtBuCOkE,CsBvCF+D,CtBuCQxT,CsBvCI,CtBuCC0P,EAAQC,EsBvCHwG,AtBuCSvG,GsBvCiB,GtByC1DzD,CsBzCyCgK,CtB0CtD,CsB1C4D9W,KtB6C1DuC,EsB7CyE,EtB6C9D,GsB7CqE2J,CtB6ChF3J,CsB7CqFuU,EAAO,AtB8C1F,IAACrG,EAAW,CsB9CuF,AtB+CrGH,EAAK3M,EsB/CqG,ItBgD1G,GsB9CVsL,YtBgDa,OsBhDOoH,CtBgDQnS,CsBhDO,GtBgDlB3B,IACT4N,EsBjDqC4G,AtBiD/BnT,GsBhDRoG,EtBgDa,CAACrJ,CsBhDdqJ,CtBgDmBzH,CsBhDZwU,EAAO/M,EtBkDPyG,GsBjDP0D,AtBiDkB,CACV9C,CsBlDK0F,EAAO5C,CtBkDZ9C,EAAO9O,GAEJ,CACL+N,EAAK3M,EsBpDX+R,EAASqB,EAAOrB,AtBqDV,OsBpDHxJ,EtBiDGkE,EAAO7N,GsBjDV2J,EAAK,CAAC,GtB2DEhI,IsB3DM8F,AtB2DjBzH,EsB3DuB2J,CtB2DCwE,CsB3DIyD,EAAY,AtB4D1ChE,EAAMvM,GsB5D0C8Q,EAAMgB,AtB4D3C,CAAC/U,EAAKyP,CsB5D+C,GtB+D9DK,EACFH,EsB9DJpB,AtB8DSvL,OAELqM,EAAQ,CACNC,QAASA,EsBjEMoG,AtBkEfnG,EsBlE8B,ItBkEvBA,EACPnE,GsBnEwCiL,EtBmElCjL,CsBhEHG,CtBiEHiE,MsBjEGjE,AtBiEIiE,EsBjEC,AtBkERiB,CsBpEO4F,EAAOhN,EtBoERgG,GsBlES9D,AtBqEjBH,EsBtEeiL,CtBqEf/G,CsBrEsBkE,CtBqEZlV,MAAM0M,IsBpEkB,ItBoEVyE,EsBpEiB,EtBqExBA,EAAOL,EAAYK,CsBnExCjB,CtBmE6CoC,OAAS,GAClDrB,GAAS,EACTC,EAAQ,GAEJE,GACFE,EsBxEqB8F,AtBwEXzS,EsBxE0B,GtBwErByM,GAGjBA,EAASD,CsB3EuC6G,GAC9CjN,IAAAA,EAAOiN,EAAOjN,EtB4ED9F,GsB3EbiQ,CtB2EGnE,CsB3EUiH,EAAO9C,AtBiFnB3D,OAJc,IsB5EfoF,AtB4EFzF,EsB5EW8G,AtB4ELjX,EsB5EY4V,OACb1J,AtB4EPsE,EAAUL,EAAMA,EAAMnQ,CsB5EfkM,EAAK,CAAC,GtB4EkB,GAAG,EsB5EZlC,EAAMkC,AtB+EvBsE,EsB/E4B2D,AtBkFrC,EsBlFiD,KAAMO,EAAMkB,AtBkFpDvE,EAAOG,EsBlFuD,CtBmF9DC,MsBjFPrC,CtBiFOqC,QAAQD,GAAuC,QsBjFjC6E,EAAe,OtBiFD7E,EsBjFW0F,AtBiFD3F,GsBhFvCvH,GtB0FD,CsB1FCA,EAAOkN,EAAOlN,ItB0FN2C,CsBzFR3D,CtByFwB0I,CsBzFjBwF,EAAOnX,AtB0FhB4R,IAAAA,EAAW,IsBzFTwF,AtByFalY,EsBzFAiY,EAAOC,EtByFDzF,EAAS1R,OsBxF5BoX,CtByFC,CsBzFWF,EAAOE,GtByFlB,CACLxF,MsBzFO,AtByFA,MsBzFA,GtByFexB,GACf,IAAA,IsB1FgBpG,AtB0FZnK,EAAI,CsB1FgB6W,CtB0Fb7W,CsB1F+BmJ,CtB0F3B0I,EsB1FmCuC,AtB0F1BjU,EsB1F+B,KtB0FvBH,CsB1F8BkT,EAAO7G,CtB2FpE,CsB3FyElD,EAAM,CtB2F9E2I,EAAS9R,GAAI,CsB3FyE,AtB4FrFgS,IAAAA,EAAKhF,CsB5FyFoH,CtB4F9EvC,CsB5FmF,CtB4F1E7R,GsB5F+EqM,AtB4F3EkE,EsB5FgFpH,AtB4F3EuI,EsB5FiF,ItB4FpG,EsB5F2G,CtBgG1HM,GAAAA,EAAI,CsBhG+HsF,AtBiGjI5U,EsBjG8I,EtBiG9IA,EAASsP,EAAG3R,MAAMwR,EsBjG4I,AtBiGnI7R,GAAIE,CsBjGqI,OAASmM,EAAKkL,CtBmGlL7U,CsBnG6L,GtBmGlL,IAAXA,EsBjGd8M,AtBkGYsC,EAAS9R,GAAKuQ,OACT,GAAI7N,CsBnGJ,GtBmGeuK,EACpB6E,EAAS9R,EsBpGqBwX,CtBoGhBvK,EsBnGpBqH,IAAAA,CtBoGW,CsBpGEkD,EAAOlD,KtBoGMjQ,IAAX3B,EsBnGf4T,AtBoGa5T,EsBpGI8U,EAAOlB,GtBoGX5T,KAMjBuP,MAAO,CsBzGA5F,OAAAA,CtByGekE,CsBzGV,CAAC,CtB0GN,IAAA,IAAIvQ,EAAI,EAAGA,EAAI6R,CsB1GQxF,CtB0GClM,CsB1GImU,EAAY,ItB0GRtU,CsB1Gc6U,EAAMyB,CtB2GnD,GsB3GqE,AtB2GpExE,EAAS9R,GAcH8R,CsBvHjBrC,CtBuH0BzP,KAAOuQ,IACzBuB,EAAS9R,GAAK,KsBxHD,KtByGG,CACZgS,GsB1GsCyF,CtB0GtCzF,EsBvGH3F,AtBuGQW,EAAW6E,EAAS7R,GsBvG5BqM,AtBuGgCkE,EsBvG3B,AtBuGgCmB,CsBvG/B,KtBuGY,GAIfM,GAAAA,EAAI,CACFtP,EsB9GD+U,EAAOtN,AtB8GNzH,EAASsP,EAAG3R,CsB5GYgM,EADnBoL,EAAOnD,CtB6GMzC,EAAS7R,GAAIE,KsB5GU,MAAO,AtB8GhDwC,GAAAA,GsB5GdgN,CtB4GyBzC,EACb6E,EAAS9R,GAAKiN,OACT,KsB9GI,GtB8GW5I,IAAX3B,EsB9G6BgV,EtB8GM,CsB7GlDvN,GtB6GuCzH,CsB7GvCyH,CtB8GazH,CsB9GNgV,EAAOvN,ItB8GDzH,CsB7GbiU,EAAae,EAAOf,CtB4HrB,SAAS5J,CsB3HRuH,CtB2H0BpC,CsB3HbwF,CtB2HuBzH,CsB3HhBqE,EtB4HnB,MAAA,CACLvC,EsB5HIgE,EAAS2B,EAAO3B,AtB4Hb,OsB3HA1J,EtB2HekE,GACpB2B,EsB5HK7F,AtB4HI0F,EsB5HC,CAAC,GtB4HIxB,GACXyB,IAAAA,EAAKhF,EsB7HiB7C,AtB6HN8F,EsB7HYmE,AtB6HH7D,EsB7HQ,AtB6HHmB,MAAf,GAIfM,GAAAA,EsBjIgD3F,AtBiI5C,CACF3J,CsBlImDiU,EAAY,CtBkI/DjU,EAASsP,EAAG3R,GsBlI4DgM,EAAKiI,CtBkI3DrE,CsBlIuE,CtBkI9D/P,IsBlIoE2U,EAAMkB,IAAU,CtB4I5GrT,KsB1IbiN,OtBkIqBtL,IAAX3B,IACFwP,EAASD,MsBnIO,AtBmID1B,GAEXiB,EAAO9O,IsBrIqCiV,AtBsI9CzF,EAASH,CsBrIb5H,IAAAA,CtBqImBzH,CsBrIZiV,EAAOxN,CtByIPzH,IsBxIP4R,AtB2IJrC,EsB3IiB0F,EAAOrD,EtB2IjB,SsB1IHyB,AtB0IkBxF,EsB1IToH,CtB2IP3F,CsB3Ic+D,GtB8IdrT,EAHAsP,EsB1IC3F,AtB0IIW,EAAWiD,EAASM,EAAKmB,CsB1I7BrF,EAAK,CAAC,EtB0IQ,GAUZ3J,OALHsP,IACFtP,EAASsP,CsBhJoB7H,CtBgJjB9J,CsBhJuBgM,EAAKiI,EAAY,CtBgJlCrE,EAAS/P,EsBhJ+B2U,EAAMkB,IAAU,ItBmJ5E7D,EsBjJJtC,AtBiJaqC,MAAM1B,GACR7N,IASN,MsB3Je,GtB2JNsK,EAAWiD,EAASyB,EsB3JckG,AtB2JRhH,GsB1JlCzG,AtB2JFgI,IsB3JEhI,AtB2JFgI,EsB3JSyF,AtB2JK3H,EsB3JE9F,AtB2JMuH,GAEtBS,EsB5JEmC,CtB4JFnC,CsB5JeyF,CtB4JF,CsB5JStD,AtB6JpB,IAAC1D,GAAoC,IsB5JrCqG,EAAQW,EAAOX,MACZ5K,KtB2JkB8F,EsB3JlB9F,AtB6JE8F,EsB7JG,CAAC,ItB6JJA,EAGLC,IAAAA,EAAsBxB,EAAYuB,CsBhKThI,CtBgKqB8H,CsBhKf5F,EAAKiI,EAAY,CtBgKMnC,EAAYJ,EsBhKZkF,GAA0B,CtBkKhF,GsBlK+DA,AtBkKhC,EsBlKsC9W,OAAe,KAAOkM,EAAK4K,EAAO,CtBkKhG7E,EAEFA,IsBpK2G,GtBoK3GA,CsBpKgH,KtBsKpH,CsBpKPvC,AtBqKMwC,IAAAA,EAAkBzB,EAAYX,EAAQgC,MAAQhC,EsBrKjC,AtBqKyC8B,MAEtDM,GsBvKwCwF,AtBuKxCxF,EAAiB,CsBtKjBlI,AtBuKE,GAA2B,CsBvK7BA,EAAO0N,EAAO1N,KACdmK,EAAauD,EAAOvD,KtBs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","file":"main.4ec973a3.js","sourceRoot":"../examples/main","sourcesContent":["export type Decorator = ClassDecorator | MemberDecorator;\nexport type MemberDecorator = (\n target: Target,\n propertyKey: PropertyKey,\n descriptor?: TypedPropertyDescriptor,\n) => TypedPropertyDescriptor | void;\nexport type MetadataKey = string | symbol;\nexport type PropertyKey = string | symbol;\nexport type Target = object | Function;\n\nconst Metadata = new WeakMap();\n\nfunction decorateProperty(\n decorators: MemberDecorator[],\n target: Target,\n propertyKey: PropertyKey,\n descriptor?: PropertyDescriptor,\n): PropertyDescriptor | undefined {\n decorators.reverse().forEach((decorator: MemberDecorator) => {\n descriptor = decorator(target, propertyKey, descriptor) || descriptor;\n });\n return descriptor;\n}\n\nfunction decorateConstructor(\n decorators: ClassDecorator[],\n target: Function,\n): Function {\n decorators.reverse().forEach((decorator: ClassDecorator) => {\n const decorated = decorator(target);\n if (decorated) {\n target = decorated;\n }\n });\n return target;\n}\n\nexport function decorate(\n decorators: ClassDecorator[],\n target: Function,\n): Function;\nexport function decorate(\n decorators: MemberDecorator[],\n target: object,\n propertyKey?: PropertyKey,\n attributes?: PropertyDescriptor,\n): PropertyDescriptor | undefined;\nexport function decorate(\n decorators: Decorator[],\n target: Target,\n propertyKey?: PropertyKey,\n attributes?: PropertyDescriptor,\n): Function | PropertyDescriptor | undefined {\n if (!Array.isArray(decorators) || decorators.length === 0) {\n throw new TypeError();\n }\n\n if (propertyKey !== undefined) {\n return decorateProperty(\n decorators as MemberDecorator[],\n target,\n propertyKey,\n attributes,\n );\n }\n\n if (typeof target === 'function') {\n return decorateConstructor(decorators as ClassDecorator[], target);\n }\n\n return;\n}\n\nfunction getMetadataMap(\n target: Target,\n propertyKey?: PropertyKey,\n): Map | undefined {\n return Metadata.get(target) && Metadata.get(target).get(propertyKey);\n}\n\nfunction ordinaryGetOwnMetadata(\n metadataKey: MetadataKey,\n target: Target,\n propertyKey?: PropertyKey,\n): MetadataValue | undefined {\n if (target === undefined) {\n throw new TypeError();\n }\n const metadataMap = getMetadataMap(target, propertyKey);\n return metadataMap && metadataMap.get(metadataKey);\n}\n\nfunction createMetadataMap(\n target: Target,\n propertyKey?: PropertyKey,\n): Map {\n const targetMetadata =\n Metadata.get(target) ||\n new Map>();\n Metadata.set(target, targetMetadata);\n const metadataMap =\n targetMetadata.get(propertyKey) || new Map();\n targetMetadata.set(propertyKey, metadataMap);\n return metadataMap;\n}\n\nfunction ordinaryDefineOwnMetadata(\n metadataKey: MetadataKey,\n metadataValue: MetadataValue,\n target: Target,\n propertyKey?: PropertyKey,\n): void {\n if (propertyKey && !['string', 'symbol'].includes(typeof propertyKey)) {\n throw new TypeError();\n }\n\n (\n getMetadataMap(target, propertyKey) ||\n createMetadataMap(target, propertyKey)\n ).set(metadataKey, metadataValue);\n}\n\nfunction ordinaryGetMetadata(\n metadataKey: MetadataKey,\n target: Target,\n propertyKey?: PropertyKey,\n): MetadataValue | undefined {\n return ordinaryGetOwnMetadata(metadataKey, target, propertyKey)\n ? ordinaryGetOwnMetadata(metadataKey, target, propertyKey)\n : Object.getPrototypeOf(target)\n ? ordinaryGetMetadata(\n metadataKey,\n Object.getPrototypeOf(target),\n propertyKey,\n )\n : undefined;\n}\n\nexport function metadata(\n metadataKey: MetadataKey,\n metadataValue: MetadataValue,\n) {\n return function decorator(target: Target, propertyKey?: PropertyKey): void {\n ordinaryDefineOwnMetadata(\n metadataKey,\n metadataValue,\n target,\n propertyKey,\n );\n };\n}\n\nexport function getMetadata(\n metadataKey: MetadataKey,\n target: Target,\n propertyKey?: PropertyKey,\n): MetadataValue | undefined {\n return ordinaryGetMetadata(metadataKey, target, propertyKey);\n}\n\nexport function getOwnMetadata(\n metadataKey: MetadataKey,\n target: Target,\n propertyKey?: PropertyKey,\n): MetadataValue | undefined {\n return ordinaryGetOwnMetadata(\n metadataKey,\n target,\n propertyKey,\n );\n}\n\nexport function hasOwnMetadata(\n metadataKey: MetadataKey,\n target: Target,\n propertyKey?: PropertyKey,\n): boolean {\n return !!ordinaryGetOwnMetadata(metadataKey, target, propertyKey);\n}\n\nexport function hasMetadata(\n metadataKey: MetadataKey,\n target: Target,\n propertyKey?: PropertyKey,\n): boolean {\n return !!ordinaryGetMetadata(metadataKey, target, propertyKey);\n}\n\nexport function defineMetadata(\n metadataKey: MetadataKey,\n metadataValue: MetadataValue,\n target: Target,\n propertyKey?: PropertyKey,\n): void {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n}\n\nexport const Reflection = {\n decorate,\n defineMetadata,\n getMetadata,\n getOwnMetadata,\n hasMetadata,\n hasOwnMetadata,\n metadata,\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Reflect {\n let decorate: typeof Reflection.decorate;\n let defineMetadata: typeof Reflection.defineMetadata;\n let getMetadata: typeof Reflection.getMetadata;\n let getOwnMetadata: typeof Reflection.getOwnMetadata;\n let hasOwnMetadata: typeof Reflection.hasOwnMetadata;\n let hasMetadata: typeof Reflection.hasMetadata;\n let metadata: typeof Reflection.metadata;\n }\n}\n\nObject.assign(Reflect, Reflection);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha256 = exports.Sha256 = void 0;\nclass Sha256 {\n /**\n * Generates SHA-256 hash of string.\n *\n * @param {string} msg - (Unicode) string to be hashed.\n * @param {Object} [options]\n * @param {string} [options.msgFormat=string] - Message format: 'string' for JavaScript string\n * (gets converted to UTF-8 for hashing); 'hex-bytes' for string of hex bytes ('616263' ≡ 'abc') .\n * @param {string} [options.outFormat=hex] - Output format: 'hex' for string of contiguous\n * hex bytes; 'hex-w' for grouping hex bytes into groups of (4 byte / 8 character) words.\n * @returns {string} Hash of msg as hex character string.\n */\n hash(msg, options) {\n const defaults = { msgFormat: 'string', outFormat: 'hex' };\n const opt = Object.assign(defaults, options);\n // note use throughout this routine of 'n >>> 0' to coerce Number 'n' to unsigned 32-bit integer\n msg = utf8Encode(msg);\n switch (opt.msgFormat) {\n default: // default is to convert string to UTF-8, as SHA only deals with byte-streams\n case 'string':\n msg = utf8Encode(msg);\n break;\n case 'hex-bytes':\n msg = hexBytesToString(msg);\n break; // mostly for running tests\n }\n // constants [§4.2.2]\n const K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n // initial hash value [§5.3.3]\n const H = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n // PREPROCESSING [§6.2.1]\n msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1]\n // convert string msg into 512-bit blocks (array of 16 32-bit integers) [§5.2.1]\n const l = msg.length / 4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length\n const N = Math.ceil(l / 16); // number of 16-integer (512-bit) blocks required to hold 'l' ints\n const M = new Array(N); // message M is N×16 array of 32-bit integers\n for (let i = 0; i < N; i++) {\n M[i] = new Array(16);\n for (let j = 0; j < 16; j++) { // encode 4 chars per integer (64 per block), big-endian encoding\n M[i][j] = (msg.charCodeAt(i * 64 + j * 4 + 0) << 24) | (msg.charCodeAt(i * 64 + j * 4 + 1) << 16)\n | (msg.charCodeAt(i * 64 + j * 4 + 2) << 8) | (msg.charCodeAt(i * 64 + j * 4 + 3) << 0);\n } // note running off the end of msg is ok 'cos bitwise ops on NaN return 0\n }\n // add length (in bits) into final pair of 32-bit integers (big-endian) [§5.1.1]\n // note: most significant word would be (len-1)*8 >>> 32, but since JS converts\n // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators\n const lenHi = ((msg.length - 1) * 8) / Math.pow(2, 32);\n const lenLo = ((msg.length - 1) * 8) >>> 0;\n M[N - 1][14] = Math.floor(lenHi);\n M[N - 1][15] = lenLo;\n // HASH COMPUTATION [§6.2.2]\n for (let i = 0; i < N; i++) {\n const W = new Array(64);\n // 1 - prepare message schedule 'W'\n for (let t = 0; t < 16; t++)\n W[t] = M[i][t];\n for (let t = 16; t < 64; t++) {\n W[t] = (this.σ1(W[t - 2]) + W[t - 7] + this.σ0(W[t - 15]) + W[t - 16]) >>> 0;\n }\n // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value\n let a = H[0], b = H[1], c = H[2], d = H[3], e = H[4], f = H[5], g = H[6], h = H[7];\n // 3 - main loop (note '>>> 0' for 'addition modulo 2^32')\n for (let t = 0; t < 64; t++) {\n const T1 = h + this.Σ1(e) + this.Ch(e, f, g) + K[t] + W[t];\n const T2 = this.Σ0(a) + this.Maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = (d + T1) >>> 0;\n d = c;\n c = b;\n b = a;\n a = (T1 + T2) >>> 0;\n }\n // 4 - compute the new intermediate hash value (note '>>> 0' for 'addition modulo 2^32')\n H[0] = (H[0] + a) >>> 0;\n H[1] = (H[1] + b) >>> 0;\n H[2] = (H[2] + c) >>> 0;\n H[3] = (H[3] + d) >>> 0;\n H[4] = (H[4] + e) >>> 0;\n H[5] = (H[5] + f) >>> 0;\n H[6] = (H[6] + g) >>> 0;\n H[7] = (H[7] + h) >>> 0;\n }\n // convert H0..H7 to hex strings (with leading zeros)\n for (let h = 0; h < H.length; h++)\n H[h] = ('00000000' + H[h].toString(16)).slice(-8);\n // concatenate H0..H7, with separator if required\n const separator = opt.outFormat == 'hex-w' ? ' ' : '';\n return H.join(separator);\n /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n function utf8Encode(str) {\n try {\n return new TextEncoder().encode(str).reduce((prev, curr) => prev + String.fromCharCode(curr), '');\n }\n catch (e) { // no TextEncoder available?\n return unescape(encodeURIComponent(str)); // monsur.hossa.in/2012/07/20/utf-8-in-javascript.html\n }\n }\n function hexBytesToString(hexStr) {\n const str = hexStr.replace(' ', ''); // allow space-separated groups\n return str == '' ? '' : str.match(/.{2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join('');\n }\n }\n /**\n * Rotates right (circular right shift) value x by n positions [§3.2.4].\n * @private\n */\n ROTR(n, x) {\n return (x >>> n) | (x << (32 - n));\n }\n /**\n * Logical functions [§4.1.2].\n * @private\n */\n Σ0(x) { return this.ROTR(2, x) ^ this.ROTR(13, x) ^ this.ROTR(22, x); }\n Σ1(x) { return this.ROTR(6, x) ^ this.ROTR(11, x) ^ this.ROTR(25, x); }\n σ0(x) { return this.ROTR(7, x) ^ this.ROTR(18, x) ^ (x >>> 3); }\n σ1(x) { return this.ROTR(17, x) ^ this.ROTR(19, x) ^ (x >>> 10); }\n Ch(x, y, z) { return (x & y) ^ (~x & z); } // 'choice'\n Maj(x, y, z) { return (x & y) ^ (x & z) ^ (y & z); } // 'majority'\n}\nexports.Sha256 = Sha256;\nexports.sha256 = new Sha256();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createUniqueHash = void 0;\nconst sha256_1 = require(\"./sha256\");\nfunction createUniqueHash(key) {\n return sha256_1.sha256.hash(key);\n}\nexports.createUniqueHash = createUniqueHash;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MissingProvidedServiceTypeError = void 0;\n/**\n * Thrown when service is registered without type.\n */\nclass MissingProvidedServiceTypeError extends Error {\n constructor(identifier) {\n super(`Cannot determine a class of the requesting service '${JSON.stringify(identifier)}'`);\n this.name = 'ServiceNotFoundError';\n Object.setPrototypeOf(this, MissingProvidedServiceTypeError.prototype);\n }\n}\nexports.MissingProvidedServiceTypeError = MissingProvidedServiceTypeError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InjectionToken = exports.Token = void 0;\n/**\n * Used to create unique typed service identifier.\n * Useful when service has only interface, but don't have a class.\n */\nclass Token {\n /**\n * @param name Token name, optional and only used for debugging purposes.\n */\n constructor(name) {\n this.name = name;\n }\n}\nexports.Token = Token;\nclass InjectionToken extends Token {\n}\nexports.InjectionToken = InjectionToken;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServiceNotFoundError = void 0;\nconst Token_1 = require(\"../Token\");\n/**\n * Thrown when requested service was not found.\n */\nclass ServiceNotFoundError extends Error {\n constructor(identifier) {\n super();\n this.name = 'ServiceNotFoundError';\n if (typeof identifier === 'string') {\n this.message =\n `Service '${identifier}' was not found, looks like it was not registered in the container. ` +\n `Register it by calling Container.set('${JSON.stringify(identifier)}', ...) before using service.`;\n }\n else if (identifier instanceof Token_1.Token && identifier.name) {\n this.message =\n `Service '${identifier.name}' was not found, looks like it was not registered in the container. ` +\n `Register it by calling Container.set before using service.`;\n }\n else if (identifier instanceof Token_1.Token) {\n this.message =\n `Service with a given token was not found, looks like it was not registered in the container. ` +\n `Register it by calling Container.set before using service.`;\n }\n Object.setPrototypeOf(this, ServiceNotFoundError.prototype);\n }\n}\nexports.ServiceNotFoundError = ServiceNotFoundError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.constructorWatcherService = exports.ConstructorWatcherService = void 0;\nclass ConstructorWatcherService {\n constructor() {\n this._constructors = new Map();\n }\n getConstructor(name) {\n return this._constructors.get(name);\n }\n getByClass(currentClass) {\n return this._constructors.get(currentClass.name)['value'];\n }\n createConstructor(name, value) {\n if (this._constructors.has(name)) {\n return this.getConstructor(name);\n }\n this._constructors.set(name, value);\n return this.getConstructor(name);\n }\n triggerOnInit(currentClass) {\n const currentConstructor = this._constructors.get(currentClass.name);\n if (currentConstructor['value'] && currentConstructor['value'].OnInit) {\n currentConstructor['value'].OnInit.bind(currentConstructor['value'])();\n }\n }\n}\nexports.ConstructorWatcherService = ConstructorWatcherService;\nexports.constructorWatcherService = new ConstructorWatcherService();\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./constructor-watcher\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContainerInstance = void 0;\nconst Container_1 = require(\"./Container\");\nconst MissingProvidedServiceTypeError_1 = require(\"./error/MissingProvidedServiceTypeError\");\nconst ServiceNotFoundError_1 = require(\"./error/ServiceNotFoundError\");\nconst Token_1 = require(\"./Token\");\nconst constructor_watcher_1 = require(\"../services/constructor-watcher\");\n/**\n * TypeDI can have multiple containers.\n * One container is ContainerInstance.\n */\nclass ContainerInstance {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n constructor(id) {\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n /**\n * All registered services.\n */\n this.services = new Map();\n this.id = id;\n }\n /**\n * Checks if the service with given name or type is registered service container.\n * Optionally, parameters can be passed in case if instance is initialized in the container for the first time.\n */\n has(identifier) {\n return !!this.findService(identifier);\n }\n /**\n * Retrieves the service with given name or type from the service container.\n * Optionally, parameters can be passed in case if instance is initialized in the container for the first time.\n */\n get(identifier) {\n const globalContainer = Container_1.Container.of(undefined);\n const service = globalContainer.findService(identifier);\n const scopedService = this.findService(identifier);\n if (service && service.global === true) {\n return this.getServiceValue(identifier, service);\n }\n if (scopedService) {\n return this.getServiceValue(identifier, scopedService);\n }\n if (service && this !== globalContainer) {\n const clonedService = Object.assign({}, service);\n clonedService.value = undefined;\n const value = this.getServiceValue(identifier, clonedService);\n this.set(identifier, value);\n return value;\n }\n return this.getServiceValue(identifier, service);\n }\n /**\n * Gets all instances registered in the container of the given service identifier.\n * Used when service defined with multiple: true flag.\n */\n getMany(id) {\n return this.filterServices(id).map(service => this.getServiceValue(id, service));\n }\n /**\n * Sets a value for the given type or service name in the container.\n */\n set(identifierOrServiceMetadata, value) {\n if (identifierOrServiceMetadata instanceof Array) {\n identifierOrServiceMetadata.forEach((v) => this.set(v));\n return this;\n }\n if (typeof identifierOrServiceMetadata === 'string' ||\n identifierOrServiceMetadata instanceof Token_1.Token) {\n return this.set({ id: identifierOrServiceMetadata, value: value });\n }\n if (typeof identifierOrServiceMetadata === 'object' &&\n identifierOrServiceMetadata.service) {\n return this.set({\n id: identifierOrServiceMetadata.service,\n value: value\n });\n }\n if (identifierOrServiceMetadata instanceof Function) {\n return this.set({\n type: identifierOrServiceMetadata,\n id: identifierOrServiceMetadata,\n value: value\n });\n }\n // const newService: ServiceMetadata = arguments.length === 1 && typeof identifierOrServiceMetadata === 'object' && !(identifierOrServiceMetadata instanceof Token) ? identifierOrServiceMetadata : undefined;\n const newService = identifierOrServiceMetadata;\n const service = this.services.get(newService);\n if (service && service.multiple !== true) {\n Object.assign(service, newService);\n }\n else {\n this.services.set(newService, newService);\n }\n return this;\n }\n /**\n * Removes services with a given service identifiers (tokens or types).\n */\n remove(...ids) {\n ids.forEach(id => {\n this.filterServices(id).forEach(service => {\n this.services.delete(service);\n });\n });\n return this;\n }\n /**\n * Completely resets the container by removing all previously registered services from it.\n */\n reset() {\n this.services.clear();\n return this;\n }\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n /**\n * Filters registered service in the with a given service identifier.\n */\n filterServices(identifier) {\n return Array.from(this.services.values()).filter(service => {\n if (service.id) {\n return service.id === identifier;\n }\n if (service.type && identifier instanceof Function) {\n return (service.type === identifier ||\n identifier.prototype instanceof service.type);\n }\n return false;\n });\n }\n /**\n * Finds registered service in the with a given service identifier.\n */\n findService(identifier) {\n return Array.from(this.services.values()).find(service => {\n if (service.id) {\n if (identifier instanceof Object &&\n service.id instanceof Token_1.Token &&\n identifier.service instanceof Token_1.Token) {\n return service.id === identifier.service;\n }\n return service.id === identifier;\n }\n if (service.type && identifier instanceof Function) {\n return service.type === identifier; // todo: not sure why it was here || identifier.prototype instanceof service.type;\n }\n return false;\n });\n }\n /**\n * Gets service value.\n */\n getServiceValue(identifier, service) {\n // find if instance of this object already initialized in the container and return it if it is\n if (service && service.value !== undefined) {\n return service.value;\n }\n // if named service was requested and its instance was not found plus there is not type to know what to initialize,\n // this means service was not pre-registered and we throw an exception\n if ((!service || !service.type) &&\n (!service || !service.factory) &&\n (typeof identifier === 'string' || identifier instanceof Token_1.Token)) {\n throw new ServiceNotFoundError_1.ServiceNotFoundError(identifier);\n }\n // at this point we either have type in service registered, either identifier is a target type\n let type = undefined;\n if (service && service.type) {\n type = service.type;\n }\n else if (service && service.id instanceof Function) {\n type = service.id;\n }\n else if (identifier instanceof Function) {\n type = identifier;\n // } else if (identifier instanceof Object && (identifier as { service: Token }).service instanceof Token) {\n // type = (identifier as { service: Token }).service;\n }\n // if service was not found then create a new one and register it\n if (!service) {\n if (!type) {\n throw new MissingProvidedServiceTypeError_1.MissingProvidedServiceTypeError(identifier);\n }\n service = { type: type };\n this.services.set(service, service);\n }\n // setup constructor parameters for a newly initialized service\n const paramTypes = type && Reflect && Reflect.getMetadata\n ? Reflect.getMetadata('design:paramtypes', type)\n : undefined;\n let params = paramTypes\n ? this.initializeParams(type, paramTypes)\n : [];\n // if factory is set then use it to create service instance\n let value;\n if (service.factory) {\n // filter out non-service parameters from created service constructor\n // non-service parameters can be, lets say Car(name: string, isNew: boolean, engine: Engine)\n // where name and isNew are non-service parameters and engine is a service parameter\n params = params.filter(param => param !== undefined);\n if (service.factory instanceof Array) {\n // use special [Type, 'create'] syntax to allow factory services\n // in this case Type instance will be obtained from Container and its method 'create' will be called\n value = this.get(service.factory[0])[service.factory[1]](...params);\n }\n else {\n // regular factory function\n value = service.factory(...params, this);\n }\n }\n else {\n // otherwise simply create a new object instance\n if (!type) {\n throw new MissingProvidedServiceTypeError_1.MissingProvidedServiceTypeError(identifier);\n }\n params.unshift(null);\n // 'extra feature' - always pass container instance as the last argument to the service function\n // this allows us to support javascript where we don't have decorators and emitted metadata about dependencies\n // need to be injected, and user can use provided container to get instances he needs\n params.push(this);\n if (type.prototype.OnBefore) {\n type.prototype.OnBefore.bind(type)();\n }\n value = new (type.bind.apply(type, params))();\n constructor_watcher_1.constructorWatcherService.createConstructor(type['name'], {\n type,\n value\n });\n // if (value.render) {\n // debugger\n // // const test = new value['__proto__'].constructor()\n // Extend React class Correctly\n // Object.assign(value['__proto__'].constructor.prototype, value);\n // console.log(value['__proto__'].constructor.prototype);\n // console.log(type['metadata']['moduleName'], value);\n // console.log(value['__proto__'].constructor)\n // }\n if (value.OnInit) {\n value.OnInit.bind(value)();\n }\n }\n if (service && !service.transient && value) {\n service.value = value;\n }\n if (type) {\n this.applyPropertyHandlers(type, value);\n }\n return value;\n }\n /**\n * Initializes all parameter types for a given target service class.\n */\n initializeParams(type, paramTypes) {\n return paramTypes.map((paramType, index) => {\n const paramHandler = Array.from(Container_1.Container.handlers.values()).find(handler => handler.object === type && handler.index === index);\n if (paramHandler) {\n return paramHandler.value(this);\n }\n if (paramType &&\n paramType.name &&\n !this.isTypePrimitive(paramType.name)) {\n return this.get(paramType);\n }\n return undefined;\n });\n }\n /**\n * Checks if given type is primitive (e.g. string, boolean, number, object).\n */\n isTypePrimitive(param) {\n return (['string', 'boolean', 'number', 'object'].indexOf(param.toLowerCase()) !== -1);\n }\n /**\n * Applies all registered handlers on a given target class.\n */\n applyPropertyHandlers(target, instance) {\n Container_1.Container.handlers.forEach(handler => {\n if (typeof handler.index === 'number') {\n return;\n }\n if (handler.object.constructor !== target &&\n !(target.prototype instanceof handler.object.constructor)) {\n return;\n }\n instance[handler.propertyName] = handler.value(this);\n });\n }\n}\nexports.ContainerInstance = ContainerInstance;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nconst ContainerInstance_1 = require(\"./ContainerInstance\");\n/**\n * Service container.\n */\nclass Container {\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Gets a separate container instance for the given instance id.\n */\n static of(instanceId) {\n if (instanceId === undefined)\n return this.globalInstance;\n let container = this.instances.get(instanceId);\n if (!container) {\n container = new ContainerInstance_1.ContainerInstance(instanceId);\n this.instances.set(instanceId, container);\n }\n return container;\n }\n /**\n * Checks if the service with given name or type is registered service container.\n * Optionally, parameters can be passed in case if instance is initialized in the container for the first time.\n */\n static has(identifier) {\n return this.globalInstance.has(identifier);\n }\n /**\n * Retrieves the service with given name or type from the service container.\n * Optionally, parameters can be passed in case if instance is initialized in the container for the first time.\n */\n static get(identifier) {\n return this.globalInstance.get(identifier);\n }\n /**\n * Gets all instances registered in the container of the given service identifier.\n * Used when service defined with multiple: true flag.\n */\n static getMany(id) {\n return this.globalInstance.getMany(id);\n }\n /**\n * Sets a value for the given type or service name in the container.\n */\n static set(identifierOrServiceMetadata, value) {\n this.globalInstance.set(identifierOrServiceMetadata, value);\n return this;\n }\n /**\n * Removes services with a given service identifiers (tokens or types).\n */\n static remove(...ids) {\n this.globalInstance.remove(...ids);\n return this;\n }\n /**\n * Completely resets the container by removing all previously registered services and handlers from it.\n */\n static reset(containerId) {\n if (containerId) {\n const instance = this.instances.get(containerId);\n if (instance) {\n instance.reset();\n this.instances.delete(containerId);\n }\n }\n else {\n this.globalInstance.reset();\n Array.from(this.instances.values()).forEach(i => i.reset());\n }\n return this;\n }\n /**\n * Registers a new handler.\n */\n static registerHandler(handler) {\n this.handlers.set(handler, handler);\n return this;\n }\n /**\n * Helper method that imports given services.\n */\n static import(services) {\n return this;\n }\n}\nexports.Container = Container;\n// -------------------------------------------------------------------------\n// Private Static Properties\n// -------------------------------------------------------------------------\n/**\n * Global container instance.\n */\nContainer.globalInstance = new ContainerInstance_1.ContainerInstance(undefined);\n/**\n * Other containers created using Container.of method.\n */\nContainer.instances = new Map();\n/**\n * All registered handlers.\n */\nContainer.handlers = new Map();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReflectDecorator = void 0;\nconst create_unique_hash_1 = require(\"./create-unique-hash\");\nconst Container_1 = require(\"../container/Container\");\nconst Token_1 = require(\"../container/Token\");\nfunction ReflectDecorator(options, metaOptions) {\n return (target) => {\n const uniqueHashForClass = (0, create_unique_hash_1.createUniqueHash)(`${target}${JSON.stringify(options, null, 4)}`);\n Object.defineProperty(target, 'originalName', {\n value: target.name || target.constructor.name,\n writable: false\n });\n Object.defineProperty(target, 'name', {\n value: uniqueHashForClass,\n writable: true\n });\n const nameCapitalized = (name) => name.charAt(0).toUpperCase() + name.slice(1);\n target['metadata'] = {\n moduleName: target['originalName'],\n moduleHash: uniqueHashForClass,\n options: options || null,\n type: metaOptions.type,\n raw: `\n ---- @${nameCapitalized(metaOptions.type)} '${target.name}' metadata----\n @${nameCapitalized(metaOptions.type)}(${JSON.stringify(options, null, 4)})\n ${target['originalName']}\n `\n };\n const service = {\n type: target\n };\n if (typeof options === 'string' || options instanceof Token_1.Token) {\n service.id = options;\n service.multiple = options.multiple;\n service.global = options.global || false;\n service.transient = options.transient;\n }\n else if (options) { // ServiceOptions\n service.id = options.id;\n service.factory = options.factory;\n service.multiple = options.multiple;\n service.global = options.global || false;\n service.transient = options.transient;\n }\n Container_1.Container.set(service);\n };\n}\nexports.ReflectDecorator = ReflectDecorator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Service = void 0;\nconst reflect_decorator_1 = require(\"../../helpers/reflect.decorator\");\n/**\n * Marks class as a service that can be injected using container.\n */\nfunction Service(options) {\n return (0, reflect_decorator_1.ReflectDecorator)(options, { type: 'service' });\n}\nexports.Service = Service;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./on-before\"), exports);\n__exportStar(require(\"./on-init\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InjectionToken = exports.ContainerInstance = exports.Container = exports.Injectable = void 0;\nvar Service_1 = require(\"../decorators/service/Service\");\nObject.defineProperty(exports, \"Injectable\", { enumerable: true, get: function () { return Service_1.Service; } });\nvar Container_1 = require(\"./Container\");\nObject.defineProperty(exports, \"Container\", { enumerable: true, get: function () { return Container_1.Container; } });\nvar ContainerInstance_1 = require(\"./ContainerInstance\");\nObject.defineProperty(exports, \"ContainerInstance\", { enumerable: true, get: function () { return ContainerInstance_1.ContainerInstance; } });\nvar Token_1 = require(\"./Token\");\nObject.defineProperty(exports, \"InjectionToken\", { enumerable: true, get: function () { return Token_1.Token; } });\n__exportStar(require(\"./types/hooks/index\"), exports);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export function isFunction(x: any): x is Function {\n return typeof x === 'function';\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like what Promise contructor should used to create Promises\n */\nexport const config = {\n /**\n * The promise constructor used by default for methods such as\n * {@link toPromise} and {@link forEach}\n */\n Promise: undefined as PromiseConstructorLike,\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BY TIME\n * FOR MIGRATION REASONS.\n */\n set useDeprecatedSynchronousErrorHandling(value: boolean) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n } else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","/**\n * Throws an error on another job so that it's picked up by the runtime's\n * uncaught error handling mechanism.\n * @param err the error to throw\n */\nexport function hostReportError(err: any) {\n setTimeout(() => { throw err; }, 0);\n}","import { Observer } from './types';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\nexport const empty: Observer = {\n closed: true,\n next(value: any): void { /* noop */},\n error(err: any): void {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n },\n complete(): void { /*noop*/ }\n};\n","export const isArray = (() => Array.isArray || ((x: any): x is T[] => x && typeof x.length === 'number'))();\n","export function isObject(x: any): x is Object {\n return x !== null && typeof x === 'object';\n}\n","export interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n new(errors: any[]): UnsubscriptionError;\n}\n\nconst UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(this: any, errors: any[]) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n\n return UnsubscriptionErrorImpl;\n})();\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = UnsubscriptionErrorImpl as any;","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic } from './types';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY: Subscription = (function(empty: any) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n /** @internal */\n protected _parentOrParents: Subscription | Subscription[] = null;\n /** @internal */\n private _subscriptions: SubscriptionLike[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n (this as any)._ctorUnsubscribe = true;\n (this as any)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = (this as any);\n\n this.closed = true;\n this._parentOrParents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n } else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n\n if (isFunction(_unsubscribe)) {\n // It's only possible to null _unsubscribe - to release the reference to\n // any teardown function passed in the constructor - if the property was\n // actually assigned in the constructor, as there are some classes that\n // are derived from Subscriber (which derives from Subscription) that\n // implement an _unsubscribe method as a mechanism for obtaining\n // unsubscription notifications and some of those subscribers are\n // recycled. Also, in some of those subscribers, _unsubscribe switches\n // from a prototype method to an instance property - see notifyNext in\n // RetryWhenSubscriber.\n if (_ctorUnsubscribe) {\n (this as any)._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n } catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n } else {\n errors.push(e);\n }\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription. Can also be used to add a child subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * When a parent subscription is unsubscribed, any child subscriptions that were added to it are also unsubscribed.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n let subscription = (teardown);\n\n if (!teardown) {\n return Subscription.EMPTY;\n }\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void)>teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n // This also covers the case where `subscription` is `Subscription.EMPTY`, which is always in `closed` state.\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n\n // Add `this` as parent of `subscription` if that's not already the case.\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n // If we don't have a parent, then set `subscription._parents` to\n // the `this`, which is the common case that we optimize for.\n subscription._parentOrParents = this;\n } else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n // If there's already one parent, but not multiple, allocate an\n // Array to store the rest of the parent Subscriptions.\n subscription._parentOrParents = [_parentOrParents, this];\n } else if (_parentOrParents.indexOf(this) === -1) {\n // Only add `this` to the _parentOrParents list if it's not already there.\n _parentOrParents.push(this);\n } else {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n\n // Optimize for the common case when adding the first subscription.\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n } else {\n subscriptions.push(subscription);\n }\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","/** @deprecated do not use, this is no longer checked by RxJS internals */\nexport const rxSubscriber = (() =>\n typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\n\n/**\n * @deprecated use rxSubscriber instead\n */\nexport const $$rxSubscriber = rxSubscriber;\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Observer, PartialObserver, TeardownLogic } from './types';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n\n [rxSubscriberSymbol]() { return this; }\n\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n */\n static create(next?: (x?: T) => void,\n error?: (e?: any) => void,\n complete?: () => void): Subscriber {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n\n /** @internal */ syncErrorValue: any = null;\n /** @internal */ syncErrorThrown: boolean = false;\n /** @internal */ syncErrorThrowable: boolean = false;\n\n protected isStopped: boolean = false;\n protected destination: PartialObserver | Subscriber; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n constructor(destinationOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, > destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, <((value: T) => void)> destinationOrNext, error, complete);\n break;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.destination.complete();\n this.unsubscribe();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SafeSubscriber extends Subscriber {\n\n private _context: any;\n\n constructor(private _parentSubscriber: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n let next: ((value: T) => void);\n let context: any = this;\n\n if (isFunction(observerOrNext)) {\n next = (<((value: T) => void)> observerOrNext);\n } else if (observerOrNext) {\n next = (> observerOrNext).next;\n error = (> observerOrNext).error;\n complete = (> observerOrNext).complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(<() => void> context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n\n next(value?: T): void {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n\n error(err?: any): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n } else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n } else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n\n complete(): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n }\n\n private __tryOrUnsub(fn: Function, value?: any): void {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n }\n }\n\n private __tryOrSetError(parent: Subscriber, fn: Function, value?: any): boolean {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n } else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _unsubscribe(): void {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\n\n/**\n * Determines whether the ErrorObserver is closed or stopped or has a\n * destination that is closed or stopped - in which case errors will\n * need to be reported via a different mechanism.\n * @param observer the observer\n */\nexport function canReportError(observer: Subscriber | Subject): boolean {\n while (observer) {\n const { closed, destination, isStopped } = observer as any;\n if (closed || isStopped) {\n return false;\n } else if (destination && destination instanceof Subscriber) {\n observer = destination;\n } else {\n observer = null;\n }\n }\n return true;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nimport { PartialObserver } from '../types';\n\nexport function toSubscriber(\n nextOrObserver?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscriber {\n\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return (> nextOrObserver);\n }\n\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n\n return new Subscriber(nextOrObserver, error, complete);\n}\n","/** Symbol.observable or a string \"@@observable\". Used for interop */\nexport const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n","export function identity(x: T): T {\n return x;\n}\n","import { noop } from './noop';\nimport { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pipe(): UnaryFunction;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction, ...fns: UnaryFunction[]): UnaryFunction;\n/* tslint:enable:max-line-length */\n\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n","import { Operator } from './Operator';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, PartialObserver, Subscribable } from './types';\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { iif } from './observable/iif';\nimport { throwError } from './observable/throwError';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n\n /** Internal implementation detail, do not use directly. */\n public _isScalar: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n source: Observable;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n operator: Operator;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n * @nocollapse\n * @deprecated use new Observable() instead\n */\n static create: Function = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n }\n\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n lift(operator: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: PartialObserver): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: null | undefined, error: null | undefined, complete: () => void): Subscription;\n /** @deprecated Use an observer instead of an error callback */\n subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Subscription;\n subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * ## Example\n * ### Subscribe with an Observer\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Subscribe with functions\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Cancel a subscription\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * );\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n sink.add(operator.call(sink, this.source));\n } else {\n sink.add(\n this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink)\n );\n }\n\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n\n return sink;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [promiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n // Must be declared in a separate statement to avoid a ReferenceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n }) as Promise;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): TeardownLogic {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n\n // `if` and `throw` are special snow flakes, the compiler sees them as reserved words. Deprecated in\n // favor of iif and throwError functions.\n /**\n * @nocollapse\n * @deprecated In favor of iif creation function: import { iif } from 'rxjs';\n */\n static if: typeof iif;\n /**\n * @nocollapse\n * @deprecated In favor of throwError creation function: import { throwError } from 'rxjs';\n */\n static throw: typeof throwError;\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction, ...operations: OperatorFunction[]): Observable<{}>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ### Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n if (operations.length === 0) {\n return this as any;\n }\n\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n toPromise(this: Observable): Promise;\n toPromise(this: Observable, PromiseCtor: typeof Promise): Promise;\n toPromise(this: Observable, PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: any;\n this.subscribe((x: T) => value = x, (err: any) => reject(err), () => resolve(value));\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return promiseCtor;\n}\n","export interface ObjectUnsubscribedError extends Error {\n}\n\nexport interface ObjectUnsubscribedErrorCtor {\n new(): ObjectUnsubscribedError;\n}\n\nconst ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl(this: any) {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n\n return ObjectUnsubscribedErrorImpl;\n})();\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = ObjectUnsubscribedErrorImpl as any;","import { Subject } from './Subject';\nimport { Observer } from './types';\nimport { Subscription } from './Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SubjectSubscription extends Subscription {\n closed: boolean = false;\n\n constructor(public subject: Subject, public subscriber: Observer) {\n super();\n }\n\n unsubscribe() {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n\n const subject = this.subject;\n const observers = subject.observers;\n\n this.subject = null;\n\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n\n const subscriberIndex = observers.indexOf(this.subscriber);\n\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\n\n/**\n * @class SubjectSubscriber\n */\nexport class SubjectSubscriber extends Subscriber {\n constructor(protected destination: Subject) {\n super(destination);\n }\n}\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n *\n * @class Subject\n */\nexport class Subject extends Observable implements SubscriptionLike {\n\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n\n observers: Observer[] = [];\n\n closed = false;\n\n isStopped = false;\n\n hasError = false;\n\n thrownError: any = null;\n\n constructor() {\n super();\n }\n\n /**@nocollapse\n * @deprecated use new Subject() instead\n */\n static create: Function = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n }\n\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n\n next(value?: T) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n\n error(err: any) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(subscriber: Subscriber): TeardownLogic {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return super._trySubscribe(subscriber);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create customize Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable = new Observable();\n (observable).source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(protected destination?: Observer, source?: Observable) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n\n error(err: any) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n } else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { Observable } from '../Observable';\n\n/**\n * Make a {@link ConnectableObservable} behave like a ordinary observable and automates the way\n * you can connect to it.\n *\n * Internally it counts the subscriptions to the observable and subscribes (only once) to the source if\n * the number of subscriptions is larger than 0. If the number of subscriptions is smaller than 1, it\n * unsubscribes from the source. This way you can make sure that everything before the *published*\n * refCount has only a single subscription independently of the number of subscribers to the target\n * observable.\n *\n * Note that using the {@link share} operator is exactly the same as using the *publish* operator\n * (making the observable hot) and the *refCount* operator in a sequence.\n *\n * ![](refCount.png)\n *\n * ## Example\n *\n * In the following example there are two intervals turned into connectable observables\n * by using the *publish* operator. The first one uses the *refCount* operator, the\n * second one does not use it. You will notice that a connectable observable does nothing\n * until you call its connect function.\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { tap, publish, refCount } from 'rxjs/operators';\n *\n * // Turn the interval observable into a ConnectableObservable (hot)\n * const refCountInterval = interval(400).pipe(\n * tap((num) => console.log(`refCount ${num}`)),\n * publish(),\n * refCount()\n * );\n *\n * const publishedInterval = interval(400).pipe(\n * tap((num) => console.log(`publish ${num}`)),\n * publish()\n * );\n *\n * refCountInterval.subscribe();\n * refCountInterval.subscribe();\n * // 'refCount 0' -----> 'refCount 1' -----> etc\n * // All subscriptions will receive the same value and the tap (and\n * // every other operator) before the publish operator will be executed\n * // only once per event independently of the number of subscriptions.\n *\n * publishedInterval.subscribe();\n * // Nothing happens until you call .connect() on the observable.\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link share}\n * @see {@link publish}\n */\nexport function refCount(): MonoTypeOperatorFunction {\n return function refCountOperatorFunction(source: ConnectableObservable): Observable {\n return source.lift(new RefCountOperator(source));\n } as MonoTypeOperatorFunction;\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // )\n // .subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Subject, SubjectSubscriber } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic } from '../types';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\n\n/**\n * @class ConnectableObservable\n */\nexport class ConnectableObservable extends Observable {\n\n protected _subject: Subject;\n protected _refCount: number = 0;\n protected _connection: Subscription;\n /** @internal */\n _isComplete = false;\n\n constructor(public source: Observable,\n protected subjectFactory: () => Subject) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n\n protected getSubject(): Subject {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n\n connect(): Subscription {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n\n refCount(): Observable {\n return higherOrderRefCount()(this) as Observable;\n }\n}\n\nexport const connectableObservableDescriptor: PropertyDescriptorMap = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null as null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null as null, writable: true },\n _connection: { value: null as null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\n\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination: Subject,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n protected _error(err: any): void {\n this._unsubscribe();\n super._error(err);\n }\n protected _complete(): void {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n protected _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // ).subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function groupBy(keySelector: (value: T) => K): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector: void, durationSelector: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable, subjectSelector?: () => Subject): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * ![](groupBy.png)\n *\n * When the Observable emits an item, a key is computed for this item with the keySelector function.\n *\n * If a {@link GroupedObservable} for this key exists, this {@link GroupedObservable} emits. Elsewhere, a new\n * {@link GroupedObservable} for this key is created and emits.\n *\n * A {@link GroupedObservable} represents values belonging to the same group represented by a common key. The common\n * key is available as the key field of a {@link GroupedObservable} instance.\n *\n * The elements emitted by {@link GroupedObservable}s are by default the items emitted by the Observable, or elements\n * returned by the elementSelector function.\n *\n * ## Examples\n *\n * ### Group objects by id and return as array\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { mergeMap, groupBy, reduce } from 'rxjs/operators';\n *\n * of(\n * {id: 1, name: 'JavaScript'},\n * {id: 2, name: 'Parcel'},\n * {id: 2, name: 'webpack'},\n * {id: 1, name: 'TypeScript'},\n * {id: 3, name: 'TSLint'}\n * ).pipe(\n * groupBy(p => p.id),\n * mergeMap((group$) => group$.pipe(reduce((acc, cur) => [...acc, cur], []))),\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'JavaScript'},\n * // { id: 1, name: 'TypeScript'} ]\n * //\n * // [ { id: 2, name: 'Parcel'},\n * // { id: 2, name: 'webpack'} ]\n * //\n * // [ { id: 3, name: 'TSLint'} ]\n * ```\n *\n * ### Pivot data on the id field\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { groupBy, map, mergeMap, reduce } from 'rxjs/operators';\n *\n * of(\n * { id: 1, name: 'JavaScript' },\n * { id: 2, name: 'Parcel' },\n * { id: 2, name: 'webpack' },\n * { id: 1, name: 'TypeScript' },\n * { id: 3, name: 'TSLint' }\n * )\n * .pipe(\n * groupBy(p => p.id, p => p.name),\n * mergeMap(group$ =>\n * group$.pipe(reduce((acc, cur) => [...acc, cur], [`${group$.key}`]))\n * ),\n * map(arr => ({ id: parseInt(arr[0], 10), values: arr.slice(1) }))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'JavaScript', 'TypeScript' ] }\n * // { id: 2, values: [ 'Parcel', 'webpack' ] }\n * // { id: 3, values: [ 'TSLint' ] }\n * ```\n *\n * @param {function(value: T): K} keySelector A function that extracts the key\n * for each item.\n * @param {function(value: T): R} [elementSelector] A function that extracts the\n * return element for each item.\n * @param {function(grouped: GroupedObservable): Observable} [durationSelector]\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @return {Observable>} An Observable that emits\n * GroupedObservables, each of which corresponds to a unique key value and each\n * of which emits those items from the source Observable that share that key\n * value.\n * @method groupBy\n * @owner Observable\n */\nexport function groupBy(keySelector: (value: T) => K,\n elementSelector?: ((value: T) => R) | void,\n durationSelector?: (grouped: GroupedObservable) => Observable,\n subjectSelector?: () => Subject): OperatorFunction> {\n return (source: Observable) =>\n source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n}\n\nexport interface RefCountSubscription {\n count: number;\n unsubscribe: () => void;\n closed: boolean;\n attemptedToUnsubscribe: boolean;\n}\n\nclass GroupByOperator implements Operator> {\n constructor(private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new GroupBySubscriber(\n subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupBySubscriber extends Subscriber implements RefCountSubscription {\n private groups: Map> = null;\n public attemptedToUnsubscribe: boolean = false;\n public count: number = 0;\n\n constructor(destination: Subscriber>,\n private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n super(destination);\n }\n\n protected _next(value: T): void {\n let key: K;\n try {\n key = this.keySelector(value);\n } catch (err) {\n this.error(err);\n return;\n }\n\n this._group(value, key);\n }\n\n private _group(value: T, key: K) {\n let groups = this.groups;\n\n if (!groups) {\n groups = this.groups = new Map>();\n }\n\n let group = groups.get(key);\n\n let element: R;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n } catch (err) {\n this.error(err);\n }\n } else {\n element = value;\n }\n\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject()) as Subject;\n groups.set(key, group);\n const groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n let duration: any;\n try {\n duration = this.durationSelector(new GroupedObservable(key, >group));\n } catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n\n if (!group.closed) {\n group.next(element);\n }\n }\n\n protected _error(err: any): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.error(err);\n });\n\n groups.clear();\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.complete();\n });\n\n groups.clear();\n }\n this.destination.complete();\n }\n\n removeGroup(key: K): void {\n this.groups.delete(key);\n }\n\n unsubscribe() {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n super.unsubscribe();\n }\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupDurationSubscriber extends Subscriber {\n constructor(private key: K,\n private group: Subject,\n private parent: GroupBySubscriber) {\n super(group);\n }\n\n protected _next(value: T): void {\n this.complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { parent, key } = this;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n }\n}\n\n/**\n * An Observable representing values belonging to the same group represented by\n * a common key. The values emitted by a GroupedObservable come from the source\n * Observable. The common key is available as the field `key` on a\n * GroupedObservable instance.\n *\n * @class GroupedObservable\n */\nexport class GroupedObservable extends Observable {\n /** @deprecated Do not construct this type. Internal use only */\n constructor(public key: K,\n private groupSubject: Subject,\n private refCountSubscription?: RefCountSubscription) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const subscription = new Subscription();\n const { refCountSubscription, groupSubject } = this;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass InnerRefCountSubscription extends Subscription {\n constructor(private parent: RefCountSubscription) {\n super();\n parent.count++;\n }\n\n unsubscribe() {\n const parent = this.parent;\n if (!parent.closed && !this.closed) {\n super.unsubscribe();\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n }\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { SubscriptionLike } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n if (subscription && !(subscription).closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n\n getValue(): T {\n if (this.hasError) {\n throw this.thrownError;\n } else if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return this._value;\n }\n }\n\n next(value: T): void {\n super.next(this._value = value);\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsyncAction extends Action {\n\n public id: any;\n public state: T;\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, id?: any, delay: number = 0): any {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(scheduler: AsyncScheduler, id: any, delay: number = 0): any {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n clearInterval(id);\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, delay: number): any {\n let errored: boolean = false;\n let errorValue: any = undefined;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n\n if (index !== -1) {\n actions.splice(index, 1);\n }\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class QueueAction extends AsyncAction {\n\n constructor(protected scheduler: QueueScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay) ;\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Otherwise flush the scheduler starting with this action.\n return scheduler.flush(this);\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}\n */\nexport class Scheduler implements SchedulerLike {\n\n /**\n * Note: the extra arrow function wrapper is to make testing by overriding\n * Date.now easier.\n * @nocollapse\n */\n public static now: () => number = () => Date.now();\n\n constructor(private SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport class AsyncScheduler extends Scheduler {\n public static delegate?: Scheduler;\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @deprecated internal use only\n */\n public active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @deprecated internal use only\n */\n public scheduled: any = undefined;\n\n constructor(SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n } else {\n return now();\n }\n });\n }\n\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n } else {\n return super.schedule(work, delay, state);\n }\n }\n\n public flush(action: AsyncAction): void {\n\n const {actions} = this;\n\n if (this.active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this.active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n\n this.active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated renamed. Use {@link queueScheduler}\n */\nexport const queue = queueScheduler;\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * The same Observable instance returned by any call to {@link empty} without a\n * `scheduler`. It is preferrable to use this over `empty()`.\n */\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n * \n *\n * ![](empty.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then complete\n * ```ts\n * import { empty } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * const result = empty().pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * ### Map and flatten only odd numbers to the sequence 'a', 'b', 'c'\n * ```ts\n * import { empty, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : empty()),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throwError}\n *\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @return An \"empty\" Observable: emits only the complete\n * notification.\n * @deprecated Deprecated in favor of using {@link EMPTY} constant, or {@link scheduled} (e.g. `scheduled([], scheduler)`)\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { SchedulerLike } from '../types';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && typeof (value).schedule === 'function';\n}\n","import { Subscriber } from '../Subscriber';\n\n/**\n * Subscribes to an ArrayLike with a subscriber\n * @param array The array or array-like to subscribe to\n */\nexport const subscribeToArray = (array: ArrayLike) => (subscriber: Subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function scheduleArray(input: ArrayLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\nexport function fromArray(input: ArrayLike, scheduler?: SchedulerLike) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n } else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { Observable } from '../Observable';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9, scheduler: SchedulerLike):\n Observable;\nexport function of(...args: (T | SchedulerLike)[]): Observable;\n\n// TODO(benlesh): Update the typings for this when we can switch to TS 3.x\nexport function of(a: T): Observable;\nexport function of(a: T, b: T2): Observable;\nexport function of(a: T, b: T2, c: T3): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9):\n Observable;\nexport function of(...args: T[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * Each argument becomes a `next` notification.\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: 10'\n * // 'next: 20'\n * // 'next: 30'\n *\n * ```\n *\n * Emit the array `[1,2,3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1,2,3])\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: [1,2,3]'\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n * @method of\n * @owner Observable\n */\n\nexport function of(...args: Array): Observable {\n let scheduler = args[args.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args as T[], scheduler);\n } else {\n return fromArray(args as T[]);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * Just emits 'error', and nothing else.\n * \n *\n * ![](throw.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the error notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then emit an error\n * ```ts\n * import { throwError, concat, of } from 'rxjs';\n *\n * const result = concat(of(7), throwError(new Error('oops!')));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // 7\n * // Error: oops!\n * ```\n *\n * ---\n *\n * ### Map and flatten numbers to the sequence 'a', 'b', 'c', but throw an error for 2\n * ```ts\n * import { throwError, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * interval(1000).pipe(\n * mergeMap(x => x === 2\n * ? throwError('Twos are bad')\n * : of('a', 'b', 'c')\n * ),\n * ).subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // a\n * // b\n * // c\n * // a\n * // b\n * // c\n * // Twos are bad\n * ```\n *\n * @see {@link Observable}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link of}\n *\n * @param {any} error The particular Error to pass to the error notification.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emission of the error notification.\n * @return {Observable} An error Observable: emits only the error notification\n * using the given error argument.\n * @static true\n * @name throwError\n * @owner Observable\n */\nexport function throwError(error: any, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n } else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\n\ninterface DispatchArg {\n error: any;\n subscriber: Subscriber;\n}\n\nfunction dispatch({ error, subscriber }: DispatchArg) {\n subscriber.error(error);\n}\n","import { PartialObserver } from './types';\nimport { Observable } from './Observable';\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { deprecate } from 'util';\n\n// TODO: When this enum is removed, replace it with a type alias. See #4556.\n/**\n * @deprecated NotificationKind is deprecated as const enums are not compatible with isolated modules. Use a string literal instead.\n */\nexport enum NotificationKind {\n NEXT = 'N',\n ERROR = 'E',\n COMPLETE = 'C',\n}\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification\n */\nexport class Notification {\n hasValue: boolean;\n\n constructor(public kind: 'N' | 'E' | 'C', public value?: T, public error?: any) {\n this.hasValue = kind === 'N';\n }\n\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n observe(observer: PartialObserver): any {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n do(next: (value: T) => void, error?: (err: any) => void, complete?: () => void): any {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n accept(nextOrObserver: PartialObserver | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n if (nextOrObserver && typeof (>nextOrObserver).next === 'function') {\n return this.observe(>nextOrObserver);\n } else {\n return this.do(<(value: T) => void>nextOrObserver, error, complete);\n }\n }\n\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n toObservable(): Observable {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n\n private static completeNotification: Notification = new Notification('C');\n private static undefinedValueNotification: Notification = new Notification('N', undefined);\n\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification} The \"next\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createNext(value: T): Notification {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification} The \"error\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createError(err?: any): Notification {\n return new Notification('E', undefined, err);\n }\n\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification} The valueless \"complete\" Notification.\n * @nocollapse\n */\n static createComplete(): Notification {\n return Notification.completeNotification;\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * Ensure a specific scheduler is used, from outside of an Observable.\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n * Ensure values in subscribe are called just before browser repaint.\n * ```ts\n * import { interval } from 'rxjs';\n * import { observeOn } from 'rxjs/operators';\n *\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler), // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param {SchedulerLike} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nexport function observeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function observeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\n\nexport class ObserveOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike, private delay: number = 0) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ObserveOnSubscriber extends Subscriber {\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: ObserveOnMessage) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n\n constructor(destination: Subscriber,\n private scheduler: SchedulerLike,\n private delay: number = 0) {\n super(destination);\n }\n\n private scheduleMessage(notification: Notification): void {\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule(\n ObserveOnSubscriber.dispatch,\n this.delay,\n new ObserveOnMessage(notification, this.destination)\n ));\n }\n\n protected _next(value: T): void {\n this.scheduleMessage(Notification.createNext(value));\n }\n\n protected _error(err: any): void {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nexport class ObserveOnMessage {\n constructor(public notification: Notification,\n public destination: PartialObserver) {\n }\n}\n","import { Subject } from './Subject';\nimport { SchedulerLike } from './types';\nimport { queue } from './scheduler/queue';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\n/**\n * A variant of Subject that \"replays\" or emits old values to new subscribers.\n * It buffers a set number of values and will emit those values immediately to\n * any new subscribers in addition to emitting new values to existing subscribers.\n *\n * @class ReplaySubject\n */\nexport class ReplaySubject extends Subject {\n private _events: (ReplayEvent | T)[] = [];\n private _bufferSize: number;\n private _windowTime: number;\n private _infiniteTimeWindow: boolean = false;\n\n constructor(bufferSize: number = Number.POSITIVE_INFINITY,\n windowTime: number = Number.POSITIVE_INFINITY,\n private scheduler?: SchedulerLike) {\n super();\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n } else {\n this.next = this.nextTimeWindow;\n }\n }\n\n private nextInfiniteTimeWindow(value: T): void {\n if (!this.isStopped) {\n const _events = this._events;\n _events.push(value);\n // Since this method is invoked in every next() call than the buffer\n // can overgrow the max size only by one item\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n super.next(value);\n }\n\n private nextTimeWindow(value: T): void {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n super.next(value);\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n // When `_infiniteTimeWindow === true` then the buffer is already trimmed\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription: Subscription;\n\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n } else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next((>_events[i]).value);\n }\n }\n\n if (this.hasError) {\n subscriber.error(this.thrownError);\n } else if (this.isStopped) {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n _getNow(): number {\n return (this.scheduler || queue).now();\n }\n\n private _trimBufferThenGetEvents(): ReplayEvent[] {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = []>this._events;\n\n const eventsCount = _events.length;\n let spliceCount = 0;\n\n // Trim events that fall out of the time window.\n // Start at the front of the list. Break early once\n // we encounter an event that falls within the window.\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n\n return _events;\n }\n\n}\n\nclass ReplayEvent {\n constructor(public time: number, public value: T) {\n }\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that only emits a value when it completes. It will emit\n * its latest value to all its observers on completion.\n *\n * @class AsyncSubject\n */\nexport class AsyncSubject extends Subject {\n private value: T = null;\n private hasNext: boolean = false;\n private hasCompleted: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return super._subscribe(subscriber);\n }\n\n next(value: T): void {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n }\n\n error(error: any): void {\n if (!this.hasCompleted) {\n super.error(error);\n }\n }\n\n complete(): void {\n this.hasCompleted = true;\n if (this.hasNext) {\n super.next(this.value);\n }\n super.complete();\n }\n}\n","let nextHandle = 1;\nconst RESOLVED = (() => Promise.resolve())();\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n setImmediate(cb: () => void): number {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n\n clearImmediate(handle: number): void {\n findAndClearHandle(handle);\n },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsapAction extends AsyncAction {\n\n constructor(protected scheduler: AsapScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If a microtask has already been scheduled, don't schedule another\n // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n // the current scheduled microtask id.\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(\n scheduler.flush.bind(scheduler, null)\n ));\n }\n protected recycleAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested microtask and\n // set the scheduled flag to undefined so the next AsapAction will schedule\n // its own.\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * Perform task as fast as it can be performed asynchronously\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated renamed. Use {@link asapScheduler}\n */\nexport const asap = asapScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated renamed. Use {@link asyncScheduler}\n */\nexport const async = asyncScheduler;","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AnimationFrameAction extends AsyncAction {\n\n constructor(protected scheduler: AnimationFrameScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(\n () => scheduler.flush(null)));\n }\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested animation frame and\n // set the scheduled flag to undefined so the next AnimationFrameAction will\n // request its own.\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated renamed. Use {@link animationFrameScheduler}\n */\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { SchedulerAction } from '../types';\n\nexport class VirtualTimeScheduler extends AsyncScheduler {\n\n protected static frameTimeFactor: number = 10;\n\n public frame: number = 0;\n public index: number = -1;\n\n constructor(SchedulerAction: typeof AsyncAction = VirtualAction as any,\n public maxFrames: number = Number.POSITIVE_INFINITY) {\n super(SchedulerAction, () => this.frame);\n }\n\n /**\n * Prompt the Scheduler to execute all of its queued actions, therefore\n * clearing its queue.\n * @return {void}\n */\n public flush(): void {\n\n const {actions, maxFrames} = this;\n let error: any, action: AsyncAction;\n\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @nodoc\n */\nexport class VirtualAction extends AsyncAction {\n\n protected active: boolean = true;\n\n constructor(protected scheduler: VirtualTimeScheduler,\n protected work: (this: SchedulerAction, state?: T) => void,\n protected index: number = scheduler.index += 1) {\n super(scheduler, work);\n this.index = scheduler.index = index;\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (!this.id) {\n return super.schedule(state, delay);\n }\n this.active = false;\n // If an action is rescheduled, we save allocations by mutating its state,\n // pushing it to the end of the scheduler queue, and recycling the action.\n // But since the VirtualTimeScheduler is used for testing, VirtualActions\n // must be immutable so they can be inspected later.\n const action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n\n protected requestAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n this.delay = scheduler.frame + delay;\n const {actions} = scheduler;\n actions.push(this);\n (actions as Array>).sort(VirtualAction.sortActions);\n return true;\n }\n\n protected recycleAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n return undefined;\n }\n\n protected _execute(state: T, delay: number): any {\n if (this.active === true) {\n return super._execute(state, delay);\n }\n }\n\n public static sortActions(a: VirtualAction, b: VirtualAction) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n } else if (a.index > b.index) {\n return 1;\n } else {\n return -1;\n }\n } else if (a.delay > b.delay) {\n return 1;\n } else {\n return -1;\n }\n }\n}\n","/* tslint:disable:no-empty */\nexport function noop() { }\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nexport function isObservable(obj: any): obj is Observable {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n","export interface ArgumentOutOfRangeError extends Error {\n}\n\nexport interface ArgumentOutOfRangeErrorCtor {\n new(): ArgumentOutOfRangeError;\n}\n\nconst ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl(this: any) {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n\n return ArgumentOutOfRangeErrorImpl;\n})();\n\n/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n *\n * @class ArgumentOutOfRangeError\n */\nexport const ArgumentOutOfRangeError: ArgumentOutOfRangeErrorCtor = ArgumentOutOfRangeErrorImpl as any;","export interface EmptyError extends Error {\n}\n\nexport interface EmptyErrorCtor {\n new(): EmptyError;\n}\n\nconst EmptyErrorImpl = (() => {\n function EmptyErrorImpl(this: any) {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n\n return EmptyErrorImpl;\n})();\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = EmptyErrorImpl as any;","export interface TimeoutError extends Error {\n}\n\nexport interface TimeoutErrorCtor {\n new(): TimeoutError;\n}\n\nconst TimeoutErrorImpl = (() => {\n function TimeoutErrorImpl(this: any) {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n\n TimeoutErrorImpl.prototype = Object.create(Error.prototype);\n\n return TimeoutErrorImpl;\n})();\n\n/**\n * An error thrown when duetime elapses.\n *\n * @see {@link operators/timeout}\n *\n * @class TimeoutError\n */\nexport const TimeoutError: TimeoutErrorCtor = TimeoutErrorImpl as any;\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n * Map every click to the clientX position of that click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nexport function map(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction {\n return function mapOperation(source: Observable): Observable {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\n\nexport class MapOperator implements Operator {\n constructor(private project: (value: T, index: number) => R, private thisArg: any) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapSubscriber extends Subscriber {\n count: number = 0;\n private thisArg: any;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => R,\n thisArg: any) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n protected _next(value: T) {\n let result: R;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isArray } from '../util/isArray';\nimport { isScheduler } from '../util/isScheduler';\n\n// tslint:disable:max-line-length\n/** @deprecated resultSelector is no longer supported, use a mapping function. */\nexport function bindCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: () => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\n\nexport function bindCallback(callbackFunc: (...args: Array
any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\nexport function bindCallback(callbackFunc: (...args: Array any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\n\nexport function bindCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\n// tslint:enable:max-line-length\n\n/**\n * Converts a callback API to a function that returns an Observable.\n *\n * Give it a function `f` of type `f(x, callback)` and\n * it will return a function `g` that when called as `g(x)` will output an\n * Observable.\n *\n * `bindCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters. The\n * last parameter must be a callback function that `func` calls when it is\n * done.\n *\n * The output of `bindCallback` is a function that takes the same parameters\n * as `func`, except the last one (the callback). When the output function\n * is called with arguments it will return an Observable. If function `func`\n * calls its callback with one argument, the Observable will emit that value.\n * If on the other hand the callback is called with multiple values the resulting\n * Observable will emit an array with said values as arguments.\n *\n * It is **very important** to remember that input function `func` is not called\n * when the output function is, but rather when the Observable returned by the output\n * function is subscribed. This means if `func` makes an AJAX request, that request\n * will be made every time someone subscribes to the resulting Observable, but not before.\n *\n * The last optional parameter - `scheduler` - can be used to control when the call\n * to `func` happens after someone subscribes to Observable, as well as when results\n * passed to callback will be emitted. By default, the subscription to an Observable calls `func`\n * synchronously, but using {@link asyncScheduler} as the last parameter will defer the call to `func`,\n * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you were to use the async Scheduler\n * and call `subscribe` on the output Observable, all function calls that are currently executing\n * will end before `func` is invoked.\n *\n * By default, results passed to the callback are emitted immediately after `func` invokes the callback.\n * In particular, if the callback is called synchronously, then the subscription of the resulting Observable\n * will call the `next` function synchronously as well. If you want to defer that call,\n * you may use {@link asyncScheduler} just as before. This means that by using `Scheduler.async` you can\n * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo.\n *\n * Note that the Observable created by the output function will always emit a single value\n * and then complete immediately. If `func` calls the callback multiple times, values from subsequent\n * calls will not appear in the stream. If you need to listen for multiple calls,\n * you probably want to use {@link fromEvent} or {@link fromEventPattern} instead.\n *\n * If `func` depends on some context (`this` property) and is not already bound, the context of `func`\n * will be the context that the output function has at call time. In particular, if `func`\n * is called as a method of some objec and if `func` is not already bound, in order to preserve the context\n * it is recommended that the context of the output function is set to that object as well.\n *\n * If the input function calls its callback in the \"node style\" (i.e. first argument to callback is\n * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback}\n * provides convenient error handling and probably is a better choice.\n * `bindCallback` will treat such functions the same as any other and error parameters\n * (whether passed or not) will always be interpreted as regular callback argument.\n *\n * ## Examples\n *\n * ### Convert jQuery's getJSON to an Observable API\n * ```ts\n * import { bindCallback } from 'rxjs';\n * import * as jQuery from 'jquery';\n *\n * // Suppose we have jQuery.getJSON('/my/url', callback)\n * const getJSONAsObservable = bindCallback(jQuery.getJSON);\n * const result = getJSONAsObservable('/my/url');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Receive an array of arguments passed to a callback\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const someFunction = (a, b, c) => {\n * console.log(a); // 5\n * console.log(b); // 'some string'\n * console.log(c); // {someProperty: 'someValue'}\n * };\n *\n * const boundSomeFunction = bindCallback(someFunction);\n * boundSomeFunction().subscribe(values => {\n * console.log(values) // [5, 'some string', {someProperty: 'someValue'}]\n * });\n * ```\n *\n * ### Compare behaviour with and without async Scheduler\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * function iCallMyCallbackSynchronously(cb) {\n * cb();\n * }\n *\n * const boundSyncFn = bindCallback(iCallMyCallbackSynchronously);\n * const boundAsyncFn = bindCallback(iCallMyCallbackSynchronously, null, Rx.Scheduler.async);\n *\n * boundSyncFn().subscribe(() => console.log('I was sync!'));\n * boundAsyncFn().subscribe(() => console.log('I was async!'));\n * console.log('This happened...');\n *\n * // Logs:\n * // I was sync!\n * // This happened...\n * // I was async!\n * ```\n *\n * ### Use bindCallback on an object method\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const boundMethod = bindCallback(someObject.methodWithCallback);\n * boundMethod.call(someObject) // make sure methodWithCallback has access to someObject\n * .subscribe(subscriber);\n * ```\n *\n * @see {@link bindNodeCallback}\n * @see {@link from}\n *\n * @param {function} func A function with a callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the callback would deliver.\n * @name bindCallback\n */\nexport function bindCallback(\n callbackFunc: Function,\n resultSelector?: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindCallback(callbackFunc, scheduler)(...args).pipe(\n map((args) => isArray(args) ? resultSelector(...args) : resultSelector(args)),\n );\n }\n }\n\n return function (this: any, ...args: any[]): Observable {\n const context = this;\n let subject: AsyncSubject;\n const params = {\n context,\n subject,\n callbackFunc,\n scheduler,\n };\n return new Observable(subscriber => {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n const state: DispatchState = {\n args, subscriber, params,\n };\n return scheduler.schedule>(dispatch, 0, state);\n }\n });\n };\n}\n\ninterface DispatchState {\n args: any[];\n subscriber: Subscriber;\n params: ParamsContext;\n}\n\ninterface ParamsContext {\n callbackFunc: Function;\n scheduler: SchedulerLike;\n context: any;\n subject: AsyncSubject;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const self = this;\n const { args, subscriber, params } = state;\n const { callbackFunc, context, scheduler } = params;\n let { subject } = params;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n subject.error(err);\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface NextState {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(this: SchedulerAction>, state: NextState) {\n const { value, subject } = state;\n subject.next(value);\n subject.complete();\n}\n\ninterface ErrorState {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(this: SchedulerAction>, state: ErrorState) {\n const { err, subject } = state;\n subject.error(err);\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function bindNodeCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any) => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable; /* tslint:enable:max-line-length */\n\nexport function bindNodeCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n/**\n * Converts a Node.js-style callback API to a function that returns an\n * Observable.\n *\n * It's just like {@link bindCallback}, but the\n * callback is expected to be of type `callback(error, result)`.\n *\n * `bindNodeCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters, but the\n * last parameter must be a callback function that `func` calls when it is\n * done. The callback function is expected to follow Node.js conventions,\n * where the first argument to the callback is an error object, signaling\n * whether call was successful. If that object is passed to callback, it means\n * something went wrong.\n *\n * The output of `bindNodeCallback` is a function that takes the same\n * parameters as `func`, except the last one (the callback). When the output\n * function is called with arguments, it will return an Observable.\n * If `func` calls its callback with error parameter present, Observable will\n * error with that value as well. If error parameter is not passed, Observable will emit\n * second parameter. If there are more parameters (third and so on),\n * Observable will emit an array with all arguments, except first error argument.\n *\n * Note that `func` will not be called at the same time output function is,\n * but rather whenever resulting Observable is subscribed. By default call to\n * `func` will happen synchronously after subscription, but that can be changed\n * with proper `scheduler` provided as optional third parameter. {@link SchedulerLike}\n * can also control when values from callback will be emitted by Observable.\n * To find out more, check out documentation for {@link bindCallback}, where\n * {@link SchedulerLike} works exactly the same.\n *\n * As in {@link bindCallback}, context (`this` property) of input function will be set to context\n * of returned function, when it is called.\n *\n * After Observable emits value, it will complete immediately. This means\n * even if `func` calls callback again, values from second and consecutive\n * calls will never appear on the stream. If you need to handle functions\n * that call callbacks multiple times, check out {@link fromEvent} or\n * {@link fromEventPattern} instead.\n *\n * Note that `bindNodeCallback` can be used in non-Node.js environments as well.\n * \"Node.js-style\" callbacks are just a convention, so if you write for\n * browsers or any other environment and API you use implements that callback style,\n * `bindNodeCallback` can be safely used on that API functions as well.\n *\n * Remember that Error object passed to callback does not have to be an instance\n * of JavaScript built-in `Error` object. In fact, it does not even have to an object.\n * Error parameter of callback function is interpreted as \"present\", when value\n * of that parameter is truthy. It could be, for example, non-zero number, non-empty\n * string or boolean `true`. In all of these cases resulting Observable would error\n * with that value. This means usually regular style callbacks will fail very often when\n * `bindNodeCallback` is used. If your Observable errors much more often then you\n * would expect, check if callback really is called in Node.js-style and, if not,\n * switch to {@link bindCallback} instead.\n *\n * Note that even if error parameter is technically present in callback, but its value\n * is falsy, it still won't appear in array emitted by Observable.\n *\n * ## Examples\n * ### Read a file from the filesystem and get the data as an Observable\n * ```ts\n * import * as fs from 'fs';\n * const readFileAsObservable = bindNodeCallback(fs.readFile);\n * const result = readFileAsObservable('./roadNames.txt', 'utf8');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Use on function calling callback with multiple arguments\n * ```ts\n * someFunction((err, a, b) => {\n * console.log(err); // null\n * console.log(a); // 5\n * console.log(b); // \"some string\"\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(value => {\n * console.log(value); // [5, \"some string\"]\n * });\n * ```\n *\n * ### Use on function calling callback in regular style\n * ```ts\n * someFunction(a => {\n * console.log(a); // 5\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(\n * value => {} // never gets called\n * err => console.log(err) // 5\n * );\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {function} func Function with a Node.js-style callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the Node.js callback would\n * deliver.\n * @name bindNodeCallback\n */\nexport function bindNodeCallback(\n callbackFunc: Function,\n resultSelector: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindNodeCallback(callbackFunc, scheduler)(...args).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n }\n\n return function(this: any, ...args: any[]): Observable {\n const params: ParamsState = {\n subject: undefined,\n args,\n callbackFunc,\n scheduler,\n context: this,\n };\n return new Observable(subscriber => {\n const { context } = params;\n let { subject } = params;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n\n if (err) {\n subject.error(err);\n return;\n }\n\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n return scheduler.schedule>(dispatch, 0, { params, subscriber, context });\n }\n });\n };\n}\n\ninterface DispatchState {\n subscriber: Subscriber;\n context: any;\n params: ParamsState;\n}\n\ninterface ParamsState {\n callbackFunc: Function;\n args: any[];\n scheduler: SchedulerLike;\n subject: AsyncSubject;\n context: any;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const { params, subscriber, context } = state;\n const { callbackFunc, args, scheduler } = params;\n let subject = params.subject;\n\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n if (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n } else {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n }\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface DispatchNextArg {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(arg: DispatchNextArg) {\n const { value, subject } = arg;\n subject.next(value);\n subject.complete();\n}\n\ninterface DispatchErrorArg {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(arg: DispatchErrorArg) {\n const { err, subject } = arg;\n subject.error(err);\n}\n","import { Subscriber } from './Subscriber';\nimport { InnerSubscriber } from './InnerSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this.destination.error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.destination.complete();\n }\n}\n","import { Subscriber } from './Subscriber';\nimport { OuterSubscriber } from './OuterSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class InnerSubscriber extends Subscriber {\n private index = 0;\n\n constructor(private parent: OuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { hostReportError } from './hostReportError';\n\nexport const subscribeToPromise = (promise: PromiseLike) => (subscriber: Subscriber) => {\n promise.then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, hostReportError);\n return subscriber;\n};\n","export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n\n/**\n * @deprecated use {@link iterator} instead\n */\nexport const $$iterator = iterator;\n","import { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport const subscribeToIterable = (iterable: Iterable) => (subscriber: Subscriber) => {\n const iterator = (iterable as any)[Symbol_iterator]();\n\n do {\n let item: IteratorResult;\n try {\n item = iterator.next();\n } catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n\n // Finalize the iterator if it happens to be a Generator\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n\n return subscriber;\n};\n","import { Subscriber } from '../Subscriber';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/**\n * Subscribes to an object that implements Symbol.observable with the given\n * Subscriber.\n * @param obj An object that implements Symbol.observable\n */\nexport const subscribeToObservable = (obj: any) => (subscriber: Subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n } else {\n return obs.subscribe(subscriber);\n }\n};\n","export const isArrayLike = ((x: any): x is ArrayLike => x && typeof x.length === 'number' && typeof x !== 'function');","/**\n * Tests to see if the object is an ES2015 (ES6) Promise\n * @see {@link https://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects}\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return !!value && typeof (value).subscribe !== 'function' && typeof (value as any).then === 'function';\n}\n","import { ObservableInput } from '../types';\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { Subscription } from '../Subscription';\nimport { Subscriber } from '../Subscriber';\n\nexport const subscribeTo = (result: ObservableInput): (subscriber: Subscriber) => Subscription | void => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result as any);\n } else if (isArrayLike(result)) {\n return subscribeToArray(result);\n } else if (isPromise(result)) {\n return subscribeToPromise(result as Promise);\n } else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result as any);\n } else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { Subscription } from '../Subscription';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Subscriber } from '../Subscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue: undefined,\n outerIndex: undefined,\n innerSubscriber: InnerSubscriber\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number,\n innerSubscriber: Subscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)\n): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber) as Subscription;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Operator } from '../Operator';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\n\nconst NONE = {};\n\n/* tslint:disable:max-line-length */\n\n// If called with a single array, it \"auto-spreads\" the array, with result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: [O1], resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(sources: [O1, O2], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(sources: [O1, O2, O3], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(sources: [O1, O2, O3, O4], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5, O6], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: O[], resultSelector: (...args: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n// standard call, but with a result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n\n// With a scheduler (deprecated)\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: [O1], scheduler: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: O[], scheduler: SchedulerLike): Observable[]>;\n\n// Best case\nexport function combineLatest>(sources: [O1]): Observable<[ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2]): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest>(sources: O[]): Observable[]>;\n\n// Standard calls\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(v1: O1, scheduler?: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(...observables: O[]): Observable;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, R>(...observables: Array | ((...values: Array) => R)>): Observable;\n\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(...observables: Array): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, R>(...observables: Array[]) => R) | SchedulerLike>): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest(...observables: Array | ((...values: Array) => R) | SchedulerLike>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.\n *\n * ![](combineLatest.png)\n *\n * `combineLatest` combines the values from all the Observables passed as\n * arguments. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to operator,\n * returned Observable will always emit an array of `n` values, in order\n * corresponding to order of passed Observables (value from the first Observable\n * on the first place and so on).\n *\n * Static version of `combineLatest` accepts either an array of Observables\n * or each Observable can be put directly as an argument. Note that array of\n * Observables is good choice, if you don't know beforehand how many Observables\n * you will combine. Passing empty array will result in Observable that\n * completes immediately.\n *\n * To ensure output array has always the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will be now impossible to include value from\n * completed Observable in resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * `combineLatest` accepts as optional parameter `project` function, which takes\n * as arguments all values that would normally be emitted by resulting Observable.\n * `project` can return any kind of value, which will be then emitted by Observable\n * instead of default array. Note that `project` does not take as argument that array\n * of values, but values themselves. That means default `project` can be imagined\n * as function that takes all its arguments and puts them into an array.\n *\n * ## Examples\n * ### Combine two timer Observables\n * ```ts\n * import { combineLatest, timer } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest(firstTimer, secondTimer);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n *\n * ### Combine an array of Observables\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { delay, starWith } from 'rxjs/operators';\n *\n * const observables = [1, 5, 10].map(\n * n => of(n).pipe(\n * delay(n * 1000), // emit 0 and then emit n after n seconds\n * startWith(0),\n * )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n *\n * ### Use project function to dynamically calculate the Body-Mass Index\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest(weight, height).pipe(\n * map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} observable1 An input Observable to combine with other Observables.\n * @param {ObservableInput} observable2 An input Observable to combine with other Observables.\n * More than one input Observables may be given as arguments\n * or an array of Observables may be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nexport function combineLatest, R>(\n ...observables: (O | ((...values: ObservedValueOf[]) => R) | SchedulerLike)[]\n): Observable {\n let resultSelector: ((...values: Array) => R) | undefined = undefined;\n let scheduler: SchedulerLike|undefined = undefined;\n\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop() as SchedulerLike;\n }\n\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop() as (...values: Array) => R;\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], resultSelector)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0] as any;\n }\n\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\n\nexport class CombineLatestOperator implements Operator {\n constructor(private resultSelector?: (...values: Array) => R) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class CombineLatestSubscriber extends OuterSubscriber {\n private active: number = 0;\n private values: any[] = [];\n private observables: any[] = [];\n private toRespond?: number;\n\n constructor(destination: Subscriber, private resultSelector?: (...values: Array) => R) {\n super(destination);\n }\n\n protected _next(observable: any) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete!();\n } else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n }\n\n notifyComplete(unused: Subscriber): void {\n if ((this.active -= 1) === 0) {\n this.destination.complete!();\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n } else {\n this.destination.next!(values.slice());\n }\n }\n }\n\n private _tryResultSelector(values: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, values);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { InteropObservable, SchedulerLike, Subscribable } from '../types';\n\nexport function scheduleObservable(input: InteropObservable, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable: Subscribable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function schedulePromise(input: PromiseLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(\n value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n },\n err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n }\n )));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport function scheduleIterable(input: Iterable, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator: Iterator;\n sub.add(() => {\n // Finalize generators\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value: T;\n let done: boolean;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n } catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n } else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { ObservableInput, SchedulerLike, Observable } from 'rxjs';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see from\n * @see of\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled(input: ObservableInput, scheduler: SchedulerLike): Observable {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n } else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n } else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n } else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\n\nexport function from>(input: O): Observable>;\n/** @deprecated use {@link scheduled} instead. */\nexport function from>(input: O, scheduler: SchedulerLike): Observable>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * Converts almost anything to an Observable.\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * iterable\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * ### Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * ---\n *\n * ### Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * ---\n *\n * ### With async scheduler\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // start\n * // end\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable}\n * @name from\n * @owner Observable\n */\nexport function from(input: ObservableInput, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n } else {\n return scheduled(input, scheduler);\n }\n}\n","/** @prettier */\nimport { Subscription } from './Subscription';\nimport { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\n\ninterface SimpleOuterSubscriberLike {\n /**\n * A handler for inner next notifications from the inner subscription\n * @param innerValue the value nexted by the inner producer\n */\n notifyNext(innerValue: T): void;\n /**\n * A handler for inner error notifications from the inner subscription\n * @param err the error from the inner producer\n */\n notifyError(err: any): void;\n /**\n * A handler for inner complete notifications from the inner subscription.\n */\n notifyComplete(): void;\n}\n\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(private parent: SimpleOuterSubscriberLike) {\n super();\n }\n\n protected _next(value: T): void {\n this.parent.notifyNext(value);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\n\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(private parent: ComplexOuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n\nexport class SimpleOuterSubscriber extends Subscriber implements SimpleOuterSubscriberLike {\n notifyNext(innerValue: R): void {\n this.destination.next(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error(err);\n }\n\n notifyComplete(): void {\n this.destination.complete();\n }\n}\n\n/**\n * DO NOT USE (formerly \"OuterSubscriber\")\n * TODO: We want to refactor this and remove it. It is retaining values it shouldn't for long\n * periods of time.\n */\nexport class ComplexOuterSubscriber extends Subscriber {\n /**\n * @param _outerValue Used by: bufferToggle, delayWhen, windowToggle\n * @param innerValue Used by: subclass default, combineLatest, race, bufferToggle, windowToggle, withLatestFrom\n * @param _outerIndex Used by: combineLatest, race, withLatestFrom\n * @param _innerSub Used by: delayWhen\n */\n notifyNext(_outerValue: T, innerValue: R, _outerIndex: number, _innerSub: ComplexInnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any): void {\n this.destination.error(error);\n }\n\n /**\n * @param _innerSub Used by: race, bufferToggle, delayWhen, windowToggle, windowWhen\n */\n notifyComplete(_innerSub: ComplexInnerSubscriber): void {\n this.destination.complete();\n }\n}\n\nexport function innerSubscribe(result: any, innerSubscriber: Subscriber): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n let subscription: Subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber) as Subscription;\n } catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap>(project: (value: T, index: number) => O, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: undefined, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n * Map and flatten each letter to an Observable ticking every 1 second\n * ```ts\n * import { of, interval } from 'rxjs';\n * import { mergeMap, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x+i))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and merging the results of the Observables\n * obtained from this transformation.\n */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n mergeMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: number) => resultSelector(a, b, i, ii)),\n ), concurrent)\n );\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source: Observable) => source.lift(new MergeMapOperator(project, concurrent));\n}\n\nexport class MergeMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new MergeMapSubscriber(\n observer, this.project, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private buffer: T[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n } else {\n this.buffer.push(value);\n }\n }\n\n protected _tryNext(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n\n private _innerSub(ish: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift()!);\n } else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * @deprecated renamed. Use {@link mergeMap}\n */\nexport const flatMap = mergeMap;","\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map((ev) => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { take, map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(10))),\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nexport function mergeAll(concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction, T> {\n return mergeMap(identity, concurrent);\n}\n","\nimport { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function concatAll(): OperatorFunction, T>;\nexport function concatAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.\n *\n * ![](concatAll.png)\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, take, concatAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev => interval(1000).pipe(take(4))),\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nexport function concatAll(): OperatorFunction, T> {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { of } from './of';\nimport { from } from './from';\nimport { concatAll } from '../operators/concatAll';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(v1: O1, scheduler: SchedulerLike): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler: SchedulerLike): Observable | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n\nexport function concat>(v1: O1): Observable>;\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2): Observable | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat>(...observables: O[]): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(...observables: (O | SchedulerLike)[]): Observable>;\nexport function concat(...observables: ObservableInput[]): Observable;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat(...observables: (ObservableInput | SchedulerLike)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.\n *\n * ![](concat.png)\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n * ### Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n * ```ts\n * import { concat, interval, range } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * ### Concatenate 3 Observables\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * ### Concatenate the same Observable to repeat it\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {SchedulerLike} [scheduler=null] An optional {@link SchedulerLike} to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nexport function concat, R>(...observables: Array): Observable | R> {\n return concatAll()(of(...observables));\n}\n","import { Observable } from '../Observable';\nimport { SubscribableOrPromise, ObservedValueOf, ObservableInput } from '../types';\nimport { from } from './from'; // lol\nimport { empty } from './empty';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * Creates the Observable lazily, that is, only when it\n * is subscribed.\n * \n *\n * ![](defer.png)\n *\n * `defer` allows you to create the Observable only when the Observer\n * subscribes, and create a fresh Observable for each Observer. It waits until\n * an Observer subscribes to it, and then it generates an Observable,\n * typically with an Observable factory function. It does this afresh for each\n * subscriber, so although each subscriber may think it is subscribing to the\n * same Observable, in fact each subscriber gets its own individual\n * Observable.\n *\n * ## Example\n * ### Subscribe to either an Observable of clicks or an Observable of interval, at random\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(function () {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): SubscribableOrPromise} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n * @static true\n * @name defer\n * @owner Observable\n */\nexport function defer | void>(observableFactory: () => R): Observable> {\n return new Observable>(subscriber => {\n let input: R | void;\n try {\n input = observableFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input as ObservableInput>) : empty();\n return source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, ObservedValuesFromArray, ObservedValueOf, SubscribableOrPromise } from '../types';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { isObservable } from '../util/isObservable';\nimport { from } from './from';\n\n/* tslint:disable:max-line-length */\n\n// forkJoin(a$, b$, c$)\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: SubscribableOrPromise): Observable<[T]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput): Observable<[T, T2]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable<[T, T2, T3]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable<[T, T2, T3, T4]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable<[T, T2, T3, T4, T5]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable<[T, T2, T3, T4, T5, T6]>;\n\n// forkJoin([a$, b$, c$]);\n// TODO(benlesh): Uncomment for TS 3.0\n// export function forkJoin(sources: []): Observable;\nexport function forkJoin(sources: [ObservableInput]): Observable<[A]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput]): Observable<[A, B]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E, F]>;\nexport function forkJoin[]>(sources: A): Observable[]>;\n\n// forkJoin({})\nexport function forkJoin(sourcesObject: {}): Observable;\nexport function forkJoin(sourcesObject: T): Observable<{ [K in keyof T]: ObservedValueOf }>;\n\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function forkJoin(...args: Array|Function>): Observable;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(...sources: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Accepts an `Array` of {@link ObservableInput} or a dictionary `Object` of {@link ObservableInput} and returns\n * an {@link Observable} that emits either an array of values in the exact same order as the passed array,\n * or a dictionary of values in the same shape as the passed dictionary.\n *\n * Wait for Observables to complete and then combine last values they emitted.\n *\n * ![](forkJoin.png)\n *\n * `forkJoin` is an operator that takes any number of input observables which can be passed either as an array\n * or a dictionary of input observables. If no input observables are provided, resulting stream will complete\n * immediately.\n *\n * `forkJoin` will wait for all passed observables to complete and then it will emit an array or an object with last\n * values from corresponding observables.\n *\n * If you pass an array of `n` observables to the operator, resulting\n * array will have `n` values, where first value is the last thing emitted by the first observable,\n * second value is the last thing emitted by the second observable and so on.\n *\n * If you pass a dictionary of observables to the operator, resulting\n * objects will have the same keys as the dictionary passed, with their last values they've emitted\n * located at the corresponding key.\n *\n * That means `forkJoin` will not emit more than once and it will complete after that. If you need to emit combined\n * values not only at the end of lifecycle of passed observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for resulting array to have the same length as the number of input observables, whenever any of\n * that observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other observables.\n * Conversely, if there is an observable that never completes, `forkJoin` will never complete as well,\n * unless at any point some other observable completes without emitting value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all observables passed as arguments\n * have to emit something at least once and complete.\n *\n * If any input observable errors at some point, `forkJoin` will error as well and all other observables\n * will be immediately unsubscribed.\n *\n * Optionally `forkJoin` accepts project function, that will be called with values which normally\n * would land in emitted array. Whatever is returned by project function, will appear in output\n * observable instead. This means that default project can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that project function will be called only\n * when output observable is supposed to emit a result.\n *\n * ## Examples\n *\n * ### Use forkJoin with a dictionary of observable inputs\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin({\n * foo: of(1, 2, 3, 4),\n * bar: Promise.resolve(8),\n * baz: timer(4000),\n * });\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // { foo: 4, bar: 8, baz: 0 } after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * ### Use forkJoin with an array of observable inputs\n * ```ts\n * import { forkJoin, of } from 'rxjs';\n *\n * const observable = forkJoin([\n * of(1, 2, 3, 4),\n * Promise.resolve(8),\n * timer(4000),\n * ]);\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // [4, 8, 0] after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...ObservableInput} sources Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nexport function forkJoin(\n ...sources: any[]\n): Observable {\n if (sources.length === 1) {\n const first = sources[0];\n if (isArray(first)) {\n return forkJoinInternal(first, null);\n }\n // TODO(benlesh): isObservable check will not be necessary when deprecated path is removed.\n if (isObject(first) && Object.getPrototypeOf(first) === Object.prototype) {\n const keys = Object.keys(first);\n return forkJoinInternal(keys.map(key => first[key]), keys);\n }\n }\n\n // DEPRECATED PATHS BELOW HERE\n if (typeof sources[sources.length - 1] === 'function') {\n const resultSelector = sources.pop() as Function;\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(\n map((args: any[]) => resultSelector(...args))\n );\n }\n\n return forkJoinInternal(sources, null);\n}\n\nfunction forkJoinInternal(sources: ObservableInput[], keys: string[] | null): Observable {\n return new Observable(subscriber => {\n const len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n const values = new Array(len);\n let completed = 0;\n let emitted = 0;\n for (let i = 0; i < len; i++) {\n const source = from(sources[i]);\n let hasValue = false;\n subscriber.add(source.subscribe({\n next: value => {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: err => subscriber.error(err),\n complete: () => {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce((result, key, i) => (result[key] = values[i], result), {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\n\nconst toString: Function = (() => Object.prototype.toString)();\n\nexport interface NodeStyleEventEmitter {\n addListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n removeListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n addListener: (eventName: string, handler: NodeEventHandler) => void | {};\n removeListener: (eventName: string, handler: NodeEventHandler) => void | {};\n}\n\nexport interface JQueryStyleEventEmitter {\n on: (eventName: string, handler: Function) => void;\n off: (eventName: string, handler: Function) => void;\n}\n\nexport interface HasEventTargetAddRemove {\n addEventListener(type: string, listener: ((evt: E) => void) | null, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: string, listener?: ((evt: E) => void) | null, options?: EventListenerOptions | boolean): void;\n}\n\nexport type EventTargetLike = HasEventTargetAddRemove | NodeStyleEventEmitter | NodeCompatibleEventEmitter | JQueryStyleEventEmitter;\n\nexport type FromEventTarget = EventTargetLike | ArrayLike>;\n\nexport interface EventListenerOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n}\n\n/* tslint:disable:max-line-length */\nexport function fromEvent(target: FromEventTarget, eventName: string): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, resultSelector: (...args: any[]) => T): Observable;\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions, resultSelector: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n * ### Emits clicks happening on the DOM document\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * ### Use addEventListener with capture option\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicksInDocument = fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * const clicksInDiv = fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable}\n * @name fromEvent\n */\nexport function fromEvent(\n target: FromEventTarget,\n eventName: string,\n options?: EventListenerOptions | ((...args: any[]) => T),\n resultSelector?: ((...args: any[]) => T)\n): Observable {\n\n if (isFunction(options)) {\n // DEPRECATED PATH\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEvent(target, eventName, options).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n function handler(e: T) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n } else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options as EventListenerOptions);\n });\n}\n\nfunction setupSubscription(sourceObj: FromEventTarget, eventName: string,\n handler: (...args: any[]) => void, subscriber: Subscriber,\n options?: EventListenerOptions) {\n let unsubscribe: () => void;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n } else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n } else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler as NodeEventHandler);\n unsubscribe = () => source.removeListener(eventName, handler as NodeEventHandler);\n } else if (sourceObj && (sourceObj as any).length) {\n for (let i = 0, len = (sourceObj as any).length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n } else {\n throw new TypeError('Invalid event target');\n }\n\n subscriber.add(unsubscribe);\n}\n\nfunction isNodeStyleEventEmitter(sourceObj: any): sourceObj is NodeStyleEventEmitter {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\n\nfunction isJQueryStyleEventEmitter(sourceObj: any): sourceObj is JQueryStyleEventEmitter {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\n\nfunction isEventTarget(sourceObj: any): sourceObj is HasEventTargetAddRemove {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { NodeEventHandler } from './fromEvent';\nimport { map } from '../operators/map';\n\n/* tslint:disable:max-line-length */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void, resultSelector?: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable from an arbitrary API for registering event handlers.\n *\n * When that method for adding event handler was something {@link fromEvent}\n * was not prepared for.\n *\n * ![](fromEventPattern.png)\n *\n * `fromEventPattern` allows you to convert into an Observable any API that supports registering handler functions\n * for events. It is similar to {@link fromEvent}, but far\n * more flexible. In fact, all use cases of {@link fromEvent} could be easily handled by\n * `fromEventPattern` (although in slightly more verbose way).\n *\n * This operator accepts as a first argument an `addHandler` function, which will be injected with\n * handler parameter. That handler is actually an event handler function that you now can pass\n * to API expecting it. `addHandler` will be called whenever Observable\n * returned by the operator is subscribed, so registering handler in API will not\n * necessarily happen when `fromEventPattern` is called.\n *\n * After registration, every time an event that we listen to happens,\n * Observable returned by `fromEventPattern` will emit value that event handler\n * function was called with. Note that if event handler was called with more\n * then one argument, second and following arguments will not appear in the Observable.\n *\n * If API you are using allows to unregister event handlers as well, you can pass to `fromEventPattern`\n * another function - `removeHandler` - as a second parameter. It will be injected\n * with the same handler function as before, which now you can use to unregister\n * it from the API. `removeHandler` will be called when consumer of resulting Observable\n * unsubscribes from it.\n *\n * In some APIs unregistering is actually handled differently. Method registering an event handler\n * returns some kind of token, which is later used to identify which function should\n * be unregistered or it itself has method that unregisters event handler.\n * If that is the case with your API, make sure token returned\n * by registering method is returned by `addHandler`. Then it will be passed\n * as a second argument to `removeHandler`, where you will be able to use it.\n *\n * If you need access to all event handler parameters (not only the first one),\n * or you need to transform them in any way, you can call `fromEventPattern` with optional\n * third parameter - project function which will accept all arguments passed to\n * event handler when it is called. Whatever is returned from project function will appear on\n * resulting stream instead of usual event handlers first argument. This means\n * that default project can be thought of as function that takes its first parameter\n * and ignores the rest.\n *\n * ## Example\n * ### Emits clicks happening on the DOM document\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * function addClickHandler(handler) {\n * document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n * document.removeEventListener('click', handler);\n * }\n *\n * const clicks = fromEventPattern(\n * addClickHandler,\n * removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * // Whenever you click anywhere in the browser, DOM MouseEvent\n * // object will be logged.\n * ```\n *\n * ## Example\n * ### Use with API that returns cancellation token\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * const token = someAPI.registerEventHandler(function() {});\n * someAPI.unregisterEventHandler(token); // this APIs cancellation method accepts\n * // not handler itself, but special token.\n *\n * const someAPIObservable = fromEventPattern(\n * function(handler) { return someAPI.registerEventHandler(handler); }, // Note that we return the token here...\n * function(handler, token) { someAPI.unregisterEventHandler(token); } // ...to then use it here.\n * );\n * ```\n *\n * ## Example\n * ### Use with project function\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * someAPI.registerEventHandler((eventType, eventMessage) => {\n * console.log(eventType, eventMessage); // Logs \"EVENT_TYPE\" \"EVENT_MESSAGE\" to console.\n * });\n *\n * const someAPIObservable = fromEventPattern(\n * handler => someAPI.registerEventHandler(handler),\n * handler => someAPI.unregisterEventHandler(handler)\n * (eventType, eventMessage) => eventType + \" --- \" + eventMessage // without that function only \"EVENT_TYPE\"\n * ); // would be emitted by the Observable\n *\n * someAPIObservable.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"EVENT_TYPE --- EVENT_MESSAGE\"\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, token?: any): void} [removeHandler] A function that\n * takes a `handler` function as an argument and removes it from the event source. If `addHandler`\n * returns some kind of token, `removeHandler` function will have it as a second parameter.\n * @param {function(...args: any): T} [project] A function to\n * transform results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable} Observable which, when an event happens, emits first parameter\n * passed to registered event handler. Alternatively it emits whatever project function returns\n * at that moment.\n * @static true\n * @name fromEventPattern\n * @owner Observable\n */\n\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n resultSelector?: (...args: any[]) => T): Observable {\n\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEventPattern(addHandler, removeHandler).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n const handler = (...e: T[]) => subscriber.next(e.length === 1 ? e[0] : e);\n\n let retValue: any;\n try {\n retValue = addHandler(handler);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n\n return () => removeHandler(handler, retValue) ;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { identity } from '../util/identity';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\n\nexport type ConditionFunc = (state: S) => boolean;\nexport type IterateFunc = (state: S) => S;\nexport type ResultFunc = (state: S) => T;\n\ninterface SchedulerState {\n needIterate?: boolean;\n state: S;\n subscriber: Subscriber;\n condition?: ConditionFunc;\n iterate: IterateFunc;\n resultSelector: ResultFunc;\n}\n\nexport interface GenerateBaseOptions {\n /**\n * Initial state.\n */\n initialState: S;\n /**\n * Condition function that accepts state and returns boolean.\n * When it returns false, the generator stops.\n * If not specified, a generator never stops.\n */\n condition?: ConditionFunc;\n /**\n * Iterate function that accepts state and returns new state.\n */\n iterate: IterateFunc;\n /**\n * SchedulerLike to use for generation process.\n * By default, a generator starts immediately.\n */\n scheduler?: SchedulerLike;\n}\n\nexport interface GenerateOptions extends GenerateBaseOptions {\n /**\n * Result selection function that accepts state and returns a value to emit.\n */\n resultSelector: ResultFunc;\n}\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate(0, x => x < 10, x => x + 1, x => x);\n *\n * @example Using asap scheduler, produces sequence of 2, 3, 5, then completes.\n * const res = generate(1, x => x < 5, x => x * 2, x => x + 1, asap);\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} resultSelector Selector function for results produced in the sequence. (deprecated)\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} on which to run the generator loop. If not provided, defaults to emit immediately.\n * @returns {Observable} The generated sequence.\n */\n export function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n resultSelector: ResultFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an Observable by running a state-driven loop\n * that emits an element on each iteration.\n *\n * Use it instead of nexting values in a for loop.\n *\n * \n *\n * `generate` allows you to create stream of values generated with a loop very similar to\n * traditional for loop. First argument of `generate` is a beginning value. Second argument\n * is a function that accepts this value and tests if some condition still holds. If it does,\n * loop continues, if not, it stops. Third value is a function which takes previously defined\n * value and modifies it in some way on each iteration. Note how these three parameters\n * are direct equivalents of three expressions in regular for loop: first expression\n * initializes some state (for example numeric index), second tests if loop can make next\n * iteration (for example if index is lower than 10) and third states how defined value\n * will be modified on every step (index will be incremented by one).\n *\n * Return value of a `generate` operator is an Observable that on each loop iteration\n * emits a value. First, condition function is ran. If it returned true, Observable\n * emits currently stored value (initial value at the first iteration) and then updates\n * that value with iterate function. If at some point condition returned false, Observable\n * completes at that moment.\n *\n * Optionally you can pass fourth parameter to `generate` - a result selector function which allows you\n * to immediately map value that would normally be emitted by an Observable.\n *\n * If you find three anonymous functions in `generate` call hard to read, you can provide\n * single object to the operator instead. That object has properties: `initialState`,\n * `condition`, `iterate` and `resultSelector`, which should have respective values that you\n * would normally pass to `generate`. `resultSelector` is still optional, but that form\n * of calling `generate` allows you to omit `condition` as well. If you omit it, that means\n * condition always holds, so output Observable will never complete.\n *\n * Both forms of `generate` can optionally accept a scheduler. In case of multi-parameter call,\n * scheduler simply comes as a last argument (no matter if there is resultSelector\n * function or not). In case of single-parameter call, you can provide it as a\n * `scheduler` property on object passed to the operator. In both cases scheduler decides when\n * next iteration of the loop will happen and therefore when next value will be emitted\n * by the Observable. For example to ensure that each value is pushed to the observer\n * on separate task in event loop, you could use `async` scheduler. Note that\n * by default (when no scheduler is passed) values are simply emitted synchronously.\n *\n *\n * @example Use with condition and iterate functions.\n * const generated = generate(0, x => x < 3, x => x + 1);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // \"Yo!\"\n *\n *\n * @example Use with condition, iterate and resultSelector functions.\n * const generated = generate(0, x => x < 3, x => x + 1, x => x * 1000);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n *\n * @example Use with options object.\n * const generated = generate({\n * initialState: 0,\n * condition(value) { return value < 3; },\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n * @example Use options object without condition function.\n * const generated = generate({\n * initialState: 0,\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!') // This will never run.\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // 3000\n * // ...and never stops.\n *\n *\n * @see {@link from}\n * @see {@link index/Observable.create}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} [resultSelector] Selector function for results produced in the sequence.\n * @param {Scheduler} [scheduler] A {@link Scheduler} on which to run the generator loop. If not provided, defaults to emitting immediately.\n * @return {Observable} The generated sequence.\n */\nexport function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateBaseOptions} options Object that must contain initialState, iterate and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateBaseOptions): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition, result selector and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * resultSelector: x => x,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateOptions} options Object that must contain initialState, iterate, resultSelector and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateOptions): Observable;\n\nexport function generate(initialStateOrOptions: S | GenerateOptions,\n condition?: ConditionFunc,\n iterate?: IterateFunc,\n resultSelectorOrObservable?: (ResultFunc) | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n\n let resultSelector: ResultFunc;\n let initialState: S;\n\n if (arguments.length == 1) {\n const options = initialStateOrOptions as GenerateOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity as ResultFunc;\n scheduler = options.scheduler;\n } else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions as S;\n resultSelector = identity as ResultFunc;\n scheduler = resultSelectorOrObservable as SchedulerLike;\n } else {\n initialState = initialStateOrOptions as S;\n resultSelector = resultSelectorOrObservable as ResultFunc;\n }\n\n return new Observable(subscriber => {\n let state = initialState;\n if (scheduler) {\n return scheduler.schedule>(dispatch, 0, {\n subscriber,\n iterate,\n condition,\n resultSelector,\n state\n });\n }\n\n do {\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n let value: T;\n try {\n value = resultSelector(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n\n return undefined;\n });\n}\n\nfunction dispatch(this: SchedulerAction>, state: SchedulerState) {\n const { subscriber, condition } = state;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } else {\n state.needIterate = true;\n }\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n let value: T;\n try {\n value = state.resultSelector(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nimport { SubscribableOrPromise } from '../types';\n\n/**\n * Decides at subscription time which Observable will actually be subscribed.\n *\n * `If` statement for Observables.\n *\n * `iif` accepts a condition function and two Observables. When\n * an Observable returned by the operator is subscribed, condition function will be called.\n * Based on what boolean it returns at that moment, consumer will subscribe either to\n * the first Observable (if condition was true) or to the second (if condition was false). Condition\n * function may also not return anything - in that case condition will be evaluated as false and\n * second Observable will be subscribed.\n *\n * Note that Observables for both cases (true and false) are optional. If condition points to an Observable that\n * was left undefined, resulting stream will simply complete immediately. That allows you to, rather\n * than controlling which Observable will be subscribed, decide at runtime if consumer should have access\n * to given Observable or not.\n *\n * If you have more complex logic that requires decision between more than two Observables, {@link defer}\n * will probably be a better choice. Actually `iif` can be easily implemented with {@link defer}\n * and exists only for convenience and readability reasons.\n *\n *\n * ## Examples\n * ### Change at runtime which Observable will be subscribed\n * ```ts\n * import { iif, of } from 'rxjs';\n *\n * let subscribeToFirst;\n * const firstOrSecond = iif(\n * () => subscribeToFirst,\n * of('first'),\n * of('second'),\n * );\n *\n * subscribeToFirst = true;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"first\"\n *\n * subscribeToFirst = false;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"second\"\n *\n * ```\n *\n * ### Control an access to an Observable\n * ```ts\n * let accessGranted;\n * const observableIfYouHaveAccess = iif(\n * () => accessGranted,\n * of('It seems you have an access...'), // Note that only one Observable is passed to the operator.\n * );\n *\n * accessGranted = true;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"It seems you have an access...\"\n * // \"The end\"\n *\n * accessGranted = false;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"The end\"\n * ```\n *\n * @see {@link defer}\n *\n * @param {function(): boolean} condition Condition which Observable should be chosen.\n * @param {Observable} [trueObservable] An Observable that will be subscribed if condition is true.\n * @param {Observable} [falseObservable] An Observable that will be subscribed if condition is false.\n * @return {Observable} Either first or second Observable, depending on condition.\n * @static true\n * @name iif\n * @owner Observable\n*/\nexport function iif(\n condition: () => boolean,\n trueResult: SubscribableOrPromise = EMPTY,\n falseResult: SubscribableOrPromise = EMPTY\n): Observable {\n return defer(() => condition() ? trueResult : falseResult);\n}\n","import { isArray } from './isArray';\n\nexport function isNumeric(val: any): val is number | string {\n // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n // adding 1 corrects loss of precision from parseFloat (#15100)\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isNumeric } from '../util/isNumeric';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified {@link SchedulerLike}.\n *\n * Emits incremental numbers periodically in time.\n * \n *\n * ![](interval.png)\n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` {@link SchedulerLike} to provide a notion of time, but you may pass any\n * {@link SchedulerLike} to it.\n *\n * ## Example\n * Emits ascending numbers, one every second (1000ms) up to the number 3\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const numbers = interval(1000);\n *\n * const takeFourNumbers = numbers.pipe(take(4));\n *\n * takeFourNumbers.subscribe(x => console.log('Next: ', x));\n *\n * // Logs:\n * // Next: 0\n * // Next: 1\n * // Next: 2\n * // Next: 3\n * ```\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param {number} [period=0] The interval size in milliseconds (by default)\n * or the time unit determined by the scheduler's clock.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a sequential number each time\n * interval.\n * @static true\n * @name interval\n * @owner Observable\n */\nexport function interval(period = 0,\n scheduler: SchedulerLike = async): Observable {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n subscriber.add(\n scheduler.schedule(dispatch, period, { subscriber, counter: 0, period })\n );\n return subscriber;\n });\n}\n\nfunction dispatch(this: SchedulerAction, state: IntervalState) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n\ninterface IntervalState {\n subscriber: Subscriber;\n counter: number;\n period: number;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike} from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n\nexport function merge(v1: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * Flattens multiple Observables together by blending\n * their values into one Observable.\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * ### Merge together two Observables: 1s interval and clicks\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * ### Merge together 3 Observables, but only 2 run concurrently\n * ```ts\n * import { merge, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nexport function merge(...observables: Array | SchedulerLike | number>): Observable {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler: SchedulerLike = null;\n let last: any = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n } else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return >observables[0];\n }\n\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\n\n/**\n * An Observable that emits no items to the Observer and never completes.\n *\n * ![](never.png)\n *\n * A simple Observable that emits neither values nor errors nor the completion\n * notification. It can be used for testing purposes or for composing with other\n * Observables. Please note that by never emitting a complete notification, this\n * Observable keeps the subscription from being disposed automatically.\n * Subscriptions need to be manually disposed.\n *\n * ## Example\n * ### Emit the number 7, then never emit anything else (not even complete)\n * ```ts\n * import { NEVER } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * function info() {\n * console.log('Will not be called');\n * }\n * const result = NEVER.pipe(startWith(7));\n * result.subscribe(x => console.log(x), info, info);\n *\n * ```\n *\n * @see {@link Observable}\n * @see {@link index/EMPTY}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const NEVER = new Observable(noop);\n\n/**\n * @deprecated Deprecated in favor of using {@link NEVER} constant.\n */\nexport function never () {\n return NEVER;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\nimport { from } from './from';\nimport { isArray } from '../util/isArray';\nimport { EMPTY } from './empty';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(v: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\n\nexport function onErrorResumeNext(...observables: Array | ((...values: Array) => R)>): Observable;\nexport function onErrorResumeNext(array: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` Will subscribe to each observable source it is provided, in order.\n * If the source it's subscribed to emits an error or completes, it will move to the next source\n * without error.\n *\n * If `onErrorResumeNext` is provided no arguments, or a single, empty array, it will return {@link index/EMPTY}.\n *\n * `onErrorResumeNext` is basically {@link concat}, only it will continue, even if one of its\n * sources emits an error.\n *\n * Note that there is no way to handle any errors thrown by sources via the result of\n * `onErrorResumeNext`. If you want to handle errors thrown in any given source, you can\n * always use the {@link catchError} operator on them before passing them into `onErrorResumeNext`.\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { onErrorResumeNext, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * onErrorResumeNext(\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) throw Error();\n * return 10 / x;\n * })\n * ),\n * of(1, 2, 3),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('done'),\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"done\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} sources Observables (or anything that *is* observable) passed either directly or as an array.\n * @return {Observable} An Observable that concatenates all sources, one after the other,\n * ignoring all errors, such that any error causes it to move on to the next source.\n */\nexport function onErrorResumeNext(...sources: Array |\n Array> |\n ((...values: Array) => R)>): Observable {\n\n if (sources.length === 0) {\n return EMPTY;\n }\n\n const [ first, ...remainder ] = sources;\n\n if (sources.length === 1 && isArray(first)) {\n return onErrorResumeNext(...first);\n }\n\n return new Observable(subscriber => {\n const subNext = () => subscriber.add(\n onErrorResumeNext(...remainder).subscribe(subscriber)\n );\n\n return from(first).subscribe({\n next(value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\n/**\n * Convert an object into an Observable of `[key, value]` pairs.\n *\n * Turn entries of an object into a stream.\n *\n * \n *\n * `pairs` takes an arbitrary object and returns an Observable that emits arrays. Each\n * emitted array has exactly two elements - the first is a key from the object\n * and the second is a value corresponding to that key. Keys are extracted from\n * an object via `Object.keys` function, which means that they will be only\n * enumerable keys that are present on an object directly - not ones inherited\n * via prototype chain.\n *\n * By default these arrays are emitted synchronously. To change that you can\n * pass a {@link SchedulerLike} as a second argument to `pairs`.\n *\n * @example Converts a javascript object to an Observable\n * ```ts\n * import { pairs } from 'rxjs';\n *\n * const obj = {\n * foo: 42,\n * bar: 56,\n * baz: 78\n * };\n *\n * pairs(obj)\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('the end!')\n * );\n *\n * // Logs:\n * // [\"foo\", 42],\n * // [\"bar\", 56],\n * // [\"baz\", 78],\n * // \"the end!\"\n * ```\n *\n * @param {Object} obj The object to inspect and turn into an\n * Observable sequence.\n * @param {Scheduler} [scheduler] An optional IScheduler to schedule\n * when resulting Observable will emit values.\n * @returns {(Observable>)} An observable sequence of\n * [key, value] pairs from the object.\n */\nexport function pairs(obj: Object, scheduler?: SchedulerLike): Observable<[string, T]> {\n if (!scheduler) {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length && !subscriber.closed; i++) {\n const key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n } else {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n const subscription = new Subscription();\n subscription.add(\n scheduler.schedule<{ keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }>\n (dispatch, 0, { keys, index: 0, subscriber, subscription, obj }));\n return subscription;\n });\n }\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction,\n state: { keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }) {\n const { keys, index, subscriber, subscription, obj } = state;\n if (!subscriber.closed) {\n if (index < keys.length) {\n const key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys, index: index + 1, subscriber, subscription, obj }));\n } else {\n subscriber.complete();\n }\n }\n}\n","export function not(pred: Function, thisArg: any): Function {\n function notPred(): any {\n return !(( notPred).pred.apply(( notPred).thisArg, arguments));\n }\n ( notPred).pred = pred;\n ( notPred).thisArg = thisArg;\n return notPred;\n}","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function filter(predicate: (value: T, index: number) => value is S,\n thisArg?: any): OperatorFunction;\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n * Emit only click events whose target was a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { filter } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => ev.target.tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction {\n return function filterOperatorFunction(source: Observable): Observable {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\n\nclass FilterOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean,\n private thisArg?: any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FilterSubscriber extends Subscriber {\n\n count: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private thisArg: any) {\n super(destination);\n }\n\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n protected _next(value: T) {\n let result: any;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { not } from '../util/not';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { filter } from '../operators/filter';\nimport { ObservableInput } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition a set of numbers into odds and evens observables\n * ```ts\n * import { of, partition } from 'rxjs';\n *\n * const observableValues = of(1, 2, 3, 4, 5, 6);\n * const [evens$, odds$] = partition(observableValues, (value, index) => value % 2 === 0);\n *\n * odds$.subscribe(x => console.log('odds', x));\n * evens$.subscribe(x => console.log('evens', x));\n *\n * // Logs:\n * // odds 1\n * // odds 3\n * // odds 5\n * // evens 2\n * // evens 4\n * // evens 6\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n */\nexport function partition(\n source: ObservableInput,\n predicate: (value: T, index: number) => boolean,\n thisArg?: any\n): [Observable, Observable] {\n return [\n filter(predicate, thisArg)(new Observable(subscribeTo(source))),\n filter(not(predicate, thisArg) as any)(new Observable(subscribeTo(source)))\n ] as [Observable, Observable];\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic, ObservableInput } from '../types';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n\n// tslint:disable:max-line-length\nexport function race(arg: [ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: ObservableInput[]): Observable;\nexport function race(arg: ObservableInput[]): Observable<{}>;\n\nexport function race(a: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput, e: ObservableInput): Observable;\n// tslint:enable:max-line-length\n\nexport function race(observables: ObservableInput[]): Observable;\nexport function race(observables: ObservableInput[]): Observable<{}>;\nexport function race(...observables: ObservableInput[]): Observable;\nexport function race(...observables: ObservableInput[]): Observable<{}>;\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit an item.\n *\n * ## Example\n * ### Subscribes to the observable that was the first to start emitting.\n *\n * ```ts\n * import { race, interval } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const obs1 = interval(1000).pipe(mapTo('fast one'));\n * const obs2 = interval(3000).pipe(mapTo('medium one'));\n * const obs3 = interval(5000).pipe(mapTo('slow one'));\n *\n * race(obs3, obs1, obs2)\n * .subscribe(\n * winner => console.log(winner)\n * );\n *\n * // result:\n * // a series of 'fast one'\n * ```\n *\n * @param {...Observables} ...observables sources used to race for which Observable emits first.\n * @return {Observable} an Observable that mirrors the output of the first Observable to emit an item.\n * @static true\n * @name race\n * @owner Observable\n */\nexport function race(...observables: ObservableInput[]): Observable {\n // if the only argument is an array, it was most likely called with\n // `race([obs1, obs2, ...])`\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0] as Observable[];\n } else {\n return observables[0] as Observable;\n }\n }\n\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\n\nexport class RaceOperator implements Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RaceSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class RaceSubscriber extends OuterSubscriber {\n private hasFirst: boolean = false;\n private observables: Observable[] = [];\n private subscriptions: Subscription[] = [];\n\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(observable: any): void {\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n\n if (len === 0) {\n this.destination.complete!();\n } else {\n for (let i = 0; i < len && !this.hasFirst; i++) {\n const observable = observables[i];\n const subscription = subscribeToResult(this, observable, undefined, i)!;\n\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null!;\n }\n }\n\n notifyNext(_outerValue: T, innerValue: T,\n outerIndex: number): void {\n if (!this.hasFirst) {\n this.hasFirst = true;\n\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n let subscription = this.subscriptions[i];\n\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n\n this.subscriptions = null!;\n }\n\n this.destination.next!(innerValue);\n }\n}\n","import { SchedulerAction, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified\n * range.\n *\n * Emits a sequence of numbers in a range.\n *\n * ![](range.png)\n *\n * `range` operator emits a range of sequential integers, in order, where you\n * select the `start` of the range and its `length`. By default, uses no\n * {@link SchedulerLike} and just delivers the notifications synchronously, but may use\n * an optional {@link SchedulerLike} to regulate those deliveries.\n *\n * ## Example\n * Emits the numbers 1 to 10\n * ```ts\n * import { range } from 'rxjs';\n *\n * const numbers = range(1, 10);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link timer}\n * @see {@link index/interval}\n *\n * @param {number} [start=0] The value of the first integer in the sequence.\n * @param {number} count The number of sequential integers to generate.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emissions of the notifications.\n * @return {Observable} An Observable of numbers that emits a finite range of\n * sequential integers.\n * @static true\n * @name range\n * @owner Observable\n */\nexport function range(start: number = 0,\n count?: number,\n scheduler?: SchedulerLike): Observable {\n return new Observable(subscriber => {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n\n let index = 0;\n let current = start;\n\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index, count, start, subscriber\n });\n } else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n\n return undefined;\n });\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction, state: any) {\n const { start, index, count, subscriber } = state;\n\n if (index >= count) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(start);\n\n if (subscriber.closed) {\n return;\n }\n\n state.index = index + 1;\n state.start = start + 1;\n\n this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that starts emitting after an `dueTime` and\n * emits ever increasing numbers after each `period` of time thereafter.\n *\n * Its like {@link index/interval}, but you can specify when\n * should the emissions start.\n *\n * ![](timer.png)\n *\n * `timer` returns an Observable that emits an infinite sequence of ascending\n * integers, with a constant interval of time, `period` of your choosing\n * between those emissions. The first emission happens after the specified\n * `dueTime`. The initial delay may be a `Date`. By default, this\n * operator uses the {@link asyncScheduler} {@link SchedulerLike} to provide a notion of time, but you\n * may pass any {@link SchedulerLike} to it. If `period` is not specified, the output\n * Observable emits only one value, `0`. Otherwise, it emits an infinite\n * sequence.\n *\n * ## Examples\n * ### Emits ascending numbers, one every second (1000ms), starting after 3 seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(3000, 1000);\n * numbers.subscribe(x => console.log(x));\n * ```\n *\n * ### Emits one number after five seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(5000);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link index/interval}\n * @see {@link delay}\n *\n * @param {number|Date} [dueTime] The initial delay time specified as a Date object or as an integer denoting\n * milliseconds to wait before emitting the first value of 0`.\n * @param {number|SchedulerLike} [periodOrScheduler] The period of time between emissions of the\n * subsequent numbers.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a `0` after the\n * `dueTime` and ever increasing numbers after each `period` of time\n * thereafter.\n * @static true\n * @name timer\n * @owner Observable\n */\nexport function timer(dueTime: number | Date = 0,\n periodOrScheduler?: number | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n } else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler as any;\n }\n\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? (dueTime as number)\n : (+dueTime - scheduler.now());\n\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\n\ninterface TimerState {\n index: number;\n period: number;\n subscriber: Subscriber;\n}\n\nfunction dispatch(this: SchedulerAction, state: TimerState) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n\n if (subscriber.closed) {\n return;\n } else if (period === -1) {\n return subscriber.complete();\n }\n\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { Observable } from '../Observable';\nimport { Unsubscribable, ObservableInput } from '../types';\nimport { from } from './from'; // from from from! LAWL\nimport { EMPTY } from './empty';\n\n/**\n * Creates an Observable that uses a resource which will be disposed at the same time as the Observable.\n *\n * Use it when you catch yourself cleaning up after an Observable.\n *\n * `using` is a factory operator, which accepts two functions. First function returns a disposable resource.\n * It can be an arbitrary object that implements `unsubscribe` method. Second function will be injected with\n * that object and should return an Observable. That Observable can use resource object during its execution.\n * Both functions passed to `using` will be called every time someone subscribes - neither an Observable nor\n * resource object will be shared in any way between subscriptions.\n *\n * When Observable returned by `using` is subscribed, Observable returned from the second function will be subscribed\n * as well. All its notifications (nexted values, completion and error events) will be emitted unchanged by the output\n * Observable. If however someone unsubscribes from the Observable or source Observable completes or errors by itself,\n * the `unsubscribe` method on resource object will be called. This can be used to do any necessary clean up, which\n * otherwise would have to be handled by hand. Note that complete or error notifications are not emitted when someone\n * cancels subscription to an Observable via `unsubscribe`, so `using` can be used as a hook, allowing you to make\n * sure that all resources which need to exist during an Observable execution will be disposed at appropriate time.\n *\n * @see {@link defer}\n *\n * @param {function(): ISubscription} resourceFactory A function which creates any resource object\n * that implements `unsubscribe` method.\n * @param {function(resource: ISubscription): Observable} observableFactory A function which\n * creates an Observable, that can use injected resource object.\n * @return {Observable} An Observable that behaves the same as Observable returned by `observableFactory`, but\n * which - when completed, errored or unsubscribed - will also call `unsubscribe` on created resource object.\n */\nexport function using(resourceFactory: () => Unsubscribable | void,\n observableFactory: (resource: Unsubscribable | void) => ObservableInput | void): Observable {\n return new Observable(subscriber => {\n let resource: Unsubscribable | void;\n\n try {\n resource = resourceFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n let result: ObservableInput | void;\n try {\n result = observableFactory(resource);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n const source = result ? from(result) : EMPTY;\n const subscription = source.subscribe(subscriber);\n return () => {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n","import { Observable } from '../Observable';\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Operator } from '../Operator';\nimport { ObservableInput, PartialObserver, ObservedValueOf } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): Observable;\n\nexport function zip, O2 extends ObservableInput>(v1: O1, v2: O2): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\nexport function zip>(array: O[]): Observable[]>;\nexport function zip(array: ObservableInput[]): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip(array: ObservableInput[], resultSelector: (...values: any[]) => R): Observable;\n\nexport function zip>(...observables: O[]): Observable[]>;\nexport function zip, R>(...observables: Array[]) => R)>): Observable;\nexport function zip(...observables: Array | ((...values: Array) => R)>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the last parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * ## Example\n * Combine age and name from different sources\n * ```ts\n * import { zip, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * let age$ = of(27, 25, 29);\n * let name$ = of('Foo', 'Bar', 'Beer');\n * let isDev$ = of(true, true, false);\n *\n * zip(age$, name$, isDev$).pipe(\n * map(([age, name, isDev]) => ({ age, name, isDev })),\n * )\n * .subscribe(x => console.log(x));\n *\n * // outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n * ```\n * @param observables\n * @return {Observable}\n * @static true\n * @name zip\n * @owner Observable\n */\nexport function zip, R>(\n ...observables: Array[]) => R)>\n): Observable[]|R> {\n const resultSelector = <((...ys: Array) => R)> observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\n\nexport class ZipOperator implements Operator {\n\n resultSelector?: (...values: Array) => R;\n\n constructor(resultSelector?: (...values: Array) => R) {\n this.resultSelector = resultSelector;\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ZipSubscriber extends Subscriber {\n private iterators: LookAheadIterator[] = [];\n private active = 0;\n\n constructor(destination: Subscriber,\n private resultSelector?: (...values: Array) => R,\n values: any = Object.create(null)) {\n super(destination);\n this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n }\n\n protected _next(value: any) {\n const iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n } else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n } else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n }\n\n protected _complete() {\n const iterators = this.iterators;\n const len = iterators.length;\n\n this.unsubscribe();\n\n if (len === 0) {\n this.destination.complete!();\n return;\n }\n\n this.active = len;\n for (let i = 0; i < len; i++) {\n let iterator: ZipBufferIterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n const destination = this.destination as Subscription;\n destination.add(iterator.subscribe());\n } else {\n this.active--; // not an observable\n }\n }\n }\n\n notifyInactive() {\n this.active--;\n if (this.active === 0) {\n this.destination.complete!();\n }\n }\n\n checkIterators() {\n const iterators = this.iterators;\n const len = iterators.length;\n const destination = this.destination;\n\n // abort if not all of them have values\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n\n let shouldComplete = false;\n const args: any[] = [];\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n let result = iterator.next();\n\n // check to see if it's completed now that you've gotten\n // the next value.\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n\n if (result.done) {\n destination.complete!();\n return;\n }\n\n args.push(result.value);\n }\n\n if (this.resultSelector) {\n this._tryresultSelector(args);\n } else {\n destination.next!(args);\n }\n\n if (shouldComplete) {\n destination.complete!();\n }\n }\n\n protected _tryresultSelector(args: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n\ninterface LookAheadIterator extends Iterator {\n hasValue(): boolean;\n hasCompleted(): boolean;\n}\n\nclass StaticIterator implements LookAheadIterator {\n private nextResult: IteratorResult;\n\n constructor(private iterator: Iterator) {\n this.nextResult = iterator.next();\n }\n\n hasValue() {\n return true;\n }\n\n next(): IteratorResult {\n const result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n }\n\n hasCompleted(): boolean {\n const nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n }\n}\n\nclass StaticArrayIterator implements LookAheadIterator {\n private index = 0;\n private length = 0;\n\n constructor(private array: T[]) {\n this.length = array.length;\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n next(value?: any): IteratorResult {\n const i = this.index++;\n const array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n }\n\n hasValue() {\n return this.array.length > this.index;\n }\n\n hasCompleted() {\n return this.array.length === this.index;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ZipBufferIterator extends SimpleOuterSubscriber implements LookAheadIterator {\n stillUnsubscribed = true;\n buffer: T[] = [];\n isComplete = false;\n\n constructor(destination: PartialObserver,\n private parent: ZipSubscriber,\n private observable: Observable) {\n super(destination);\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n // NOTE: there is actually a name collision here with Subscriber.next and Iterator.next\n // this is legit because `next()` will never be called by a subscription in this case.\n next(): IteratorResult {\n const buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n } else {\n return { value: buffer.shift()!, done: false };\n }\n }\n\n hasValue() {\n return this.buffer.length > 0;\n }\n\n hasCompleted() {\n return this.buffer.length === 0 && this.isComplete;\n }\n\n notifyComplete() {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n } else {\n this.destination.complete!();\n }\n }\n\n notifyNext(innerValue: any): void {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n }\n\n subscribe() {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](audit.png)\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value or completes, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { audit } from 'rxjs/operators'\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(audit(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method audit\n * @owner Observable\n */\nexport function audit(durationSelector: (value: T) => SubscribableOrPromise): MonoTypeOperatorFunction {\n return function auditOperatorFunction(source: Observable) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\n\nclass AuditOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass AuditSubscriber extends SimpleOuterSubscriber {\n\n private value?: T;\n private hasValue: boolean = false;\n private throttled?: Subscription;\n\n constructor(destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n let duration;\n try {\n const { durationSelector } = this;\n duration = durationSelector(value);\n } catch (err) {\n return this.destination.error!(err);\n }\n const innerSubscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n } else {\n this.add(this.throttled = innerSubscription);\n }\n }\n }\n\n clearThrottle() {\n const { value, hasValue, throttled } = this;\n if (throttled) {\n this.remove(throttled);\n this.throttled = undefined;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = undefined;\n this.hasValue = false;\n this.destination.next!(value);\n }\n }\n\n notifyNext(): void {\n this.clearThrottle();\n }\n\n notifyComplete(): void {\n this.clearThrottle();\n }\n}\n","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * When it sees a source value, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.\n *\n * ![](auditTime.png)\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link SchedulerLike} for managing timers.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { auditTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(auditTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method auditTime\n * @owner Observable\n */\nexport function auditTime(duration: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return audit(() => timer(duration, scheduler));\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Buffers the source Observable values until `closingNotifier` emits.\n *\n * Collects values from the past as an array, and emits\n * that array only when another Observable emits.\n *\n * ![](buffer.png)\n *\n * Buffers the incoming Observable values until the given `closingNotifier`\n * Observable emits a value, at which point it emits the buffer on the output\n * Observable and starts a new buffer internally, awaiting the next time\n * `closingNotifier` emits.\n *\n * ## Example\n *\n * On every click, emit array of most recent interval events\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { buffer } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const intervalEvents = interval(1000);\n * const buffered = intervalEvents.pipe(buffer(clicks));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link window}\n *\n * @param {Observable} closingNotifier An Observable that signals the\n * buffer to be emitted on the output Observable.\n * @return {Observable} An Observable of buffers, which are arrays of\n * values.\n * @method buffer\n * @owner Observable\n */\nexport function buffer(closingNotifier: Observable): OperatorFunction {\n return function bufferOperatorFunction(source: Observable) {\n return source.lift(new BufferOperator(closingNotifier));\n };\n}\n\nclass BufferOperator implements Operator {\n\n constructor(private closingNotifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferSubscriber extends SimpleOuterSubscriber {\n private buffer: T[] = [];\n\n constructor(destination: Subscriber, closingNotifier: Observable) {\n super(destination);\n this.add(innerSubscribe(closingNotifier, new SimpleInnerSubscriber(this)));\n }\n\n protected _next(value: T) {\n this.buffer.push(value);\n }\n\n notifyNext(): void {\n const buffer = this.buffer;\n this.buffer = [];\n this.destination.next!(buffer);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Buffers the source Observable values until the size hits the maximum\n * `bufferSize` given.\n *\n * Collects values from the past as an array, and emits\n * that array only when its size reaches `bufferSize`.\n *\n * ![](bufferCount.png)\n *\n * Buffers a number of values from the source Observable by `bufferSize` then\n * emits the buffer and clears it, and starts a new buffer each\n * `startBufferEvery` values. If `startBufferEvery` is not provided or is\n * `null`, then new buffers are started immediately at the start of the source\n * and when each buffer closes and is emitted.\n *\n * ## Examples\n *\n * Emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * On every click, emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2, 1));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link pairwise}\n * @see {@link windowCount}\n *\n * @param {number} bufferSize The maximum size of the buffer emitted.\n * @param {number} [startBufferEvery] Interval at which to start a new buffer.\n * For example if `startBufferEvery` is `2`, then a new buffer will be started\n * on every other value from the source. A new buffer is started at the\n * beginning of the source by default.\n * @return {Observable} An Observable of arrays of buffered values.\n * @method bufferCount\n * @owner Observable\n */\nexport function bufferCount(bufferSize: number, startBufferEvery: number = null): OperatorFunction {\n return function bufferCountOperatorFunction(source: Observable) {\n return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n };\n}\n\nclass BufferCountOperator implements Operator {\n private subscriberClass: any;\n\n constructor(private bufferSize: number, private startBufferEvery: number) {\n if (!startBufferEvery || bufferSize === startBufferEvery) {\n this.subscriberClass = BufferCountSubscriber;\n } else {\n this.subscriberClass = BufferSkipCountSubscriber;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferCountSubscriber extends Subscriber {\n private buffer: T[] = [];\n\n constructor(destination: Subscriber, private bufferSize: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const buffer = this.buffer;\n\n buffer.push(value);\n\n if (buffer.length == this.bufferSize) {\n this.destination.next(buffer);\n this.buffer = [];\n }\n }\n\n protected _complete(): void {\n const buffer = this.buffer;\n if (buffer.length > 0) {\n this.destination.next(buffer);\n }\n super._complete();\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferSkipCountSubscriber extends Subscriber {\n private buffers: Array = [];\n private count: number = 0;\n\n constructor(destination: Subscriber, private bufferSize: number, private startBufferEvery: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const { bufferSize, startBufferEvery, buffers, count } = this;\n\n this.count++;\n if (count % startBufferEvery === 0) {\n buffers.push([]);\n }\n\n for (let i = buffers.length; i--; ) {\n const buffer = buffers[i];\n buffer.push(value);\n if (buffer.length === bufferSize) {\n buffers.splice(i, 1);\n this.destination.next(buffer);\n }\n }\n }\n\n protected _complete(): void {\n const { buffers, destination } = this;\n\n while (buffers.length > 0) {\n let buffer = buffers.shift();\n if (buffer.length > 0) {\n destination.next(buffer);\n }\n }\n super._complete();\n }\n\n}\n","import { Operator } from '../Operator';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { isScheduler } from '../util/isScheduler';\nimport { OperatorFunction, SchedulerAction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function bufferTime(bufferTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction;\nexport function bufferTime(bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, scheduler?: SchedulerLike): OperatorFunction;\nexport function bufferTime(bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, maxBufferSize: number, scheduler?: SchedulerLike): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Buffers the source Observable values for a specific time period.\n *\n * Collects values from the past as an array, and emits\n * those arrays periodically in time.\n *\n * ![](bufferTime.png)\n *\n * Buffers values from the source for a specific time duration `bufferTimeSpan`.\n * Unless the optional argument `bufferCreationInterval` is given, it emits and\n * resets the buffer every `bufferTimeSpan` milliseconds. If\n * `bufferCreationInterval` is given, this operator opens the buffer every\n * `bufferCreationInterval` milliseconds and closes (emits and resets) the\n * buffer every `bufferTimeSpan` milliseconds. When the optional argument\n * `maxBufferSize` is specified, the buffer will be closed either after\n * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements.\n *\n * ## Examples\n *\n * Every second, emit an array of the recent click events\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(1000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds, emit the click events from the next 2 seconds\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(2000, 5000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link windowTime}\n *\n * @param {number} bufferTimeSpan The amount of time to fill each buffer array.\n * @param {number} [bufferCreationInterval] The interval at which to start new\n * buffers.\n * @param {number} [maxBufferSize] The maximum buffer size.\n * @param {SchedulerLike} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine buffer boundaries.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferTime\n * @owner Observable\n */\nexport function bufferTime(bufferTimeSpan: number): OperatorFunction {\n let length: number = arguments.length;\n\n let scheduler: SchedulerLike = async;\n if (isScheduler(arguments[arguments.length - 1])) {\n scheduler = arguments[arguments.length - 1];\n length--;\n }\n\n let bufferCreationInterval: number = null;\n if (length >= 2) {\n bufferCreationInterval = arguments[1];\n }\n\n let maxBufferSize: number = Number.POSITIVE_INFINITY;\n if (length >= 3) {\n maxBufferSize = arguments[2];\n }\n\n return function bufferTimeOperatorFunction(source: Observable) {\n return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));\n };\n}\n\nclass BufferTimeOperator implements Operator {\n constructor(private bufferTimeSpan: number,\n private bufferCreationInterval: number,\n private maxBufferSize: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferTimeSubscriber(\n subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler\n ));\n }\n}\n\nclass Context {\n buffer: T[] = [];\n closeAction: Subscription;\n}\n\ninterface DispatchCreateArg {\n bufferTimeSpan: number;\n bufferCreationInterval: number;\n subscriber: BufferTimeSubscriber;\n scheduler: SchedulerLike;\n}\n\ninterface DispatchCloseArg {\n subscriber: BufferTimeSubscriber;\n context: Context;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferTimeSubscriber extends Subscriber {\n private contexts: Array> = [];\n private timespanOnly: boolean;\n\n constructor(destination: Subscriber,\n private bufferTimeSpan: number,\n private bufferCreationInterval: number,\n private maxBufferSize: number,\n private scheduler: SchedulerLike) {\n super(destination);\n const context = this.openContext();\n this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;\n if (this.timespanOnly) {\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n } else {\n const closeState = { subscriber: this, context };\n const creationState: DispatchCreateArg = { bufferTimeSpan, bufferCreationInterval, subscriber: this, scheduler };\n this.add(context.closeAction = scheduler.schedule>(dispatchBufferClose, bufferTimeSpan, closeState));\n this.add(scheduler.schedule>(dispatchBufferCreation, bufferCreationInterval, creationState));\n }\n }\n\n protected _next(value: T) {\n const contexts = this.contexts;\n const len = contexts.length;\n let filledBufferContext: Context;\n for (let i = 0; i < len; i++) {\n const context = contexts[i];\n const buffer = context.buffer;\n buffer.push(value);\n if (buffer.length == this.maxBufferSize) {\n filledBufferContext = context;\n }\n }\n\n if (filledBufferContext) {\n this.onBufferFull(filledBufferContext);\n }\n }\n\n protected _error(err: any) {\n this.contexts.length = 0;\n super._error(err);\n }\n\n protected _complete() {\n const { contexts, destination } = this;\n while (contexts.length > 0) {\n const context = contexts.shift();\n destination.next(context.buffer);\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.contexts = null;\n }\n\n protected onBufferFull(context: Context) {\n this.closeContext(context);\n const closeAction = context.closeAction;\n closeAction.unsubscribe();\n this.remove(closeAction);\n\n if (!this.closed && this.timespanOnly) {\n context = this.openContext();\n const bufferTimeSpan = this.bufferTimeSpan;\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n }\n\n openContext(): Context {\n const context: Context = new Context();\n this.contexts.push(context);\n return context;\n }\n\n closeContext(context: Context) {\n this.destination.next(context.buffer);\n const contexts = this.contexts;\n\n const spliceIndex = contexts ? contexts.indexOf(context) : -1;\n if (spliceIndex >= 0) {\n contexts.splice(contexts.indexOf(context), 1);\n }\n }\n}\n\nfunction dispatchBufferTimeSpanOnly(this: SchedulerAction, state: any) {\n const subscriber: BufferTimeSubscriber = state.subscriber;\n\n const prevContext = state.context;\n if (prevContext) {\n subscriber.closeContext(prevContext);\n }\n\n if (!subscriber.closed) {\n state.context = subscriber.openContext();\n state.context.closeAction = this.schedule(state, state.bufferTimeSpan);\n }\n}\n\nfunction dispatchBufferCreation(this: SchedulerAction>, state: DispatchCreateArg) {\n const { bufferCreationInterval, bufferTimeSpan, subscriber, scheduler } = state;\n const context = subscriber.openContext();\n const action = >>this;\n if (!subscriber.closed) {\n subscriber.add(context.closeAction = scheduler.schedule>(dispatchBufferClose, bufferTimeSpan, { subscriber, context }));\n action.schedule(state, bufferCreationInterval);\n }\n}\n\nfunction dispatchBufferClose(arg: DispatchCloseArg) {\n const { subscriber, context } = arg;\n subscriber.closeContext(context);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OperatorFunction, SubscribableOrPromise } from '../types';\n\n/**\n * Buffers the source Observable values starting from an emission from\n * `openings` and ending when the output of `closingSelector` emits.\n *\n * Collects values from the past as an array. Starts\n * collecting only when `opening` emits, and calls the `closingSelector`\n * function to get an Observable that tells when to close the buffer.\n *\n * ![](bufferToggle.png)\n *\n * Buffers values from the source by opening the buffer via signals from an\n * Observable provided to `openings`, and closing and sending the buffers when\n * a Subscribable or Promise returned by the `closingSelector` function emits.\n *\n * ## Example\n *\n * Every other second, emit the click events from the next 500ms\n *\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { bufferToggle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const buffered = clicks.pipe(bufferToggle(openings, i =>\n * i % 2 ? interval(500) : EMPTY\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferWhen}\n * @see {@link windowToggle}\n *\n * @param {SubscribableOrPromise} openings A Subscribable or Promise of notifications to start new\n * buffers.\n * @param {function(value: O): SubscribableOrPromise} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns a Subscribable or Promise,\n * which, when it emits, signals that the associated buffer should be emitted\n * and cleared.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferToggle\n * @owner Observable\n */\nexport function bufferToggle(\n openings: SubscribableOrPromise,\n closingSelector: (value: O) => SubscribableOrPromise\n): OperatorFunction {\n return function bufferToggleOperatorFunction(source: Observable) {\n return source.lift(new BufferToggleOperator(openings, closingSelector));\n };\n}\n\nclass BufferToggleOperator implements Operator {\n\n constructor(private openings: SubscribableOrPromise,\n private closingSelector: (value: O) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));\n }\n}\n\ninterface BufferContext {\n buffer: T[];\n subscription: Subscription;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferToggleSubscriber extends OuterSubscriber {\n private contexts: Array> = [];\n\n constructor(destination: Subscriber,\n openings: SubscribableOrPromise,\n private closingSelector: (value: O) => SubscribableOrPromise | void) {\n super(destination);\n this.add(subscribeToResult(this, openings));\n }\n\n protected _next(value: T): void {\n const contexts = this.contexts;\n const len = contexts.length;\n for (let i = 0; i < len; i++) {\n contexts[i].buffer.push(value);\n }\n }\n\n protected _error(err: any): void {\n const contexts = this.contexts;\n while (contexts.length > 0) {\n const context = contexts.shift()!;\n context.subscription.unsubscribe();\n context.buffer = null!;\n context.subscription = null!;\n }\n this.contexts = null!;\n super._error(err);\n }\n\n protected _complete(): void {\n const contexts = this.contexts;\n while (contexts.length > 0) {\n const context = contexts.shift()!;\n this.destination.next!(context.buffer);\n context.subscription.unsubscribe();\n context.buffer = null!;\n context.subscription = null!;\n }\n this.contexts = null!;\n super._complete();\n }\n\n notifyNext(outerValue: any, innerValue: O): void {\n outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.closeBuffer(( innerSub).context);\n }\n\n private openBuffer(value: O): void {\n try {\n const closingSelector = this.closingSelector;\n const closingNotifier = closingSelector.call(this, value);\n if (closingNotifier) {\n this.trySubscribe(closingNotifier);\n }\n } catch (err) {\n this._error(err);\n }\n }\n\n private closeBuffer(context: BufferContext): void {\n const contexts = this.contexts;\n\n if (contexts && context) {\n const { buffer, subscription } = context;\n this.destination.next!(buffer);\n contexts.splice(contexts.indexOf(context), 1);\n this.remove(subscription);\n subscription.unsubscribe();\n }\n }\n\n private trySubscribe(closingNotifier: any): void {\n const contexts = this.contexts;\n\n const buffer: Array = [];\n const subscription = new Subscription();\n const context = { buffer, subscription };\n contexts.push(context);\n\n const innerSubscription = subscribeToResult(this, closingNotifier, context as any);\n\n if (!innerSubscription || innerSubscription.closed) {\n this.closeBuffer(context);\n } else {\n (innerSubscription as any).context = context;\n\n this.add(innerSubscription);\n subscription.add(innerSubscription);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Buffers the source Observable values, using a factory function of closing\n * Observables to determine when to close, emit, and reset the buffer.\n *\n * Collects values from the past as an array. When it\n * starts collecting values, it calls a function that returns an Observable that\n * tells when to close the buffer and restart collecting.\n *\n * ![](bufferWhen.png)\n *\n * Opens a buffer immediately, then closes the buffer when the observable\n * returned by calling `closingSelector` function emits a value. When it closes\n * the buffer, it immediately opens a new buffer and repeats the process.\n *\n * ## Example\n *\n * Emit an array of the last clicks every [1-5] random seconds\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { bufferWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferWhen(() =>\n * interval(1000 + Math.random() * 4000)\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link windowWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals buffer closure.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferWhen\n * @owner Observable\n */\nexport function bufferWhen(closingSelector: () => Observable): OperatorFunction {\n return function (source: Observable) {\n return source.lift(new BufferWhenOperator(closingSelector));\n };\n}\n\nclass BufferWhenOperator implements Operator {\n\n constructor(private closingSelector: () => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferWhenSubscriber extends SimpleOuterSubscriber {\n private buffer?: T[];\n private subscribing: boolean = false;\n private closingSubscription?: Subscription;\n\n constructor(destination: Subscriber, private closingSelector: () => Observable) {\n super(destination);\n this.openBuffer();\n }\n\n protected _next(value: T) {\n this.buffer!.push(value);\n }\n\n protected _complete() {\n const buffer = this.buffer;\n if (buffer) {\n this.destination.next!(buffer);\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.buffer = undefined;\n this.subscribing = false;\n }\n\n notifyNext(): void {\n this.openBuffer();\n }\n\n notifyComplete(): void {\n if (this.subscribing) {\n this.complete();\n } else {\n this.openBuffer();\n }\n }\n\n openBuffer() {\n let { closingSubscription } = this;\n\n if (closingSubscription) {\n this.remove(closingSubscription);\n closingSubscription.unsubscribe();\n }\n\n const buffer = this.buffer;\n if (this.buffer) {\n this.destination.next!(buffer);\n }\n\n this.buffer = [];\n\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector();\n } catch (err) {\n return this.error(err);\n }\n closingSubscription = new Subscription();\n this.closingSubscription = closingSubscription;\n this.add(closingSubscription);\n this.subscribing = true;\n closingSubscription.add(innerSubscribe(closingNotifier, new SimpleInnerSubscriber(this)));\n this.subscribing = false;\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function catchError>(selector: (err: any, caught: Observable) => O): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * ![](catch.png)\n *\n * ## Examples\n * Continues with a different Observable when there's an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V')),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retries the caught source Observable again in case of error, similar to retry() operator\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError, take } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throws a new error when the source Observable throws an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * }),\n * )\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @name catchError\n */\nexport function catchError>(\n selector: (err: any, caught: Observable) => O\n): OperatorFunction> {\n return function catchErrorOperatorFunction(source: Observable): Observable> {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught as Observable);\n };\n}\n\nclass CatchOperator implements Operator {\n caught: Observable;\n\n constructor(private selector: (err: any, caught: Observable) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CatchSubscriber extends SimpleOuterSubscriber {\n constructor(destination: Subscriber,\n private selector: (err: any, caught: Observable) => ObservableInput,\n private caught: Observable) {\n super(destination);\n }\n\n // NOTE: overriding `error` instead of `_error` because we don't want\n // to have this flag this subscriber as `isStopped`. We can mimic the\n // behavior of the RetrySubscriber (from the `retry` operator), where\n // we unsubscribe from our source chain, reset our Subscriber flags,\n // then subscribe to the selector result.\n error(err: any) {\n if (!this.isStopped) {\n let result: any;\n try {\n result = this.selector(err, this.caught);\n } catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { CombineLatestOperator } from '../observable/combineLatest';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function combineAll(): OperatorFunction, T[]>;\nexport function combineAll(): OperatorFunction;\nexport function combineAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function combineAll(project: (...values: Array) => R): OperatorFunction;\n/**\n * Flattens an Observable-of-Observables by applying {@link combineLatest} when the Observable-of-Observables completes.\n *\n * ![](combineAll.png)\n *\n * `combineAll` takes an Observable of Observables, and collects all Observables from it. Once the outer Observable completes,\n * it subscribes to all collected Observables and combines their values using the {@link combineLatest} strategy, such that:\n *\n * * Every time an inner Observable emits, the output Observable emits\n * * When the returned observable emits, it emits all of the latest values by:\n * * If a `project` function is provided, it is called with each recent value from each inner Observable in whatever order they\n * arrived, and the result of the `project` function is what is emitted by the output Observable.\n * * If there is no `project` function, an array of all the most recent values is emitted by the output Observable.\n *\n * ---\n *\n * ## Examples\n *\n * ### Map two click events to a finite interval Observable, then apply `combineAll`\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, combineAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev =>\n * interval(Math.random() * 2000).pipe(take(3))\n * ),\n * take(2)\n * );\n * const result = higherOrder.pipe(\n * combineAll()\n * );\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link mergeAll}\n *\n * @param {function(...values: Array)} An optional function to map the most recent values from each inner Observable into a new result.\n * Takes each of the most recent values from each collected inner Observable as arguments, in order.\n * @return {Observable}\n * @name combineAll\n */\nexport function combineAll(project?: (...values: Array) => R): OperatorFunction {\n return (source: Observable) => source.lift(new CombineLatestOperator(project));\n}\n","\nimport { isArray } from '../util/isArray';\nimport { CombineLatestOperator } from '../observable/combineLatest';\nimport { from } from '../observable/from';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\n\nconst none = {};\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(project: (v1: T) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, project: (v1: T, v2: T2) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction ;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction ;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(array: ObservableInput[]): OperatorFunction>;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(array: ObservableInput[], project: (v1: T, ...values: Array) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link combineLatest}.\n */\nexport function combineLatest(...observables: Array |\n Array> |\n ((...values: Array) => R)>): OperatorFunction {\n let project: (...values: Array) => R = null;\n if (typeof observables[observables.length - 1] === 'function') {\n project = <(...values: Array) => R>observables.pop();\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], project)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = (observables[0]).slice();\n }\n\n return (source: Observable) => source.lift.call(from([source, ...observables]), new CombineLatestOperator(project));\n}\n","import { concat as concatStatic } from '../observable/concat';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(...observables: Array | SchedulerLike>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(...observables: Array | SchedulerLike>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link concat}.\n */\nexport function concat(...observables: Array | SchedulerLike>): OperatorFunction {\n return (source: Observable) => source.lift.call(concatStatic(source, ...observables));\n}\n","import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function concatMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function concatMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function concatMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.\n *\n * ![](concatMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item emitted\n * by the source Observable and taking values from each projected inner\n * Observable sequentially.\n * @method concatMap\n * @owner Observable\n */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction|R> {\n return mergeMap(project, resultSelector, 1);\n}\n","import { concatMap } from './concatMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function concatMapTo>(observable: O): OperatorFunction>;\n/** @deprecated */\nexport function concatMapTo>(observable: O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated */\nexport function concatMapTo>(observable: O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in a serialized fashion on the output Observable.\n *\n * It's like {@link concatMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](concatMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. Each new `innerObservable`\n * instance emitted on the output Observable is concatenated with the previous\n * `innerObservable` instance.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter\n * set to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMapTo, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMapTo(interval(1000).pipe(take(4))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link mergeMapTo}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return {Observable} An observable of values merged together by joining the\n * passed observable with itself, one after the other, for each value emitted\n * from the source.\n * @method concatMapTo\n * @owner Observable\n */\nexport function concatMapTo>(\n innerObservable: O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction|R> {\n return concatMap(() => innerObservable, resultSelector);\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Observer, OperatorFunction } from '../types';\nimport { Subscriber } from '../Subscriber';\n/**\n * Counts the number of emissions on the source and emits that number when the\n * source completes.\n *\n * Tells how many values were emitted, when the source\n * completes.\n *\n * ![](count.png)\n *\n * `count` transforms an Observable that emits values into an Observable that\n * emits a single value that represents the number of values emitted by the\n * source Observable. If the source Observable terminates with an error, `count`\n * will pass this error notification along without emitting a value first. If\n * the source Observable does not terminate at all, `count` will neither emit\n * a value nor terminate. This operator takes an optional `predicate` function\n * as argument, in which case the output emission will represent the number of\n * source values that matched `true` with the `predicate`.\n *\n * ## Examples\n *\n * Counts how many seconds have passed before the first click happened\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { count, takeUntil } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const secondsBeforeClick = seconds.pipe(takeUntil(clicks));\n * const result = secondsBeforeClick.pipe(count());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Counts how many odd numbers are there between 1 and 7\n * ```ts\n * import { range } from 'rxjs';\n * import { count } from 'rxjs/operators';\n *\n * const numbers = range(1, 7);\n * const result = numbers.pipe(count(i => i % 2 === 1));\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // 4\n * ```\n *\n * @see {@link max}\n * @see {@link min}\n * @see {@link reduce}\n *\n * @param {function(value: T, i: number, source: Observable): boolean} [predicate] A\n * boolean function to select what values are to be counted. It is provided with\n * arguments of:\n * - `value`: the value from the source Observable.\n * - `index`: the (zero-based) \"index\" of the value from the source Observable.\n * - `source`: the source Observable instance itself.\n * @return {Observable} An Observable of one number that represents the count as\n * described above.\n * @method count\n * @owner Observable\n */\n\nexport function count(predicate?: (value: T, index: number, source: Observable) => boolean): OperatorFunction {\n return (source: Observable) => source.lift(new CountOperator(predicate, source));\n}\n\nclass CountOperator implements Operator {\n constructor(private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CountSubscriber extends Subscriber {\n private count: number = 0;\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.predicate) {\n this._tryPredicate(value);\n } else {\n this.count++;\n }\n }\n\n private _tryPredicate(value: T) {\n let result: any;\n\n try {\n result = this.predicate(value, this.index++, this.source);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n\n if (result) {\n this.count++;\n }\n }\n\n protected _complete(): void {\n this.destination.next(this.count);\n this.destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Emits a value from the source Observable only after a particular time span\n * determined by another Observable has passed without another source emission.\n *\n * It's like {@link debounceTime}, but the time span of\n * emission silence is determined by a second Observable.\n *\n * ![](debounce.png)\n *\n * `debounce` delays values emitted by the source Observable, but drops previous\n * pending delayed emissions if a new value arrives on the source Observable.\n * This operator keeps track of the most recent value from the source\n * Observable, and spawns a duration Observable by calling the\n * `durationSelector` function. The value is emitted only when the duration\n * Observable emits a value or completes, and if no other value was emitted on\n * the source Observable since the duration Observable was spawned. If a new\n * value appears before the duration Observable emits, the previous value will\n * be dropped and will not be emitted on the output Observable.\n *\n * Like {@link debounceTime}, this is a rate-limiting operator, and also a\n * delay-like operator since output emissions do not necessarily occur at the\n * same time as they did on the source Observable.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { debounce } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounce(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the timeout\n * duration for each source value, returned as an Observable or a Promise.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified duration Observable returned by\n * `durationSelector`, and may drop some values if they occur too frequently.\n * @method debounce\n * @owner Observable\n */\nexport function debounce(durationSelector: (value: T) => SubscribableOrPromise): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DebounceOperator(durationSelector));\n}\n\nclass DebounceOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DebounceSubscriber extends SimpleOuterSubscriber {\n private value?: T;\n private hasValue = false;\n private durationSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise) {\n super(destination);\n }\n\n protected _next(value: T): void {\n try {\n const result = this.durationSelector.call(this, value);\n\n if (result) {\n this._tryNext(value, result);\n }\n } catch (err) {\n this.destination.error!(err);\n }\n }\n\n protected _complete(): void {\n this.emitValue();\n this.destination.complete!();\n }\n\n private _tryNext(value: T, duration: SubscribableOrPromise): void {\n let subscription = this.durationSubscription;\n this.value = value;\n this.hasValue = true;\n if (subscription) {\n subscription.unsubscribe();\n this.remove(subscription);\n }\n\n subscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (subscription && !subscription.closed) {\n this.add(this.durationSubscription = subscription);\n }\n }\n\n notifyNext(): void {\n this.emitValue();\n }\n\n notifyComplete(): void {\n this.emitValue();\n }\n\n emitValue(): void {\n if (this.hasValue) {\n const value = this.value;\n const subscription = this.durationSubscription;\n if (subscription) {\n this.durationSubscription = undefined;\n subscription.unsubscribe();\n this.remove(subscription);\n }\n // This must be done *before* passing the value\n // along to the destination because it's possible for\n // the value to synchronously re-enter this operator\n // recursively if the duration selector Observable\n // emits synchronously\n this.value = undefined;\n this.hasValue = false;\n super._next(value!);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { async } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.\n *\n * ![](debounceTime.png)\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link SchedulerLike} for\n * managing timers.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { debounceTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounceTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nexport function debounceTime(dueTime: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DebounceTimeOperator(dueTime, scheduler));\n}\n\nclass DebounceTimeOperator implements Operator {\n constructor(private dueTime: number, private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DebounceTimeSubscriber extends Subscriber {\n private debouncedSubscription: Subscription = null;\n private lastValue: T = null;\n private hasValue: boolean = false;\n\n constructor(destination: Subscriber,\n private dueTime: number,\n private scheduler: SchedulerLike) {\n super(destination);\n }\n\n protected _next(value: T) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n }\n\n protected _complete() {\n this.debouncedNext();\n this.destination.complete();\n }\n\n debouncedNext(): void {\n this.clearDebounce();\n\n if (this.hasValue) {\n const { lastValue } = this;\n // This must be done *before* passing the value\n // along to the destination because it's possible for\n // the value to synchronously re-enter this operator\n // recursively when scheduled with things like\n // VirtualScheduler/TestScheduler.\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n }\n\n private clearDebounce(): void {\n const debouncedSubscription = this.debouncedSubscription;\n\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n }\n}\n\nfunction dispatchNext(subscriber: DebounceTimeSubscriber) {\n subscriber.debouncedNext();\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function defaultIfEmpty(defaultValue?: T): MonoTypeOperatorFunction;\nexport function defaultIfEmpty(defaultValue?: R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * If the source Observable turns out to be empty, then\n * this operator will emit a default value.\n *\n * ![](defaultIfEmpty.png)\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * ## Example\n * If no clicks happen in 5 seconds, then emit \"no clicks\"\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { defaultIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksBeforeFive = clicks.pipe(takeUntil(interval(5000)));\n * const result = clicksBeforeFive.pipe(defaultIfEmpty('no clicks'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param {any} [defaultValue=null] The default value used if the source\n * Observable is empty.\n * @return {Observable} An Observable that emits either the specified\n * `defaultValue` if the source Observable emits no items, or the values emitted\n * by the source Observable.\n * @method defaultIfEmpty\n * @owner Observable\n */\nexport function defaultIfEmpty(defaultValue: R = null): OperatorFunction {\n return (source: Observable) => source.lift(new DefaultIfEmptyOperator(defaultValue)) as Observable;\n}\n\nclass DefaultIfEmptyOperator implements Operator {\n\n constructor(private defaultValue: R) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DefaultIfEmptySubscriber extends Subscriber {\n private isEmpty: boolean = true;\n\n constructor(destination: Subscriber, private defaultValue: R) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.isEmpty = false;\n this.destination.next(value);\n }\n\n protected _complete(): void {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n }\n}\n","export function isDate(value: any): value is Date {\n return value instanceof Date && !isNaN(+value);\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * Time shifts each item by some specified amount of\n * milliseconds.\n *\n * ![](delay.png)\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n * Delay each click by one second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n *\n * @param {number|Date} delay The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the time-shift for each item.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified timeout or Date.\n * @method delay\n * @owner Observable\n */\nexport function delay(delay: number|Date,\n scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source: Observable) => source.lift(new DelayOperator(delayFor, scheduler));\n}\n\nclass DelayOperator implements Operator {\n constructor(private delay: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\n\ninterface DelayState {\n source: DelaySubscriber;\n destination: PartialObserver;\n scheduler: SchedulerLike;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelaySubscriber extends Subscriber {\n private queue: Array> = [];\n private active: boolean = false;\n private errored: boolean = false;\n\n private static dispatch(this: SchedulerAction>, state: DelayState): void {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n } else {\n this.unsubscribe();\n source.active = false;\n }\n }\n\n constructor(destination: Subscriber,\n private delay: number,\n private scheduler: SchedulerLike) {\n super(destination);\n }\n\n private _schedule(scheduler: SchedulerLike): void {\n this.active = true;\n const destination = this.destination as Subscription;\n destination.add(scheduler.schedule>(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n\n private scheduleNotification(notification: Notification): void {\n if (this.errored === true) {\n return;\n }\n\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n\n protected _next(value: T) {\n this.scheduleNotification(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nclass DelayMessage {\n constructor(public readonly time: number,\n public readonly notification: Notification) {\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated In future versions, empty notifiers will no longer re-emit the source value on the output observable. */\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable, subscriptionDelay?: Observable): MonoTypeOperatorFunction;\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable, subscriptionDelay?: Observable): MonoTypeOperatorFunction;\n/* tslint:disable:max-line-length */\n\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.\n *\n * ![](delayWhen.png)\n *\n * `delayWhen` time shifts each emitted value from the source Observable by a\n * time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the source value as\n * argument, and should return an Observable, called the \"duration\" Observable.\n * The source value is emitted on the output Observable only when the duration\n * Observable emits a value or completes.\n * The completion of the notifier triggering the emission of the source value\n * is deprecated behavior and will be removed in future versions.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * ## Example\n * Delay each click by a random amount of time, between 0 and 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { delayWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(\n * delayWhen(event => interval(Math.random() * 5000)),\n * );\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delay}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param {function(value: T, index: number): Observable} delayDurationSelector A function that\n * returns an Observable for each value emitted by the source Observable, which\n * is then used to delay the emission of that item on the output Observable\n * until the Observable returned from this function emits a value.\n * @param {Observable} subscriptionDelay An Observable that triggers the\n * subscription to the source Observable once it emits any value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by an amount of time specified by the Observable returned by\n * `delayDurationSelector`.\n * @method delayWhen\n * @owner Observable\n */\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable,\n subscriptionDelay?: Observable): MonoTypeOperatorFunction {\n if (subscriptionDelay) {\n return (source: Observable) =>\n new SubscriptionDelayObservable(source, subscriptionDelay)\n .lift(new DelayWhenOperator(delayDurationSelector));\n }\n return (source: Observable) => source.lift(new DelayWhenOperator(delayDurationSelector));\n}\n\nclass DelayWhenOperator implements Operator {\n constructor(private delayDurationSelector: (value: T, index: number) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelayWhenSubscriber extends OuterSubscriber {\n private completed: boolean = false;\n private delayNotifierSubscriptions: Array = [];\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private delayDurationSelector: (value: T, index: number) => Observable) {\n super(destination);\n }\n\n notifyNext(outerValue: T, _innerValue: any,\n _outerIndex: number, _innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next!(outerValue);\n this.removeSubscription(innerSub);\n this.tryComplete();\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this._error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n const value = this.removeSubscription(innerSub);\n if (value) {\n this.destination.next!(value);\n }\n this.tryComplete();\n }\n\n protected _next(value: T): void {\n const index = this.index++;\n try {\n const delayNotifier = this.delayDurationSelector(value, index);\n if (delayNotifier) {\n this.tryDelay(delayNotifier, value);\n }\n } catch (err) {\n this.destination.error!(err);\n }\n }\n\n protected _complete(): void {\n this.completed = true;\n this.tryComplete();\n this.unsubscribe();\n }\n\n private removeSubscription(subscription: InnerSubscriber): T {\n subscription.unsubscribe();\n\n const subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);\n if (subscriptionIdx !== -1) {\n this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);\n }\n\n return subscription.outerValue;\n }\n\n private tryDelay(delayNotifier: Observable, value: T): void {\n const notifierSubscription = subscribeToResult(this, delayNotifier, value);\n\n if (notifierSubscription && !notifierSubscription.closed) {\n const destination = this.destination as Subscription;\n destination.add(notifierSubscription);\n this.delayNotifierSubscriptions.push(notifierSubscription);\n }\n }\n\n private tryComplete(): void {\n if (this.completed && this.delayNotifierSubscriptions.length === 0) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SubscriptionDelayObservable extends Observable {\n constructor(public source: Observable, private subscriptionDelay: Observable) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SubscriptionDelaySubscriber extends Subscriber {\n private sourceSubscribed: boolean = false;\n\n constructor(private parent: Subscriber, private source: Observable) {\n super();\n }\n\n protected _next(unused: any) {\n this.subscribeToSource();\n }\n\n protected _error(err: any) {\n this.unsubscribe();\n this.parent.error(err);\n }\n\n protected _complete() {\n this.unsubscribe();\n this.subscribeToSource();\n }\n\n private subscribeToSource(): void {\n if (!this.sourceSubscribed) {\n this.sourceSubscribed = true;\n this.unsubscribe();\n this.source.subscribe(this.parent);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nimport { OperatorFunction } from '../types';\n\n/**\n * Converts an Observable of {@link Notification} objects into the emissions\n * that they represent.\n *\n * Unwraps {@link Notification} objects as actual `next`,\n * `error` and `complete` emissions. The opposite of {@link materialize}.\n *\n * ![](dematerialize.png)\n *\n * `dematerialize` is assumed to operate an Observable that only emits\n * {@link Notification} objects as `next` emissions, and does not emit any\n * `error`. Such Observable is the output of a `materialize` operation. Those\n * notifications are then unwrapped using the metadata they contain, and emitted\n * as `next`, `error`, and `complete` on the output Observable.\n *\n * Use this operator in conjunction with {@link materialize}.\n *\n * ## Example\n * Convert an Observable of Notifications to an actual Observable\n * ```ts\n * import { of, Notification } from 'rxjs';\n * import { dematerialize } from 'rxjs/operators';\n *\n * const notifA = new Notification('N', 'A');\n * const notifB = new Notification('N', 'B');\n * const notifE = new Notification('E', undefined,\n * new TypeError('x.toUpperCase is not a function')\n * );\n * const materialized = of(notifA, notifB, notifE);\n * const upperCase = materialized.pipe(dematerialize());\n * upperCase.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Results in:\n * // A\n * // B\n * // TypeError: x.toUpperCase is not a function\n * ```\n *\n * @see {@link Notification}\n * @see {@link materialize}\n *\n * @return {Observable} An Observable that emits items and notifications\n * embedded in Notification objects emitted by the source Observable.\n * @method dematerialize\n * @owner Observable\n */\nexport function dematerialize(): OperatorFunction, T> {\n return function dematerializeOperatorFunction(source: Observable>) {\n return source.lift(new DeMaterializeOperator());\n };\n}\n\nclass DeMaterializeOperator, R> implements Operator {\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new DeMaterializeSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DeMaterializeSubscriber> extends Subscriber {\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(value: T) {\n value.observe(this.destination);\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * ## Examples\n * A simple example with numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1).pipe(\n * distinct(),\n * )\n * .subscribe(x => console.log(x)); // 1, 2, 3, 4\n * ```\n *\n * An example using a keySelector function\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * ).pipe(\n * distinct((p: Person) => p.name),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * ```\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [keySelector] Optional function to select which value you want to check as distinct.\n * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinct\n * @owner Observable\n */\nexport function distinct(keySelector?: (value: T) => K,\n flushes?: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DistinctOperator(keySelector, flushes));\n}\n\nclass DistinctOperator implements Operator {\n constructor(private keySelector?: (value: T) => K, private flushes?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class DistinctSubscriber extends SimpleOuterSubscriber {\n private values = new Set();\n\n constructor(destination: Subscriber, private keySelector?: (value: T) => K, flushes?: Observable) {\n super(destination);\n\n if (flushes) {\n this.add(innerSubscribe(flushes, new SimpleInnerSubscriber(this)));\n }\n }\n\n notifyNext(): void {\n this.values.clear();\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n protected _next(value: T): void {\n if (this.keySelector) {\n this._useKeySelector(value);\n } else {\n this._finalizeNext(value, value);\n }\n }\n\n private _useKeySelector(value: T): void {\n let key: K;\n const { destination } = this;\n try {\n key = this.keySelector!(value);\n } catch (err) {\n destination.error!(err);\n return;\n }\n this._finalizeNext(key, value);\n }\n\n private _finalizeNext(key: K|T, value: T) {\n const { values } = this;\n if (!values.has(key)) {\n values.add(key);\n this.destination.next!(value);\n }\n }\n\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilChanged(compare?: (x: T, y: T) => boolean): MonoTypeOperatorFunction;\nexport function distinctUntilChanged(compare: (x: K, y: K) => boolean, keySelector: (x: T) => K): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Example\n * A simple example with numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4).pipe(\n * distinctUntilChanged(),\n * )\n * .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4\n * ```\n *\n * An example using a compare function\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilChanged((p: Person, q: Person) => p.name === q.name),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinctUntilChanged\n * @owner Observable\n */\nexport function distinctUntilChanged(compare?: (x: K, y: K) => boolean, keySelector?: (x: T) => K): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\n\nclass DistinctUntilChangedOperator implements Operator {\n constructor(private compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DistinctUntilChangedSubscriber extends Subscriber {\n private key: K;\n private hasKey: boolean = false;\n\n constructor(destination: Subscriber,\n compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n super(destination);\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n\n private compare(x: any, y: any): boolean {\n return x === y;\n }\n\n protected _next(value: T): void {\n let key: any;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n } catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n } catch (err) {\n return this.destination.error(err);\n }\n } else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { distinctUntilChanged } from './distinctUntilChanged';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilKeyChanged(key: keyof T): MonoTypeOperatorFunction;\nexport function distinctUntilKeyChanged(key: K, compare: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item,\n * using a property accessed by using the key provided to check if the two items are distinct.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Examples\n * An example comparing the name of persons\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilKeyChanged('name'),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * An example comparing the first letters of the name\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo1'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo2'},\n * { age: 6, name: 'Foo3'},\n * ).pipe(\n * distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3)),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo1' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo2' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n *\n * @param {string} key String key for object property lookup on each item.\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values based on the key specified.\n * @method distinctUntilKeyChanged\n * @owner Observable\n */\nexport function distinctUntilKeyChanged(key: K, compare?: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction {\n return distinctUntilChanged((x: T, y: T) => compare ? compare(x[key], y[key]) : x[key] === y[key]);\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { TeardownLogic, MonoTypeOperatorFunction } from '../types';\n\n/**\n * If the source observable completes without emitting a value, it will emit\n * an error. The error will be created at that time by the optional\n * `errorFactory` argument, otherwise, the error will be {@link EmptyError}.\n *\n * ![](throwIfEmpty.png)\n *\n * ## Example\n * ```ts\n * import { fromEvent, timer } from 'rxjs';\n * import { throwIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n *\n * click$.pipe(\n * takeUntil(timer(1000)),\n * throwIfEmpty(\n * () => new Error('the document was not clicked within 1 second')\n * ),\n * )\n * .subscribe({\n * next() { console.log('The button was clicked'); },\n * error(err) { console.error(err); }\n * });\n * ```\n *\n * @param errorFactory A factory function called to produce the\n * error to be thrown when the source observable completes without emitting a\n * value.\n */\nexport function throwIfEmpty (errorFactory: (() => any) = defaultErrorFactory): MonoTypeOperatorFunction {\n return (source: Observable) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\n\nclass ThrowIfEmptyOperator implements Operator {\n constructor(private errorFactory: () => any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\n\nclass ThrowIfEmptySubscriber extends Subscriber {\n private hasValue: boolean = false;\n\n constructor(destination: Subscriber, private errorFactory: () => any) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.hasValue = true;\n this.destination.next(value);\n }\n\n protected _complete() {\n if (!this.hasValue) {\n let err: any;\n try {\n err = this.errorFactory();\n } catch (e) {\n err = e;\n }\n this.destination.error(err);\n } else {\n return this.destination.complete();\n }\n }\n}\n\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * Takes the first `count` values from the source, then\n * completes.\n *\n * ![](take.png)\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * ## Example\n * Take the first 5 seconds of an infinite 1-second interval Observable\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const intervalCount = interval(1000);\n * const takeFive = intervalCount.pipe(take(5));\n * takeFive.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `take(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of `next` values to emit.\n * @return {Observable} An Observable that emits only the first `count`\n * values emitted by the source Observable, or all of the values from the source\n * if the source emits fewer than `count` values.\n * @method take\n * @owner Observable\n */\nexport function take(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => {\n if (count === 0) {\n return empty();\n } else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\n\nclass TakeOperator implements Operator {\n constructor(private total: number) {\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeSubscriber extends Subscriber {\n private count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\n\n/**\n * Emits the single value at the specified `index` in a sequence of emissions\n * from the source Observable.\n *\n * Emits only the i-th value, then completes.\n *\n * ![](elementAt.png)\n *\n * `elementAt` returns an Observable that emits the item at the specified\n * `index` in the source Observable, or a default value if that `index` is out\n * of range and the `default` argument is provided. If the `default` argument is\n * not given and the `index` is out of range, the output Observable will emit an\n * `ArgumentOutOfRangeError` error.\n *\n * ## Example\n * Emit only the third click event\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { elementAt } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(elementAt(2));\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // click 1 = nothing\n * // click 2 = nothing\n * // click 3 = MouseEvent object logged to console\n * ```\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link skip}\n * @see {@link single}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0` or the\n * Observable has completed before emitting the i-th `next` notification.\n *\n * @param {number} index Is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {T} [defaultValue] The default value returned for missing indices.\n * @return {Observable} An Observable that emits a single item, if it is found.\n * Otherwise, will emit the default value if given. If not, then emits an error.\n * @method elementAt\n * @owner Observable\n */\nexport function elementAt(index: number, defaultValue?: T): MonoTypeOperatorFunction {\n if (index < 0) { throw new ArgumentOutOfRangeError(); }\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n filter((v, i) => i === index),\n take(1),\n hasDefaultValue\n ? defaultIfEmpty(defaultValue)\n : throwIfEmpty(() => new ArgumentOutOfRangeError()),\n );\n}\n","import { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F, scheduler: SchedulerLike): OperatorFunction;\n\nexport function endWith(v1: A): OperatorFunction;\nexport function endWith(v1: A, v2: B): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F): OperatorFunction;\nexport function endWith(...array: Z[]): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(...array: Array): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments after it finishes emitting\n * items emitted by the source Observable.\n *\n * ![](endWith.png)\n *\n * ## Example\n * ### After the source observable completes, appends an emission and then completes too.\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { endWith } from 'rxjs/operators';\n *\n * of('hi', 'how are you?', 'sorry, I have to go now').pipe(\n * endWith('goodbye!'),\n * )\n * .subscribe(word => console.log(word));\n * // result:\n * // 'hi'\n * // 'how are you?'\n * // 'sorry, I have to go now'\n * // 'goodbye!'\n * ```\n *\n * @param {...T} values - Items you want the modified Observable to emit last.\n * @param {SchedulerLike} [scheduler] - A {@link SchedulerLike} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items emitted by the source Observable\n * and then emits the items in the specified Iterable.\n * @method endWith\n * @owner Observable\n */\nexport function endWith(...array: Array): MonoTypeOperatorFunction {\n return (source: Observable) => concat(source, of(...array)) as Observable;\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Observer, OperatorFunction } from '../types';\n\n/**\n * Returns an Observable that emits whether or not every item of the source satisfies the condition specified.\n *\n * ## Example\n * A simple example emitting true if all elements are less than 5, false otherwise\n * ```ts\n * import { of } from 'rxjs';\n * import { every } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5, 6).pipe(\n * every(x => x < 5),\n * )\n * .subscribe(x => console.log(x)); // -> false\n * ```\n *\n * @param {function} predicate A function for determining if an item meets a specified condition.\n * @param {any} [thisArg] Optional object to use for `this` in the callback.\n * @return {Observable} An Observable of booleans that determines if all items of the source Observable meet the condition specified.\n * @method every\n * @owner Observable\n */\nexport function every(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n return (source: Observable) => source.lift(new EveryOperator(predicate, thisArg, source));\n}\n\nclass EveryOperator implements Operator {\n constructor(private predicate: (value: T, index: number, source: Observable) => boolean,\n private thisArg?: any,\n private source?: Observable) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass EverySubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate: (value: T, index: number, source: Observable) => boolean,\n private thisArg: any,\n private source?: Observable) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n private notifyComplete(everyValueMatch: boolean): void {\n this.destination.next(everyValueMatch);\n this.destination.complete();\n }\n\n protected _next(value: T): void {\n let result = false;\n try {\n result = this.predicate.call(this.thisArg, value, this.index++, this.source);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n\n if (!result) {\n this.notifyComplete(false);\n }\n }\n\n protected _complete(): void {\n this.notifyComplete(true);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\nexport function exhaust(): OperatorFunction, T>;\nexport function exhaust(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.\n *\n * ![](exhaust.png)\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaust, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(5))),\n * );\n * const result = higherOrder.pipe(exhaust());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable that takes a source of Observables and propagates the first observable\n * exclusively until it completes before subscribing to the next.\n * @method exhaust\n * @owner Observable\n */\nexport function exhaust(): OperatorFunction {\n return (source: Observable) => source.lift(new SwitchFirstOperator());\n}\n\nclass SwitchFirstOperator implements Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SwitchFirstSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SwitchFirstSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private hasSubscription: boolean = false;\n\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSubscription) {\n this.hasSubscription = true;\n this.add(innerSubscribe(value, new SimpleInnerSubscriber(this)));\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete!();\n }\n }\n\n notifyComplete(): void {\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function exhaustMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported. Use inner map instead. */\nexport function exhaustMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported. Use inner map instead. */\nexport function exhaustMap(project: (value: T, index: number) => ObservableInput, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable only if the previous projected Observable has completed.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link exhaust}.\n *\n * ![](exhaustMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. When it projects a source value to\n * an Observable, the output Observable begins emitting the items emitted by\n * that projected Observable. However, `exhaustMap` ignores every new projected\n * Observable if the previous projected Observable has not yet completed. Once\n * that one completes, it will accept and flatten the next projected Observable\n * and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaustMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * exhaustMap(ev => interval(1000).pipe(take(5)))\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaust}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable containing projected Observables\n * of each item of the source, ignoring projected Observables that start before\n * their preceding Observable has completed.\n * @method exhaustMap\n * @owner Observable\n */\nexport function exhaustMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n): OperatorFunction|R> {\n if (resultSelector) {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n exhaustMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: any) => resultSelector(a, b, i, ii)),\n )),\n );\n }\n return (source: Observable) =>\n source.lift(new ExhaustMapOperator(project));\n}\n\nclass ExhaustMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ExhaustMapSubscriber extends SimpleOuterSubscriber {\n private hasSubscription = false;\n private hasCompleted = false;\n private index = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSubscription) {\n this.tryNext(value);\n }\n }\n\n private tryNext(value: T): void {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.hasSubscription = true;\n this._innerSub(result);\n }\n\n private _innerSub(result: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error!(err);\n }\n\n notifyComplete(): void {\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, OperatorFunction, ObservableInput, SchedulerLike } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function expand(project: (value: T, index: number) => ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\nexport function expand(project: (value: T, index: number) => ObservableInput, concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Recursively projects each source value to an Observable which is merged in\n * the output Observable.\n *\n * It's similar to {@link mergeMap}, but applies the\n * projection function to every source value as well as every output value.\n * It's recursive.\n *\n * ![](expand.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger. *Expand* will re-emit on the output\n * Observable every source value. Then, each output value is given to the\n * `project` function which returns an inner Observable to be merged on the\n * output Observable. Those output values resulting from the projection are also\n * given to the `project` function to produce new output values. This is how\n * *expand* behaves recursively.\n *\n * ## Example\n * Start emitting the powers of two on every click, at most 10 of them\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { expand, mapTo, delay, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const powersOfTwo = clicks.pipe(\n * mapTo(1),\n * expand(x => of(2 * x).pipe(delay(1000))),\n * take(10),\n * );\n * powersOfTwo.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n *\n * @param {function(value: T, index: number) => Observable} project A function\n * that, when applied to an item emitted by the source or the output Observable,\n * returns an Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each projected inner Observable.\n * @return {Observable} An Observable that emits the source values and also\n * result of applying the projection function to each value emitted on the\n * output Observable and and merging the results of the Observables obtained\n * from this transformation.\n * @method expand\n * @owner Observable\n */\nexport function expand(project: (value: T, index: number) => ObservableInput,\n concurrent: number = Number.POSITIVE_INFINITY,\n scheduler?: SchedulerLike): OperatorFunction {\n concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;\n\n return (source: Observable) => source.lift(new ExpandOperator(project, concurrent, scheduler));\n}\n\nexport class ExpandOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number,\n private scheduler?: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));\n }\n}\n\ninterface DispatchArg {\n subscriber: ExpandSubscriber;\n result: ObservableInput;\n value: any;\n index: number;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ExpandSubscriber extends SimpleOuterSubscriber {\n private index: number = 0;\n private active: number = 0;\n private hasCompleted: boolean = false;\n private buffer?: any[];\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number,\n private scheduler?: SchedulerLike) {\n super(destination);\n if (concurrent < Number.POSITIVE_INFINITY) {\n this.buffer = [];\n }\n }\n\n private static dispatch(arg: DispatchArg): void {\n const {subscriber, result, value, index} = arg;\n subscriber.subscribeToProjection(result, value, index);\n }\n\n protected _next(value: any): void {\n const destination = this.destination;\n\n if (destination.closed) {\n this._complete();\n return;\n }\n\n const index = this.index++;\n if (this.active < this.concurrent) {\n destination.next!(value);\n try {\n const { project } = this;\n const result = project(value, index);\n if (!this.scheduler) {\n this.subscribeToProjection(result, value, index);\n } else {\n const state: DispatchArg = { subscriber: this, result, value, index };\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule>(ExpandSubscriber.dispatch as any, 0, state));\n }\n } catch (e) {\n destination.error!(e);\n }\n } else {\n this.buffer!.push(value);\n }\n }\n\n private subscribeToProjection(result: any, value: T, index: number): void {\n this.active++;\n const destination = this.destination as Subscription;\n destination.add(innerSubscribe(result, new SimpleInnerSubscriber(this)));\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this._next(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer && buffer.length > 0) {\n this._next(buffer.shift());\n }\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete!();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * @param {function} callback Function to be called when source terminates.\n * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.\n * @method finally\n * @owner Observable\n */\nexport function finalize(callback: () => void): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new FinallyOperator(callback));\n}\n\nclass FinallyOperator implements Operator {\n constructor(private callback: () => void) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FinallySubscriber extends Subscriber {\n constructor(destination: Subscriber, callback: () => void) {\n super(destination);\n this.add(new Subscription(callback));\n }\n}\n","import {Observable} from '../Observable';\nimport {Operator} from '../Operator';\nimport {Subscriber} from '../Subscriber';\nimport {OperatorFunction} from '../types';\n\nexport function find(predicate: (value: T, index: number, source: Observable) => value is S,\n thisArg?: any): OperatorFunction;\nexport function find(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction;\n/**\n * Emits only the first value emitted by the source Observable that meets some\n * condition.\n *\n * Finds the first value that passes some test and emits\n * that.\n *\n * ![](find.png)\n *\n * `find` searches for the first item in the source Observable that matches the\n * specified condition embodied by the `predicate`, and returns the first\n * occurrence in the source. Unlike {@link first}, the `predicate` is required\n * in `find`, and does not emit an error if a valid value is not found.\n *\n * ## Example\n * Find and emit the first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { find } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(find(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link first}\n * @see {@link findIndex}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the first item that matches the\n * condition.\n * @method find\n * @owner Observable\n */\nexport function find(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate is not a function');\n }\n return (source: Observable) => source.lift(new FindValueOperator(predicate, source, false, thisArg)) as Observable;\n}\n\nexport class FindValueOperator implements Operator {\n constructor(private predicate: (value: T, index: number, source: Observable) => boolean,\n private source: Observable,\n private yieldIndex: boolean,\n private thisArg?: any) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class FindValueSubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number, source: Observable) => boolean,\n private source: Observable,\n private yieldIndex: boolean,\n private thisArg?: any) {\n super(destination);\n }\n\n private notifyComplete(value: any): void {\n const destination = this.destination;\n\n destination.next(value);\n destination.complete();\n this.unsubscribe();\n }\n\n protected _next(value: T): void {\n const {predicate, thisArg} = this;\n const index = this.index++;\n try {\n const result = predicate.call(thisArg || this, value, index, this.source);\n if (result) {\n this.notifyComplete(this.yieldIndex ? index : value);\n }\n } catch (err) {\n this.destination.error(err);\n }\n }\n\n protected _complete(): void {\n this.notifyComplete(this.yieldIndex ? -1 : undefined);\n }\n}\n","import { Observable } from '../Observable';\nimport { FindValueOperator } from '../operators/find';\nimport { OperatorFunction } from '../types';\n/**\n * Emits only the index of the first value emitted by the source Observable that\n * meets some condition.\n *\n * It's like {@link find}, but emits the index of the\n * found value, not the value itself.\n *\n * ![](findIndex.png)\n *\n * `findIndex` searches for the first item in the source Observable that matches\n * the specified condition embodied by the `predicate`, and returns the\n * (zero-based) index of the first occurrence in the source. Unlike\n * {@link first}, the `predicate` is required in `findIndex`, and does not emit\n * an error if a valid value is not found.\n *\n * ## Example\n * Emit the index of first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { findIndex } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(findIndex(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link first}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the index of the first item that\n * matches the condition.\n * @method find\n * @owner Observable\n */\nexport function findIndex(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n return (source: Observable) => source.lift(new FindValueOperator(predicate, source, true, thisArg)) as Observable;\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction } from '../../internal/types';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\n\n/* tslint:disable:max-line-length */\nexport function first(\n predicate?: null,\n defaultValue?: D\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * Emits only the first value. Or emits only the first\n * value that passes some test.\n *\n * ![](first.png)\n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. It\n * may also take a deprecated `resultSelector` function to produce the output\n * value from the input value, and a `defaultValue` to emit in case the source\n * completes before it is able to emit a valid value. Throws an error if\n * `defaultValue` was not provided and a matching element is not found.\n *\n * ## Examples\n * Emit only the first click that happens on the DOM\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Emits the first click that happens on a DIV\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n *\n * @param {function(value: T, index: number, source: Observable): boolean} [predicate]\n * An optional function called with each item to test for condition matching.\n * @param {R} [defaultValue] The default value emitted in case no valid value\n * was found on the source.\n * @return {Observable} An Observable of the first item that matches the\n * condition.\n * @method first\n * @owner Observable\n */\nexport function first(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n take(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()),\n );\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * ![](ignoreElements.png)\n *\n * ## Examples\n * ### Ignores emitted values, reacts to observable's completion.\n * ```ts\n * import { of } from 'rxjs';\n * import { ignoreElements } from 'rxjs/operators';\n *\n * of('you', 'talking', 'to', 'me').pipe(\n * ignoreElements(),\n * )\n * .subscribe(\n * word => console.log(word),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'the end'\n * ```\n * @return {Observable} An empty Observable that only calls `complete`\n * or `error`, based on which one is called by the source Observable.\n * @method ignoreElements\n * @owner Observable\n */\nexport function ignoreElements(): OperatorFunction {\n return function ignoreElementsOperatorFunction(source: Observable) {\n return source.lift(new IgnoreElementsOperator());\n };\n}\n\nclass IgnoreElementsOperator implements Operator {\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass IgnoreElementsSubscriber extends Subscriber {\n protected _next(unused: T): void {\n // Do nothing\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Emits false if the input observable emits any values, or emits true if the\n * input observable completes without emitting any values.\n *\n * Tells whether any values are emitted by an observable\n *\n * ![](isEmpty.png)\n *\n * `isEmpty` transforms an Observable that emits values into an Observable that\n * emits a single boolean value representing whether or not any values were\n * emitted by the source Observable. As soon as the source Observable emits a\n * value, `isEmpty` will emit a `false` and complete. If the source Observable\n * completes having not emitted anything, `isEmpty` will emit a `true` and\n * complete.\n *\n * A similar effect could be achieved with {@link count}, but `isEmpty` can emit\n * a `false` value sooner.\n *\n * ## Examples\n *\n * Emit `false` for a non-empty Observable\n * ```javascript\n * import { Subject } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const source = new Subject();\n * const result = source.pipe(isEmpty());\n * source.subscribe(x => console.log(x));\n * result.subscribe(x => console.log(x));\n * source.next('a');\n * source.next('b');\n * source.next('c');\n * source.complete();\n *\n * // Results in:\n * // a\n * // false\n * // b\n * // c\n * ```\n *\n * Emit `true` for an empty Observable\n * ```javascript\n * import { EMPTY } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const result = EMPTY.pipe(isEmpty());\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // true\n * ```\n *\n * @see {@link count}\n * @see {@link EMPTY}\n *\n * @return {OperatorFunction} An Observable of a boolean value indicating whether observable was empty or not\n * @method isEmpty\n * @owner Observable\n */\n\nexport function isEmpty(): OperatorFunction {\n return (source: Observable) => source.lift(new IsEmptyOperator());\n}\n\nclass IsEmptyOperator implements Operator {\n call (observer: Subscriber, source: any): any {\n return source.subscribe(new IsEmptySubscriber(observer));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass IsEmptySubscriber extends Subscriber {\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n private notifyComplete(isEmpty: boolean): void {\n const destination = this.destination;\n\n destination.next(isEmpty);\n destination.complete();\n }\n\n protected _next(value: boolean) {\n this.notifyComplete(false);\n }\n\n protected _complete() {\n this.notifyComplete(true);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Emits only the last `count` values emitted by the source Observable.\n *\n * Remembers the latest `count` values, then emits those\n * only when the source completes.\n *\n * ![](takeLast.png)\n *\n * `takeLast` returns an Observable that emits at most the last `count` values\n * emitted by the source Observable. If the source emits fewer than `count`\n * values then all of its values are emitted. This operator must wait until the\n * `complete` notification emission from the source in order to emit the `next`\n * values on the output Observable, because otherwise it is impossible to know\n * whether or not more values will be emitted on the source. For this reason,\n * all values are emitted synchronously, followed by the complete notification.\n *\n * ## Example\n * Take the last 3 values of an Observable with many values\n * ```ts\n * import { range } from 'rxjs';\n * import { takeLast } from 'rxjs/operators';\n *\n * const many = range(1, 100);\n * const lastThree = many.pipe(takeLast(3));\n * lastThree.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `takeLast(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of values to emit from the end of\n * the sequence of values emitted by the source Observable.\n * @return {Observable} An Observable that emits at most the last count\n * values emitted by the source Observable.\n * @method takeLast\n * @owner Observable\n */\nexport function takeLast(count: number): MonoTypeOperatorFunction {\n return function takeLastOperatorFunction(source: Observable): Observable {\n if (count === 0) {\n return empty();\n } else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\n\nclass TakeLastOperator implements Operator {\n constructor(private total: number) {\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeLastSubscriber extends Subscriber {\n private ring: Array = new Array();\n private count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const ring = this.ring;\n const total = this.total;\n const count = this.count++;\n\n if (ring.length < total) {\n ring.push(value);\n } else {\n const index = count % total;\n ring[index] = value;\n }\n }\n\n protected _complete(): void {\n const destination = this.destination;\n let count = this.count;\n\n if (count > 0) {\n const total = this.count >= this.total ? this.total : this.count;\n const ring = this.ring;\n\n for (let i = 0; i < total; i++) {\n const idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n\n destination.complete();\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction } from '../../internal/types';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\n\n/* tslint:disable:max-line-length */\nexport function last(\n predicate?: null,\n defaultValue?: D\n): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits only the last item emitted by the source Observable.\n * It optionally takes a predicate function as a parameter, in which case, rather than emitting\n * the last item from the source Observable, the resulting Observable will emit the last item\n * from the source Observable that satisfies the predicate.\n *\n * ![](last.png)\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {function} [predicate] - The condition any source emitted item has to satisfy.\n * @param {any} [defaultValue] - An optional default value to provide if last\n * predicate isn't met or no values were emitted.\n * @return {Observable} An Observable that emits only the last item satisfying the given condition\n * from the source, or an NoSuchElementException if no such items are emitted.\n * @throws - Throws if no items that match the predicate are emitted by the source Observable.\n */\nexport function last(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n takeLast(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()),\n );\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * Like {@link map}, but it maps every source value to\n * the same output value every time.\n *\n * ![](mapTo.png)\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * ## Example\n * Map every click to the string 'Hi'\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const greetings = clicks.pipe(mapTo('Hi'));\n * greetings.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param {any} value The value to map each source value to.\n * @return {Observable} An Observable that emits the given `value` every time\n * the source Observable emits something.\n * @method mapTo\n * @owner Observable\n */\nexport function mapTo(value: R): OperatorFunction {\n return (source: Observable) => source.lift(new MapToOperator(value));\n}\n\nclass MapToOperator implements Operator {\n\n value: R;\n\n constructor(value: R) {\n this.value = value;\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapToSubscriber extends Subscriber {\n\n value: R;\n\n constructor(destination: Subscriber, value: R) {\n super(destination);\n this.value = value;\n }\n\n protected _next(x: T) {\n this.destination.next(this.value);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nimport { OperatorFunction } from '../types';\n\n/**\n * Represents all of the notifications from the source Observable as `next`\n * emissions marked with their original types within {@link Notification}\n * objects.\n *\n * Wraps `next`, `error` and `complete` emissions in\n * {@link Notification} objects, emitted as `next` on the output Observable.\n * \n *\n * ![](materialize.png)\n *\n * `materialize` returns an Observable that emits a `next` notification for each\n * `next`, `error`, or `complete` emission of the source Observable. When the\n * source Observable emits `complete`, the output Observable will emit `next` as\n * a Notification of type \"complete\", and then it will emit `complete` as well.\n * When the source Observable emits `error`, the output will emit `next` as a\n * Notification of type \"error\", and then `complete`.\n *\n * This operator is useful for producing metadata of the source Observable, to\n * be consumed as `next` emissions. Use it in conjunction with\n * {@link dematerialize}.\n *\n * ## Example\n * Convert a faulty Observable to an Observable of Notifications\n * ```ts\n * import { of } from 'rxjs';\n * import { materialize, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 13, 'd');\n * const upperCase = letters.pipe(map(x => x.toUpperCase()));\n * const materialized = upperCase.pipe(materialize());\n * materialized.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - Notification {kind: \"N\", value: \"A\", error: undefined, hasValue: true}\n * // - Notification {kind: \"N\", value: \"B\", error: undefined, hasValue: true}\n * // - Notification {kind: \"E\", value: undefined, error: TypeError:\n * // x.toUpperCase is not a function at MapSubscriber.letters.map.x\n * // [as project] (http://1…, hasValue: false}\n * ```\n *\n * @see {@link Notification}\n * @see {@link dematerialize}\n *\n * @return {Observable>} An Observable that emits\n * {@link Notification} objects that wrap the original emissions from the source\n * Observable with metadata.\n * @method materialize\n * @owner Observable\n */\nexport function materialize(): OperatorFunction> {\n return function materializeOperatorFunction(source: Observable) {\n return source.lift(new MaterializeOperator());\n };\n}\n\nclass MaterializeOperator implements Operator> {\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new MaterializeSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MaterializeSubscriber extends Subscriber {\n constructor(destination: Subscriber>) {\n super(destination);\n }\n\n protected _next(value: T) {\n this.destination.next(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n const destination = this.destination;\n destination.next(Notification.createError(err));\n destination.complete();\n }\n\n protected _complete() {\n const destination = this.destination;\n destination.next(Notification.createComplete());\n destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function scan(accumulator: (acc: R, value: T, index: number) => R, seed: R): OperatorFunction;\nexport function scan(accumulator: (acc: T, value: T, index: number) => T, seed?: T): MonoTypeOperatorFunction;\nexport function scan(accumulator: (acc: R, value: T, index: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Applies an accumulator function over the source Observable, and returns each\n * intermediate result, with an optional seed value.\n *\n * It's like {@link reduce}, but emits the current\n * accumulation whenever the source emits a value.\n *\n * ![](scan.png)\n *\n * Combines together all values emitted on the source, using an accumulator\n * function that knows how to join a new source value into the accumulation from\n * the past. Is similar to {@link reduce}, but emits the intermediate\n * accumulations.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n * Count the number of click events\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { scan, mapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const ones = clicks.pipe(mapTo(1));\n * const seed = 0;\n * const count = ones.pipe(scan((acc, one) => acc + one, seed));\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator\n * The accumulator function called on each source value.\n * @param {T|R} [seed] The initial accumulation value.\n * @return {Observable} An observable of the accumulated values.\n * @method scan\n * @owner Observable\n */\nexport function scan(accumulator: (acc: R, value: T, index: number) => R, seed?: T | R): OperatorFunction {\n let hasSeed = false;\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n\n return function scanOperatorFunction(source: Observable): Observable {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\n\nclass ScanOperator implements Operator {\n constructor(private accumulator: (acc: R, value: T, index: number) => R, private seed?: T | R, private hasSeed: boolean = false) {}\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ScanSubscriber extends Subscriber {\n private index: number = 0;\n\n get seed(): T | R {\n return this._seed;\n }\n\n set seed(value: T | R) {\n this.hasSeed = true;\n this._seed = value;\n }\n\n constructor(destination: Subscriber, private accumulator: (acc: R, value: T, index: number) => R, private _seed: T | R,\n private hasSeed: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n } else {\n return this._tryNext(value);\n }\n }\n\n private _tryNext(value: T): void {\n const index = this.index++;\n let result: any;\n try {\n result = this.accumulator(this.seed, value, index);\n } catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n }\n}\n","import { Observable } from '../Observable';\nimport { scan } from './scan';\nimport { takeLast } from './takeLast';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\nimport { pipe } from '../util/pipe';\n\n/* tslint:disable:max-line-length */\nexport function reduce(accumulator: (acc: R, value: T, index: number) => R, seed: R): OperatorFunction;\nexport function reduce(accumulator: (acc: T, value: T, index: number) => T, seed?: T): MonoTypeOperatorFunction;\nexport function reduce(accumulator: (acc: R, value: T, index: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Applies an accumulator function over the source Observable, and returns the\n * accumulated result when the source completes, given an optional seed value.\n *\n * Combines together all values emitted on the source,\n * using an accumulator function that knows how to join a new source value into\n * the accumulation from the past.\n *\n * ![](reduce.png)\n *\n * Like\n * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce),\n * `reduce` applies an `accumulator` function against an accumulation and each\n * value of the source Observable (from the past) to reduce it to a single\n * value, emitted on the output Observable. Note that `reduce` will only emit\n * one value, only when the source Observable completes. It is equivalent to\n * applying operator {@link scan} followed by operator {@link last}.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n * Count the number of click events that happened in 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { reduce, takeUntil, mapTo } from 'rxjs/operators';\n *\n * const clicksInFiveSeconds = fromEvent(document, 'click').pipe(\n * takeUntil(interval(5000)),\n * );\n * const ones = clicksInFiveSeconds.pipe(mapTo(1));\n * const seed = 0;\n * const count = ones.pipe(reduce((acc, one) => acc + one, seed));\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link count}\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link scan}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator The accumulator function\n * called on each source value.\n * @param {R} [seed] The initial accumulation value.\n * @return {Observable} An Observable that emits a single value that is the\n * result of accumulating the values emitted by the source Observable.\n * @method reduce\n * @owner Observable\n */\nexport function reduce(accumulator: (acc: T | R, value: T, index?: number) => T | R, seed?: T | R): OperatorFunction {\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n if (arguments.length >= 2) {\n return function reduceOperatorFunctionWithSeed(source: Observable): Observable {\n return pipe(scan(accumulator, seed), takeLast(1), defaultIfEmpty(seed))(source);\n };\n }\n return function reduceOperatorFunction(source: Observable): Observable {\n return pipe(\n scan((acc, value, index) => accumulator(acc, value, index + 1)),\n takeLast(1),\n )(source);\n };\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/**\n * The Max operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the largest value.\n *\n * ![](max.png)\n *\n * ## Examples\n * Get the maximal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * max(),\n * )\n * .subscribe(x => console.log(x)); // -> 8\n * ```\n *\n * Use a comparer function to get the maximal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n * of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * max((a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Beer'\n * ```\n *\n * @see {@link min}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the largest value.\n * @method max\n * @owner Observable\n */\nexport function max(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n const max: (x: T, y: T) => T = (typeof comparer === 'function')\n ? (x, y) => comparer(x, y) > 0 ? x : y\n : (x, y) => x > y ? x : y;\n\n return reduce(max);\n}\n","import { merge as mergeStatic } from '../observable/merge';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link merge}.\n */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction {\n return (source: Observable) => source.lift.call(mergeStatic(source, ...observables));\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction, ObservedValueOf } from '../../internal/types';\nimport { mergeMap } from './mergeMap';\nimport { ObservableInput } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function mergeMapTo>(innerObservable: O, concurrent?: number): OperatorFunction>;\n/** @deprecated */\nexport function mergeMapTo>(innerObservable: O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in the output Observable.\n *\n * It's like {@link mergeMap}, but maps each value always\n * to the same inner Observable.\n *\n * ![](mergeMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then merges those resulting Observables into one\n * single Observable, which is the output Observable.\n *\n * ## Example\n * For each click event, start an interval Observable ticking every 1 second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { mergeMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(mergeMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable`\n * @method mergeMapTo\n * @owner Observable\n */\nexport function mergeMapTo>(\n innerObservable: O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n return mergeMap(() => innerObservable, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(() => innerObservable, concurrent);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, then each intermediate\n * Observable returned is merged into the output Observable.\n *\n * It's like {@link scan}, but the Observables returned\n * by the accumulator are merged into the outer Observable.\n *\n * ## Example\n * Count the number of click events\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { mapTo, mergeScan } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n * const one$ = click$.pipe(mapTo(1));\n * const seed = 0;\n * const count$ = one$.pipe(\n * mergeScan((acc, one) => of(acc + one), seed),\n * );\n * count$.subscribe(x => console.log(x));\n *\n * // Results:\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...and so on for each click\n * ```\n *\n * @param {function(acc: R, value: T): Observable} accumulator\n * The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of\n * input Observables being subscribed to concurrently.\n * @return {Observable} An observable of the accumulated values.\n * @method mergeScan\n * @owner Observable\n */\nexport function mergeScan(accumulator: (acc: R, value: T, index: number) => ObservableInput,\n seed: R,\n concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction {\n return (source: Observable) => source.lift(new MergeScanOperator(accumulator, seed, concurrent));\n}\n\nexport class MergeScanOperator implements Operator {\n constructor(private accumulator: (acc: R, value: T, index: number) => ObservableInput,\n private seed: R,\n private concurrent: number) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MergeScanSubscriber(\n subscriber, this.accumulator, this.seed, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeScanSubscriber extends SimpleOuterSubscriber {\n private hasValue: boolean = false;\n private hasCompleted: boolean = false;\n private buffer: Observable[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private accumulator: (acc: R, value: T, index: number) => ObservableInput,\n private acc: R,\n private concurrent: number) {\n super(destination);\n }\n\n protected _next(value: any): void {\n if (this.active < this.concurrent) {\n const index = this.index++;\n const destination = this.destination;\n let ish;\n try {\n const { accumulator } = this;\n ish = accumulator(this.acc, value, index);\n } catch (e) {\n return destination.error!(e);\n }\n this.active++;\n this._innerSub(ish);\n } else {\n this.buffer.push(value);\n }\n }\n\n private _innerSub(ish: any): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n if (this.hasValue === false) {\n this.destination.next!(this.acc);\n }\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n const { destination } = this;\n this.acc = innerValue;\n this.hasValue = true;\n destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n } else if (this.active === 0 && this.hasCompleted) {\n if (this.hasValue === false) {\n this.destination.next!(this.acc);\n }\n this.destination.complete!();\n }\n }\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/**\n * The Min operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the smallest value.\n *\n * ![](min.png)\n *\n * ## Examples\n * Get the minimal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * min(),\n * )\n * .subscribe(x => console.log(x)); // -> 2\n * ```\n *\n * Use a comparer function to get the minimal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n * of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * min( (a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Bar'\n * ```\n * @see {@link max}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the smallest value.\n * @method min\n * @owner Observable\n */\nexport function min(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n const min: (x: T, y: T) => T = (typeof comparer === 'function')\n ? (x, y) => comparer(x, y) < 0 ? x : y\n : (x, y) => x < y ? x : y;\n return reduce(min);\n}\n","import { Subject } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { ConnectableObservable, connectableObservableDescriptor } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservedValueOf, ObservableInput } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function multicast(subject: Subject): UnaryFunction, ConnectableObservable>;\nexport function multicast>(subject: Subject, selector: (shared: Observable) => O): UnaryFunction, ConnectableObservable>>;\nexport function multicast(subjectFactory: (this: Observable) => Subject): UnaryFunction, ConnectableObservable>;\nexport function multicast>(SubjectFactory: (this: Observable) => Subject, selector: (shared: Observable) => O): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the results of invoking a specified selector on items\n * emitted by a ConnectableObservable that shares a single subscription to the underlying stream.\n *\n * ![](multicast.png)\n *\n * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate subject through\n * which the source sequence's elements will be multicast to the selector function\n * or Subject to push source elements into.\n * @param {Function} [selector] - Optional selector function that can use the multicasted source stream\n * as many times as needed, without causing multiple subscriptions to the source stream.\n * Subscribers to the given source will receive all notifications of the source from the\n * time of the subscription forward.\n * @return {Observable} An Observable that emits the results of invoking the selector\n * on the items emitted by a `ConnectableObservable` that shares a single subscription to\n * the underlying stream.\n * @method multicast\n * @owner Observable\n */\nexport function multicast(subjectOrSubjectFactory: Subject | (() => Subject),\n selector?: (source: Observable) => Observable): OperatorFunction {\n return function multicastOperatorFunction(source: Observable): Observable {\n let subjectFactory: () => Subject;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = <() => Subject>subjectOrSubjectFactory;\n } else {\n subjectFactory = function subjectFactory() {\n return >subjectOrSubjectFactory;\n };\n }\n\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n\n const connectable: any = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n\n return > connectable;\n };\n}\n\nexport class MulticastOperator implements Operator {\n constructor(private subjectFactory: () => Subject,\n private selector: (source: Observable) => Observable) {\n }\n call(subscriber: Subscriber, source: any): any {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { Observable } from '../Observable';\nimport { from } from '../observable/from';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { isArray } from '../util/isArray';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(...observables: Array>): OperatorFunction;\nexport function onErrorResumeNext(array: ObservableInput[]): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as\n * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same\n * as the source.\n *\n * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable.\n * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext`\n * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting\n * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another\n * Observable in provided series, no matter if previous Observable completed or ended with an error. This will\n * be happening until there is no more Observables left in the series, at which point returned Observable will\n * complete - even if the last subscribed stream ended with an error.\n *\n * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive\n * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable\n * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with\n * an error.\n *\n * Note that you do not get any access to errors emitted by the Observables. In particular do not\n * expect these errors to appear in error callback passed to {@link Observable#subscribe}. If you want to take\n * specific actions based on what error was emitted by an Observable, you should try out {@link catchError} instead.\n *\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { of } from 'rxjs';\n * import { onErrorResumeNext, map } from 'rxjs/operators';\n *\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) { throw Error(); }\n * return 10 / x;\n * }),\n * onErrorResumeNext(of(1, 2, 3)),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('that\\'s it!')\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"that's it!\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} observables Observables passed either directly or as an array.\n * @return {Observable} An Observable that emits values from source Observable, but - if it errors - subscribes\n * to the next passed Observable and so on, until it completes or runs out of Observables.\n * @method onErrorResumeNext\n * @owner Observable\n */\n\nexport function onErrorResumeNext(...nextSources: Array |\n Array>>): OperatorFunction {\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = >>nextSources[0];\n }\n\n return (source: Observable) => source.lift(new OnErrorResumeNextOperator(nextSources));\n}\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNextStatic(v: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\n\nexport function onErrorResumeNextStatic(...observables: Array | ((...values: Array) => R)>): Observable;\nexport function onErrorResumeNextStatic(array: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\nexport function onErrorResumeNextStatic(...nextSources: Array |\n Array> |\n ((...values: Array) => R)>): Observable {\n let source: ObservableInput|undefined = undefined;\n\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = nextSources[0] as ObservableInput[];\n }\n // TODO: resolve issue with passing no arguments.\n source = nextSources.shift()!;\n\n return from(source).lift(new OnErrorResumeNextOperator(nextSources));\n}\n\nclass OnErrorResumeNextOperator implements Operator {\n constructor(private nextSources: Array>) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));\n }\n}\n\nclass OnErrorResumeNextSubscriber extends SimpleOuterSubscriber {\n constructor(protected destination: Subscriber,\n private nextSources: Array>) {\n super(destination);\n }\n\n notifyError(): void {\n this.subscribeToNextSource();\n }\n\n notifyComplete(): void {\n this.subscribeToNextSource();\n }\n\n protected _error(err: any): void {\n this.subscribeToNextSource();\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.subscribeToNextSource();\n this.unsubscribe();\n }\n\n private subscribeToNextSource(): void {\n const next = this.nextSources.shift();\n if (!!next) {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(next, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n } else {\n this.destination.complete();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * Puts the current value and previous value together as\n * an array, and emits that.\n *\n * ![](pairwise.png)\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * ## Example\n * On every click (starting from the second), emit the relative distance to the previous click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pairwise, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const pairs = clicks.pipe(pairwise());\n * const distance = pairs.pipe(\n * map(pair => {\n * const x0 = pair[0].clientX;\n * const y0 = pair[0].clientY;\n * const x1 = pair[1].clientX;\n * const y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * }),\n * );\n * distance.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nexport function pairwise(): OperatorFunction {\n return (source: Observable) => source.lift(new PairwiseOperator());\n}\n\nclass PairwiseOperator implements Operator {\n call(subscriber: Subscriber<[T, T]>, source: any): any {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass PairwiseSubscriber extends Subscriber {\n private prev: T;\n private hasPrev: boolean = false;\n\n constructor(destination: Subscriber<[T, T]>) {\n super(destination);\n }\n\n _next(value: T): void {\n let pair: [T, T] | undefined;\n\n if (this.hasPrev) {\n pair = [this.prev, value];\n } else {\n this.hasPrev = true;\n }\n\n this.prev = value;\n\n if (pair) {\n this.destination.next(pair);\n }\n }\n}\n","import { not } from '../util/not';\nimport { filter } from './filter';\nimport { Observable } from '../Observable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition click events into those on DIV elements and those elsewhere\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { partition } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const parts = clicks.pipe(partition(ev => ev.target.tagName === 'DIV'));\n * const clicksOnDivs = parts[0];\n * const clicksElsewhere = parts[1];\n * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));\n * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x));\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n * @method partition\n * @owner Observable\n * @deprecated use `partition` static creation function instead\n */\nexport function partition(predicate: (value: T, index: number) => boolean,\n thisArg?: any): UnaryFunction, [Observable, Observable]> {\n return (source: Observable) => [\n filter(predicate, thisArg)(source),\n filter(not(predicate, thisArg) as any)(source)\n ] as [Observable, Observable];\n}\n","import { Observable } from '../Observable';\nimport { map } from './map';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pluck(k1: K1): OperatorFunction;\nexport function pluck(k1: K1, k2: K2): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6): OperatorFunction;\nexport function pluck(...properties: string[]): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Maps each source value (an object) to its specified nested property.\n *\n * Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted object.\n *\n * ![](pluck.png)\n *\n * Given a list of strings describing a path to an object property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * ## Example\n * Map every click to the tagName of the clicked target element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pluck } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const tagNames = clicks.pipe(pluck('target', 'tagName'));\n * tagNames.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param {...string} properties The nested properties to pluck from each source\n * value (an object).\n * @return {Observable} A new Observable of property values from the source values.\n * @method pluck\n * @owner Observable\n */\nexport function pluck(...properties: string[]): OperatorFunction {\n const length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return (source: Observable) => map(plucker(properties, length))(source as any);\n}\n\nfunction plucker(props: string[], length: number): (x: string) => any {\n const mapper = (x: string) => {\n let currentProp = x;\n for (let i = 0; i < length; i++) {\n const p = currentProp != null ? currentProp[props[i]] : undefined;\n if (p !== void 0) {\n currentProp = p;\n } else {\n return undefined;\n }\n }\n return currentProp;\n };\n\n return mapper;\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function publish(): UnaryFunction, ConnectableObservable>;\nexport function publish>(selector: (shared: Observable) => O): OperatorFunction>;\nexport function publish(selector: MonoTypeOperatorFunction): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called\n * before it begins emitting items to those Observers that have subscribed to it.\n *\n * Makes a cold Observable hot\n *\n * ![](publish.png)\n *\n * ## Examples\n * Make source$ hot by applying publish operator, then merge each inner observable into a single one\n * and subscribe.\n * ```ts\n * import { of, zip, interval, merge } from \"rxjs\";\n * import { map, publish, tap } from \"rxjs/operators\";\n *\n * const source$ = zip(interval(2000), of(1, 2, 3, 4, 5, 6, 7, 8, 9)).pipe(\n * map(values => values[1])\n * );\n *\n * source$\n * .pipe(\n * publish(multicasted$ =>\n * merge(\n * multicasted$.pipe(tap(x => console.log('Stream 1:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 2:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 3:', x))),\n * )\n * )\n * )\n * .subscribe();\n *\n * // Results every two seconds\n * // Stream 1: 1\n * // Stream 2: 1\n * // Stream 3: 1\n * // ...\n * // Stream 1: 9\n * // Stream 2: 9\n * // Stream 3: 9\n * ```\n *\n * @param {Function} [selector] - Optional selector function which can use the multicasted source sequence as many times\n * as needed, without causing multiple subscriptions to the source sequence.\n * Subscribers to the given source will receive all notifications of the source from the time of the subscription on.\n * @return A ConnectableObservable that upon connection causes the source Observable to emit items to its Observers.\n * @method publish\n * @owner Observable\n *\n *\n */\nexport function publish(selector?: OperatorFunction): MonoTypeOperatorFunction | OperatorFunction {\n return selector ?\n multicast(() => new Subject(), selector) :\n multicast(new Subject());\n}\n","import { Observable } from '../Observable';\nimport { BehaviorSubject } from '../BehaviorSubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * @param value\n * @return {ConnectableObservable}\n * @method publishBehavior\n * @owner Observable\n */\nexport function publishBehavior(value: T): UnaryFunction, ConnectableObservable> {\n return (source: Observable) => multicast(new BehaviorSubject(value))(source) as ConnectableObservable;\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Returns a connectable observable sequence that shares a single subscription to the\n * underlying sequence containing only the last notification.\n *\n * ![](publishLast.png)\n *\n * Similar to {@link publish}, but it waits until the source observable completes and stores\n * the last emitted value.\n * Similarly to {@link publishReplay} and {@link publishBehavior}, this keeps storing the last\n * value even if it has no more subscribers. If subsequent subscriptions happen, they will\n * immediately get that last stored value and complete.\n *\n * ## Example\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { publishLast, tap, take } from 'rxjs/operators';\n *\n * const connectable =\n * interval(1000)\n * .pipe(\n * tap(x => console.log(\"side effect\", x)),\n * take(3),\n * publishLast());\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. A\", x),\n * err => console.log(\"Sub. A Error\", err),\n * () => console.log( \"Sub. A Complete\"));\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. B\", x),\n * err => console.log(\"Sub. B Error\", err),\n * () => console.log( \"Sub. B Complete\"));\n *\n * connectable.connect();\n *\n * // Results:\n * // \"side effect 0\"\n * // \"side effect 1\"\n * // \"side effect 2\"\n * // \"Sub. A 2\"\n * // \"Sub. B 2\"\n * // \"Sub. A Complete\"\n * // \"Sub. B Complete\"\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link publish}\n * @see {@link publishReplay}\n * @see {@link publishBehavior}\n *\n * @return {ConnectableObservable} An observable sequence that contains the elements of a\n * sequence produced by multicasting the source sequence.\n * @method publishLast\n * @owner Observable\n */\n\nexport function publishLast(): UnaryFunction, ConnectableObservable> {\n return (source: Observable) => multicast(new AsyncSubject())(source);\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction, MonoTypeOperatorFunction, OperatorFunction, SchedulerLike, ObservableInput, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function publishReplay(bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\nexport function publishReplay>(bufferSize?: number, windowTime?: number, selector?: (shared: Observable) => O, scheduler?: SchedulerLike): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\nexport function publishReplay(bufferSize?: number,\n windowTime?: number,\n selectorOrScheduler?: SchedulerLike | OperatorFunction,\n scheduler?: SchedulerLike): UnaryFunction, ConnectableObservable> {\n\n if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {\n scheduler = selectorOrScheduler;\n }\n\n const selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;\n const subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n\n return (source: Observable) => multicast(() => subject, selector)(source) as ConnectableObservable;\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { MonoTypeOperatorFunction, OperatorFunction } from '../types';\nimport { race as raceStatic } from '../observable/race';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static race. */\nexport function race(observables: Array>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(observables: Array>): OperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(...observables: Array | Array>>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(...observables: Array | Array>>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit a next,\n * error or complete notification from the combination of this Observable and supplied Observables.\n * @param {...Observables} ...observables Sources used to race for which Observable emits first.\n * @return {Observable} An Observable that mirrors the output of the first Observable to emit an item.\n * @method race\n * @owner Observable\n * @deprecated Deprecated in favor of static {@link race}.\n */\nexport function race(...observables: (Observable | Observable[])[]): MonoTypeOperatorFunction {\n return function raceOperatorFunction(source: Observable) {\n // if the only argument is an array, it was most likely called with\n // `pair([obs1, obs2, ...])`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0] as Observable[];\n }\n\n return source.lift.call(raceStatic(source, ...(observables as Observable[])));\n };\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { empty } from '../observable/empty';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that will resubscribe to the source stream when the source stream completes, at most count times.\n *\n * Repeats all values emitted on the source. It's like {@link retry}, but for non error cases.\n *\n * ![](repeat.png)\n *\n * Similar to {@link retry}, this operator repeats the stream of items emitted by the source for non error cases.\n * Repeat can be useful for creating observables that are meant to have some repeated pattern or rhythm.\n *\n * Note: `repeat(0)` returns an empty observable and `repeat()` will repeat forever\n *\n * ## Example\n * Repeat a message stream\n * ```ts\n * import { of } from 'rxjs';\n * import { repeat, delay } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const example = source.pipe(repeat(3));\n * example.subscribe(x => console.log(x));\n *\n * // Results\n * // Repeat message\n * // Repeat message\n * // Repeat message\n * ```\n *\n * Repeat 3 values, 2 times\n * ```ts\n * import { interval } from 'rxjs';\n * import { repeat, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(take(3), repeat(2));\n * example.subscribe(x => console.log(x));\n *\n * // Results every second\n * // 0\n * // 1\n * // 2\n * // 0\n * // 1\n * // 2\n * ```\n *\n * @see {@link repeatWhen}\n * @see {@link retry}\n *\n * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield\n * an empty Observable.\n * @return {Observable} An Observable that will resubscribe to the source stream when the source stream completes\n * , at most count times.\n * @method repeat\n * @owner Observable\n */\nexport function repeat(count: number = -1): MonoTypeOperatorFunction {\n return (source: Observable) => {\n if (count === 0) {\n return empty();\n } else if (count < 0) {\n return source.lift(new RepeatOperator(-1, source));\n } else {\n return source.lift(new RepeatOperator(count - 1, source));\n }\n };\n}\n\nclass RepeatOperator implements Operator {\n constructor(private count: number,\n private source: Observable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RepeatSubscriber extends Subscriber {\n constructor(destination: Subscriber,\n private count: number,\n private source: Observable) {\n super(destination);\n }\n complete() {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.complete();\n } else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source\n * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable\n * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise\n * this method will resubscribe to the source Observable.\n *\n * ![](repeatWhen.png)\n *\n * ## Example\n * Repeat a message stream on click\n * ```ts\n * import { of, fromEvent } from 'rxjs';\n * import { repeatWhen } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const documentClick$ = fromEvent(document, 'click');\n *\n * source.pipe(repeatWhen(() => documentClick$)\n * ).subscribe(data => console.log(data))\n * ```\n * @see {@link repeat}\n * @see {@link retry}\n * @see {@link retryWhen}\n *\n * @param {function(notifications: Observable): Observable} notifier - Receives an Observable of notifications with\n * which a user can `complete` or `error`, aborting the repetition.\n * @return {Observable} The source Observable modified with repeat logic.\n * @method repeatWhen\n * @owner Observable\n */\nexport function repeatWhen(notifier: (notifications: Observable) => Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RepeatWhenOperator(notifier));\n}\n\nclass RepeatWhenOperator implements Operator {\n constructor(protected notifier: (notifications: Observable) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RepeatWhenSubscriber extends SimpleOuterSubscriber {\n\n private notifications?: Subject;\n private retries?: Observable;\n private retriesSubscription?: Subscription;\n private sourceIsBeingSubscribedTo: boolean = true;\n\n constructor(destination: Subscriber,\n private notifier: (notifications: Observable) => Observable,\n private source: Observable) {\n super(destination);\n }\n\n notifyNext(): void {\n this.sourceIsBeingSubscribedTo = true;\n this.source.subscribe(this);\n }\n\n notifyComplete(): void {\n if (this.sourceIsBeingSubscribedTo === false) {\n return super.complete();\n }\n }\n\n complete() {\n this.sourceIsBeingSubscribedTo = false;\n\n if (!this.isStopped) {\n if (!this.retries) {\n this.subscribeToRetries();\n }\n if (!this.retriesSubscription || this.retriesSubscription.closed) {\n return super.complete();\n }\n\n this._unsubscribeAndRecycle();\n this.notifications!.next(undefined);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { notifications, retriesSubscription } = this;\n if (notifications) {\n notifications.unsubscribe();\n this.notifications = undefined;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = undefined;\n }\n this.retries = undefined;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _unsubscribe } = this;\n\n this._unsubscribe = null!;\n super._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n\n return this;\n }\n\n private subscribeToRetries() {\n this.notifications = new Subject();\n let retries;\n try {\n const { notifier } = this;\n retries = notifier(this.notifications);\n } catch (e) {\n return super.complete();\n }\n this.retries = retries;\n this.retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given\n * as a number parameter) rather than propagating the `error` call.\n *\n * ![](retry.png)\n *\n * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted\n * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second\n * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications\n * would be: [1, 2, 1, 2, 3, 4, 5, `complete`].\n *\n * ## Example\n * ```ts\n * import { interval, of, throwError } from 'rxjs';\n * import { mergeMap, retry } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * mergeMap(val => {\n * if(val > 5){\n * return throwError('Error!');\n * }\n * return of(val);\n * }),\n * //retry 2 times on error\n * retry(2)\n * );\n *\n * const subscribe = example.subscribe({\n * next: val => console.log(val),\n * error: val => console.log(`${val}: Retried 2 times then quit!`)\n * });\n *\n * // Output:\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // \"Error!: Retried 2 times then quit!\"\n * ```\n *\n * @param {number} count - Number of retry attempts before failing.\n * @return {Observable} The source Observable modified with the retry logic.\n * @method retry\n * @owner Observable\n */\nexport function retry(count: number = -1): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RetryOperator(count, source));\n}\n\nclass RetryOperator implements Operator {\n constructor(private count: number,\n private source: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RetrySubscriber extends Subscriber {\n constructor(destination: Subscriber,\n private count: number,\n private source: Observable) {\n super(destination);\n }\n error(err: any) {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.error(err);\n } else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will emit the Throwable that caused the error to the Observable returned from `notifier`.\n * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child\n * subscription. Otherwise this method will resubscribe to the source Observable.\n *\n * ![](retryWhen.png)\n *\n * @param {function(errors: Observable): Observable} notifier - Receives an Observable of notifications with which a\n * user can `complete` or `error`, aborting the retry.\n * @return {Observable} The source Observable modified with retry logic.\n * @method retryWhen\n * @owner Observable\n */\nexport function retryWhen(notifier: (errors: Observable) => Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RetryWhenOperator(notifier, source));\n}\n\nclass RetryWhenOperator implements Operator {\n constructor(protected notifier: (errors: Observable) => Observable,\n protected source: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RetryWhenSubscriber extends SimpleOuterSubscriber {\n\n private errors?: Subject;\n private retries?: Observable;\n private retriesSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private notifier: (errors: Observable) => Observable,\n private source: Observable) {\n super(destination);\n }\n\n error(err: any) {\n if (!this.isStopped) {\n\n let errors = this.errors;\n let retries: any = this.retries;\n let retriesSubscription = this.retriesSubscription;\n\n if (!retries) {\n errors = new Subject();\n try {\n const { notifier } = this;\n retries = notifier(errors);\n } catch (e) {\n return super.error(e);\n }\n retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this));\n } else {\n this.errors = undefined;\n this.retriesSubscription = undefined;\n }\n\n this._unsubscribeAndRecycle();\n\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n\n errors!.next(err);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { errors, retriesSubscription } = this;\n if (errors) {\n errors.unsubscribe();\n this.errors = undefined;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = undefined;\n }\n this.retries = undefined;\n }\n\n notifyNext(): void {\n const { _unsubscribe } = this;\n\n this._unsubscribe = null!;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n\n this.source.subscribe(this);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Emits the most recently emitted value from the source Observable whenever\n * another Observable, the `notifier`, emits.\n *\n * It's like {@link sampleTime}, but samples whenever\n * the `notifier` Observable emits something.\n *\n * ![](sample.png)\n *\n * Whenever the `notifier` Observable emits a value or completes, `sample`\n * looks at the source Observable and emits whichever value it has most recently\n * emitted since the previous sampling, unless the source has not emitted\n * anything since the previous sampling. The `notifier` is subscribed to as soon\n * as the output Observable is subscribed.\n *\n * ## Example\n * On every click, sample the most recent \"seconds\" timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { sample } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = seconds.pipe(sample(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {Observable} notifier The Observable to use for sampling the\n * source Observable.\n * @return {Observable} An Observable that emits the results of sampling the\n * values emitted by the source Observable whenever the notifier Observable\n * emits value or completes.\n * @method sample\n * @owner Observable\n */\nexport function sample(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SampleOperator(notifier));\n}\n\nclass SampleOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n const sampleSubscriber = new SampleSubscriber(subscriber);\n const subscription = source.subscribe(sampleSubscriber);\n subscription.add(innerSubscribe(this.notifier, new SimpleInnerSubscriber(sampleSubscriber)));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SampleSubscriber extends SimpleOuterSubscriber {\n private value?: T;\n private hasValue: boolean = false;\n\n protected _next(value: T) {\n this.value = value;\n this.hasValue = true;\n }\n\n notifyNext(): void {\n this.emitValue();\n }\n\n notifyComplete(): void {\n this.emitValue();\n }\n\n emitValue() {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next!(this.value!);\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits the most recently emitted value from the source Observable within\n * periodic time intervals.\n *\n * Samples the source Observable at periodic time\n * intervals, emitting what it samples.\n *\n * ![](sampleTime.png)\n *\n * `sampleTime` periodically looks at the source Observable and emits whichever\n * value it has most recently emitted since the previous sampling, unless the\n * source has not emitted anything since the previous sampling. The sampling\n * happens periodically in time every `period` milliseconds (or the time unit\n * defined by the optional `scheduler` argument). The sampling starts as soon as\n * the output Observable is subscribed.\n *\n * ## Example\n * Every second, emit the most recent click at most once\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { sampleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(sampleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {number} period The sampling period expressed in milliseconds or the\n * time unit determined internally by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the sampling.\n * @return {Observable} An Observable that emits the results of sampling the\n * values emitted by the source Observable at the specified time interval.\n * @method sampleTime\n * @owner Observable\n */\nexport function sampleTime(period: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SampleTimeOperator(period, scheduler));\n}\n\nclass SampleTimeOperator implements Operator {\n constructor(private period: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SampleTimeSubscriber extends Subscriber {\n lastValue: T;\n hasValue: boolean = false;\n\n constructor(destination: Subscriber,\n private period: number,\n private scheduler: SchedulerLike) {\n super(destination);\n this.add(scheduler.schedule(dispatchNotification, period, { subscriber: this, period }));\n }\n\n protected _next(value: T) {\n this.lastValue = value;\n this.hasValue = true;\n }\n\n notifyNext() {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.lastValue);\n }\n }\n}\n\nfunction dispatchNotification(this: SchedulerAction, state: any) {\n let { subscriber, period } = state;\n subscriber.notifyNext();\n this.schedule(state, period);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\nimport { Observer, OperatorFunction } from '../types';\n\n/**\n * Compares all values of two observables in sequence using an optional comparator function\n * and returns an observable of a single boolean value representing whether or not the two sequences\n * are equal.\n *\n * Checks to see of all values emitted by both observables are equal, in order.\n *\n * ![](sequenceEqual.png)\n *\n * `sequenceEqual` subscribes to two observables and buffers incoming values from each observable. Whenever either\n * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom\n * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the\n * observables completes, the operator will wait for the other observable to complete; If the other\n * observable emits before completing, the returned observable will emit `false` and complete. If one observable never\n * completes or emits after the other complets, the returned observable will never complete.\n *\n * ## Example\n * figure out if the Konami code matches\n * ```ts\n * import { from, fromEvent } from 'rxjs';\n * import { sequenceEqual, bufferCount, mergeMap, map } from 'rxjs/operators';\n *\n * const codes = from([\n * 'ArrowUp',\n * 'ArrowUp',\n * 'ArrowDown',\n * 'ArrowDown',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'KeyB',\n * 'KeyA',\n * 'Enter', // no start key, clearly.\n * ]);\n *\n * const keys = fromEvent(document, 'keyup').pipe(map(e => e.code));\n * const matches = keys.pipe(\n * bufferCount(11, 1),\n * mergeMap(\n * last11 => from(last11).pipe(sequenceEqual(codes)),\n * ),\n * );\n * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n * @see {@link withLatestFrom}\n *\n * @param {Observable} compareTo The observable sequence to compare the source sequence to.\n * @param {function} [comparator] An optional function to compare each value pair\n * @return {Observable} An Observable of a single boolean value representing whether or not\n * the values emitted by both observables were equal in sequence.\n * @method sequenceEqual\n * @owner Observable\n */\nexport function sequenceEqual(compareTo: Observable,\n comparator?: (a: T, b: T) => boolean): OperatorFunction {\n return (source: Observable) => source.lift(new SequenceEqualOperator(compareTo, comparator));\n}\n\nexport class SequenceEqualOperator implements Operator {\n constructor(private compareTo: Observable,\n private comparator: (a: T, b: T) => boolean) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SequenceEqualSubscriber extends Subscriber {\n private _a: T[] = [];\n private _b: T[] = [];\n private _oneComplete = false;\n\n constructor(destination: Observer,\n private compareTo: Observable,\n private comparator: (a: T, b: T) => boolean) {\n super(destination);\n (this.destination as Subscription).add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, this)));\n }\n\n protected _next(value: T): void {\n if (this._oneComplete && this._b.length === 0) {\n this.emit(false);\n } else {\n this._a.push(value);\n this.checkValues();\n }\n }\n\n public _complete(): void {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n } else {\n this._oneComplete = true;\n }\n this.unsubscribe();\n }\n\n checkValues() {\n const { _a, _b, comparator } = this;\n while (_a.length > 0 && _b.length > 0) {\n let a = _a.shift();\n let b = _b.shift();\n let areEqual = false;\n try {\n areEqual = comparator ? comparator(a, b) : a === b;\n } catch (e) {\n this.destination.error(e);\n }\n if (!areEqual) {\n this.emit(false);\n }\n }\n }\n\n emit(value: boolean) {\n const { destination } = this;\n destination.next(value);\n destination.complete();\n }\n\n nextB(value: T) {\n if (this._oneComplete && this._a.length === 0) {\n this.emit(false);\n } else {\n this._b.push(value);\n this.checkValues();\n }\n }\n\n completeB() {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n } else {\n this._oneComplete = true;\n }\n }\n}\n\nclass SequenceEqualCompareToSubscriber extends Subscriber {\n constructor(destination: Observer, private parent: SequenceEqualSubscriber) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.parent.nextB(value);\n }\n\n protected _error(err: any): void {\n this.parent.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.completeB();\n this.unsubscribe();\n }\n}\n","import { Observable } from '../Observable';\nimport { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\n\nimport { MonoTypeOperatorFunction } from '../types';\n\nfunction shareSubjectFactory() {\n return new Subject();\n}\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for `multicast(() => new Subject()), refCount()`.\n *\n * ![](share.png)\n *\n * @return {Observable} An Observable that upon connection causes the source Observable to emit items to its Observers.\n * @method share\n * @owner Observable\n */\nexport function share(): MonoTypeOperatorFunction {\n return (source: Observable) => refCount()(multicast(shareSubjectFactory)(source)) as Observable;\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\nexport interface ShareReplayConfig {\n bufferSize?: number;\n windowTime?: number;\n refCount: boolean;\n scheduler?: SchedulerLike;\n}\n\n/**\n * Share source and replay specified number of emissions on subscription.\n *\n * This operator is a specialization of `replay` that connects to a source observable\n * and multicasts through a `ReplaySubject` constructed with the specified arguments.\n * A successfully completed source will stay cached in the `shareReplayed observable` forever,\n * but an errored source can be retried.\n *\n * ## Why use shareReplay?\n * You generally want to use `shareReplay` when you have side-effects or taxing computations\n * that you do not wish to be executed amongst multiple subscribers.\n * It may also be valuable in situations where you know you will have late subscribers to\n * a stream that need access to previously emitted values.\n * This ability to replay values on subscription is what differentiates {@link share} and `shareReplay`.\n *\n * ![](shareReplay.png)\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { shareReplay, take } from 'rxjs/operators';\n *\n * const obs$ = interval(1000);\n * const shared$ = obs$.pipe(\n * take(4),\n * shareReplay(3)\n * );\n * shared$.subscribe(x => console.log('source A: ', x));\n * shared$.subscribe(y => console.log('source B: ', y));\n *\n * ```\n *\n * @see {@link publish}\n * @see {@link share}\n * @see {@link publishReplay}\n *\n * @param {Number} [bufferSize=Number.POSITIVE_INFINITY] Maximum element count of the replay buffer.\n * @param {Number} [windowTime=Number.POSITIVE_INFINITY] Maximum time length of the replay buffer in milliseconds.\n * @param {Scheduler} [scheduler] Scheduler where connected observers within the selector function\n * will be invoked on.\n * @return {Observable} An observable sequence that contains the elements of a sequence produced\n * by multicasting the source sequence within a selector function.\n * @method shareReplay\n * @owner Observable\n */\nexport function shareReplay(\n config: ShareReplayConfig\n): MonoTypeOperatorFunction;\nexport function shareReplay(\n bufferSize?: number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction;\nexport function shareReplay(\n configOrBufferSize?: ShareReplayConfig | number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction {\n let config: ShareReplayConfig;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize as ShareReplayConfig;\n } else {\n config = {\n bufferSize: configOrBufferSize as number | undefined,\n windowTime,\n refCount: false,\n scheduler,\n };\n }\n return (source: Observable) => source.lift(shareReplayOperator(config));\n}\n\nfunction shareReplayOperator({\n bufferSize = Number.POSITIVE_INFINITY,\n windowTime = Number.POSITIVE_INFINITY,\n refCount: useRefCount,\n scheduler,\n}: ShareReplayConfig) {\n let subject: ReplaySubject | undefined;\n let refCount = 0;\n let subscription: Subscription | undefined;\n let hasError = false;\n let isComplete = false;\n\n return function shareReplayOperation(\n this: Subscriber,\n source: Observable\n ) {\n refCount++;\n let innerSub: Subscription;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n innerSub = subject.subscribe(this);\n subscription = source.subscribe({\n next(value) {\n subject.next(value);\n },\n error(err) {\n hasError = true;\n subject.error(err);\n },\n complete() {\n isComplete = true;\n subscription = undefined;\n subject.complete();\n },\n });\n\n // Here we need to check to see if the source synchronously completed. Although\n // we're setting `subscription = undefined` in the completion handler, if the source\n // is synchronous, that will happen *before* subscription is set by the return of\n // the `subscribe` call.\n if (isComplete) {\n subscription = undefined;\n }\n } else {\n innerSub = subject.subscribe(this);\n }\n\n this.add(() => {\n refCount--;\n innerSub.unsubscribe();\n innerSub = undefined;\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\n\nimport { Observer, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that emits the single item emitted by the source Observable that matches a specified\n * predicate, if that Observable emits one such item. If the source Observable emits more than one such item or no\n * items, notify of an IllegalArgumentException or NoSuchElementException respectively. If the source Observable\n * emits items but none match the specified predicate then `undefined` is emitted.\n *\n * Like {@link first}, but emit with error notification if there is more than one value.\n * ![](single.png)\n *\n * ## Example\n * emits 'error'\n * ```ts\n * import { range } from 'rxjs';\n * import { single } from 'rxjs/operators';\n *\n * const numbers = range(1,5).pipe(single());\n * numbers.subscribe(x => console.log('never get called'), e => console.log('error'));\n * // result\n * // 'error'\n * ```\n *\n * emits 'undefined'\n * ```ts\n * import { range } from 'rxjs';\n * import { single } from 'rxjs/operators';\n *\n * const numbers = range(1,5).pipe(single(x => x === 10));\n * numbers.subscribe(x => console.log(x));\n * // result\n * // 'undefined'\n * ```\n *\n * @see {@link first}\n * @see {@link find}\n * @see {@link findIndex}\n * @see {@link elementAt}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {Function} predicate - A predicate function to evaluate items emitted by the source Observable.\n * @return {Observable} An Observable that emits the single item emitted by the source Observable that matches\n * the predicate or `undefined` when no items match.\n *\n * @method single\n * @owner Observable\n */\nexport function single(predicate?: (value: T, index: number, source: Observable) => boolean): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SingleOperator(predicate, source));\n}\n\nclass SingleOperator implements Operator {\n constructor(private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SingleSubscriber extends Subscriber {\n private seenValue: boolean = false;\n private singleValue: T;\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n super(destination);\n }\n\n private applySingleValue(value: T): void {\n if (this.seenValue) {\n this.destination.error('Sequence contains more than one element');\n } else {\n this.seenValue = true;\n this.singleValue = value;\n }\n }\n\n protected _next(value: T): void {\n const index = this.index++;\n\n if (this.predicate) {\n this.tryNext(value, index);\n } else {\n this.applySingleValue(value);\n }\n }\n\n private tryNext(value: T, index: number): void {\n try {\n if (this.predicate(value, index, this.source)) {\n this.applySingleValue(value);\n }\n } catch (err) {\n this.destination.error(err);\n }\n }\n\n protected _complete(): void {\n const destination = this.destination;\n\n if (this.index > 0) {\n destination.next(this.seenValue ? this.singleValue : undefined);\n destination.complete();\n } else {\n destination.error(new EmptyError);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * ![](skip.png)\n *\n * @param {Number} count - The number of times, items emitted by source Observable should be skipped.\n * @return {Observable} An Observable that skips values emitted by the source Observable.\n *\n * @method skip\n * @owner Observable\n */\nexport function skip(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipOperator(count));\n}\n\nclass SkipOperator implements Operator {\n constructor(private total: number) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipSubscriber extends Subscriber {\n count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(x: T) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Skip the last `count` values emitted by the source Observable.\n *\n * ![](skipLast.png)\n *\n * `skipLast` returns an Observable that accumulates a queue with a length\n * enough to store the first `count` values. As more values are received,\n * values are taken from the front of the queue and produced on the result\n * sequence. This causes values to be delayed.\n *\n * ## Example\n * Skip the last 2 values of an Observable with many values\n * ```ts\n * import { range } from 'rxjs';\n * import { skipLast } from 'rxjs/operators';\n *\n * const many = range(1, 5);\n * const skipLastTwo = many.pipe(skipLast(2));\n * skipLastTwo.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 1 2 3\n * ```\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipWhile}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `skipLast(i)`, it throws\n * ArgumentOutOrRangeError if `i < 0`.\n *\n * @param {number} count Number of elements to skip from the end of the source Observable.\n * @returns {Observable} An Observable that skips the last count values\n * emitted by the source Observable.\n * @method skipLast\n * @owner Observable\n */\nexport function skipLast(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipLastOperator(count));\n}\n\nclass SkipLastOperator implements Operator {\n constructor(private _skipCount: number) {\n if (this._skipCount < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n if (this._skipCount === 0) {\n // If we don't want to skip any values then just subscribe\n // to Subscriber without any further logic.\n return source.subscribe(new Subscriber(subscriber));\n } else {\n return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipLastSubscriber extends Subscriber {\n private _ring: T[];\n private _count: number = 0;\n\n constructor(destination: Subscriber, private _skipCount: number) {\n super(destination);\n this._ring = new Array(_skipCount);\n }\n\n protected _next(value: T): void {\n const skipCount = this._skipCount;\n const count = this._count++;\n\n if (count < skipCount) {\n this._ring[count] = value;\n } else {\n const currentIndex = count % skipCount;\n const ring = this._ring;\n const oldValue = ring[currentIndex];\n\n ring[currentIndex] = value;\n this.destination.next(oldValue);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic, ObservableInput } from '../types';\nimport { Subscription } from '../Subscription';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/**\n * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item.\n *\n * The `skipUntil` operator causes the observable stream to skip the emission of values ​​until the passed in observable emits the first value.\n * This can be particularly useful in combination with user interactions, responses of http requests or waiting for specific times to pass by.\n *\n * ![](skipUntil.png)\n *\n * Internally the `skipUntil` operator subscribes to the passed in observable (in the following called *notifier*) in order to recognize the emission\n * of its first value. When this happens, the operator unsubscribes from the *notifier* and starts emitting the values of the *source*\n * observable. It will never let the *source* observable emit any values if the *notifier* completes or throws an error without emitting\n * a value before.\n *\n * ## Example\n *\n * In the following example, all emitted values ​​of the interval observable are skipped until the user clicks anywhere within the page.\n *\n * ```ts\n * import { interval, fromEvent } from 'rxjs';\n * import { skipUntil } from 'rxjs/operators';\n *\n * const intervalObservable = interval(1000);\n * const click = fromEvent(document, 'click');\n *\n * const emitAfterClick = intervalObservable.pipe(\n * skipUntil(click)\n * );\n * // clicked at 4.6s. output: 5...6...7...8........ or\n * // clicked at 7.3s. output: 8...9...10..11.......\n * const subscribe = emitAfterClick.subscribe(value => console.log(value));\n * ```\n *\n * @param {Observable} notifier - The second Observable that has to emit an item before the source Observable's elements begin to\n * be mirrored by the resulting Observable.\n * @return {Observable} An Observable that skips items from the source Observable until the second Observable emits\n * an item, then emits the remaining items.\n * @method skipUntil\n * @owner Observable\n */\nexport function skipUntil(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipUntilOperator(notifier));\n}\n\nclass SkipUntilOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(destination: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipUntilSubscriber(destination, this.notifier));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipUntilSubscriber extends SimpleOuterSubscriber {\n\n private hasValue: boolean = false;\n private innerSubscription?: Subscription;\n\n constructor(destination: Subscriber, notifier: ObservableInput) {\n super(destination);\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n this.innerSubscription = innerSubscriber;\n const innerSubscription = innerSubscribe(notifier, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n this.innerSubscription = innerSubscription;\n }\n }\n\n protected _next(value: T) {\n if (this.hasValue) {\n super._next(value);\n }\n }\n\n notifyNext(): void {\n this.hasValue = true;\n if (this.innerSubscription) {\n this.innerSubscription.unsubscribe();\n }\n }\n\n notifyComplete() {\n /* do nothing */\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds\n * true, but emits all further source items as soon as the condition becomes false.\n *\n * ![](skipWhile.png)\n *\n * @param {Function} predicate - A function to test each item emitted from the source Observable.\n * @return {Observable} An Observable that begins emitting items emitted by the source Observable when the\n * specified predicate becomes false.\n * @method skipWhile\n * @owner Observable\n */\nexport function skipWhile(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipWhileOperator(predicate));\n}\n\nclass SkipWhileOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipWhileSubscriber extends Subscriber {\n private skipping: boolean = true;\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n\n if (!this.skipping) {\n destination.next(value);\n }\n }\n\n private tryCallPredicate(value: T): void {\n try {\n const result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n } catch (err) {\n this.destination.error(err);\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nimport { MonoTypeOperatorFunction, OperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I, scheduler: SchedulerLike): OperatorFunction;\n\nexport function startWith(v1: D): OperatorFunction;\nexport function startWith(v1: D, v2: E): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I): OperatorFunction;\nexport function startWith(...array: D[]): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(...array: Array): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * First emits its arguments in order, and then any\n * emissions from the source.\n *\n * ![](startWith.png)\n *\n * ## Examples\n *\n * Start the chain of emissions with `\"first\"`, `\"second\"`\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * of(\"from source\")\n * .pipe(startWith(\"first\", \"second\"))\n * .subscribe(x => console.log(x));\n *\n * // results:\n * // \"first\"\n * // \"second\"\n * // \"from source\"\n * ```\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {SchedulerLike} [scheduler] - A {@link SchedulerLike} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nexport function startWith(...array: Array): OperatorFunction {\n const scheduler = array[array.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n // deprecated path\n array.pop();\n return (source: Observable) => concat(array as T[], source, scheduler);\n } else {\n return (source: Observable) => concat(array as T[], source);\n }\n}\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { asap } from '../scheduler/asap';\nimport { isNumeric } from '../util/isNumeric';\n\nexport interface DispatchArg {\n source: Observable;\n subscriber: Subscriber;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class SubscribeOnObservable extends Observable {\n /** @nocollapse */\n static create(source: Observable, delay: number = 0, scheduler: SchedulerLike = asap): Observable {\n return new SubscribeOnObservable(source, delay, scheduler);\n }\n\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: DispatchArg): Subscription {\n const { source, subscriber } = arg;\n return this.add(source.subscribe(subscriber));\n }\n\n constructor(public source: Observable,\n private delayTime: number = 0,\n private scheduler: SchedulerLike = asap) {\n super();\n if (!isNumeric(delayTime) || delayTime < 0) {\n this.delayTime = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n this.scheduler = asap;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const delay = this.delayTime;\n const source = this.source;\n const scheduler = this.scheduler;\n\n return scheduler.schedule>(SubscribeOnObservable.dispatch, delay, {\n source, subscriber\n });\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { SubscribeOnObservable } from '../observable/SubscribeOnObservable';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n * Given the following code:\n * ```javascript\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3, 4);\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n * This will result in the output of `1 2 3 4 5 6 7 8 9`.\n *\n * But if we instead us the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emited by Observable `a`:\n * ```javascript\n * import { of, merge, asyncScheduler } from 'rxjs';\n * import { subscribeOn } from 'rxjs/operators';\n *\n * const a = of(1, 2, 3, 4).pipe(subscribeOn(asyncScheduler));\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * The output will instead be `5 6 7 8 9 1 2 3 4`.\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param {SchedulerLike} scheduler - The {@link SchedulerLike} to perform subscription actions on.\n * @return {Observable} The source Observable modified so that its subscriptions happen on the specified {@link SchedulerLike}.\n .\n * @method subscribeOn\n * @owner Observable\n */\nexport function subscribeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function subscribeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new SubscribeOnOperator(scheduler, delay));\n };\n}\n\nclass SubscribeOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike,\n private delay: number) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return new SubscribeOnObservable(\n source, this.delay, this.scheduler\n ).subscribe(subscriber);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function switchMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported, use inner map instead */\nexport function switchMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported, use inner map instead */\nexport function switchMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables.\n *\n * ![](switchMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n * Generate new Observable according to source Observable values\n * ```typescript\n * import { of } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const switched = of(1, 2, 3).pipe(switchMap((x: number) => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // ... and so on\n * ```\n *\n * Rerun an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap((ev) => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n return (source: Observable) => source.pipe(\n switchMap((a, i) => from(project(a, i)).pipe(\n map((b, ii) => resultSelector(a, b, i, ii))\n ))\n );\n }\n return (source: Observable) => source.lift(new SwitchMapOperator(project));\n}\n\nclass SwitchMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SwitchMapSubscriber extends SimpleOuterSubscriber {\n private index = 0;\n private innerSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput) {\n super(destination);\n }\n\n protected _next(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (error) {\n this.destination.error!(error);\n return;\n }\n this._innerSub(result);\n }\n\n private _innerSub(result: ObservableInput) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n\n protected _complete(): void {\n const {innerSubscription} = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n\n protected _unsubscribe() {\n this.innerSubscription = undefined;\n }\n\n notifyComplete(): void {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n super._complete();\n }\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n}\n","import {OperatorFunction, ObservableInput} from '../types';\nimport { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\n\nexport function switchAll(): OperatorFunction, T>;\nexport function switchAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable\n * producing values only from the most recent observable sequence\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](switchAll.png)\n *\n * `switchAll` subscribes to a source that is an observable of observables, also known as a\n * \"higher-order observable\" (or `Observable>`). It subscribes to the most recently\n * provided \"inner observable\" emitted by the source, unsubscribing from any previously subscribed\n * to inner observable, such that only the most recent inner observable may be subscribed to at\n * any point in time. The resulting observable returned by `switchAll` will only complete if the\n * source observable completes, *and* any currently subscribed to inner observable also has completed,\n * if there are any.\n *\n * ## Examples\n * Spawn a new interval observable for each click event, but for every new\n * click, cancel the previous interval and subscribe to the new one.\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchAll, map, tap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click').pipe(tap(() => console.log('click')));\n * const source = clicks.pipe(map((ev) => interval(1000)));\n *\n * source.pipe(\n * switchAll()\n * ).subscribe(x => console.log(x));\n *\n * // Output\n * // click\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...\n * // click\n * // 1\n * // 2\n * // 3\n * // ...\n * // click\n * // ...\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link switchMap}\n * @see {@link switchMapTo}\n * @see {@link mergeAll}\n */\n\nexport function switchAll(): OperatorFunction, T> {\n return switchMap(identity);\n}\n","import { ObservableInput, OperatorFunction } from '../types';\nimport { switchMap } from './switchMap';\n\n/* tslint:disable:max-line-length */\nexport function switchMapTo(observable: ObservableInput): OperatorFunction;\n/** @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map */\nexport function switchMapTo(observable: ObservableInput, resultSelector: undefined): OperatorFunction;\n/** @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map */\nexport function switchMapTo(observable: ObservableInput, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is flattened multiple\n * times with {@link switchMap} in the output Observable.\n *\n * It's like {@link switchMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](switchMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. The output Observables\n * emits values only from the most recently emitted instance of\n * `innerObservable`.\n *\n * ## Example\n * Rerun an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable` (and optionally transformed through the deprecated `resultSelector`)\n * every time a value is emitted on the source Observable, and taking only the values\n * from the most recently projected inner Observable.\n * @method switchMapTo\n * @owner Observable\n */\nexport function switchMapTo(\n innerObservable: ObservableInput,\n resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R\n): OperatorFunction {\n return resultSelector ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.\n *\n * ![](takeUntil.png)\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n * Tick every second until the first click happens\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { takeUntil } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return {Observable} An Observable that emits the values from the source\n * Observable until such time as `notifier` emits its first value.\n * @method takeUntil\n * @owner Observable\n */\nexport function takeUntil(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new TakeUntilOperator(notifier));\n}\n\nclass TakeUntilOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n seenValue = false;\n\n constructor(destination: Subscriber, ) {\n super(destination);\n }\n\n notifyNext(): void {\n this.seenValue = true;\n this.complete();\n }\n\n notifyComplete(): void {\n // noop\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\nexport function takeWhile(predicate: (value: T, index: number) => value is S): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => value is S, inclusive: false): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => boolean, inclusive?: boolean): MonoTypeOperatorFunction;\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.\n *\n * ![](takeWhile.png)\n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * ## Example\n * Emit click events only while the clientX property is greater than 200\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { takeWhile } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(takeWhile(ev => ev.clientX > 200));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates a value emitted by the source Observable and returns a boolean.\n * Also takes the (zero-based) index as the second argument.\n * @param {boolean} inclusive When set to `true` the value that caused\n * `predicate` to return `false` will also be emitted.\n * @return {Observable} An Observable that emits the values from the source\n * Observable so long as each value satisfies the condition defined by the\n * `predicate`, then completes.\n * @method takeWhile\n * @owner Observable\n */\nexport function takeWhile(\n predicate: (value: T, index: number) => boolean,\n inclusive = false): MonoTypeOperatorFunction {\n return (source: Observable) =>\n source.lift(new TakeWhileOperator(predicate, inclusive));\n}\n\nclass TakeWhileOperator implements Operator {\n constructor(\n private predicate: (value: T, index: number) => boolean,\n private inclusive: boolean) {}\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeWhileSubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(\n destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private inclusive: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const destination = this.destination;\n let result: boolean;\n try {\n result = this.predicate(value, this.index++);\n } catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n }\n\n private nextOrComplete(value: T, predicateResult: boolean): void {\n const destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n } else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, PartialObserver, TeardownLogic } from '../types';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use an observer instead of a complete callback */\nexport function tap(next: null | undefined, error: null | undefined, complete: () => void): MonoTypeOperatorFunction;\n/** @deprecated Use an observer instead of an error callback */\nexport function tap(next: null | undefined, error: (error: any) => void, complete?: () => void): MonoTypeOperatorFunction;\n/** @deprecated Use an observer instead of a complete callback */\nexport function tap(next: (value: T) => void, error: null | undefined, complete: () => void): MonoTypeOperatorFunction;\nexport function tap(next?: (x: T) => void, error?: (e: any) => void, complete?: () => void): MonoTypeOperatorFunction;\nexport function tap(observer: PartialObserver): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Perform a side effect for every emission on the source Observable, but return\n * an Observable that is identical to the source.\n *\n * Intercepts each emission on the source and runs a\n * function, but returns an output which is identical to the source as long as errors don't occur.\n *\n * ![](do.png)\n *\n * Returns a mirrored Observable of the source Observable, but modified so that\n * the provided Observer is called to perform a side effect for every value,\n * error, and completion emitted by the source. Any errors that are thrown in\n * the aforementioned Observer or handlers are safely sent down the error path\n * of the output Observable.\n *\n * This operator is useful for debugging your Observables for the correct values\n * or performing other side effects.\n *\n * Note: this is different to a `subscribe` on the Observable. If the Observable\n * returned by `tap` is not subscribed, the side effects specified by the\n * Observer will never happen. `tap` therefore simply spies on existing\n * execution, it does not trigger an execution to happen like `subscribe` does.\n *\n * ## Example\n * Map every click to the clientX position of that click, while also logging the click event\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { tap, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(\n * tap(ev => console.log(ev)),\n * map(ev => ev.clientX),\n * );\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n * @see {@link Observable#subscribe}\n *\n * @param {Observer|function} [nextOrObserver] A normal Observer object or a\n * callback for `next`.\n * @param {function} [error] Callback for errors in the source.\n * @param {function} [complete] Callback for the completion of the source.\n * @return {Observable} An Observable identical to the source, but runs the\n * specified Observer or callback(s) for each item.\n * @name tap\n */\nexport function tap(nextOrObserver?: PartialObserver | ((x: T) => void),\n error?: (e: any) => void,\n complete?: () => void): MonoTypeOperatorFunction {\n return function tapOperatorFunction(source: Observable): Observable {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\n\nclass DoOperator implements Operator {\n constructor(private nextOrObserver?: PartialObserver | ((x: T) => void),\n private error?: (e: any) => void,\n private complete?: () => void) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\n\nclass TapSubscriber extends Subscriber {\n private _context: any;\n\n private _tapNext: ((value: T) => void) = noop;\n\n private _tapError: ((err: any) => void) = noop;\n\n private _tapComplete: (() => void) = noop;\n\n constructor(destination: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super(destination);\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n } else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n\n _next(value: T) {\n try {\n this._tapNext.call(this._context, value);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n\n _error(err: any) {\n try {\n this._tapError.call(this._context, err);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n\n _complete() {\n try {\n this._tapComplete.call(this._context, );\n } catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\nexport interface ThrottleConfig {\n leading?: boolean;\n trailing?: boolean;\n}\n\nexport const defaultThrottleConfig: ThrottleConfig = {\n leading: true,\n trailing: false\n};\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](throttle.png)\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value or completes, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * ## Example\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { throttle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttle(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return {Observable} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttle\n * @owner Observable\n */\nexport function throttle(durationSelector: (value: T) => SubscribableOrPromise,\n config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new ThrottleOperator(durationSelector, !!config.leading, !!config.trailing));\n}\n\nclass ThrottleOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise,\n private leading: boolean,\n private trailing: boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing)\n );\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc\n * @ignore\n * @extends {Ignored}\n */\nclass ThrottleSubscriber extends SimpleOuterSubscriber {\n private _throttled?: Subscription;\n private _sendValue?: T;\n private _hasValue = false;\n\n constructor(protected destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise,\n private _leading: boolean,\n private _trailing: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this._hasValue = true;\n this._sendValue = value;\n\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n } else {\n this.throttle(value);\n }\n }\n }\n\n private send() {\n const { _hasValue, _sendValue } = this;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue!);\n }\n this._hasValue = false;\n this._sendValue = undefined;\n }\n\n private throttle(value: T): void {\n const duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = innerSubscribe(duration, new SimpleInnerSubscriber(this)));\n }\n }\n\n private tryDurationSelector(value: T): SubscribableOrPromise | null {\n try {\n return this.durationSelector(value);\n } catch (err) {\n this.destination.error(err);\n return null;\n }\n }\n\n private throttlingDone() {\n const { _throttled, _trailing } = this;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = undefined;\n\n if (_trailing) {\n this.send();\n }\n }\n\n notifyNext(): void {\n this.throttlingDone();\n }\n\n notifyComplete(): void {\n this.throttlingDone();\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { ThrottleConfig, defaultThrottleConfig } from './throttle';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.\n *\n * ![](throttleTime.png)\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link SchedulerLike} for managing timers.\n *\n * ## Examples\n *\n * #### Limit click rate\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { throttleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * #### Double Click\n *\n * The following example only emits clicks which happen within a subsequent\n * delay of 400ms of the previous click. This for example can emulate a double\n * click. It makes use of the `trailing` parameter of the throttle configuration.\n *\n * ```ts\n * import { fromEvent, asyncScheduler } from 'rxjs';\n * import { throttleTime, withLatestFrom } from 'rxjs/operators';\n *\n * // defaultThottleConfig = { leading: true, trailing: false }\n * const throttleConfig = {\n * leading: false,\n * trailing: true\n * }\n *\n * const click = fromEvent(document, 'click');\n * const doubleClick = click.pipe(\n * throttleTime(400, asyncScheduler, throttleConfig)\n * );\n *\n * doubleClick.subscribe((throttleValue: Event) => {\n * console.log(`Double-clicked! Timestamp: ${throttleValue.timeStamp}`);\n * });\n * ```\n *\n * If you enable the `leading` parameter in this example, the output would be the primary click and\n * the double click, but restricts additional clicks within 400ms.\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the throttling.\n * @param {Object} config a configuration object to define `leading` and\n * `trailing` behavior. Defaults to `{ leading: true, trailing: false }`.\n * @return {Observable} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nexport function throttleTime(duration: number,\n scheduler: SchedulerLike = async,\n config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing));\n}\n\nclass ThrottleTimeOperator implements Operator {\n constructor(private duration: number,\n private scheduler: SchedulerLike,\n private leading: boolean,\n private trailing: boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing)\n );\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ThrottleTimeSubscriber extends Subscriber {\n private throttled: Subscription;\n private _hasTrailingValue: boolean = false;\n private _trailingValue: T = null;\n\n constructor(destination: Subscriber,\n private duration: number,\n private scheduler: SchedulerLike,\n private leading: boolean,\n private trailing: boolean) {\n super(destination);\n }\n\n protected _next(value: T) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n } else {\n this.add(this.throttled = this.scheduler.schedule>(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n } else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n }\n\n protected _complete() {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n } else {\n this.destination.complete();\n }\n }\n\n clearThrottle() {\n const throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n }\n}\n\ninterface DispatchArg {\n subscriber: ThrottleTimeSubscriber;\n}\n\nfunction dispatchNext(arg: DispatchArg) {\n const { subscriber } = arg;\n subscriber.clearThrottle();\n}\n","\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerLike, OperatorFunction } from '../types';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\n\n/**\n *\n * Emits an object containing the current value, and the time that has\n * passed between emitting the current value and the previous value, which is\n * calculated by using the provided `scheduler`'s `now()` method to retrieve\n * the current time at each emission, then calculating the difference. The `scheduler`\n * defaults to {@link asyncScheduler}, so by default, the `interval` will be in\n * milliseconds.\n *\n * Convert an Observable that emits items into one that\n * emits indications of the amount of time elapsed between those emissions.\n *\n * ![](timeinterval.png)\n *\n * ## Examples\n * Emit inteval between current value with the last value\n *\n * ```ts\n * const seconds = interval(1000);\n *\n * seconds.pipe(timeInterval())\n * .subscribe(\n * value => console.log(value),\n * err => console.log(err),\n * );\n *\n * seconds.pipe(timeout(900))\n * .subscribe(\n * value => console.log(value),\n * err => console.log(err),\n * );\n *\n * // NOTE: The values will never be this precise,\n * // intervals created with `interval` or `setInterval`\n * // are non-deterministic.\n *\n * // {value: 0, interval: 1000}\n * // {value: 1, interval: 1000}\n * // {value: 2, interval: 1000}\n * ```\n *\n * @param {SchedulerLike} [scheduler] Scheduler used to get the current time.\n * @return {Observable<{ interval: number, value: T }>} Observable that emit infomation about value and interval\n * @method timeInterval\n */\nexport function timeInterval(scheduler: SchedulerLike = async): OperatorFunction> {\n return (source: Observable) => defer(() => {\n return source.pipe(\n // TODO(benlesh): correct these typings.\n scan(\n ({ current }, value) => ({ value, current: scheduler.now(), last: current }),\n { current: scheduler.now(), value: undefined, last: undefined }\n ) as any,\n map>(({ current, last, value }) => new TimeInterval(value, current - last)),\n );\n });\n}\n\n// TODO(benlesh): make this an interface, export the interface, but not the implemented class,\n// there's no reason users should be manually creating this type.\n\n/**\n * @deprecated exposed API, use as interface only.\n */\nexport class TimeInterval {\n constructor(public value: T, public interval: number) {}\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { isDate } from '../util/isDate';\nimport { ObservableInput, OperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function timeoutWith(due: number | Date, withObservable: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n *\n * Errors if Observable does not emit a value in given time span, in case of which\n * subscribes to the second Observable.\n *\n * It's a version of `timeout` operator that let's you specify fallback Observable.\n *\n * ![](timeoutWith.png)\n *\n * `timeoutWith` is a variation of `timeout` operator. It behaves exactly the same,\n * still accepting as a first argument either a number or a Date, which control - respectively -\n * when values of source Observable should be emitted or when it should complete.\n *\n * The only difference is that it accepts a second, required parameter. This parameter\n * should be an Observable which will be subscribed when source Observable fails any timeout check.\n * So whenever regular `timeout` would emit an error, `timeoutWith` will instead start re-emitting\n * values from second Observable. Note that this fallback Observable is not checked for timeouts\n * itself, so it can emit values and complete at arbitrary points in time. From the moment of a second\n * subscription, Observable returned from `timeoutWith` simply mirrors fallback stream. When that\n * stream completes, it completes as well.\n *\n * Scheduler, which in case of `timeout` is provided as as second argument, can be still provided\n * here - as a third, optional parameter. It still is used to schedule timeout checks and -\n * as a consequence - when second Observable will be subscribed, since subscription happens\n * immediately after failing check.\n *\n * ## Example\n * Add fallback observable\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeoutWith } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const minutes = interval(60 * 1000);\n *\n * seconds.pipe(timeoutWith(900, minutes))\n * .subscribe(\n * value => console.log(value), // After 900ms, will start emitting `minutes`,\n * // since first value of `seconds` will not arrive fast enough.\n * err => console.log(err), // Would be called after 900ms in case of `timeout`,\n * // but here will never be called.\n * );\n * ```\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n * or Date specifying before when Observable should complete\n * @param {Observable} withObservable Observable which will be subscribed if source fails timeout check.\n * @param {SchedulerLike} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable} Observable that mirrors behaviour of source or, when timeout check fails, of an Observable\n * passed as a second parameter.\n * @method timeoutWith\n * @owner Observable\n */\nexport function timeoutWith(due: number | Date,\n withObservable: ObservableInput,\n scheduler: SchedulerLike = async): OperatorFunction {\n return (source: Observable) => {\n let absoluteTimeout = isDate(due);\n let waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\n\nclass TimeoutWithOperator implements Operator {\n constructor(private waitFor: number,\n private absoluteTimeout: boolean,\n private withObservable: ObservableInput,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TimeoutWithSubscriber(\n subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TimeoutWithSubscriber extends SimpleOuterSubscriber {\n\n private action?: SchedulerAction>;\n\n constructor(destination: Subscriber,\n private absoluteTimeout: boolean,\n private waitFor: number,\n private withObservable: ObservableInput,\n private scheduler: SchedulerLike) {\n super(destination);\n this.scheduleTimeout();\n }\n\n private static dispatchTimeout(subscriber: TimeoutWithSubscriber): void {\n const { withObservable } = subscriber;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(innerSubscribe(withObservable, new SimpleInnerSubscriber(subscriber)));\n }\n\n private scheduleTimeout(): void {\n const { action } = this;\n if (action) {\n // Recycle the action if we've already scheduled one. All the production\n // Scheduler Actions mutate their state/delay time and return themeselves.\n // VirtualActions are immutable, so they create and return a clone. In this\n // case, we need to set the action reference to the most recent VirtualAction,\n // to ensure that's the one we clone from next time.\n this.action = (>> action.schedule(this, this.waitFor));\n } else {\n this.add(this.action = (>> this.scheduler.schedule>(\n TimeoutWithSubscriber.dispatchTimeout as any, this.waitFor, this\n )));\n }\n }\n\n protected _next(value: T): void {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n super._next(value);\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.action = undefined;\n this.scheduler = null!;\n this.withObservable = null!;\n }\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\n\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * Timeouts on Observable that doesn't emit values fast enough.\n *\n * ![](timeout.png)\n *\n * `timeout` operator accepts as an argument either a number or a Date.\n *\n * If number was provided, it returns an Observable that behaves like a source\n * Observable, unless there is a period of time where there is no value emitted.\n * So if you provide `100` as argument and first value comes after 50ms from\n * the moment of subscription, this value will be simply re-emitted by the resulting\n * Observable. If however after that 100ms passes without a second value being emitted,\n * stream will end with an error and source Observable will be unsubscribed.\n * These checks are performed throughout whole lifecycle of Observable - from the moment\n * it was subscribed to, until it completes or errors itself. Thus every value must be\n * emitted within specified period since previous value.\n *\n * If provided argument was Date, returned Observable behaves differently. It throws\n * if Observable did not complete before provided Date. This means that periods between\n * emission of particular values do not matter in this case. If Observable did not complete\n * before provided Date, source Observable will be unsubscribed. Other than that, resulting\n * stream behaves just as source Observable.\n *\n * `timeout` accepts also a Scheduler as a second parameter. It is used to schedule moment (or moments)\n * when returned Observable will check if source stream emitted value or completed.\n *\n * ## Examples\n * Check if ticks are emitted within certain timespan\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n *\n * seconds.pipe(timeout(1100)) // Let's use bigger timespan to be safe,\n * // since `interval` might fire a bit later then scheduled.\n * .subscribe(\n * value => console.log(value), // Will emit numbers just as regular `interval` would.\n * err => console.log(err), // Will never be called.\n * );\n *\n * seconds.pipe(timeout(900))\n * .subscribe(\n * value => console.log(value), // Will never be called.\n * err => console.log(err), // Will emit error before even first value is emitted,\n * // since it did not arrive within 900ms period.\n * );\n * ```\n *\n * Use Date to check if Observable completed\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n *\n * seconds.pipe(\n * timeout(new Date(\"December 17, 2020 03:24:00\")),\n * )\n * .subscribe(\n * value => console.log(value), // Will emit values as regular `interval` would\n * // until December 17, 2020 at 03:24:00.\n * err => console.log(err) // On December 17, 2020 at 03:24:00 it will emit an error,\n * // since Observable did not complete by then.\n * );\n * ```\n * @see {@link timeoutWith}\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n * or Date specifying before when Observable should complete\n * @param {SchedulerLike} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable} Observable that mirrors behaviour of source, unless timeout checks fail.\n * @method timeout\n * @owner Observable\n */\nexport function timeout(due: number | Date,\n scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n","\nimport { async } from '../scheduler/async';\nimport { OperatorFunction, SchedulerLike, Timestamp as TimestampInterface } from '../types';\nimport { map } from './map';\n\n/**\n * Attaches a timestamp to each item emitted by an observable indicating when it was emitted\n *\n * The `timestamp` operator maps the *source* observable stream to an object of type\n * `{value: T, timestamp: R}`. The properties are generically typed. The `value` property contains the value\n * and type of the *source* observable. The `timestamp` is generated by the schedulers `now` function. By\n * default it uses the *async* scheduler which simply returns `Date.now()` (milliseconds since 1970/01/01\n * 00:00:00:000) and therefore is of type `number`.\n *\n * ![](timestamp.png)\n *\n * ## Example\n *\n * In this example there is a timestamp attached to the documents click event.\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { timestamp } from 'rxjs/operators';\n *\n * const clickWithTimestamp = fromEvent(document, 'click').pipe(\n * timestamp()\n * );\n *\n * // Emits data of type {value: MouseEvent, timestamp: number}\n * clickWithTimestamp.subscribe(data => {\n * console.log(data);\n * });\n * ```\n *\n * @param scheduler\n * @return {Observable>|WebSocketSubject|Observable}\n * @method timestamp\n * @owner Observable\n */\nexport function timestamp(scheduler: SchedulerLike = async): OperatorFunction> {\n return map((value: T) => new Timestamp(value, scheduler.now()));\n // return (source: Observable) => source.lift(new TimestampOperator(scheduler));\n}\n\nexport class Timestamp implements TimestampInterface {\n constructor(public value: T, public timestamp: number) {\n }\n}\n","import { reduce } from './reduce';\nimport { OperatorFunction } from '../types';\n\nfunction toArrayReducer(arr: T[], item: T, index: number) {\n if (index === 0) {\n return [item];\n }\n arr.push(item);\n return arr;\n}\n\n/**\n * Collects all source emissions and emits them as an array when the source completes.\n *\n * Get all values inside an array when the source completes\n *\n * ![](toArray.png)\n *\n * `toArray` will wait until the source Observable completes before emitting\n * the array containing all emissions. When the source Observable errors no\n * array will be emitted.\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { toArray, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * take(10),\n * toArray()\n * );\n *\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n *\n * ```\n* @return An array from an observable sequence.\n* @method toArray\n* @owner Observable\n*/\nexport function toArray(): OperatorFunction {\n return reduce(toArrayReducer, [] as T[]);\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { Subject } from '../Subject';\nimport { Subscriber } from '../Subscriber';\nimport { Operator } from '../Operator';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Branch out the source Observable values as a nested Observable whenever\n * `windowBoundaries` emits.\n *\n * It's like {@link buffer}, but emits a nested Observable\n * instead of an array.\n *\n * ![](window.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping\n * windows. It emits the current window and opens a new one whenever the\n * Observable `windowBoundaries` emits an item. Because each window is an\n * Observable, the output is a higher-order Observable.\n *\n * ## Example\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { window, mergeAll, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const sec = interval(1000);\n * const result = clicks.pipe(\n * window(sec),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link buffer}\n *\n * @param {Observable} windowBoundaries An Observable that completes the\n * previous window and starts a new window.\n * @return {Observable>} An Observable of windows, which are\n * Observables emitting values of the source Observable.\n * @method window\n * @owner Observable\n */\nexport function window(windowBoundaries: Observable): OperatorFunction> {\n return function windowOperatorFunction(source: Observable) {\n return source.lift(new WindowOperator(windowBoundaries));\n };\n}\n\nclass WindowOperator implements Operator> {\n\n constructor(private windowBoundaries: Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n const windowSubscriber = new WindowSubscriber(subscriber);\n const sourceSubscription = source.subscribe(windowSubscriber);\n if (!sourceSubscription.closed) {\n windowSubscriber.add(innerSubscribe(this.windowBoundaries, new SimpleInnerSubscriber(windowSubscriber)));\n }\n return sourceSubscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowSubscriber extends SimpleOuterSubscriber {\n\n private window: Subject = new Subject();\n\n constructor(destination: Subscriber>) {\n super(destination);\n destination.next(this.window);\n }\n\n notifyNext(): void {\n this.openWindow();\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n notifyComplete(): void {\n this._complete();\n }\n\n protected _next(value: T): void {\n this.window.next(value);\n }\n\n protected _error(err: any): void {\n this.window.error(err);\n this.destination.error!(err);\n }\n\n protected _complete(): void {\n this.window.complete();\n this.destination.complete!();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.window = null!;\n }\n\n private openWindow(): void {\n const prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n const destination = this.destination;\n const newWindow = this.window = new Subject();\n destination.next!(newWindow);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable with each\n * nested Observable emitting at most `windowSize` values.\n *\n * It's like {@link bufferCount}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowCount.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows every `startWindowEvery`\n * items, each containing no more than `windowSize` items. When the source\n * Observable completes or encounters an error, the output Observable emits\n * the current window and propagates the notification from the source\n * Observable. If `startWindowEvery` is not provided, then new windows are\n * started immediately at the start of the source and when each window completes\n * with size `windowSize`.\n *\n * ## Examples\n * Ignore every 3rd click event, starting from the first one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, map, mergeAll, skip } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(3),\n * map(win => win.pipe(skip(1))), // skip first of every 3 clicks\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Ignore every 3rd click event, starting from the third one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(2, 3),\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferCount}\n *\n * @param {number} windowSize The maximum number of values emitted by each\n * window.\n * @param {number} [startWindowEvery] Interval at which to start a new window.\n * For example if `startWindowEvery` is `2`, then a new window will be started\n * on every other value from the source. A new window is started at the\n * beginning of the source by default.\n * @return {Observable>} An Observable of windows, which in turn\n * are Observable of values.\n * @method windowCount\n * @owner Observable\n */\nexport function windowCount(windowSize: number,\n startWindowEvery: number = 0): OperatorFunction> {\n return function windowCountOperatorFunction(source: Observable) {\n return source.lift(new WindowCountOperator(windowSize, startWindowEvery));\n };\n}\n\nclass WindowCountOperator implements Operator> {\n\n constructor(private windowSize: number,\n private startWindowEvery: number) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowCountSubscriber extends Subscriber {\n private windows: Subject[] = [ new Subject() ];\n private count: number = 0;\n\n constructor(protected destination: Subscriber>,\n private windowSize: number,\n private startWindowEvery: number) {\n super(destination);\n destination.next(this.windows[0]);\n }\n\n protected _next(value: T) {\n const startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;\n const destination = this.destination;\n const windowSize = this.windowSize;\n const windows = this.windows;\n const len = windows.length;\n\n for (let i = 0; i < len && !this.closed; i++) {\n windows[i].next(value);\n }\n const c = this.count - windowSize + 1;\n if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {\n windows.shift().complete();\n }\n if (++this.count % startWindowEvery === 0 && !this.closed) {\n const window = new Subject();\n windows.push(window);\n destination.next(window);\n }\n }\n\n protected _error(err: any) {\n const windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().error(err);\n }\n }\n this.destination.error(err);\n }\n\n protected _complete() {\n const windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().complete();\n }\n }\n this.destination.complete();\n }\n\n protected _unsubscribe() {\n this.count = 0;\n this.windows = null;\n }\n}\n","import { Subject } from '../Subject';\nimport { Operator } from '../Operator';\nimport { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { OperatorFunction, SchedulerLike, SchedulerAction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable periodically\n * in time.\n *\n * It's like {@link bufferTime}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowTime.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable starts a new window periodically, as\n * determined by the `windowCreationInterval` argument. It emits each window\n * after a fixed timespan, specified by the `windowTimeSpan` argument. When the\n * source Observable completes or encounters an error, the output Observable\n * emits the current window and propagates the notification from the source\n * Observable. If `windowCreationInterval` is not provided, the output\n * Observable starts a new window when the previous window of duration\n * `windowTimeSpan` completes. If `maxWindowCount` is provided, each window\n * will emit at most fixed number of values. Window will complete immediately\n * after emitting last value and next one still will open as specified by\n * `windowTimeSpan` and `windowCreationInterval` arguments.\n *\n * ## Examples\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds start a window 1 second long, and emit at most 2 click events per window\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Same as example above but with maxWindowCount instead of take\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000, 2), // each window has still at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferTime}\n *\n * @param {number} windowTimeSpan The amount of time to fill each window.\n * @param {number} [windowCreationInterval] The interval at which to start new\n * windows.\n * @param {number} [maxWindowSize=Number.POSITIVE_INFINITY] Max number of\n * values each window can emit before completion.\n * @param {SchedulerLike} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine window boundaries.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowTime\n * @owner Observable\n */\nexport function windowTime(windowTimeSpan: number,\n scheduler?: SchedulerLike): OperatorFunction>;\nexport function windowTime(windowTimeSpan: number,\n windowCreationInterval: number,\n scheduler?: SchedulerLike): OperatorFunction>;\nexport function windowTime(windowTimeSpan: number,\n windowCreationInterval: number,\n maxWindowSize: number,\n scheduler?: SchedulerLike): OperatorFunction>;\n\nexport function windowTime(windowTimeSpan: number): OperatorFunction> {\n let scheduler: SchedulerLike = async;\n let windowCreationInterval: number = null;\n let maxWindowSize: number = Number.POSITIVE_INFINITY;\n\n if (isScheduler(arguments[3])) {\n scheduler = arguments[3];\n }\n\n if (isScheduler(arguments[2])) {\n scheduler = arguments[2];\n } else if (isNumeric(arguments[2])) {\n maxWindowSize = Number(arguments[2]);\n }\n\n if (isScheduler(arguments[1])) {\n scheduler = arguments[1];\n } else if (isNumeric(arguments[1])) {\n windowCreationInterval = Number(arguments[1]);\n }\n\n return function windowTimeOperatorFunction(source: Observable) {\n return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));\n };\n}\n\nclass WindowTimeOperator implements Operator> {\n\n constructor(private windowTimeSpan: number,\n private windowCreationInterval: number | null,\n private maxWindowSize: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowTimeSubscriber(\n subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler\n ));\n }\n}\n\ninterface CreationState {\n windowTimeSpan: number;\n windowCreationInterval: number;\n subscriber: WindowTimeSubscriber;\n scheduler: SchedulerLike;\n}\n\ninterface TimeSpanOnlyState {\n window: CountedSubject;\n windowTimeSpan: number;\n subscriber: WindowTimeSubscriber;\n }\n\ninterface CloseWindowContext {\n action: SchedulerAction>;\n subscription: Subscription;\n}\n\ninterface CloseState {\n subscriber: WindowTimeSubscriber;\n window: CountedSubject;\n context: CloseWindowContext;\n}\n\nclass CountedSubject extends Subject {\n private _numberOfNextedValues: number = 0;\n\n next(value?: T): void {\n this._numberOfNextedValues++;\n super.next(value);\n }\n\n get numberOfNextedValues(): number {\n return this._numberOfNextedValues;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowTimeSubscriber extends Subscriber {\n private windows: CountedSubject[] = [];\n\n constructor(protected destination: Subscriber>,\n private windowTimeSpan: number,\n private windowCreationInterval: number | null,\n private maxWindowSize: number,\n private scheduler: SchedulerLike) {\n super(destination);\n\n const window = this.openWindow();\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n const closeState: CloseState = { subscriber: this, window, context: null };\n const creationState: CreationState = { windowTimeSpan, windowCreationInterval, subscriber: this, scheduler };\n this.add(scheduler.schedule>(dispatchWindowClose, windowTimeSpan, closeState));\n this.add(scheduler.schedule>(dispatchWindowCreation, windowCreationInterval, creationState));\n } else {\n const timeSpanOnlyState: TimeSpanOnlyState = { subscriber: this, window, windowTimeSpan };\n this.add(scheduler.schedule>(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));\n }\n }\n\n protected _next(value: T): void {\n const windows = this.windows;\n const len = windows.length;\n for (let i = 0; i < len; i++) {\n const window = windows[i];\n if (!window.closed) {\n window.next(value);\n if (window.numberOfNextedValues >= this.maxWindowSize) {\n this.closeWindow(window);\n }\n }\n }\n }\n\n protected _error(err: any): void {\n const windows = this.windows;\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const windows = this.windows;\n while (windows.length > 0) {\n const window = windows.shift();\n if (!window.closed) {\n window.complete();\n }\n }\n this.destination.complete();\n }\n\n public openWindow(): CountedSubject {\n const window = new CountedSubject();\n this.windows.push(window);\n const destination = this.destination;\n destination.next(window);\n return window;\n }\n\n public closeWindow(window: CountedSubject): void {\n window.complete();\n const windows = this.windows;\n windows.splice(windows.indexOf(window), 1);\n }\n}\n\nfunction dispatchWindowTimeSpanOnly(this: SchedulerAction>, state: TimeSpanOnlyState): void {\n const { subscriber, windowTimeSpan, window } = state;\n if (window) {\n subscriber.closeWindow(window);\n }\n state.window = subscriber.openWindow();\n this.schedule(state, windowTimeSpan);\n}\n\nfunction dispatchWindowCreation(this: SchedulerAction>, state: CreationState): void {\n const { windowTimeSpan, subscriber, scheduler, windowCreationInterval } = state;\n const window = subscriber.openWindow();\n const action = this;\n let context: CloseWindowContext = { action, subscription: null };\n const timeSpanState: CloseState = { subscriber, window, context };\n context.subscription = scheduler.schedule>(dispatchWindowClose, windowTimeSpan, timeSpanState);\n action.add(context.subscription);\n action.schedule(state, windowCreationInterval);\n}\n\nfunction dispatchWindowClose(state: CloseState): void {\n const { subscriber, window, context } = state;\n if (context && context.action && context.subscription) {\n context.action.remove(context.subscription);\n }\n subscriber.closeWindow(window);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable starting from\n * an emission from `openings` and ending when the output of `closingSelector`\n * emits.\n *\n * It's like {@link bufferToggle}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowToggle.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows that contain those items\n * emitted by the source Observable between the time when the `openings`\n * Observable emits an item and when the Observable returned by\n * `closingSelector` emits an item.\n *\n * ## Example\n * Every other second, emit the click events from the next 500ms\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { windowToggle, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const result = clicks.pipe(\n * windowToggle(openings, i => i % 2 ? interval(500) : EMPTY),\n * mergeAll()\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowWhen}\n * @see {@link bufferToggle}\n *\n * @param {Observable} openings An observable of notifications to start new\n * windows.\n * @param {function(value: O): Observable} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns an Observable,\n * which, when it emits (either `next` or `complete`), signals that the\n * associated window should complete.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowToggle\n * @owner Observable\n */\nexport function windowToggle(openings: Observable,\n closingSelector: (openValue: O) => Observable): OperatorFunction> {\n return (source: Observable) => source.lift(new WindowToggleOperator(openings, closingSelector));\n}\n\nclass WindowToggleOperator implements Operator> {\n\n constructor(private openings: Observable,\n private closingSelector: (openValue: O) => Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowToggleSubscriber(\n subscriber, this.openings, this.closingSelector\n ));\n }\n}\n\ninterface WindowContext {\n window: Subject;\n subscription: Subscription;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowToggleSubscriber extends OuterSubscriber {\n private contexts: WindowContext[] = [];\n private openSubscription: Subscription;\n\n constructor(destination: Subscriber>,\n private openings: Observable,\n private closingSelector: (openValue: O) => Observable) {\n super(destination);\n this.add(this.openSubscription = subscribeToResult(this, openings, openings as any));\n }\n\n protected _next(value: T) {\n const { contexts } = this;\n if (contexts) {\n const len = contexts.length;\n for (let i = 0; i < len; i++) {\n contexts[i].window.next(value);\n }\n }\n }\n\n protected _error(err: any) {\n\n const { contexts } = this;\n this.contexts = null;\n\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n\n while (++index < len) {\n const context = contexts[index];\n context.window.error(err);\n context.subscription.unsubscribe();\n }\n }\n\n super._error(err);\n }\n\n protected _complete() {\n const { contexts } = this;\n this.contexts = null;\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n while (++index < len) {\n const context = contexts[index];\n context.window.complete();\n context.subscription.unsubscribe();\n }\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { contexts } = this;\n this.contexts = null;\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n while (++index < len) {\n const context = contexts[index];\n context.window.unsubscribe();\n context.subscription.unsubscribe();\n }\n }\n }\n\n notifyNext(outerValue: any, innerValue: any,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n\n if (outerValue === this.openings) {\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector(innerValue);\n } catch (e) {\n return this.error(e);\n }\n\n const window = new Subject();\n const subscription = new Subscription();\n const context = { window, subscription };\n this.contexts.push(context);\n const innerSubscription = subscribeToResult(this, closingNotifier, context as any);\n\n if (innerSubscription.closed) {\n this.closeWindow(this.contexts.length - 1);\n } else {\n (innerSubscription).context = context;\n subscription.add(innerSubscription);\n }\n\n this.destination.next(window);\n } else {\n this.closeWindow(this.contexts.indexOf(outerValue));\n }\n }\n\n notifyError(err: any): void {\n this.error(err);\n }\n\n notifyComplete(inner: Subscription): void {\n if (inner !== this.openSubscription) {\n this.closeWindow(this.contexts.indexOf(( inner).context));\n }\n }\n\n private closeWindow(index: number): void {\n if (index === -1) {\n return;\n }\n\n const { contexts } = this;\n const context = contexts[index];\n const { window, subscription } = context;\n contexts.splice(index, 1);\n window.complete();\n subscription.unsubscribe();\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable using a\n * factory function of closing Observables to determine when to start a new\n * window.\n *\n * It's like {@link bufferWhen}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowWhen.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping windows.\n * It emits the current window and opens a new one whenever the Observable\n * produced by the specified `closingSelector` function emits an item. The first\n * window is opened immediately when subscribing to the output Observable.\n *\n * ## Example\n * Emit only the first two clicks events in every window of [1-5] random seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { windowWhen, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowWhen(() => interval(1000 + Math.random() * 4000)),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link bufferWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals (on either `next` or\n * `complete`) when to close the previous window and start a new one.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowWhen\n * @owner Observable\n */\nexport function windowWhen(closingSelector: () => Observable): OperatorFunction> {\n return function windowWhenOperatorFunction(source: Observable) {\n return source.lift(new WindowOperator(closingSelector));\n };\n}\n\nclass WindowOperator implements Operator> {\n constructor(private closingSelector: () => Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowSubscriber extends OuterSubscriber {\n private window?: Subject;\n private closingNotification?: Subscription;\n\n constructor(protected destination: Subscriber>,\n private closingSelector: () => Observable) {\n super(destination);\n this.openWindow();\n }\n\n notifyNext(_outerValue: T, _innerValue: any,\n _outerIndex: number, _innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.openWindow(innerSub);\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.openWindow(innerSub);\n }\n\n protected _next(value: T): void {\n this.window!.next(value);\n }\n\n protected _error(err: any): void {\n this.window!.error(err);\n this.destination.error(err);\n this.unsubscribeClosingNotification();\n }\n\n protected _complete(): void {\n this.window!.complete();\n this.destination.complete();\n this.unsubscribeClosingNotification();\n }\n\n private unsubscribeClosingNotification(): void {\n if (this.closingNotification) {\n this.closingNotification.unsubscribe();\n }\n }\n\n private openWindow(innerSub: InnerSubscriber | null = null): void {\n if (innerSub) {\n this.remove(innerSub);\n innerSub.unsubscribe();\n }\n\n const prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n\n const window = this.window = new Subject();\n this.destination.next(window);\n\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector();\n } catch (e) {\n this.destination.error(e);\n this.window.error(e);\n return;\n }\n this.add(this.closingNotification = subscribeToResult(this, closingNotifier));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function withLatestFrom(project: (v1: T) => R): OperatorFunction;\nexport function withLatestFrom, R>(source2: O2, project: (v1: T, v2: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, R>(v2: O2, v3: O3, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom>(source2: O2): OperatorFunction]>;\nexport function withLatestFrom, O3 extends ObservableInput>(v2: O2, v3: O3): OperatorFunction, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput>(v2: O2, v3: O3, v4: O4): OperatorFunction, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[]): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[], project: (...values: Array) => R): OperatorFunction;\n\n/* tslint:enable:max-line-length */\n\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.\n *\n * ![](withLatestFrom.png)\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * ## Example\n * On every click event, emit an array with the latest timer event plus the click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { withLatestFrom } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const result = clicks.pipe(withLatestFrom(timer));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.pipe(withLatestFrom(b, c), map(([a1, b1, c1]) => a1 + b1 + c1))`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method withLatestFrom\n * @owner Observable\n */\nexport function withLatestFrom(...args: Array | ((...values: Array) => R)>): OperatorFunction {\n return (source: Observable) => {\n let project: any;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = []>args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\n\nclass WithLatestFromOperator implements Operator {\n constructor(private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WithLatestFromSubscriber extends OuterSubscriber {\n private values: any[];\n private toRespond: number[] = [];\n\n constructor(destination: Subscriber,\n private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n super(destination);\n const len = observables.length;\n this.values = new Array(len);\n\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n\n notifyComplete() {\n // noop\n }\n\n protected _next(value: T) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n } else {\n this.destination.next!(args);\n }\n }\n }\n\n private _tryProject(args: any[]) {\n let result: any;\n try {\n result = this.project!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { zip as zipStatic } from '../observable/zip';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(project: (v1: T) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, project: (v1: T, v2: T2) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction ;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction ;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(array: Array>): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(array: Array>, project: (v1: T, ...values: Array) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link zip}.\n */\nexport function zip(...observables: Array | ((...values: Array) => R)>): OperatorFunction {\n return function zipOperatorFunction(source: Observable) {\n return source.lift.call(zipStatic(source, ...observables));\n };\n}","import { ZipOperator } from '../observable/zip';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function zipAll(): OperatorFunction, T[]>;\nexport function zipAll(): OperatorFunction;\nexport function zipAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function zipAll(project: (...values: Array) => R): OperatorFunction;\n\nexport function zipAll(project?: (...values: Array) => R): OperatorFunction {\n return (source: Observable) => source.lift(new ZipOperator(project));\n}\n","\n/* Operator exports */\nexport { audit } from '../internal/operators/audit';\nexport { auditTime } from '../internal/operators/auditTime';\nexport { buffer } from '../internal/operators/buffer';\nexport { bufferCount } from '../internal/operators/bufferCount';\nexport { bufferTime } from '../internal/operators/bufferTime';\nexport { bufferToggle } from '../internal/operators/bufferToggle';\nexport { bufferWhen } from '../internal/operators/bufferWhen';\nexport { catchError } from '../internal/operators/catchError';\nexport { combineAll } from '../internal/operators/combineAll';\nexport { combineLatest } from '../internal/operators/combineLatest';\nexport { concat } from '../internal/operators/concat';\nexport { concatAll } from '../internal/operators/concatAll';\nexport { concatMap } from '../internal/operators/concatMap';\nexport { concatMapTo } from '../internal/operators/concatMapTo';\nexport { count } from '../internal/operators/count';\nexport { debounce } from '../internal/operators/debounce';\nexport { debounceTime } from '../internal/operators/debounceTime';\nexport { defaultIfEmpty } from '../internal/operators/defaultIfEmpty';\nexport { delay } from '../internal/operators/delay';\nexport { delayWhen } from '../internal/operators/delayWhen';\nexport { dematerialize } from '../internal/operators/dematerialize';\nexport { distinct } from '../internal/operators/distinct';\nexport { distinctUntilChanged } from '../internal/operators/distinctUntilChanged';\nexport { distinctUntilKeyChanged } from '../internal/operators/distinctUntilKeyChanged';\nexport { elementAt } from '../internal/operators/elementAt';\nexport { endWith } from '../internal/operators/endWith';\nexport { every } from '../internal/operators/every';\nexport { exhaust } from '../internal/operators/exhaust';\nexport { exhaustMap } from '../internal/operators/exhaustMap';\nexport { expand } from '../internal/operators/expand';\nexport { filter } from '../internal/operators/filter';\nexport { finalize } from '../internal/operators/finalize';\nexport { find } from '../internal/operators/find';\nexport { findIndex } from '../internal/operators/findIndex';\nexport { first } from '../internal/operators/first';\nexport { groupBy } from '../internal/operators/groupBy';\nexport { ignoreElements } from '../internal/operators/ignoreElements';\nexport { isEmpty } from '../internal/operators/isEmpty';\nexport { last } from '../internal/operators/last';\nexport { map } from '../internal/operators/map';\nexport { mapTo } from '../internal/operators/mapTo';\nexport { materialize } from '../internal/operators/materialize';\nexport { max } from '../internal/operators/max';\nexport { merge } from '../internal/operators/merge';\nexport { mergeAll } from '../internal/operators/mergeAll';\nexport { mergeMap, flatMap } from '../internal/operators/mergeMap';\nexport { mergeMapTo } from '../internal/operators/mergeMapTo';\nexport { mergeScan } from '../internal/operators/mergeScan';\nexport { min } from '../internal/operators/min';\nexport { multicast } from '../internal/operators/multicast';\nexport { observeOn } from '../internal/operators/observeOn';\nexport { onErrorResumeNext } from '../internal/operators/onErrorResumeNext';\nexport { pairwise } from '../internal/operators/pairwise';\nexport { partition } from '../internal/operators/partition';\nexport { pluck } from '../internal/operators/pluck';\nexport { publish } from '../internal/operators/publish';\nexport { publishBehavior } from '../internal/operators/publishBehavior';\nexport { publishLast } from '../internal/operators/publishLast';\nexport { publishReplay } from '../internal/operators/publishReplay';\nexport { race } from '../internal/operators/race';\nexport { reduce } from '../internal/operators/reduce';\nexport { repeat } from '../internal/operators/repeat';\nexport { repeatWhen } from '../internal/operators/repeatWhen';\nexport { retry } from '../internal/operators/retry';\nexport { retryWhen } from '../internal/operators/retryWhen';\nexport { refCount } from '../internal/operators/refCount';\nexport { sample } from '../internal/operators/sample';\nexport { sampleTime } from '../internal/operators/sampleTime';\nexport { scan } from '../internal/operators/scan';\nexport { sequenceEqual } from '../internal/operators/sequenceEqual';\nexport { share } from '../internal/operators/share';\nexport { shareReplay } from '../internal/operators/shareReplay';\nexport { single } from '../internal/operators/single';\nexport { skip } from '../internal/operators/skip';\nexport { skipLast } from '../internal/operators/skipLast';\nexport { skipUntil } from '../internal/operators/skipUntil';\nexport { skipWhile } from '../internal/operators/skipWhile';\nexport { startWith } from '../internal/operators/startWith';\nexport { subscribeOn } from '../internal/operators/subscribeOn';\nexport { switchAll } from '../internal/operators/switchAll';\nexport { switchMap } from '../internal/operators/switchMap';\nexport { switchMapTo } from '../internal/operators/switchMapTo';\nexport { take } from '../internal/operators/take';\nexport { takeLast } from '../internal/operators/takeLast';\nexport { takeUntil } from '../internal/operators/takeUntil';\nexport { takeWhile } from '../internal/operators/takeWhile';\nexport { tap } from '../internal/operators/tap';\nexport { throttle } from '../internal/operators/throttle';\nexport { throttleTime } from '../internal/operators/throttleTime';\nexport { throwIfEmpty } from '../internal/operators/throwIfEmpty';\nexport { timeInterval } from '../internal/operators/timeInterval';\nexport { timeout } from '../internal/operators/timeout';\nexport { timeoutWith } from '../internal/operators/timeoutWith';\nexport { timestamp } from '../internal/operators/timestamp';\nexport { toArray } from '../internal/operators/toArray';\nexport { window } from '../internal/operators/window';\nexport { windowCount } from '../internal/operators/windowCount';\nexport { windowTime } from '../internal/operators/windowTime';\nexport { windowToggle } from '../internal/operators/windowToggle';\nexport { windowWhen } from '../internal/operators/windowWhen';\nexport { withLatestFrom } from '../internal/operators/withLatestFrom';\nexport { zip } from '../internal/operators/zip';\nexport { zipAll } from '../internal/operators/zipAll';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CacheLayer = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nclass CacheLayer {\n constructor(layer) {\n this.items = new rxjs_1.BehaviorSubject([]);\n this.map = new Map();\n this.name = layer.name;\n this.config = layer.config;\n this.initHook(layer);\n }\n get(name) {\n return this.map.get(name);\n }\n initHook(layer) {\n if (this.config.maxAge) {\n this.onExpireAll(layer);\n }\n }\n onExpireAll(layer) {\n layer.items.forEach(item => this.onExpire(item['key']));\n }\n putItemHook(layerItem) {\n if (this.config.maxAge) {\n this.onExpire(layerItem['key']);\n }\n }\n getItem(key) {\n if (this.map.has(key)) {\n return this.get(key);\n }\n else {\n return null;\n }\n }\n putItem(layerItem) {\n this.map.set(layerItem['key'], layerItem);\n const item = this.get(layerItem['key']);\n const filteredItems = this.items\n .getValue()\n .filter(item => item['key'] !== layerItem['key']);\n this.items.next([...filteredItems, item]);\n this.putItemHook(layerItem);\n return layerItem;\n }\n onExpire(key) {\n return new rxjs_1.Observable(observer => observer.next())\n .pipe((0, operators_1.timeoutWith)(this.config.maxAge, (0, rxjs_1.of)(1)), (0, operators_1.skip)(1), (0, operators_1.take)(1))\n .subscribe(() => this.removeItem(key));\n }\n removeItem(key) {\n const newLayerItems = this.items\n .getValue()\n .filter(item => item['key'] !== key);\n this.map.delete(key);\n this.items.next(newLayerItems);\n }\n getItemObservable(key) {\n return this.items.asObservable().pipe((0, operators_1.filter)(() => !!this.map.has(key)), (0, operators_1.map)(() => this.map.get(key)));\n }\n flushCache() {\n return this.items.asObservable().pipe((0, operators_1.map)(items => {\n items.forEach(i => this.removeItem(i['key']));\n return true;\n }));\n }\n}\nexports.CacheLayer = CacheLayer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InternalLayers = exports.InternalEvents = void 0;\nfunction strEnum(o) {\n return o.reduce((res, key) => {\n res[key] = key;\n return res;\n }, Object.create(null));\n}\nexports.InternalEvents = strEnum(['load', 'config']);\nexports.InternalLayers = strEnum(['globalConfig', 'modules']);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigModel = exports.InitOptionsConfig = exports.ExperimentalFeatures = exports.PrivateCryptoModel = exports.LoggerConfig = void 0;\nclass LoggerConfig {\n constructor() {\n this.logging = process.env.LOGGING === 'true' ? true : false;\n this.hashes = true;\n this.date = true;\n this.exitHandler = true;\n }\n}\nexports.LoggerConfig = LoggerConfig;\nclass PrivateCryptoModel {\n}\nexports.PrivateCryptoModel = PrivateCryptoModel;\nclass ExperimentalFeatures {\n}\nexports.ExperimentalFeatures = ExperimentalFeatures;\nclass InitOptionsConfig {\n}\nexports.InitOptionsConfig = InitOptionsConfig;\nclass ConfigModel {\n constructor() {\n this.init = true;\n this.initOptions = new InitOptionsConfig();\n this.experimental = new ExperimentalFeatures();\n this.logger = new LoggerConfig();\n }\n}\nexports.ConfigModel = ConfigModel;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigService = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst config_model_1 = require(\"./config.model\");\nlet ConfigService = class ConfigService {\n constructor() {\n this.config = new config_model_1.ConfigModel();\n }\n setConfig(config) {\n Object.assign(this.config, config);\n }\n};\nConfigService = __decorate([\n (0, Service_1.Service)()\n], ConfigService);\nexports.ConfigService = ConfigService;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./config.model\"), exports);\n__exportStar(require(\"./config.service\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Injector = void 0;\nconst container_1 = require(\"../../container\");\nfunction Injector(Service) {\n return function (target, propertyName) {\n Object.defineProperty(target, propertyName, {\n get: () => container_1.Container.get(Service)\n });\n };\n}\nexports.Injector = Injector;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BootstrapLogger = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst index_1 = require(\"../config/index\");\nconst injector_decorator_1 = require(\"../../decorators/injector/injector.decorator\");\nlet BootstrapLogger = class BootstrapLogger {\n log(message) {\n if (this.configService.config.logger.logging) {\n const m = [this.logDate(), message];\n console.log(...m);\n return m;\n }\n }\n error(message) {\n console.error(message);\n }\n logImporter(message) {\n if (this.configService.config.logger.logging) {\n return this.log(message);\n }\n }\n logDate() {\n if (this.configService.config.logger.date) {\n return `${Date.now().toPrecision()}`;\n }\n else {\n return '';\n }\n }\n logHashes(message) {\n if (this.configService.config.logger.hashes) {\n return message;\n }\n else {\n return '';\n }\n }\n logExitHandler(message) {\n if (this.configService.config.logger.exitHandler) {\n this.log(message);\n }\n else {\n return '';\n }\n }\n};\n__decorate([\n (0, injector_decorator_1.Injector)(index_1.ConfigService),\n __metadata(\"design:type\", index_1.ConfigService)\n], BootstrapLogger.prototype, \"configService\", void 0);\nBootstrapLogger = __decorate([\n (0, Service_1.Service)()\n], BootstrapLogger);\nexports.BootstrapLogger = BootstrapLogger;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./bootstrap-logger\"), exports);\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar CacheService_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CacheService = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst cache_layer_1 = require(\"./cache-layer\");\nconst events_1 = require(\"../../helpers/events\");\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst index_1 = require(\"../bootstrap-logger/index\");\nconst FRIENDLY_ERROR_MESSAGES = {\n TRY_TO_UNSUBSCRIBE: 'Someone try to unsubscribe from collection directly... agghhh.. read docs! Blame: '\n};\nlet CacheService = CacheService_1 = class CacheService {\n constructor(logger) {\n this.logger = logger;\n this._cachedLayers = new rxjs_1.BehaviorSubject([]);\n this.map = new Map();\n this.config = {};\n }\n static createCacheInstance(cacheLayer) {\n return new cache_layer_1.CacheLayer(cacheLayer);\n }\n getLayer(name) {\n const exists = this.map.has(name);\n if (!exists) {\n return this.createLayer({ name: name });\n }\n return this.map.get(name);\n }\n getLayersByName(name) {\n return Array.from(this.map.keys())\n .map(item => {\n if (item !== events_1.InternalLayers.modules &&\n item !== events_1.InternalLayers.globalConfig) {\n const config = this.getLayer(item).getItem(events_1.InternalEvents.config);\n if (config && config.data && name === config.data.moduleName) {\n return this.getLayer(config.data.moduleHash);\n }\n }\n })\n .filter(i => !!i);\n }\n searchForDuplicateDependenciesInsideApp() {\n const uniq = [].concat\n .apply([], Array.from(this.map.keys()).map(key => Array.from(this.getLayer(key).map.keys())\n .map(key => (!this.isExcludedEvent(key) ? key : null))\n .filter(i => !!i)))\n .map(name => Object.create({ count: 1, name }))\n .reduce((a, b) => {\n a[b.name] = (a[b.name] || 0) + b.count;\n return a;\n }, {});\n const duplicates = Object.keys(uniq).filter(a => uniq[a] > 1);\n if (duplicates.length) {\n const dups = this.searchForDuplicatesByHash(duplicates[0]);\n const moduleType = dups[0].class['metadata']['type'].charAt(0).toUpperCase() +\n dups[0].class['metadata']['type'].slice(1);\n throw new Error(`\n ${dups[0].class['metadata'].raw}\n ${moduleType}: '${dups[0].originalName}' found multiple times!\n ${moduleType} hash: ${dups[0].moduleHash}\n Modules: [${dups[0].moduleName}, ${dups[1].moduleName}]\n\n Hint: '${dups[0].originalName}' class identity hash is identical in both\n imported files inside ${dups[0].moduleName} and ${dups[1].moduleName}\n consider removing one of the '${dups[0].originalName}'\n `);\n }\n return duplicates;\n }\n isExcludedEvent(i) {\n return i === events_1.InternalEvents.config || i === events_1.InternalEvents.load;\n }\n searchForItem(classItem) {\n return Array.from(this.map.keys())\n .map(module => {\n const currentModule = this.getLayer(module);\n const currentModuleDependencies = Array.from(currentModule.map.keys());\n const found = currentModuleDependencies.filter(i => {\n if (this.isExcludedEvent(i)) {\n return;\n }\n else {\n return i === classItem.name;\n }\n });\n if (found.length) {\n return currentModule.getItem(found[0]).data;\n }\n })\n .filter(i => !!i)[0];\n }\n searchForDuplicatesByHash(key) {\n return Array.from(this.map.keys())\n .map(module => {\n const currentModule = this.getLayer(module);\n const found = Array.from(currentModule.map.keys()).filter(i => {\n if (this.isExcludedEvent(i)) {\n return;\n }\n return i === key;\n });\n if (found.length) {\n const currentFoundItem = currentModule.getItem(found[0]);\n const currentModuleName = this.getLayer(module).getItem(events_1.InternalEvents.config);\n return {\n moduleName: currentModuleName.data.moduleName,\n moduleHash: currentModuleName.data.moduleHash,\n originalName: currentFoundItem.data.originalName,\n dupeName: currentFoundItem.key,\n raw: currentModuleName.data.raw,\n class: currentFoundItem.data\n };\n }\n })\n .filter(i => !!i);\n }\n createLayer(layer) {\n const exists = this.map.has(layer.name);\n if (exists) {\n return this.map.get(layer.name);\n }\n layer.items = layer.items || [];\n layer.config = layer.config || this.config;\n const cacheLayer = CacheService_1.createCacheInstance(layer);\n this.map.set(cacheLayer.name, cacheLayer);\n this._cachedLayers.next([...this._cachedLayers.getValue(), cacheLayer]);\n this.LayerHook(cacheLayer);\n return cacheLayer;\n }\n LayerHook(layerInstance) {\n this.protectLayerFromInvaders(layerInstance);\n if (layerInstance.config.cacheFlushInterval ||\n this.config.cacheFlushInterval) {\n this.OnExpire(layerInstance);\n }\n }\n protectLayerFromInvaders(cacheLayer) {\n cacheLayer.items.constructor.prototype.unsubsribeFromLayer =\n cacheLayer.items.constructor.prototype.unsubscribe;\n cacheLayer.items.constructor.prototype.unsubscribe = () => {\n console.error(FRIENDLY_ERROR_MESSAGES.TRY_TO_UNSUBSCRIBE + cacheLayer.name);\n };\n }\n OnExpire(layerInstance) {\n return new rxjs_1.Observable(observer => observer.next())\n .pipe((0, operators_1.timeoutWith)(layerInstance.config.cacheFlushInterval ||\n this.config.cacheFlushInterval, (0, rxjs_1.of)(1)), (0, operators_1.skip)(1), (0, operators_1.take)(1))\n .subscribe(() => this.removeLayer(layerInstance));\n }\n removeLayer(layerInstance) {\n this.map.delete(layerInstance.name);\n this._cachedLayers.next([\n ...this._cachedLayers\n .getValue()\n .filter(layer => layer.name !== layerInstance.name)\n ]);\n }\n transferItems(name, newCacheLayers) {\n const oldLayer = this.getLayer(name);\n const newLayers = [];\n newCacheLayers.forEach(layerName => {\n const newLayer = this.createLayer(layerName);\n oldLayer.items.getValue().forEach(item => newLayer.putItem(item));\n newLayers.push(newLayer);\n });\n return newLayers;\n }\n flushCache() {\n let oldLayersNames;\n return this._cachedLayers.pipe((0, operators_1.take)(1), (0, operators_1.map)((layers) => {\n oldLayersNames = layers.map(l => l.name);\n layers.forEach(layer => this.removeLayer(layer));\n oldLayersNames.forEach(l => this.createLayer({ name: l }));\n return true;\n }));\n }\n};\nCacheService = CacheService_1 = __decorate([\n (0, Service_1.Service)(),\n __metadata(\"design:paramtypes\", [index_1.BootstrapLogger])\n], CacheService);\nexports.CacheService = CacheService;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CacheServiceConfigInterface = void 0;\nclass CacheServiceConfigInterface {\n constructor() {\n this.deleteOnExpire = 'aggressive';\n this.cacheFlushInterval = 60 * 60 * 1000;\n this.maxAge = 15 * 60 * 1000;\n this.localStorage = false;\n }\n}\nexports.CacheServiceConfigInterface = CacheServiceConfigInterface;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./cache-layer.service\"), exports);\n__exportStar(require(\"./cache-layer\"), exports);\n__exportStar(require(\"./cache-layer.interfaces\"), exports);\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PluginService = void 0;\nconst rxjs_1 = require(\"rxjs\");\n// import { PluginBase, PluginNameVersion, PluginPackage } from 'hapi';\nconst Service_1 = require(\"../../decorators/service/Service\");\nlet PluginService = class PluginService {\n constructor() {\n this.plugins = new rxjs_1.BehaviorSubject([]);\n this.beforePlugins = new rxjs_1.BehaviorSubject([]);\n this.afterPlugins = new rxjs_1.BehaviorSubject([]);\n }\n register(plugin) {\n this.plugins.next([...this.plugins.getValue(), plugin]);\n }\n registerBefore(plugin) {\n this.beforePlugins.next([...this.plugins.getValue(), plugin]);\n }\n registerAfter(plugin) {\n this.afterPlugins.next([...this.plugins.getValue(), plugin]);\n }\n getPlugins() {\n return this.plugins.getValue();\n }\n getAfterPlugins() {\n return this.afterPlugins.getValue();\n }\n getBeforePlugins() {\n return this.beforePlugins.getValue();\n }\n};\nPluginService = __decorate([\n (0, Service_1.Service)()\n], PluginService);\nexports.PluginService = PluginService;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExitHandlerService = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst bootstrap_logger_1 = require(\"../bootstrap-logger\");\nconst injector_decorator_1 = require(\"../../decorators/injector/injector.decorator\");\nconst rxjs_1 = require(\"rxjs\");\nlet ExitHandlerService = class ExitHandlerService {\n constructor() {\n this.errorHandler = new rxjs_1.Subject();\n }\n init() { }\n exitHandler(options, err) {\n this.errorHandler.next(err);\n if (options.cleanup) {\n this.logger.logExitHandler('AppStopped');\n }\n if (err)\n console.log(err.stack);\n if (options.exit) {\n this.logger.logExitHandler('Unhandled error rejection');\n }\n process.exit(0);\n }\n onExitApp(events) {\n return new rxjs_1.Observable(o => events &&\n events.length &&\n events.forEach(event => process.on(event, e => o.next(e))));\n }\n};\n__decorate([\n (0, injector_decorator_1.Injector)(bootstrap_logger_1.BootstrapLogger),\n __metadata(\"design:type\", bootstrap_logger_1.BootstrapLogger)\n], ExitHandlerService.prototype, \"logger\", void 0);\nExitHandlerService = __decorate([\n (0, Service_1.Service)()\n], ExitHandlerService);\nexports.ExitHandlerService = ExitHandlerService;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./exit-handler.service\"), exports);\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LazyFactory = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nlet LazyFactory = class LazyFactory {\n constructor() {\n this.lazyFactories = new Map();\n }\n setLazyFactory(provide, factory) {\n this.lazyFactories.set(provide, factory);\n return this.getLazyFactory(provide);\n }\n getLazyFactory(provide) {\n return this.lazyFactories.get(provide);\n }\n};\nLazyFactory = __decorate([\n (0, Service_1.Service)()\n], LazyFactory);\nexports.LazyFactory = LazyFactory;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModuleValidators = void 0;\nconst Service_1 = require(\"../../../decorators/service/Service\");\nlet ModuleValidators = class ModuleValidators {\n validateEmpty(m, original, type) {\n if (!m) {\n const requiredType = type.charAt(0).toUpperCase() + type.slice(1);\n throw new Error(`\n ${original.metadata.raw}\n -> @Module: ${original.metadata.moduleName}\n -> @Module hash: ${original.metadata.moduleHash}\n --> Maybe you forgot to import some ${requiredType} inside ${original.metadata.moduleName} ?\n\n Hint: run ts-lint again, looks like imported ${requiredType} is undefined or null inside ${original.metadata.moduleName}\n `);\n }\n }\n genericWrongPluggableError(m, original, type) {\n if (m.metadata.type !== type) {\n const moduleType = m.metadata.type.charAt(0).toUpperCase() + m.metadata.type.slice(1);\n const requiredType = type.charAt(0).toUpperCase() + type.slice(1);\n throw new Error(`\n ${original.metadata.raw}\n -> @Module: '${original.metadata.moduleName}'\n -> @Module hash: '${original.metadata.moduleHash}'\n --> @${moduleType} '${m.metadata.moduleName}' provided, where expected class decorated with '@${requiredType}' instead,\n -> @Hint: please provide class with @Service decorator or remove ${m.metadata.moduleName} class\n `);\n }\n }\n validateImports(m, original) {\n if (m.metadata.type !== 'module') {\n throw new Error(`\n ${original.metadata.raw}\n -> @Module: '${original.metadata.moduleName}'\n -> @Module hash: '${original.metadata.moduleHash}'\n --> @${m.metadata.type.charAt(0).toUpperCase() +\n m.metadata.type.slice(1)} '${m.originalName}' provided, where expected class decorated with '@Module' instead,\n -> @Hint: please provide class with @Module decorator or remove ${m.originalName} from imports\n `);\n }\n }\n validateServices(m, original) {\n this.validateEmpty(m, original, 'service');\n if (m.provide) {\n return;\n }\n this.genericWrongPluggableError(m, original, 'service');\n }\n validatePlugin(m, original) {\n this.validateEmpty(m, original, 'plugin');\n if (m.provide) {\n return;\n }\n this.genericWrongPluggableError(m, original, 'plugin');\n }\n validateController(m, original) {\n this.validateEmpty(m, original, 'controller');\n if (m.provide) {\n return;\n }\n this.genericWrongPluggableError(m, original, 'controller');\n }\n validateEffect(m, original) {\n this.validateEmpty(m, original, 'effect');\n if (m.provide) {\n return;\n }\n this.genericWrongPluggableError(m, original, 'effect');\n }\n validateComponent(m, original) {\n this.validateEmpty(m, original, 'component');\n if (m.provide) {\n return;\n }\n this.genericWrongPluggableError(m, original, 'component');\n }\n};\nModuleValidators = __decorate([\n (0, Service_1.Service)()\n], ModuleValidators);\nexports.ModuleValidators = ModuleValidators;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ControllersService = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst rxjs_1 = require(\"rxjs\");\nlet ControllersService = class ControllersService {\n constructor() {\n this.controllers = new rxjs_1.BehaviorSubject([]);\n }\n register(plugin) {\n this.controllers.next([...this.controllers.getValue(), plugin]);\n }\n getControllers() {\n return this.controllers.getValue();\n }\n};\nControllersService = __decorate([\n (0, Service_1.Service)()\n], ControllersService);\nexports.ControllersService = ControllersService;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EffectsService = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst rxjs_1 = require(\"rxjs\");\nlet EffectsService = class EffectsService {\n constructor() {\n this.effects = new rxjs_1.BehaviorSubject([]);\n }\n register(plugin) {\n this.effects.next([...this.effects.getValue(), plugin]);\n }\n getEffects() {\n return this.effects.getValue();\n }\n};\nEffectsService = __decorate([\n (0, Service_1.Service)()\n], EffectsService);\nexports.EffectsService = EffectsService;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentsService = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst rxjs_1 = require(\"rxjs\");\nlet ComponentsService = class ComponentsService {\n constructor() {\n this.components = new rxjs_1.BehaviorSubject([]);\n }\n register(plugin) {\n this.components.next([...this.components.getValue(), plugin]);\n }\n getComponents() {\n return this.components.getValue();\n }\n};\nComponentsService = __decorate([\n (0, Service_1.Service)()\n], ComponentsService);\nexports.ComponentsService = ComponentsService;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BootstrapsServices = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst rxjs_1 = require(\"rxjs\");\nlet BootstrapsServices = class BootstrapsServices {\n constructor() {\n this.bootstraps = new rxjs_1.BehaviorSubject([]);\n }\n register(plugin) {\n this.bootstraps.next([...this.bootstraps.getValue(), plugin]);\n }\n getBootstraps() {\n return this.bootstraps.getValue();\n }\n};\nBootstrapsServices = __decorate([\n (0, Service_1.Service)()\n], BootstrapsServices);\nexports.BootstrapsServices = BootstrapsServices;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServicesService = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst rxjs_1 = require(\"rxjs\");\nlet ServicesService = class ServicesService {\n constructor() {\n this.services = new rxjs_1.BehaviorSubject([]);\n }\n register(plugin) {\n this.services.next([...this.services.getValue(), plugin]);\n }\n getServices() {\n return this.services.getValue();\n }\n};\nServicesService = __decorate([\n (0, Service_1.Service)()\n], ServicesService);\nexports.ServicesService = ServicesService;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModuleService = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst container_1 = require(\"../../container\");\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst lazy_factory_service_1 = require(\"../lazy-factory/lazy-factory.service\");\nconst plugin_service_1 = require(\"../plugin/plugin.service\");\nconst injector_decorator_1 = require(\"../../decorators/injector/injector.decorator\");\nconst validators_1 = require(\"./helpers/validators\");\nconst constructor_watcher_1 = require(\"../constructor-watcher/constructor-watcher\");\nconst controllers_service_1 = require(\"../controllers/controllers.service\");\nconst effect_service_1 = require(\"../effect/effect.service\");\nconst components_service_1 = require(\"../components/components.service\");\nconst bootstraps_service_1 = require(\"../bootstraps/bootstraps.service\");\nconst services_service_1 = require(\"../services/services.service\");\nconst reflect_decorator_1 = require(\"../../helpers/reflect.decorator\");\nlet ModuleService = class ModuleService {\n constructor() {\n this.watcherService = constructor_watcher_1.constructorWatcherService;\n }\n setServices(services, original, currentModule) {\n services.forEach((service) => {\n this.validators.validateServices(service, original);\n this.setInjectedDependencies(service);\n if (service.provide && service.provide.constructor === Function) {\n service.provide = service.provide['name'];\n }\n if (service.provide && service.useFactory) {\n this.setUseFactory(service);\n }\n else if (service.provide &&\n service.useClass &&\n service.useClass.constructor === Function) {\n this.setUseClass(service);\n }\n else if (service.provide && service.useValue) {\n this.setUseValue(service);\n }\n else {\n currentModule.putItem({ data: service, key: service.name });\n this.servicesService.register(service);\n }\n });\n }\n setInjectedDependencies(service) {\n service.deps = service.deps || [];\n if (service.deps.length) {\n service.deps = service.deps.map((dep) => container_1.Container.get(dep));\n }\n }\n setUseValue(service) {\n container_1.Container.set(service.provide, service.useValue);\n if (service.lazy) {\n this.lazyFactoryService.setLazyFactory(service.provide, (0, rxjs_1.of)(container_1.Container.get(service.provide)));\n }\n }\n setUseClass(service) {\n if (service.lazy) {\n this.lazyFactoryService.setLazyFactory(service.provide, (0, rxjs_1.of)(container_1.Container.get(service.useClass)));\n }\n else {\n container_1.Container.set(service.provide, container_1.Container.get(service.useClass));\n }\n }\n setUseFactory(service) {\n const factory = service.useFactory;\n service.useFactory = () => factory(...service.deps);\n if (service.lazy) {\n this.lazyFactoryService.setLazyFactory(service.provide, service.useFactory());\n }\n else {\n container_1.Container.set(service.provide, service.useFactory());\n }\n }\n setControllers(controllers, original, currentModule) {\n controllers.forEach((controller) => {\n this.validators.validateController(controller, original);\n currentModule.putItem({\n data: controller,\n key: controller.name,\n });\n this.controllersService.register(controller);\n });\n }\n setEffects(effects, original, currentModule) {\n effects.forEach((effect) => {\n this.validators.validateEffect(effect, original);\n currentModule.putItem({\n data: effect,\n key: effect.name,\n });\n this.effectsService.register(effect);\n });\n }\n setComponents(components, original, currentModule) {\n components.forEach((component) => {\n if (!component['metadata']) {\n (0, reflect_decorator_1.ReflectDecorator)({}, { type: 'component' })(component);\n }\n this.validators.validateComponent(component, original);\n currentModule.putItem({\n data: component,\n key: component.name,\n });\n this.componentsService.register(component);\n });\n }\n setPlugins(plugins, original, currentModule) {\n plugins.forEach((plugin) => {\n this.validators.validatePlugin(plugin, original);\n currentModule.putItem({\n data: plugin,\n key: plugin.name,\n });\n this.pluginService.register(plugin);\n });\n }\n setBootstraps(bootstraps, original, currentModule) {\n bootstraps.forEach((bootstrap) => {\n if (!bootstrap['metadata']) {\n (0, reflect_decorator_1.ReflectDecorator)({}, { type: 'component' })(bootstrap);\n }\n this.validators.validateEmpty(bootstrap, original, bootstrap['metadata']['type']);\n currentModule.putItem({\n data: bootstrap,\n key: bootstrap.name,\n });\n this.bootstraps.register(bootstrap);\n });\n }\n setAfterPlugins(plugins, original, currentModule) {\n plugins.forEach((plugin) => {\n this.validators.validatePlugin(plugin, original);\n currentModule.putItem({\n data: plugin,\n key: plugin.name,\n });\n this.pluginService.registerAfter(plugin);\n });\n }\n setBeforePlugins(plugins, original, currentModule) {\n plugins.forEach((plugin) => {\n this.validators.validatePlugin(plugin, original);\n currentModule.putItem({\n data: plugin,\n key: plugin.name,\n });\n this.pluginService.registerBefore(plugin);\n });\n }\n setImports(imports, original) {\n imports.forEach((m) => {\n this.validators.validateImports(m, original);\n if (!m) {\n throw new Error('Missing import module');\n }\n else {\n container_1.Container.get(m);\n }\n });\n }\n};\n__decorate([\n (0, injector_decorator_1.Injector)(lazy_factory_service_1.LazyFactory),\n __metadata(\"design:type\", lazy_factory_service_1.LazyFactory)\n], ModuleService.prototype, \"lazyFactoryService\", void 0);\n__decorate([\n (0, injector_decorator_1.Injector)(plugin_service_1.PluginService),\n __metadata(\"design:type\", plugin_service_1.PluginService)\n], ModuleService.prototype, \"pluginService\", void 0);\n__decorate([\n (0, injector_decorator_1.Injector)(components_service_1.ComponentsService),\n __metadata(\"design:type\", components_service_1.ComponentsService)\n], ModuleService.prototype, \"componentsService\", void 0);\n__decorate([\n (0, injector_decorator_1.Injector)(controllers_service_1.ControllersService),\n __metadata(\"design:type\", controllers_service_1.ControllersService)\n], ModuleService.prototype, \"controllersService\", void 0);\n__decorate([\n (0, injector_decorator_1.Injector)(effect_service_1.EffectsService),\n __metadata(\"design:type\", effect_service_1.EffectsService)\n], ModuleService.prototype, \"effectsService\", void 0);\n__decorate([\n (0, injector_decorator_1.Injector)(bootstraps_service_1.BootstrapsServices),\n __metadata(\"design:type\", bootstraps_service_1.BootstrapsServices)\n], ModuleService.prototype, \"bootstraps\", void 0);\n__decorate([\n (0, injector_decorator_1.Injector)(validators_1.ModuleValidators),\n __metadata(\"design:type\", validators_1.ModuleValidators)\n], ModuleService.prototype, \"validators\", void 0);\n__decorate([\n (0, injector_decorator_1.Injector)(services_service_1.ServicesService),\n __metadata(\"design:type\", services_service_1.ServicesService)\n], ModuleService.prototype, \"servicesService\", void 0);\nModuleService = __decorate([\n (0, Service_1.Service)()\n], ModuleService);\nexports.ModuleService = ModuleService;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./module.service\"), exports);\n__exportStar(require(\"./helpers/validators\"), exports);\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResolverService = void 0;\nconst container_1 = require(\"../../container\");\nconst cache_layer_service_1 = require(\"../cache/cache-layer.service\");\nconst events_1 = require(\"../../helpers/events\");\nconst operators_1 = require(\"rxjs/operators\");\nconst rxjs_1 = require(\"rxjs\");\nconst bootstrap_logger_1 = require(\"../bootstrap-logger/bootstrap-logger\");\nconst injector_decorator_1 = require(\"../../decorators/injector/injector.decorator\");\nconst Service_1 = require(\"../../decorators/service/Service\");\nlet ResolverService = class ResolverService {\n resolveDependencies(hash, target, moduleName) {\n this.cacheService\n .getLayer(events_1.InternalLayers.modules)\n .putItem({ key: hash, data: target });\n const currentModule = this.cacheService.getLayer(hash);\n currentModule.putItem({\n key: events_1.InternalEvents.config,\n data: { moduleName, moduleHash: hash }\n });\n return currentModule.getItemObservable(events_1.InternalEvents.load).pipe((0, operators_1.switchMap)(config => {\n if (!config.data) {\n return (0, rxjs_1.of)(null);\n }\n return currentModule.items.asObservable();\n }), (0, operators_1.filter)(res => res && res.length), (0, operators_1.map)(this.resolveContainerDependencies(target, moduleName)));\n }\n resolveContainerDependencies(target, moduleName) {\n return res => {\n res.forEach(i => {\n if (i.key === events_1.InternalEvents.load || i.key === events_1.InternalEvents.config) {\n return;\n }\n const found = this.cacheService.searchForItem(i.data);\n if (found) {\n if (found.provide) {\n return found;\n }\n const moduleType = found.metadata.type.charAt(0).toUpperCase() +\n found.metadata.type.slice(1);\n this.bootstrapLogger.log(`Start -> @Module('${moduleName}')${this.bootstrapLogger.logHashes(`(${target.name})`)}: @${moduleType}('${found.originalName}')${this.bootstrapLogger.logHashes(`(${found.name})`)}` +\n ' initialized!');\n return container_1.Container.get(found);\n }\n else {\n throw new Error('not found');\n }\n });\n return res;\n };\n }\n};\n__decorate([\n (0, injector_decorator_1.Injector)(bootstrap_logger_1.BootstrapLogger),\n __metadata(\"design:type\", bootstrap_logger_1.BootstrapLogger)\n], ResolverService.prototype, \"bootstrapLogger\", void 0);\n__decorate([\n (0, injector_decorator_1.Injector)(cache_layer_service_1.CacheService),\n __metadata(\"design:type\", cache_layer_service_1.CacheService)\n], ResolverService.prototype, \"cacheService\", void 0);\nResolverService = __decorate([\n (0, Service_1.Service)()\n], ResolverService);\nexports.ResolverService = ResolverService;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./resolver.service\"), exports);\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AfterStarterService = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst rxjs_1 = require(\"rxjs\");\nlet AfterStarterService = class AfterStarterService {\n constructor() {\n this.appStarted = new rxjs_1.Subject();\n }\n};\nAfterStarterService = __decorate([\n (0, Service_1.Service)()\n], AfterStarterService);\nexports.AfterStarterService = AfterStarterService;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logExtendedInjectables = void 0;\nconst Container_1 = require(\"../container/Container\");\nconst logExtendedInjectables = (name, logExtendedInjectables) => {\n if (Container_1.Container.has(name) && logExtendedInjectables) {\n console.log(`Warn: Injection Token '${name.name ||\n name}' is extended after it has being declared! ${JSON.stringify(Container_1.Container.get(name))}`);\n }\n};\nexports.logExtendedInjectables = logExtendedInjectables;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BootstrapService = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst container_1 = require(\"../../container\");\nconst bootstrap_logger_1 = require(\"../bootstrap-logger/bootstrap-logger\");\nconst cache_layer_service_1 = require(\"../cache/cache-layer.service\");\nconst events_1 = require(\"../../helpers/events\");\nconst lazy_factory_service_1 = require(\"../lazy-factory/lazy-factory.service\");\nconst config_service_1 = require(\"../config/config.service\");\nconst plugin_service_1 = require(\"../plugin/plugin.service\");\nconst operators_1 = require(\"rxjs/operators\");\nconst effect_service_1 = require(\"../effect/effect.service\");\nconst controllers_service_1 = require(\"../controllers/controllers.service\");\nconst components_service_1 = require(\"../components/components.service\");\nconst bootstraps_service_1 = require(\"../bootstraps/bootstraps.service\");\nconst services_service_1 = require(\"../services/services.service\");\nconst after_starter_service_1 = require(\"../after-starter/after-starter.service\");\nconst log_1 = require(\"../../helpers/log\");\nconst Service_1 = require(\"../../decorators/service/Service\");\nlet BootstrapService = class BootstrapService {\n constructor(logger, cacheService, lazyFactoriesService, configService, controllersService, effectsService, pluginService, componentsService, bootstrapsService, servicesService, afterStarterService) {\n this.logger = logger;\n this.cacheService = cacheService;\n this.lazyFactoriesService = lazyFactoriesService;\n this.configService = configService;\n this.controllersService = controllersService;\n this.effectsService = effectsService;\n this.pluginService = pluginService;\n this.componentsService = componentsService;\n this.bootstrapsService = bootstrapsService;\n this.servicesService = servicesService;\n this.afterStarterService = afterStarterService;\n this.globalConfig = this.cacheService.createLayer({\n name: events_1.InternalLayers.globalConfig\n });\n }\n start(app, config) {\n this.configService.setConfig(config);\n this.globalConfig.putItem({ key: events_1.InternalEvents.config, data: config });\n container_1.Container.get(app);\n const lazyFactoryKeys = Array.from(this.lazyFactoriesService.lazyFactories.keys());\n return (0, rxjs_1.of)(lazyFactoryKeys).pipe((0, operators_1.map)(factories => this.prepareAsyncChainables(factories)), (0, operators_1.switchMap)(res => (0, rxjs_1.combineLatest)(res).pipe((0, operators_1.take)(1), (0, operators_1.map)(c => this.attachLazyLoadedChainables(lazyFactoryKeys, c)), (0, operators_1.map)(() => this.validateSystem()), (0, operators_1.switchMap)(() => (0, rxjs_1.combineLatest)(this.asyncChainableControllers())), (0, operators_1.switchMap)(() => (0, rxjs_1.combineLatest)(this.asyncChainablePluginsBeforeRegister())), (0, operators_1.switchMap)(() => (0, rxjs_1.combineLatest)(this.asyncChainablePluginsRegister())), (0, operators_1.switchMap)(() => (0, rxjs_1.combineLatest)(this.asyncChainablePluginsAfterRegister())), (0, operators_1.switchMap)(() => (0, rxjs_1.combineLatest)(this.asyncChainableServices())), (0, operators_1.switchMap)(() => (0, rxjs_1.combineLatest)(this.asyncChainableEffects())), (0, operators_1.switchMap)(() => (0, rxjs_1.combineLatest)(this.asyncChainableComponents())), (0, operators_1.map)(() => this.loadApplication()), (0, operators_1.switchMap)(() => (0, rxjs_1.combineLatest)(this.asyncChainableBootstraps())), (0, operators_1.map)(() => this.final()))));\n }\n final() {\n this.afterStarterService.appStarted.next(true);\n if (!this.configService.config.init) {\n this.logger.log('Bootstrap -> press start!');\n }\n return container_1.Container;\n }\n asyncChainableComponents() {\n return [\n (0, rxjs_1.of)(true),\n ...this.componentsService\n .getComponents()\n .filter(c => this.genericFilter(c, 'components'))\n .map((c) => __awaiter(this, void 0, void 0, function* () { return yield container_1.Container.get(c); }))\n ];\n }\n asyncChainableBootstraps() {\n return [\n (0, rxjs_1.of)(true),\n ...this.bootstrapsService\n .getBootstraps()\n .map((c) => __awaiter(this, void 0, void 0, function* () { return yield container_1.Container.get(c); }))\n ];\n }\n asyncChainableEffects() {\n return [\n (0, rxjs_1.of)(true),\n ...this.effectsService\n .getEffects()\n .filter(c => this.genericFilter(c, 'effects'))\n .map((c) => __awaiter(this, void 0, void 0, function* () { return yield container_1.Container.get(c); }))\n ];\n }\n asyncChainableServices() {\n return [\n (0, rxjs_1.of)(true),\n ...this.servicesService\n .getServices()\n .filter(c => this.genericFilter(c, 'services'))\n .map((c) => __awaiter(this, void 0, void 0, function* () { return yield container_1.Container.get(c); }))\n ];\n }\n asyncChainableControllers() {\n return [\n (0, rxjs_1.of)(true),\n ...this.controllersService\n .getControllers()\n .filter(c => this.genericFilter(c, 'controllers'))\n .map((c) => __awaiter(this, void 0, void 0, function* () { return yield container_1.Container.get(c); }))\n ];\n }\n asyncChainablePluginsRegister() {\n return [\n (0, rxjs_1.of)(true),\n ...this.pluginService\n .getPlugins()\n .filter(c => this.genericFilter(c, 'plugins'))\n .map((c) => __awaiter(this, void 0, void 0, function* () { return yield this.registerPlugin(c); }))\n ];\n }\n asyncChainablePluginsAfterRegister() {\n return [\n (0, rxjs_1.of)(true),\n ...this.pluginService\n .getAfterPlugins()\n .filter(c => this.genericFilter(c, 'pluginsAfter'))\n .map((c) => __awaiter(this, void 0, void 0, function* () { return yield this.registerPlugin(c); }))\n ];\n }\n asyncChainablePluginsBeforeRegister() {\n return [\n (0, rxjs_1.of)(true),\n ...this.pluginService\n .getBeforePlugins()\n .filter(c => this.genericFilter(c, 'pluginsBefore'))\n .map((c) => __awaiter(this, void 0, void 0, function* () { return yield this.registerPlugin(c); }))\n ];\n }\n genericFilter(c, name) {\n return (this.configService.config.initOptions[name] ||\n (c.metadata.options && c.metadata.options['init']) ||\n this.configService.config.init);\n }\n registerPlugin(pluggable) {\n return __awaiter(this, void 0, void 0, function* () {\n const plugin = container_1.Container.get(pluggable);\n if (typeof (plugin === null || plugin === void 0 ? void 0 : plugin.register) === 'function') {\n yield plugin.register();\n }\n return plugin;\n });\n }\n prepareAsyncChainables(injectables) {\n const asynChainables = [(0, rxjs_1.of)(true)];\n const injectableLog = {};\n const getName = n => n.name || n;\n injectables.map(i => {\n const date = Date.now();\n injectableLog[getName(i)] = {\n started: date,\n end: null\n };\n this.logger.log(`Bootstrap -> @Service('${getName(i)}'): loading...`);\n const somethingAsync = (0, rxjs_1.from)((this.lazyFactoriesService.getLazyFactory(i))).pipe((0, operators_1.shareReplay)(1));\n asynChainables.push(somethingAsync);\n somethingAsync.subscribe(() => {\n this.logger.log(`Bootstrap -> @Service('${getName(i)}'): loading finished after ${Date.now() -\n injectableLog[getName(i)].started}ms !`);\n delete injectableLog[getName(i)];\n });\n });\n return asynChainables;\n }\n validateSystem() {\n if (this.configService.config.strict) {\n this.cacheService.searchForDuplicateDependenciesInsideApp();\n }\n }\n attachLazyLoadedChainables(res, chainables) {\n // Remove first chainable unused observable\n chainables.splice(0, 1);\n let count = 0;\n res.map(name => {\n (0, log_1.logExtendedInjectables)(name, this.configService.config.experimental.logExtendedInjectables);\n container_1.Container.set(name, chainables[count++]);\n });\n return true;\n }\n loadApplication() {\n Array.from(this.cacheService.getLayer(events_1.InternalLayers.modules).map.keys()).forEach(m => this.cacheService.getLayer(m).putItem({\n key: events_1.InternalEvents.load,\n data: this.configService.config.init\n }));\n return true;\n }\n};\nBootstrapService = __decorate([\n (0, Service_1.Service)(),\n __metadata(\"design:paramtypes\", [bootstrap_logger_1.BootstrapLogger,\n cache_layer_service_1.CacheService,\n lazy_factory_service_1.LazyFactory,\n config_service_1.ConfigService,\n controllers_service_1.ControllersService,\n effect_service_1.EffectsService,\n plugin_service_1.PluginService,\n components_service_1.ComponentsService,\n bootstraps_service_1.BootstrapsServices,\n services_service_1.ServicesService,\n after_starter_service_1.AfterStarterService])\n], BootstrapService);\nexports.BootstrapService = BootstrapService;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exitHandlerInit = void 0;\nconst exit_handler_service_1 = require(\"../services/exit-handler/exit-handler.service\");\nconst container_1 = require(\"../container\");\nconst exitHandlerInit = () => {\n const handler = container_1.Container.get(exit_handler_service_1.ExitHandlerService);\n handler.init();\n // do something when app is closing\n process.on('exit', handler.exitHandler.bind(handler, { cleanup: true }));\n // catches ctrl+c event\n process.on('SIGINT', handler.exitHandler.bind(handler, { exit: true }));\n // catches 'kill pid' (for example: nodemon restart)\n process.on('SIGUSR1', handler.exitHandler.bind(handler, { exit: true }));\n process.on('SIGUSR2', handler.exitHandler.bind(handler, { exit: true }));\n // catches uncaught exceptions\n process.on('uncaughtException', handler.exitHandler.bind(handler, { exit: true }));\n};\nexports.exitHandlerInit = exitHandlerInit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTestBed = exports.setup = exports.BootstrapFramework = exports.BootstrapPromisify = exports.Bootstrap = void 0;\nrequire(\"@abraham/reflection\");\nconst container_1 = require(\"../container\");\nconst bootstrap_service_1 = require(\"../services/bootstrap/bootstrap.service\");\nconst exit_handler_1 = require(\"./exit-handler\");\n(0, exit_handler_1.exitHandlerInit)();\nconst bootstrapService = container_1.Container.get(bootstrap_service_1.BootstrapService);\nconst Bootstrap = (app, config) => bootstrapService.start(app, config);\nexports.Bootstrap = Bootstrap;\nconst BootstrapPromisify = (app, config) => bootstrapService.start(app, config).toPromise();\nexports.BootstrapPromisify = BootstrapPromisify;\nconst BootstrapFramework = (app, modules, config) => {\n bootstrapService.configService.setConfig(config);\n modules.map((m) => container_1.Container.get(m));\n return bootstrapService.start(app, config);\n};\nexports.BootstrapFramework = BootstrapFramework;\nconst setup = (options, frameworks = [], bootstrapOptions) => {\n const Module = require('../decorators/module/module.decorator').Module;\n return (0, exports.BootstrapFramework)(Module({\n imports: options.imports || [],\n providers: options.providers || [],\n services: options.services || [],\n bootstrap: options.bootstrap || [],\n components: options.components || [],\n controllers: options.controllers || [],\n effects: options.effects || [],\n plugins: options.plugins || [],\n afterPlugins: options.afterPlugins || [],\n beforePlugins: options.beforePlugins || [],\n })(function () { }), frameworks, bootstrapOptions);\n};\nexports.setup = setup;\nexports.createTestBed = exports.setup;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./bootstrap\"), exports);\n__exportStar(require(\"./create-unique-hash\"), exports);\n__exportStar(require(\"./generic-constructor\"), exports);\n__exportStar(require(\"./sha256\"), exports);\n// export * from './testing';\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetadataService = void 0;\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst helpers_1 = require(\"../../helpers\");\nlet MetadataService = class MetadataService {\n generateHashData(module, original) {\n const services = module.services || [];\n const imports = module.imports || [];\n const fillMetadata = (injectable) => {\n if (injectable && injectable['provide']) {\n return injectable['provide'];\n }\n else if (injectable) {\n this.validateCustomInjectable(injectable, module, original);\n return {\n moduleName: injectable['metadata']['moduleName'],\n hash: injectable['metadata']['moduleHash'],\n };\n }\n };\n return [\n [...services.map((i) => fillMetadata(i))],\n [...imports.map((i) => fillMetadata(i))],\n ];\n }\n validateCustomInjectableKeys(keys) {\n // keys.forEach(key => {\n // console.log('TOVA NE E SHEGA', key);\n // });\n }\n validateCustomInjectable(injectable, module, original) {\n if (!injectable['metadata'] && !injectable['provide']) {\n throw new Error(`\n ---- Wrong service ${JSON.stringify(injectable)} provided inside '${original.name}' ----\n @Module({\n services: ${JSON.stringify([\n ...module.services.filter((i) => !i['metadata']),\n ...module.services\n .filter((i) => i && i['metadata'] && i['metadata']['moduleName'])\n .map((i) => i['metadata']['moduleName']),\n ])}\n })\n ${JSON.stringify(`${original}`, null, 2)}\n\n Hint: System recieved Object but it is not with appropriate format you must provide object with following parameters:\n\n YourObject: ${JSON.stringify(injectable)}\n\n Option 1. [YourClass]\n\n Option 2. [{provide: 'your-value', useClass: YourClass}]\n\n Option 3. [{provide: 'your-value', deps: [YourClass], useFactory: (test: YourClass) => {}}]\n\n Option 4. [{provide: 'your-value', useValue: 'your-value'}]\n `);\n }\n }\n parseModuleTemplate(moduleName, generatedHashData, targetCurrentSymbol) {\n return `\n ---- @gapi module '${moduleName}' metadata----\n @Module({\n imports: ${JSON.stringify(generatedHashData[1], null, '\\t')},\n services: ${JSON.stringify(generatedHashData[0], null, '\\t')}\n })\n ${JSON.stringify(targetCurrentSymbol, null, 2)}\n `;\n }\n createUniqueHash(string) {\n return (0, helpers_1.createUniqueHash)(string);\n }\n};\nMetadataService = __decorate([\n (0, Service_1.Service)()\n], MetadataService);\nexports.MetadataService = MetadataService;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./metadata.service\"), exports);\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompressionService = void 0;\n// import { createReadStream, createWriteStream } from 'fs';\n// import { createGzip, createGunzip } from 'zlib';\n// import { Observable } from 'rxjs';\nconst Service_1 = require(\"../../decorators/service/Service\");\nconst injector_decorator_1 = require(\"../../decorators/injector/injector.decorator\");\nconst index_1 = require(\"../config/index\");\nlet CompressionService = class CompressionService {\n // public gZipFile(input: string, output: string, options: PrivateCryptoModel = { cyperIv: '', algorithm: '', cyperKey: '' }) {\n // const config = this.config.config.experimental.crypto || options;\n // return Observable.create(observer => {\n // createReadStream(input)\n // .pipe(createGzip())\n // // .pipe(createCipheriv(config.algorithm, config.cyperKey, config.cyperIv))\n // .pipe(createWriteStream(output))\n // .on('finish', () => observer.next(true))\n // .on('error', (err) => observer.error(err));\n // });\n // }\n // public readGzipFile(input: string, output: string, options: PrivateCryptoModel = { cyperIv: '', algorithm: '', cyperKey: '' }) {\n // const config = this.config.config.experimental.crypto || options;\n // return Observable.create(observer => {\n // createReadStream(input)\n // // .pipe(createDecipheriv(config.algorithm, config.cyperKey, config.cyperIv))\n // .pipe(createGunzip())\n // .pipe(createWriteStream(output))\n // .on('finish', () => observer.next(true))\n // .on('error', (err) => observer.error(err));\n // });\n // }\n gZipAll() {\n // var archiver = require('archiver');\n // var output = createWriteStream('./example.tar.gz');\n // var archive = archiver('tar', {\n // gzip: true,\n // zlib: { level: 9 } // Sets the compression level.\n // });\n // archive.on('error', function (err) {\n // throw err;\n // });\n // // pipe archive data to the output file\n // archive.pipe(output);\n // // append files\n // archive.file('/path/to/file0.txt', { name: 'file0-or-change-this-whatever.txt' });\n // archive.file('/path/to/README.md', { name: 'foobar.md' });\n // // Wait for streams to complete\n // archive.finalize();\n }\n};\n__decorate([\n (0, injector_decorator_1.Injector)(index_1.ConfigService),\n __metadata(\"design:type\", index_1.ConfigService)\n], CompressionService.prototype, \"config\", void 0);\nCompressionService = __decorate([\n (0, Service_1.Service)()\n], CompressionService);\nexports.CompressionService = CompressionService;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./compression.service\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./effect.service\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./controllers.service\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./components.service\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./bootstraps.service\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./services.service\"), exports);\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PluginManager = void 0;\nconst plugin_service_1 = require(\"../plugin/plugin.service\");\nconst Service_1 = require(\"../../decorators/service/Service\");\nlet PluginManager = class PluginManager {\n constructor(pluginService) {\n this.pluginService = pluginService;\n }\n listPlugins() {\n return this.pluginService.getPlugins();\n }\n getPlugin(pluginClass) {\n return this.pluginService\n .getPlugins()\n .filter(p => p.name === pluginClass.name)[0];\n }\n};\nPluginManager = __decorate([\n (0, Service_1.Service)(),\n __metadata(\"design:paramtypes\", [plugin_service_1.PluginService])\n], PluginManager);\nexports.PluginManager = PluginManager;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./cache/index\"), exports);\n__exportStar(require(\"./plugin/plugin.service\"), exports);\n__exportStar(require(\"./bootstrap-logger/index\"), exports);\n__exportStar(require(\"./exit-handler/index\"), exports);\n__exportStar(require(\"./module/index\"), exports);\n__exportStar(require(\"./resolver/index\"), exports);\n__exportStar(require(\"./config/index\"), exports);\n__exportStar(require(\"./metadata/index\"), exports);\n__exportStar(require(\"./compression/index\"), exports);\n__exportStar(require(\"./constructor-watcher/index\"), exports);\n__exportStar(require(\"./effect/index\"), exports);\n__exportStar(require(\"./controllers/index\"), exports);\n__exportStar(require(\"./components/index\"), exports);\n__exportStar(require(\"./bootstraps/index\"), exports);\n__exportStar(require(\"./services/index\"), exports);\n__exportStar(require(\"./plugin-manager/plugin-manager\"), exports);\n__exportStar(require(\"./after-starter/after-starter.service\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GenericConstruct = void 0;\nconst container_1 = require(\"../container\");\nconst services_1 = require(\"../services\");\nconst moduleService = container_1.Container.get(services_1.ModuleService);\nconst bootstrapLogger = container_1.Container.get(services_1.BootstrapLogger);\nfunction GenericConstruct(module, original, currentModule) {\n return function construct(constructor, args) {\n if (!module) {\n return new constructor();\n }\n if (module.imports) {\n moduleService.setImports(module.imports, original);\n }\n if (module.services) {\n moduleService.setServices(module.services, original, currentModule);\n }\n if (module.providers) {\n moduleService.setServices(module.providers, original, currentModule);\n }\n if (module.controllers) {\n moduleService.setControllers(module.controllers, original, currentModule);\n }\n if (module.effects) {\n moduleService.setEffects(module.effects, original, currentModule);\n }\n if (module.components) {\n moduleService.setComponents(module.components, original, currentModule);\n }\n if (module.beforePlugins) {\n moduleService.setBeforePlugins(module.beforePlugins, original, currentModule);\n }\n if (module.plugins) {\n moduleService.setPlugins(module.plugins, original, currentModule);\n }\n if (module.afterPlugins) {\n moduleService.setAfterPlugins(module.afterPlugins, original, currentModule);\n }\n if (module.bootstrap) {\n moduleService.setBootstraps(module.bootstrap, original, currentModule);\n }\n bootstrapLogger.log(`Bootstrap -> @Module('${constructor.originalName}')${bootstrapLogger.logHashes(`(${constructor.name})`)}: finished!`);\n return container_1.Container.get(constructor);\n };\n}\nexports.GenericConstruct = GenericConstruct;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NgModule = exports.Module = void 0;\nconst container_1 = require(\"../../container\");\nconst cache_layer_service_1 = require(\"../../services/cache/cache-layer.service\");\nconst generic_constructor_1 = require(\"../../helpers/generic-constructor\");\nconst bootstrap_logger_1 = require(\"../../services/bootstrap-logger/bootstrap-logger\");\nconst resolver_service_1 = require(\"../../services/resolver/resolver.service\");\nconst metadata_service_1 = require(\"../../services/metadata/metadata.service\");\nconst module_service_1 = require(\"../../services/module/module.service\");\nconst bootstrapLogger = container_1.Container.get(bootstrap_logger_1.BootstrapLogger);\nconst resolverService = container_1.Container.get(resolver_service_1.ResolverService);\nconst cacheService = container_1.Container.get(cache_layer_service_1.CacheService);\nconst metadataService = container_1.Container.get(metadata_service_1.MetadataService);\nconst moduleService = container_1.Container.get(module_service_1.ModuleService);\nfunction Module(module) {\n return (target) => {\n module = module || {};\n const original = Object.assign(target);\n const moduleName = target.name || target.constructor.name;\n const generatedHashData = metadataService.generateHashData(module, original);\n const uniqueModuleTemplate = metadataService.parseModuleTemplate(moduleName, generatedHashData, `${target}`);\n const uniqueHashForClass = metadataService.createUniqueHash(uniqueModuleTemplate);\n // console.log(`--------- ${moduleName} --------- Hash: ${uniqueHashForClass}---------`);\n // console.log(uniqueModuleTemplate);\n Object.defineProperty(original, 'originalName', { value: original.name || original.constructor.name, writable: false });\n Object.defineProperty(original, 'name', { value: uniqueHashForClass, writable: true });\n const currentModuleLayer = cacheService.createLayer({ name: uniqueHashForClass });\n original.metadata = {\n moduleName: original.originalName,\n moduleHash: uniqueHashForClass,\n options: null,\n type: 'module',\n raw: uniqueModuleTemplate\n };\n const constructorFunction = function (...args) {\n bootstrapLogger.log(`Bootstrap -> @Module('${original.originalName}')${bootstrapLogger.logHashes(`(${original.name})`)}: loading...`);\n return (0, generic_constructor_1.GenericConstruct)(module, original, currentModuleLayer)(original, args);\n };\n Object.assign(constructorFunction, original);\n resolverService.resolveDependencies(uniqueHashForClass, original, moduleName)\n .subscribe(() => bootstrapLogger.log(`Start -> @Module('${original.originalName}')${bootstrapLogger.logHashes(`(${original.name})`)}: loaded!`));\n Object.getOwnPropertyNames(original)\n .filter(prop => typeof original[prop] === 'function')\n .map(descriptor => Object.defineProperty(constructorFunction, descriptor, {\n configurable: true,\n writable: true,\n value: original[descriptor]\n }));\n if (original.forRoot) {\n const originalForRoot = constructorFunction.forRoot;\n constructorFunction.forRoot = function (...args) {\n const result = originalForRoot(...args);\n if (!result) {\n throw new Error(`forRoot configuration inside ${constructorFunction.name} is returning undefined or null`);\n }\n if (result.frameworkImports) {\n moduleService.setImports(result.frameworkImports, original);\n }\n if (result.services) {\n moduleService.setServices(result.services, original, currentModuleLayer);\n }\n if (result.providers) {\n moduleService.setServices(result.providers, original, currentModuleLayer);\n }\n if (result.components) {\n moduleService.setComponents(result.components, original, currentModuleLayer);\n }\n if (result.effects) {\n moduleService.setEffects(result.effects, original, currentModuleLayer);\n }\n if (result.controllers) {\n moduleService.setControllers(result.controllers, original, currentModuleLayer);\n }\n if (result.beforePlugins) {\n moduleService.setBeforePlugins(result.beforePlugins, original, currentModuleLayer);\n }\n if (result.plugins) {\n moduleService.setPlugins(result.plugins, original, currentModuleLayer);\n }\n if (result.afterPlugins) {\n moduleService.setAfterPlugins(result.afterPlugins, original, currentModuleLayer);\n }\n /** @angular compatability */\n if (result.ngModule) {\n return result.ngModule;\n }\n return result.module ? result.module : result;\n };\n }\n const service = {\n type: constructorFunction\n };\n container_1.Container.set(service);\n return constructorFunction;\n };\n}\nexports.Module = Module;\n/** @angular module compatability */\nexports.NgModule = Module;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./module.decorator\"), exports);\n__exportStar(require(\"./module.interfaces\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./injector.decorator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InjectSoft = void 0;\nconst container_1 = require(\"../../container\");\nconst module_service_1 = require(\"../../services/module/module.service\");\nfunction InjectSoft(Service) {\n return container_1.Container.get(module_service_1.ModuleService).watcherService.getByClass(Service);\n}\nexports.InjectSoft = InjectSoft;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./inject-soft.decorator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CannotInjectError = void 0;\n/**\n * Thrown when DI cannot inject value into property decorated by @Inject decorator.\n */\nclass CannotInjectError extends Error {\n constructor(target, propertyName) {\n super(`Cannot inject value into '${target.constructor.name}.${propertyName}'. ` +\n `Please make sure you setup @abraham/reflection properly and you don't use interfaces without service tokens as injection value.`);\n this.name = 'ServiceNotFoundError';\n Object.setPrototypeOf(this, CannotInjectError.prototype);\n }\n}\nexports.CannotInjectError = CannotInjectError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isClient = exports.getIdentifier = void 0;\nconst Token_1 = require(\"../container/Token\");\nconst CannotInjectError_1 = require(\"../container/error/CannotInjectError\");\nconst getIdentifier = (typeOrName, target, propertyName) => {\n let identifier;\n if (typeof typeOrName === 'string') {\n identifier = typeOrName;\n }\n else if (typeOrName instanceof Token_1.Token) {\n identifier = typeOrName;\n }\n else {\n identifier = typeOrName();\n }\n if (identifier === Object) {\n throw new CannotInjectError_1.CannotInjectError(target, propertyName);\n }\n return identifier;\n};\nexports.getIdentifier = getIdentifier;\nconst isClient = () => typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexports.isClient = isClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Inject = void 0;\nconst Container_1 = require(\"../../container/Container\");\nconst get_identifier_1 = require(\"../../helpers/get-identifier\");\n/**\n * Injects a service into a class property or constructor parameter.\n */\nfunction Inject(typeOrName) {\n return function (target, propertyName, index) {\n if ((0, get_identifier_1.isClient)() && typeOrName && typeof typeOrName === 'function') {\n Object.defineProperty(target, propertyName, {\n get: () => Container_1.Container.get(typeOrName)\n });\n return;\n }\n if (!typeOrName)\n typeOrName = () => Reflect.getMetadata('design:type', target, propertyName);\n Container_1.Container.registerHandler({\n object: target,\n propertyName: propertyName,\n index: index,\n value: instance => instance.get((0, get_identifier_1.getIdentifier)(typeOrName, target, propertyName))\n });\n };\n}\nexports.Inject = Inject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Controller = void 0;\nconst reflect_decorator_1 = require(\"../../helpers/reflect.decorator\");\nfunction Controller(options) {\n return (0, reflect_decorator_1.ReflectDecorator)(options, { type: 'controller' });\n}\nexports.Controller = Controller;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./controller.decorator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Effect = void 0;\nconst reflect_decorator_1 = require(\"../../helpers/reflect.decorator\");\nfunction Effect(options) {\n return (0, reflect_decorator_1.ReflectDecorator)(options, { type: 'effect' });\n}\nexports.Effect = Effect;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./effect.decorator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Plugin = void 0;\nconst reflect_decorator_1 = require(\"../../helpers/reflect.decorator\");\nfunction Plugin(options) {\n return (0, reflect_decorator_1.ReflectDecorator)(options, { type: 'plugin' });\n}\nexports.Plugin = Plugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Component = void 0;\nconst reflect_decorator_1 = require(\"../../helpers/reflect.decorator\");\nfunction Component(options) {\n return (0, reflect_decorator_1.ReflectDecorator)(options, { type: 'component' });\n}\nexports.Component = Component;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./component.decorator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InjectMany = void 0;\nconst Container_1 = require(\"../../container/Container\");\nconst Token_1 = require(\"../../container/Token\");\nconst get_identifier_1 = require(\"../../helpers/get-identifier\");\n/**\n * Injects a service into a class property or constructor parameter.\n */\nfunction InjectMany(typeOrName) {\n return function (target, propertyName, index) {\n if ((0, get_identifier_1.isClient)() && typeOrName instanceof Token_1.Token) {\n Object.defineProperty(target, propertyName, {\n get: () => Container_1.Container.getMany((0, get_identifier_1.getIdentifier)(typeOrName, target, propertyName))\n });\n return;\n }\n if (!typeOrName) {\n typeOrName = () => Reflect.getMetadata('design:type', target, propertyName);\n }\n Container_1.Container.registerHandler({\n object: target,\n propertyName: propertyName,\n index: index,\n value: instance => instance.getMany((0, get_identifier_1.getIdentifier)(typeOrName, target, propertyName))\n });\n };\n}\nexports.InjectMany = InjectMany;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Injectable = void 0;\n__exportStar(require(\"./module/index\"), exports);\n__exportStar(require(\"./injector/index\"), exports);\n__exportStar(require(\"./inject-soft/index\"), exports);\n__exportStar(require(\"./inject/Inject\"), exports);\n__exportStar(require(\"./controller/index\"), exports);\n__exportStar(require(\"./effect/index\"), exports);\n__exportStar(require(\"./plugin/Plugin\"), exports);\n__exportStar(require(\"./service/Service\"), exports);\n__exportStar(require(\"./component/index\"), exports);\n__exportStar(require(\"./inject-many/InjectMany\"), exports);\nvar Service_1 = require(\"./service/Service\");\nObject.defineProperty(exports, \"Injectable\", { enumerable: true, get: function () { return Service_1.Service; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"@abraham/reflection\");\n__exportStar(require(\"./container/index\"), exports);\n__exportStar(require(\"./decorators/index\"), exports);\n__exportStar(require(\"./helpers/index\"), exports);\n__exportStar(require(\"./services/index\"), exports);\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nvar _default = nodejsCustomInspectSymbol;\nexports.default = _default;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inspect;\n\nvar _nodejsCustomInspectSymbol = _interopRequireDefault(require(\"./nodejsCustomInspectSymbol\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n // $FlowFixMe(>=0.90.0)\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(_nodejsCustomInspectSymbol.default)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.visit = visit;\nexports.visitInParallel = visitInParallel;\nexports.visitWithTypeInfo = visitWithTypeInfo;\nexports.getVisitFn = getVisitFn;\nexports.BREAK = exports.QueryDocumentKeys = void 0;\n\nvar _inspect = _interopRequireDefault(require(\"../jsutils/inspect\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexports.QueryDocumentKeys = QueryDocumentKeys;\nvar BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexports.BREAK = BREAK;\n\nfunction visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error('Invalid AST Node: ' + (0, _inspect.default)(node));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : visitorKeys[node.kind] || [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n\nfunction isNode(maybeNode) {\n return Boolean(maybeNode && typeof maybeNode.kind === 'string');\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nfunction visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\n\nfunction visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","const genericMessage = \"Invariant Violation\";\nconst {\n setPrototypeOf = function (obj: any, proto: any) {\n obj.__proto__ = proto;\n return obj;\n },\n} = Object as any;\n\nexport class InvariantError extends Error {\n framesToPop = 1;\n name = genericMessage;\n constructor(message: string | number = genericMessage) {\n super(\n typeof message === \"number\"\n ? `${genericMessage}: ${message} (see https://github.com/apollographql/invariant-packages)`\n : message\n );\n setPrototypeOf(this, InvariantError.prototype);\n }\n}\n\nexport function invariant(condition: any, message?: string | number) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\n\nfunction wrapConsoleMethod(method: \"warn\" | \"error\") {\n return function () {\n return console[method].apply(console, arguments as any);\n } as (...args: any[]) => void;\n}\n\nexport namespace invariant {\n export const warn = wrapConsoleMethod(\"warn\");\n export const error = wrapConsoleMethod(\"error\");\n}\n\n// Code that uses ts-invariant with rollup-plugin-invariant may want to\n// import this process stub to avoid errors evaluating process.env.NODE_ENV.\n// However, because most ESM-to-CJS compilers will rewrite the process import\n// as tsInvariant.process, which prevents proper replacement by minifiers, we\n// also attempt to define the stub globally when it is not already defined.\nlet processStub: NodeJS.Process = { env: {} } as any;\nexport { processStub as process };\nif (typeof process === \"object\") {\n processStub = process;\n} else try {\n // Using Function to evaluate this assignment in global scope also escapes\n // the strict mode of the current module, thereby allowing the assignment.\n // Inspired by https://github.com/facebook/regenerator/pull/369.\n Function(\"stub\", \"process = stub\")(processStub);\n} catch (atLeastWeTried) {\n // The assignment can fail if a Content Security Policy heavy-handedly\n // forbids Function usage. In those environments, developers should take\n // extra care to replace process.env.NODE_ENV in their production builds,\n // or define an appropriate global.process polyfill.\n}\n\nexport default invariant;\n","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","const { toString, hasOwnProperty } = Object.prototype;\nconst previousComparisons = new Map>();\n\n/**\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\n */\nexport function equal(a: any, b: any): boolean {\n try {\n return check(a, b);\n } finally {\n previousComparisons.clear();\n }\n}\n\n// Allow default imports as well.\nexport default equal;\n\nfunction check(a: any, b: any): boolean {\n // If the two values are strictly equal, our job is easy.\n if (a === b) {\n return true;\n }\n\n // Object.prototype.toString returns a representation of the runtime type of\n // the given value that is considerably more precise than typeof.\n const aTag = toString.call(a);\n const bTag = toString.call(b);\n\n // If the runtime types of a and b are different, they could maybe be equal\n // under some interpretation of equality, but for simplicity and performance\n // we just return false instead.\n if (aTag !== bTag) {\n return false;\n }\n\n switch (aTag) {\n case '[object Array]':\n // Arrays are a lot like other objects, but we can cheaply compare their\n // lengths as a short-cut before comparing their elements.\n if (a.length !== b.length) return false;\n // Fall through to object case...\n case '[object Object]': {\n if (previouslyCompared(a, b)) return true;\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n\n // If `a` and `b` have a different number of enumerable keys, they\n // must be different.\n const keyCount = aKeys.length;\n if (keyCount !== bKeys.length) return false;\n\n // Now make sure they have the same keys.\n for (let k = 0; k < keyCount; ++k) {\n if (!hasOwnProperty.call(b, aKeys[k])) {\n return false;\n }\n }\n\n // Finally, check deep equality of all child properties.\n for (let k = 0; k < keyCount; ++k) {\n const key = aKeys[k];\n if (!check(a[key], b[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n case '[object Error]':\n return a.name === b.name && a.message === b.message;\n\n case '[object Number]':\n // Handle NaN, which is !== itself.\n if (a !== a) return b !== b;\n // Fall through to shared +a === +b case...\n case '[object Boolean]':\n case '[object Date]':\n return +a === +b;\n\n case '[object RegExp]':\n case '[object String]':\n return a == `${b}`;\n\n case '[object Map]':\n case '[object Set]': {\n if (a.size !== b.size) return false;\n if (previouslyCompared(a, b)) return true;\n\n const aIterator = a.entries();\n const isMap = aTag === '[object Map]';\n\n while (true) {\n const info = aIterator.next();\n if (info.done) break;\n\n // If a instanceof Set, aValue === aKey.\n const [aKey, aValue] = info.value;\n\n // So this works the same way for both Set and Map.\n if (!b.has(aKey)) {\n return false;\n }\n\n // However, we care about deep equality of values only when dealing\n // with Map structures.\n if (isMap && !check(aValue, b.get(aKey))) {\n return false;\n }\n }\n\n return true;\n }\n }\n\n // Otherwise the values are not equal.\n return false;\n}\n\nfunction previouslyCompared(a: object, b: object): boolean {\n // Though cyclic references can make an object graph appear infinite from the\n // perspective of a depth-first traversal, the graph still contains a finite\n // number of distinct object references. We use the previousComparisons cache\n // to avoid comparing the same pair of object references more than once, which\n // guarantees termination (even if we end up comparing every object in one\n // graph to every object in the other graph, which is extremely unlikely),\n // while still allowing weird isomorphic structures (like rings with different\n // lengths) a chance to pass the equality test.\n let bSet = previousComparisons.get(a);\n if (bSet) {\n // Return true here because we can be sure false will be returned somewhere\n // else if the objects are not equivalent.\n if (bSet.has(b)) return true;\n } else {\n previousComparisons.set(a, bSet = new Set);\n }\n bSet.add(b);\n return false;\n}\n","/**\n * In order to make assertions easier, this function strips `symbol`'s from\n * the incoming data.\n *\n * This can be handy when running tests against `apollo-client` for example,\n * since it adds `symbol`'s to the data in the store. Jest's `toEqual`\n * function now covers `symbol`'s (https://github.com/facebook/jest/pull/3437),\n * which means all test data used in a `toEqual` comparison would also have to\n * include `symbol`'s, to pass. By stripping `symbol`'s from the cache data\n * we can compare against more simplified test data.\n */\nexport function stripSymbols(data: T): T {\n return JSON.parse(JSON.stringify(data));\n}\n","import {\n DirectiveNode,\n FieldNode,\n IntValueNode,\n FloatValueNode,\n StringValueNode,\n BooleanValueNode,\n ObjectValueNode,\n ListValueNode,\n EnumValueNode,\n NullValueNode,\n VariableNode,\n InlineFragmentNode,\n ValueNode,\n SelectionNode,\n NameNode,\n} from 'graphql';\n\nimport stringify from 'fast-json-stable-stringify';\nimport { InvariantError } from 'ts-invariant';\n\nexport interface IdValue {\n type: 'id';\n id: string;\n generated: boolean;\n typename: string | undefined;\n}\n\nexport interface JsonValue {\n type: 'json';\n json: any;\n}\n\nexport type ListValue = Array;\n\nexport type StoreValue =\n | number\n | string\n | string[]\n | IdValue\n | ListValue\n | JsonValue\n | null\n | undefined\n | void\n | Object;\n\nexport type ScalarValue = StringValueNode | BooleanValueNode | EnumValueNode;\n\nexport function isScalarValue(value: ValueNode): value is ScalarValue {\n return ['StringValue', 'BooleanValue', 'EnumValue'].indexOf(value.kind) > -1;\n}\n\nexport type NumberValue = IntValueNode | FloatValueNode;\n\nexport function isNumberValue(value: ValueNode): value is NumberValue {\n return ['IntValue', 'FloatValue'].indexOf(value.kind) > -1;\n}\n\nfunction isStringValue(value: ValueNode): value is StringValueNode {\n return value.kind === 'StringValue';\n}\n\nfunction isBooleanValue(value: ValueNode): value is BooleanValueNode {\n return value.kind === 'BooleanValue';\n}\n\nfunction isIntValue(value: ValueNode): value is IntValueNode {\n return value.kind === 'IntValue';\n}\n\nfunction isFloatValue(value: ValueNode): value is FloatValueNode {\n return value.kind === 'FloatValue';\n}\n\nfunction isVariable(value: ValueNode): value is VariableNode {\n return value.kind === 'Variable';\n}\n\nfunction isObjectValue(value: ValueNode): value is ObjectValueNode {\n return value.kind === 'ObjectValue';\n}\n\nfunction isListValue(value: ValueNode): value is ListValueNode {\n return value.kind === 'ListValue';\n}\n\nfunction isEnumValue(value: ValueNode): value is EnumValueNode {\n return value.kind === 'EnumValue';\n}\n\nfunction isNullValue(value: ValueNode): value is NullValueNode {\n return value.kind === 'NullValue';\n}\n\nexport function valueToObjectRepresentation(\n argObj: any,\n name: NameNode,\n value: ValueNode,\n variables?: Object,\n) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n } else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n } else if (isObjectValue(value)) {\n const nestedArgObj = {};\n value.fields.map(obj =>\n valueToObjectRepresentation(nestedArgObj, obj.name, obj.value, variables),\n );\n argObj[name.value] = nestedArgObj;\n } else if (isVariable(value)) {\n const variableValue = (variables || ({} as any))[value.name.value];\n argObj[name.value] = variableValue;\n } else if (isListValue(value)) {\n argObj[name.value] = value.values.map(listValue => {\n const nestedArgArrayObj = {};\n valueToObjectRepresentation(\n nestedArgArrayObj,\n name,\n listValue,\n variables,\n );\n return (nestedArgArrayObj as any)[name.value];\n });\n } else if (isEnumValue(value)) {\n argObj[name.value] = (value as EnumValueNode).value;\n } else if (isNullValue(value)) {\n argObj[name.value] = null;\n } else {\n throw new InvariantError(\n `The inline argument \"${name.value}\" of kind \"${(value as any).kind}\"` +\n 'is not supported. Use variables instead of inline arguments to ' +\n 'overcome this limitation.',\n );\n }\n}\n\nexport function storeKeyNameFromField(\n field: FieldNode,\n variables?: Object,\n): string {\n let directivesObj: any = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(directive => {\n directivesObj[directive.name.value] = {};\n\n if (directive.arguments) {\n directive.arguments.forEach(({ name, value }) =>\n valueToObjectRepresentation(\n directivesObj[directive.name.value],\n name,\n value,\n variables,\n ),\n );\n }\n });\n }\n\n let argObj: any = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(({ name, value }) =>\n valueToObjectRepresentation(argObj, name, value, variables),\n );\n }\n\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\n\nexport type Directives = {\n [directiveName: string]: {\n [argName: string]: any;\n };\n};\n\nconst KNOWN_DIRECTIVES: string[] = [\n 'connection',\n 'include',\n 'skip',\n 'client',\n 'rest',\n 'export',\n];\n\nexport function getStoreKeyName(\n fieldName: string,\n args?: Object,\n directives?: Directives,\n): string {\n if (\n directives &&\n directives['connection'] &&\n directives['connection']['key']\n ) {\n if (\n directives['connection']['filter'] &&\n (directives['connection']['filter'] as string[]).length > 0\n ) {\n const filterKeys = directives['connection']['filter']\n ? (directives['connection']['filter'] as string[])\n : [];\n filterKeys.sort();\n\n const queryArgs = args as { [key: string]: any };\n const filteredArgs = {} as { [key: string]: any };\n filterKeys.forEach(key => {\n filteredArgs[key] = queryArgs[key];\n });\n\n return `${directives['connection']['key']}(${JSON.stringify(\n filteredArgs,\n )})`;\n } else {\n return directives['connection']['key'];\n }\n }\n\n let completeFieldName: string = fieldName;\n\n if (args) {\n // We can't use `JSON.stringify` here since it's non-deterministic,\n // and can lead to different store key names being created even though\n // the `args` object used during creation has the same properties/values.\n const stringifiedArgs: string = stringify(args);\n completeFieldName += `(${stringifiedArgs})`;\n }\n\n if (directives) {\n Object.keys(directives).forEach(key => {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1) return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += `@${key}(${JSON.stringify(directives[key])})`;\n } else {\n completeFieldName += `@${key}`;\n }\n });\n }\n\n return completeFieldName;\n}\n\nexport function argumentsObjectFromField(\n field: FieldNode | DirectiveNode,\n variables: Object,\n): Object {\n if (field.arguments && field.arguments.length) {\n const argObj: Object = {};\n field.arguments.forEach(({ name, value }) =>\n valueToObjectRepresentation(argObj, name, value, variables),\n );\n return argObj;\n }\n\n return null;\n}\n\nexport function resultKeyNameFromField(field: FieldNode): string {\n return field.alias ? field.alias.value : field.name.value;\n}\n\nexport function isField(selection: SelectionNode): selection is FieldNode {\n return selection.kind === 'Field';\n}\n\nexport function isInlineFragment(\n selection: SelectionNode,\n): selection is InlineFragmentNode {\n return selection.kind === 'InlineFragment';\n}\n\nexport function isIdValue(idObject: StoreValue): idObject is IdValue {\n return idObject &&\n (idObject as IdValue | JsonValue).type === 'id' &&\n typeof (idObject as IdValue).generated === 'boolean';\n}\n\nexport type IdConfig = {\n id: string;\n typename: string | undefined;\n};\n\nexport function toIdValue(\n idConfig: string | IdConfig,\n generated = false,\n): IdValue {\n return {\n type: 'id',\n generated,\n ...(typeof idConfig === 'string'\n ? { id: idConfig, typename: undefined }\n : idConfig),\n };\n}\n\nexport function isJsonValue(jsonObject: StoreValue): jsonObject is JsonValue {\n return (\n jsonObject != null &&\n typeof jsonObject === 'object' &&\n (jsonObject as IdValue | JsonValue).type === 'json'\n );\n}\n\nfunction defaultValueFromVariable(node: VariableNode) {\n throw new InvariantError(`Variable nodes are not supported by valueFromNode`);\n}\n\nexport type VariableValue = (node: VariableNode) => any;\n\n/**\n * Evaluate a ValueNode and yield its value in its natural JS form.\n */\nexport function valueFromNode(\n node: ValueNode,\n onVariable: VariableValue = defaultValueFromVariable,\n): any {\n switch (node.kind) {\n case 'Variable':\n return onVariable(node);\n case 'NullValue':\n return null;\n case 'IntValue':\n return parseInt(node.value, 10);\n case 'FloatValue':\n return parseFloat(node.value);\n case 'ListValue':\n return node.values.map(v => valueFromNode(v, onVariable));\n case 'ObjectValue': {\n const value: { [key: string]: any } = {};\n for (const field of node.fields) {\n value[field.name.value] = valueFromNode(field.value, onVariable);\n }\n return value;\n }\n default:\n return node.value;\n }\n}\n","// Provides the methods that allow QueryManager to handle the `skip` and\n// `include` directives within GraphQL.\nimport {\n FieldNode,\n SelectionNode,\n VariableNode,\n BooleanValueNode,\n DirectiveNode,\n DocumentNode,\n ArgumentNode,\n ValueNode,\n} from 'graphql';\n\nimport { visit } from 'graphql/language/visitor';\n\nimport { invariant } from 'ts-invariant';\n\nimport { argumentsObjectFromField } from './storeUtils';\n\nexport type DirectiveInfo = {\n [fieldName: string]: { [argName: string]: any };\n};\n\nexport function getDirectiveInfoFromField(\n field: FieldNode,\n variables: Object,\n): DirectiveInfo {\n if (field.directives && field.directives.length) {\n const directiveObj: DirectiveInfo = {};\n field.directives.forEach((directive: DirectiveNode) => {\n directiveObj[directive.name.value] = argumentsObjectFromField(\n directive,\n variables,\n );\n });\n return directiveObj;\n }\n return null;\n}\n\nexport function shouldInclude(\n selection: SelectionNode,\n variables: { [name: string]: any } = {},\n): boolean {\n return getInclusionDirectives(\n selection.directives,\n ).every(({ directive, ifArgument }) => {\n let evaledValue: boolean = false;\n if (ifArgument.value.kind === 'Variable') {\n evaledValue = variables[(ifArgument.value as VariableNode).name.value];\n invariant(\n evaledValue !== void 0,\n `Invalid variable referenced in @${directive.name.value} directive.`,\n );\n } else {\n evaledValue = (ifArgument.value as BooleanValueNode).value;\n }\n return directive.name.value === 'skip' ? !evaledValue : evaledValue;\n });\n}\n\nexport function getDirectiveNames(doc: DocumentNode) {\n const names: string[] = [];\n\n visit(doc, {\n Directive(node) {\n names.push(node.name.value);\n },\n });\n\n return names;\n}\n\nexport function hasDirectives(names: string[], doc: DocumentNode) {\n return getDirectiveNames(doc).some(\n (name: string) => names.indexOf(name) > -1,\n );\n}\n\nexport function hasClientExports(document: DocumentNode) {\n return (\n document &&\n hasDirectives(['client'], document) &&\n hasDirectives(['export'], document)\n );\n}\n\nexport type InclusionDirectives = Array<{\n directive: DirectiveNode;\n ifArgument: ArgumentNode;\n}>;\n\nfunction isInclusionDirective({ name: { value } }: DirectiveNode): boolean {\n return value === 'skip' || value === 'include';\n}\n\nexport function getInclusionDirectives(\n directives: ReadonlyArray,\n): InclusionDirectives {\n return directives ? directives.filter(isInclusionDirective).map(directive => {\n const directiveArguments = directive.arguments;\n const directiveName = directive.name.value;\n\n invariant(\n directiveArguments && directiveArguments.length === 1,\n `Incorrect number of arguments for the @${directiveName} directive.`,\n );\n\n const ifArgument = directiveArguments[0];\n invariant(\n ifArgument.name && ifArgument.name.value === 'if',\n `Invalid argument for the @${directiveName} directive.`,\n );\n\n const ifValue: ValueNode = ifArgument.value;\n\n // means it has to be a variable value if this is a valid @skip or @include directive\n invariant(\n ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'),\n `Argument for the @${directiveName} directive must be a variable or a boolean value.`,\n );\n\n return { directive, ifArgument };\n }) : [];\n}\n\n","import { DocumentNode, FragmentDefinitionNode } from 'graphql';\nimport { invariant, InvariantError } from 'ts-invariant';\n\n/**\n * Returns a query document which adds a single query operation that only\n * spreads the target fragment inside of it.\n *\n * So for example a document of:\n *\n * ```graphql\n * fragment foo on Foo { a b c }\n * ```\n *\n * Turns into:\n *\n * ```graphql\n * { ...foo }\n *\n * fragment foo on Foo { a b c }\n * ```\n *\n * The target fragment will either be the only fragment in the document, or a\n * fragment specified by the provided `fragmentName`. If there is more than one\n * fragment, but a `fragmentName` was not defined then an error will be thrown.\n */\nexport function getFragmentQueryDocument(\n document: DocumentNode,\n fragmentName?: string,\n): DocumentNode {\n let actualFragmentName = fragmentName;\n\n // Build an array of all our fragment definitions that will be used for\n // validations. We also do some validations on the other definitions in the\n // document while building this list.\n const fragments: Array = [];\n document.definitions.forEach(definition => {\n // Throw an error if we encounter an operation definition because we will\n // define our own operation definition later on.\n if (definition.kind === 'OperationDefinition') {\n throw new InvariantError(\n `Found a ${definition.operation} operation${\n definition.name ? ` named '${definition.name.value}'` : ''\n }. ` +\n 'No operations are allowed when using a fragment as a query. Only fragments are allowed.',\n );\n }\n // Add our definition to the fragments array if it is a fragment\n // definition.\n if (definition.kind === 'FragmentDefinition') {\n fragments.push(definition);\n }\n });\n\n // If the user did not give us a fragment name then let us try to get a\n // name from a single fragment in the definition.\n if (typeof actualFragmentName === 'undefined') {\n invariant(\n fragments.length === 1,\n `Found ${\n fragments.length\n } fragments. \\`fragmentName\\` must be provided when there is not exactly 1 fragment.`,\n );\n actualFragmentName = fragments[0].name.value;\n }\n\n // Generate a query document with an operation that simply spreads the\n // fragment inside of it.\n const query: DocumentNode = {\n ...document,\n definitions: [\n {\n kind: 'OperationDefinition',\n operation: 'query',\n selectionSet: {\n kind: 'SelectionSet',\n selections: [\n {\n kind: 'FragmentSpread',\n name: {\n kind: 'Name',\n value: actualFragmentName,\n },\n },\n ],\n },\n },\n ...document.definitions,\n ],\n };\n\n return query;\n}\n","/**\n * Adds the properties of one or more source objects to a target object. Works exactly like\n * `Object.assign`, but as a utility to maintain support for IE 11.\n *\n * @see https://github.com/apollostack/apollo-client/pull/1009\n */\nexport function assign(a: A, b: B): A & B;\nexport function assign(a: A, b: B, c: C): A & B & C;\nexport function assign(a: A, b: B, c: C, d: D): A & B & C & D;\nexport function assign(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n): A & B & C & D & E;\nexport function assign(target: any, ...sources: Array): any;\nexport function assign(\n target: { [key: string]: any },\n ...sources: Array<{ [key: string]: any }>\n): { [key: string]: any } {\n sources.forEach(source => {\n if (typeof source === 'undefined' || source === null) {\n return;\n }\n Object.keys(source).forEach(key => {\n target[key] = source[key];\n });\n });\n return target;\n}\n","import {\n DocumentNode,\n OperationDefinitionNode,\n FragmentDefinitionNode,\n ValueNode,\n} from 'graphql';\n\nimport { invariant, InvariantError } from 'ts-invariant';\n\nimport { assign } from './util/assign';\n\nimport { valueToObjectRepresentation, JsonValue } from './storeUtils';\n\nexport function getMutationDefinition(\n doc: DocumentNode,\n): OperationDefinitionNode {\n checkDocument(doc);\n\n let mutationDef: OperationDefinitionNode | null = doc.definitions.filter(\n definition =>\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'mutation',\n )[0] as OperationDefinitionNode;\n\n invariant(mutationDef, 'Must contain a mutation definition.');\n\n return mutationDef;\n}\n\n// Checks the document for errors and throws an exception if there is an error.\nexport function checkDocument(doc: DocumentNode) {\n invariant(\n doc && doc.kind === 'Document',\n `Expecting a parsed GraphQL document. Perhaps you need to wrap the query \\\nstring in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql`,\n );\n\n const operations = doc.definitions\n .filter(d => d.kind !== 'FragmentDefinition')\n .map(definition => {\n if (definition.kind !== 'OperationDefinition') {\n throw new InvariantError(\n `Schema type definitions not allowed in queries. Found: \"${\n definition.kind\n }\"`,\n );\n }\n return definition;\n });\n\n invariant(\n operations.length <= 1,\n `Ambiguous GraphQL document: contains ${operations.length} operations`,\n );\n\n return doc;\n}\n\nexport function getOperationDefinition(\n doc: DocumentNode,\n): OperationDefinitionNode | undefined {\n checkDocument(doc);\n return doc.definitions.filter(\n definition => definition.kind === 'OperationDefinition',\n )[0] as OperationDefinitionNode;\n}\n\nexport function getOperationDefinitionOrDie(\n document: DocumentNode,\n): OperationDefinitionNode {\n const def = getOperationDefinition(document);\n invariant(def, `GraphQL document is missing an operation`);\n return def;\n}\n\nexport function getOperationName(doc: DocumentNode): string | null {\n return (\n doc.definitions\n .filter(\n definition =>\n definition.kind === 'OperationDefinition' && definition.name,\n )\n .map((x: OperationDefinitionNode) => x.name.value)[0] || null\n );\n}\n\n// Returns the FragmentDefinitions from a particular document as an array\nexport function getFragmentDefinitions(\n doc: DocumentNode,\n): FragmentDefinitionNode[] {\n return doc.definitions.filter(\n definition => definition.kind === 'FragmentDefinition',\n ) as FragmentDefinitionNode[];\n}\n\nexport function getQueryDefinition(doc: DocumentNode): OperationDefinitionNode {\n const queryDef = getOperationDefinition(doc) as OperationDefinitionNode;\n\n invariant(\n queryDef && queryDef.operation === 'query',\n 'Must contain a query definition.',\n );\n\n return queryDef;\n}\n\nexport function getFragmentDefinition(\n doc: DocumentNode,\n): FragmentDefinitionNode {\n invariant(\n doc.kind === 'Document',\n `Expecting a parsed GraphQL document. Perhaps you need to wrap the query \\\nstring in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql`,\n );\n\n invariant(\n doc.definitions.length <= 1,\n 'Fragment must have exactly one definition.',\n );\n\n const fragmentDef = doc.definitions[0] as FragmentDefinitionNode;\n\n invariant(\n fragmentDef.kind === 'FragmentDefinition',\n 'Must be a fragment definition.',\n );\n\n return fragmentDef as FragmentDefinitionNode;\n}\n\n/**\n * Returns the first operation definition found in this document.\n * If no operation definition is found, the first fragment definition will be returned.\n * If no definitions are found, an error will be thrown.\n */\nexport function getMainDefinition(\n queryDoc: DocumentNode,\n): OperationDefinitionNode | FragmentDefinitionNode {\n checkDocument(queryDoc);\n\n let fragmentDefinition;\n\n for (let definition of queryDoc.definitions) {\n if (definition.kind === 'OperationDefinition') {\n const operation = (definition as OperationDefinitionNode).operation;\n if (\n operation === 'query' ||\n operation === 'mutation' ||\n operation === 'subscription'\n ) {\n return definition as OperationDefinitionNode;\n }\n }\n if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {\n // we do this because we want to allow multiple fragment definitions\n // to precede an operation definition.\n fragmentDefinition = definition as FragmentDefinitionNode;\n }\n }\n\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n\n throw new InvariantError(\n 'Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.',\n );\n}\n\n/**\n * This is an interface that describes a map from fragment names to fragment definitions.\n */\nexport interface FragmentMap {\n [fragmentName: string]: FragmentDefinitionNode;\n}\n\n// Utility function that takes a list of fragment definitions and makes a hash out of them\n// that maps the name of the fragment to the fragment definition.\nexport function createFragmentMap(\n fragments: FragmentDefinitionNode[] = [],\n): FragmentMap {\n const symTable: FragmentMap = {};\n fragments.forEach(fragment => {\n symTable[fragment.name.value] = fragment;\n });\n\n return symTable;\n}\n\nexport function getDefaultValues(\n definition: OperationDefinitionNode | undefined,\n): { [key: string]: JsonValue } {\n if (\n definition &&\n definition.variableDefinitions &&\n definition.variableDefinitions.length\n ) {\n const defaultValues = definition.variableDefinitions\n .filter(({ defaultValue }) => defaultValue)\n .map(\n ({ variable, defaultValue }): { [key: string]: JsonValue } => {\n const defaultValueObj: { [key: string]: JsonValue } = {};\n valueToObjectRepresentation(\n defaultValueObj,\n variable.name,\n defaultValue as ValueNode,\n );\n\n return defaultValueObj;\n },\n );\n\n return assign({}, ...defaultValues);\n }\n\n return {};\n}\n\n/**\n * Returns the names of all variables declared by the operation.\n */\nexport function variablesInOperation(\n operation: OperationDefinitionNode,\n): Set {\n const names = new Set();\n if (operation.variableDefinitions) {\n for (const definition of operation.variableDefinitions) {\n names.add(definition.variable.name.value);\n }\n }\n\n return names;\n}\n","export function filterInPlace(\n array: T[],\n test: (elem: T) => boolean,\n context?: any,\n): T[] {\n let target = 0;\n array.forEach(function (elem, i) {\n if (test.call(this, elem, i, array)) {\n array[target++] = elem;\n }\n }, context);\n array.length = target;\n return array;\n}\n","import {\n DocumentNode,\n SelectionNode,\n SelectionSetNode,\n OperationDefinitionNode,\n FieldNode,\n DirectiveNode,\n FragmentDefinitionNode,\n ArgumentNode,\n FragmentSpreadNode,\n VariableDefinitionNode,\n VariableNode,\n} from 'graphql';\nimport { visit } from 'graphql/language/visitor';\n\nimport {\n checkDocument,\n getOperationDefinition,\n getFragmentDefinition,\n getFragmentDefinitions,\n createFragmentMap,\n FragmentMap,\n getMainDefinition,\n} from './getFromAST';\nimport { filterInPlace } from './util/filterInPlace';\nimport { invariant } from 'ts-invariant';\nimport { isField, isInlineFragment } from './storeUtils';\n\nexport type RemoveNodeConfig = {\n name?: string;\n test?: (node: N) => boolean;\n remove?: boolean;\n};\n\nexport type GetNodeConfig = {\n name?: string;\n test?: (node: N) => boolean;\n};\n\nexport type RemoveDirectiveConfig = RemoveNodeConfig;\nexport type GetDirectiveConfig = GetNodeConfig;\nexport type RemoveArgumentsConfig = RemoveNodeConfig;\nexport type GetFragmentSpreadConfig = GetNodeConfig;\nexport type RemoveFragmentSpreadConfig = RemoveNodeConfig;\nexport type RemoveFragmentDefinitionConfig = RemoveNodeConfig<\n FragmentDefinitionNode\n>;\nexport type RemoveVariableDefinitionConfig = RemoveNodeConfig<\n VariableDefinitionNode\n>;\n\nconst TYPENAME_FIELD: FieldNode = {\n kind: 'Field',\n name: {\n kind: 'Name',\n value: '__typename',\n },\n};\n\nfunction isEmpty(\n op: OperationDefinitionNode | FragmentDefinitionNode,\n fragments: FragmentMap,\n): boolean {\n return op.selectionSet.selections.every(\n selection =>\n selection.kind === 'FragmentSpread' &&\n isEmpty(fragments[selection.name.value], fragments),\n );\n}\n\nfunction nullIfDocIsEmpty(doc: DocumentNode) {\n return isEmpty(\n getOperationDefinition(doc) || getFragmentDefinition(doc),\n createFragmentMap(getFragmentDefinitions(doc)),\n )\n ? null\n : doc;\n}\n\nfunction getDirectiveMatcher(\n directives: (RemoveDirectiveConfig | GetDirectiveConfig)[],\n) {\n return function directiveMatcher(directive: DirectiveNode) {\n return directives.some(\n dir =>\n (dir.name && dir.name === directive.name.value) ||\n (dir.test && dir.test(directive)),\n );\n };\n}\n\nexport function removeDirectivesFromDocument(\n directives: RemoveDirectiveConfig[],\n doc: DocumentNode,\n): DocumentNode | null {\n const variablesInUse: Record = Object.create(null);\n let variablesToRemove: RemoveArgumentsConfig[] = [];\n\n const fragmentSpreadsInUse: Record = Object.create(null);\n let fragmentSpreadsToRemove: RemoveFragmentSpreadConfig[] = [];\n\n let modifiedDoc = nullIfDocIsEmpty(\n visit(doc, {\n Variable: {\n enter(node, _key, parent) {\n // Store each variable that's referenced as part of an argument\n // (excluding operation definition variables), so we know which\n // variables are being used. If we later want to remove a variable\n // we'll fist check to see if it's being used, before continuing with\n // the removal.\n if (\n (parent as VariableDefinitionNode).kind !== 'VariableDefinition'\n ) {\n variablesInUse[node.name.value] = true;\n }\n },\n },\n\n Field: {\n enter(node) {\n if (directives && node.directives) {\n // If `remove` is set to true for a directive, and a directive match\n // is found for a field, remove the field as well.\n const shouldRemoveField = directives.some(\n directive => directive.remove,\n );\n\n if (\n shouldRemoveField &&\n node.directives &&\n node.directives.some(getDirectiveMatcher(directives))\n ) {\n if (node.arguments) {\n // Store field argument variables so they can be removed\n // from the operation definition.\n node.arguments.forEach(arg => {\n if (arg.value.kind === 'Variable') {\n variablesToRemove.push({\n name: (arg.value as VariableNode).name.value,\n });\n }\n });\n }\n\n if (node.selectionSet) {\n // Store fragment spread names so they can be removed from the\n // docuemnt.\n getAllFragmentSpreadsFromSelectionSet(node.selectionSet).forEach(\n frag => {\n fragmentSpreadsToRemove.push({\n name: frag.name.value,\n });\n },\n );\n }\n\n // Remove the field.\n return null;\n }\n }\n },\n },\n\n FragmentSpread: {\n enter(node) {\n // Keep track of referenced fragment spreads. This is used to\n // determine if top level fragment definitions should be removed.\n fragmentSpreadsInUse[node.name.value] = true;\n },\n },\n\n Directive: {\n enter(node) {\n // If a matching directive is found, remove it.\n if (getDirectiveMatcher(directives)(node)) {\n return null;\n }\n },\n },\n }),\n );\n\n // If we've removed fields with arguments, make sure the associated\n // variables are also removed from the rest of the document, as long as they\n // aren't being used elsewhere.\n if (\n modifiedDoc &&\n filterInPlace(variablesToRemove, v => !variablesInUse[v.name]).length\n ) {\n modifiedDoc = removeArgumentsFromDocument(variablesToRemove, modifiedDoc);\n }\n\n // If we've removed selection sets with fragment spreads, make sure the\n // associated fragment definitions are also removed from the rest of the\n // document, as long as they aren't being used elsewhere.\n if (\n modifiedDoc &&\n filterInPlace(fragmentSpreadsToRemove, fs => !fragmentSpreadsInUse[fs.name])\n .length\n ) {\n modifiedDoc = removeFragmentSpreadFromDocument(\n fragmentSpreadsToRemove,\n modifiedDoc,\n );\n }\n\n return modifiedDoc;\n}\n\nexport function addTypenameToDocument(doc: DocumentNode): DocumentNode {\n return visit(checkDocument(doc), {\n SelectionSet: {\n enter(node, _key, parent) {\n // Don't add __typename to OperationDefinitions.\n if (\n parent &&\n (parent as OperationDefinitionNode).kind === 'OperationDefinition'\n ) {\n return;\n }\n\n // No changes if no selections.\n const { selections } = node;\n if (!selections) {\n return;\n }\n\n // If selections already have a __typename, or are part of an\n // introspection query, do nothing.\n const skip = selections.some(selection => {\n return (\n isField(selection) &&\n (selection.name.value === '__typename' ||\n selection.name.value.lastIndexOf('__', 0) === 0)\n );\n });\n if (skip) {\n return;\n }\n\n // If this SelectionSet is @export-ed as an input variable, it should\n // not have a __typename field (see issue #4691).\n const field = parent as FieldNode;\n if (\n isField(field) &&\n field.directives &&\n field.directives.some(d => d.name.value === 'export')\n ) {\n return;\n }\n\n // Create and return a new SelectionSet with a __typename Field.\n return {\n ...node,\n selections: [...selections, TYPENAME_FIELD],\n };\n },\n },\n });\n}\n\nconst connectionRemoveConfig = {\n test: (directive: DirectiveNode) => {\n const willRemove = directive.name.value === 'connection';\n if (willRemove) {\n if (\n !directive.arguments ||\n !directive.arguments.some(arg => arg.name.value === 'key')\n ) {\n invariant.warn(\n 'Removing an @connection directive even though it does not have a key. ' +\n 'You may want to use the key parameter to specify a store key.',\n );\n }\n }\n\n return willRemove;\n },\n};\n\nexport function removeConnectionDirectiveFromDocument(doc: DocumentNode) {\n return removeDirectivesFromDocument(\n [connectionRemoveConfig],\n checkDocument(doc),\n );\n}\n\nfunction hasDirectivesInSelectionSet(\n directives: GetDirectiveConfig[],\n selectionSet: SelectionSetNode,\n nestedCheck = true,\n): boolean {\n return (\n selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(selection =>\n hasDirectivesInSelection(directives, selection, nestedCheck),\n )\n );\n}\n\nfunction hasDirectivesInSelection(\n directives: GetDirectiveConfig[],\n selection: SelectionNode,\n nestedCheck = true,\n): boolean {\n if (!isField(selection)) {\n return true;\n }\n\n if (!selection.directives) {\n return false;\n }\n\n return (\n selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(\n directives,\n selection.selectionSet,\n nestedCheck,\n ))\n );\n}\n\nexport function getDirectivesFromDocument(\n directives: GetDirectiveConfig[],\n doc: DocumentNode,\n): DocumentNode {\n checkDocument(doc);\n\n let parentPath: string;\n\n return nullIfDocIsEmpty(\n visit(doc, {\n SelectionSet: {\n enter(node, _key, _parent, path) {\n const currentPath = path.join('-');\n\n if (\n !parentPath ||\n currentPath === parentPath ||\n !currentPath.startsWith(parentPath)\n ) {\n if (node.selections) {\n const selectionsWithDirectives = node.selections.filter(\n selection => hasDirectivesInSelection(directives, selection),\n );\n\n if (hasDirectivesInSelectionSet(directives, node, false)) {\n parentPath = currentPath;\n }\n\n return {\n ...node,\n selections: selectionsWithDirectives,\n };\n } else {\n return null;\n }\n }\n },\n },\n }),\n );\n}\n\nfunction getArgumentMatcher(config: RemoveArgumentsConfig[]) {\n return function argumentMatcher(argument: ArgumentNode) {\n return config.some(\n (aConfig: RemoveArgumentsConfig) =>\n argument.value &&\n argument.value.kind === 'Variable' &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument))),\n );\n };\n}\n\nexport function removeArgumentsFromDocument(\n config: RemoveArgumentsConfig[],\n doc: DocumentNode,\n): DocumentNode {\n const argMatcher = getArgumentMatcher(config);\n\n return nullIfDocIsEmpty(\n visit(doc, {\n OperationDefinition: {\n enter(node) {\n return {\n ...node,\n // Remove matching top level variables definitions.\n variableDefinitions: node.variableDefinitions.filter(\n varDef =>\n !config.some(arg => arg.name === varDef.variable.name.value),\n ),\n };\n },\n },\n\n Field: {\n enter(node) {\n // If `remove` is set to true for an argument, and an argument match\n // is found for a field, remove the field as well.\n const shouldRemoveField = config.some(argConfig => argConfig.remove);\n\n if (shouldRemoveField) {\n let argMatchCount = 0;\n node.arguments.forEach(arg => {\n if (argMatcher(arg)) {\n argMatchCount += 1;\n }\n });\n if (argMatchCount === 1) {\n return null;\n }\n }\n },\n },\n\n Argument: {\n enter(node) {\n // Remove all matching arguments.\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }),\n );\n}\n\nexport function removeFragmentSpreadFromDocument(\n config: RemoveFragmentSpreadConfig[],\n doc: DocumentNode,\n): DocumentNode {\n function enter(\n node: FragmentSpreadNode | FragmentDefinitionNode,\n ): null | void {\n if (config.some(def => def.name === node.name.value)) {\n return null;\n }\n }\n\n return nullIfDocIsEmpty(\n visit(doc, {\n FragmentSpread: { enter },\n FragmentDefinition: { enter },\n }),\n );\n}\n\nfunction getAllFragmentSpreadsFromSelectionSet(\n selectionSet: SelectionSetNode,\n): FragmentSpreadNode[] {\n const allFragments: FragmentSpreadNode[] = [];\n\n selectionSet.selections.forEach(selection => {\n if (\n (isField(selection) || isInlineFragment(selection)) &&\n selection.selectionSet\n ) {\n getAllFragmentSpreadsFromSelectionSet(selection.selectionSet).forEach(\n frag => allFragments.push(frag),\n );\n } else if (selection.kind === 'FragmentSpread') {\n allFragments.push(selection);\n }\n });\n\n return allFragments;\n}\n\n// If the incoming document is a query, return it as is. Otherwise, build a\n// new document containing a query operation based on the selection set\n// of the previous main operation.\nexport function buildQueryFromSelectionSet(\n document: DocumentNode,\n): DocumentNode {\n const definition = getMainDefinition(document);\n const definitionOperation = (definition).operation;\n\n if (definitionOperation === 'query') {\n // Already a query, so return the existing document.\n return document;\n }\n\n // Build a new query using the selection set of the main operation.\n const modifiedDoc = visit(document, {\n OperationDefinition: {\n enter(node) {\n return {\n ...node,\n operation: 'query',\n };\n },\n },\n });\n return modifiedDoc;\n}\n\n// Remove fields / selection sets that include an @client directive.\nexport function removeClientSetsFromDocument(\n document: DocumentNode,\n): DocumentNode | null {\n checkDocument(document);\n\n let modifiedDoc = removeDirectivesFromDocument(\n [\n {\n test: (directive: DirectiveNode) => directive.name.value === 'client',\n remove: true,\n },\n ],\n document,\n );\n\n // After a fragment definition has had its @client related document\n // sets removed, if the only field it has left is a __typename field,\n // remove the entire fragment operation to prevent it from being fired\n // on the server.\n if (modifiedDoc) {\n modifiedDoc = visit(modifiedDoc, {\n FragmentDefinition: {\n enter(node) {\n if (node.selectionSet) {\n const isTypenameOnly = node.selectionSet.selections.every(\n selection =>\n isField(selection) && selection.name.value === '__typename',\n );\n if (isTypenameOnly) {\n return null;\n }\n }\n },\n },\n });\n }\n\n return modifiedDoc;\n}\n","export const canUseWeakMap = typeof WeakMap === 'function' && !(\n typeof navigator === 'object' &&\n navigator.product === 'ReactNative'\n);\n","const { toString } = Object.prototype;\n\n/**\n * Deeply clones a value to create a new instance.\n */\nexport function cloneDeep(value: T): T {\n return cloneDeepHelper(value, new Map());\n}\n\nfunction cloneDeepHelper(val: T, seen: Map): T {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n if (seen.has(val)) return seen.get(val);\n const copy: T & any[] = (val as any).slice(0);\n seen.set(val, copy);\n copy.forEach(function (child, i) {\n copy[i] = cloneDeepHelper(child, seen);\n });\n return copy;\n }\n\n case \"[object Object]\": {\n if (seen.has(val)) return seen.get(val);\n // High fidelity polyfills of Object.create and Object.getPrototypeOf are\n // possible in all JS environments, so we will assume they exist/work.\n const copy = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy);\n Object.keys(val).forEach(key => {\n copy[key] = cloneDeepHelper((val as any)[key], seen);\n });\n return copy;\n }\n\n default:\n return val;\n }\n}\n","export function getEnv(): string | undefined {\n if (typeof process !== 'undefined' && process.env.NODE_ENV) {\n return process.env.NODE_ENV;\n }\n\n // default environment\n return 'development';\n}\n\nexport function isEnv(env: string): boolean {\n return getEnv() === env;\n}\n\nexport function isProduction(): boolean {\n return isEnv('production') === true;\n}\n\nexport function isDevelopment(): boolean {\n return isEnv('development') === true;\n}\n\nexport function isTest(): boolean {\n return isEnv('test') === true;\n}\n","import { ExecutionResult } from 'graphql';\n\nexport function tryFunctionOrLogError(f: Function) {\n try {\n return f();\n } catch (e) {\n if (console.error) {\n console.error(e);\n }\n }\n}\n\nexport function graphQLResultHasError(result: ExecutionResult) {\n return result.errors && result.errors.length;\n}\n","import { isDevelopment, isTest } from './environment';\n\n// Taken (mostly) from https://github.com/substack/deep-freeze to avoid\n// import hassles with rollup.\nfunction deepFreeze(o: any) {\n Object.freeze(o);\n\n Object.getOwnPropertyNames(o).forEach(function(prop) {\n if (\n o[prop] !== null &&\n (typeof o[prop] === 'object' || typeof o[prop] === 'function') &&\n !Object.isFrozen(o[prop])\n ) {\n deepFreeze(o[prop]);\n }\n });\n\n return o;\n}\n\nexport function maybeDeepFreeze(obj: any) {\n if (isDevelopment() || isTest()) {\n // Polyfilled Symbols potentially cause infinite / very deep recursion while deep freezing\n // which is known to crash IE11 (https://github.com/apollographql/apollo-client/issues/3043).\n const symbolIsPolyfilled =\n typeof Symbol === 'function' && typeof Symbol('') === 'string';\n\n if (!symbolIsPolyfilled) {\n return deepFreeze(obj);\n }\n }\n return obj;\n}\n","const { hasOwnProperty } = Object.prototype;\n\n// These mergeDeep and mergeDeepArray utilities merge any number of objects\n// together, sharing as much memory as possible with the source objects, while\n// remaining careful to avoid modifying any source objects.\n\n// Logically, the return type of mergeDeep should be the intersection of\n// all the argument types. The binary call signature is by far the most\n// common, but we support 0- through 5-ary as well. After that, the\n// resulting type is just the inferred array element type. Note to nerds:\n// there is a more clever way of doing this that converts the tuple type\n// first to a union type (easy enough: T[number]) and then converts the\n// union to an intersection type using distributive conditional type\n// inference, but that approach has several fatal flaws (boolean becomes\n// true & false, and the inferred type ends up as unknown in many cases),\n// in addition to being nearly impossible to explain/understand.\nexport type TupleToIntersection =\n T extends [infer A] ? A :\n T extends [infer A, infer B] ? A & B :\n T extends [infer A, infer B, infer C] ? A & B & C :\n T extends [infer A, infer B, infer C, infer D] ? A & B & C & D :\n T extends [infer A, infer B, infer C, infer D, infer E] ? A & B & C & D & E :\n T extends (infer U)[] ? U : any;\n\nexport function mergeDeep(\n ...sources: T\n): TupleToIntersection {\n return mergeDeepArray(sources);\n}\n\n// In almost any situation where you could succeed in getting the\n// TypeScript compiler to infer a tuple type for the sources array, you\n// could just use mergeDeep instead of mergeDeepArray, so instead of\n// trying to convert T[] to an intersection type we just infer the array\n// element type, which works perfectly when the sources array has a\n// consistent element type.\nexport function mergeDeepArray(sources: T[]): T {\n let target = sources[0] || {} as T;\n const count = sources.length;\n if (count > 1) {\n const pastCopies: any[] = [];\n target = shallowCopyForMerge(target, pastCopies);\n for (let i = 1; i < count; ++i) {\n target = mergeHelper(target, sources[i], pastCopies);\n }\n }\n return target;\n}\n\nfunction isObject(obj: any): obj is Record {\n return obj !== null && typeof obj === 'object';\n}\n\nfunction mergeHelper(\n target: any,\n source: any,\n pastCopies: any[],\n) {\n if (isObject(source) && isObject(target)) {\n // In case the target has been frozen, make an extensible copy so that\n // we can merge properties into the copy.\n if (Object.isExtensible && !Object.isExtensible(target)) {\n target = shallowCopyForMerge(target, pastCopies);\n }\n\n Object.keys(source).forEach(sourceKey => {\n const sourceValue = source[sourceKey];\n if (hasOwnProperty.call(target, sourceKey)) {\n const targetValue = target[sourceKey];\n if (sourceValue !== targetValue) {\n // When there is a key collision, we need to make a shallow copy of\n // target[sourceKey] so the merge does not modify any source objects.\n // To avoid making unnecessary copies, we use a simple array to track\n // past copies, since it's safe to modify copies created earlier in\n // the merge. We use an array for pastCopies instead of a Map or Set,\n // since the number of copies should be relatively small, and some\n // Map/Set polyfills modify their keys.\n target[sourceKey] = mergeHelper(\n shallowCopyForMerge(targetValue, pastCopies),\n sourceValue,\n pastCopies,\n );\n }\n } else {\n // If there is no collision, the target can safely share memory with\n // the source, and the recursion can terminate here.\n target[sourceKey] = sourceValue;\n }\n });\n\n return target;\n }\n\n // If source (or target) is not an object, let source replace target.\n return source;\n}\n\nfunction shallowCopyForMerge(value: T, pastCopies: any[]): T {\n if (\n value !== null &&\n typeof value === 'object' &&\n pastCopies.indexOf(value) < 0\n ) {\n if (Array.isArray(value)) {\n value = (value as any).slice(0);\n } else {\n value = {\n __proto__: Object.getPrototypeOf(value),\n ...value,\n };\n }\n pastCopies.push(value);\n }\n return value;\n}\n","import { isProduction, isTest } from './environment';\n\nconst haveWarned = Object.create({});\n\n/**\n * Print a warning only once in development.\n * In production no warnings are printed.\n * In test all warnings are printed.\n *\n * @param msg The warning message\n * @param type warn or error (will call console.warn or console.error)\n */\nexport function warnOnceInDevelopment(msg: string, type = 'warn') {\n if (!isProduction() && !haveWarned[msg]) {\n if (!isTest()) {\n haveWarned[msg] = true;\n }\n if (type === 'error') {\n console.error(msg);\n } else {\n console.warn(msg);\n }\n }\n}\n","import { DataProxy } from './DataProxy';\n\nexport namespace Cache {\n export type WatchCallback = (newData: any) => void;\n export interface EvictionResult {\n success: Boolean;\n }\n\n export interface ReadOptions\n extends DataProxy.Query {\n rootId?: string;\n previousResult?: any;\n optimistic: boolean;\n }\n\n export interface WriteOptions\n extends DataProxy.Query {\n dataId: string;\n result: TResult;\n }\n\n export interface DiffOptions extends ReadOptions {\n returnPartialData?: boolean;\n }\n\n export interface WatchOptions extends ReadOptions {\n callback: WatchCallback;\n }\n\n export interface EvictOptions\n extends DataProxy.Query {\n rootId?: string;\n }\n\n export import DiffResult = DataProxy.DiffResult;\n export import WriteQueryOptions = DataProxy.WriteQueryOptions;\n export import WriteFragmentOptions = DataProxy.WriteFragmentOptions;\n export import WriteDataOptions = DataProxy.WriteDataOptions;\n export import Fragment = DataProxy.Fragment;\n}\n","import {\n DocumentNode,\n OperationDefinitionNode,\n SelectionSetNode,\n FieldNode,\n FragmentDefinitionNode,\n} from 'graphql';\n\nexport function queryFromPojo(obj: any): DocumentNode {\n const op: OperationDefinitionNode = {\n kind: 'OperationDefinition',\n operation: 'query',\n name: {\n kind: 'Name',\n value: 'GeneratedClientQuery',\n },\n selectionSet: selectionSetFromObj(obj),\n };\n\n const out: DocumentNode = {\n kind: 'Document',\n definitions: [op],\n };\n\n return out;\n}\n\nexport function fragmentFromPojo(obj: any, typename?: string): DocumentNode {\n const frag: FragmentDefinitionNode = {\n kind: 'FragmentDefinition',\n typeCondition: {\n kind: 'NamedType',\n name: {\n kind: 'Name',\n value: typename || '__FakeType',\n },\n },\n name: {\n kind: 'Name',\n value: 'GeneratedClientQuery',\n },\n selectionSet: selectionSetFromObj(obj),\n };\n\n const out: DocumentNode = {\n kind: 'Document',\n definitions: [frag],\n };\n\n return out;\n}\n\nfunction selectionSetFromObj(obj: any): SelectionSetNode {\n if (\n typeof obj === 'number' ||\n typeof obj === 'boolean' ||\n typeof obj === 'string' ||\n typeof obj === 'undefined' ||\n obj === null\n ) {\n // No selection set here\n return null;\n }\n\n if (Array.isArray(obj)) {\n // GraphQL queries don't include arrays\n return selectionSetFromObj(obj[0]);\n }\n\n // Now we know it's an object\n const selections: FieldNode[] = [];\n\n Object.keys(obj).forEach(key => {\n const nestedSelSet: SelectionSetNode = selectionSetFromObj(obj[key]);\n\n const field: FieldNode = {\n kind: 'Field',\n name: {\n kind: 'Name',\n value: key,\n },\n selectionSet: nestedSelSet || undefined,\n };\n\n selections.push(field);\n });\n\n const selectionSet: SelectionSetNode = {\n kind: 'SelectionSet',\n selections,\n };\n\n return selectionSet;\n}\n\nexport const justTypenameQuery: DocumentNode = {\n kind: 'Document',\n definitions: [\n {\n kind: 'OperationDefinition',\n operation: 'query',\n name: null,\n variableDefinitions: null,\n directives: [],\n selectionSet: {\n kind: 'SelectionSet',\n selections: [\n {\n kind: 'Field',\n alias: null,\n name: {\n kind: 'Name',\n value: '__typename',\n },\n arguments: [],\n directives: [],\n selectionSet: null,\n },\n ],\n },\n },\n ],\n};\n","import { DocumentNode } from 'graphql';\nimport { getFragmentQueryDocument } from 'apollo-utilities';\n\nimport { DataProxy, Cache } from './types';\nimport { justTypenameQuery, queryFromPojo, fragmentFromPojo } from './utils';\n\nexport type Transaction = (c: ApolloCache) => void;\n\nexport abstract class ApolloCache implements DataProxy {\n // required to implement\n // core API\n public abstract read(\n query: Cache.ReadOptions,\n ): T | null;\n public abstract write(\n write: Cache.WriteOptions,\n ): void;\n public abstract diff(query: Cache.DiffOptions): Cache.DiffResult;\n public abstract watch(watch: Cache.WatchOptions): () => void;\n public abstract evict(\n query: Cache.EvictOptions,\n ): Cache.EvictionResult;\n public abstract reset(): Promise;\n\n // intializer / offline / ssr API\n /**\n * Replaces existing state in the cache (if any) with the values expressed by\n * `serializedState`.\n *\n * Called when hydrating a cache (server side rendering, or offline storage),\n * and also (potentially) during hot reloads.\n */\n public abstract restore(\n serializedState: TSerialized,\n ): ApolloCache;\n\n /**\n * Exposes the cache's complete state, in a serializable format for later restoration.\n */\n public abstract extract(optimistic?: boolean): TSerialized;\n\n // optimistic API\n public abstract removeOptimistic(id: string): void;\n\n // transactional API\n public abstract performTransaction(\n transaction: Transaction,\n ): void;\n public abstract recordOptimisticTransaction(\n transaction: Transaction,\n id: string,\n ): void;\n\n // optional API\n public transformDocument(document: DocumentNode): DocumentNode {\n return document;\n }\n // experimental\n public transformForLink(document: DocumentNode): DocumentNode {\n return document;\n }\n\n // DataProxy API\n /**\n *\n * @param options\n * @param optimistic\n */\n public readQuery(\n options: DataProxy.Query,\n optimistic: boolean = false,\n ): QueryType | null {\n return this.read({\n query: options.query,\n variables: options.variables,\n optimistic,\n });\n }\n\n public readFragment(\n options: DataProxy.Fragment,\n optimistic: boolean = false,\n ): FragmentType | null {\n return this.read({\n query: getFragmentQueryDocument(options.fragment, options.fragmentName),\n variables: options.variables,\n rootId: options.id,\n optimistic,\n });\n }\n\n public writeQuery(\n options: Cache.WriteQueryOptions,\n ): void {\n this.write({\n dataId: 'ROOT_QUERY',\n result: options.data,\n query: options.query,\n variables: options.variables,\n });\n }\n\n public writeFragment(\n options: Cache.WriteFragmentOptions,\n ): void {\n this.write({\n dataId: options.id,\n result: options.data,\n variables: options.variables,\n query: getFragmentQueryDocument(options.fragment, options.fragmentName),\n });\n }\n\n public writeData({\n id,\n data,\n }: Cache.WriteDataOptions): void {\n if (typeof id !== 'undefined') {\n let typenameResult = null;\n // Since we can't use fragments without having a typename in the store,\n // we need to make sure we have one.\n // To avoid overwriting an existing typename, we need to read it out first\n // and generate a fake one if none exists.\n try {\n typenameResult = this.read({\n rootId: id,\n optimistic: false,\n query: justTypenameQuery,\n });\n } catch (e) {\n // Do nothing, since an error just means no typename exists\n }\n\n // tslint:disable-next-line\n const __typename =\n (typenameResult && typenameResult.__typename) || '__ClientData';\n\n // Add a type here to satisfy the inmemory cache\n const dataToWrite = Object.assign({ __typename }, data);\n\n this.writeFragment({\n id,\n fragment: fragmentFromPojo(dataToWrite, __typename),\n data: dataToWrite,\n });\n } else {\n this.writeQuery({ query: queryFromPojo(data), data });\n }\n }\n}\n","import { Slot } from \"./slot\";\nexport { Slot }\nexport const { bind, noContext } = Slot;\n\n// Like global.setTimeout, except the callback runs with captured context.\nexport { setTimeoutWithContext as setTimeout };\nfunction setTimeoutWithContext(callback: () => any, delay: number) {\n return setTimeout(bind(callback), delay);\n}\n\n// Turn any generator function into an async function (using yield instead\n// of await), with context automatically preserved across yields.\nexport function asyncFromGen(\n genFn: (...args: TArgs) => IterableIterator,\n) {\n return function (this: any) {\n const gen = genFn.apply(this, arguments as any);\n const boundNext = bind(gen.next);\n const boundThrow = bind(gen.throw!);\n type Method = typeof boundNext | typeof boundThrow;\n\n return new Promise((resolve, reject) => {\n function invoke(method: Method, argument: any) {\n try {\n var result = method.call(gen, argument);\n } catch (error) {\n return reject(error);\n }\n const next = result.done ? resolve : invokeNext;\n if (isPromiseLike(result.value)) {\n result.value.then(next, result.done ? reject : invokeThrow);\n } else {\n next(result.value);\n }\n }\n const invokeNext = (value?: any) => invoke(boundNext, value);\n const invokeThrow = (error: any) => invoke(boundThrow, error);\n invokeNext();\n });\n } as (...args: TArgs) => Promise;\n}\n\nfunction isPromiseLike(value: any): value is PromiseLike {\n return value && typeof value.then === \"function\";\n}\n\n// If you use the fibers npm package to implement coroutines in Node.js,\n// you should call this function at least once to ensure context management\n// remains coherent across any yields.\nconst wrappedFibers: Function[] = [];\nexport function wrapYieldingFiberMethods(Fiber: F): F {\n // There can be only one implementation of Fiber per process, so this array\n // should never grow longer than one element.\n if (wrappedFibers.indexOf(Fiber) < 0) {\n const wrap = (obj: any, method: string) => {\n const fn = obj[method];\n obj[method] = function () {\n return noContext(fn, arguments as any, this);\n };\n }\n // These methods can yield, according to\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\n wrap(Fiber, \"yield\");\n wrap(Fiber.prototype, \"run\");\n wrap(Fiber.prototype, \"throwInto\");\n wrappedFibers.push(Fiber);\n }\n return Fiber;\n}\n","type Context = {\n parent: Context | null;\n slots: { [slotId: string]: any };\n}\n\n// This currentContext variable will only be used if the makeSlotClass\n// function is called, which happens only if this is the first copy of the\n// @wry/context package to be imported.\nlet currentContext: Context | null = null;\n\n// This unique internal object is used to denote the absence of a value\n// for a given Slot, and is never exposed to outside code.\nconst MISSING_VALUE: any = {};\n\nlet idCounter = 1;\n\n// Although we can't do anything about the cost of duplicated code from\n// accidentally bundling multiple copies of the @wry/context package, we can\n// avoid creating the Slot class more than once using makeSlotClass.\nconst makeSlotClass = () => class Slot {\n // If you have a Slot object, you can find out its slot.id, but you cannot\n // guess the slot.id of a Slot you don't have access to, thanks to the\n // randomized suffix.\n public readonly id = [\n \"slot\",\n idCounter++,\n Date.now(),\n Math.random().toString(36).slice(2),\n ].join(\":\");\n\n public hasValue() {\n for (let context = currentContext; context; context = context.parent) {\n // We use the Slot object iself as a key to its value, which means the\n // value cannot be obtained without a reference to the Slot object.\n if (this.id in context.slots) {\n const value = context.slots[this.id];\n if (value === MISSING_VALUE) break;\n if (context !== currentContext) {\n // Cache the value in currentContext.slots so the next lookup will\n // be faster. This caching is safe because the tree of contexts and\n // the values of the slots are logically immutable.\n currentContext!.slots[this.id] = value;\n }\n return true;\n }\n }\n if (currentContext) {\n // If a value was not found for this Slot, it's never going to be found\n // no matter how many times we look it up, so we might as well cache\n // the absence of the value, too.\n currentContext.slots[this.id] = MISSING_VALUE;\n }\n return false;\n }\n\n public getValue(): TValue | undefined {\n if (this.hasValue()) {\n return currentContext!.slots[this.id] as TValue;\n }\n }\n\n public withValue(\n value: TValue,\n callback: (this: TThis, ...args: TArgs) => TResult,\n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args?: TArgs,\n thisArg?: TThis,\n ): TResult {\n const slots = {\n __proto__: null,\n [this.id]: value,\n };\n const parent = currentContext;\n currentContext = { parent, slots };\n try {\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg!, args!);\n } finally {\n currentContext = parent;\n }\n }\n\n // Capture the current context and wrap a callback function so that it\n // reestablishes the captured context when called.\n static bind(\n callback: (...args: TArgs) => TResult,\n ) {\n const context = currentContext;\n return function (this: any) {\n const saved = currentContext;\n try {\n currentContext = context;\n return callback.apply(this, arguments as any);\n } finally {\n currentContext = saved;\n }\n } as typeof callback;\n }\n\n // Immediately run a callback function without any captured context.\n static noContext(\n callback: (this: TThis, ...args: TArgs) => TResult,\n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args?: TArgs,\n thisArg?: TThis,\n ) {\n if (currentContext) {\n const saved = currentContext;\n try {\n currentContext = null;\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg!, args!);\n } finally {\n currentContext = saved;\n }\n } else {\n return callback.apply(thisArg!, args!);\n }\n }\n};\n\n// We store a single global implementation of the Slot class as a permanent\n// non-enumerable symbol property of the Array constructor. This obfuscation\n// does nothing to prevent access to the Slot class, but at least it ensures\n// the implementation (i.e. currentContext) cannot be tampered with, and all\n// copies of the @wry/context package (hopefully just one) will share the\n// same Slot implementation. Since the first copy of the @wry/context package\n// to be imported wins, this technique imposes a very high cost for any\n// future breaking changes to the Slot class.\nconst globalKey = \"@wry/context:Slot\";\nconst host = Array as any;\n\nexport const Slot: ReturnType = host[globalKey] || function () {\n const Slot = makeSlotClass();\n try {\n Object.defineProperty(host, globalKey, {\n value: host[globalKey] = Slot,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n } finally {\n return Slot;\n }\n}();\n","import { parentEntrySlot } from \"./context\";\nimport { OptimisticWrapOptions } from \"./index\";\n\nconst reusableEmptyArray: AnyEntry[] = [];\nconst emptySetPool: Set[] = [];\nconst POOL_TARGET_SIZE = 100;\n\n// Since this package might be used browsers, we should avoid using the\n// Node built-in assert module.\nfunction assert(condition: any, optionalMessage?: string) {\n if (! condition) {\n throw new Error(optionalMessage || \"assertion failure\");\n }\n}\n\n// Since exceptions are cached just like normal values, we need an efficient\n// way of representing unknown, ordinary, and exceptional values.\ntype Value =\n | [] // unknown\n | [T] // known value\n | [void, any]; // known exception\n\nfunction valueIs(a: Value, b: Value) {\n const len = a.length;\n return (\n // Unknown values are not equal to each other.\n len > 0 &&\n // Both values must be ordinary (or both exceptional) to be equal.\n len === b.length &&\n // The underlying value or exception must be the same.\n a[len - 1] === b[len - 1]\n );\n}\n\nfunction valueGet(value: Value): T {\n switch (value.length) {\n case 0: throw new Error(\"unknown value\");\n case 1: return value[0];\n case 2: throw value[1];\n }\n}\n\nfunction valueCopy(value: Value): Value {\n return value.slice(0) as Value;\n}\n\nexport type AnyEntry = Entry;\n\nexport class Entry {\n public static count = 0;\n\n public subscribe: OptimisticWrapOptions[\"subscribe\"];\n public unsubscribe?: () => any;\n public reportOrphan?: (this: Entry) => any;\n\n public readonly parents = new Set();\n public readonly childValues = new Map>();\n\n // When this Entry has children that are dirty, this property becomes\n // a Set containing other Entry objects, borrowed from emptySetPool.\n // When the set becomes empty, it gets recycled back to emptySetPool.\n public dirtyChildren: Set | null = null;\n\n public dirty = true;\n public recomputing = false;\n public readonly value: Value = [];\n\n constructor(\n public readonly fn: (...args: TArgs) => TValue,\n public args: TArgs,\n ) {\n ++Entry.count;\n }\n\n // This is the most important method of the Entry API, because it\n // determines whether the cached this.value can be returned immediately,\n // or must be recomputed. The overall performance of the caching system\n // depends on the truth of the following observations: (1) this.dirty is\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\n // (3) valueGet(this.value) is usually returned without recomputation.\n public recompute(): TValue {\n assert(! this.recomputing, \"already recomputing\");\n\n if (! rememberParent(this) && maybeReportOrphan(this)) {\n // The recipient of the entry.reportOrphan callback decided to dispose\n // of this orphan entry by calling entry.dispose(), so we don't need to\n // (and should not) proceed with the recomputation.\n return void 0 as any;\n }\n\n return mightBeDirty(this)\n ? reallyRecompute(this)\n : valueGet(this.value);\n }\n\n public setDirty() {\n if (this.dirty) return;\n this.dirty = true;\n this.value.length = 0;\n reportDirty(this);\n // We can go ahead and unsubscribe here, since any further dirty\n // notifications we receive will be redundant, and unsubscribing may\n // free up some resources, e.g. file watchers.\n maybeUnsubscribe(this);\n }\n\n public dispose() {\n forgetChildren(this).forEach(maybeReportOrphan);\n maybeUnsubscribe(this);\n\n // Because this entry has been kicked out of the cache (in index.js),\n // we've lost the ability to find out if/when this entry becomes dirty,\n // whether that happens through a subscription, because of a direct call\n // to entry.setDirty(), or because one of its children becomes dirty.\n // Because of this loss of future information, we have to assume the\n // worst (that this entry might have become dirty very soon), so we must\n // immediately mark this entry's parents as dirty. Normally we could\n // just call entry.setDirty() rather than calling parent.setDirty() for\n // each parent, but that would leave this entry in parent.childValues\n // and parent.dirtyChildren, which would prevent the child from being\n // truly forgotten.\n this.parents.forEach(parent => {\n parent.setDirty();\n forgetChild(parent, this);\n });\n }\n}\n\nfunction rememberParent(child: AnyEntry) {\n const parent = parentEntrySlot.getValue();\n if (parent) {\n child.parents.add(parent);\n\n if (! parent.childValues.has(child)) {\n parent.childValues.set(child, []);\n }\n\n if (mightBeDirty(child)) {\n reportDirtyChild(parent, child);\n } else {\n reportCleanChild(parent, child);\n }\n\n return parent;\n }\n}\n\nfunction reallyRecompute(entry: AnyEntry) {\n // Since this recomputation is likely to re-remember some of this\n // entry's children, we forget our children here but do not call\n // maybeReportOrphan until after the recomputation finishes.\n const originalChildren = forgetChildren(entry);\n\n // Set entry as the parent entry while calling recomputeNewValue(entry).\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry]);\n\n if (maybeSubscribe(entry)) {\n // If we successfully recomputed entry.value and did not fail to\n // (re)subscribe, then this Entry is no longer explicitly dirty.\n setClean(entry);\n }\n\n // Now that we've had a chance to re-remember any children that were\n // involved in the recomputation, we can safely report any orphan\n // children that remain.\n originalChildren.forEach(maybeReportOrphan);\n\n return valueGet(entry.value);\n}\n\nfunction recomputeNewValue(entry: AnyEntry) {\n entry.recomputing = true;\n // Set entry.value as unknown.\n entry.value.length = 0;\n try {\n // If entry.fn succeeds, entry.value will become a normal Value.\n entry.value[0] = entry.fn.apply(null, entry.args);\n } catch (e) {\n // If entry.fn throws, entry.value will become exceptional.\n entry.value[1] = e;\n }\n // Either way, this line is always reached.\n entry.recomputing = false;\n}\n\nfunction mightBeDirty(entry: AnyEntry) {\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\n}\n\nfunction setClean(entry: AnyEntry) {\n entry.dirty = false;\n\n if (mightBeDirty(entry)) {\n // This Entry may still have dirty children, in which case we can't\n // let our parents know we're clean just yet.\n return;\n }\n\n reportClean(entry);\n}\n\nfunction reportDirty(child: AnyEntry) {\n child.parents.forEach(parent => reportDirtyChild(parent, child));\n}\n\nfunction reportClean(child: AnyEntry) {\n child.parents.forEach(parent => reportCleanChild(parent, child));\n}\n\n// Let a parent Entry know that one of its children may be dirty.\nfunction reportDirtyChild(parent: AnyEntry, child: AnyEntry) {\n // Must have called rememberParent(child) before calling\n // reportDirtyChild(parent, child).\n assert(parent.childValues.has(child));\n assert(mightBeDirty(child));\n\n if (! parent.dirtyChildren) {\n parent.dirtyChildren = emptySetPool.pop() || new Set;\n\n } else if (parent.dirtyChildren.has(child)) {\n // If we already know this child is dirty, then we must have already\n // informed our own parents that we are dirty, so we can terminate\n // the recursion early.\n return;\n }\n\n parent.dirtyChildren.add(child);\n reportDirty(parent);\n}\n\n// Let a parent Entry know that one of its children is no longer dirty.\nfunction reportCleanChild(parent: AnyEntry, child: AnyEntry) {\n // Must have called rememberChild(child) before calling\n // reportCleanChild(parent, child).\n assert(parent.childValues.has(child));\n assert(! mightBeDirty(child));\n\n const childValue = parent.childValues.get(child)!;\n if (childValue.length === 0) {\n parent.childValues.set(child, valueCopy(child.value));\n } else if (! valueIs(childValue, child.value)) {\n parent.setDirty();\n }\n\n removeDirtyChild(parent, child);\n\n if (mightBeDirty(parent)) {\n return;\n }\n\n reportClean(parent);\n}\n\nfunction removeDirtyChild(parent: AnyEntry, child: AnyEntry) {\n const dc = parent.dirtyChildren;\n if (dc) {\n dc.delete(child);\n if (dc.size === 0) {\n if (emptySetPool.length < POOL_TARGET_SIZE) {\n emptySetPool.push(dc);\n }\n parent.dirtyChildren = null;\n }\n }\n}\n\n// If the given entry has a reportOrphan method, and no remaining parents,\n// call entry.reportOrphan and return true iff it returns true. The\n// reportOrphan function should return true to indicate entry.dispose()\n// has been called, and the entry has been removed from any other caches\n// (see index.js for the only current example).\nfunction maybeReportOrphan(entry: AnyEntry) {\n return entry.parents.size === 0 &&\n typeof entry.reportOrphan === \"function\" &&\n entry.reportOrphan() === true;\n}\n\n// Removes all children from this entry and returns an array of the\n// removed children.\nfunction forgetChildren(parent: AnyEntry) {\n let children = reusableEmptyArray;\n\n if (parent.childValues.size > 0) {\n children = [];\n parent.childValues.forEach((_value, child) => {\n forgetChild(parent, child);\n children.push(child);\n });\n }\n\n // After we forget all our children, this.dirtyChildren must be empty\n // and therefore must have been reset to null.\n assert(parent.dirtyChildren === null);\n\n return children;\n}\n\nfunction forgetChild(parent: AnyEntry, child: AnyEntry) {\n child.parents.delete(parent);\n parent.childValues.delete(child);\n removeDirtyChild(parent, child);\n}\n\nfunction maybeSubscribe(entry: AnyEntry) {\n if (typeof entry.subscribe === \"function\") {\n try {\n maybeUnsubscribe(entry); // Prevent double subscriptions.\n entry.unsubscribe = entry.subscribe.apply(null, entry.args);\n } catch (e) {\n // If this Entry has a subscribe function and it threw an exception\n // (or an unsubscribe function it previously returned now throws),\n // return false to indicate that we were not able to subscribe (or\n // unsubscribe), and this Entry should remain dirty.\n entry.setDirty();\n return false;\n }\n }\n\n // Returning true indicates either that there was no entry.subscribe\n // function or that it succeeded.\n return true;\n}\n\nfunction maybeUnsubscribe(entry: AnyEntry) {\n const { unsubscribe } = entry;\n if (typeof unsubscribe === \"function\") {\n entry.unsubscribe = void 0;\n unsubscribe();\n }\n}\n","// A trie data structure that holds object keys weakly, yet can also hold\n// non-object keys, unlike the native `WeakMap`.\nexport class KeyTrie {\n // Since a `WeakMap` cannot hold primitive values as keys, we need a\n // backup `Map` instance to hold primitive keys. Both `this._weakMap`\n // and `this._strongMap` are lazily initialized.\n private weak?: WeakMap>;\n private strong?: Map>;\n private data?: K;\n\n constructor(private readonly weakness: boolean) {}\n\n public lookup(...array: T): K {\n return this.lookupArray(array);\n }\n\n public lookupArray(array: T): K {\n let node: KeyTrie = this;\n array.forEach(key => node = node.getChildTrie(key));\n return node.data || (node.data = Object.create(null));\n }\n\n private getChildTrie(key: any) {\n const map = this.weakness && isObjRef(key)\n ? this.weak || (this.weak = new WeakMap>())\n : this.strong || (this.strong = new Map>());\n let child = map.get(key);\n if (!child) map.set(key, child = new KeyTrie(this.weakness));\n return child;\n }\n}\n\nfunction isObjRef(value: any) {\n switch (typeof value) {\n case \"object\":\n if (value === null) break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n","// Make builtins like Map and Set safe to use with non-extensible objects.\nimport './fixPolyfills';\n\nimport { DocumentNode } from 'graphql';\n\nimport { Cache, ApolloCache, Transaction } from 'apollo-cache';\n\nimport { addTypenameToDocument, canUseWeakMap } from 'apollo-utilities';\n\nimport { wrap } from 'optimism';\n\nimport { invariant, InvariantError } from 'ts-invariant';\n\nimport { HeuristicFragmentMatcher } from './fragmentMatcher';\nimport {\n ApolloReducerConfig,\n NormalizedCache,\n NormalizedCacheObject,\n} from './types';\n\nimport { StoreReader } from './readFromStore';\nimport { StoreWriter } from './writeToStore';\nimport { DepTrackingCache } from './depTrackingCache';\nimport { KeyTrie } from 'optimism';\nimport { ObjectCache } from './objectCache';\n\nexport interface InMemoryCacheConfig extends ApolloReducerConfig {\n resultCaching?: boolean;\n freezeResults?: boolean;\n}\n\nconst defaultConfig: InMemoryCacheConfig = {\n fragmentMatcher: new HeuristicFragmentMatcher(),\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n freezeResults: false,\n};\n\nexport function defaultDataIdFromObject(result: any): string | null {\n if (result.__typename) {\n if (result.id !== undefined) {\n return `${result.__typename}:${result.id}`;\n }\n if (result._id !== undefined) {\n return `${result.__typename}:${result._id}`;\n }\n }\n return null;\n}\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nexport class OptimisticCacheLayer extends ObjectCache {\n constructor(\n public readonly optimisticId: string,\n // OptimisticCacheLayer objects always wrap some other parent cache, so\n // this.parent should never be null.\n public readonly parent: NormalizedCache,\n public readonly transaction: Transaction,\n ) {\n super(Object.create(null));\n }\n\n public toObject(): NormalizedCacheObject {\n return {\n ...this.parent.toObject(),\n ...this.data,\n };\n }\n\n // All the other accessor methods of ObjectCache work without knowing about\n // this.parent, but the get method needs to be overridden to implement the\n // fallback this.parent.get(dataId) behavior.\n public get(dataId: string) {\n return hasOwn.call(this.data, dataId)\n ? this.data[dataId]\n : this.parent.get(dataId);\n }\n}\n\nexport class InMemoryCache extends ApolloCache {\n private data: NormalizedCache;\n private optimisticData: NormalizedCache;\n\n protected config: InMemoryCacheConfig;\n private watches = new Set();\n private addTypename: boolean;\n private typenameDocumentCache = new Map();\n private storeReader: StoreReader;\n private storeWriter: StoreWriter;\n private cacheKeyRoot = new KeyTrie(canUseWeakMap);\n\n // Set this while in a transaction to prevent broadcasts...\n // don't forget to turn it back on!\n private silenceBroadcast: boolean = false;\n\n constructor(config: InMemoryCacheConfig = {}) {\n super();\n this.config = { ...defaultConfig, ...config };\n\n // backwards compat\n if ((this.config as any).customResolvers) {\n invariant.warn(\n 'customResolvers have been renamed to cacheRedirects. Please update your config as we will be deprecating customResolvers in the next major version.',\n );\n this.config.cacheRedirects = (this.config as any).customResolvers;\n }\n\n if ((this.config as any).cacheResolvers) {\n invariant.warn(\n 'cacheResolvers have been renamed to cacheRedirects. Please update your config as we will be deprecating cacheResolvers in the next major version.',\n );\n this.config.cacheRedirects = (this.config as any).cacheResolvers;\n }\n\n this.addTypename = !!this.config.addTypename;\n\n // Passing { resultCaching: false } in the InMemoryCache constructor options\n // will completely disable dependency tracking, which will improve memory\n // usage but worsen the performance of repeated reads.\n this.data = this.config.resultCaching\n ? new DepTrackingCache()\n : new ObjectCache();\n\n // When no optimistic writes are currently active, cache.optimisticData ===\n // cache.data, so there are no additional layers on top of the actual data.\n // When an optimistic update happens, this.optimisticData will become a\n // linked list of OptimisticCacheLayer objects that terminates with the\n // original this.data cache object.\n this.optimisticData = this.data;\n\n this.storeWriter = new StoreWriter();\n this.storeReader = new StoreReader({\n cacheKeyRoot: this.cacheKeyRoot,\n freezeResults: config.freezeResults,\n });\n\n const cache = this;\n const { maybeBroadcastWatch } = cache;\n this.maybeBroadcastWatch = wrap((c: Cache.WatchOptions) => {\n return maybeBroadcastWatch.call(this, c);\n }, {\n makeCacheKey(c: Cache.WatchOptions) {\n if (c.optimistic) {\n // If we're reading optimistic data, it doesn't matter if this.data\n // is a DepTrackingCache, since it will be ignored.\n return;\n }\n\n if (c.previousResult) {\n // If a previousResult was provided, assume the caller would prefer\n // to compare the previous data to the new data to determine whether\n // to broadcast, so we should disable caching by returning here, to\n // give maybeBroadcastWatch a chance to do that comparison.\n return;\n }\n\n if (cache.data instanceof DepTrackingCache) {\n // Return a cache key (thus enabling caching) only if we're currently\n // using a data store that can track cache dependencies.\n return cache.cacheKeyRoot.lookup(\n c.query,\n JSON.stringify(c.variables),\n );\n }\n }\n });\n }\n\n public restore(data: NormalizedCacheObject): this {\n if (data) this.data.replace(data);\n return this;\n }\n\n public extract(optimistic: boolean = false): NormalizedCacheObject {\n return (optimistic ? this.optimisticData : this.data).toObject();\n }\n\n public read(options: Cache.ReadOptions): T | null {\n if (typeof options.rootId === 'string' &&\n typeof this.data.get(options.rootId) === 'undefined') {\n return null;\n }\n\n const { fragmentMatcher } = this.config;\n const fragmentMatcherFunction = fragmentMatcher && fragmentMatcher.match;\n\n return this.storeReader.readQueryFromStore({\n store: options.optimistic ? this.optimisticData : this.data,\n query: this.transformDocument(options.query),\n variables: options.variables,\n rootId: options.rootId,\n fragmentMatcherFunction,\n previousResult: options.previousResult,\n config: this.config,\n }) || null;\n }\n\n public write(write: Cache.WriteOptions): void {\n const { fragmentMatcher } = this.config;\n const fragmentMatcherFunction = fragmentMatcher && fragmentMatcher.match;\n\n this.storeWriter.writeResultToStore({\n dataId: write.dataId,\n result: write.result,\n variables: write.variables,\n document: this.transformDocument(write.query),\n store: this.data,\n dataIdFromObject: this.config.dataIdFromObject,\n fragmentMatcherFunction,\n });\n\n this.broadcastWatches();\n }\n\n public diff(query: Cache.DiffOptions): Cache.DiffResult {\n const { fragmentMatcher } = this.config;\n const fragmentMatcherFunction = fragmentMatcher && fragmentMatcher.match;\n\n return this.storeReader.diffQueryAgainstStore({\n store: query.optimistic ? this.optimisticData : this.data,\n query: this.transformDocument(query.query),\n variables: query.variables,\n returnPartialData: query.returnPartialData,\n previousResult: query.previousResult,\n fragmentMatcherFunction,\n config: this.config,\n });\n }\n\n public watch(watch: Cache.WatchOptions): () => void {\n this.watches.add(watch);\n\n return () => {\n this.watches.delete(watch);\n };\n }\n\n public evict(query: Cache.EvictOptions): Cache.EvictionResult {\n throw new InvariantError(`eviction is not implemented on InMemory Cache`);\n }\n\n public reset(): Promise {\n this.data.clear();\n this.broadcastWatches();\n\n return Promise.resolve();\n }\n\n public removeOptimistic(idToRemove: string) {\n const toReapply: OptimisticCacheLayer[] = [];\n let removedCount = 0;\n let layer = this.optimisticData;\n\n while (layer instanceof OptimisticCacheLayer) {\n if (layer.optimisticId === idToRemove) {\n ++removedCount;\n } else {\n toReapply.push(layer);\n }\n layer = layer.parent;\n }\n\n if (removedCount > 0) {\n // Reset this.optimisticData to the first non-OptimisticCacheLayer object,\n // which is almost certainly this.data.\n this.optimisticData = layer;\n\n // Reapply the layers whose optimistic IDs do not match the removed ID.\n while (toReapply.length > 0) {\n const layer = toReapply.pop()!;\n this.performTransaction(layer.transaction, layer.optimisticId);\n }\n\n this.broadcastWatches();\n }\n }\n\n public performTransaction(\n transaction: Transaction,\n // This parameter is not part of the performTransaction signature inherited\n // from the ApolloCache abstract class, but it's useful because it saves us\n // from duplicating this implementation in recordOptimisticTransaction.\n optimisticId?: string,\n ) {\n const { data, silenceBroadcast } = this;\n this.silenceBroadcast = true;\n\n if (typeof optimisticId === 'string') {\n // Add a new optimistic layer and temporarily make this.data refer to\n // that layer for the duration of the transaction.\n this.data = this.optimisticData = new OptimisticCacheLayer(\n // Note that there can be multiple layers with the same optimisticId.\n // When removeOptimistic(id) is called for that id, all matching layers\n // will be removed, and the remaining layers will be reapplied.\n optimisticId,\n this.optimisticData,\n transaction,\n );\n }\n\n try {\n transaction(this);\n } finally {\n this.silenceBroadcast = silenceBroadcast;\n this.data = data;\n }\n\n // This broadcast does nothing if this.silenceBroadcast is true.\n this.broadcastWatches();\n }\n\n public recordOptimisticTransaction(\n transaction: Transaction,\n id: string,\n ) {\n return this.performTransaction(transaction, id);\n }\n\n public transformDocument(document: DocumentNode): DocumentNode {\n if (this.addTypename) {\n let result = this.typenameDocumentCache.get(document);\n if (!result) {\n result = addTypenameToDocument(document);\n this.typenameDocumentCache.set(document, result);\n // If someone calls transformDocument and then mistakenly passes the\n // result back into an API that also calls transformDocument, make sure\n // we don't keep creating new query documents.\n this.typenameDocumentCache.set(result, result);\n }\n return result;\n }\n return document;\n }\n\n protected broadcastWatches() {\n if (!this.silenceBroadcast) {\n this.watches.forEach(c => this.maybeBroadcastWatch(c));\n }\n }\n\n // This method is wrapped in the constructor so that it will be called only\n // if the data that would be broadcast has changed.\n private maybeBroadcastWatch(c: Cache.WatchOptions) {\n c.callback(\n this.diff({\n query: c.query,\n variables: c.variables,\n previousResult: c.previousResult && c.previousResult(),\n optimistic: c.optimistic,\n }),\n );\n }\n}\n","import { isTest, IdValue } from 'apollo-utilities';\nimport { invariant } from 'ts-invariant';\n\nimport {\n ReadStoreContext,\n FragmentMatcherInterface,\n PossibleTypesMap,\n IntrospectionResultData,\n} from './types';\n\nlet haveWarned = false;\n\nfunction shouldWarn() {\n const answer = !haveWarned;\n /* istanbul ignore if */\n if (!isTest()) {\n haveWarned = true;\n }\n return answer;\n}\n\n/**\n * This fragment matcher is very basic and unable to match union or interface type conditions\n */\nexport class HeuristicFragmentMatcher implements FragmentMatcherInterface {\n constructor() {\n // do nothing\n }\n\n public ensureReady() {\n return Promise.resolve();\n }\n\n public canBypassInit() {\n return true; // we don't need to initialize this fragment matcher.\n }\n\n public match(\n idValue: IdValue,\n typeCondition: string,\n context: ReadStoreContext,\n ): boolean | 'heuristic' {\n const obj = context.store.get(idValue.id);\n const isRootQuery = idValue.id === 'ROOT_QUERY';\n\n if (!obj) {\n // https://github.com/apollographql/apollo-client/pull/3507\n return isRootQuery;\n }\n\n const { __typename = isRootQuery && 'Query' } = obj;\n\n if (!__typename) {\n if (shouldWarn()) {\n invariant.warn(`You're using fragments in your queries, but either don't have the addTypename:\n true option set in Apollo Client, or you are trying to write a fragment to the store without the __typename.\n Please turn on the addTypename option and include __typename when writing fragments so that Apollo Client\n can accurately match fragments.`);\n invariant.warn(\n 'Could not find __typename on Fragment ',\n typeCondition,\n obj,\n );\n invariant.warn(\n `DEPRECATION WARNING: using fragments without __typename is unsupported behavior ` +\n `and will be removed in future versions of Apollo client. You should fix this and set addTypename to true now.`,\n );\n }\n\n return 'heuristic';\n }\n\n if (__typename === typeCondition) {\n return true;\n }\n\n // At this point we don't know if this fragment should match or not. It's\n // either:\n //\n // 1. (GOOD) A fragment on a matching interface or union.\n // 2. (BAD) A fragment on a non-matching concrete type or interface or union.\n //\n // If it's 2, we don't want it to match. If it's 1, we want it to match. We\n // can't tell the difference, so we warn the user, but still try to match\n // it (for backwards compatibility reasons). This unfortunately means that\n // using the `HeuristicFragmentMatcher` with unions and interfaces is\n // very unreliable. This will be addressed in a future major version of\n // Apollo Client, but for now the recommendation is to use the\n // `IntrospectionFragmentMatcher` when working with unions/interfaces.\n\n if (shouldWarn()) {\n invariant.error(\n 'You are using the simple (heuristic) fragment matcher, but your ' +\n 'queries contain union or interface types. Apollo Client will not be ' +\n 'able to accurately map fragments. To make this error go away, use ' +\n 'the `IntrospectionFragmentMatcher` as described in the docs: ' +\n 'https://www.apollographql.com/docs/react/advanced/fragments.html#fragment-matcher',\n );\n }\n\n return 'heuristic';\n }\n}\n\nexport class IntrospectionFragmentMatcher implements FragmentMatcherInterface {\n private isReady: boolean;\n private possibleTypesMap: PossibleTypesMap;\n\n constructor(options?: {\n introspectionQueryResultData?: IntrospectionResultData;\n }) {\n if (options && options.introspectionQueryResultData) {\n this.possibleTypesMap = this.parseIntrospectionResult(\n options.introspectionQueryResultData,\n );\n this.isReady = true;\n } else {\n this.isReady = false;\n }\n\n this.match = this.match.bind(this);\n }\n\n public match(\n idValue: IdValue,\n typeCondition: string,\n context: ReadStoreContext,\n ) {\n invariant(\n this.isReady,\n 'FragmentMatcher.match() was called before FragmentMatcher.init()',\n );\n\n const obj = context.store.get(idValue.id);\n const isRootQuery = idValue.id === 'ROOT_QUERY';\n\n if (!obj) {\n // https://github.com/apollographql/apollo-client/pull/4620\n return isRootQuery;\n }\n\n const { __typename = isRootQuery && 'Query' } = obj;\n\n invariant(\n __typename,\n `Cannot match fragment because __typename property is missing: ${JSON.stringify(\n obj,\n )}`,\n );\n\n if (__typename === typeCondition) {\n return true;\n }\n\n const implementingTypes = this.possibleTypesMap[typeCondition];\n if (\n __typename &&\n implementingTypes &&\n implementingTypes.indexOf(__typename) > -1\n ) {\n return true;\n }\n\n return false;\n }\n\n private parseIntrospectionResult(\n introspectionResultData: IntrospectionResultData,\n ): PossibleTypesMap {\n const typeMap: PossibleTypesMap = {};\n introspectionResultData.__schema.types.forEach(type => {\n if (type.kind === 'UNION' || type.kind === 'INTERFACE') {\n typeMap[type.name] = type.possibleTypes.map(\n implementingType => implementingType.name,\n );\n }\n });\n return typeMap;\n }\n}\n","import { NormalizedCache, NormalizedCacheObject, StoreObject } from './types';\nimport { wrap, OptimisticWrapperFunction } from 'optimism';\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nexport class DepTrackingCache implements NormalizedCache {\n // Wrapper function produced by the optimism library, used to depend on\n // dataId strings, for easy invalidation of specific IDs.\n private depend: OptimisticWrapperFunction<[string], StoreObject | undefined>;\n\n constructor(private data: NormalizedCacheObject = Object.create(null)) {\n this.depend = wrap((dataId: string) => this.data[dataId], {\n disposable: true,\n makeCacheKey(dataId: string) {\n return dataId;\n },\n });\n }\n\n public toObject(): NormalizedCacheObject {\n return this.data;\n }\n\n public get(dataId: string): StoreObject {\n this.depend(dataId);\n return this.data[dataId]!;\n }\n\n public set(dataId: string, value?: StoreObject) {\n const oldValue = this.data[dataId];\n if (value !== oldValue) {\n this.data[dataId] = value;\n this.depend.dirty(dataId);\n }\n }\n\n public delete(dataId: string): void {\n if (hasOwn.call(this.data, dataId)) {\n delete this.data[dataId];\n this.depend.dirty(dataId);\n }\n }\n\n public clear(): void {\n this.replace(null);\n }\n\n public replace(newData: NormalizedCacheObject | null): void {\n if (newData) {\n Object.keys(newData).forEach(dataId => {\n this.set(dataId, newData[dataId]);\n });\n Object.keys(this.data).forEach(dataId => {\n if (!hasOwn.call(newData, dataId)) {\n this.delete(dataId);\n }\n });\n } else {\n Object.keys(this.data).forEach(dataId => {\n this.delete(dataId);\n });\n }\n }\n}\n\nexport function defaultNormalizedCacheFactory(\n seed?: NormalizedCacheObject,\n): NormalizedCache {\n return new DepTrackingCache(seed);\n}\n","import {\n argumentsObjectFromField,\n assign,\n canUseWeakMap,\n createFragmentMap,\n DirectiveInfo,\n FragmentMap,\n getDefaultValues,\n getDirectiveInfoFromField,\n getFragmentDefinitions,\n getMainDefinition,\n getQueryDefinition,\n getStoreKeyName,\n IdValue,\n isEqual,\n isField,\n isIdValue,\n isInlineFragment,\n isJsonValue,\n maybeDeepFreeze,\n mergeDeepArray,\n resultKeyNameFromField,\n shouldInclude,\n StoreValue,\n toIdValue,\n} from 'apollo-utilities';\n\nimport { Cache } from 'apollo-cache';\n\nimport {\n ReadStoreContext,\n DiffQueryAgainstStoreOptions,\n ReadQueryOptions,\n StoreObject,\n} from './types';\n\nimport {\n DocumentNode,\n FieldNode,\n FragmentDefinitionNode,\n InlineFragmentNode,\n SelectionSetNode,\n} from 'graphql';\n\nimport { wrap, KeyTrie } from 'optimism';\nimport { DepTrackingCache } from './depTrackingCache';\nimport { invariant, InvariantError } from 'ts-invariant';\n\nexport type VariableMap = { [name: string]: any };\n\nexport type FragmentMatcher = (\n rootValue: any,\n typeCondition: string,\n context: ReadStoreContext,\n) => boolean | 'heuristic';\n\ntype ExecContext = {\n query: DocumentNode;\n fragmentMap: FragmentMap;\n contextValue: ReadStoreContext;\n variableValues: VariableMap;\n fragmentMatcher: FragmentMatcher;\n};\n\ntype ExecInfo = {\n resultKey: string;\n directives: DirectiveInfo;\n};\n\nexport type ExecResultMissingField = {\n object: StoreObject;\n fieldName: string;\n tolerable: boolean;\n};\n\nexport type ExecResult = {\n result: R;\n // Empty array if no missing fields encountered while computing result.\n missing?: ExecResultMissingField[];\n};\n\ntype ExecStoreQueryOptions = {\n query: DocumentNode;\n rootValue: IdValue;\n contextValue: ReadStoreContext;\n variableValues: VariableMap;\n // Default matcher always matches all fragments\n fragmentMatcher?: FragmentMatcher;\n};\n\ntype ExecSelectionSetOptions = {\n selectionSet: SelectionSetNode;\n rootValue: any;\n execContext: ExecContext;\n};\n\ntype ExecSubSelectedArrayOptions = {\n field: FieldNode;\n array: any[];\n execContext: ExecContext;\n};\n\nexport interface StoreReaderConfig {\n cacheKeyRoot?: KeyTrie;\n freezeResults?: boolean;\n}\n\nexport class StoreReader {\n private freezeResults: boolean;\n\n constructor({\n cacheKeyRoot = new KeyTrie(canUseWeakMap),\n freezeResults = false,\n }: StoreReaderConfig = {}) {\n const {\n executeStoreQuery,\n executeSelectionSet,\n executeSubSelectedArray,\n } = this;\n\n this.freezeResults = freezeResults;\n\n this.executeStoreQuery = wrap((options: ExecStoreQueryOptions) => {\n return executeStoreQuery.call(this, options);\n }, {\n makeCacheKey({\n query,\n rootValue,\n contextValue,\n variableValues,\n fragmentMatcher,\n }: ExecStoreQueryOptions) {\n // The result of executeStoreQuery can be safely cached only if the\n // underlying store is capable of tracking dependencies and invalidating\n // the cache when relevant data have changed.\n if (contextValue.store instanceof DepTrackingCache) {\n return cacheKeyRoot.lookup(\n contextValue.store,\n query,\n fragmentMatcher,\n JSON.stringify(variableValues),\n rootValue.id,\n );\n }\n }\n });\n\n this.executeSelectionSet = wrap((options: ExecSelectionSetOptions) => {\n return executeSelectionSet.call(this, options);\n }, {\n makeCacheKey({\n selectionSet,\n rootValue,\n execContext,\n }: ExecSelectionSetOptions) {\n if (execContext.contextValue.store instanceof DepTrackingCache) {\n return cacheKeyRoot.lookup(\n execContext.contextValue.store,\n selectionSet,\n execContext.fragmentMatcher,\n JSON.stringify(execContext.variableValues),\n rootValue.id,\n );\n }\n }\n });\n\n this.executeSubSelectedArray = wrap((options: ExecSubSelectedArrayOptions) => {\n return executeSubSelectedArray.call(this, options);\n }, {\n makeCacheKey({ field, array, execContext }) {\n if (execContext.contextValue.store instanceof DepTrackingCache) {\n return cacheKeyRoot.lookup(\n execContext.contextValue.store,\n field,\n array,\n JSON.stringify(execContext.variableValues),\n );\n }\n }\n });\n }\n\n /**\n * Resolves the result of a query solely from the store (i.e. never hits the server).\n *\n * @param {Store} store The {@link NormalizedCache} used by Apollo for the `data` portion of the\n * store.\n *\n * @param {DocumentNode} query The query document to resolve from the data available in the store.\n *\n * @param {Object} [variables] A map from the name of a variable to its value. These variables can\n * be referenced by the query document.\n *\n * @param {any} previousResult The previous result returned by this function for the same query.\n * If nothing in the store changed since that previous result then values from the previous result\n * will be returned to preserve referential equality.\n */\n public readQueryFromStore(\n options: ReadQueryOptions,\n ): QueryType | undefined {\n return this.diffQueryAgainstStore({\n ...options,\n returnPartialData: false,\n }).result;\n }\n\n /**\n * Given a store and a query, return as much of the result as possible and\n * identify if any data was missing from the store.\n * @param {DocumentNode} query A parsed GraphQL query document\n * @param {Store} store The Apollo Client store object\n * @param {any} previousResult The previous result returned by this function for the same query\n * @return {result: Object, complete: [boolean]}\n */\n public diffQueryAgainstStore({\n store,\n query,\n variables,\n previousResult,\n returnPartialData = true,\n rootId = 'ROOT_QUERY',\n fragmentMatcherFunction,\n config,\n }: DiffQueryAgainstStoreOptions): Cache.DiffResult {\n // Throw the right validation error by trying to find a query in the document\n const queryDefinition = getQueryDefinition(query);\n\n variables = assign({}, getDefaultValues(queryDefinition), variables);\n\n const context: ReadStoreContext = {\n // Global settings\n store,\n dataIdFromObject: config && config.dataIdFromObject,\n cacheRedirects: (config && config.cacheRedirects) || {},\n };\n\n const execResult = this.executeStoreQuery({\n query,\n rootValue: {\n type: 'id',\n id: rootId,\n generated: true,\n typename: 'Query',\n },\n contextValue: context,\n variableValues: variables,\n fragmentMatcher: fragmentMatcherFunction,\n });\n\n const hasMissingFields =\n execResult.missing && execResult.missing.length > 0;\n\n if (hasMissingFields && ! returnPartialData) {\n execResult.missing!.forEach(info => {\n if (info.tolerable) return;\n throw new InvariantError(\n `Can't find field ${info.fieldName} on object ${JSON.stringify(\n info.object,\n null,\n 2,\n )}.`,\n );\n });\n }\n\n if (previousResult) {\n if (isEqual(previousResult, execResult.result)) {\n execResult.result = previousResult;\n }\n }\n\n return {\n result: execResult.result,\n complete: !hasMissingFields,\n };\n }\n\n /**\n * Based on graphql function from graphql-js:\n *\n * graphql(\n * schema: GraphQLSchema,\n * requestString: string,\n * rootValue?: ?any,\n * contextValue?: ?any,\n * variableValues?: ?{[key: string]: any},\n * operationName?: ?string\n * ): Promise\n *\n * The default export as of graphql-anywhere is sync as of 4.0,\n * but below is an exported alternative that is async.\n * In the 5.0 version, this will be the only export again\n * and it will be async\n *\n */\n private executeStoreQuery({\n query,\n rootValue,\n contextValue,\n variableValues,\n // Default matcher always matches all fragments\n fragmentMatcher = defaultFragmentMatcher,\n }: ExecStoreQueryOptions): ExecResult {\n const mainDefinition = getMainDefinition(query);\n const fragments = getFragmentDefinitions(query);\n const fragmentMap = createFragmentMap(fragments);\n const execContext: ExecContext = {\n query,\n fragmentMap,\n contextValue,\n variableValues,\n fragmentMatcher,\n };\n\n return this.executeSelectionSet({\n selectionSet: mainDefinition.selectionSet,\n rootValue,\n execContext,\n });\n }\n\n private executeSelectionSet({\n selectionSet,\n rootValue,\n execContext,\n }: ExecSelectionSetOptions): ExecResult {\n const { fragmentMap, contextValue, variableValues: variables } = execContext;\n const finalResult: ExecResult = { result: null };\n\n const objectsToMerge: { [key: string]: any }[] = [];\n\n const object: StoreObject = contextValue.store.get(rootValue.id);\n\n const typename =\n (object && object.__typename) ||\n (rootValue.id === 'ROOT_QUERY' && 'Query') ||\n void 0;\n\n function handleMissing(result: ExecResult): T {\n if (result.missing) {\n finalResult.missing = finalResult.missing || [];\n finalResult.missing.push(...result.missing);\n }\n return result.result;\n }\n\n selectionSet.selections.forEach(selection => {\n if (!shouldInclude(selection, variables)) {\n // Skip this entirely\n return;\n }\n\n if (isField(selection)) {\n const fieldResult = handleMissing(\n this.executeField(object, typename, selection, execContext),\n );\n\n if (typeof fieldResult !== 'undefined') {\n objectsToMerge.push({\n [resultKeyNameFromField(selection)]: fieldResult,\n });\n }\n\n } else {\n let fragment: InlineFragmentNode | FragmentDefinitionNode;\n\n if (isInlineFragment(selection)) {\n fragment = selection;\n } else {\n // This is a named fragment\n fragment = fragmentMap[selection.name.value];\n\n if (!fragment) {\n throw new InvariantError(`No fragment named ${selection.name.value}`);\n }\n }\n\n const typeCondition =\n fragment.typeCondition && fragment.typeCondition.name.value;\n\n const match =\n !typeCondition ||\n execContext.fragmentMatcher(rootValue, typeCondition, contextValue);\n\n if (match) {\n let fragmentExecResult = this.executeSelectionSet({\n selectionSet: fragment.selectionSet,\n rootValue,\n execContext,\n });\n\n if (match === 'heuristic' && fragmentExecResult.missing) {\n fragmentExecResult = {\n ...fragmentExecResult,\n missing: fragmentExecResult.missing.map(info => {\n return { ...info, tolerable: true };\n }),\n };\n }\n\n objectsToMerge.push(handleMissing(fragmentExecResult));\n }\n }\n });\n\n // Perform a single merge at the end so that we can avoid making more\n // defensive shallow copies than necessary.\n finalResult.result = mergeDeepArray(objectsToMerge);\n\n if (this.freezeResults && process.env.NODE_ENV !== 'production') {\n Object.freeze(finalResult.result);\n }\n\n return finalResult;\n }\n\n private executeField(\n object: StoreObject,\n typename: string | void,\n field: FieldNode,\n execContext: ExecContext,\n ): ExecResult {\n const { variableValues: variables, contextValue } = execContext;\n const fieldName = field.name.value;\n const args = argumentsObjectFromField(field, variables);\n\n const info: ExecInfo = {\n resultKey: resultKeyNameFromField(field),\n directives: getDirectiveInfoFromField(field, variables),\n };\n\n const readStoreResult = readStoreResolver(\n object,\n typename,\n fieldName,\n args,\n contextValue,\n info,\n );\n\n if (Array.isArray(readStoreResult.result)) {\n return this.combineExecResults(\n readStoreResult,\n this.executeSubSelectedArray({\n field,\n array: readStoreResult.result,\n execContext,\n }),\n );\n }\n\n // Handle all scalar types here\n if (!field.selectionSet) {\n assertSelectionSetForIdValue(field, readStoreResult.result);\n if (this.freezeResults && process.env.NODE_ENV !== 'production') {\n maybeDeepFreeze(readStoreResult);\n }\n return readStoreResult;\n }\n\n // From here down, the field has a selection set, which means it's trying to\n // query a GraphQLObjectType\n if (readStoreResult.result == null) {\n // Basically any field in a GraphQL response can be null, or missing\n return readStoreResult;\n }\n\n // Returned value is an object, and the query has a sub-selection. Recurse.\n return this.combineExecResults(\n readStoreResult,\n this.executeSelectionSet({\n selectionSet: field.selectionSet,\n rootValue: readStoreResult.result,\n execContext,\n }),\n );\n }\n\n private combineExecResults(\n ...execResults: ExecResult[]\n ): ExecResult {\n let missing: ExecResultMissingField[] | undefined;\n execResults.forEach(execResult => {\n if (execResult.missing) {\n missing = missing || [];\n missing.push(...execResult.missing);\n }\n });\n return {\n result: execResults.pop()!.result,\n missing,\n };\n }\n\n private executeSubSelectedArray({\n field,\n array,\n execContext,\n }: ExecSubSelectedArrayOptions): ExecResult {\n let missing: ExecResultMissingField[] | undefined;\n\n function handleMissing(childResult: ExecResult): T {\n if (childResult.missing) {\n missing = missing || [];\n missing.push(...childResult.missing);\n }\n\n return childResult.result;\n }\n\n array = array.map(item => {\n // null value in array\n if (item === null) {\n return null;\n }\n\n // This is a nested array, recurse\n if (Array.isArray(item)) {\n return handleMissing(this.executeSubSelectedArray({\n field,\n array: item,\n execContext,\n }));\n }\n\n // This is an object, run the selection set on it\n if (field.selectionSet) {\n return handleMissing(this.executeSelectionSet({\n selectionSet: field.selectionSet,\n rootValue: item,\n execContext,\n }));\n }\n\n assertSelectionSetForIdValue(field, item);\n\n return item;\n });\n\n if (this.freezeResults && process.env.NODE_ENV !== 'production') {\n Object.freeze(array);\n }\n\n return { result: array, missing };\n }\n}\n\nfunction assertSelectionSetForIdValue(\n field: FieldNode,\n value: any,\n) {\n if (!field.selectionSet && isIdValue(value)) {\n throw new InvariantError(\n `Missing selection set for object of type ${\n value.typename\n } returned for query field ${field.name.value}`\n );\n }\n}\n\nfunction defaultFragmentMatcher() {\n return true;\n}\n\nexport function assertIdValue(idValue: IdValue) {\n invariant(isIdValue(idValue), `\\\nEncountered a sub-selection on the query, but the store doesn't have \\\nan object reference. This should never happen during normal use unless you have custom code \\\nthat is directly manipulating the store; please file an issue.`);\n}\n\nfunction readStoreResolver(\n object: StoreObject,\n typename: string | void,\n fieldName: string,\n args: any,\n context: ReadStoreContext,\n { resultKey, directives }: ExecInfo,\n): ExecResult {\n let storeKeyName = fieldName;\n if (args || directives) {\n // We happen to know here that getStoreKeyName returns its first\n // argument unmodified if there are no args or directives, so we can\n // avoid calling the function at all in that case, as a small but\n // important optimization to this frequently executed code.\n storeKeyName = getStoreKeyName(storeKeyName, args, directives);\n }\n\n let fieldValue: StoreValue | void = void 0;\n\n if (object) {\n fieldValue = object[storeKeyName];\n\n if (\n typeof fieldValue === 'undefined' &&\n context.cacheRedirects &&\n typeof typename === 'string'\n ) {\n // Look for the type in the custom resolver map\n const type = context.cacheRedirects[typename];\n if (type) {\n // Look for the field in the custom resolver map\n const resolver = type[fieldName];\n if (resolver) {\n fieldValue = resolver(object, args, {\n getCacheKey(storeObj: StoreObject) {\n const id = context.dataIdFromObject!(storeObj);\n return id && toIdValue({\n id,\n typename: storeObj.__typename,\n });\n },\n });\n }\n }\n }\n }\n\n if (typeof fieldValue === 'undefined') {\n return {\n result: fieldValue,\n missing: [{\n object,\n fieldName: storeKeyName,\n tolerable: false,\n }],\n };\n }\n\n if (isJsonValue(fieldValue)) {\n fieldValue = fieldValue.json;\n }\n\n return {\n result: fieldValue,\n };\n}\n","import { NormalizedCache, NormalizedCacheObject, StoreObject } from './types';\n\nexport class ObjectCache implements NormalizedCache {\n constructor(protected data: NormalizedCacheObject = Object.create(null)) {}\n\n public toObject() {\n return this.data;\n }\n\n public get(dataId: string) {\n return this.data[dataId]!;\n }\n\n public set(dataId: string, value: StoreObject) {\n this.data[dataId] = value;\n }\n\n public delete(dataId: string) {\n this.data[dataId] = void 0;\n }\n\n public clear() {\n this.data = Object.create(null);\n }\n\n public replace(newData: NormalizedCacheObject) {\n this.data = newData || Object.create(null);\n }\n}\n\nexport function defaultNormalizedCacheFactory(\n seed?: NormalizedCacheObject,\n): NormalizedCache {\n return new ObjectCache(seed);\n}\n","import {\n SelectionSetNode,\n FieldNode,\n DocumentNode,\n InlineFragmentNode,\n FragmentDefinitionNode,\n} from 'graphql';\nimport { FragmentMatcher } from './readFromStore';\n\nimport {\n assign,\n createFragmentMap,\n FragmentMap,\n getDefaultValues,\n getFragmentDefinitions,\n getOperationDefinition,\n IdValue,\n isField,\n isIdValue,\n isInlineFragment,\n isProduction,\n resultKeyNameFromField,\n shouldInclude,\n storeKeyNameFromField,\n StoreValue,\n toIdValue,\n isEqual,\n} from 'apollo-utilities';\n\nimport { invariant } from 'ts-invariant';\n\nimport { ObjectCache } from './objectCache';\nimport { defaultNormalizedCacheFactory } from './depTrackingCache';\n\nimport {\n IdGetter,\n NormalizedCache,\n ReadStoreContext,\n StoreObject,\n} from './types';\n\nexport class WriteError extends Error {\n public type = 'WriteError';\n}\n\nexport function enhanceErrorWithDocument(error: Error, document: DocumentNode) {\n // XXX A bit hacky maybe ...\n const enhancedError = new WriteError(\n `Error writing result to store for query:\\n ${JSON.stringify(document)}`,\n );\n enhancedError.message += '\\n' + error.message;\n enhancedError.stack = error.stack;\n return enhancedError;\n}\n\nexport type WriteContext = {\n readonly store: NormalizedCache;\n readonly processedData?: { [x: string]: FieldNode[] };\n readonly variables?: any;\n readonly dataIdFromObject?: IdGetter;\n readonly fragmentMap?: FragmentMap;\n readonly fragmentMatcherFunction?: FragmentMatcher;\n};\n\nexport class StoreWriter {\n /**\n * Writes the result of a query to the store.\n *\n * @param result The result object returned for the query document.\n *\n * @param query The query document whose result we are writing to the store.\n *\n * @param store The {@link NormalizedCache} used by Apollo for the `data` portion of the store.\n *\n * @param variables A map from the name of a variable to its value. These variables can be\n * referenced by the query document.\n *\n * @param dataIdFromObject A function that returns an object identifier given a particular result\n * object. See the store documentation for details and an example of this function.\n *\n * @param fragmentMatcherFunction A function to use for matching fragment conditions in GraphQL documents\n */\n public writeQueryToStore({\n query,\n result,\n store = defaultNormalizedCacheFactory(),\n variables,\n dataIdFromObject,\n fragmentMatcherFunction,\n }: {\n query: DocumentNode;\n result: Object;\n store?: NormalizedCache;\n variables?: Object;\n dataIdFromObject?: IdGetter;\n fragmentMatcherFunction?: FragmentMatcher;\n }): NormalizedCache {\n return this.writeResultToStore({\n dataId: 'ROOT_QUERY',\n result,\n document: query,\n store,\n variables,\n dataIdFromObject,\n fragmentMatcherFunction,\n });\n }\n\n public writeResultToStore({\n dataId,\n result,\n document,\n store = defaultNormalizedCacheFactory(),\n variables,\n dataIdFromObject,\n fragmentMatcherFunction,\n }: {\n dataId: string;\n result: any;\n document: DocumentNode;\n store?: NormalizedCache;\n variables?: Object;\n dataIdFromObject?: IdGetter;\n fragmentMatcherFunction?: FragmentMatcher;\n }): NormalizedCache {\n // XXX TODO REFACTOR: this is a temporary workaround until query normalization is made to work with documents.\n const operationDefinition = getOperationDefinition(document)!;\n\n try {\n return this.writeSelectionSetToStore({\n result,\n dataId,\n selectionSet: operationDefinition.selectionSet,\n context: {\n store,\n processedData: {},\n variables: assign(\n {},\n getDefaultValues(operationDefinition),\n variables,\n ),\n dataIdFromObject,\n fragmentMap: createFragmentMap(getFragmentDefinitions(document)),\n fragmentMatcherFunction,\n },\n });\n } catch (e) {\n throw enhanceErrorWithDocument(e, document);\n }\n }\n\n public writeSelectionSetToStore({\n result,\n dataId,\n selectionSet,\n context,\n }: {\n dataId: string;\n result: any;\n selectionSet: SelectionSetNode;\n context: WriteContext;\n }): NormalizedCache {\n const { variables, store, fragmentMap } = context;\n\n selectionSet.selections.forEach(selection => {\n if (!shouldInclude(selection, variables)) {\n return;\n }\n\n if (isField(selection)) {\n const resultFieldKey: string = resultKeyNameFromField(selection);\n const value: any = result[resultFieldKey];\n\n if (typeof value !== 'undefined') {\n this.writeFieldToStore({\n dataId,\n value,\n field: selection,\n context,\n });\n } else {\n let isDefered = false;\n let isClient = false;\n if (selection.directives && selection.directives.length) {\n // If this is a defered field we don't need to throw / warn.\n isDefered = selection.directives.some(\n directive => directive.name && directive.name.value === 'defer',\n );\n\n // When using the @client directive, it might be desirable in\n // some cases to want to write a selection set to the store,\n // without having all of the selection set values available.\n // This is because the @client field values might have already\n // been written to the cache separately (e.g. via Apollo\n // Cache's `writeData` capabilities). Because of this, we'll\n // skip the missing field warning for fields with @client\n // directives.\n isClient = selection.directives.some(\n directive => directive.name && directive.name.value === 'client',\n );\n }\n\n if (!isDefered && !isClient && context.fragmentMatcherFunction) {\n // XXX We'd like to throw an error, but for backwards compatibility's sake\n // we just print a warning for the time being.\n //throw new WriteError(`Missing field ${resultFieldKey} in ${JSON.stringify(result, null, 2).substring(0, 100)}`);\n invariant.warn(\n `Missing field ${resultFieldKey} in ${JSON.stringify(\n result,\n null,\n 2,\n ).substring(0, 100)}`,\n );\n }\n }\n } else {\n // This is not a field, so it must be a fragment, either inline or named\n let fragment: InlineFragmentNode | FragmentDefinitionNode;\n\n if (isInlineFragment(selection)) {\n fragment = selection;\n } else {\n // Named fragment\n fragment = (fragmentMap || {})[selection.name.value];\n invariant(fragment, `No fragment named ${selection.name.value}.`);\n }\n\n let matches = true;\n if (context.fragmentMatcherFunction && fragment.typeCondition) {\n // TODO we need to rewrite the fragment matchers for this to work properly and efficiently\n // Right now we have to pretend that we're passing in an idValue and that there's a store\n // on the context.\n const id = dataId || 'self';\n const idValue = toIdValue({ id, typename: undefined });\n const fakeContext: ReadStoreContext = {\n // NOTE: fakeContext always uses ObjectCache\n // since this is only to ensure the return value of 'matches'\n store: new ObjectCache({ [id]: result }),\n cacheRedirects: {},\n };\n const match = context.fragmentMatcherFunction(\n idValue,\n fragment.typeCondition.name.value,\n fakeContext,\n );\n if (!isProduction() && match === 'heuristic') {\n invariant.error('WARNING: heuristic fragment matching going on!');\n }\n matches = !!match;\n }\n\n if (matches) {\n this.writeSelectionSetToStore({\n result,\n selectionSet: fragment.selectionSet,\n dataId,\n context,\n });\n }\n }\n });\n\n return store;\n }\n\n private writeFieldToStore({\n field,\n value,\n dataId,\n context,\n }: {\n field: FieldNode;\n value: any;\n dataId: string;\n context: WriteContext;\n }) {\n const { variables, dataIdFromObject, store } = context;\n\n let storeValue: StoreValue;\n let storeObject: StoreObject;\n\n const storeFieldName: string = storeKeyNameFromField(field, variables);\n\n // If this is a scalar value...\n if (!field.selectionSet || value === null) {\n storeValue =\n value != null && typeof value === 'object'\n ? // If the scalar value is a JSON blob, we have to \"escape\" it so it can’t pretend to be\n // an id.\n { type: 'json', json: value }\n : // Otherwise, just store the scalar directly in the store.\n value;\n } else if (Array.isArray(value)) {\n const generatedId = `${dataId}.${storeFieldName}`;\n\n storeValue = this.processArrayValue(\n value,\n generatedId,\n field.selectionSet,\n context,\n );\n } else {\n // It's an object\n let valueDataId = `${dataId}.${storeFieldName}`;\n let generated = true;\n\n // We only prepend the '$' if the valueDataId isn't already a generated\n // id.\n if (!isGeneratedId(valueDataId)) {\n valueDataId = '$' + valueDataId;\n }\n\n if (dataIdFromObject) {\n const semanticId = dataIdFromObject(value);\n\n // We throw an error if the first character of the id is '$. This is\n // because we use that character to designate an Apollo-generated id\n // and we use the distinction between user-desiginated and application-provided\n // ids when managing overwrites.\n invariant(\n !semanticId || !isGeneratedId(semanticId),\n 'IDs returned by dataIdFromObject cannot begin with the \"$\" character.',\n );\n\n if (\n semanticId ||\n (typeof semanticId === 'number' && semanticId === 0)\n ) {\n valueDataId = semanticId;\n generated = false;\n }\n }\n\n if (!isDataProcessed(valueDataId, field, context.processedData)) {\n this.writeSelectionSetToStore({\n dataId: valueDataId,\n result: value,\n selectionSet: field.selectionSet,\n context,\n });\n }\n\n // We take the id and escape it (i.e. wrap it with an enclosing object).\n // This allows us to distinguish IDs from normal scalars.\n const typename = value.__typename;\n storeValue = toIdValue({ id: valueDataId, typename }, generated);\n\n // check if there was a generated id at the location where we're\n // about to place this new id. If there was, we have to merge the\n // data from that id with the data we're about to write in the store.\n storeObject = store.get(dataId);\n const escapedId =\n storeObject && (storeObject[storeFieldName] as IdValue | undefined);\n if (escapedId !== storeValue && isIdValue(escapedId)) {\n const hadTypename = escapedId.typename !== undefined;\n const hasTypename = typename !== undefined;\n const typenameChanged =\n hadTypename && hasTypename && escapedId.typename !== typename;\n\n // If there is already a real id in the store and the current id we\n // are dealing with is generated, we throw an error.\n // One exception we allow is when the typename has changed, which occurs\n // when schema defines a union, both with and without an ID in the same place.\n // checks if we \"lost\" the read id\n invariant(\n !generated || escapedId.generated || typenameChanged,\n `Store error: the application attempted to write an object with no provided id but the store already contains an id of ${\n escapedId.id\n } for this object. The selectionSet that was trying to be written is:\\n${\n JSON.stringify(field)\n }`,\n );\n\n // checks if we \"lost\" the typename\n invariant(\n !hadTypename || hasTypename,\n `Store error: the application attempted to write an object with no provided typename but the store already contains an object with typename of ${\n escapedId.typename\n } for the object of id ${escapedId.id}. The selectionSet that was trying to be written is:\\n${\n JSON.stringify(field)\n }`,\n );\n\n if (escapedId.generated) {\n // We should only merge if it's an object of the same type,\n // otherwise we should delete the generated object\n if (typenameChanged) {\n // Only delete the generated object when the old object was\n // inlined, and the new object is not. This is indicated by\n // the old id being generated, and the new id being real.\n if (!generated) {\n store.delete(escapedId.id);\n }\n } else {\n mergeWithGenerated(escapedId.id, (storeValue as IdValue).id, store);\n }\n }\n }\n }\n\n storeObject = store.get(dataId);\n if (!storeObject || !isEqual(storeValue, storeObject[storeFieldName])) {\n store.set(dataId, {\n ...storeObject,\n [storeFieldName]: storeValue,\n });\n }\n }\n\n private processArrayValue(\n value: any[],\n generatedId: string,\n selectionSet: SelectionSetNode,\n context: WriteContext,\n ): any[] {\n return value.map((item: any, index: any) => {\n if (item === null) {\n return null;\n }\n\n let itemDataId = `${generatedId}.${index}`;\n\n if (Array.isArray(item)) {\n return this.processArrayValue(item, itemDataId, selectionSet, context);\n }\n\n let generated = true;\n\n if (context.dataIdFromObject) {\n const semanticId = context.dataIdFromObject(item);\n\n if (semanticId) {\n itemDataId = semanticId;\n generated = false;\n }\n }\n\n if (!isDataProcessed(itemDataId, selectionSet, context.processedData)) {\n this.writeSelectionSetToStore({\n dataId: itemDataId,\n result: item,\n selectionSet,\n context,\n });\n }\n\n return toIdValue(\n { id: itemDataId, typename: item.__typename },\n generated,\n );\n });\n }\n}\n\n// Checks if the id given is an id that was generated by Apollo\n// rather than by dataIdFromObject.\nfunction isGeneratedId(id: string): boolean {\n return id[0] === '$';\n}\n\nfunction mergeWithGenerated(\n generatedKey: string,\n realKey: string,\n cache: NormalizedCache,\n): boolean {\n if (generatedKey === realKey) {\n return false;\n }\n\n const generated = cache.get(generatedKey);\n const real = cache.get(realKey);\n let madeChanges = false;\n\n Object.keys(generated).forEach(key => {\n const value = generated[key];\n const realValue = real[key];\n\n if (\n isIdValue(value) &&\n isGeneratedId(value.id) &&\n isIdValue(realValue) &&\n !isEqual(value, realValue) &&\n mergeWithGenerated(value.id, realValue.id, cache)\n ) {\n madeChanges = true;\n }\n });\n\n cache.delete(generatedKey);\n const newRealValue = { ...generated, ...real };\n\n if (isEqual(newRealValue, real)) {\n return madeChanges;\n }\n\n cache.set(realKey, newRealValue);\n return true;\n}\n\nfunction isDataProcessed(\n dataId: string,\n field: FieldNode | SelectionSetNode,\n processedData?: { [x: string]: (FieldNode | SelectionSetNode)[] },\n): boolean {\n if (!processedData) {\n return false;\n }\n\n if (processedData[dataId]) {\n if (processedData[dataId].indexOf(field) >= 0) {\n return true;\n } else {\n processedData[dataId].push(field);\n }\n } else {\n processedData[dataId] = [field];\n }\n\n return false;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Observable = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: \"unsubscribe\",\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver =\n/*#__PURE__*/\nfunction () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: \"next\",\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: \"error\",\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: \"complete\",\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable =\n/*#__PURE__*/\nfunction () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: \"subscribe\",\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: \"forEach\",\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: \"map\",\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"filter\",\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"reduce\",\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"concat\",\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: \"flatMap\",\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: \"from\",\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _item = _step.value;\n observer.next(_item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: \"of\",\n value: function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nexports.Observable = Observable;\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}","module.exports = require('./lib/Observable.js').Observable;\n","/* tslint:disable */\n\nimport zenObservable from 'zen-observable';\n\nnamespace Observable {\n\n}\n\nimport { ZenObservable } from './types';\n\nexport { ZenObservable };\n\nexport type Observer = ZenObservable.Observer;\nexport type Subscriber = ZenObservable.Subscriber;\nexport type ObservableLike = ZenObservable.ObservableLike;\n\nexport const Observable: {\n new (subscriber: Subscriber): Observable;\n from(\n observable: Observable | ZenObservable.ObservableLike | ArrayLike,\n ): Observable;\n of(...args: Array): Observable;\n} = zenObservable;\n\nexport interface Observable {\n subscribe(\n observerOrNext: ((value: T) => void) | ZenObservable.Observer,\n error?: (error: any) => void,\n complete?: () => void,\n ): ZenObservable.Subscription;\n\n forEach(fn: (value: T) => void): Promise;\n\n map(fn: (value: T) => R): Observable;\n\n filter(fn: (value: T) => boolean): Observable;\n\n reduce(\n fn: (previousValue: R | T, currentValue: T) => R | T,\n initialValue?: R | T,\n ): Observable;\n\n flatMap(fn: (value: T) => ZenObservable.ObservableLike): Observable;\n\n from(\n observable: Observable | ZenObservable.ObservableLike | ArrayLike,\n ): Observable;\n of(...args: Array): Observable;\n}\n","import Observable from 'zen-observable-ts';\nimport { invariant, InvariantError } from 'ts-invariant';\n\nimport {\n GraphQLRequest,\n NextLink,\n Operation,\n RequestHandler,\n FetchResult,\n} from './types';\n\nimport {\n validateOperation,\n isTerminating,\n LinkError,\n transformOperation,\n createOperation,\n} from './linkUtils';\n\nfunction passthrough(op, forward) {\n return forward ? forward(op) : Observable.of();\n}\n\nfunction toLink(handler: RequestHandler | ApolloLink) {\n return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\n\nexport function empty(): ApolloLink {\n return new ApolloLink(() => Observable.of());\n}\n\nexport function from(links: ApolloLink[]): ApolloLink {\n if (links.length === 0) return empty();\n return links.map(toLink).reduce((x, y) => x.concat(y));\n}\n\nexport function split(\n test: (op: Operation) => boolean,\n left: ApolloLink | RequestHandler,\n right?: ApolloLink | RequestHandler,\n): ApolloLink {\n const leftLink = toLink(left);\n const rightLink = toLink(right || new ApolloLink(passthrough));\n\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n return new ApolloLink(operation => {\n return test(operation)\n ? leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n } else {\n return new ApolloLink((operation, forward) => {\n return test(operation)\n ? leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n}\n\n// join two Links together\nexport const concat = (\n first: ApolloLink | RequestHandler,\n second: ApolloLink | RequestHandler,\n) => {\n const firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n invariant.warn(\n new LinkError(\n `You are calling concat on a terminating link, which will have no effect`,\n firstLink,\n ),\n );\n return firstLink;\n }\n const nextLink = toLink(second);\n\n if (isTerminating(nextLink)) {\n return new ApolloLink(\n operation =>\n firstLink.request(\n operation,\n op => nextLink.request(op) || Observable.of(),\n ) || Observable.of(),\n );\n } else {\n return new ApolloLink((operation, forward) => {\n return (\n firstLink.request(operation, op => {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of()\n );\n });\n }\n};\n\nexport class ApolloLink {\n public static empty = empty;\n public static from = from;\n public static split = split;\n public static execute = execute;\n\n constructor(request?: RequestHandler) {\n if (request) this.request = request;\n }\n\n public split(\n test: (op: Operation) => boolean,\n left: ApolloLink | RequestHandler,\n right?: ApolloLink | RequestHandler,\n ): ApolloLink {\n return this.concat(split(test, left, right || new ApolloLink(passthrough)));\n }\n\n public concat(next: ApolloLink | RequestHandler): ApolloLink {\n return concat(this, next);\n }\n\n public request(\n operation: Operation,\n forward?: NextLink,\n ): Observable | null {\n throw new InvariantError('request is not implemented');\n }\n}\n\nexport function execute(\n link: ApolloLink,\n operation: GraphQLRequest,\n): Observable {\n return (\n link.request(\n createOperation(\n operation.context,\n transformOperation(validateOperation(operation)),\n ),\n ) || Observable.of()\n );\n}\n","import Observable from 'zen-observable-ts';\n\nimport { GraphQLRequest, Operation } from './types';\nimport { ApolloLink } from './link';\n\nimport { getOperationName } from 'apollo-utilities';\nimport { invariant, InvariantError } from 'ts-invariant';\nexport { getOperationName };\n\nexport function validateOperation(operation: GraphQLRequest): GraphQLRequest {\n const OPERATION_FIELDS = [\n 'query',\n 'operationName',\n 'variables',\n 'extensions',\n 'context',\n ];\n for (let key of Object.keys(operation)) {\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw new InvariantError(`illegal argument: ${key}`);\n }\n }\n\n return operation;\n}\n\nexport class LinkError extends Error {\n public link: ApolloLink;\n constructor(message?: string, link?: ApolloLink) {\n super(message);\n this.link = link;\n }\n}\n\nexport function isTerminating(link: ApolloLink): boolean {\n return link.request.length <= 1;\n}\n\nexport function toPromise(observable: Observable): Promise {\n let completed = false;\n return new Promise((resolve, reject) => {\n observable.subscribe({\n next: data => {\n if (completed) {\n invariant.warn(\n `Promise Wrapper does not support multiple results from Observable`,\n );\n } else {\n completed = true;\n resolve(data);\n }\n },\n error: reject,\n });\n });\n}\n\n// backwards compat\nexport const makePromise = toPromise;\n\nexport function fromPromise(promise: Promise): Observable {\n return new Observable(observer => {\n promise\n .then((value: T) => {\n observer.next(value);\n observer.complete();\n })\n .catch(observer.error.bind(observer));\n });\n}\n\nexport function fromError(errorValue: any): Observable {\n return new Observable(observer => {\n observer.error(errorValue);\n });\n}\n\nexport function transformOperation(operation: GraphQLRequest): GraphQLRequest {\n const transformedOperation: GraphQLRequest = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n\n // best guess at an operation name\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== 'string'\n ? getOperationName(transformedOperation.query)\n : '';\n }\n\n return transformedOperation as Operation;\n}\n\nexport function createOperation(\n starting: any,\n operation: GraphQLRequest,\n): Operation {\n let context = { ...starting };\n const setContext = next => {\n if (typeof next === 'function') {\n context = { ...context, ...next(context) };\n } else {\n context = { ...context, ...next };\n }\n };\n const getContext = () => ({ ...context });\n\n Object.defineProperty(operation, 'setContext', {\n enumerable: false,\n value: setContext,\n });\n\n Object.defineProperty(operation, 'getContext', {\n enumerable: false,\n value: getContext,\n });\n\n Object.defineProperty(operation, 'toKey', {\n enumerable: false,\n value: () => getKey(operation),\n });\n\n return operation as Operation;\n}\n\nexport function getKey(operation: GraphQLRequest) {\n // XXX We're assuming here that query and variables will be serialized in\n // the same order, which might not always be true.\n const { query, variables, operationName } = operation;\n return JSON.stringify([operationName, query, variables]);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dedentBlockStringValue = dedentBlockStringValue;\nexports.getBlockStringIndentation = getBlockStringIndentation;\nexports.printBlockString = printBlockString;\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n */\nfunction dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(lines);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.join('\\n');\n} // @internal\n\n\nfunction getBlockStringIndentation(lines) {\n var commonIndent = null;\n\n for (var i = 1; i < lines.length; i++) {\n var line = lines[i];\n var indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n if (commonIndent === null || indent < commonIndent) {\n commonIndent = indent;\n\n if (commonIndent === 0) {\n break;\n }\n }\n }\n\n return commonIndent === null ? 0 : commonIndent;\n}\n\nfunction leadingWhitespace(str) {\n var i = 0;\n\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n\n return i;\n}\n\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\n\n\nfunction printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.print = print;\n\nvar _visitor = require(\"./visitor\");\n\nvar _blockString = require(\"./blockString\");\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction print(ast) {\n return (0, _visitor.visit)(ast, {\n leave: printDocASTReducer\n });\n} // TODO: provide better type coverage in future\n\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? (0, _blockString.printBlockString)(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: function SchemaDefinition(_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(function (x) {\n return x;\n }).join(separator || '') : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return array && array.length !== 0 ? '{\\n' + indent(join(array, '\\n')) + '\\n}' : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\n\n\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n\nfunction indent(maybeString) {\n return maybeString && ' ' + maybeString.replace(/\\n/g, '\\n ');\n}\n\nfunction isMultiline(string) {\n return string.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray && maybeArray.some(isMultiline);\n}\n","/* tslint:disable */\n\nimport { ApolloLink, Observable, RequestHandler, fromError } from 'apollo-link';\nimport {\n serializeFetchParameter,\n selectURI,\n parseAndCheckHttpResponse,\n checkFetcher,\n selectHttpOptionsAndBody,\n createSignalIfSupported,\n fallbackHttpConfig,\n Body,\n HttpOptions,\n UriFunction as _UriFunction,\n} from 'apollo-link-http-common';\nimport { DefinitionNode } from 'graphql';\n\nexport namespace HttpLink {\n //TODO Would much rather be able to export directly\n export interface UriFunction extends _UriFunction {}\n export interface Options extends HttpOptions {\n /**\n * If set to true, use the HTTP GET method for query operations. Mutations\n * will still use the method specified in fetchOptions.method (which defaults\n * to POST).\n */\n useGETForQueries?: boolean;\n }\n}\n\n// For backwards compatibility.\nexport import FetchOptions = HttpLink.Options;\nexport import UriFunction = HttpLink.UriFunction;\n\nexport const createHttpLink = (linkOptions: HttpLink.Options = {}) => {\n let {\n uri = '/graphql',\n // use default global fetch if nothing passed in\n fetch: fetcher,\n includeExtensions,\n useGETForQueries,\n ...requestOptions\n } = linkOptions;\n\n // dev warnings to ensure fetch is present\n checkFetcher(fetcher);\n\n //fetcher is set here rather than the destructuring to ensure fetch is\n //declared before referencing it. Reference in the destructuring would cause\n //a ReferenceError\n if (!fetcher) {\n fetcher = fetch;\n }\n\n const linkConfig = {\n http: { includeExtensions },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n\n return new ApolloLink(operation => {\n let chosenURI = selectURI(operation, uri);\n\n const context = operation.getContext();\n\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`. If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n const clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n const { name, version } = context.clientAwareness;\n if (name) {\n clientAwarenessHeaders['apollographql-client-name'] = name;\n }\n if (version) {\n clientAwarenessHeaders['apollographql-client-version'] = version;\n }\n }\n\n const contextHeaders = { ...clientAwarenessHeaders, ...context.headers };\n\n const contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n\n //uses fallback, link, and then context to build options\n const { options, body } = selectHttpOptionsAndBody(\n operation,\n fallbackHttpConfig,\n linkConfig,\n contextConfig,\n );\n\n let controller;\n if (!(options as any).signal) {\n const { controller: _controller, signal } = createSignalIfSupported();\n controller = _controller;\n if (controller) (options as any).signal = signal;\n }\n\n // If requested, set method to GET if there are no mutations.\n const definitionIsMutation = (d: DefinitionNode) => {\n return d.kind === 'OperationDefinition' && d.operation === 'mutation';\n };\n if (\n useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)\n ) {\n options.method = 'GET';\n }\n\n if (options.method === 'GET') {\n const { newURI, parseError } = rewriteURIForGET(chosenURI, body);\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n } else {\n try {\n (options as any).body = serializeFetchParameter(body, 'Payload');\n } catch (parseError) {\n return fromError(parseError);\n }\n }\n\n return new Observable(observer => {\n fetcher(chosenURI, options)\n .then(response => {\n operation.setContext({ response });\n return response;\n })\n .then(parseAndCheckHttpResponse(operation))\n .then(result => {\n // we have data and can send it to back up the link chain\n observer.next(result);\n observer.complete();\n return result;\n })\n .catch(err => {\n // fetch was cancelled so it's already been cleaned up in the unsubscribe\n if (err.name === 'AbortError') return;\n // if it is a network error, BUT there is graphql result info\n // fire the next observer before calling error\n // this gives apollo-client (and react-apollo) the `graphqlErrors` and `networErrors`\n // to pass to UI\n // this should only happen if we *also* have data as part of the response key per\n // the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we don't call next, the UI can only show networkError because AC didn't\n // get any graphqlErrors\n // this is graphql execution result info (i.e errors and possibly data)\n // this is because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n observer.error(err);\n });\n\n return () => {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller) controller.abort();\n };\n });\n });\n};\n\n// For GET operations, returns the given URI rewritten with parameters, or a\n// parse error.\nfunction rewriteURIForGET(chosenURI: string, body: Body) {\n // Implement the standard HTTP GET serialization, plus 'extensions'. Note\n // the extra level of JSON serialization!\n const queryParams = [];\n const addQueryParam = (key: string, value: string) => {\n queryParams.push(`${key}=${encodeURIComponent(value)}`);\n };\n\n if ('query' in body) {\n addQueryParam('query', body.query);\n }\n if (body.operationName) {\n addQueryParam('operationName', body.operationName);\n }\n if (body.variables) {\n let serializedVariables;\n try {\n serializedVariables = serializeFetchParameter(\n body.variables,\n 'Variables map',\n );\n } catch (parseError) {\n return { parseError };\n }\n addQueryParam('variables', serializedVariables);\n }\n if (body.extensions) {\n let serializedExtensions;\n try {\n serializedExtensions = serializeFetchParameter(\n body.extensions,\n 'Extensions map',\n );\n } catch (parseError) {\n return { parseError };\n }\n addQueryParam('extensions', serializedExtensions);\n }\n\n // Reconstruct the URI with added query params.\n // XXX This assumes that the URI is well-formed and that it doesn't\n // already contain any of these query params. We could instead use the\n // URL API and take a polyfill (whatwg-url@6) for older browsers that\n // don't support URLSearchParams. Note that some browsers (and\n // versions of whatwg-url) support URL but not URLSearchParams!\n let fragment = '',\n preFragment = chosenURI;\n const fragmentStart = chosenURI.indexOf('#');\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n const queryParamsPrefix = preFragment.indexOf('?') === -1 ? '?' : '&';\n const newURI =\n preFragment + queryParamsPrefix + queryParams.join('&') + fragment;\n return { newURI };\n}\n\nexport class HttpLink extends ApolloLink {\n public requester: RequestHandler;\n constructor(opts?: HttpLink.Options) {\n super(createHttpLink(opts).request);\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noop = exports.noopHeaders = exports.GraphqlDocuments = exports.ApolloClient = void 0;\nconst core_1 = require(\"@rxdi/core\");\nexports.ApolloClient = new core_1.InjectionToken('apollo-link');\nexports.GraphqlDocuments = 'graphql-documents';\nconst noopHeaders = () => new Headers();\nexports.noopHeaders = noopHeaders;\nconst noop = () => null;\nexports.noop = noop;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import {\n ApolloLink,\n FetchResult,\n GraphQLRequest,\n execute,\n} from 'apollo-link';\nimport { ExecutionResult, DocumentNode } from 'graphql';\nimport { ApolloCache, DataProxy } from 'apollo-cache';\n\nimport { invariant, InvariantError } from 'ts-invariant';\n\nimport { QueryManager } from './core/QueryManager';\nimport {\n ApolloQueryResult,\n OperationVariables,\n Resolvers,\n} from './core/types';\nimport { ObservableQuery } from './core/ObservableQuery';\nimport { LocalState, FragmentMatcher } from './core/LocalState';\nimport { Observable } from './util/Observable';\n\nimport {\n QueryOptions,\n WatchQueryOptions,\n SubscriptionOptions,\n MutationOptions,\n WatchQueryFetchPolicy,\n} from './core/watchQueryOptions';\n\nimport { DataStore } from './data/store';\n\nimport { version } from './version';\n\nexport interface DefaultOptions {\n watchQuery?: Partial;\n query?: Partial;\n mutate?: Partial;\n}\n\nlet hasSuggestedDevtools = false;\n\nexport type ApolloClientOptions = {\n link?: ApolloLink;\n cache: ApolloCache;\n ssrForceFetchDelay?: number;\n ssrMode?: boolean;\n connectToDevTools?: boolean;\n queryDeduplication?: boolean;\n defaultOptions?: DefaultOptions;\n assumeImmutableResults?: boolean;\n resolvers?: Resolvers | Resolvers[];\n typeDefs?: string | string[] | DocumentNode | DocumentNode[];\n fragmentMatcher?: FragmentMatcher;\n name?: string;\n version?: string;\n};\n\n/**\n * This is the primary Apollo Client class. It is used to send GraphQL documents (i.e. queries\n * and mutations) to a GraphQL spec-compliant server over a {@link NetworkInterface} instance,\n * receive results from the server and cache the results in a store. It also delivers updates\n * to GraphQL queries through {@link Observable} instances.\n */\nexport default class ApolloClient implements DataProxy {\n public link: ApolloLink;\n public store: DataStore;\n public cache: ApolloCache;\n public readonly queryManager: QueryManager;\n public disableNetworkFetches: boolean;\n public version: string;\n public queryDeduplication: boolean;\n public defaultOptions: DefaultOptions = {};\n public readonly typeDefs: ApolloClientOptions['typeDefs'];\n\n private devToolsHookCb: Function;\n private resetStoreCallbacks: Array<() => Promise> = [];\n private clearStoreCallbacks: Array<() => Promise> = [];\n private localState: LocalState;\n\n /**\n * Constructs an instance of {@link ApolloClient}.\n *\n * @param link The {@link ApolloLink} over which GraphQL documents will be resolved into a response.\n *\n * @param cache The initial cache to use in the data store.\n *\n * @param ssrMode Determines whether this is being run in Server Side Rendering (SSR) mode.\n *\n * @param ssrForceFetchDelay Determines the time interval before we force fetch queries for a\n * server side render.\n *\n * @param queryDeduplication If set to false, a query will still be sent to the server even if a query\n * with identical parameters (query, variables, operationName) is already in flight.\n *\n * @param defaultOptions Used to set application wide defaults for the\n * options supplied to `watchQuery`, `query`, or\n * `mutate`.\n *\n * @param assumeImmutableResults When this option is true, the client will assume results\n * read from the cache are never mutated by application code,\n * which enables substantial performance optimizations. Passing\n * `{ freezeResults: true }` to the `InMemoryCache` constructor\n * can help enforce this immutability.\n *\n * @param name A custom name that can be used to identify this client, when\n * using Apollo client awareness features. E.g. \"iOS\".\n *\n * @param version A custom version that can be used to identify this client,\n * when using Apollo client awareness features. This is the\n * version of your client, which you may want to increment on\n * new builds. This is NOT the version of Apollo Client that\n * you are using.\n */\n constructor(options: ApolloClientOptions) {\n const {\n cache,\n ssrMode = false,\n ssrForceFetchDelay = 0,\n connectToDevTools,\n queryDeduplication = true,\n defaultOptions,\n assumeImmutableResults = false,\n resolvers,\n typeDefs,\n fragmentMatcher,\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n } = options;\n\n let { link } = options;\n\n // If a link hasn't been defined, but local state resolvers have been set,\n // setup a default empty link.\n if (!link && resolvers) {\n link = ApolloLink.empty();\n }\n\n if (!link || !cache) {\n throw new InvariantError(\n \"In order to initialize Apollo Client, you must specify 'link' and 'cache' properties in the options object.\\n\" +\n \"These options are part of the upgrade requirements when migrating from Apollo Client 1.x to Apollo Client 2.x.\\n\" +\n \"For more information, please visit: https://www.apollographql.com/docs/tutorial/client.html#apollo-client-setup\"\n );\n }\n\n // remove apollo-client supported directives\n this.link = link;\n this.cache = cache;\n this.store = new DataStore(cache);\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || {};\n this.typeDefs = typeDefs;\n\n if (ssrForceFetchDelay) {\n setTimeout(\n () => (this.disableNetworkFetches = false),\n ssrForceFetchDelay,\n );\n }\n\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n\n // Attach the client instance to window to let us be found by chrome devtools, but only in\n // development mode\n const defaultConnectToDevTools =\n process.env.NODE_ENV !== 'production' &&\n typeof window !== 'undefined' &&\n !(window as any).__APOLLO_CLIENT__;\n\n if (\n typeof connectToDevTools === 'undefined'\n ? defaultConnectToDevTools\n : connectToDevTools && typeof window !== 'undefined'\n ) {\n (window as any).__APOLLO_CLIENT__ = this;\n }\n\n /**\n * Suggest installing the devtools for developers who don't have them\n */\n if (!hasSuggestedDevtools && process.env.NODE_ENV !== 'production') {\n hasSuggestedDevtools = true;\n if (\n typeof window !== 'undefined' &&\n window.document &&\n window.top === window.self\n ) {\n // First check if devtools is not installed\n if (\n typeof (window as any).__APOLLO_DEVTOOLS_GLOBAL_HOOK__ === 'undefined'\n ) {\n // Only for Chrome\n if (\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.indexOf('Chrome') > -1\n ) {\n // tslint:disable-next-line\n console.debug(\n 'Download the Apollo DevTools ' +\n 'for a better development experience: ' +\n 'https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm',\n );\n }\n }\n }\n }\n\n this.version = version;\n\n this.localState = new LocalState({\n cache,\n client: this,\n resolvers,\n fragmentMatcher,\n });\n\n this.queryManager = new QueryManager({\n link: this.link,\n store: this.store,\n queryDeduplication,\n ssrMode,\n clientAwareness: {\n name: clientAwarenessName!,\n version: clientAwarenessVersion!,\n },\n localState: this.localState,\n assumeImmutableResults,\n onBroadcast: () => {\n if (this.devToolsHookCb) {\n this.devToolsHookCb({\n action: {},\n state: {\n queries: this.queryManager.queryStore.getStore(),\n mutations: this.queryManager.mutationStore.getStore(),\n },\n dataWithOptimisticResults: this.cache.extract(true),\n });\n }\n },\n });\n }\n\n /**\n * Call this method to terminate any active client processes, making it safe\n * to dispose of this `ApolloClient` instance.\n */\n public stop() {\n this.queryManager.stop();\n }\n\n /**\n * This watches the cache store of the query according to the options specified and\n * returns an {@link ObservableQuery}. We can subscribe to this {@link ObservableQuery} and\n * receive updated results through a GraphQL observer when the cache store changes.\n *

\n * Note that this method is not an implementation of GraphQL subscriptions. Rather,\n * it uses Apollo's store in order to reactively deliver updates to your query results.\n *

\n * For example, suppose you call watchQuery on a GraphQL query that fetches a person's\n * first and last name and this person has a particular object identifer, provided by\n * dataIdFromObject. Later, a different query fetches that same person's\n * first and last name and the first name has now changed. Then, any observers associated\n * with the results of the first query will be updated with a new result object.\n *

\n * Note that if the cache does not change, the subscriber will *not* be notified.\n *

\n * See [here](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.3mb0cbcmc) for\n * a description of store reactivity.\n */\n public watchQuery(\n options: WatchQueryOptions,\n ): ObservableQuery {\n if (this.defaultOptions.watchQuery) {\n options = {\n ...this.defaultOptions.watchQuery,\n ...options,\n } as WatchQueryOptions;\n }\n\n // XXX Overwriting options is probably not the best way to do this long term...\n if (\n this.disableNetworkFetches &&\n (options.fetchPolicy === 'network-only' ||\n options.fetchPolicy === 'cache-and-network')\n ) {\n options = { ...options, fetchPolicy: 'cache-first' };\n }\n\n return this.queryManager.watchQuery(options);\n }\n\n /**\n * This resolves a single query according to the options specified and\n * returns a {@link Promise} which is either resolved with the resulting data\n * or rejected with an error.\n *\n * @param options An object of type {@link QueryOptions} that allows us to\n * describe how this query should be treated e.g. whether it should hit the\n * server at all or just resolve from the cache, etc.\n */\n public query(\n options: QueryOptions,\n ): Promise> {\n if (this.defaultOptions.query) {\n options = { ...this.defaultOptions.query, ...options } as QueryOptions<\n TVariables\n >;\n }\n\n invariant(\n (options.fetchPolicy as WatchQueryFetchPolicy) !== 'cache-and-network',\n 'The cache-and-network fetchPolicy does not work with client.query, because ' +\n 'client.query can only return a single result. Please use client.watchQuery ' +\n 'to receive multiple results from the cache and the network, or consider ' +\n 'using a different fetchPolicy, such as cache-first or network-only.'\n );\n\n if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n options = { ...options, fetchPolicy: 'cache-first' };\n }\n\n return this.queryManager.query(options);\n }\n\n /**\n * This resolves a single mutation according to the options specified and returns a\n * {@link Promise} which is either resolved with the resulting data or rejected with an\n * error.\n *\n * It takes options as an object with the following keys and values:\n */\n public mutate(\n options: MutationOptions,\n ): Promise> {\n if (this.defaultOptions.mutate) {\n options = {\n ...this.defaultOptions.mutate,\n ...options,\n } as MutationOptions;\n }\n\n return this.queryManager.mutate(options);\n }\n\n /**\n * This subscribes to a graphql subscription according to the options specified and returns an\n * {@link Observable} which either emits received data or an error.\n */\n public subscribe(\n options: SubscriptionOptions,\n ): Observable> {\n return this.queryManager.startGraphQLSubscription(options);\n }\n\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL query without making a network request. This method will start at\n * the root query. To start at a specific id returned by `dataIdFromObject`\n * use `readFragment`.\n *\n * @param optimistic Set to `true` to allow `readQuery` to return\n * optimistic results. Is `false` by default.\n */\n public readQuery(\n options: DataProxy.Query,\n optimistic: boolean = false,\n ): T | null {\n return this.cache.readQuery(options, optimistic);\n }\n\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL fragment without making a network request. This method will read a\n * GraphQL fragment from any arbitrary id that is currently cached, unlike\n * `readQuery` which will only read from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are reading. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n *\n * @param optimistic Set to `true` to allow `readFragment` to return\n * optimistic results. Is `false` by default.\n */\n public readFragment(\n options: DataProxy.Fragment,\n optimistic: boolean = false,\n ): T | null {\n return this.cache.readFragment(options, optimistic);\n }\n\n /**\n * Writes some data in the shape of the provided GraphQL query directly to\n * the store. This method will start at the root query. To start at a\n * specific id returned by `dataIdFromObject` then use `writeFragment`.\n */\n public writeQuery(\n options: DataProxy.WriteQueryOptions,\n ): void {\n const result = this.cache.writeQuery(options);\n this.queryManager.broadcastQueries();\n return result;\n }\n\n /**\n * Writes some data in the shape of the provided GraphQL fragment directly to\n * the store. This method will write to a GraphQL fragment from any arbitrary\n * id that is currently cached, unlike `writeQuery` which will only write\n * from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are writing. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n */\n public writeFragment(\n options: DataProxy.WriteFragmentOptions,\n ): void {\n const result = this.cache.writeFragment(options);\n this.queryManager.broadcastQueries();\n return result;\n }\n\n /**\n * Sugar for writeQuery & writeFragment\n * This method will construct a query from the data object passed in.\n * If no id is supplied, writeData will write the data to the root.\n * If an id is supplied, writeData will write a fragment to the object\n * specified by the id in the store.\n *\n * Since you aren't passing in a query to check the shape of the data,\n * you must pass in an object that conforms to the shape of valid GraphQL data.\n */\n public writeData(\n options: DataProxy.WriteDataOptions,\n ): void {\n const result = this.cache.writeData(options);\n this.queryManager.broadcastQueries();\n return result;\n }\n\n public __actionHookForDevTools(cb: () => any) {\n this.devToolsHookCb = cb;\n }\n\n public __requestRaw(payload: GraphQLRequest): Observable {\n return execute(this.link, payload);\n }\n\n /**\n * This initializes the query manager that tracks queries and the cache\n */\n public initQueryManager(): QueryManager {\n invariant.warn(\n 'Calling the initQueryManager method is no longer necessary, ' +\n 'and it will be removed from ApolloClient in version 3.0.',\n );\n return this.queryManager;\n }\n\n /**\n * Resets your entire store by clearing out your cache and then re-executing\n * all of your active queries. This makes it so that you may guarantee that\n * there is no data left in your store from a time before you called this\n * method.\n *\n * `resetStore()` is useful when your user just logged out. You’ve removed the\n * user session, and you now want to make sure that any references to data you\n * might have fetched while the user session was active is gone.\n *\n * It is important to remember that `resetStore()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n public resetStore(): Promise[] | null> {\n return Promise.resolve()\n .then(() => this.queryManager.clearStore())\n .then(() => Promise.all(this.resetStoreCallbacks.map(fn => fn())))\n .then(() => this.reFetchObservableQueries());\n }\n\n /**\n * Remove all data from the store. Unlike `resetStore`, `clearStore` will\n * not refetch any active queries.\n */\n public clearStore(): Promise {\n return Promise.resolve()\n .then(() => this.queryManager.clearStore())\n .then(() => Promise.all(this.clearStoreCallbacks.map(fn => fn())));\n }\n\n /**\n * Allows callbacks to be registered that are executed when the store is\n * reset. `onResetStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n public onResetStore(cb: () => Promise): () => void {\n this.resetStoreCallbacks.push(cb);\n return () => {\n this.resetStoreCallbacks = this.resetStoreCallbacks.filter(c => c !== cb);\n };\n }\n\n /**\n * Allows callbacks to be registered that are executed when the store is\n * cleared. `onClearStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n public onClearStore(cb: () => Promise): () => void {\n this.clearStoreCallbacks.push(cb);\n return () => {\n this.clearStoreCallbacks = this.clearStoreCallbacks.filter(c => c !== cb);\n };\n }\n\n /**\n * Refetches all of your active queries.\n *\n * `reFetchObservableQueries()` is useful if you want to bring the client back to proper state in case of a network outage\n *\n * It is important to remember that `reFetchObservableQueries()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n * Takes optional parameter `includeStandby` which will include queries in standby-mode when refetching.\n */\n public reFetchObservableQueries(\n includeStandby?: boolean,\n ): Promise[]> {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n }\n\n /**\n * Exposes the cache's complete state, in a serializable format for later restoration.\n */\n public extract(optimistic?: boolean): TCacheShape {\n return this.cache.extract(optimistic);\n }\n\n /**\n * Replaces existing state in the cache (if any) with the values expressed by\n * `serializedState`.\n *\n * Called when hydrating a cache (server side rendering, or offline storage),\n * and also (potentially) during hot reloads.\n */\n public restore(serializedState: TCacheShape): ApolloCache {\n return this.cache.restore(serializedState);\n }\n\n /**\n * Add additional local resolvers.\n */\n public addResolvers(resolvers: Resolvers | Resolvers[]) {\n this.localState.addResolvers(resolvers);\n }\n\n /**\n * Set (override existing) local resolvers.\n */\n public setResolvers(resolvers: Resolvers | Resolvers[]) {\n this.localState.setResolvers(resolvers);\n }\n\n /**\n * Get all registered local resolvers.\n */\n public getResolvers() {\n return this.localState.getResolvers();\n }\n\n /**\n * Set a custom local state fragment matcher.\n */\n public setLocalStateFragmentMatcher(fragmentMatcher: FragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n }\n}\n","/**\n * The current status of a query’s execution in our system.\n */\nexport enum NetworkStatus {\n /**\n * The query has never been run before and the query is now currently running. A query will still\n * have this network status even if a partial data result was returned from the cache, but a\n * query was dispatched anyway.\n */\n loading = 1,\n\n /**\n * If `setVariables` was called and a query was fired because of that then the network status\n * will be `setVariables` until the result of that query comes back.\n */\n setVariables = 2,\n\n /**\n * Indicates that `fetchMore` was called on this query and that the query created is currently in\n * flight.\n */\n fetchMore = 3,\n\n /**\n * Similar to the `setVariables` network status. It means that `refetch` was called on a query\n * and the refetch request is currently in flight.\n */\n refetch = 4,\n\n /**\n * Indicates that a polling query is currently in flight. So for example if you are polling a\n * query every 10 seconds then the network status will switch to `poll` every 10 seconds whenever\n * a poll request has been sent but not resolved.\n */\n poll = 6,\n\n /**\n * No request is in flight for this query, and no errors happened. Everything is OK.\n */\n ready = 7,\n\n /**\n * No request is in flight for this query, but one or more errors were detected.\n */\n error = 8,\n}\n\n/**\n * Returns true if there is currently a network request in flight according to a given network\n * status.\n */\nexport function isNetworkRequestInFlight(\n networkStatus: NetworkStatus,\n): boolean {\n return networkStatus < 7;\n}\n","// This simplified polyfill attempts to follow the ECMAScript Observable proposal.\n// See https://github.com/zenparsing/es-observable\nimport { Observable as LinkObservable } from 'apollo-link';\n\nexport type Subscription = ZenObservable.Subscription;\nexport type Observer = ZenObservable.Observer;\n\nimport $$observable from 'symbol-observable';\n\n// rxjs interopt\nexport class Observable extends LinkObservable {\n public [$$observable]() {\n return this;\n }\n\n public ['@@observable' as any]() {\n return this;\n }\n}\n","export function isNonEmptyArray(value?: ArrayLike): value is Array {\n return Array.isArray(value) && value.length > 0;\n}\n","import { GraphQLError } from 'graphql';\nimport { isNonEmptyArray } from '../util/arrays';\n\nexport function isApolloError(err: Error): err is ApolloError {\n return err.hasOwnProperty('graphQLErrors');\n}\n\n// Sets the error message on this error according to the\n// the GraphQL and network errors that are present.\n// If the error message has already been set through the\n// constructor or otherwise, this function is a nop.\nconst generateErrorMessage = (err: ApolloError) => {\n let message = '';\n // If we have GraphQL errors present, add that to the error message.\n if (isNonEmptyArray(err.graphQLErrors)) {\n err.graphQLErrors.forEach((graphQLError: GraphQLError) => {\n const errorMessage = graphQLError\n ? graphQLError.message\n : 'Error message not found.';\n message += `GraphQL error: ${errorMessage}\\n`;\n });\n }\n\n if (err.networkError) {\n message += 'Network error: ' + err.networkError.message + '\\n';\n }\n\n // strip newline from the end of the message\n message = message.replace(/\\n$/, '');\n return message;\n};\n\nexport class ApolloError extends Error {\n public message: string;\n public graphQLErrors: ReadonlyArray;\n public networkError: Error | null;\n\n // An object that can be used to provide some additional information\n // about an error, e.g. specifying the type of error this is. Used\n // internally within Apollo Client.\n public extraInfo: any;\n\n // Constructs an instance of ApolloError given a GraphQLError\n // or a network error. Note that one of these has to be a valid\n // value or the constructed error will be meaningless.\n constructor({\n graphQLErrors,\n networkError,\n errorMessage,\n extraInfo,\n }: {\n graphQLErrors?: ReadonlyArray;\n networkError?: Error | null;\n errorMessage?: string;\n extraInfo?: any;\n }) {\n super(errorMessage);\n this.graphQLErrors = graphQLErrors || [];\n this.networkError = networkError || null;\n\n if (!errorMessage) {\n this.message = generateErrorMessage(this);\n } else {\n this.message = errorMessage;\n }\n\n this.extraInfo = extraInfo;\n\n // We're not using `Object.setPrototypeOf` here as it isn't fully\n // supported on Android (see issue #3236).\n (this as any).__proto__ = ApolloError.prototype;\n }\n}\n","import { FetchResult } from 'apollo-link';\nimport { DocumentNode, GraphQLError } from 'graphql';\n\nimport { QueryStoreValue } from '../data/queries';\nimport { NetworkStatus } from './networkStatus';\nimport { Resolver } from './LocalState';\n\nexport type QueryListener = (\n queryStoreValue: QueryStoreValue,\n newData?: any,\n forceResolvers?: boolean,\n) => void;\n\nexport type OperationVariables = { [key: string]: any };\n\nexport type PureQueryOptions = {\n query: DocumentNode;\n variables?: { [key: string]: any };\n context?: any;\n};\n\nexport type ApolloQueryResult = {\n data: T;\n errors?: ReadonlyArray;\n loading: boolean;\n networkStatus: NetworkStatus;\n stale: boolean;\n};\n\nexport enum FetchType {\n normal = 1,\n refetch = 2,\n poll = 3,\n}\n\n// This is part of the public API, people write these functions in `updateQueries`.\nexport type MutationQueryReducer = (\n previousResult: Record,\n options: {\n mutationResult: FetchResult;\n queryName: string | undefined;\n queryVariables: Record;\n },\n) => Record;\n\nexport type MutationQueryReducersMap = {\n [queryName: string]: MutationQueryReducer;\n};\n\nexport interface Resolvers {\n [key: string]: {\n [ field: string ]: Resolver;\n };\n}\n","import {\n isEqual,\n tryFunctionOrLogError,\n cloneDeep,\n getOperationDefinition,\n} from 'apollo-utilities';\nimport { GraphQLError } from 'graphql';\nimport { NetworkStatus, isNetworkRequestInFlight } from './networkStatus';\nimport { Observable, Observer, Subscription } from '../util/Observable';\nimport { ApolloError } from '../errors/ApolloError';\nimport { QueryManager } from './QueryManager';\nimport { ApolloQueryResult, FetchType, OperationVariables } from './types';\nimport {\n WatchQueryOptions,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n ErrorPolicy,\n} from './watchQueryOptions';\n\nimport { QueryStoreValue } from '../data/queries';\n\nimport { invariant, InvariantError } from 'ts-invariant';\nimport { isNonEmptyArray } from '../util/arrays';\n\n// XXX remove in the next breaking semver change (3.0)\n// Deprecated, use ApolloCurrentQueryResult\nexport type ApolloCurrentResult = {\n data: T | {};\n errors?: ReadonlyArray;\n loading: boolean;\n networkStatus: NetworkStatus;\n error?: ApolloError;\n partial?: boolean;\n};\n\nexport type ApolloCurrentQueryResult = {\n data: T | undefined;\n errors?: ReadonlyArray;\n loading: boolean;\n networkStatus: NetworkStatus;\n error?: ApolloError;\n partial?: boolean;\n stale?: boolean;\n};\n\nexport interface FetchMoreOptions<\n TData = any,\n TVariables = OperationVariables\n> {\n updateQuery: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult?: TData;\n variables?: TVariables;\n },\n ) => TData;\n}\n\nexport interface UpdateQueryOptions {\n variables?: TVariables;\n}\n\nexport const hasError = (\n storeValue: QueryStoreValue,\n policy: ErrorPolicy = 'none',\n) => storeValue && (\n storeValue.networkError ||\n (policy === 'none' && isNonEmptyArray(storeValue.graphQLErrors))\n);\n\nexport class ObservableQuery<\n TData = any,\n TVariables = OperationVariables\n> extends Observable> {\n public options: WatchQueryOptions;\n public readonly queryId: string;\n public readonly queryName?: string;\n /**\n *\n * The current value of the variables for this query. Can change.\n */\n public variables: TVariables;\n\n private shouldSubscribe: boolean;\n private isTornDown: boolean;\n private queryManager: QueryManager;\n private observers = new Set>>();\n private subscriptions = new Set();\n\n private lastResult: ApolloQueryResult;\n private lastResultSnapshot: ApolloQueryResult;\n private lastError: ApolloError;\n\n constructor({\n queryManager,\n options,\n shouldSubscribe = true,\n }: {\n queryManager: QueryManager;\n options: WatchQueryOptions;\n shouldSubscribe?: boolean;\n }) {\n super((observer: Observer>) =>\n this.onSubscribe(observer),\n );\n\n // active state\n this.isTornDown = false;\n\n // query information\n this.options = options;\n this.variables = options.variables || ({} as TVariables);\n this.queryId = queryManager.generateQueryId();\n this.shouldSubscribe = shouldSubscribe;\n\n const opDef = getOperationDefinition(options.query);\n this.queryName = opDef && opDef.name && opDef.name.value;\n\n // related classes\n this.queryManager = queryManager;\n }\n\n public result(): Promise> {\n return new Promise((resolve, reject) => {\n const observer: Observer> = {\n next: (result: ApolloQueryResult) => {\n resolve(result);\n\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n this.observers.delete(observer);\n if (!this.observers.size) {\n this.queryManager.removeQuery(this.queryId);\n }\n\n setTimeout(() => {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n const subscription = this.subscribe(observer);\n });\n }\n\n // XXX remove in the next breaking semver change (3.0)\n // Deprecated, use getCurrentResult()\n public currentResult(): ApolloCurrentResult {\n const result = this.getCurrentResult() as ApolloCurrentResult;\n if (result.data === undefined) {\n result.data = {};\n }\n return result;\n }\n\n /**\n * Return the result of the query from the local cache as well as some fetching status\n * `loading` and `networkStatus` allow to know if a request is in flight\n * `partial` lets you know if the result from the local cache is complete or partial\n * @return {data: Object, error: ApolloError, loading: boolean, networkStatus: number, partial: boolean}\n */\n public getCurrentResult(): ApolloCurrentQueryResult {\n if (this.isTornDown) {\n const { lastResult } = this;\n return {\n data: !this.lastError && lastResult && lastResult.data || void 0,\n error: this.lastError,\n loading: false,\n networkStatus: NetworkStatus.error,\n };\n }\n\n const { data, partial } = this.queryManager.getCurrentQueryResult(this);\n const queryStoreValue = this.queryManager.queryStore.get(this.queryId);\n let result: ApolloQueryResult;\n\n const { fetchPolicy } = this.options;\n\n const isNetworkFetchPolicy =\n fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache';\n\n if (queryStoreValue) {\n const { networkStatus } = queryStoreValue;\n\n if (hasError(queryStoreValue, this.options.errorPolicy)) {\n return {\n data: void 0,\n loading: false,\n networkStatus,\n error: new ApolloError({\n graphQLErrors: queryStoreValue.graphQLErrors,\n networkError: queryStoreValue.networkError,\n }),\n };\n }\n\n // Variables might have been added dynamically at query time, when\n // using `@client @export(as: \"varname\")` for example. When this happens,\n // the variables have been updated in the query store, but not updated on\n // the original `ObservableQuery`. We'll update the observable query\n // variables here to match, so retrieving from the cache doesn't fail.\n if (queryStoreValue.variables) {\n this.options.variables = {\n ...this.options.variables,\n ...(queryStoreValue.variables as TVariables),\n };\n this.variables = this.options.variables;\n }\n\n result = {\n data,\n loading: isNetworkRequestInFlight(networkStatus),\n networkStatus,\n } as ApolloQueryResult;\n\n if (queryStoreValue.graphQLErrors && this.options.errorPolicy === 'all') {\n result.errors = queryStoreValue.graphQLErrors;\n }\n\n } else {\n // We need to be careful about the loading state we show to the user, to try\n // and be vaguely in line with what the user would have seen from .subscribe()\n // but to still provide useful information synchronously when the query\n // will not end up hitting the server.\n // See more: https://github.com/apollostack/apollo-client/issues/707\n // Basically: is there a query in flight right now (modolo the next tick)?\n const loading = isNetworkFetchPolicy ||\n (partial && fetchPolicy !== 'cache-only');\n\n result = {\n data,\n loading,\n networkStatus: loading ? NetworkStatus.loading : NetworkStatus.ready,\n } as ApolloQueryResult;\n }\n\n if (!partial) {\n this.updateLastResult({ ...result, stale: false });\n }\n\n return { ...result, partial };\n }\n\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n public isDifferentFromLastResult(newResult: ApolloQueryResult) {\n const { lastResultSnapshot: snapshot } = this;\n return !(\n snapshot &&\n newResult &&\n snapshot.networkStatus === newResult.networkStatus &&\n snapshot.stale === newResult.stale &&\n isEqual(snapshot.data, newResult.data)\n );\n }\n\n // Returns the last result that observer.next was called with. This is not the same as\n // getCurrentResult! If you're not sure which you need, then you probably need getCurrentResult.\n public getLastResult(): ApolloQueryResult {\n return this.lastResult;\n }\n\n public getLastError(): ApolloError {\n return this.lastError;\n }\n\n public resetLastResults(): void {\n delete this.lastResult;\n delete this.lastResultSnapshot;\n delete this.lastError;\n this.isTornDown = false;\n }\n\n public resetQueryStoreErrors() {\n const queryStore = this.queryManager.queryStore.get(this.queryId);\n if (queryStore) {\n queryStore.networkError = null;\n queryStore.graphQLErrors = [];\n }\n }\n\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public refetch(variables?: TVariables): Promise> {\n let { fetchPolicy } = this.options;\n // early return if trying to read from cache during refetch\n if (fetchPolicy === 'cache-only') {\n return Promise.reject(new InvariantError(\n 'cache-only fetchPolicy option should not be used together with query refetch.',\n ));\n }\n\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n if (fetchPolicy !== 'no-cache' &&\n fetchPolicy !== 'cache-and-network') {\n fetchPolicy = 'network-only';\n }\n\n if (!isEqual(this.variables, variables)) {\n // update observable variables\n this.variables = {\n ...this.variables,\n ...variables,\n };\n }\n\n if (!isEqual(this.options.variables, this.variables)) {\n // Update the existing options with new variables\n this.options.variables = {\n ...this.options.variables,\n ...this.variables,\n };\n }\n\n return this.queryManager.fetchQuery(\n this.queryId,\n { ...this.options, fetchPolicy },\n FetchType.refetch,\n ) as Promise>;\n }\n\n public fetchMore(\n fetchMoreOptions: FetchMoreQueryOptions &\n FetchMoreOptions,\n ): Promise> {\n // early return if no update Query\n invariant(\n fetchMoreOptions.updateQuery,\n 'updateQuery option is required. This function defines how to update the query data with the new results.',\n );\n\n const combinedOptions = {\n ...(fetchMoreOptions.query ? fetchMoreOptions : {\n ...this.options,\n ...fetchMoreOptions,\n variables: {\n ...this.variables,\n ...fetchMoreOptions.variables,\n },\n }),\n fetchPolicy: 'network-only',\n } as WatchQueryOptions;\n\n const qid = this.queryManager.generateQueryId();\n\n return this.queryManager\n .fetchQuery(\n qid,\n combinedOptions,\n FetchType.normal,\n this.queryId,\n )\n .then(\n fetchMoreResult => {\n this.updateQuery((previousResult: any) =>\n fetchMoreOptions.updateQuery(previousResult, {\n fetchMoreResult: fetchMoreResult.data as TData,\n variables: combinedOptions.variables as TVariables,\n }),\n );\n this.queryManager.stopQuery(qid);\n return fetchMoreResult as ApolloQueryResult;\n },\n error => {\n this.queryManager.stopQuery(qid);\n throw error;\n },\n );\n }\n\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n public subscribeToMore<\n TSubscriptionData = TData,\n TSubscriptionVariables = TVariables\n >(\n options: SubscribeToMoreOptions<\n TData,\n TSubscriptionVariables,\n TSubscriptionData\n >,\n ) {\n const subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n })\n .subscribe({\n next: (subscriptionData: { data: TSubscriptionData }) => {\n const { updateQuery } = options;\n if (updateQuery) {\n this.updateQuery(\n (previous, { variables }) =>\n updateQuery(previous, {\n subscriptionData,\n variables,\n }),\n );\n }\n },\n error: (err: any) => {\n if (options.onError) {\n options.onError(err);\n return;\n }\n invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n\n this.subscriptions.add(subscription);\n\n return () => {\n if (this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n }\n\n // Note: if the query is not active (there are no subscribers), the promise\n // will return null immediately.\n public setOptions(\n opts: WatchQueryOptions,\n ): Promise | void> {\n const { fetchPolicy: oldFetchPolicy } = this.options;\n this.options = {\n ...this.options,\n ...opts,\n } as WatchQueryOptions;\n\n if (opts.pollInterval) {\n this.startPolling(opts.pollInterval);\n } else if (opts.pollInterval === 0) {\n this.stopPolling();\n }\n\n const { fetchPolicy } = opts;\n\n return this.setVariables(\n this.options.variables as TVariables,\n // Try to fetch the query if fetchPolicy changed from either cache-only\n // or standby to something else, or changed to network-only.\n oldFetchPolicy !== fetchPolicy && (\n oldFetchPolicy === 'cache-only' ||\n oldFetchPolicy === 'standby' ||\n fetchPolicy === 'network-only'\n ),\n opts.fetchResults,\n );\n }\n\n /**\n * This is for *internal* use only. Most users should instead use `refetch`\n * in order to be properly notified of results even when they come from cache.\n *\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. If you want to force new results, use `refetch`.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @private\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n *\n * @param tryFetch: Try and fetch new results even if the variables haven't\n * changed (we may still just hit the store, but if there's nothing in there\n * this will refetch)\n *\n * @param fetchResults: Option to ignore fetching results when updating variables\n */\n public setVariables(\n variables: TVariables,\n tryFetch: boolean = false,\n fetchResults = true,\n ): Promise | void> {\n // since setVariables restarts the subscription, we reset the tornDown status\n this.isTornDown = false;\n\n variables = variables || this.variables;\n\n if (!tryFetch && isEqual(variables, this.variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size && fetchResults\n ? this.result()\n : Promise.resolve();\n }\n\n this.variables = this.options.variables = variables;\n\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n\n // Use the same options as before, but with new variables\n return this.queryManager.fetchQuery(\n this.queryId,\n this.options,\n ) as Promise>;\n }\n\n public updateQuery(\n mapFn: (\n previousQueryResult: TData,\n options: UpdateQueryOptions,\n ) => TData,\n ): void {\n const { queryManager } = this;\n const {\n previousResult,\n variables,\n document,\n } = queryManager.getQueryWithPreviousResult(\n this.queryId,\n );\n\n const newResult = tryFunctionOrLogError(() =>\n mapFn(previousResult, { variables }),\n );\n\n if (newResult) {\n queryManager.dataStore.markUpdateQueryResult(\n document,\n variables,\n newResult,\n );\n queryManager.broadcastQueries();\n }\n }\n\n public stopPolling() {\n this.queryManager.stopPollingQuery(this.queryId);\n this.options.pollInterval = undefined;\n }\n\n public startPolling(pollInterval: number) {\n assertNotCacheFirstOrOnly(this);\n this.options.pollInterval = pollInterval;\n this.queryManager.startPollingQuery(this.options, this.queryId);\n }\n\n private updateLastResult(newResult: ApolloQueryResult) {\n const previousResult = this.lastResult;\n this.lastResult = newResult;\n this.lastResultSnapshot = this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult);\n return previousResult;\n }\n\n private onSubscribe(observer: Observer>) {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = (observer as any)._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n } catch {}\n\n const first = !this.observers.size;\n this.observers.add(observer);\n\n // Deliver initial result\n if (observer.next && this.lastResult) observer.next(this.lastResult);\n if (observer.error && this.lastError) observer.error(this.lastError);\n\n // setup the query if it hasn't been done before\n if (first) {\n this.setUpQuery();\n }\n\n return () => {\n if (this.observers.delete(observer) && !this.observers.size) {\n this.tearDownQuery();\n }\n };\n }\n\n private setUpQuery() {\n const { queryManager, queryId } = this;\n\n if (this.shouldSubscribe) {\n queryManager.addObservableQuery(queryId, this);\n }\n\n if (this.options.pollInterval) {\n assertNotCacheFirstOrOnly(this);\n queryManager.startPollingQuery(this.options, queryId);\n }\n\n const onError = (error: ApolloError) => {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n this.updateLastResult({\n ...this.lastResult,\n errors: error.graphQLErrors,\n networkStatus: NetworkStatus.error,\n loading: false,\n });\n iterateObserversSafely(this.observers, 'error', this.lastError = error);\n };\n\n queryManager.observeQuery(queryId, this.options, {\n next: (result: ApolloQueryResult) => {\n if (this.lastError || this.isDifferentFromLastResult(result)) {\n const previousResult = this.updateLastResult(result);\n const { query, variables, fetchPolicy } = this.options;\n\n // Before calling `next` on each observer, we need to first see if\n // the query is using `@client @export` directives, and update\n // any variables that might have changed. If `@export` variables have\n // changed, and the query is calling against both local and remote\n // data, a refetch is needed to pull in new data, using the\n // updated `@export` variables.\n if (queryManager.transform(query).hasClientExports) {\n queryManager.getLocalState().addExportedVariables(\n query,\n variables,\n ).then((variables: TVariables) => {\n const previousVariables = this.variables;\n this.variables = this.options.variables = variables;\n if (\n !result.loading &&\n previousResult &&\n fetchPolicy !== 'cache-only' &&\n queryManager.transform(query).serverQuery &&\n !isEqual(previousVariables, variables)\n ) {\n this.refetch();\n } else {\n iterateObserversSafely(this.observers, 'next', result);\n }\n });\n } else {\n iterateObserversSafely(this.observers, 'next', result);\n }\n }\n },\n error: onError,\n }).catch(onError);\n }\n\n private tearDownQuery() {\n const { queryManager } = this;\n\n this.isTornDown = true;\n queryManager.stopPollingQuery(this.queryId);\n\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions.clear();\n\n queryManager.removeObservableQuery(this.queryId);\n queryManager.stopQuery(this.queryId);\n\n this.observers.clear();\n }\n}\n\nfunction defaultSubscriptionObserverErrorCallback(error: ApolloError) {\n invariant.error('Unhandled error', error.message, error.stack);\n}\n\nfunction iterateObserversSafely(\n observers: Set>,\n method: keyof Observer,\n argument?: A,\n) {\n // In case observers is modified during iteration, we need to commit to the\n // original elements, which also provides an opportunity to filter them down\n // to just the observers with the given method.\n const observersWithMethod: Observer[] = [];\n observers.forEach(obs => obs[method] && observersWithMethod.push(obs));\n observersWithMethod.forEach(obs => (obs as any)[method](argument));\n}\n\nfunction assertNotCacheFirstOrOnly(\n obsQuery: ObservableQuery,\n) {\n const { fetchPolicy } = obsQuery.options;\n invariant(\n fetchPolicy !== 'cache-first' && fetchPolicy !== 'cache-only',\n 'Queries that specify the cache-first and cache-only fetchPolicies cannot also be polling queries.',\n );\n}\n","import { DocumentNode } from 'graphql';\n\nexport class MutationStore {\n private store: { [mutationId: string]: MutationStoreValue } = {};\n\n public getStore(): { [mutationId: string]: MutationStoreValue } {\n return this.store;\n }\n\n public get(mutationId: string): MutationStoreValue {\n return this.store[mutationId];\n }\n\n public initMutation(\n mutationId: string,\n mutation: DocumentNode,\n variables: Object | undefined,\n ) {\n this.store[mutationId] = {\n mutation,\n variables: variables || {},\n loading: true,\n error: null,\n };\n }\n\n public markMutationError(mutationId: string, error: Error) {\n const mutation = this.store[mutationId];\n if (mutation) {\n mutation.loading = false;\n mutation.error = error;\n }\n }\n\n public markMutationResult(mutationId: string) {\n const mutation = this.store[mutationId];\n if (mutation) {\n mutation.loading = false;\n mutation.error = null;\n }\n }\n\n public reset() {\n this.store = {};\n }\n}\n\nexport interface MutationStoreValue {\n mutation: DocumentNode;\n variables: Object;\n loading: boolean;\n error: Error | null;\n}\n","import { DocumentNode, GraphQLError, ExecutionResult } from 'graphql';\nimport { isEqual } from 'apollo-utilities';\nimport { invariant } from 'ts-invariant';\nimport { NetworkStatus } from '../core/networkStatus';\nimport { isNonEmptyArray } from '../util/arrays';\n\nexport type QueryStoreValue = {\n document: DocumentNode;\n variables: Object;\n previousVariables?: Object | null;\n networkStatus: NetworkStatus;\n networkError?: Error | null;\n graphQLErrors?: ReadonlyArray;\n metadata: any;\n};\n\nexport class QueryStore {\n private store: { [queryId: string]: QueryStoreValue } = {};\n\n public getStore(): { [queryId: string]: QueryStoreValue } {\n return this.store;\n }\n\n public get(queryId: string): QueryStoreValue {\n return this.store[queryId];\n }\n\n public initQuery(query: {\n queryId: string;\n document: DocumentNode;\n storePreviousVariables: boolean;\n variables: Object;\n isPoll: boolean;\n isRefetch: boolean;\n metadata: any;\n fetchMoreForQueryId: string | undefined;\n }) {\n const previousQuery = this.store[query.queryId];\n\n // XXX we're throwing an error here to catch bugs where a query gets overwritten by a new one.\n // we should implement a separate action for refetching so that QUERY_INIT may never overwrite\n // an existing query (see also: https://github.com/apollostack/apollo-client/issues/732)\n invariant(\n !previousQuery ||\n previousQuery.document === query.document ||\n isEqual(previousQuery.document, query.document),\n 'Internal Error: may not update existing query string in store',\n );\n\n let isSetVariables = false;\n\n let previousVariables: Object | null = null;\n if (\n query.storePreviousVariables &&\n previousQuery &&\n previousQuery.networkStatus !== NetworkStatus.loading\n // if the previous query was still loading, we don't want to remember it at all.\n ) {\n if (!isEqual(previousQuery.variables, query.variables)) {\n isSetVariables = true;\n previousVariables = previousQuery.variables;\n }\n }\n\n // TODO break this out into a separate function\n let networkStatus;\n if (isSetVariables) {\n networkStatus = NetworkStatus.setVariables;\n } else if (query.isPoll) {\n networkStatus = NetworkStatus.poll;\n } else if (query.isRefetch) {\n networkStatus = NetworkStatus.refetch;\n // TODO: can we determine setVariables here if it's a refetch and the variables have changed?\n } else {\n networkStatus = NetworkStatus.loading;\n }\n\n let graphQLErrors: ReadonlyArray = [];\n if (previousQuery && previousQuery.graphQLErrors) {\n graphQLErrors = previousQuery.graphQLErrors;\n }\n\n // XXX right now if QUERY_INIT is fired twice, like in a refetch situation, we just overwrite\n // the store. We probably want a refetch action instead, because I suspect that if you refetch\n // before the initial fetch is done, you'll get an error.\n this.store[query.queryId] = {\n document: query.document,\n variables: query.variables,\n previousVariables,\n networkError: null,\n graphQLErrors: graphQLErrors,\n networkStatus,\n metadata: query.metadata,\n };\n\n // If the action had a `moreForQueryId` property then we need to set the\n // network status on that query as well to `fetchMore`.\n //\n // We have a complement to this if statement in the query result and query\n // error action branch, but importantly *not* in the client result branch.\n // This is because the implementation of `fetchMore` *always* sets\n // `fetchPolicy` to `network-only` so we would never have a client result.\n if (\n typeof query.fetchMoreForQueryId === 'string' &&\n this.store[query.fetchMoreForQueryId]\n ) {\n this.store[query.fetchMoreForQueryId].networkStatus =\n NetworkStatus.fetchMore;\n }\n }\n\n public markQueryResult(\n queryId: string,\n result: ExecutionResult,\n fetchMoreForQueryId: string | undefined,\n ) {\n if (!this.store || !this.store[queryId]) return;\n\n this.store[queryId].networkError = null;\n this.store[queryId].graphQLErrors = isNonEmptyArray(result.errors) ? result.errors : [];\n this.store[queryId].previousVariables = null;\n this.store[queryId].networkStatus = NetworkStatus.ready;\n\n // If we have a `fetchMoreForQueryId` then we need to update the network\n // status for that query. See the branch for query initialization for more\n // explanation about this process.\n if (\n typeof fetchMoreForQueryId === 'string' &&\n this.store[fetchMoreForQueryId]\n ) {\n this.store[fetchMoreForQueryId].networkStatus = NetworkStatus.ready;\n }\n }\n\n public markQueryError(\n queryId: string,\n error: Error,\n fetchMoreForQueryId: string | undefined,\n ) {\n if (!this.store || !this.store[queryId]) return;\n\n this.store[queryId].networkError = error;\n this.store[queryId].networkStatus = NetworkStatus.error;\n\n // If we have a `fetchMoreForQueryId` then we need to update the network\n // status for that query. See the branch for query initialization for more\n // explanation about this process.\n if (typeof fetchMoreForQueryId === 'string') {\n this.markQueryResultClient(fetchMoreForQueryId, true);\n }\n }\n\n public markQueryResultClient(queryId: string, complete: boolean) {\n const storeValue = this.store && this.store[queryId];\n if (storeValue) {\n storeValue.networkError = null;\n storeValue.previousVariables = null;\n if (complete) {\n storeValue.networkStatus = NetworkStatus.ready;\n }\n }\n }\n\n public stopQuery(queryId: string) {\n delete this.store[queryId];\n }\n\n public reset(observableQueryIds: string[]) {\n Object.keys(this.store).forEach(queryId => {\n if (observableQueryIds.indexOf(queryId) < 0) {\n this.stopQuery(queryId);\n } else {\n // XXX set loading to true so listeners don't trigger unless they want results with partial data\n this.store[queryId].networkStatus = NetworkStatus.loading;\n }\n });\n }\n}\n","export function capitalizeFirstLetter(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n","import {\n DocumentNode,\n OperationDefinitionNode,\n SelectionSetNode,\n SelectionNode,\n InlineFragmentNode,\n FragmentDefinitionNode,\n FieldNode,\n ASTNode,\n} from 'graphql';\nimport { visit, BREAK } from 'graphql/language/visitor';\n\nimport { ApolloCache } from 'apollo-cache';\nimport {\n getMainDefinition,\n buildQueryFromSelectionSet,\n hasDirectives,\n removeClientSetsFromDocument,\n mergeDeep,\n mergeDeepArray,\n FragmentMap,\n argumentsObjectFromField,\n resultKeyNameFromField,\n getFragmentDefinitions,\n createFragmentMap,\n shouldInclude,\n isField,\n isInlineFragment,\n} from 'apollo-utilities';\nimport { FetchResult } from 'apollo-link';\n\nimport { invariant } from 'ts-invariant';\n\nimport ApolloClient from '../ApolloClient';\nimport { Resolvers, OperationVariables } from './types';\nimport { capitalizeFirstLetter } from '../util/capitalizeFirstLetter';\n\nexport type Resolver = (\n rootValue?: any,\n args?: any,\n context?: any,\n info?: {\n field: FieldNode;\n fragmentMap: FragmentMap;\n },\n) => any;\n\nexport type VariableMap = { [name: string]: any };\n\nexport type FragmentMatcher = (\n rootValue: any,\n typeCondition: string,\n context: any,\n) => boolean;\n\nexport type ExecContext = {\n fragmentMap: FragmentMap;\n context: any;\n variables: VariableMap;\n fragmentMatcher: FragmentMatcher;\n defaultOperationType: string;\n exportedVariables: Record;\n onlyRunForcedResolvers: boolean;\n};\n\nexport type LocalStateOptions = {\n cache: ApolloCache;\n client?: ApolloClient;\n resolvers?: Resolvers | Resolvers[];\n fragmentMatcher?: FragmentMatcher;\n};\n\nexport class LocalState {\n private cache: ApolloCache;\n private client: ApolloClient;\n private resolvers?: Resolvers;\n private fragmentMatcher: FragmentMatcher;\n\n constructor({\n cache,\n client,\n resolvers,\n fragmentMatcher,\n }: LocalStateOptions) {\n this.cache = cache;\n\n if (client) {\n this.client = client;\n }\n\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n\n public addResolvers(resolvers: Resolvers | Resolvers[]) {\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(resolverGroup => {\n this.resolvers = mergeDeep(this.resolvers, resolverGroup);\n });\n } else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n }\n\n public setResolvers(resolvers: Resolvers | Resolvers[]) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n }\n\n public getResolvers() {\n return this.resolvers || {};\n }\n\n // Run local client resolvers against the incoming query and remote data.\n // Locally resolved field values are merged with the incoming remote data,\n // and returned. Note that locally resolved fields will overwrite\n // remote data using the same field name.\n public async runResolvers({\n document,\n remoteResult,\n context,\n variables,\n onlyRunForcedResolvers = false,\n }: {\n document: DocumentNode | null;\n remoteResult: FetchResult;\n context?: Record;\n variables?: Record;\n onlyRunForcedResolvers?: boolean;\n }): Promise> {\n if (document) {\n return this.resolveDocument(\n document,\n remoteResult.data,\n context,\n variables,\n this.fragmentMatcher,\n onlyRunForcedResolvers,\n ).then(localResult => ({\n ...remoteResult,\n data: localResult.result,\n }));\n }\n\n return remoteResult;\n }\n\n public setFragmentMatcher(fragmentMatcher: FragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n }\n\n public getFragmentMatcher(): FragmentMatcher {\n return this.fragmentMatcher;\n }\n\n // Client queries contain everything in the incoming document (if a @client\n // directive is found).\n public clientQuery(document: DocumentNode) {\n if (hasDirectives(['client'], document)) {\n if (this.resolvers) {\n return document;\n }\n invariant.warn(\n 'Found @client directives in a query but no ApolloClient resolvers ' +\n 'were specified. This means ApolloClient local resolver handling ' +\n 'has been disabled, and @client directives will be passed through ' +\n 'to your link chain.',\n );\n }\n return null;\n }\n\n // Server queries are stripped of all @client based selection sets.\n public serverQuery(document: DocumentNode) {\n return this.resolvers ? removeClientSetsFromDocument(document) : document;\n }\n\n public prepareContext(context = {}) {\n const { cache } = this;\n\n const newContext = {\n ...context,\n cache,\n // Getting an entry's cache key is useful for local state resolvers.\n getCacheKey: (obj: { __typename: string; id: string | number }) => {\n if ((cache as any).config) {\n return (cache as any).config.dataIdFromObject(obj);\n } else {\n invariant(false,\n 'To use context.getCacheKey, you need to use a cache that has ' +\n 'a configurable dataIdFromObject, like apollo-cache-inmemory.',\n );\n }\n },\n };\n\n return newContext;\n }\n\n // To support `@client @export(as: \"someVar\")` syntax, we'll first resolve\n // @client @export fields locally, then pass the resolved values back to be\n // used alongside the original operation variables.\n public async addExportedVariables(\n document: DocumentNode,\n variables: OperationVariables = {},\n context = {},\n ) {\n if (document) {\n return this.resolveDocument(\n document,\n this.buildRootValueFromCache(document, variables) || {},\n this.prepareContext(context),\n variables,\n ).then(data => ({\n ...variables,\n ...data.exportedVariables,\n }));\n }\n\n return {\n ...variables,\n };\n }\n\n public shouldForceResolvers(document: ASTNode) {\n let forceResolvers = false;\n visit(document, {\n Directive: {\n enter(node) {\n if (node.name.value === 'client' && node.arguments) {\n forceResolvers = node.arguments.some(\n arg =>\n arg.name.value === 'always' &&\n arg.value.kind === 'BooleanValue' &&\n arg.value.value === true,\n );\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n }\n\n // Query the cache and return matching data.\n private buildRootValueFromCache(\n document: DocumentNode,\n variables?: Record,\n ) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n }\n\n private async resolveDocument(\n document: DocumentNode,\n rootValue: TData,\n context: any = {},\n variables: VariableMap = {},\n fragmentMatcher: FragmentMatcher = () => true,\n onlyRunForcedResolvers: boolean = false,\n ) {\n const mainDefinition = getMainDefinition(document);\n const fragments = getFragmentDefinitions(document);\n const fragmentMap = createFragmentMap(fragments);\n\n const definitionOperation = (mainDefinition as OperationDefinitionNode)\n .operation;\n\n const defaultOperationType = definitionOperation\n ? capitalizeFirstLetter(definitionOperation)\n : 'Query';\n\n const { cache, client } = this;\n const execContext: ExecContext = {\n fragmentMap,\n context: {\n ...context,\n cache,\n client,\n },\n variables,\n fragmentMatcher,\n defaultOperationType,\n exportedVariables: {},\n onlyRunForcedResolvers,\n };\n\n return this.resolveSelectionSet(\n mainDefinition.selectionSet,\n rootValue,\n execContext,\n ).then(result => ({\n result,\n exportedVariables: execContext.exportedVariables,\n }));\n }\n\n private async resolveSelectionSet(\n selectionSet: SelectionSetNode,\n rootValue: TData,\n execContext: ExecContext,\n ) {\n const { fragmentMap, context, variables } = execContext;\n const resultsToMerge: TData[] = [rootValue];\n\n const execute = async (selection: SelectionNode): Promise => {\n if (!shouldInclude(selection, variables)) {\n // Skip this entirely.\n return;\n }\n\n if (isField(selection)) {\n return this.resolveField(selection, rootValue, execContext).then(\n fieldResult => {\n if (typeof fieldResult !== 'undefined') {\n resultsToMerge.push({\n [resultKeyNameFromField(selection)]: fieldResult,\n } as TData);\n }\n },\n );\n }\n\n let fragment: InlineFragmentNode | FragmentDefinitionNode;\n\n if (isInlineFragment(selection)) {\n fragment = selection;\n } else {\n // This is a named fragment.\n fragment = fragmentMap[selection.name.value];\n invariant(fragment, `No fragment named ${selection.name.value}`);\n }\n\n if (fragment && fragment.typeCondition) {\n const typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return this.resolveSelectionSet(\n fragment.selectionSet,\n rootValue,\n execContext,\n ).then(fragmentResult => {\n resultsToMerge.push(fragmentResult);\n });\n }\n }\n };\n\n return Promise.all(selectionSet.selections.map(execute)).then(function() {\n return mergeDeepArray(resultsToMerge);\n });\n }\n\n private async resolveField(\n field: FieldNode,\n rootValue: any,\n execContext: ExecContext,\n ): Promise {\n const { variables } = execContext;\n const fieldName = field.name.value;\n const aliasedFieldName = resultKeyNameFromField(field);\n const aliasUsed = fieldName !== aliasedFieldName;\n const defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n let resultPromise = Promise.resolve(defaultResult);\n\n // Usually all local resolvers are run when passing through here, but\n // if we've specifically identified that we only want to run forced\n // resolvers (that is, resolvers for fields marked with\n // `@client(always: true)`), then we'll skip running non-forced resolvers.\n if (\n !execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)\n ) {\n const resolverType =\n rootValue.__typename || execContext.defaultOperationType;\n const resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n const resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(resolve(\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field, fragmentMap: execContext.fragmentMap },\n ));\n }\n }\n }\n\n return resultPromise.then((result = defaultResult) => {\n // If an @export directive is associated with the current field, store\n // the `as` export variable name and current result for later use.\n if (field.directives) {\n field.directives.forEach(directive => {\n if (directive.name.value === 'export' && directive.arguments) {\n directive.arguments.forEach(arg => {\n if (arg.name.value === 'as' && arg.value.kind === 'StringValue') {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n\n // Handle all scalar types here.\n if (!field.selectionSet) {\n return result;\n }\n\n // From here down, the field has a selection set, which means it's trying\n // to query a GraphQLObjectType.\n if (result == null) {\n // Basically any field in a GraphQL response can be null, or missing\n return result;\n }\n\n if (Array.isArray(result)) {\n return this.resolveSubSelectedArray(field, result, execContext);\n }\n\n // Returned value is an object, and the query has a sub-selection. Recurse.\n if (field.selectionSet) {\n return this.resolveSelectionSet(\n field.selectionSet,\n result,\n execContext,\n );\n }\n });\n }\n\n private resolveSubSelectedArray(\n field: FieldNode,\n result: any[],\n execContext: ExecContext,\n ): any {\n return Promise.all(\n result.map(item => {\n if (item === null) {\n return null;\n }\n\n // This is a nested array, recurse.\n if (Array.isArray(item)) {\n return this.resolveSubSelectedArray(field, item, execContext);\n }\n\n // This is an object, run the selection set on it.\n if (field.selectionSet) {\n return this.resolveSelectionSet(field.selectionSet, item, execContext);\n }\n }),\n );\n }\n}\n","import { Observable, Observer, Subscription } from './Observable';\n\n// Returns a normal Observable that can have any number of subscribers,\n// while ensuring the original Observable gets subscribed to at most once.\nexport function multiplex(inner: Observable): Observable {\n const observers = new Set>();\n let sub: Subscription | null = null;\n return new Observable(observer => {\n observers.add(observer);\n sub = sub || inner.subscribe({\n next(value) {\n observers.forEach(obs => obs.next && obs.next(value));\n },\n error(error) {\n observers.forEach(obs => obs.error && obs.error(error));\n },\n complete() {\n observers.forEach(obs => obs.complete && obs.complete());\n },\n });\n return () => {\n if (observers.delete(observer) && !observers.size && sub) {\n sub.unsubscribe();\n sub = null;\n }\n };\n });\n}\n\n// Like Observable.prototype.map, except that the mapping function can\n// optionally return a Promise (or be async).\nexport function asyncMap(\n observable: Observable,\n mapFn: (value: V) => R | Promise,\n): Observable {\n return new Observable(observer => {\n const { next, error, complete } = observer;\n let activeNextCount = 0;\n let completed = false;\n\n const handler: Observer = {\n next(value) {\n ++activeNextCount;\n new Promise(resolve => {\n resolve(mapFn(value));\n }).then(\n result => {\n --activeNextCount;\n next && next.call(observer, result);\n completed && handler.complete!();\n },\n e => {\n --activeNextCount;\n error && error.call(observer, e);\n },\n );\n },\n error(e) {\n error && error.call(observer, e);\n },\n complete() {\n completed = true;\n if (!activeNextCount) {\n complete && complete.call(observer);\n }\n },\n };\n\n const sub = observable.subscribe(handler);\n return () => sub.unsubscribe();\n });\n}\n","import { execute, ApolloLink, FetchResult } from 'apollo-link';\nimport { DocumentNode } from 'graphql';\nimport { Cache } from 'apollo-cache';\nimport {\n getDefaultValues,\n getOperationDefinition,\n getOperationName,\n hasDirectives,\n graphQLResultHasError,\n hasClientExports,\n removeConnectionDirectiveFromDocument,\n canUseWeakMap,\n} from 'apollo-utilities';\n\nimport { invariant, InvariantError } from 'ts-invariant';\n\nimport { isApolloError, ApolloError } from '../errors/ApolloError';\nimport { Observer, Subscription, Observable } from '../util/Observable';\nimport { QueryWithUpdater, DataStore } from '../data/store';\nimport { MutationStore } from '../data/mutations';\nimport { QueryStore, QueryStoreValue } from '../data/queries';\n\nimport {\n QueryOptions,\n WatchQueryOptions,\n SubscriptionOptions,\n MutationOptions,\n ErrorPolicy,\n} from './watchQueryOptions';\nimport { ObservableQuery } from './ObservableQuery';\nimport { NetworkStatus, isNetworkRequestInFlight } from './networkStatus';\nimport {\n QueryListener,\n ApolloQueryResult,\n FetchType,\n OperationVariables,\n} from './types';\nimport { LocalState } from './LocalState';\nimport { asyncMap, multiplex } from '../util/observables';\nimport { isNonEmptyArray } from '../util/arrays';\n\nconst { hasOwnProperty } = Object.prototype;\n\nexport interface QueryInfo {\n listeners: Set;\n invalidated: boolean;\n newData: Cache.DiffResult | null;\n document: DocumentNode | null;\n lastRequestId: number;\n // A map going from queryId to an observer for a query issued by watchQuery. We use\n // these to keep track of queries that are inflight and error on the observers associated\n // with them in case of some destabalizing action (e.g. reset of the Apollo store).\n observableQuery: ObservableQuery | null;\n subscriptions: Set;\n cancel?: () => void;\n}\n\nexport class QueryManager {\n public link: ApolloLink;\n public mutationStore: MutationStore = new MutationStore();\n public queryStore: QueryStore = new QueryStore();\n public dataStore: DataStore;\n public readonly assumeImmutableResults: boolean;\n\n private queryDeduplication: boolean;\n private clientAwareness: Record = {};\n private localState: LocalState;\n\n private onBroadcast: () => void;\n\n private ssrMode: boolean;\n\n // let's not start at zero to avoid pain with bad checks\n private idCounter = 1;\n\n // XXX merge with ObservableQuery but that needs to be expanded to support mutations and\n // subscriptions as well\n private queries: Map = new Map();\n\n // A map of Promise reject functions for fetchQuery promises that have not\n // yet been resolved, used to keep track of in-flight queries so that we can\n // reject them in case a destabilizing event occurs (e.g. Apollo store reset).\n // The key is in the format of `query:${queryId}` or `fetchRequest:${queryId}`,\n // depending on where the promise's rejection function was created from.\n private fetchQueryRejectFns = new Map();\n\n constructor({\n link,\n queryDeduplication = false,\n store,\n onBroadcast = () => undefined,\n ssrMode = false,\n clientAwareness = {},\n localState,\n assumeImmutableResults,\n }: {\n link: ApolloLink;\n queryDeduplication?: boolean;\n store: DataStore;\n onBroadcast?: () => void;\n ssrMode?: boolean;\n clientAwareness?: Record;\n localState?: LocalState;\n assumeImmutableResults?: boolean;\n }) {\n this.link = link;\n this.queryDeduplication = queryDeduplication;\n this.dataStore = store;\n this.onBroadcast = onBroadcast;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({ cache: store.getCache() });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = !!assumeImmutableResults;\n }\n\n /**\n * Call this method to terminate any active query processes, making it safe\n * to dispose of this QueryManager instance.\n */\n public stop() {\n this.queries.forEach((_info, queryId) => {\n this.stopQueryNoBroadcast(queryId);\n });\n\n this.fetchQueryRejectFns.forEach(reject => {\n reject(\n new InvariantError('QueryManager stopped while query was in flight'),\n );\n });\n }\n\n public async mutate({\n mutation,\n variables,\n optimisticResponse,\n updateQueries: updateQueriesByName,\n refetchQueries = [],\n awaitRefetchQueries = false,\n update: updateWithProxyFn,\n errorPolicy = 'none',\n fetchPolicy,\n context = {},\n }: MutationOptions): Promise> {\n invariant(\n mutation,\n 'mutation option is required. You must specify your GraphQL document in the mutation option.',\n );\n\n invariant(\n !fetchPolicy || fetchPolicy === 'no-cache',\n \"Mutations only support a 'no-cache' fetchPolicy. If you don't want to disable the cache, remove your fetchPolicy setting to proceed with the default mutation behavior.\"\n );\n\n const mutationId = this.generateQueryId();\n mutation = this.transform(mutation).document;\n\n this.setQuery(mutationId, () => ({ document: mutation }));\n\n variables = this.getVariables(mutation, variables);\n\n if (this.transform(mutation).hasClientExports) {\n variables = await this.localState.addExportedVariables(mutation, variables, context);\n }\n\n // Create a map of update queries by id to the query instead of by name.\n const generateUpdateQueriesInfo: () => {\n [queryId: string]: QueryWithUpdater;\n } = () => {\n const ret: { [queryId: string]: QueryWithUpdater } = {};\n\n if (updateQueriesByName) {\n this.queries.forEach(({ observableQuery }, queryId) => {\n if (observableQuery) {\n const { queryName } = observableQuery;\n if (\n queryName &&\n hasOwnProperty.call(updateQueriesByName, queryName)\n ) {\n ret[queryId] = {\n updater: updateQueriesByName[queryName],\n query: this.queryStore.get(queryId),\n };\n }\n }\n });\n }\n\n return ret;\n };\n\n this.mutationStore.initMutation(\n mutationId,\n mutation,\n variables,\n );\n\n this.dataStore.markMutationInit({\n mutationId,\n document: mutation,\n variables,\n updateQueries: generateUpdateQueriesInfo(),\n update: updateWithProxyFn,\n optimisticResponse,\n });\n\n this.broadcastQueries();\n\n const self = this;\n\n return new Promise((resolve, reject) => {\n let storeResult: FetchResult | null;\n let error: ApolloError;\n\n self.getObservableFromLink(\n mutation,\n {\n ...context,\n optimisticResponse,\n },\n variables,\n false,\n ).subscribe({\n next(result: FetchResult) {\n if (graphQLResultHasError(result) && errorPolicy === 'none') {\n error = new ApolloError({\n graphQLErrors: result.errors,\n });\n return;\n }\n\n self.mutationStore.markMutationResult(mutationId);\n\n if (fetchPolicy !== 'no-cache') {\n self.dataStore.markMutationResult({\n mutationId,\n result,\n document: mutation,\n variables,\n updateQueries: generateUpdateQueriesInfo(),\n update: updateWithProxyFn,\n });\n }\n\n storeResult = result;\n },\n\n error(err: Error) {\n self.mutationStore.markMutationError(mutationId, err);\n self.dataStore.markMutationComplete({\n mutationId,\n optimisticResponse,\n });\n self.broadcastQueries();\n self.setQuery(mutationId, () => ({ document: null }));\n reject(\n new ApolloError({\n networkError: err,\n }),\n );\n },\n\n complete() {\n if (error) {\n self.mutationStore.markMutationError(mutationId, error);\n }\n\n self.dataStore.markMutationComplete({\n mutationId,\n optimisticResponse,\n });\n\n self.broadcastQueries();\n\n if (error) {\n reject(error);\n return;\n }\n\n // allow for conditional refetches\n // XXX do we want to make this the only API one day?\n if (typeof refetchQueries === 'function') {\n refetchQueries = refetchQueries(storeResult!);\n }\n\n const refetchQueryPromises: Promise<\n ApolloQueryResult[] | ApolloQueryResult<{}>\n >[] = [];\n\n if (isNonEmptyArray(refetchQueries)) {\n refetchQueries.forEach(refetchQuery => {\n if (typeof refetchQuery === 'string') {\n self.queries.forEach(({ observableQuery }) => {\n if (\n observableQuery &&\n observableQuery.queryName === refetchQuery\n ) {\n refetchQueryPromises.push(observableQuery.refetch());\n }\n });\n } else {\n const queryOptions: QueryOptions = {\n query: refetchQuery.query,\n variables: refetchQuery.variables,\n fetchPolicy: 'network-only',\n };\n\n if (refetchQuery.context) {\n queryOptions.context = refetchQuery.context;\n }\n\n refetchQueryPromises.push(self.query(queryOptions));\n }\n });\n }\n\n Promise.all(\n awaitRefetchQueries ? refetchQueryPromises : [],\n ).then(() => {\n self.setQuery(mutationId, () => ({ document: null }));\n\n if (\n errorPolicy === 'ignore' &&\n storeResult &&\n graphQLResultHasError(storeResult)\n ) {\n delete storeResult.errors;\n }\n\n resolve(storeResult!);\n });\n },\n });\n });\n }\n\n public async fetchQuery(\n queryId: string,\n options: WatchQueryOptions,\n fetchType?: FetchType,\n // This allows us to track if this is a query spawned by a `fetchMore`\n // call for another query. We need this data to compute the `fetchMore`\n // network status for the query this is fetching for.\n fetchMoreForQueryId?: string,\n ): Promise> {\n const {\n metadata = null,\n fetchPolicy = 'cache-first', // cache-first is the default fetch policy.\n context = {},\n } = options;\n\n const query = this.transform(options.query).document;\n\n let variables = this.getVariables(query, options.variables);\n\n if (this.transform(query).hasClientExports) {\n variables = await this.localState.addExportedVariables(query, variables, context);\n }\n\n options = { ...options, variables };\n\n let storeResult: any;\n const isNetworkOnly =\n fetchPolicy === 'network-only' || fetchPolicy === 'no-cache';\n let needToFetch = isNetworkOnly;\n\n // Unless we are completely skipping the cache, we want to diff the query\n // against the cache before we fetch it from the network interface.\n if (!isNetworkOnly) {\n const { complete, result } = this.dataStore.getCache().diff({\n query,\n variables,\n returnPartialData: true,\n optimistic: false,\n });\n\n // If we're in here, only fetch if we have missing fields\n needToFetch = !complete || fetchPolicy === 'cache-and-network';\n storeResult = result;\n }\n\n let shouldFetch =\n needToFetch && fetchPolicy !== 'cache-only' && fetchPolicy !== 'standby';\n\n // we need to check to see if this is an operation that uses the @live directive\n if (hasDirectives(['live'], query)) shouldFetch = true;\n\n const requestId = this.idCounter++;\n\n // set up a watcher to listen to cache updates\n const cancel = fetchPolicy !== 'no-cache'\n ? this.updateQueryWatch(queryId, query, options)\n : undefined;\n\n // Initialize query in store with unique requestId\n this.setQuery(queryId, () => ({\n document: query,\n lastRequestId: requestId,\n invalidated: true,\n cancel,\n }));\n\n this.invalidate(fetchMoreForQueryId);\n\n this.queryStore.initQuery({\n queryId,\n document: query,\n storePreviousVariables: shouldFetch,\n variables,\n isPoll: fetchType === FetchType.poll,\n isRefetch: fetchType === FetchType.refetch,\n metadata,\n fetchMoreForQueryId,\n });\n\n this.broadcastQueries();\n\n if (shouldFetch) {\n const networkResult = this.fetchRequest({\n requestId,\n queryId,\n document: query,\n options,\n fetchMoreForQueryId,\n }).catch(error => {\n // This is for the benefit of `refetch` promises, which currently don't get their errors\n // through the store like watchQuery observers do\n if (isApolloError(error)) {\n throw error;\n } else {\n if (requestId >= this.getQuery(queryId).lastRequestId) {\n this.queryStore.markQueryError(queryId, error, fetchMoreForQueryId);\n this.invalidate(queryId);\n this.invalidate(fetchMoreForQueryId);\n this.broadcastQueries();\n }\n throw new ApolloError({ networkError: error });\n }\n });\n\n // we don't return the promise for cache-and-network since it is already\n // returned below from the cache\n if (fetchPolicy !== 'cache-and-network') {\n return networkResult;\n }\n\n // however we need to catch the error so it isn't unhandled in case of\n // network error\n networkResult.catch(() => {});\n }\n\n // If there is no part of the query we need to fetch from the server (or,\n // fetchPolicy is cache-only), we just write the store result as the final result.\n this.queryStore.markQueryResultClient(queryId, !shouldFetch);\n this.invalidate(queryId);\n this.invalidate(fetchMoreForQueryId);\n\n if (this.transform(query).hasForcedResolvers) {\n return this.localState.runResolvers({\n document: query,\n remoteResult: { data: storeResult },\n context,\n variables,\n onlyRunForcedResolvers: true,\n }).then((result: FetchResult) => {\n this.markQueryResult(\n queryId,\n result,\n options,\n fetchMoreForQueryId,\n );\n this.broadcastQueries();\n return result;\n });\n }\n\n this.broadcastQueries();\n\n // If we have no query to send to the server, we should return the result\n // found within the store.\n return { data: storeResult };\n }\n\n private markQueryResult(\n queryId: string,\n result: FetchResult,\n {\n fetchPolicy,\n variables,\n errorPolicy,\n }: WatchQueryOptions,\n fetchMoreForQueryId?: string,\n ) {\n if (fetchPolicy === 'no-cache') {\n this.setQuery(queryId, () => ({\n newData: { result: result.data, complete: true },\n }));\n } else {\n this.dataStore.markQueryResult(\n result,\n this.getQuery(queryId).document!,\n variables,\n fetchMoreForQueryId,\n errorPolicy === 'ignore' || errorPolicy === 'all',\n );\n }\n }\n\n // Returns a query listener that will update the given observer based on the\n // results (or lack thereof) for a particular query.\n public queryListenerForObserver(\n queryId: string,\n options: WatchQueryOptions,\n observer: Observer>,\n ): QueryListener {\n function invoke(method: 'next' | 'error', argument: any) {\n if (observer[method]) {\n try {\n observer[method]!(argument);\n } catch (e) {\n invariant.error(e);\n }\n } else if (method === 'error') {\n invariant.error(argument);\n }\n }\n\n return (\n queryStoreValue: QueryStoreValue,\n newData?: Cache.DiffResult,\n ) => {\n // we're going to take a look at the data, so the query is no longer invalidated\n this.invalidate(queryId, false);\n\n // The query store value can be undefined in the event of a store\n // reset.\n if (!queryStoreValue) return;\n\n const { observableQuery, document } = this.getQuery(queryId);\n\n const fetchPolicy = observableQuery\n ? observableQuery.options.fetchPolicy\n : options.fetchPolicy;\n\n // don't watch the store for queries on standby\n if (fetchPolicy === 'standby') return;\n\n const loading = isNetworkRequestInFlight(queryStoreValue.networkStatus);\n const lastResult = observableQuery && observableQuery.getLastResult();\n\n const networkStatusChanged = !!(\n lastResult &&\n lastResult.networkStatus !== queryStoreValue.networkStatus\n );\n\n const shouldNotifyIfLoading =\n options.returnPartialData ||\n (!newData && queryStoreValue.previousVariables) ||\n (networkStatusChanged && options.notifyOnNetworkStatusChange) ||\n fetchPolicy === 'cache-only' ||\n fetchPolicy === 'cache-and-network';\n\n if (loading && !shouldNotifyIfLoading) {\n return;\n }\n\n const hasGraphQLErrors = isNonEmptyArray(queryStoreValue.graphQLErrors);\n\n const errorPolicy: ErrorPolicy = observableQuery\n && observableQuery.options.errorPolicy\n || options.errorPolicy\n || 'none';\n\n // If we have either a GraphQL error or a network error, we create\n // an error and tell the observer about it.\n if (errorPolicy === 'none' && hasGraphQLErrors || queryStoreValue.networkError) {\n return invoke('error', new ApolloError({\n graphQLErrors: queryStoreValue.graphQLErrors,\n networkError: queryStoreValue.networkError,\n }));\n }\n\n try {\n let data: any;\n let isMissing: boolean;\n\n if (newData) {\n // As long as we're using the cache, clear out the latest\n // `newData`, since it will now become the current data. We need\n // to keep the `newData` stored with the query when using\n // `no-cache` since `getCurrentQueryResult` attemps to pull from\n // `newData` first, following by trying the cache (which won't\n // find a hit for `no-cache`).\n if (fetchPolicy !== 'no-cache' && fetchPolicy !== 'network-only') {\n this.setQuery(queryId, () => ({ newData: null }));\n }\n\n data = newData.result;\n isMissing = !newData.complete;\n } else {\n const lastError = observableQuery && observableQuery.getLastError();\n const errorStatusChanged =\n errorPolicy !== 'none' &&\n (lastError && lastError.graphQLErrors) !==\n queryStoreValue.graphQLErrors;\n\n if (lastResult && lastResult.data && !errorStatusChanged) {\n data = lastResult.data;\n isMissing = false;\n } else {\n const diffResult = this.dataStore.getCache().diff({\n query: document as DocumentNode,\n variables:\n queryStoreValue.previousVariables ||\n queryStoreValue.variables,\n returnPartialData: true,\n optimistic: true,\n });\n\n data = diffResult.result;\n isMissing = !diffResult.complete;\n }\n }\n\n // If there is some data missing and the user has told us that they\n // do not tolerate partial data then we want to return the previous\n // result and mark it as stale.\n const stale = isMissing && !(\n options.returnPartialData ||\n fetchPolicy === 'cache-only'\n );\n\n const resultFromStore: ApolloQueryResult = {\n data: stale ? lastResult && lastResult.data : data,\n loading,\n networkStatus: queryStoreValue.networkStatus,\n stale,\n };\n\n // if the query wants updates on errors we need to add it to the result\n if (errorPolicy === 'all' && hasGraphQLErrors) {\n resultFromStore.errors = queryStoreValue.graphQLErrors;\n }\n\n invoke('next', resultFromStore);\n\n } catch (networkError) {\n invoke('error', new ApolloError({ networkError }));\n }\n };\n }\n\n private transformCache = new (canUseWeakMap ? WeakMap : Map)<\n DocumentNode,\n Readonly<{\n document: Readonly;\n hasClientExports: boolean;\n hasForcedResolvers: boolean;\n clientQuery: Readonly | null;\n serverQuery: Readonly | null;\n defaultVars: Readonly;\n }>\n >();\n\n public transform(document: DocumentNode) {\n const { transformCache } = this;\n\n if (!transformCache.has(document)) {\n const cache = this.dataStore.getCache();\n const transformed = cache.transformDocument(document);\n const forLink = removeConnectionDirectiveFromDocument(\n cache.transformForLink(transformed));\n\n const clientQuery = this.localState.clientQuery(transformed);\n const serverQuery = this.localState.serverQuery(forLink);\n\n const cacheEntry = {\n document: transformed,\n // TODO These two calls (hasClientExports and shouldForceResolvers)\n // could probably be merged into a single traversal.\n hasClientExports: hasClientExports(transformed),\n hasForcedResolvers: this.localState.shouldForceResolvers(transformed),\n clientQuery,\n serverQuery,\n defaultVars: getDefaultValues(\n getOperationDefinition(transformed)\n ) as OperationVariables,\n };\n\n const add = (doc: DocumentNode | null) => {\n if (doc && !transformCache.has(doc)) {\n transformCache.set(doc, cacheEntry);\n }\n }\n // Add cacheEntry to the transformCache using several different keys,\n // since any one of these documents could end up getting passed to the\n // transform method again in the future.\n add(document);\n add(transformed);\n add(clientQuery);\n add(serverQuery);\n }\n\n return transformCache.get(document)!;\n }\n\n private getVariables(\n document: DocumentNode,\n variables?: OperationVariables,\n ): OperationVariables {\n return {\n ...this.transform(document).defaultVars,\n ...variables,\n };\n }\n\n // The shouldSubscribe option is a temporary fix that tells us whether watchQuery was called\n // directly (i.e. through ApolloClient) or through the query method within QueryManager.\n // Currently, the query method uses watchQuery in order to handle non-network errors correctly\n // but we don't want to keep track observables issued for the query method since those aren't\n // supposed to be refetched in the event of a store reset. Once we unify error handling for\n // network errors and non-network errors, the shouldSubscribe option will go away.\n\n public watchQuery(\n options: WatchQueryOptions,\n shouldSubscribe = true,\n ): ObservableQuery {\n invariant(\n options.fetchPolicy !== 'standby',\n 'client.watchQuery cannot be called with fetchPolicy set to \"standby\"',\n );\n\n // assign variable default values if supplied\n options.variables = this.getVariables(options.query, options.variables);\n\n if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n options.notifyOnNetworkStatusChange = false;\n }\n\n let transformedOptions = { ...options } as WatchQueryOptions;\n\n return new ObservableQuery({\n queryManager: this,\n options: transformedOptions,\n shouldSubscribe: shouldSubscribe,\n });\n }\n\n public query(options: QueryOptions): Promise> {\n invariant(\n options.query,\n 'query option is required. You must specify your GraphQL document ' +\n 'in the query option.',\n );\n\n invariant(\n options.query.kind === 'Document',\n 'You must wrap the query string in a \"gql\" tag.',\n );\n\n invariant(\n !(options as any).returnPartialData,\n 'returnPartialData option only supported on watchQuery.',\n );\n\n invariant(\n !(options as any).pollInterval,\n 'pollInterval option only supported on watchQuery.',\n );\n\n return new Promise>((resolve, reject) => {\n const watchedQuery = this.watchQuery(options, false);\n this.fetchQueryRejectFns.set(`query:${watchedQuery.queryId}`, reject);\n watchedQuery\n .result()\n .then(resolve, reject)\n // Since neither resolve nor reject throw or return a value, this .then\n // handler is guaranteed to execute. Note that it doesn't really matter\n // when we remove the reject function from this.fetchQueryRejectFns,\n // since resolve and reject are mutually idempotent. In fact, it would\n // not be incorrect to let reject functions accumulate over time; it's\n // just a waste of memory.\n .then(() =>\n this.fetchQueryRejectFns.delete(`query:${watchedQuery.queryId}`),\n );\n });\n }\n\n public generateQueryId() {\n return String(this.idCounter++);\n }\n\n public stopQueryInStore(queryId: string) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n }\n\n private stopQueryInStoreNoBroadcast(queryId: string) {\n this.stopPollingQuery(queryId);\n this.queryStore.stopQuery(queryId);\n this.invalidate(queryId);\n }\n\n public addQueryListener(queryId: string, listener: QueryListener) {\n this.setQuery(queryId, ({ listeners }) => {\n listeners.add(listener);\n return { invalidated: false };\n });\n }\n\n public updateQueryWatch(\n queryId: string,\n document: DocumentNode,\n options: WatchQueryOptions,\n ) {\n const { cancel } = this.getQuery(queryId);\n if (cancel) cancel();\n const previousResult = () => {\n let previousResult = null;\n const { observableQuery } = this.getQuery(queryId);\n if (observableQuery) {\n const lastResult = observableQuery.getLastResult();\n if (lastResult) {\n previousResult = lastResult.data;\n }\n }\n\n return previousResult;\n };\n return this.dataStore.getCache().watch({\n query: document as DocumentNode,\n variables: options.variables,\n optimistic: true,\n previousResult,\n callback: newData => {\n this.setQuery(queryId, () => ({ invalidated: true, newData }));\n },\n });\n }\n\n // Adds an ObservableQuery to this.observableQueries and to this.observableQueriesByName.\n public addObservableQuery(\n queryId: string,\n observableQuery: ObservableQuery,\n ) {\n this.setQuery(queryId, () => ({ observableQuery }));\n }\n\n public removeObservableQuery(queryId: string) {\n const { cancel } = this.getQuery(queryId);\n this.setQuery(queryId, () => ({ observableQuery: null }));\n if (cancel) cancel();\n }\n\n public clearStore(): Promise {\n // Before we have sent the reset action to the store,\n // we can no longer rely on the results returned by in-flight\n // requests since these may depend on values that previously existed\n // in the data portion of the store. So, we cancel the promises and observers\n // that we have issued so far and not yet resolved (in the case of\n // queries).\n this.fetchQueryRejectFns.forEach(reject => {\n reject(new InvariantError(\n 'Store reset while query was in flight (not completed in link chain)',\n ));\n });\n\n const resetIds: string[] = [];\n this.queries.forEach(({ observableQuery }, queryId) => {\n if (observableQuery) resetIds.push(queryId);\n });\n\n this.queryStore.reset(resetIds);\n this.mutationStore.reset();\n\n // begin removing data from the store\n return this.dataStore.reset();\n }\n\n public resetStore(): Promise[]> {\n // Similarly, we have to have to refetch each of the queries currently being\n // observed. We refetch instead of error'ing on these since the assumption is that\n // resetting the store doesn't eliminate the need for the queries currently being\n // watched. If there is an existing query in flight when the store is reset,\n // the promise for it will be rejected and its results will not be written to the\n // store.\n return this.clearStore().then(() => {\n return this.reFetchObservableQueries();\n });\n }\n\n public reFetchObservableQueries(\n includeStandby: boolean = false,\n ): Promise[]> {\n const observableQueryPromises: Promise>[] = [];\n\n this.queries.forEach(({ observableQuery }, queryId) => {\n if (observableQuery) {\n const fetchPolicy = observableQuery.options.fetchPolicy;\n\n observableQuery.resetLastResults();\n if (\n fetchPolicy !== 'cache-only' &&\n (includeStandby || fetchPolicy !== 'standby')\n ) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n\n this.setQuery(queryId, () => ({ newData: null }));\n this.invalidate(queryId);\n }\n });\n\n this.broadcastQueries();\n\n return Promise.all(observableQueryPromises);\n }\n\n public observeQuery(\n queryId: string,\n options: WatchQueryOptions,\n observer: Observer>,\n ) {\n this.addQueryListener(\n queryId,\n this.queryListenerForObserver(queryId, options, observer),\n );\n return this.fetchQuery(queryId, options);\n }\n\n public startQuery(\n queryId: string,\n options: WatchQueryOptions,\n listener: QueryListener,\n ) {\n invariant.warn(\"The QueryManager.startQuery method has been deprecated\");\n\n this.addQueryListener(queryId, listener);\n\n this.fetchQuery(queryId, options)\n // `fetchQuery` returns a Promise. In case of a failure it should be caucht or else the\n // console will show an `Uncaught (in promise)` message. Ignore the error for now.\n .catch(() => undefined);\n\n return queryId;\n }\n\n public startGraphQLSubscription({\n query,\n fetchPolicy,\n variables,\n }: SubscriptionOptions): Observable> {\n query = this.transform(query).document;\n variables = this.getVariables(query, variables);\n\n const makeObservable = (variables: OperationVariables) =>\n this.getObservableFromLink(\n query,\n {},\n variables,\n false,\n ).map(result => {\n if (!fetchPolicy || fetchPolicy !== 'no-cache') {\n this.dataStore.markSubscriptionResult(\n result,\n query,\n variables,\n );\n this.broadcastQueries();\n }\n\n if (graphQLResultHasError(result)) {\n throw new ApolloError({\n graphQLErrors: result.errors,\n });\n }\n\n return result;\n });\n\n if (this.transform(query).hasClientExports) {\n const observablePromise = this.localState.addExportedVariables(\n query,\n variables,\n ).then(makeObservable);\n\n return new Observable>(observer => {\n let sub: Subscription | null = null;\n observablePromise.then(\n observable => sub = observable.subscribe(observer),\n observer.error,\n );\n return () => sub && sub.unsubscribe();\n });\n }\n\n return makeObservable(variables);\n }\n\n public stopQuery(queryId: string) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n }\n\n private stopQueryNoBroadcast(queryId: string) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n }\n\n public removeQuery(queryId: string) {\n // teardown all links\n // Both `QueryManager.fetchRequest` and `QueryManager.query` create separate promises\n // that each add their reject functions to fetchQueryRejectFns.\n // A query created with `QueryManager.query()` could trigger a `QueryManager.fetchRequest`.\n // The same queryId could have two rejection fns for two promises\n this.fetchQueryRejectFns.delete(`query:${queryId}`);\n this.fetchQueryRejectFns.delete(`fetchRequest:${queryId}`);\n this.getQuery(queryId).subscriptions.forEach(x => x.unsubscribe());\n this.queries.delete(queryId);\n }\n\n public getCurrentQueryResult(\n observableQuery: ObservableQuery,\n optimistic: boolean = true,\n ): {\n data: T | undefined;\n partial: boolean;\n } {\n const { variables, query, fetchPolicy, returnPartialData } = observableQuery.options;\n const lastResult = observableQuery.getLastResult();\n const { newData } = this.getQuery(observableQuery.queryId);\n\n if (newData && newData.complete) {\n return { data: newData.result, partial: false };\n }\n\n if (fetchPolicy === 'no-cache' || fetchPolicy === 'network-only') {\n return { data: undefined, partial: false };\n }\n\n const { result, complete } = this.dataStore.getCache().diff({\n query,\n variables,\n previousResult: lastResult ? lastResult.data : undefined,\n returnPartialData: true,\n optimistic,\n });\n\n return {\n data: (complete || returnPartialData) ? result : void 0,\n partial: !complete,\n };\n }\n\n public getQueryWithPreviousResult(\n queryIdOrObservable: string | ObservableQuery,\n ): {\n previousResult: any;\n variables: TVariables | undefined;\n document: DocumentNode;\n } {\n let observableQuery: ObservableQuery;\n if (typeof queryIdOrObservable === 'string') {\n const { observableQuery: foundObserveableQuery } = this.getQuery(\n queryIdOrObservable,\n );\n invariant(\n foundObserveableQuery,\n `ObservableQuery with this id doesn't exist: ${queryIdOrObservable}`\n );\n observableQuery = foundObserveableQuery!;\n } else {\n observableQuery = queryIdOrObservable;\n }\n\n const { variables, query } = observableQuery.options;\n return {\n previousResult: this.getCurrentQueryResult(observableQuery, false).data,\n variables,\n document: query,\n };\n }\n\n public broadcastQueries() {\n this.onBroadcast();\n this.queries.forEach((info, id) => {\n if (info.invalidated) {\n info.listeners.forEach(listener => {\n // it's possible for the listener to be undefined if the query is being stopped\n // See here for more detail: https://github.com/apollostack/apollo-client/issues/231\n if (listener) {\n listener(this.queryStore.get(id), info.newData);\n }\n });\n }\n });\n }\n\n public getLocalState(): LocalState {\n return this.localState;\n }\n\n private inFlightLinkObservables = new Map<\n DocumentNode,\n Map>\n >();\n\n private getObservableFromLink(\n query: DocumentNode,\n context: any,\n variables?: OperationVariables,\n deduplication: boolean = this.queryDeduplication,\n ): Observable> {\n let observable: Observable>;\n\n const { serverQuery } = this.transform(query);\n if (serverQuery) {\n const { inFlightLinkObservables, link } = this;\n\n const operation = {\n query: serverQuery,\n variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext({\n ...context,\n forceFetch: !deduplication\n }),\n };\n\n context = operation.context;\n\n if (deduplication) {\n const byVariables = inFlightLinkObservables.get(serverQuery) || new Map();\n inFlightLinkObservables.set(serverQuery, byVariables);\n\n const varJson = JSON.stringify(variables);\n observable = byVariables.get(varJson);\n\n if (!observable) {\n byVariables.set(\n varJson,\n observable = multiplex(\n execute(link, operation) as Observable>\n )\n );\n\n const cleanup = () => {\n byVariables.delete(varJson);\n if (!byVariables.size) inFlightLinkObservables.delete(serverQuery);\n cleanupSub.unsubscribe();\n };\n\n const cleanupSub = observable.subscribe({\n next: cleanup,\n error: cleanup,\n complete: cleanup,\n });\n }\n\n } else {\n observable = multiplex(execute(link, operation) as Observable>);\n }\n } else {\n observable = Observable.of({ data: {} } as FetchResult);\n context = this.prepareContext(context);\n }\n\n const { clientQuery } = this.transform(query);\n if (clientQuery) {\n observable = asyncMap(observable, result => {\n return this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context,\n variables,\n });\n });\n }\n\n return observable;\n }\n\n // Takes a request id, query id, a query document and information associated with the query\n // and send it to the network interface. Returns\n // a promise for the result associated with that request.\n private fetchRequest({\n requestId,\n queryId,\n document,\n options,\n fetchMoreForQueryId,\n }: {\n requestId: number;\n queryId: string;\n document: DocumentNode;\n options: WatchQueryOptions;\n fetchMoreForQueryId?: string;\n }): Promise> {\n const { variables, errorPolicy = 'none', fetchPolicy } = options;\n let resultFromStore: any;\n let errorsFromStore: any;\n\n return new Promise>((resolve, reject) => {\n const observable = this.getObservableFromLink(\n document,\n options.context,\n variables,\n );\n\n const fqrfId = `fetchRequest:${queryId}`;\n this.fetchQueryRejectFns.set(fqrfId, reject);\n\n const cleanup = () => {\n this.fetchQueryRejectFns.delete(fqrfId);\n this.setQuery(queryId, ({ subscriptions }) => {\n subscriptions.delete(subscription);\n });\n };\n\n const subscription = observable.map((result: FetchResult) => {\n if (requestId >= this.getQuery(queryId).lastRequestId) {\n this.markQueryResult(\n queryId,\n result,\n options,\n fetchMoreForQueryId,\n );\n\n this.queryStore.markQueryResult(\n queryId,\n result,\n fetchMoreForQueryId,\n );\n\n this.invalidate(queryId);\n this.invalidate(fetchMoreForQueryId);\n\n this.broadcastQueries();\n }\n\n if (errorPolicy === 'none' && isNonEmptyArray(result.errors)) {\n return reject(new ApolloError({\n graphQLErrors: result.errors,\n }));\n }\n\n if (errorPolicy === 'all') {\n errorsFromStore = result.errors;\n }\n\n if (fetchMoreForQueryId || fetchPolicy === 'no-cache') {\n // We don't write fetchMore results to the store because this would overwrite\n // the original result in case an @connection directive is used.\n resultFromStore = result.data;\n } else {\n // ensure result is combined with data already in store\n const { result, complete } = this.dataStore.getCache().diff({\n variables,\n query: document,\n optimistic: false,\n returnPartialData: true,\n });\n\n if (complete || options.returnPartialData) {\n resultFromStore = result;\n }\n }\n }).subscribe({\n error(error: ApolloError) {\n cleanup();\n reject(error);\n },\n\n complete() {\n cleanup();\n resolve({\n data: resultFromStore,\n errors: errorsFromStore,\n loading: false,\n networkStatus: NetworkStatus.ready,\n stale: false,\n });\n },\n });\n\n this.setQuery(queryId, ({ subscriptions }) => {\n subscriptions.add(subscription);\n });\n });\n }\n\n private getQuery(queryId: string) {\n return (\n this.queries.get(queryId) || {\n listeners: new Set(),\n invalidated: false,\n document: null,\n newData: null,\n lastRequestId: 1,\n observableQuery: null,\n subscriptions: new Set(),\n }\n );\n }\n\n private setQuery(\n queryId: string,\n updater: (prev: QueryInfo) => Pick | void,\n ) {\n const prev = this.getQuery(queryId);\n const newInfo = { ...prev, ...updater(prev) };\n this.queries.set(queryId, newInfo);\n }\n\n private invalidate(\n queryId: string | undefined,\n invalidated = true,\n ) {\n if (queryId) {\n this.setQuery(queryId, () => ({ invalidated }));\n }\n }\n\n private prepareContext(context = {}) {\n const newContext = this.localState.prepareContext(context);\n return {\n ...newContext,\n clientAwareness: this.clientAwareness,\n };\n }\n\n public checkInFlight(queryId: string) {\n const query = this.queryStore.get(queryId);\n\n return (\n query &&\n query.networkStatus !== NetworkStatus.ready &&\n query.networkStatus !== NetworkStatus.error\n );\n }\n\n // Map from client ID to { interval, options }.\n private pollingInfoByQueryId = new Map();\n\n public startPollingQuery(\n options: WatchQueryOptions,\n queryId: string,\n listener?: QueryListener,\n ): string {\n const { pollInterval } = options;\n\n invariant(\n pollInterval,\n 'Attempted to start a polling query without a polling interval.',\n );\n\n // Do not poll in SSR mode\n if (!this.ssrMode) {\n let info = this.pollingInfoByQueryId.get(queryId)!;\n if (!info) {\n this.pollingInfoByQueryId.set(queryId, (info = {} as any));\n }\n\n info.interval = pollInterval!;\n info.options = {\n ...options,\n fetchPolicy: 'network-only',\n };\n\n const maybeFetch = () => {\n const info = this.pollingInfoByQueryId.get(queryId);\n if (info) {\n if (this.checkInFlight(queryId)) {\n poll();\n } else {\n this.fetchQuery(queryId, info.options, FetchType.poll).then(\n poll,\n poll,\n );\n }\n }\n };\n\n const poll = () => {\n const info = this.pollingInfoByQueryId.get(queryId);\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n\n if (listener) {\n this.addQueryListener(queryId, listener);\n }\n\n poll();\n }\n\n return queryId;\n }\n\n public stopPollingQuery(queryId: string) {\n this.pollingInfoByQueryId.delete(queryId);\n }\n}\n","import { ExecutionResult, DocumentNode } from 'graphql';\nimport { ApolloCache, Cache, DataProxy } from 'apollo-cache';\n\nimport { QueryStoreValue } from '../data/queries';\nimport {\n getOperationName,\n tryFunctionOrLogError,\n graphQLResultHasError,\n} from 'apollo-utilities';\nimport { MutationQueryReducer } from '../core/types';\n\nexport type QueryWithUpdater = {\n updater: MutationQueryReducer;\n query: QueryStoreValue;\n};\n\nexport interface DataWrite {\n rootId: string;\n result: any;\n document: DocumentNode;\n operationName: string | null;\n variables: Object;\n}\n\nexport class DataStore {\n private cache: ApolloCache;\n\n constructor(initialCache: ApolloCache) {\n this.cache = initialCache;\n }\n\n public getCache(): ApolloCache {\n return this.cache;\n }\n\n public markQueryResult(\n result: ExecutionResult,\n document: DocumentNode,\n variables: any,\n fetchMoreForQueryId: string | undefined,\n ignoreErrors: boolean = false,\n ) {\n let writeWithErrors = !graphQLResultHasError(result);\n if (ignoreErrors && graphQLResultHasError(result) && result.data) {\n writeWithErrors = true;\n }\n if (!fetchMoreForQueryId && writeWithErrors) {\n this.cache.write({\n result: result.data,\n dataId: 'ROOT_QUERY',\n query: document,\n variables: variables,\n });\n }\n }\n\n public markSubscriptionResult(\n result: ExecutionResult,\n document: DocumentNode,\n variables: any,\n ) {\n // the subscription interface should handle not sending us results we no longer subscribe to.\n // XXX I don't think we ever send in an object with errors, but we might in the future...\n if (!graphQLResultHasError(result)) {\n this.cache.write({\n result: result.data,\n dataId: 'ROOT_SUBSCRIPTION',\n query: document,\n variables: variables,\n });\n }\n }\n\n public markMutationInit(mutation: {\n mutationId: string;\n document: DocumentNode;\n variables: any;\n updateQueries: { [queryId: string]: QueryWithUpdater };\n update: ((proxy: DataProxy, mutationResult: Object) => void) | undefined;\n optimisticResponse: Object | Function | undefined;\n }) {\n if (mutation.optimisticResponse) {\n let optimistic: Object;\n if (typeof mutation.optimisticResponse === 'function') {\n optimistic = mutation.optimisticResponse(mutation.variables);\n } else {\n optimistic = mutation.optimisticResponse;\n }\n\n this.cache.recordOptimisticTransaction(c => {\n const orig = this.cache;\n this.cache = c;\n\n try {\n this.markMutationResult({\n mutationId: mutation.mutationId,\n result: { data: optimistic },\n document: mutation.document,\n variables: mutation.variables,\n updateQueries: mutation.updateQueries,\n update: mutation.update,\n });\n } finally {\n this.cache = orig;\n }\n }, mutation.mutationId);\n }\n }\n\n public markMutationResult(mutation: {\n mutationId: string;\n result: ExecutionResult;\n document: DocumentNode;\n variables: any;\n updateQueries: { [queryId: string]: QueryWithUpdater };\n update: ((proxy: DataProxy, mutationResult: Object) => void) | undefined;\n }) {\n // Incorporate the result from this mutation into the store\n if (!graphQLResultHasError(mutation.result)) {\n const cacheWrites: Cache.WriteOptions[] = [{\n result: mutation.result.data,\n dataId: 'ROOT_MUTATION',\n query: mutation.document,\n variables: mutation.variables,\n }];\n\n const { updateQueries } = mutation;\n if (updateQueries) {\n Object.keys(updateQueries).forEach(id => {\n const { query, updater } = updateQueries[id];\n\n // Read the current query result from the store.\n const { result: currentQueryResult, complete } = this.cache.diff({\n query: query.document,\n variables: query.variables,\n returnPartialData: true,\n optimistic: false,\n });\n\n if (complete) {\n // Run our reducer using the current query result and the mutation result.\n const nextQueryResult = tryFunctionOrLogError(() =>\n updater(currentQueryResult, {\n mutationResult: mutation.result,\n queryName: getOperationName(query.document) || undefined,\n queryVariables: query.variables,\n }),\n );\n\n // Write the modified result back into the store if we got a new result.\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: 'ROOT_QUERY',\n query: query.document,\n variables: query.variables,\n });\n }\n }\n });\n }\n\n this.cache.performTransaction(c => {\n cacheWrites.forEach(write => c.write(write));\n\n // If the mutation has some writes associated with it then we need to\n // apply those writes to the store by running this reducer again with a\n // write action.\n const { update } = mutation;\n if (update) {\n tryFunctionOrLogError(() => update(c, mutation.result));\n }\n });\n }\n }\n\n public markMutationComplete({\n mutationId,\n optimisticResponse,\n }: {\n mutationId: string;\n optimisticResponse?: any;\n }) {\n if (optimisticResponse) {\n this.cache.removeOptimistic(mutationId);\n }\n }\n\n public markUpdateQueryResult(\n document: DocumentNode,\n variables: any,\n newResult: any,\n ) {\n this.cache.write({\n result: newResult,\n dataId: 'ROOT_QUERY',\n variables,\n query: document,\n });\n }\n\n public reset(): Promise {\n return this.cache.reset();\n }\n}\n","export const version = \"2.6.10\"","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export default function isString(value?: any): value is string {\n return typeof value === 'string';\n}\n","export default function isObject(value?: any): boolean {\n return ((value !== null) && (typeof value === 'object'));\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Kind = void 0;\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n\nexports.Kind = Kind;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOperationAST = getOperationAST;\n\nvar _kinds = require(\"../language/kinds\");\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\nfunction getOperationAST(documentAST, operationName) {\n var operation = null;\n\n for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {\n var definition = _documentAST$definiti2[_i2];\n\n if (definition.kind === _kinds.Kind.OPERATION_DEFINITION) {\n if (!operationName) {\n // If no operation name was provided, only return an Operation if there\n // is one defined in the document. Upon encountering the second, return\n // null.\n if (operation) {\n return null;\n }\n\n operation = definition;\n } else if (definition.name && definition.name.value === operationName) {\n return definition;\n }\n }\n }\n\n return operation;\n}\n","const GRAPHQL_WS = 'graphql-ws';\n// NOTE: This protocol is deprecated and will be removed soon.\n/**\n * @deprecated\n */\nconst GRAPHQL_SUBSCRIPTIONS = 'graphql-subscriptions';\n\nexport {\n GRAPHQL_WS,\n GRAPHQL_SUBSCRIPTIONS,\n};\n","const MIN_WS_TIMEOUT = 1000;\nconst WS_TIMEOUT = 30000;\n\nexport {\n MIN_WS_TIMEOUT,\n WS_TIMEOUT,\n};\n","export default class MessageTypes {\n public static GQL_CONNECTION_INIT = 'connection_init'; // Client -> Server\n public static GQL_CONNECTION_ACK = 'connection_ack'; // Server -> Client\n public static GQL_CONNECTION_ERROR = 'connection_error'; // Server -> Client\n\n // NOTE: The keep alive message type does not follow the standard due to connection optimizations\n public static GQL_CONNECTION_KEEP_ALIVE = 'ka'; // Server -> Client\n\n public static GQL_CONNECTION_TERMINATE = 'connection_terminate'; // Client -> Server\n public static GQL_START = 'start'; // Client -> Server\n public static GQL_DATA = 'data'; // Server -> Client\n public static GQL_ERROR = 'error'; // Server -> Client\n public static GQL_COMPLETE = 'complete'; // Server -> Client\n public static GQL_STOP = 'stop'; // Client -> Server\n\n // NOTE: The following message types are deprecated and will be removed soon.\n /**\n * @deprecated\n */\n public static SUBSCRIPTION_START = 'subscription_start';\n /**\n * @deprecated\n */\n public static SUBSCRIPTION_DATA = 'subscription_data';\n /**\n * @deprecated\n */\n public static SUBSCRIPTION_SUCCESS = 'subscription_success';\n /**\n * @deprecated\n */\n public static SUBSCRIPTION_FAIL = 'subscription_fail';\n /**\n * @deprecated\n */\n public static SUBSCRIPTION_END = 'subscription_end';\n /**\n * @deprecated\n */\n public static INIT = 'init';\n /**\n * @deprecated\n */\n public static INIT_SUCCESS = 'init_success';\n /**\n * @deprecated\n */\n public static INIT_FAIL = 'init_fail';\n /**\n * @deprecated\n */\n public static KEEP_ALIVE = 'keepalive';\n\n constructor() {\n throw new Error('Static Class');\n }\n}\n","declare let window: any;\nconst _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});\nconst NativeWebSocket = _global.WebSocket || _global.MozWebSocket;\n\nimport * as Backoff from 'backo2';\nimport { default as EventEmitterType, EventEmitter, ListenerFn } from 'eventemitter3';\nimport isString from './utils/is-string';\nimport isObject from './utils/is-object';\nimport { ExecutionResult } from 'graphql/execution/execute';\nimport { print } from 'graphql/language/printer';\nimport { DocumentNode } from 'graphql/language/ast';\nimport { getOperationAST } from 'graphql/utilities/getOperationAST';\nimport $$observable from 'symbol-observable';\n\nimport { GRAPHQL_WS } from './protocol';\nimport { MIN_WS_TIMEOUT, WS_TIMEOUT } from './defaults';\nimport MessageTypes from './message-types';\n\nexport interface Observer {\n next?: (value: T) => void;\n error?: (error: Error) => void;\n complete?: () => void;\n}\n\nexport interface Observable {\n subscribe(observer: Observer): {\n unsubscribe: () => void;\n };\n}\n\nexport interface OperationOptions {\n query?: string | DocumentNode;\n variables?: Object;\n operationName?: string;\n [key: string]: any;\n}\n\nexport type FormatedError = Error & {\n originalError?: any;\n};\n\nexport interface Operation {\n options: OperationOptions;\n handler: (error: Error[], result?: any) => void;\n}\n\nexport interface Operations {\n [id: string]: Operation;\n}\n\nexport interface Middleware {\n applyMiddleware(options: OperationOptions, next: Function): void;\n}\n\nexport type ConnectionParams = {\n [paramName: string]: any,\n};\n\nexport type ConnectionParamsOptions = ConnectionParams | Function | Promise;\n\nexport interface ClientOptions {\n connectionParams?: ConnectionParamsOptions;\n minTimeout?: number;\n timeout?: number;\n reconnect?: boolean;\n reconnectionAttempts?: number;\n connectionCallback?: (error: Error[], result?: any) => void;\n lazy?: boolean;\n inactivityTimeout?: number;\n wsOptionArguments?: any[];\n}\n\nexport class SubscriptionClient {\n public client: any;\n public operations: Operations;\n private url: string;\n private nextOperationId: number;\n private connectionParams: Function;\n private minWsTimeout: number;\n private wsTimeout: number;\n private unsentMessagesQueue: Array; // queued messages while websocket is opening.\n private reconnect: boolean;\n private reconnecting: boolean;\n private reconnectionAttempts: number;\n private backoff: any;\n private connectionCallback: any;\n private eventEmitter: EventEmitterType;\n private lazy: boolean;\n private inactivityTimeout: number;\n private inactivityTimeoutId: any;\n private closedByUser: boolean;\n private wsImpl: any;\n private wsProtocols: string | string[];\n private wasKeepAliveReceived: boolean;\n private tryReconnectTimeoutId: any;\n private checkConnectionIntervalId: any;\n private maxConnectTimeoutId: any;\n private middlewares: Middleware[];\n private maxConnectTimeGenerator: any;\n private wsOptionArguments: any[];\n\n constructor(\n url: string,\n options?: ClientOptions,\n webSocketImpl?: any,\n webSocketProtocols?: string | string[],\n ) {\n const {\n connectionCallback = undefined,\n connectionParams = {},\n minTimeout = MIN_WS_TIMEOUT,\n timeout = WS_TIMEOUT,\n reconnect = false,\n reconnectionAttempts = Infinity,\n lazy = false,\n inactivityTimeout = 0,\n wsOptionArguments = [],\n } = (options || {});\n\n this.wsImpl = webSocketImpl || NativeWebSocket;\n if (!this.wsImpl) {\n throw new Error('Unable to find native implementation, or alternative implementation for WebSocket!');\n }\n\n this.wsProtocols = webSocketProtocols || GRAPHQL_WS;\n this.connectionCallback = connectionCallback;\n this.url = url;\n this.operations = {};\n this.nextOperationId = 0;\n this.minWsTimeout = minTimeout;\n this.wsTimeout = timeout;\n this.unsentMessagesQueue = [];\n this.reconnect = reconnect;\n this.reconnecting = false;\n this.reconnectionAttempts = reconnectionAttempts;\n this.lazy = !!lazy;\n this.inactivityTimeout = inactivityTimeout;\n this.closedByUser = false;\n this.backoff = new Backoff({ jitter: 0.5 });\n this.eventEmitter = new EventEmitter();\n this.middlewares = [];\n this.client = null;\n this.maxConnectTimeGenerator = this.createMaxConnectTimeGenerator();\n this.connectionParams = this.getConnectionParams(connectionParams);\n this.wsOptionArguments = wsOptionArguments;\n\n if (!this.lazy) {\n this.connect();\n }\n }\n\n public get status() {\n if (this.client === null) {\n return this.wsImpl.CLOSED;\n }\n\n return this.client.readyState;\n }\n\n public close(isForced = true, closedByUser = true) {\n this.clearInactivityTimeout();\n if (this.client !== null) {\n this.closedByUser = closedByUser;\n\n if (isForced) {\n this.clearCheckConnectionInterval();\n this.clearMaxConnectTimeout();\n this.clearTryReconnectTimeout();\n this.unsubscribeAll();\n this.sendMessage(undefined, MessageTypes.GQL_CONNECTION_TERMINATE, null);\n }\n\n this.client.close();\n this.client.onopen = null;\n this.client.onclose = null;\n this.client.onerror = null;\n this.client.onmessage = null;\n this.client = null;\n this.eventEmitter.emit('disconnected');\n\n if (!isForced) {\n this.tryReconnect();\n }\n }\n }\n\n public request(request: OperationOptions): Observable {\n const getObserver = this.getObserver.bind(this);\n const executeOperation = this.executeOperation.bind(this);\n const unsubscribe = this.unsubscribe.bind(this);\n\n let opId: string;\n\n this.clearInactivityTimeout();\n\n return {\n [$$observable]() {\n return this;\n },\n subscribe(\n observerOrNext: ((Observer) | ((v: ExecutionResult) => void)),\n onError?: (error: Error) => void,\n onComplete?: () => void,\n ) {\n const observer = getObserver(observerOrNext, onError, onComplete);\n\n opId = executeOperation(request, (error: Error[], result: any) => {\n if ( error === null && result === null ) {\n if ( observer.complete ) {\n observer.complete();\n }\n } else if (error) {\n if ( observer.error ) {\n observer.error(error[0]);\n }\n } else {\n if ( observer.next ) {\n observer.next(result);\n }\n }\n });\n\n return {\n unsubscribe: () => {\n if ( opId ) {\n unsubscribe(opId);\n opId = null;\n }\n },\n };\n },\n };\n }\n\n public on(eventName: string, callback: ListenerFn, context?: any): Function {\n const handler = this.eventEmitter.on(eventName, callback, context);\n\n return () => {\n handler.off(eventName, callback, context);\n };\n }\n\n public onConnected(callback: ListenerFn, context?: any): Function {\n return this.on('connected', callback, context);\n }\n\n public onConnecting(callback: ListenerFn, context?: any): Function {\n return this.on('connecting', callback, context);\n }\n\n public onDisconnected(callback: ListenerFn, context?: any): Function {\n return this.on('disconnected', callback, context);\n }\n\n public onReconnected(callback: ListenerFn, context?: any): Function {\n return this.on('reconnected', callback, context);\n }\n\n public onReconnecting(callback: ListenerFn, context?: any): Function {\n return this.on('reconnecting', callback, context);\n }\n\n public onError(callback: ListenerFn, context?: any): Function {\n return this.on('error', callback, context);\n }\n\n public unsubscribeAll() {\n Object.keys(this.operations).forEach( subId => {\n this.unsubscribe(subId);\n });\n }\n\n public applyMiddlewares(options: OperationOptions): Promise {\n return new Promise((resolve, reject) => {\n const queue = (funcs: Middleware[], scope: any) => {\n const next = (error?: any) => {\n if (error) {\n reject(error);\n } else {\n if (funcs.length > 0) {\n const f = funcs.shift();\n if (f) {\n f.applyMiddleware.apply(scope, [options, next]);\n }\n } else {\n resolve(options);\n }\n }\n };\n next();\n };\n\n queue([...this.middlewares], this);\n });\n }\n\n public use(middlewares: Middleware[]): SubscriptionClient {\n middlewares.map((middleware) => {\n if (typeof middleware.applyMiddleware === 'function') {\n this.middlewares.push(middleware);\n } else {\n throw new Error('Middleware must implement the applyMiddleware function.');\n }\n });\n\n return this;\n }\n\n private getConnectionParams(connectionParams: ConnectionParamsOptions): Function {\n return (): Promise => new Promise((resolve, reject) => {\n if (typeof connectionParams === 'function') {\n try {\n return resolve(connectionParams.call(null));\n } catch (error) {\n return reject(error);\n }\n }\n\n resolve(connectionParams);\n });\n }\n\n private executeOperation(options: OperationOptions, handler: (error: Error[], result?: any) => void): string {\n if (this.client === null) {\n this.connect();\n }\n\n const opId = this.generateOperationId();\n this.operations[opId] = { options: options, handler };\n\n this.applyMiddlewares(options)\n .then(processedOptions => {\n this.checkOperationOptions(processedOptions, handler);\n if (this.operations[opId]) {\n this.operations[opId] = { options: processedOptions, handler };\n this.sendMessage(opId, MessageTypes.GQL_START, processedOptions);\n }\n })\n .catch(error => {\n this.unsubscribe(opId);\n handler(this.formatErrors(error));\n });\n\n return opId;\n }\n\n private getObserver(\n observerOrNext: ((Observer) | ((v: T) => void)),\n error?: (e: Error) => void,\n complete?: () => void,\n ) {\n if ( typeof observerOrNext === 'function' ) {\n return {\n next: (v: T) => observerOrNext(v),\n error: (e: Error) => error && error(e),\n complete: () => complete && complete(),\n };\n }\n\n return observerOrNext;\n }\n\n private createMaxConnectTimeGenerator() {\n const minValue = this.minWsTimeout;\n const maxValue = this.wsTimeout;\n\n return new Backoff({\n min: minValue,\n max: maxValue,\n factor: 1.2,\n });\n }\n\n private clearCheckConnectionInterval() {\n if (this.checkConnectionIntervalId) {\n clearInterval(this.checkConnectionIntervalId);\n this.checkConnectionIntervalId = null;\n }\n }\n\n private clearMaxConnectTimeout() {\n if (this.maxConnectTimeoutId) {\n clearTimeout(this.maxConnectTimeoutId);\n this.maxConnectTimeoutId = null;\n }\n }\n\n private clearTryReconnectTimeout() {\n if (this.tryReconnectTimeoutId) {\n clearTimeout(this.tryReconnectTimeoutId);\n this.tryReconnectTimeoutId = null;\n }\n }\n\n private clearInactivityTimeout() {\n if (this.inactivityTimeoutId) {\n clearTimeout(this.inactivityTimeoutId);\n this.inactivityTimeoutId = null;\n }\n }\n\n private setInactivityTimeout() {\n if (this.inactivityTimeout > 0 && Object.keys(this.operations).length === 0) {\n this.inactivityTimeoutId = setTimeout(() => {\n if (Object.keys(this.operations).length === 0) {\n this.close();\n }\n }, this.inactivityTimeout);\n }\n }\n\n private checkOperationOptions(options: OperationOptions, handler: (error: Error[], result?: any) => void) {\n const { query, variables, operationName } = options;\n\n if (!query) {\n throw new Error('Must provide a query.');\n }\n\n if (!handler) {\n throw new Error('Must provide an handler.');\n }\n\n if (\n ( !isString(query) && !getOperationAST(query, operationName)) ||\n ( operationName && !isString(operationName)) ||\n ( variables && !isObject(variables))\n ) {\n throw new Error('Incorrect option types. query must be a string or a document,' +\n '`operationName` must be a string, and `variables` must be an object.');\n }\n }\n\n private buildMessage(id: string, type: string, payload: any) {\n const payloadToReturn = payload && payload.query ?\n {\n ...payload,\n query: typeof payload.query === 'string' ? payload.query : print(payload.query),\n } :\n payload;\n\n return {\n id,\n type,\n payload: payloadToReturn,\n };\n }\n\n // ensure we have an array of errors\n private formatErrors(errors: any): FormatedError[] {\n if (Array.isArray(errors)) {\n return errors;\n }\n\n // TODO we should not pass ValidationError to callback in the future.\n // ValidationError\n if (errors && errors.errors) {\n return this.formatErrors(errors.errors);\n }\n\n if (errors && errors.message) {\n return [errors];\n }\n\n return [{\n name: 'FormatedError',\n message: 'Unknown error',\n originalError: errors,\n }];\n }\n\n private sendMessage(id: string, type: string, payload: any) {\n this.sendMessageRaw(this.buildMessage(id, type, payload));\n }\n\n // send message, or queue it if connection is not open\n private sendMessageRaw(message: Object) {\n switch (this.status) {\n case this.wsImpl.OPEN:\n let serializedMessage: string = JSON.stringify(message);\n try {\n JSON.parse(serializedMessage);\n } catch (e) {\n this.eventEmitter.emit('error', new Error(`Message must be JSON-serializable. Got: ${message}`));\n }\n\n this.client.send(serializedMessage);\n break;\n case this.wsImpl.CONNECTING:\n this.unsentMessagesQueue.push(message);\n\n break;\n default:\n if (!this.reconnecting) {\n this.eventEmitter.emit('error', new Error('A message was not sent because socket is not connected, is closing or ' +\n 'is already closed. Message was: ' + JSON.stringify(message)));\n }\n }\n }\n\n private generateOperationId(): string {\n return String(++this.nextOperationId);\n }\n\n private tryReconnect() {\n if (!this.reconnect || this.backoff.attempts >= this.reconnectionAttempts) {\n return;\n }\n\n if (!this.reconnecting) {\n Object.keys(this.operations).forEach((key) => {\n this.unsentMessagesQueue.push(\n this.buildMessage(key, MessageTypes.GQL_START, this.operations[key].options),\n );\n });\n this.reconnecting = true;\n }\n\n this.clearTryReconnectTimeout();\n\n const delay = this.backoff.duration();\n this.tryReconnectTimeoutId = setTimeout(() => {\n this.connect();\n }, delay);\n }\n\n private flushUnsentMessagesQueue() {\n this.unsentMessagesQueue.forEach((message) => {\n this.sendMessageRaw(message);\n });\n this.unsentMessagesQueue = [];\n }\n\n private checkConnection() {\n if (this.wasKeepAliveReceived) {\n this.wasKeepAliveReceived = false;\n return;\n }\n\n if (!this.reconnecting) {\n this.close(false, true);\n }\n }\n\n private checkMaxConnectTimeout() {\n this.clearMaxConnectTimeout();\n\n // Max timeout trying to connect\n this.maxConnectTimeoutId = setTimeout(() => {\n if (this.status !== this.wsImpl.OPEN) {\n this.reconnecting = true;\n this.close(false, true);\n }\n }, this.maxConnectTimeGenerator.duration());\n }\n\n private connect() {\n this.client = new this.wsImpl(this.url, this.wsProtocols, ...this.wsOptionArguments);\n\n this.checkMaxConnectTimeout();\n\n this.client.onopen = async () => {\n if (this.status === this.wsImpl.OPEN) {\n this.clearMaxConnectTimeout();\n this.closedByUser = false;\n this.eventEmitter.emit(this.reconnecting ? 'reconnecting' : 'connecting');\n\n try {\n const connectionParams: ConnectionParams = await this.connectionParams();\n\n // Send CONNECTION_INIT message, no need to wait for connection to success (reduce roundtrips)\n this.sendMessage(undefined, MessageTypes.GQL_CONNECTION_INIT, connectionParams);\n this.flushUnsentMessagesQueue();\n } catch (error) {\n this.sendMessage(undefined, MessageTypes.GQL_CONNECTION_ERROR, error);\n this.flushUnsentMessagesQueue();\n }\n }\n };\n\n this.client.onclose = () => {\n if (!this.closedByUser) {\n this.close(false, false);\n }\n };\n\n this.client.onerror = (err: Error) => {\n // Capture and ignore errors to prevent unhandled exceptions, wait for\n // onclose to fire before attempting a reconnect.\n this.eventEmitter.emit('error', err);\n };\n\n this.client.onmessage = ({ data }: {data: any}) => {\n this.processReceivedData(data);\n };\n }\n\n private processReceivedData(receivedData: any) {\n let parsedMessage: any;\n let opId: string;\n\n try {\n parsedMessage = JSON.parse(receivedData);\n opId = parsedMessage.id;\n } catch (e) {\n throw new Error(`Message must be JSON-parseable. Got: ${receivedData}`);\n }\n\n if (\n [ MessageTypes.GQL_DATA,\n MessageTypes.GQL_COMPLETE,\n MessageTypes.GQL_ERROR,\n ].indexOf(parsedMessage.type) !== -1 && !this.operations[opId]\n ) {\n this.unsubscribe(opId);\n\n return;\n }\n\n switch (parsedMessage.type) {\n case MessageTypes.GQL_CONNECTION_ERROR:\n if (this.connectionCallback) {\n this.connectionCallback(parsedMessage.payload);\n }\n break;\n\n case MessageTypes.GQL_CONNECTION_ACK:\n this.eventEmitter.emit(this.reconnecting ? 'reconnected' : 'connected', parsedMessage.payload);\n this.reconnecting = false;\n this.backoff.reset();\n this.maxConnectTimeGenerator.reset();\n\n if (this.connectionCallback) {\n this.connectionCallback();\n }\n break;\n\n case MessageTypes.GQL_COMPLETE:\n const handler = this.operations[opId].handler;\n delete this.operations[opId];\n handler.call(this, null, null);\n break;\n\n case MessageTypes.GQL_ERROR:\n this.operations[opId].handler(this.formatErrors(parsedMessage.payload), null);\n delete this.operations[opId];\n break;\n\n case MessageTypes.GQL_DATA:\n const parsedPayload = !parsedMessage.payload.errors ?\n parsedMessage.payload : {...parsedMessage.payload, errors: this.formatErrors(parsedMessage.payload.errors)};\n this.operations[opId].handler(null, parsedPayload);\n break;\n\n case MessageTypes.GQL_CONNECTION_KEEP_ALIVE:\n const firstKA = typeof this.wasKeepAliveReceived === 'undefined';\n this.wasKeepAliveReceived = true;\n\n if (firstKA) {\n this.checkConnection();\n }\n\n if (this.checkConnectionIntervalId) {\n clearInterval(this.checkConnectionIntervalId);\n this.checkConnection();\n }\n this.checkConnectionIntervalId = setInterval(this.checkConnection.bind(this), this.wsTimeout);\n break;\n\n default:\n throw new Error('Invalid message type!');\n }\n }\n\n private unsubscribe(opId: string) {\n if (this.operations[opId]) {\n delete this.operations[opId];\n this.setInactivityTimeout();\n this.sendMessage(opId, MessageTypes.GQL_STOP, undefined);\n }\n }\n}\n","import { ApolloLink, Operation, FetchResult, Observable } from 'apollo-link';\n\nimport { SubscriptionClient, ClientOptions } from 'subscriptions-transport-ws';\n\nexport namespace WebSocketLink {\n /**\n * Configuration to use when constructing the subscription client (subscriptions-transport-ws).\n */\n export interface Configuration {\n /**\n * The endpoint to connect to.\n */\n uri: string;\n\n /**\n * Options to pass when constructing the subscription client.\n */\n options?: ClientOptions;\n\n /**\n * A custom WebSocket implementation to use.\n */\n webSocketImpl?: any;\n }\n}\n\n// For backwards compatibility.\nexport import WebSocketParams = WebSocketLink.Configuration;\n\nexport class WebSocketLink extends ApolloLink {\n private subscriptionClient: SubscriptionClient;\n\n constructor(\n paramsOrClient: WebSocketLink.Configuration | SubscriptionClient,\n ) {\n super();\n\n if (paramsOrClient instanceof SubscriptionClient) {\n this.subscriptionClient = paramsOrClient;\n } else {\n this.subscriptionClient = new SubscriptionClient(\n paramsOrClient.uri,\n paramsOrClient.options,\n paramsOrClient.webSocketImpl,\n );\n }\n }\n\n public request(operation: Operation): Observable | null {\n return this.subscriptionClient.request(operation) as Observable<\n FetchResult\n >;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.importQuery = void 0;\nconst core_1 = require(\"@rxdi/core\");\nfunction importQuery(search) {\n let result;\n const DOCUMENTS = core_1.Container.get('graphql-documents');\n Object.keys(DOCUMENTS).filter((doc) => {\n if (doc.indexOf(search) !== -1) {\n result = DOCUMENTS[doc];\n }\n });\n if (!result) {\n console.error(`Missing query: ${search}`);\n return search;\n }\n return result;\n}\nexports.importQuery = importQuery;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar GraphqlModule_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InMemoryCache = exports.IntrospectionFragmentMatcher = exports.GraphqlModule = void 0;\nconst core_1 = require(\"@rxdi/core\");\nconst apollo_cache_inmemory_1 = require(\"apollo-cache-inmemory\");\nconst apollo_link_http_1 = require(\"apollo-link-http\");\nconst graphql_injection_1 = require(\"./graphql.injection\");\nconst apollo_client_1 = require(\"apollo-client\");\nconst apollo_link_1 = require(\"apollo-link\");\nconst apollo_link_ws_1 = require(\"apollo-link-ws\");\nconst subscriptions_transport_ws_1 = require(\"subscriptions-transport-ws\");\nconst apollo_utilities_1 = require(\"apollo-utilities\");\nconst apollo_link_context_1 = require(\"apollo-link-context\");\nlet GraphqlModule = GraphqlModule_1 = class GraphqlModule {\n static forRoot({ uri, pubsub, onRequest, cache, apolloRequestHandler, cancelPendingRequests, apolloClientOptions, } = {}, documents = {}) {\n const headers = {};\n const connections = {};\n return {\n module: GraphqlModule_1,\n providers: [\n {\n provide: graphql_injection_1.GraphqlDocuments,\n useValue: documents,\n },\n {\n provide: graphql_injection_1.ApolloClient,\n useFactory: () => new apollo_client_1.ApolloClient(Object.assign({ link: (0, apollo_link_1.concat)((0, apollo_link_1.from)([\n (0, apollo_link_context_1.setContext)((operation) => __awaiter(this, void 0, void 0, function* () {\n const method = onRequest || graphql_injection_1.noopHeaders;\n let headersMap = (yield method.call(operation)) || {};\n headersMap.forEach((v, k) => {\n headers[k] = v;\n });\n return {\n headers,\n };\n })),\n new apollo_link_1.ApolloLink(typeof apolloRequestHandler === 'function'\n ? apolloRequestHandler\n : (operation, forward) => {\n /* Start cancel request */\n if (cancelPendingRequests) {\n return new apollo_link_1.Observable((observer) => {\n const context = operation.getContext();\n const connectionHandle = forward(operation).subscribe({\n next: (...arg) => observer.next(...arg),\n error: (...arg) => {\n cleanUp();\n observer.error(...arg);\n },\n complete: (...arg) => {\n cleanUp();\n observer.complete(...arg);\n },\n });\n const cleanUp = () => {\n connectionHandle === null || connectionHandle === void 0 ? void 0 : connectionHandle.unsubscribe();\n delete connections[context.requestTrackerId];\n };\n if (context.requestTrackerId) {\n const controller = new AbortController();\n controller.signal.onabort = cleanUp;\n operation.setContext(Object.assign(Object.assign({}, context), { fetchOptions: Object.assign({ signal: controller.signal }, context === null || context === void 0 ? void 0 : context.fetchOptions) }));\n if (connections[context.requestTrackerId]) {\n // If a controller exists, that means this operation should be aborted.\n connections[context.requestTrackerId].abort();\n }\n connections[context.requestTrackerId] = controller;\n }\n return connectionHandle;\n });\n }\n /* End cancel request */\n return forward(operation);\n }),\n ]), (0, apollo_link_1.split)(({ query }) => {\n const { kind, operation } = (0, apollo_utilities_1.getMainDefinition)(query);\n return kind === 'OperationDefinition' && operation === 'subscription';\n }, (() => {\n const wsLink = new apollo_link_ws_1.WebSocketLink(new subscriptions_transport_ws_1.SubscriptionClient(pubsub, {\n lazy: true,\n connectionParams: () => ({\n get authorization() {\n return headers['authorization'];\n },\n }),\n connectionCallback: (error) => {\n console.error('[Subscription]: ', error);\n if ((error === null || error === void 0 ? void 0 : error['message']) === 'Unauthorized') {\n wsLink['subscriptionClient'].close(false, false);\n }\n },\n reconnect: true,\n }));\n return wsLink;\n })(), (0, apollo_link_http_1.createHttpLink)({ uri }))), cache: cache || new apollo_cache_inmemory_1.InMemoryCache() }, apolloClientOptions)),\n },\n ],\n };\n }\n};\nGraphqlModule = GraphqlModule_1 = __decorate([\n (0, core_1.Module)({})\n], GraphqlModule);\nexports.GraphqlModule = GraphqlModule;\n__exportStar(require(\"./graphql.injection\"), exports);\n__exportStar(require(\"./graphq.helpers\"), exports);\nvar apollo_cache_inmemory_2 = require(\"apollo-cache-inmemory\");\nObject.defineProperty(exports, \"IntrospectionFragmentMatcher\", { enumerable: true, get: function () { return apollo_cache_inmemory_2.IntrospectionFragmentMatcher; } });\nObject.defineProperty(exports, \"InMemoryCache\", { enumerable: true, get: function () { return apollo_cache_inmemory_2.InMemoryCache; } });\n","\"use strict\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._$LH = exports.render = exports.nothing = exports.noChange = exports.svg = exports.html = exports.INTERNAL = void 0;\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\n/**\n * `true` if we're building for google3 with temporary back-compat helpers.\n * This export is not present in prod builds.\n * @internal\n */\nexports.INTERNAL = true;\nlet issueWarning;\nif (DEV_MODE) {\n (_a = globalThis.litIssuedWarnings) !== null && _a !== void 0 ? _a : (globalThis.litIssuedWarnings = new Set());\n // Issue a warning, if we haven't already.\n issueWarning = (code, warning) => {\n warning += code\n ? ` See https://lit.dev/msg/${code} for more information.`\n : '';\n if (!globalThis.litIssuedWarnings.has(warning)) {\n console.warn(warning);\n globalThis.litIssuedWarnings.add(warning);\n }\n };\n issueWarning('dev-mode', `Lit is in dev mode. Not recommended for production!`);\n}\nconst wrap = ENABLE_SHADYDOM_NOPATCH &&\n ((_b = window.ShadyDOM) === null || _b === void 0 ? void 0 : _b.inUse) &&\n ((_c = window.ShadyDOM) === null || _c === void 0 ? void 0 : _c.noPatch) === true\n ? window.ShadyDOM.wrap\n : (node) => node;\nconst trustedTypes = globalThis['trustedTypes'];\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n ? trustedTypes.createPolicy('lit-html', {\n createHTML: (s) => s,\n })\n : undefined;\nconst identityFunction = (value) => value;\nconst noopSanitizer = (_node, _name, _type) => identityFunction;\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer) => {\n if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n return;\n }\n if (sanitizerFactoryInternal !== noopSanitizer) {\n throw new Error(`Attempted to overwrite existing lit-html security policy.` +\n ` setSanitizeDOMValueFactory should be called at most once.`);\n }\n sanitizerFactoryInternal = newSanitizer;\n};\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n sanitizerFactoryInternal = noopSanitizer;\n};\nconst createSanitizer = (node, name, type) => {\n return sanitizerFactoryInternal(node, name, type);\n};\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${String(Math.random()).slice(9)}$`;\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\nconst d = document;\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = (v = '') => d.createComment(v);\nconst isPrimitive = (value) => value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value) => {\n var _a;\n return isArray(value) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof ((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.iterator]) === 'function';\n};\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n/**\n * End of text is: `<` followed by:\n * (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\nconst commentEndRegex = /-->/g;\n/**\n * Comments not started with `--my-button-color`\n prop = prop\n .replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, '-$&')\n .toLowerCase();\n return style + `${prop}:${value};`;\n }, '');\n }\n update(part, [styleInfo]) {\n const { style } = part.element;\n if (this._previousStyleProperties === undefined) {\n this._previousStyleProperties = new Set();\n for (const name in styleInfo) {\n this._previousStyleProperties.add(name);\n }\n return this.render(styleInfo);\n }\n // Remove old properties that no longer exist in styleInfo\n // We use forEach() instead of for-of so that re don't require down-level\n // iteration.\n this._previousStyleProperties.forEach((name) => {\n // If the name isn't in styleInfo or it's null/undefined\n if (styleInfo[name] == null) {\n this._previousStyleProperties.delete(name);\n if (name.includes('-')) {\n style.removeProperty(name);\n }\n else {\n // Note reset using empty string (vs null) as IE11 does not always\n // reset via null (https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style#setting_styles)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n style[name] = '';\n }\n }\n });\n // Add or update properties\n for (const name in styleInfo) {\n const value = styleInfo[name];\n if (value != null) {\n this._previousStyleProperties.add(name);\n if (name.includes('-')) {\n style.setProperty(name, value);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n style[name] = value;\n }\n }\n }\n return lit_html_1.noChange;\n }\n}\n/**\n * A directive that applies CSS properties to an element.\n *\n * `styleMap` can only be used in the `style` attribute and must be the only\n * expression in the attribute. It takes the property names in the `styleInfo`\n * object and adds the property values as CSS properties. Property names with\n * dashes (`-`) are assumed to be valid CSS property names and set on the\n * element's style object using `setProperty()`. Names without dashes are\n * assumed to be camelCased JavaScript property names and set on the element's\n * style object using property assignment, allowing the style object to\n * translate JavaScript-style names to CSS property names.\n *\n * For example `styleMap({backgroundColor: 'red', 'border-top': '5px', '--size':\n * '0'})` sets the `background-color`, `border-top` and `--size` properties.\n *\n * @param styleInfo\n */\nexports.styleMap = (0, directive_1.directive)(StyleMapDirective);\n","\"use strict\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.templateContent = void 0;\nconst lit_html_1 = require(\"../lit-html\");\nconst directive_1 = require(\"../directive\");\nclass TemplateContentDirective extends directive_1.Directive {\n constructor(partInfo) {\n super(partInfo);\n if (partInfo.type !== directive_1.PartType.CHILD) {\n throw new Error('templateContent can only be used in child bindings');\n }\n }\n render(template) {\n if (this._previousTemplate === template) {\n return lit_html_1.noChange;\n }\n this._previousTemplate = template;\n return document.importNode(template.content, true);\n }\n}\n/**\n * Renders the content of a template element as HTML.\n *\n * Note, the template should be developer controlled and not user controlled.\n * Rendering a user-controlled template with this directive\n * could lead to cross-site-scripting vulnerabilities.\n */\nexports.templateContent = (0, directive_1.directive)(TemplateContentDirective);\n","\"use strict\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsafeHTML = exports.UnsafeHTMLDirective = void 0;\nconst lit_html_1 = require(\"../lit-html\");\nconst directive_1 = require(\"../directive\");\nconst HTML_RESULT = 1;\nclass UnsafeHTMLDirective extends directive_1.Directive {\n constructor(partInfo) {\n super(partInfo);\n this._value = lit_html_1.nothing;\n if (partInfo.type !== directive_1.PartType.CHILD) {\n throw new Error(`${this.constructor.directiveName}() can only be used in child bindings`);\n }\n }\n render(value) {\n if (value === lit_html_1.nothing || value == null) {\n this._templateResult = undefined;\n return (this._value = value);\n }\n if (value === lit_html_1.noChange) {\n return value;\n }\n if (typeof value != 'string') {\n throw new Error(`${this.constructor.directiveName}() called with a non-string value`);\n }\n if (value === this._value) {\n return this._templateResult;\n }\n this._value = value;\n const strings = [value];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n strings.raw = strings;\n // WARNING: impersonating a TemplateResult like this is extremely\n // dangerous. Third-party directives should not do this.\n return (this._templateResult = {\n // Cast to a known set of integers that satisfy ResultType so that we\n // don't have to export ResultType and possibly encourage this pattern.\n // This property needs to remain unminified.\n ['_$litType$']: this.constructor\n .resultType,\n strings,\n values: [],\n });\n }\n}\nexports.UnsafeHTMLDirective = UnsafeHTMLDirective;\nUnsafeHTMLDirective.directiveName = 'unsafeHTML';\nUnsafeHTMLDirective.resultType = HTML_RESULT;\n/**\n * Renders the result as HTML, rather than text.\n *\n * The values `undefined`, `null`, and `nothing`, will all result in no content\n * (empty string) being rendered.\n *\n * Note, this is unsafe to use with any user-provided input that hasn't been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nexports.unsafeHTML = (0, directive_1.directive)(UnsafeHTMLDirective);\n","\"use strict\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsafeSVG = void 0;\nconst directive_1 = require(\"../directive\");\nconst unsafe_html_1 = require(\"./unsafe-html\");\nconst SVG_RESULT = 2;\nclass UnsafeSVGDirective extends unsafe_html_1.UnsafeHTMLDirective {\n}\nUnsafeSVGDirective.directiveName = 'unsafeSVG';\nUnsafeSVGDirective.resultType = SVG_RESULT;\n/**\n * Renders the result as SVG, rather than text.\n *\n * The values `undefined`, `null`, and `nothing`, will all result in no content\n * (empty string) being rendered.\n *\n * Note, this is unsafe to use with any user-provided input that hasn't been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nexports.unsafeSVG = (0, directive_1.directive)(UnsafeSVGDirective);\n","\"use strict\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.until = exports.UntilDirective = void 0;\nconst lit_html_1 = require(\"../lit-html\");\nconst directive_1 = require(\"../directive\");\nconst directive_helpers_1 = require(\"../directive-helpers\");\nconst async_directive_1 = require(\"../async-directive\");\nconst private_async_helpers_1 = require(\"./private-async-helpers\");\nconst isPromise = (x) => {\n return !(0, directive_helpers_1.isPrimitive)(x) && typeof x.then === 'function';\n};\n// Effectively infinity, but a SMI.\nconst _infinity = 0x3fffffff;\nclass UntilDirective extends async_directive_1.AsyncDirective {\n constructor() {\n super(...arguments);\n this.__lastRenderedIndex = _infinity;\n this.__values = [];\n this.__weakThis = new private_async_helpers_1.PseudoWeakRef(this);\n this.__pauser = new private_async_helpers_1.Pauser();\n }\n render(...args) {\n var _a;\n return (_a = args.find((x) => !isPromise(x))) !== null && _a !== void 0 ? _a : lit_html_1.noChange;\n }\n update(_part, args) {\n const previousValues = this.__values;\n let previousLength = previousValues.length;\n this.__values = args;\n const weakThis = this.__weakThis;\n const pauser = this.__pauser;\n // If our initial render occurs while disconnected, ensure that the pauser\n // and weakThis are in the disconnected state\n if (!this.isConnected) {\n this.disconnected();\n }\n for (let i = 0; i < args.length; i++) {\n // If we've rendered a higher-priority value already, stop.\n if (i > this.__lastRenderedIndex) {\n break;\n }\n const value = args[i];\n // Render non-Promise values immediately\n if (!isPromise(value)) {\n this.__lastRenderedIndex = i;\n // Since a lower-priority value will never overwrite a higher-priority\n // synchronous value, we can stop processing now.\n return value;\n }\n // If this is a Promise we've already handled, skip it.\n if (i < previousLength && value === previousValues[i]) {\n continue;\n }\n // We have a Promise that we haven't seen before, so priorities may have\n // changed. Forget what we rendered before.\n this.__lastRenderedIndex = _infinity;\n previousLength = 0;\n // Note, the callback avoids closing over `this` so that the directive\n // can be gc'ed before the promise resolves; instead `this` is retrieved\n // from `weakThis`, which can break the hard reference in the closure when\n // the directive disconnects\n Promise.resolve(value).then((result) => __awaiter(this, void 0, void 0, function* () {\n // If we're disconnected, wait until we're (maybe) reconnected\n // The while loop here handles the case that the connection state\n // thrashes, causing the pauser to resume and then get re-paused\n while (pauser.get()) {\n yield pauser.get();\n }\n // If the callback gets here and there is no `this`, it means that the\n // directive has been disconnected and garbage collected and we don't\n // need to do anything else\n const _this = weakThis.deref();\n if (_this !== undefined) {\n const index = _this.__values.indexOf(value);\n // If state.values doesn't contain the value, we've re-rendered without\n // the value, so don't render it. Then, only render if the value is\n // higher-priority than what's already been rendered.\n if (index > -1 && index < _this.__lastRenderedIndex) {\n _this.__lastRenderedIndex = index;\n _this.setValue(result);\n }\n }\n }));\n }\n return lit_html_1.noChange;\n }\n disconnected() {\n this.__weakThis.disconnect();\n this.__pauser.pause();\n }\n reconnected() {\n this.__weakThis.reconnect(this);\n this.__pauser.resume();\n }\n}\nexports.UntilDirective = UntilDirective;\n/**\n * Renders one of a series of values, including Promises, to a Part.\n *\n * Values are rendered in priority order, with the first argument having the\n * highest priority and the last argument having the lowest priority. If a\n * value is a Promise, low-priority values will be rendered until it resolves.\n *\n * The priority of values can be used to create placeholder content for async\n * data. For example, a Promise with pending content can be the first,\n * highest-priority, argument, and a non_promise loading indicator template can\n * be used as the second, lower-priority, argument. The loading indicator will\n * render immediately, and the primary content will render when the Promise\n * resolves.\n *\n * Example:\n *\n * ```js\n * const content = fetch('./content.txt').then(r => r.text());\n * html`${until(content, html`Loading...`)}`\n * ```\n */\nexports.until = (0, directive_1.directive)(UntilDirective);\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\n// export type {UntilDirective};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./decorators/index\"), exports);\n__exportStar(require(\"./async\"), exports);\n__exportStar(require(\"./reactive-element/index\"), exports);\n__exportStar(require(\"./lit-html/lit-html\"), exports);\n__exportStar(require(\"./lit-element/index\"), exports);\n__exportStar(require(\"./lit-html/directives/class-map\"), exports);\n__exportStar(require(\"./lit-html/directives/async-append\"), exports);\n__exportStar(require(\"./lit-html/directives/async-replace\"), exports);\n__exportStar(require(\"./lit-html/directives/cache\"), exports);\n__exportStar(require(\"./lit-html/directives/guard\"), exports);\n__exportStar(require(\"./lit-html/directives/if-defined\"), exports);\n__exportStar(require(\"./lit-html/directives/live\"), exports);\n__exportStar(require(\"./lit-html/directives/ref\"), exports);\n__exportStar(require(\"./lit-html/directives/repeat\"), exports);\n__exportStar(require(\"./lit-html/directives/style-map\"), exports);\n__exportStar(require(\"./lit-html/directives/template-content\"), exports);\n__exportStar(require(\"./lit-html/directives/unsafe-html\"), exports);\n__exportStar(require(\"./lit-html/directives/unsafe-svg\"), exports);\n__exportStar(require(\"./lit-html/directives/until\"), exports);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * Note: This file is autogenerated using \"resources/gen-version.js\" script and\n * automatically updated by \"yarn version\" command.\n */\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nexport var version = '14.7.0';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nexport var versionInfo = Object.freeze({\n major: 14,\n minor: 7,\n patch: 0,\n preReleaseTag: null\n});\n","/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\n// eslint-disable-next-line no-redeclare\nexport default function isPromise(value) {\n return Boolean(value && typeof value.then === 'function');\n}\n","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","import nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';\n/**\n * The `defineToJSON()` function defines toJSON() and inspect() prototype\n * methods, if no function provided they become aliases for toString().\n */\n\nexport default function defineToJSON(classObject) {\n var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : classObject.prototype.toString;\n classObject.prototype.toJSON = fn;\n classObject.prototype.inspect = fn;\n\n if (nodejsCustomInspectSymbol) {\n classObject.prototype[nodejsCustomInspectSymbol] = fn;\n }\n}\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","import { getLocation } from '../language/location';\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var sublineIndex = Math.floor(columnNum / 80);\n var sublineColumnNum = columnNum % 80;\n var sublines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n sublines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), sublines[0]]].concat(sublines.slice(1, sublineIndex + 1).map(function (subline) {\n return ['', subline];\n }), [[' ', whitespace(sublineColumnNum - 1) + '^'], ['', sublines[sublineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return lpad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction lpad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","import isObjectLike from '../jsutils/isObjectLike';\nimport { getLocation } from '../language/location';\nimport { printLocation, printSourceLocation } from '../language/printLocation';\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport function GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return getLocation(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(getLocation(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions;\n\n if (_extensions == null && originalError != null) {\n var originalExtensions = originalError.extensions;\n\n if (isObjectLike(originalExtensions)) {\n _extensions = originalExtensions;\n }\n }\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nexport function printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i2 = 0, _error$nodes2 = error.nodes; _i2 < _error$nodes2.length; _i2++) {\n var node = _error$nodes2[_i2];\n\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i4 = 0, _error$locations2 = error.locations; _i4 < _error$locations2.length; _i4++) {\n var location = _error$locations2[_i4];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n\n return output;\n}\n","import { GraphQLError } from './GraphQLError';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n","/**\n * The `defineToStringTag()` function checks first to see if the runtime\n * supports the `Symbol` class and then if the `Symbol.toStringTag` constant\n * is defined as a `Symbol` instance. If both conditions are met, the\n * Symbol.toStringTag property is defined as a getter that returns the\n * supplied class constructor's name.\n *\n * @method defineToStringTag\n *\n * @param {Class} classObject a class such as Object, String, Number but\n * typically one of your own creation through the class keyword; `class A {}`,\n * for example.\n */\nexport default function defineToStringTag(classObject) {\n if (typeof Symbol === 'function' && Symbol.toStringTag) {\n Object.defineProperty(classObject.prototype, Symbol.toStringTag, {\n get: function get() {\n return this.constructor.name;\n }\n });\n }\n}\n","import devAssert from '../jsutils/devAssert';\nimport defineToStringTag from '../jsutils/defineToStringTag';\n\n/**\n * A representation of source input to GraphQL.\n * `name` and `locationOffset` are optional. They are useful for clients who\n * store GraphQL documents in source files; for example, if the GraphQL input\n * starts at line 40 in a file named Foo.graphql, it might be useful for name to\n * be \"Foo.graphql\" and location to be `{ line: 40, column: 0 }`.\n * line and column in locationOffset are 1-indexed\n */\nexport var Source = function Source(body, name, locationOffset) {\n this.body = body;\n this.name = name || 'GraphQL request';\n this.locationOffset = locationOffset || {\n line: 1,\n column: 1\n };\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive');\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(Source);\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n","import defineToJSON from '../jsutils/defineToJSON';\nimport { syntaxError } from '../error/syntaxError';\nimport { dedentBlockStringValue } from './blockString';\nimport { TokenKind } from './tokenKind';\n/**\n * Given a Source object, this returns a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport function createLexer(source, options) {\n var startOfFileToken = new Tok(TokenKind.SOF, 0, 0, 0, 0, null);\n var lexer = {\n source: source,\n options: options,\n lastToken: startOfFileToken,\n token: startOfFileToken,\n line: 1,\n lineStart: 0,\n advance: advanceLexer,\n lookahead: lookahead\n };\n return lexer;\n}\n\nfunction advanceLexer() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n}\n\nfunction lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = token.next || (token.next = readToken(this, token));\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n}\n/**\n * The return type of createLexer.\n */\n\n\n// @internal\nexport function isPunctuatorToken(token) {\n var kind = token.kind;\n return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\n}\n/**\n * Helper function for constructing the Token object.\n */\n\nfunction Tok(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\ndefineToJSON(Tok, function () {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n});\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = positionAfterWhitespace(body, prev.end, lexer);\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n\n if (pos >= bodyLength) {\n return new Tok(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n }\n\n var code = body.charCodeAt(pos); // SourceCharacter\n\n switch (code) {\n // !\n case 33:\n return new Tok(TokenKind.BANG, pos, pos + 1, line, col, prev);\n // #\n\n case 35:\n return readComment(source, pos, line, col, prev);\n // $\n\n case 36:\n return new Tok(TokenKind.DOLLAR, pos, pos + 1, line, col, prev);\n // &\n\n case 38:\n return new Tok(TokenKind.AMP, pos, pos + 1, line, col, prev);\n // (\n\n case 40:\n return new Tok(TokenKind.PAREN_L, pos, pos + 1, line, col, prev);\n // )\n\n case 41:\n return new Tok(TokenKind.PAREN_R, pos, pos + 1, line, col, prev);\n // .\n\n case 46:\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Tok(TokenKind.SPREAD, pos, pos + 3, line, col, prev);\n }\n\n break;\n // :\n\n case 58:\n return new Tok(TokenKind.COLON, pos, pos + 1, line, col, prev);\n // =\n\n case 61:\n return new Tok(TokenKind.EQUALS, pos, pos + 1, line, col, prev);\n // @\n\n case 64:\n return new Tok(TokenKind.AT, pos, pos + 1, line, col, prev);\n // [\n\n case 91:\n return new Tok(TokenKind.BRACKET_L, pos, pos + 1, line, col, prev);\n // ]\n\n case 93:\n return new Tok(TokenKind.BRACKET_R, pos, pos + 1, line, col, prev);\n // {\n\n case 123:\n return new Tok(TokenKind.BRACE_L, pos, pos + 1, line, col, prev);\n // |\n\n case 124:\n return new Tok(TokenKind.PIPE, pos, pos + 1, line, col, prev);\n // }\n\n case 125:\n return new Tok(TokenKind.BRACE_R, pos, pos + 1, line, col, prev);\n // A-Z _ a-z\n\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 95:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n return readName(source, pos, line, col, prev);\n // - 0-9\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n return readNumber(source, pos, code, line, col, prev);\n // \"\n\n case 34:\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, line, col, prev, lexer);\n }\n\n return readString(source, pos, line, col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads from body starting at startPosition until it finds a non-whitespace\n * character, then returns the position of that character for lexing.\n */\n\n\nfunction positionAfterWhitespace(body, startPosition, lexer) {\n var bodyLength = body.length;\n var position = startPosition;\n\n while (position < bodyLength) {\n var code = body.charCodeAt(position); // tab | space | comma | BOM\n\n if (code === 9 || code === 32 || code === 44 || code === 0xfeff) {\n ++position;\n } else if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else {\n break;\n }\n }\n\n return position;\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Tok(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or e\n\n\n if (code === 46 || code === 69 || code === 101) {\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new Tok(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Tok(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Tok(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Tok(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n}\n","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n","import inspect from '../jsutils/inspect';\nimport devAssert from '../jsutils/devAssert';\nimport defineToJSON from '../jsutils/defineToJSON';\nimport { syntaxError } from '../error/syntaxError';\nimport { Kind } from './kinds';\nimport { Source } from './source';\nimport { createLexer } from './lexer';\nimport { DirectiveLocation } from './directiveLocation';\nimport { TokenKind } from './tokenKind';\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n\nvar Parser =\n/*#__PURE__*/\nfunction () {\n function Parser(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n sourceObj instanceof Source || devAssert(0, \"Must provide Source. Received: \".concat(inspect(sourceObj)));\n this._lexer = createLexer(sourceObj);\n this._options = options || {};\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (this._options.experimentalFragmentVariables) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n if (token.value === 'true' || token.value === 'false') {\n this._lexer.advance();\n\n return {\n kind: Kind.BOOLEAN,\n value: token.value === 'true',\n loc: this.loc(token)\n };\n } else if (token.value === 'null') {\n this._lexer.advance();\n\n return {\n kind: Kind.NULL,\n loc: this.loc(token)\n };\n }\n\n this._lexer.advance();\n\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var types = [];\n\n if (this.expectOptionalKeyword('implements')) {\n // Optional leading ampersand\n this.expectOptionalToken(TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.AMP) || // Legacy support for the SDL?\n this._options.allowLegacySDLImplementsInterfaces && this.peek(TokenKind.NAME));\n }\n\n return types;\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n // Legacy support for the SDL?\n if (this._options.allowLegacySDLEmptyFields && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n var types = [];\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n // Optional leading pipe\n this.expectOptionalToken(TokenKind.PIPE);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.PIPE));\n }\n\n return types;\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name Directives[Const]? FieldsDefinition\n * - extend interface Name Directives[Const]\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n // Optional leading pipe\n this.expectOptionalToken(TokenKind.PIPE);\n var locations = [];\n\n do {\n locations.push(this.parseDirectiveLocation());\n } while (this.expectOptionalToken(TokenKind.PIPE));\n\n return locations;\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in\n * the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n if (!this._options.noLocation) {\n return new Loc(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(kind, \", found \").concat(getTokenDesc(token)));\n }\n /**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token)));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing\n * the lexer. Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token\n * is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken || this._lexer.token;\n return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token)));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always\n * return non-empty list that begins with a lex token of openKind and ends\n * with a lex token of closeKind. Advances the parser to the next lex token\n * after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n\nfunction Loc(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\ndefineToJSON(Loc, function () {\n return {\n start: this.start,\n end: this.end\n };\n});\n/**\n * A helper function to describe a token as a string for debugging\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return value ? \"\".concat(token.kind, \" \\\"\").concat(value, \"\\\"\") : token.kind;\n}\n","import inspect from '../jsutils/inspect';\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error('Invalid AST Node: ' + inspect(node));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : visitorKeys[node.kind] || [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n\nfunction isNode(maybeNode) {\n return Boolean(maybeNode && typeof maybeNode.kind === 'string');\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nexport function visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","/* eslint-disable no-redeclare */\n// $FlowFixMe\nvar find = Array.prototype.find ? function (list, predicate) {\n return Array.prototype.find.call(list, predicate);\n} : function (list, predicate) {\n for (var _i2 = 0; _i2 < list.length; _i2++) {\n var value = list[_i2];\n\n if (predicate(value)) {\n return value;\n }\n }\n};\nexport default find;\n","// Workaround to make older Flow versions happy\nvar flatMapMethod = Array.prototype.flatMap;\n/* eslint-disable no-redeclare */\n// $FlowFixMe\n\nvar flatMap = flatMapMethod ? function (list, fn) {\n return flatMapMethod.call(list, fn);\n} : function (list, fn) {\n var result = [];\n\n for (var _i2 = 0; _i2 < list.length; _i2++) {\n var _item = list[_i2];\n var value = fn(_item);\n\n if (Array.isArray(value)) {\n result = result.concat(value);\n } else {\n result.push(value);\n }\n }\n\n return result;\n};\nexport default flatMap;\n","/* eslint-disable no-redeclare */\n// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/2221\nvar objectValues = Object.values || function (obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n};\n\nexport default objectValues;\n","/* eslint-disable no-redeclare */\n// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/5838\nvar objectEntries = Object.entries || function (obj) {\n return Object.keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n};\n\nexport default objectEntries;\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n // $FlowFixMe(>=0.90.0)\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","import devAssert from '../jsutils/devAssert';\nimport { GraphQLError } from '../error/GraphQLError';\nvar NAME_RX = /^[_a-zA-Z][_a-zA-Z0-9]*$/;\n/**\n * Upholds the spec rules about naming.\n */\n\nexport function assertValidName(name) {\n var error = isValidNameError(name);\n\n if (error) {\n throw error;\n }\n\n return name;\n}\n/**\n * Returns an Error if a name is invalid.\n */\n\nexport function isValidNameError(name, node) {\n typeof name === 'string' || devAssert(0, 'Expected string');\n\n if (name.length > 1 && name[0] === '_' && name[1] === '_') {\n return new GraphQLError(\"Name \\\"\".concat(name, \"\\\" must not begin with \\\"__\\\", which is reserved by GraphQL introspection.\"), node);\n }\n\n if (!NAME_RX.test(name)) {\n return new GraphQLError(\"Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but \\\"\".concat(name, \"\\\" does not.\"), node);\n }\n}\n","/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n *\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: { name: 'Jon', num: '555-1234' },\n * // Jenny: { name: 'Jenny', num: '867-5309' } }\n * const entriesByName = keyMap(\n * phoneBook,\n * entry => entry.name\n * )\n *\n * // { name: 'Jenny', num: '857-6309' }\n * const jennyEntry = entriesByName['Jenny']\n *\n */\nexport default function keyMap(list, keyFn) {\n return list.reduce(function (map, item) {\n map[keyFn(item)] = item;\n return map;\n }, Object.create(null));\n}\n","import objectEntries from '../polyfills/objectEntries';\n\n/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\nexport default function mapValue(map, fn) {\n var result = Object.create(null);\n\n for (var _i2 = 0, _objectEntries2 = objectEntries(map); _i2 < _objectEntries2.length; _i2++) {\n var _ref2 = _objectEntries2[_i2];\n var _key = _ref2[0];\n var _value = _ref2[1];\n result[_key] = fn(_value, _key);\n }\n\n return result;\n}\n","import objectEntries from '../polyfills/objectEntries';\nexport default function toObjMap(obj) {\n /* eslint-enable no-redeclare */\n if (Object.getPrototypeOf(obj) === null) {\n return obj;\n }\n\n var map = Object.create(null);\n\n for (var _i2 = 0, _objectEntries2 = objectEntries(obj); _i2 < _objectEntries2.length; _i2++) {\n var _ref2 = _objectEntries2[_i2];\n var key = _ref2[0];\n var value = _ref2[1];\n map[key] = value;\n }\n\n return map;\n}\n","/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n *\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n * phoneBook,\n * entry => entry.name,\n * entry => entry.num\n * )\n *\n */\nexport default function keyValMap(list, keyFn, valFn) {\n return list.reduce(function (map, item) {\n map[keyFn(item)] = valFn(item);\n return map;\n }, Object.create(null));\n}\n","/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n */\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nexport default process.env.NODE_ENV === 'production' ? // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n return value instanceof constructor;\n} : // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (value) {\n var valueClass = value.constructor;\n var className = constructor.name;\n\n if (className && valueClass && valueClass.name === className) {\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(value, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n\n return false;\n};\n","/**\n * Returns the first argument it receives.\n */\nexport default function identityFunc(x) {\n return x;\n}\n","export default function invariant(condition, message) {\n var booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message || 'Unexpected invariant triggered');\n }\n}\n","/**\n * Returns true if a value is undefined, or NaN.\n */\nexport default function isInvalid(value) {\n return value === undefined || value !== value;\n}\n","import inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport keyValMap from '../jsutils/keyValMap';\nimport isInvalid from '../jsutils/isInvalid';\nimport { Kind } from '../language/kinds';\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value\n * will reflect the provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\nexport function valueFromASTUntyped(valueNode, variables) {\n switch (valueNode.kind) {\n case Kind.NULL:\n return null;\n\n case Kind.INT:\n return parseInt(valueNode.value, 10);\n\n case Kind.FLOAT:\n return parseFloat(valueNode.value);\n\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return valueNode.value;\n\n case Kind.LIST:\n return valueNode.values.map(function (node) {\n return valueFromASTUntyped(node, variables);\n });\n\n case Kind.OBJECT:\n return keyValMap(valueNode.fields, function (field) {\n return field.name.value;\n }, function (field) {\n return valueFromASTUntyped(field.value, variables);\n });\n\n case Kind.VARIABLE:\n {\n var variableName = valueNode.name.value;\n return variables && !isInvalid(variables[variableName]) ? variables[variableName] : undefined;\n }\n } // Not reachable. All possible value nodes have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected value node: ' + inspect(valueNode));\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport objectEntries from '../polyfills/objectEntries';\nimport inspect from '../jsutils/inspect';\nimport keyMap from '../jsutils/keyMap';\nimport mapValue from '../jsutils/mapValue';\nimport toObjMap from '../jsutils/toObjMap';\nimport devAssert from '../jsutils/devAssert';\nimport keyValMap from '../jsutils/keyValMap';\nimport instanceOf from '../jsutils/instanceOf';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport identityFunc from '../jsutils/identityFunc';\nimport defineToJSON from '../jsutils/defineToJSON';\nimport defineToStringTag from '../jsutils/defineToStringTag';\nimport { Kind } from '../language/kinds';\nimport { valueFromASTUntyped } from '../utilities/valueFromASTUntyped';\nexport function isType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type) || isListType(type) || isNonNullType(type);\n}\nexport function assertType(type) {\n if (!isType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL type.\"));\n }\n\n return type;\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isScalarType(type) {\n return instanceOf(type, GraphQLScalarType);\n}\nexport function assertScalarType(type) {\n if (!isScalarType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Scalar type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nexport function isObjectType(type) {\n return instanceOf(type, GraphQLObjectType);\n}\nexport function assertObjectType(type) {\n if (!isObjectType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Object type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nexport function isInterfaceType(type) {\n return instanceOf(type, GraphQLInterfaceType);\n}\nexport function assertInterfaceType(type) {\n if (!isInterfaceType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Interface type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nexport function isUnionType(type) {\n return instanceOf(type, GraphQLUnionType);\n}\nexport function assertUnionType(type) {\n if (!isUnionType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Union type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nexport function isEnumType(type) {\n return instanceOf(type, GraphQLEnumType);\n}\nexport function assertEnumType(type) {\n if (!isEnumType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Enum type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nexport function isInputObjectType(type) {\n return instanceOf(type, GraphQLInputObjectType);\n}\nexport function assertInputObjectType(type) {\n if (!isInputObjectType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Input Object type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nexport function isListType(type) {\n return instanceOf(type, GraphQLList);\n}\nexport function assertListType(type) {\n if (!isListType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL List type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nexport function isNonNullType(type) {\n return instanceOf(type, GraphQLNonNull);\n}\nexport function assertNonNullType(type) {\n if (!isNonNullType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Non-Null type.\"));\n }\n\n return type;\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nexport function isInputType(type) {\n return isScalarType(type) || isEnumType(type) || isInputObjectType(type) || isWrappingType(type) && isInputType(type.ofType);\n}\nexport function assertInputType(type) {\n if (!isInputType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL input type.\"));\n }\n\n return type;\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nexport function isOutputType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isWrappingType(type) && isOutputType(type.ofType);\n}\nexport function assertOutputType(type) {\n if (!isOutputType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL output type.\"));\n }\n\n return type;\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nexport function isLeafType(type) {\n return isScalarType(type) || isEnumType(type);\n}\nexport function assertLeafType(type) {\n if (!isLeafType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL leaf type.\"));\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nexport function isCompositeType(type) {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\nexport function assertCompositeType(type) {\n if (!isCompositeType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL composite type.\"));\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nexport function isAbstractType(type) {\n return isInterfaceType(type) || isUnionType(type);\n}\nexport function assertAbstractType(type) {\n if (!isAbstractType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL abstract type.\"));\n }\n\n return type;\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * parents: { type: GraphQLList(PersonType) },\n * children: { type: GraphQLList(PersonType) },\n * })\n * })\n *\n */\n\n// eslint-disable-next-line no-redeclare\nexport function GraphQLList(ofType) {\n if (this instanceof GraphQLList) {\n this.ofType = assertType(ofType);\n } else {\n return new GraphQLList(ofType);\n }\n} // Need to cast through any to alter the prototype.\n\nGraphQLList.prototype.toString = function toString() {\n return '[' + String(this.ofType) + ']';\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\n\ndefineToStringTag(GraphQLList);\ndefineToJSON(GraphQLList);\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * const RowType = new GraphQLObjectType({\n * name: 'Row',\n * fields: () => ({\n * id: { type: GraphQLNonNull(GraphQLString) },\n * })\n * })\n *\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n\n// eslint-disable-next-line no-redeclare\nexport function GraphQLNonNull(ofType) {\n if (this instanceof GraphQLNonNull) {\n this.ofType = assertNullableType(ofType);\n } else {\n return new GraphQLNonNull(ofType);\n }\n} // Need to cast through any to alter the prototype.\n\nGraphQLNonNull.prototype.toString = function toString() {\n return String(this.ofType) + '!';\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\n\ndefineToStringTag(GraphQLNonNull);\ndefineToJSON(GraphQLNonNull);\n/**\n * These types wrap and modify other types\n */\n\nexport function isWrappingType(type) {\n return isListType(type) || isNonNullType(type);\n}\nexport function assertWrappingType(type) {\n if (!isWrappingType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL wrapping type.\"));\n }\n\n return type;\n}\n/**\n * These types can all accept null as a value.\n */\n\nexport function isNullableType(type) {\n return isType(type) && !isNonNullType(type);\n}\nexport function assertNullableType(type) {\n if (!isNullableType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL nullable type.\"));\n }\n\n return type;\n}\n/* eslint-disable no-redeclare */\n\nexport function getNullableType(type) {\n /* eslint-enable no-redeclare */\n if (type) {\n return isNonNullType(type) ? type.ofType : type;\n }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nexport function isNamedType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type);\n}\nexport function assertNamedType(type) {\n if (!isNamedType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL named type.\"));\n }\n\n return type;\n}\n/* eslint-disable no-redeclare */\n\nexport function getNamedType(type) {\n /* eslint-enable no-redeclare */\n if (type) {\n var unwrappedType = type;\n\n while (isWrappingType(unwrappedType)) {\n unwrappedType = unwrappedType.ofType;\n }\n\n return unwrappedType;\n }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nfunction resolveThunk(thunk) {\n // $FlowFixMe(>=0.90.0)\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n\nfunction undefineIfEmpty(arr) {\n return arr && arr.length > 0 ? arr : undefined;\n}\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function does not return a value (i.e. it returns\n * `undefined`) then an error will be raised and a `null` value will be returned\n * in the response. If the serialize function returns `null`, then no error will\n * be included in the response.\n *\n * Example:\n *\n * const OddType = new GraphQLScalarType({\n * name: 'Odd',\n * serialize(value) {\n * if (value % 2 === 1) {\n * return value;\n * }\n * }\n * });\n *\n */\n\n\nexport var GraphQLScalarType =\n/*#__PURE__*/\nfunction () {\n function GraphQLScalarType(config) {\n var parseValue = config.parseValue || identityFunc;\n this.name = config.name;\n this.description = config.description;\n this.serialize = config.serialize || identityFunc;\n this.parseValue = parseValue;\n\n this.parseLiteral = config.parseLiteral || function (node) {\n return parseValue(valueFromASTUntyped(node));\n };\n\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n config.serialize == null || typeof config.serialize === 'function' || devAssert(0, \"\".concat(this.name, \" must provide \\\"serialize\\\" function. If this custom Scalar is also used as an input type, ensure \\\"parseValue\\\" and \\\"parseLiteral\\\" functions are also provided.\"));\n\n if (config.parseLiteral) {\n typeof config.parseValue === 'function' && typeof config.parseLiteral === 'function' || devAssert(0, \"\".concat(this.name, \" must provide both \\\"parseValue\\\" and \\\"parseLiteral\\\" functions.\"));\n }\n }\n\n var _proto = GraphQLScalarType.prototype;\n\n _proto.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto.toString = function toString() {\n return this.name;\n };\n\n return GraphQLScalarType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLScalarType);\ndefineToJSON(GraphQLScalarType);\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * const AddressType = new GraphQLObjectType({\n * name: 'Address',\n * fields: {\n * street: { type: GraphQLString },\n * number: { type: GraphQLInt },\n * formatted: {\n * type: GraphQLString,\n * resolve(obj) {\n * return obj.number + ' ' + obj.street\n * }\n * }\n * }\n * });\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * name: { type: GraphQLString },\n * bestFriend: { type: PersonType },\n * })\n * });\n *\n */\nexport var GraphQLObjectType =\n/*#__PURE__*/\nfunction () {\n function GraphQLObjectType(config) {\n this.name = config.name;\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._fields = defineFieldMap.bind(undefined, config);\n this._interfaces = defineInterfaces.bind(undefined, config);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n config.isTypeOf == null || typeof config.isTypeOf === 'function' || devAssert(0, \"\".concat(this.name, \" must provide \\\"isTypeOf\\\" as a function, \") + \"but got: \".concat(inspect(config.isTypeOf), \".\"));\n }\n\n var _proto2 = GraphQLObjectType.prototype;\n\n _proto2.getFields = function getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n };\n\n _proto2.getInterfaces = function getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n };\n\n _proto2.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto2.toString = function toString() {\n return this.name;\n };\n\n return GraphQLObjectType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLObjectType);\ndefineToJSON(GraphQLObjectType);\n\nfunction defineInterfaces(config) {\n var interfaces = resolveThunk(config.interfaces) || [];\n Array.isArray(interfaces) || devAssert(0, \"\".concat(config.name, \" interfaces must be an Array or a function which returns an Array.\"));\n return interfaces;\n}\n\nfunction defineFieldMap(config) {\n var fieldMap = resolveThunk(config.fields) || {};\n isPlainObj(fieldMap) || devAssert(0, \"\".concat(config.name, \" fields must be an object with field names as keys or a function which returns such an object.\"));\n return mapValue(fieldMap, function (fieldConfig, fieldName) {\n isPlainObj(fieldConfig) || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" field config must be an object\"));\n !('isDeprecated' in fieldConfig) || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" should provide \\\"deprecationReason\\\" instead of \\\"isDeprecated\\\".\"));\n fieldConfig.resolve == null || typeof fieldConfig.resolve === 'function' || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" field resolver must be a function if \") + \"provided, but got: \".concat(inspect(fieldConfig.resolve), \".\"));\n var argsConfig = fieldConfig.args || {};\n isPlainObj(argsConfig) || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" args must be an object with argument names as keys.\"));\n var args = objectEntries(argsConfig).map(function (_ref) {\n var argName = _ref[0],\n arg = _ref[1];\n return {\n name: argName,\n description: arg.description === undefined ? null : arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n extensions: arg.extensions && toObjMap(arg.extensions),\n astNode: arg.astNode\n };\n });\n return _objectSpread({}, fieldConfig, {\n name: fieldName,\n description: fieldConfig.description,\n type: fieldConfig.type,\n args: args,\n resolve: fieldConfig.resolve,\n subscribe: fieldConfig.subscribe,\n isDeprecated: Boolean(fieldConfig.deprecationReason),\n deprecationReason: fieldConfig.deprecationReason,\n extensions: fieldConfig.extensions && toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode\n });\n });\n}\n\nfunction isPlainObj(obj) {\n return isObjectLike(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n return mapValue(fields, function (field) {\n return {\n description: field.description,\n type: field.type,\n args: argsToArgsConfig(field.args),\n resolve: field.resolve,\n subscribe: field.subscribe,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode\n };\n });\n}\n\nexport function argsToArgsConfig(args) {\n return keyValMap(args, function (arg) {\n return arg.name;\n }, function (arg) {\n return {\n description: arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n extensions: arg.extensions,\n astNode: arg.astNode\n };\n });\n}\nexport function isRequiredArgument(arg) {\n return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * const EntityType = new GraphQLInterfaceType({\n * name: 'Entity',\n * fields: {\n * name: { type: GraphQLString }\n * }\n * });\n *\n */\nexport var GraphQLInterfaceType =\n/*#__PURE__*/\nfunction () {\n function GraphQLInterfaceType(config) {\n this.name = config.name;\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._fields = defineFieldMap.bind(undefined, config);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n config.resolveType == null || typeof config.resolveType === 'function' || devAssert(0, \"\".concat(this.name, \" must provide \\\"resolveType\\\" as a function, \") + \"but got: \".concat(inspect(config.resolveType), \".\"));\n }\n\n var _proto3 = GraphQLInterfaceType.prototype;\n\n _proto3.getFields = function getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n };\n\n _proto3.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n fields: fieldsToFieldsConfig(this.getFields()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto3.toString = function toString() {\n return this.name;\n };\n\n return GraphQLInterfaceType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLInterfaceType);\ndefineToJSON(GraphQLInterfaceType);\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * const PetType = new GraphQLUnionType({\n * name: 'Pet',\n * types: [ DogType, CatType ],\n * resolveType(value) {\n * if (value instanceof Dog) {\n * return DogType;\n * }\n * if (value instanceof Cat) {\n * return CatType;\n * }\n * }\n * });\n *\n */\nexport var GraphQLUnionType =\n/*#__PURE__*/\nfunction () {\n function GraphQLUnionType(config) {\n this.name = config.name;\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._types = defineTypes.bind(undefined, config);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n config.resolveType == null || typeof config.resolveType === 'function' || devAssert(0, \"\".concat(this.name, \" must provide \\\"resolveType\\\" as a function, \") + \"but got: \".concat(inspect(config.resolveType), \".\"));\n }\n\n var _proto4 = GraphQLUnionType.prototype;\n\n _proto4.getTypes = function getTypes() {\n if (typeof this._types === 'function') {\n this._types = this._types();\n }\n\n return this._types;\n };\n\n _proto4.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto4.toString = function toString() {\n return this.name;\n };\n\n return GraphQLUnionType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLUnionType);\ndefineToJSON(GraphQLUnionType);\n\nfunction defineTypes(config) {\n var types = resolveThunk(config.types) || [];\n Array.isArray(types) || devAssert(0, \"Must provide Array of types or a function which returns such an array for Union \".concat(config.name, \".\"));\n return types;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * const RGBType = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 }\n * }\n * });\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nexport var GraphQLEnumType\n/* */\n=\n/*#__PURE__*/\nfunction () {\n function GraphQLEnumType(config) {\n this.name = config.name;\n this.description = config.description;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._values = defineEnumValues(this.name, config.values);\n this._valueLookup = new Map(this._values.map(function (enumValue) {\n return [enumValue.value, enumValue];\n }));\n this._nameLookup = keyMap(this._values, function (value) {\n return value.name;\n });\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n }\n\n var _proto5 = GraphQLEnumType.prototype;\n\n _proto5.getValues = function getValues() {\n return this._values;\n };\n\n _proto5.getValue = function getValue(name) {\n return this._nameLookup[name];\n };\n\n _proto5.serialize = function serialize(value) {\n var enumValue = this._valueLookup.get(value);\n\n if (enumValue) {\n return enumValue.name;\n }\n };\n\n _proto5.parseValue = function parseValue(value)\n /* T */\n {\n if (typeof value === 'string') {\n var enumValue = this.getValue(value);\n\n if (enumValue) {\n return enumValue.value;\n }\n }\n };\n\n _proto5.parseLiteral = function parseLiteral(valueNode, _variables)\n /* T */\n {\n // Note: variables will be resolved to a value before calling this function.\n if (valueNode.kind === Kind.ENUM) {\n var enumValue = this.getValue(valueNode.value);\n\n if (enumValue) {\n return enumValue.value;\n }\n }\n };\n\n _proto5.toConfig = function toConfig() {\n var values = keyValMap(this.getValues(), function (value) {\n return value.name;\n }, function (value) {\n return {\n description: value.description,\n value: value.value,\n deprecationReason: value.deprecationReason,\n extensions: value.extensions,\n astNode: value.astNode\n };\n });\n return {\n name: this.name,\n description: this.description,\n values: values,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto5.toString = function toString() {\n return this.name;\n };\n\n return GraphQLEnumType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLEnumType);\ndefineToJSON(GraphQLEnumType);\n\nfunction defineEnumValues(typeName, valueMap) {\n isPlainObj(valueMap) || devAssert(0, \"\".concat(typeName, \" values must be an object with value names as keys.\"));\n return objectEntries(valueMap).map(function (_ref2) {\n var valueName = _ref2[0],\n value = _ref2[1];\n isPlainObj(value) || devAssert(0, \"\".concat(typeName, \".\").concat(valueName, \" must refer to an object with a \\\"value\\\" key \") + \"representing an internal value but got: \".concat(inspect(value), \".\"));\n !('isDeprecated' in value) || devAssert(0, \"\".concat(typeName, \".\").concat(valueName, \" should provide \\\"deprecationReason\\\" instead of \\\"isDeprecated\\\".\"));\n return {\n name: valueName,\n description: value.description,\n value: 'value' in value ? value.value : valueName,\n isDeprecated: Boolean(value.deprecationReason),\n deprecationReason: value.deprecationReason,\n extensions: value.extensions && toObjMap(value.extensions),\n astNode: value.astNode\n };\n });\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * const GeoPoint = new GraphQLInputObjectType({\n * name: 'GeoPoint',\n * fields: {\n * lat: { type: GraphQLNonNull(GraphQLFloat) },\n * lon: { type: GraphQLNonNull(GraphQLFloat) },\n * alt: { type: GraphQLFloat, defaultValue: 0 },\n * }\n * });\n *\n */\nexport var GraphQLInputObjectType =\n/*#__PURE__*/\nfunction () {\n function GraphQLInputObjectType(config) {\n this.name = config.name;\n this.description = config.description;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._fields = defineInputFieldMap.bind(undefined, config);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n }\n\n var _proto6 = GraphQLInputObjectType.prototype;\n\n _proto6.getFields = function getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n };\n\n _proto6.toConfig = function toConfig() {\n var fields = mapValue(this.getFields(), function (field) {\n return {\n description: field.description,\n type: field.type,\n defaultValue: field.defaultValue,\n extensions: field.extensions,\n astNode: field.astNode\n };\n });\n return {\n name: this.name,\n description: this.description,\n fields: fields,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto6.toString = function toString() {\n return this.name;\n };\n\n return GraphQLInputObjectType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLInputObjectType);\ndefineToJSON(GraphQLInputObjectType);\n\nfunction defineInputFieldMap(config) {\n var fieldMap = resolveThunk(config.fields) || {};\n isPlainObj(fieldMap) || devAssert(0, \"\".concat(config.name, \" fields must be an object with field names as keys or a function which returns such an object.\"));\n return mapValue(fieldMap, function (fieldConfig, fieldName) {\n !('resolve' in fieldConfig) || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" field has a resolve property, but Input Types cannot define resolvers.\"));\n return _objectSpread({}, fieldConfig, {\n name: fieldName,\n description: fieldConfig.description,\n type: fieldConfig.type,\n defaultValue: fieldConfig.defaultValue,\n extensions: fieldConfig.extensions && toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode\n });\n });\n}\n\nexport function isRequiredInputField(field) {\n return isNonNullType(field.type) && field.defaultValue === undefined;\n}\n","import { isObjectType, isListType, isNonNullType, isAbstractType } from '../type/definition';\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\n\nexport function isEqualType(typeA, typeB) {\n // Equivalent types are equal.\n if (typeA === typeB) {\n return true;\n } // If either type is non-null, the other must also be non-null.\n\n\n if (isNonNullType(typeA) && isNonNullType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // If either type is a list, the other must also be a list.\n\n\n if (isListType(typeA) && isListType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // Otherwise the types are not equal.\n\n\n return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nexport function isTypeSubTypeOf(schema, maybeSubType, superType) {\n // Equivalent type is a valid subtype\n if (maybeSubType === superType) {\n return true;\n } // If superType is non-null, maybeSubType must also be non-null.\n\n\n if (isNonNullType(superType)) {\n if (isNonNullType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isNonNullType(maybeSubType)) {\n // If superType is nullable, maybeSubType may be non-null or nullable.\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n } // If superType type is a list, maybeSubType type must also be a list.\n\n\n if (isListType(superType)) {\n if (isListType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isListType(maybeSubType)) {\n // If superType is not a list, maybeSubType must also be not a list.\n return false;\n } // If superType type is an abstract type, maybeSubType type may be a currently\n // possible object type.\n\n\n if (isAbstractType(superType) && isObjectType(maybeSubType) && schema.isPossibleType(superType, maybeSubType)) {\n return true;\n } // Otherwise, the child type is not a valid subtype of the parent type.\n\n\n return false;\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nexport function doTypesOverlap(schema, typeA, typeB) {\n // Equivalent types overlap\n if (typeA === typeB) {\n return true;\n }\n\n if (isAbstractType(typeA)) {\n if (isAbstractType(typeB)) {\n // If both types are abstract, then determine if there is any intersection\n // between possible concrete types of each.\n return schema.getPossibleTypes(typeA).some(function (type) {\n return schema.isPossibleType(typeB, type);\n });\n } // Determine if the latter type is a possible concrete type of the former.\n\n\n return schema.isPossibleType(typeA, typeB);\n }\n\n if (isAbstractType(typeB)) {\n // Determine if the former type is a possible concrete type of the latter.\n return schema.isPossibleType(typeB, typeA);\n } // Otherwise the types do not overlap.\n\n\n return false;\n}\n","/* eslint-disable no-redeclare */\n// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441\nvar isFinitePolyfill = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value);\n};\n\nexport default isFinitePolyfill;\n","/* eslint-disable no-redeclare */\n// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441\nvar isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n};\n\nexport default isInteger;\n","import isFinite from '../polyfills/isFinite';\nimport isInteger from '../polyfills/isInteger';\nimport inspect from '../jsutils/inspect';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport { Kind } from '../language/kinds';\nimport { GraphQLScalarType, isScalarType } from './definition'; // As per the GraphQL Spec, Integers are only treated as valid when a valid\n// 32-bit signed integer, providing the broadest support across platforms.\n//\n// n.b. JavaScript's integers are safe between -(2^53 - 1) and 2^53 - 1 because\n// they are internally represented as IEEE 754 doubles.\n\nvar MAX_INT = 2147483647;\nvar MIN_INT = -2147483648;\n\nfunction serializeInt(value) {\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n\n var num = value;\n\n if (typeof value === 'string' && value !== '') {\n num = Number(value);\n }\n\n if (!isInteger(num)) {\n throw new TypeError(\"Int cannot represent non-integer value: \".concat(inspect(value)));\n }\n\n if (num > MAX_INT || num < MIN_INT) {\n throw new TypeError(\"Int cannot represent non 32-bit signed integer value: \".concat(inspect(value)));\n }\n\n return num;\n}\n\nfunction coerceInt(value) {\n if (!isInteger(value)) {\n throw new TypeError(\"Int cannot represent non-integer value: \".concat(inspect(value)));\n }\n\n if (value > MAX_INT || value < MIN_INT) {\n throw new TypeError(\"Int cannot represent non 32-bit signed integer value: \".concat(inspect(value)));\n }\n\n return value;\n}\n\nexport var GraphQLInt = new GraphQLScalarType({\n name: 'Int',\n description: 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n serialize: serializeInt,\n parseValue: coerceInt,\n parseLiteral: function parseLiteral(ast) {\n if (ast.kind === Kind.INT) {\n var num = parseInt(ast.value, 10);\n\n if (num <= MAX_INT && num >= MIN_INT) {\n return num;\n }\n }\n\n return undefined;\n }\n});\n\nfunction serializeFloat(value) {\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n\n var num = value;\n\n if (typeof value === 'string' && value !== '') {\n num = Number(value);\n }\n\n if (!isFinite(num)) {\n throw new TypeError(\"Float cannot represent non numeric value: \".concat(inspect(value)));\n }\n\n return num;\n}\n\nfunction coerceFloat(value) {\n if (!isFinite(value)) {\n throw new TypeError(\"Float cannot represent non numeric value: \".concat(inspect(value)));\n }\n\n return value;\n}\n\nexport var GraphQLFloat = new GraphQLScalarType({\n name: 'Float',\n description: 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n serialize: serializeFloat,\n parseValue: coerceFloat,\n parseLiteral: function parseLiteral(ast) {\n return ast.kind === Kind.FLOAT || ast.kind === Kind.INT ? parseFloat(ast.value) : undefined;\n }\n}); // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(value) {\n if (isObjectLike(value)) {\n if (typeof value.valueOf === 'function') {\n var valueOfResult = value.valueOf();\n\n if (!isObjectLike(valueOfResult)) {\n return valueOfResult;\n }\n }\n\n if (typeof value.toJSON === 'function') {\n // $FlowFixMe(>=0.90.0)\n return value.toJSON();\n }\n }\n\n return value;\n}\n\nfunction serializeString(rawValue) {\n var value = serializeObject(rawValue); // Serialize string, boolean and number values to a string, but do not\n // attempt to coerce object, function, symbol, or other types as strings.\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false';\n }\n\n if (isFinite(value)) {\n return value.toString();\n }\n\n throw new TypeError(\"String cannot represent value: \".concat(inspect(rawValue)));\n}\n\nfunction coerceString(value) {\n if (typeof value !== 'string') {\n throw new TypeError(\"String cannot represent a non string value: \".concat(inspect(value)));\n }\n\n return value;\n}\n\nexport var GraphQLString = new GraphQLScalarType({\n name: 'String',\n description: 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n serialize: serializeString,\n parseValue: coerceString,\n parseLiteral: function parseLiteral(ast) {\n return ast.kind === Kind.STRING ? ast.value : undefined;\n }\n});\n\nfunction serializeBoolean(value) {\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (isFinite(value)) {\n return value !== 0;\n }\n\n throw new TypeError(\"Boolean cannot represent a non boolean value: \".concat(inspect(value)));\n}\n\nfunction coerceBoolean(value) {\n if (typeof value !== 'boolean') {\n throw new TypeError(\"Boolean cannot represent a non boolean value: \".concat(inspect(value)));\n }\n\n return value;\n}\n\nexport var GraphQLBoolean = new GraphQLScalarType({\n name: 'Boolean',\n description: 'The `Boolean` scalar type represents `true` or `false`.',\n serialize: serializeBoolean,\n parseValue: coerceBoolean,\n parseLiteral: function parseLiteral(ast) {\n return ast.kind === Kind.BOOLEAN ? ast.value : undefined;\n }\n});\n\nfunction serializeID(rawValue) {\n var value = serializeObject(rawValue);\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (isInteger(value)) {\n return String(value);\n }\n\n throw new TypeError(\"ID cannot represent value: \".concat(inspect(rawValue)));\n}\n\nfunction coerceID(value) {\n if (typeof value === 'string') {\n return value;\n }\n\n if (isInteger(value)) {\n return value.toString();\n }\n\n throw new TypeError(\"ID cannot represent value: \".concat(inspect(value)));\n}\n\nexport var GraphQLID = new GraphQLScalarType({\n name: 'ID',\n description: 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n serialize: serializeID,\n parseValue: coerceID,\n parseLiteral: function parseLiteral(ast) {\n return ast.kind === Kind.STRING || ast.kind === Kind.INT ? ast.value : undefined;\n }\n});\nexport var specifiedScalarTypes = Object.freeze([GraphQLString, GraphQLInt, GraphQLFloat, GraphQLBoolean, GraphQLID]);\nexport function isSpecifiedScalarType(type) {\n return isScalarType(type) && specifiedScalarTypes.some(function (_ref) {\n var name = _ref.name;\n return type.name === name;\n });\n}\n","import objectEntries from '../polyfills/objectEntries';\nimport inspect from '../jsutils/inspect';\nimport toObjMap from '../jsutils/toObjMap';\nimport devAssert from '../jsutils/devAssert';\nimport instanceOf from '../jsutils/instanceOf';\nimport defineToJSON from '../jsutils/defineToJSON';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport defineToStringTag from '../jsutils/defineToStringTag';\nimport { DirectiveLocation } from '../language/directiveLocation';\nimport { GraphQLString, GraphQLBoolean } from './scalars';\nimport { argsToArgsConfig, GraphQLNonNull } from './definition';\n/**\n * Test if the given value is a GraphQL directive.\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isDirective(directive) {\n return instanceOf(directive, GraphQLDirective);\n}\nexport function assertDirective(directive) {\n if (!isDirective(directive)) {\n throw new Error(\"Expected \".concat(inspect(directive), \" to be a GraphQL directive.\"));\n }\n\n return directive;\n}\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\n\nexport var GraphQLDirective =\n/*#__PURE__*/\nfunction () {\n function GraphQLDirective(config) {\n this.name = config.name;\n this.description = config.description;\n this.locations = config.locations;\n this.isRepeatable = config.isRepeatable != null && config.isRepeatable;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n config.name || devAssert(0, 'Directive must be named.');\n Array.isArray(config.locations) || devAssert(0, \"@\".concat(config.name, \" locations must be an Array.\"));\n var args = config.args || {};\n isObjectLike(args) && !Array.isArray(args) || devAssert(0, \"@\".concat(config.name, \" args must be an object with argument names as keys.\"));\n this.args = objectEntries(args).map(function (_ref) {\n var argName = _ref[0],\n arg = _ref[1];\n return {\n name: argName,\n description: arg.description === undefined ? null : arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n extensions: arg.extensions && toObjMap(arg.extensions),\n astNode: arg.astNode\n };\n });\n }\n\n var _proto = GraphQLDirective.prototype;\n\n _proto.toString = function toString() {\n return '@' + this.name;\n };\n\n _proto.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n locations: this.locations,\n args: argsToArgsConfig(this.args),\n isRepeatable: this.isRepeatable,\n extensions: this.extensions,\n astNode: this.astNode\n };\n };\n\n return GraphQLDirective;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLDirective);\ndefineToJSON(GraphQLDirective);\n\n/**\n * Used to conditionally include fields or fragments.\n */\nexport var GraphQLIncludeDirective = new GraphQLDirective({\n name: 'include',\n description: 'Directs the executor to include this field or fragment only when the `if` argument is true.',\n locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n args: {\n if: {\n type: GraphQLNonNull(GraphQLBoolean),\n description: 'Included when true.'\n }\n }\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nexport var GraphQLSkipDirective = new GraphQLDirective({\n name: 'skip',\n description: 'Directs the executor to skip this field or fragment when the `if` argument is true.',\n locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n args: {\n if: {\n type: GraphQLNonNull(GraphQLBoolean),\n description: 'Skipped when true.'\n }\n }\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nexport var DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nexport var GraphQLDeprecatedDirective = new GraphQLDirective({\n name: 'deprecated',\n description: 'Marks an element of a GraphQL schema as no longer supported.',\n locations: [DirectiveLocation.FIELD_DEFINITION, DirectiveLocation.ENUM_VALUE],\n args: {\n reason: {\n type: GraphQLString,\n description: 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax (as specified by [CommonMark](https://commonmark.org/).',\n defaultValue: DEFAULT_DEPRECATION_REASON\n }\n }\n});\n/**\n * The full list of specified directives.\n */\n\nexport var specifiedDirectives = Object.freeze([GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective]);\nexport function isSpecifiedDirective(directive) {\n return isDirective(directive) && specifiedDirectives.some(function (_ref2) {\n var name = _ref2.name;\n return name === directive.name;\n });\n}\n","import { visit } from './visitor';\nimport { printBlockString } from './blockString';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n} // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: function SchemaDefinition(_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(function (x) {\n return x;\n }).join(separator || '') : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return array && array.length !== 0 ? '{\\n' + indent(join(array, '\\n')) + '\\n}' : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\n\n\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n\nfunction indent(maybeString) {\n return maybeString && ' ' + maybeString.replace(/\\n/g, '\\n ');\n}\n\nfunction isMultiline(string) {\n return string.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray && maybeArray.some(isMultiline);\n}\n","/**\n * Copyright (c) 2016, Lee Byron\n * All rights reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n * @ignore\n */\n\n/**\n * [Iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterator)\n * is a *protocol* which describes a standard way to produce a sequence of\n * values, typically the values of the Iterable represented by this Iterator.\n *\n * While described by the [ES2015 version of JavaScript](http://www.ecma-international.org/ecma-262/6.0/#sec-iterator-interface)\n * it can be utilized by any version of JavaScript.\n *\n * @external Iterator\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterator|MDN Iteration protocols}\n */\n\n/**\n * [Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable)\n * is a *protocol* which when implemented allows a JavaScript object to define\n * their iteration behavior, such as what values are looped over in a\n * [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of)\n * loop or `iterall`'s `forEach` function. Many [built-in types](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#Builtin_iterables)\n * implement the Iterable protocol, including `Array` and `Map`.\n *\n * While described by the [ES2015 version of JavaScript](http://www.ecma-international.org/ecma-262/6.0/#sec-iterable-interface)\n * it can be utilized by any version of JavaScript.\n *\n * @external Iterable\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable|MDN Iteration protocols}\n */\n\n// In ES2015 environments, Symbol exists\nvar SYMBOL /*: any */ = typeof Symbol === 'function' ? Symbol : void 0\n\n// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\nvar SYMBOL_ITERATOR = SYMBOL && SYMBOL.iterator\n\n/**\n * A property name to be used as the name of an Iterable's method responsible\n * for producing an Iterator, referred to as `@@iterator`. Typically represents\n * the value `Symbol.iterator` but falls back to the string `\"@@iterator\"` when\n * `Symbol.iterator` is not defined.\n *\n * Use `$$iterator` for defining new Iterables instead of `Symbol.iterator`,\n * but do not use it for accessing existing Iterables, instead use\n * {@link getIterator} or {@link isIterable}.\n *\n * @example\n *\n * var $$iterator = require('iterall').$$iterator\n *\n * function Counter (to) {\n * this.to = to\n * }\n *\n * Counter.prototype[$$iterator] = function () {\n * return {\n * to: this.to,\n * num: 0,\n * next () {\n * if (this.num >= this.to) {\n * return { value: undefined, done: true }\n * }\n * return { value: this.num++, done: false }\n * }\n * }\n * }\n *\n * var counter = new Counter(3)\n * for (var number of counter) {\n * console.log(number) // 0 ... 1 ... 2\n * }\n *\n * @type {Symbol|string}\n */\n/*:: declare export var $$iterator: '@@iterator'; */\nexport var $$iterator = SYMBOL_ITERATOR || '@@iterator'\n\n/**\n * Returns true if the provided object implements the Iterator protocol via\n * either implementing a `Symbol.iterator` or `\"@@iterator\"` method.\n *\n * @example\n *\n * var isIterable = require('iterall').isIterable\n * isIterable([ 1, 2, 3 ]) // true\n * isIterable('ABC') // true\n * isIterable({ length: 1, 0: 'Alpha' }) // false\n * isIterable({ key: 'value' }) // false\n * isIterable(new Map()) // true\n *\n * @param obj\n * A value which might implement the Iterable protocol.\n * @return {boolean} true if Iterable.\n */\n/*:: declare export function isIterable(obj: any): boolean; */\nexport function isIterable(obj) {\n return !!getIteratorMethod(obj)\n}\n\n/**\n * Returns true if the provided object implements the Array-like protocol via\n * defining a positive-integer `length` property.\n *\n * @example\n *\n * var isArrayLike = require('iterall').isArrayLike\n * isArrayLike([ 1, 2, 3 ]) // true\n * isArrayLike('ABC') // true\n * isArrayLike({ length: 1, 0: 'Alpha' }) // true\n * isArrayLike({ key: 'value' }) // false\n * isArrayLike(new Map()) // false\n *\n * @param obj\n * A value which might implement the Array-like protocol.\n * @return {boolean} true if Array-like.\n */\n/*:: declare export function isArrayLike(obj: any): boolean; */\nexport function isArrayLike(obj) {\n var length = obj != null && obj.length\n return typeof length === 'number' && length >= 0 && length % 1 === 0\n}\n\n/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and is either Iterable or Array-like.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if an\n * object should be iterated-over. It always excludes string literals and\n * includes Arrays (regardless of if it is Iterable). It also includes other\n * Array-like objects such as NodeList, TypedArray, and Buffer.\n *\n * @example\n *\n * var isCollection = require('iterall').isCollection\n * isCollection([ 1, 2, 3 ]) // true\n * isCollection('ABC') // false\n * isCollection({ length: 1, 0: 'Alpha' }) // true\n * isCollection({ key: 'value' }) // false\n * isCollection(new Map()) // true\n *\n * @example\n *\n * var forEach = require('iterall').forEach\n * if (isCollection(obj)) {\n * forEach(obj, function (value) {\n * console.log(value)\n * })\n * }\n *\n * @param obj\n * An Object value which might implement the Iterable or Array-like protocols.\n * @return {boolean} true if Iterable or Array-like Object.\n */\n/*:: declare export function isCollection(obj: any): boolean; */\nexport function isCollection(obj) {\n return Object(obj) === obj && (isArrayLike(obj) || isIterable(obj))\n}\n\n/**\n * If the provided object implements the Iterator protocol, its Iterator object\n * is returned. Otherwise returns undefined.\n *\n * @example\n *\n * var getIterator = require('iterall').getIterator\n * var iterator = getIterator([ 1, 2, 3 ])\n * iterator.next() // { value: 1, done: false }\n * iterator.next() // { value: 2, done: false }\n * iterator.next() // { value: 3, done: false }\n * iterator.next() // { value: undefined, done: true }\n *\n * @template T the type of each iterated value\n * @param {Iterable} iterable\n * An Iterable object which is the source of an Iterator.\n * @return {Iterator} new Iterator instance.\n */\n/*:: declare export var getIterator:\n & (<+TValue>(iterable: Iterable) => Iterator)\n & ((iterable: mixed) => void | Iterator); */\nexport function getIterator(iterable) {\n var method = getIteratorMethod(iterable)\n if (method) {\n return method.call(iterable)\n }\n}\n\n/**\n * If the provided object implements the Iterator protocol, the method\n * responsible for producing its Iterator object is returned.\n *\n * This is used in rare cases for performance tuning. This method must be called\n * with obj as the contextual this-argument.\n *\n * @example\n *\n * var getIteratorMethod = require('iterall').getIteratorMethod\n * var myArray = [ 1, 2, 3 ]\n * var method = getIteratorMethod(myArray)\n * if (method) {\n * var iterator = method.call(myArray)\n * }\n *\n * @template T the type of each iterated value\n * @param {Iterable} iterable\n * An Iterable object which defines an `@@iterator` method.\n * @return {function(): Iterator} `@@iterator` method.\n */\n/*:: declare export var getIteratorMethod:\n & (<+TValue>(iterable: Iterable) => (() => Iterator))\n & ((iterable: mixed) => (void | (() => Iterator))); */\nexport function getIteratorMethod(iterable) {\n if (iterable != null) {\n var method =\n (SYMBOL_ITERATOR && iterable[SYMBOL_ITERATOR]) || iterable['@@iterator']\n if (typeof method === 'function') {\n return method\n }\n }\n}\n\n/**\n * Similar to {@link getIterator}, this method returns a new Iterator given an\n * Iterable. However it will also create an Iterator for a non-Iterable\n * Array-like collection, such as Array in a non-ES2015 environment.\n *\n * `createIterator` is complimentary to `forEach`, but allows a \"pull\"-based\n * iteration as opposed to `forEach`'s \"push\"-based iteration.\n *\n * `createIterator` produces an Iterator for Array-likes with the same behavior\n * as ArrayIteratorPrototype described in the ECMAScript specification, and\n * does *not* skip over \"holes\".\n *\n * @example\n *\n * var createIterator = require('iterall').createIterator\n *\n * var myArraylike = { length: 3, 0: 'Alpha', 1: 'Bravo', 2: 'Charlie' }\n * var iterator = createIterator(myArraylike)\n * iterator.next() // { value: 'Alpha', done: false }\n * iterator.next() // { value: 'Bravo', done: false }\n * iterator.next() // { value: 'Charlie', done: false }\n * iterator.next() // { value: undefined, done: true }\n *\n * @template T the type of each iterated value\n * @param {Iterable|{ length: number }} collection\n * An Iterable or Array-like object to produce an Iterator.\n * @return {Iterator} new Iterator instance.\n */\n/*:: declare export var createIterator:\n & (<+TValue>(collection: Iterable) => Iterator)\n & ((collection: {length: number}) => Iterator)\n & ((collection: mixed) => (void | Iterator)); */\nexport function createIterator(collection) {\n if (collection != null) {\n var iterator = getIterator(collection)\n if (iterator) {\n return iterator\n }\n if (isArrayLike(collection)) {\n return new ArrayLikeIterator(collection)\n }\n }\n}\n\n// When the object provided to `createIterator` is not Iterable but is\n// Array-like, this simple Iterator is created.\nfunction ArrayLikeIterator(obj) {\n this._o = obj\n this._i = 0\n}\n\n// Note: all Iterators are themselves Iterable.\nArrayLikeIterator.prototype[$$iterator] = function() {\n return this\n}\n\n// A simple state-machine determines the IteratorResult returned, yielding\n// each value in the Array-like object in order of their indicies.\nArrayLikeIterator.prototype.next = function() {\n if (this._o === void 0 || this._i >= this._o.length) {\n this._o = void 0\n return { value: void 0, done: true }\n }\n return { value: this._o[this._i++], done: false }\n}\n\n/**\n * Given an object which either implements the Iterable protocol or is\n * Array-like, iterate over it, calling the `callback` at each iteration.\n *\n * Use `forEach` where you would expect to use a `for ... of` loop in ES6.\n * However `forEach` adheres to the behavior of [Array#forEach][] described in\n * the ECMAScript specification, skipping over \"holes\" in Array-likes. It will\n * also delegate to a `forEach` method on `collection` if one is defined,\n * ensuring native performance for `Arrays`.\n *\n * Similar to [Array#forEach][], the `callback` function accepts three\n * arguments, and is provided with `thisArg` as the calling context.\n *\n * Note: providing an infinite Iterator to forEach will produce an error.\n *\n * [Array#forEach]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n *\n * @example\n *\n * var forEach = require('iterall').forEach\n *\n * forEach(myIterable, function (value, index, iterable) {\n * console.log(value, index, iterable === myIterable)\n * })\n *\n * @example\n *\n * // ES6:\n * for (let value of myIterable) {\n * console.log(value)\n * }\n *\n * // Any JavaScript environment:\n * forEach(myIterable, function (value) {\n * console.log(value)\n * })\n *\n * @template T the type of each iterated value\n * @param {Iterable|{ length: number }} collection\n * The Iterable or array to iterate over.\n * @param {function(T, number, object)} callback\n * Function to execute for each iteration, taking up to three arguments\n * @param [thisArg]\n * Optional. Value to use as `this` when executing `callback`.\n */\n/*:: declare export var forEach:\n & (<+TValue, TCollection: Iterable>(\n collection: TCollection,\n callbackFn: (value: TValue, index: number, collection: TCollection) => any,\n thisArg?: any\n ) => void)\n & ((\n collection: TCollection,\n callbackFn: (value: mixed, index: number, collection: TCollection) => any,\n thisArg?: any\n ) => void); */\nexport function forEach(collection, callback, thisArg) {\n if (collection != null) {\n if (typeof collection.forEach === 'function') {\n return collection.forEach(callback, thisArg)\n }\n var i = 0\n var iterator = getIterator(collection)\n if (iterator) {\n var step\n while (!(step = iterator.next()).done) {\n callback.call(thisArg, step.value, i++, collection)\n // Infinite Iterators could cause forEach to run forever.\n // After a very large number of iterations, produce an error.\n /* istanbul ignore if */\n if (i > 9999999) {\n throw new TypeError('Near-infinite iteration.')\n }\n }\n } else if (isArrayLike(collection)) {\n for (; i < collection.length; i++) {\n if (collection.hasOwnProperty(i)) {\n callback.call(thisArg, collection[i], i, collection)\n }\n }\n }\n }\n}\n\n/////////////////////////////////////////////////////\n// //\n// ASYNC ITERATORS //\n// //\n/////////////////////////////////////////////////////\n\n/**\n * [AsyncIterable](https://tc39.github.io/proposal-async-iteration/#sec-asynciterable-interface)\n * is a *protocol* which when implemented allows a JavaScript object to define\n * an asynchronous iteration behavior, such as what values are looped over in\n * a [`for-await-of`](https://tc39.github.io/proposal-async-iteration/#sec-for-in-and-for-of-statements)\n * loop or `iterall`'s {@link forAwaitEach} function.\n *\n * While described as a proposed addition to the [ES2017 version of JavaScript](https://tc39.github.io/proposal-async-iteration/)\n * it can be utilized by any version of JavaScript.\n *\n * @external AsyncIterable\n * @see {@link https://tc39.github.io/proposal-async-iteration/#sec-asynciterable-interface|Async Iteration Proposal}\n * @template T The type of each iterated value\n * @property {function (): AsyncIterator} Symbol.asyncIterator\n * A method which produces an AsyncIterator for this AsyncIterable.\n */\n\n/**\n * [AsyncIterator](https://tc39.github.io/proposal-async-iteration/#sec-asynciterator-interface)\n * is a *protocol* which describes a standard way to produce and consume an\n * asynchronous sequence of values, typically the values of the\n * {@link AsyncIterable} represented by this {@link AsyncIterator}.\n *\n * AsyncIterator is similar to Observable or Stream. Like an {@link Iterator} it\n * also as a `next()` method, however instead of an IteratorResult,\n * calling this method returns a {@link Promise} for a IteratorResult.\n *\n * While described as a proposed addition to the [ES2017 version of JavaScript](https://tc39.github.io/proposal-async-iteration/)\n * it can be utilized by any version of JavaScript.\n *\n * @external AsyncIterator\n * @see {@link https://tc39.github.io/proposal-async-iteration/#sec-asynciterator-interface|Async Iteration Proposal}\n */\n\n// In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\nvar SYMBOL_ASYNC_ITERATOR = SYMBOL && SYMBOL.asyncIterator\n\n/**\n * A property name to be used as the name of an AsyncIterable's method\n * responsible for producing an Iterator, referred to as `@@asyncIterator`.\n * Typically represents the value `Symbol.asyncIterator` but falls back to the\n * string `\"@@asyncIterator\"` when `Symbol.asyncIterator` is not defined.\n *\n * Use `$$asyncIterator` for defining new AsyncIterables instead of\n * `Symbol.asyncIterator`, but do not use it for accessing existing Iterables,\n * instead use {@link getAsyncIterator} or {@link isAsyncIterable}.\n *\n * @example\n *\n * var $$asyncIterator = require('iterall').$$asyncIterator\n *\n * function Chirper (to) {\n * this.to = to\n * }\n *\n * Chirper.prototype[$$asyncIterator] = function () {\n * return {\n * to: this.to,\n * num: 0,\n * next () {\n * return new Promise(resolve => {\n * if (this.num >= this.to) {\n * resolve({ value: undefined, done: true })\n * } else {\n * setTimeout(() => {\n * resolve({ value: this.num++, done: false })\n * }, 1000)\n * }\n * })\n * }\n * }\n * }\n *\n * var chirper = new Chirper(3)\n * for await (var number of chirper) {\n * console.log(number) // 0 ...wait... 1 ...wait... 2\n * }\n *\n * @type {Symbol|string}\n */\n/*:: declare export var $$asyncIterator: '@@asyncIterator'; */\nexport var $$asyncIterator = SYMBOL_ASYNC_ITERATOR || '@@asyncIterator'\n\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * either implementing a `Symbol.asyncIterator` or `\"@@asyncIterator\"` method.\n *\n * @example\n *\n * var isAsyncIterable = require('iterall').isAsyncIterable\n * isAsyncIterable(myStream) // true\n * isAsyncIterable('ABC') // false\n *\n * @param obj\n * A value which might implement the AsyncIterable protocol.\n * @return {boolean} true if AsyncIterable.\n */\n/*:: declare export function isAsyncIterable(obj: any): boolean; */\nexport function isAsyncIterable(obj) {\n return !!getAsyncIteratorMethod(obj)\n}\n\n/**\n * If the provided object implements the AsyncIterator protocol, its\n * AsyncIterator object is returned. Otherwise returns undefined.\n *\n * @example\n *\n * var getAsyncIterator = require('iterall').getAsyncIterator\n * var asyncIterator = getAsyncIterator(myStream)\n * asyncIterator.next().then(console.log) // { value: 1, done: false }\n * asyncIterator.next().then(console.log) // { value: 2, done: false }\n * asyncIterator.next().then(console.log) // { value: 3, done: false }\n * asyncIterator.next().then(console.log) // { value: undefined, done: true }\n *\n * @template T the type of each iterated value\n * @param {AsyncIterable} asyncIterable\n * An AsyncIterable object which is the source of an AsyncIterator.\n * @return {AsyncIterator} new AsyncIterator instance.\n */\n/*:: declare export var getAsyncIterator:\n & (<+TValue>(asyncIterable: AsyncIterable) => AsyncIterator)\n & ((asyncIterable: mixed) => (void | AsyncIterator)); */\nexport function getAsyncIterator(asyncIterable) {\n var method = getAsyncIteratorMethod(asyncIterable)\n if (method) {\n return method.call(asyncIterable)\n }\n}\n\n/**\n * If the provided object implements the AsyncIterator protocol, the method\n * responsible for producing its AsyncIterator object is returned.\n *\n * This is used in rare cases for performance tuning. This method must be called\n * with obj as the contextual this-argument.\n *\n * @example\n *\n * var getAsyncIteratorMethod = require('iterall').getAsyncIteratorMethod\n * var method = getAsyncIteratorMethod(myStream)\n * if (method) {\n * var asyncIterator = method.call(myStream)\n * }\n *\n * @template T the type of each iterated value\n * @param {AsyncIterable} asyncIterable\n * An AsyncIterable object which defines an `@@asyncIterator` method.\n * @return {function(): AsyncIterator} `@@asyncIterator` method.\n */\n/*:: declare export var getAsyncIteratorMethod:\n & (<+TValue>(asyncIterable: AsyncIterable) => (() => AsyncIterator))\n & ((asyncIterable: mixed) => (void | (() => AsyncIterator))); */\nexport function getAsyncIteratorMethod(asyncIterable) {\n if (asyncIterable != null) {\n var method =\n (SYMBOL_ASYNC_ITERATOR && asyncIterable[SYMBOL_ASYNC_ITERATOR]) ||\n asyncIterable['@@asyncIterator']\n if (typeof method === 'function') {\n return method\n }\n }\n}\n\n/**\n * Similar to {@link getAsyncIterator}, this method returns a new AsyncIterator\n * given an AsyncIterable. However it will also create an AsyncIterator for a\n * non-async Iterable as well as non-Iterable Array-like collection, such as\n * Array in a pre-ES2015 environment.\n *\n * `createAsyncIterator` is complimentary to `forAwaitEach`, but allows a\n * buffering \"pull\"-based iteration as opposed to `forAwaitEach`'s\n * \"push\"-based iteration.\n *\n * `createAsyncIterator` produces an AsyncIterator for non-async Iterables as\n * described in the ECMAScript proposal [Async-from-Sync Iterator Objects](https://tc39.github.io/proposal-async-iteration/#sec-async-from-sync-iterator-objects).\n *\n * > Note: Creating `AsyncIterator`s requires the existence of `Promise`.\n * > While `Promise` has been available in modern browsers for a number of\n * > years, legacy browsers (like IE 11) may require a polyfill.\n *\n * @example\n *\n * var createAsyncIterator = require('iterall').createAsyncIterator\n *\n * var myArraylike = { length: 3, 0: 'Alpha', 1: 'Bravo', 2: 'Charlie' }\n * var iterator = createAsyncIterator(myArraylike)\n * iterator.next().then(console.log) // { value: 'Alpha', done: false }\n * iterator.next().then(console.log) // { value: 'Bravo', done: false }\n * iterator.next().then(console.log) // { value: 'Charlie', done: false }\n * iterator.next().then(console.log) // { value: undefined, done: true }\n *\n * @template T the type of each iterated value\n * @param {AsyncIterable|Iterable|{ length: number }} source\n * An AsyncIterable, Iterable, or Array-like object to produce an Iterator.\n * @return {AsyncIterator} new AsyncIterator instance.\n */\n/*:: declare export var createAsyncIterator:\n & (<+TValue>(\n collection: Iterable | TValue> | AsyncIterable\n ) => AsyncIterator)\n & ((collection: {length: number}) => AsyncIterator)\n & ((collection: mixed) => (void | AsyncIterator)); */\nexport function createAsyncIterator(source) {\n if (source != null) {\n var asyncIterator = getAsyncIterator(source)\n if (asyncIterator) {\n return asyncIterator\n }\n var iterator = createIterator(source)\n if (iterator) {\n return new AsyncFromSyncIterator(iterator)\n }\n }\n}\n\n// When the object provided to `createAsyncIterator` is not AsyncIterable but is\n// sync Iterable, this simple wrapper is created.\nfunction AsyncFromSyncIterator(iterator) {\n this._i = iterator\n}\n\n// Note: all AsyncIterators are themselves AsyncIterable.\nAsyncFromSyncIterator.prototype[$$asyncIterator] = function() {\n return this\n}\n\n// A simple state-machine determines the IteratorResult returned, yielding\n// each value in the Array-like object in order of their indicies.\nAsyncFromSyncIterator.prototype.next = function(value) {\n return unwrapAsyncFromSync(this._i, 'next', value)\n}\n\nAsyncFromSyncIterator.prototype.return = function(value) {\n return this._i.return\n ? unwrapAsyncFromSync(this._i, 'return', value)\n : Promise.resolve({ value: value, done: true })\n}\n\nAsyncFromSyncIterator.prototype.throw = function(value) {\n return this._i.throw\n ? unwrapAsyncFromSync(this._i, 'throw', value)\n : Promise.reject(value)\n}\n\nfunction unwrapAsyncFromSync(iterator, fn, value) {\n var step\n return new Promise(function(resolve) {\n step = iterator[fn](value)\n resolve(step.value)\n }).then(function(value) {\n return { value: value, done: step.done }\n })\n}\n\n/**\n * Given an object which either implements the AsyncIterable protocol or is\n * Array-like, iterate over it, calling the `callback` at each iteration.\n *\n * Use `forAwaitEach` where you would expect to use a [for-await-of](https://tc39.github.io/proposal-async-iteration/#sec-for-in-and-for-of-statements) loop.\n *\n * Similar to [Array#forEach][], the `callback` function accepts three\n * arguments, and is provided with `thisArg` as the calling context.\n *\n * > Note: Using `forAwaitEach` requires the existence of `Promise`.\n * > While `Promise` has been available in modern browsers for a number of\n * > years, legacy browsers (like IE 11) may require a polyfill.\n *\n * @example\n *\n * var forAwaitEach = require('iterall').forAwaitEach\n *\n * forAwaitEach(myIterable, function (value, index, iterable) {\n * console.log(value, index, iterable === myIterable)\n * })\n *\n * @example\n *\n * // ES2017:\n * for await (let value of myAsyncIterable) {\n * console.log(await doSomethingAsync(value))\n * }\n * console.log('done')\n *\n * // Any JavaScript environment:\n * forAwaitEach(myAsyncIterable, function (value) {\n * return doSomethingAsync(value).then(console.log)\n * }).then(function () {\n * console.log('done')\n * })\n *\n * @template T the type of each iterated value\n * @param {AsyncIterable|Iterable | T>|{ length: number }} source\n * The AsyncIterable or array to iterate over.\n * @param {function(T, number, object)} callback\n * Function to execute for each iteration, taking up to three arguments\n * @param [thisArg]\n * Optional. Value to use as `this` when executing `callback`.\n */\n/*:: declare export var forAwaitEach:\n & (<+TValue, TCollection: Iterable | TValue> | AsyncIterable>(\n collection: TCollection,\n callbackFn: (value: TValue, index: number, collection: TCollection) => any,\n thisArg?: any\n ) => Promise)\n & ((\n collection: TCollection,\n callbackFn: (value: mixed, index: number, collection: TCollection) => any,\n thisArg?: any\n ) => Promise); */\nexport function forAwaitEach(source, callback, thisArg) {\n var asyncIterator = createAsyncIterator(source)\n if (asyncIterator) {\n var i = 0\n return new Promise(function(resolve, reject) {\n function next() {\n asyncIterator\n .next()\n .then(function(step) {\n if (!step.done) {\n Promise.resolve(callback.call(thisArg, step.value, i++, source))\n .then(next)\n .catch(reject)\n } else {\n resolve()\n }\n // Explicitly return null, silencing bluebird-style warnings.\n return null\n })\n .catch(reject)\n // Explicitly return null, silencing bluebird-style warnings.\n return null\n }\n next()\n })\n }\n}\n","/**\n * Returns true if a value is null, undefined, or NaN.\n */\nexport default function isNullish(value) {\n return value === null || value === undefined || value !== value;\n}\n","import { forEach, isCollection } from 'iterall';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport isNullish from '../jsutils/isNullish';\nimport isInvalid from '../jsutils/isInvalid';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport { Kind } from '../language/kinds';\nimport { GraphQLID } from '../type/scalars';\nimport { isLeafType, isEnumType, isInputObjectType, isListType, isNonNullType } from '../type/definition';\n/**\n * Produces a GraphQL Value AST given a JavaScript value.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String / Enum Value |\n * | Number | Int / Float |\n * | Mixed | Enum Value |\n * | null | NullValue |\n *\n */\n\nexport function astFromValue(value, type) {\n if (isNonNullType(type)) {\n var astValue = astFromValue(value, type.ofType);\n\n if (astValue && astValue.kind === Kind.NULL) {\n return null;\n }\n\n return astValue;\n } // only explicit null, not undefined, NaN\n\n\n if (value === null) {\n return {\n kind: Kind.NULL\n };\n } // undefined, NaN\n\n\n if (isInvalid(value)) {\n return null;\n } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n\n\n if (isListType(type)) {\n var itemType = type.ofType;\n\n if (isCollection(value)) {\n var valuesNodes = [];\n forEach(value, function (item) {\n var itemNode = astFromValue(item, itemType);\n\n if (itemNode) {\n valuesNodes.push(itemNode);\n }\n });\n return {\n kind: Kind.LIST,\n values: valuesNodes\n };\n }\n\n return astFromValue(value, itemType);\n } // Populate the fields of the input object by creating ASTs from each value\n // in the JavaScript object according to the fields in the input type.\n\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return null;\n }\n\n var fieldNodes = [];\n\n for (var _i2 = 0, _objectValues2 = objectValues(type.getFields()); _i2 < _objectValues2.length; _i2++) {\n var field = _objectValues2[_i2];\n var fieldValue = astFromValue(value[field.name], field.type);\n\n if (fieldValue) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: {\n kind: Kind.NAME,\n value: field.name\n },\n value: fieldValue\n });\n }\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fieldNodes\n };\n }\n\n /* istanbul ignore else */\n if (isLeafType(type)) {\n // Since value is an internally represented value, it must be serialized\n // to an externally represented value before converting into an AST.\n var serialized = type.serialize(value);\n\n if (isNullish(serialized)) {\n return null;\n } // Others serialize based on their corresponding JavaScript scalar types.\n\n\n if (typeof serialized === 'boolean') {\n return {\n kind: Kind.BOOLEAN,\n value: serialized\n };\n } // JavaScript numbers can be Int or Float values.\n\n\n if (typeof serialized === 'number') {\n var stringNum = String(serialized);\n return integerStringRegExp.test(stringNum) ? {\n kind: Kind.INT,\n value: stringNum\n } : {\n kind: Kind.FLOAT,\n value: stringNum\n };\n }\n\n if (typeof serialized === 'string') {\n // Enum types use Enum literals.\n if (isEnumType(type)) {\n return {\n kind: Kind.ENUM,\n value: serialized\n };\n } // ID types can use Int literals.\n\n\n if (type === GraphQLID && integerStringRegExp.test(serialized)) {\n return {\n kind: Kind.INT,\n value: serialized\n };\n }\n\n return {\n kind: Kind.STRING,\n value: serialized\n };\n }\n\n throw new TypeError(\"Cannot convert value to AST: \".concat(inspect(serialized)));\n } // Not reachable. All possible input types have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected input type: ' + inspect(type));\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nvar integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n","import objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport { print } from '../language/printer';\nimport { DirectiveLocation } from '../language/directiveLocation';\nimport { astFromValue } from '../utilities/astFromValue';\nimport { GraphQLString, GraphQLBoolean } from './scalars';\nimport { GraphQLObjectType, GraphQLEnumType, GraphQLList, GraphQLNonNull, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isAbstractType, isNamedType } from './definition';\nexport var __Schema = new GraphQLObjectType({\n name: '__Schema',\n description: 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n fields: function fields() {\n return {\n types: {\n description: 'A list of all types supported by this server.',\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__Type))),\n resolve: function resolve(schema) {\n return objectValues(schema.getTypeMap());\n }\n },\n queryType: {\n description: 'The type that query operations will be rooted at.',\n type: GraphQLNonNull(__Type),\n resolve: function resolve(schema) {\n return schema.getQueryType();\n }\n },\n mutationType: {\n description: 'If this server supports mutation, the type that mutation operations will be rooted at.',\n type: __Type,\n resolve: function resolve(schema) {\n return schema.getMutationType();\n }\n },\n subscriptionType: {\n description: 'If this server support subscription, the type that subscription operations will be rooted at.',\n type: __Type,\n resolve: function resolve(schema) {\n return schema.getSubscriptionType();\n }\n },\n directives: {\n description: 'A list of all directives supported by this server.',\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__Directive))),\n resolve: function resolve(schema) {\n return schema.getDirectives();\n }\n }\n };\n }\n});\nexport var __Directive = new GraphQLObjectType({\n name: '__Directive',\n description: \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n fields: function fields() {\n return {\n name: {\n type: GraphQLNonNull(GraphQLString),\n resolve: function resolve(obj) {\n return obj.name;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description;\n }\n },\n locations: {\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__DirectiveLocation))),\n resolve: function resolve(obj) {\n return obj.locations;\n }\n },\n args: {\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__InputValue))),\n resolve: function resolve(directive) {\n return directive.args;\n }\n }\n };\n }\n});\nexport var __DirectiveLocation = new GraphQLEnumType({\n name: '__DirectiveLocation',\n description: 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n values: {\n QUERY: {\n value: DirectiveLocation.QUERY,\n description: 'Location adjacent to a query operation.'\n },\n MUTATION: {\n value: DirectiveLocation.MUTATION,\n description: 'Location adjacent to a mutation operation.'\n },\n SUBSCRIPTION: {\n value: DirectiveLocation.SUBSCRIPTION,\n description: 'Location adjacent to a subscription operation.'\n },\n FIELD: {\n value: DirectiveLocation.FIELD,\n description: 'Location adjacent to a field.'\n },\n FRAGMENT_DEFINITION: {\n value: DirectiveLocation.FRAGMENT_DEFINITION,\n description: 'Location adjacent to a fragment definition.'\n },\n FRAGMENT_SPREAD: {\n value: DirectiveLocation.FRAGMENT_SPREAD,\n description: 'Location adjacent to a fragment spread.'\n },\n INLINE_FRAGMENT: {\n value: DirectiveLocation.INLINE_FRAGMENT,\n description: 'Location adjacent to an inline fragment.'\n },\n VARIABLE_DEFINITION: {\n value: DirectiveLocation.VARIABLE_DEFINITION,\n description: 'Location adjacent to a variable definition.'\n },\n SCHEMA: {\n value: DirectiveLocation.SCHEMA,\n description: 'Location adjacent to a schema definition.'\n },\n SCALAR: {\n value: DirectiveLocation.SCALAR,\n description: 'Location adjacent to a scalar definition.'\n },\n OBJECT: {\n value: DirectiveLocation.OBJECT,\n description: 'Location adjacent to an object type definition.'\n },\n FIELD_DEFINITION: {\n value: DirectiveLocation.FIELD_DEFINITION,\n description: 'Location adjacent to a field definition.'\n },\n ARGUMENT_DEFINITION: {\n value: DirectiveLocation.ARGUMENT_DEFINITION,\n description: 'Location adjacent to an argument definition.'\n },\n INTERFACE: {\n value: DirectiveLocation.INTERFACE,\n description: 'Location adjacent to an interface definition.'\n },\n UNION: {\n value: DirectiveLocation.UNION,\n description: 'Location adjacent to a union definition.'\n },\n ENUM: {\n value: DirectiveLocation.ENUM,\n description: 'Location adjacent to an enum definition.'\n },\n ENUM_VALUE: {\n value: DirectiveLocation.ENUM_VALUE,\n description: 'Location adjacent to an enum value definition.'\n },\n INPUT_OBJECT: {\n value: DirectiveLocation.INPUT_OBJECT,\n description: 'Location adjacent to an input object type definition.'\n },\n INPUT_FIELD_DEFINITION: {\n value: DirectiveLocation.INPUT_FIELD_DEFINITION,\n description: 'Location adjacent to an input object field definition.'\n }\n }\n});\nexport var __Type = new GraphQLObjectType({\n name: '__Type',\n description: 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n fields: function fields() {\n return {\n kind: {\n type: GraphQLNonNull(__TypeKind),\n resolve: function resolve(type) {\n if (isScalarType(type)) {\n return TypeKind.SCALAR;\n } else if (isObjectType(type)) {\n return TypeKind.OBJECT;\n } else if (isInterfaceType(type)) {\n return TypeKind.INTERFACE;\n } else if (isUnionType(type)) {\n return TypeKind.UNION;\n } else if (isEnumType(type)) {\n return TypeKind.ENUM;\n } else if (isInputObjectType(type)) {\n return TypeKind.INPUT_OBJECT;\n } else if (isListType(type)) {\n return TypeKind.LIST;\n } else if (isNonNullType(type)) {\n return TypeKind.NON_NULL;\n } // Not reachable. All possible types have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, \"Unexpected type: \\\"\".concat(inspect(type), \"\\\".\"));\n }\n },\n name: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.name !== undefined ? obj.name : undefined;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description !== undefined ? obj.description : undefined;\n }\n },\n fields: {\n type: GraphQLList(GraphQLNonNull(__Field)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false\n }\n },\n resolve: function resolve(type, _ref) {\n var includeDeprecated = _ref.includeDeprecated;\n\n if (isObjectType(type) || isInterfaceType(type)) {\n var fields = objectValues(type.getFields());\n\n if (!includeDeprecated) {\n fields = fields.filter(function (field) {\n return !field.deprecationReason;\n });\n }\n\n return fields;\n }\n\n return null;\n }\n },\n interfaces: {\n type: GraphQLList(GraphQLNonNull(__Type)),\n resolve: function resolve(type) {\n if (isObjectType(type)) {\n return type.getInterfaces();\n }\n }\n },\n possibleTypes: {\n type: GraphQLList(GraphQLNonNull(__Type)),\n resolve: function resolve(type, args, context, _ref2) {\n var schema = _ref2.schema;\n\n if (isAbstractType(type)) {\n return schema.getPossibleTypes(type);\n }\n }\n },\n enumValues: {\n type: GraphQLList(GraphQLNonNull(__EnumValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false\n }\n },\n resolve: function resolve(type, _ref3) {\n var includeDeprecated = _ref3.includeDeprecated;\n\n if (isEnumType(type)) {\n var values = type.getValues();\n\n if (!includeDeprecated) {\n values = values.filter(function (value) {\n return !value.deprecationReason;\n });\n }\n\n return values;\n }\n }\n },\n inputFields: {\n type: GraphQLList(GraphQLNonNull(__InputValue)),\n resolve: function resolve(type) {\n if (isInputObjectType(type)) {\n return objectValues(type.getFields());\n }\n }\n },\n ofType: {\n type: __Type,\n resolve: function resolve(obj) {\n return obj.ofType !== undefined ? obj.ofType : undefined;\n }\n }\n };\n }\n});\nexport var __Field = new GraphQLObjectType({\n name: '__Field',\n description: 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n fields: function fields() {\n return {\n name: {\n type: GraphQLNonNull(GraphQLString),\n resolve: function resolve(obj) {\n return obj.name;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description;\n }\n },\n args: {\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__InputValue))),\n resolve: function resolve(field) {\n return field.args;\n }\n },\n type: {\n type: GraphQLNonNull(__Type),\n resolve: function resolve(obj) {\n return obj.type;\n }\n },\n isDeprecated: {\n type: GraphQLNonNull(GraphQLBoolean),\n resolve: function resolve(obj) {\n return obj.isDeprecated;\n }\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.deprecationReason;\n }\n }\n };\n }\n});\nexport var __InputValue = new GraphQLObjectType({\n name: '__InputValue',\n description: 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n fields: function fields() {\n return {\n name: {\n type: GraphQLNonNull(GraphQLString),\n resolve: function resolve(obj) {\n return obj.name;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description;\n }\n },\n type: {\n type: GraphQLNonNull(__Type),\n resolve: function resolve(obj) {\n return obj.type;\n }\n },\n defaultValue: {\n type: GraphQLString,\n description: 'A GraphQL-formatted string representing the default value for this input value.',\n resolve: function resolve(inputVal) {\n var valueAST = astFromValue(inputVal.defaultValue, inputVal.type);\n return valueAST ? print(valueAST) : null;\n }\n }\n };\n }\n});\nexport var __EnumValue = new GraphQLObjectType({\n name: '__EnumValue',\n description: 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n fields: function fields() {\n return {\n name: {\n type: GraphQLNonNull(GraphQLString),\n resolve: function resolve(obj) {\n return obj.name;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description;\n }\n },\n isDeprecated: {\n type: GraphQLNonNull(GraphQLBoolean),\n resolve: function resolve(obj) {\n return obj.isDeprecated;\n }\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.deprecationReason;\n }\n }\n };\n }\n});\nexport var TypeKind = Object.freeze({\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n INPUT_OBJECT: 'INPUT_OBJECT',\n LIST: 'LIST',\n NON_NULL: 'NON_NULL'\n});\nexport var __TypeKind = new GraphQLEnumType({\n name: '__TypeKind',\n description: 'An enum describing what kind of type a given `__Type` is.',\n values: {\n SCALAR: {\n value: TypeKind.SCALAR,\n description: 'Indicates this type is a scalar.'\n },\n OBJECT: {\n value: TypeKind.OBJECT,\n description: 'Indicates this type is an object. `fields` and `interfaces` are valid fields.'\n },\n INTERFACE: {\n value: TypeKind.INTERFACE,\n description: 'Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.'\n },\n UNION: {\n value: TypeKind.UNION,\n description: 'Indicates this type is a union. `possibleTypes` is a valid field.'\n },\n ENUM: {\n value: TypeKind.ENUM,\n description: 'Indicates this type is an enum. `enumValues` is a valid field.'\n },\n INPUT_OBJECT: {\n value: TypeKind.INPUT_OBJECT,\n description: 'Indicates this type is an input object. `inputFields` is a valid field.'\n },\n LIST: {\n value: TypeKind.LIST,\n description: 'Indicates this type is a list. `ofType` is a valid field.'\n },\n NON_NULL: {\n value: TypeKind.NON_NULL,\n description: 'Indicates this type is a non-null. `ofType` is a valid field.'\n }\n }\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nexport var SchemaMetaFieldDef = {\n name: '__schema',\n type: GraphQLNonNull(__Schema),\n description: 'Access the current type schema of this server.',\n args: [],\n resolve: function resolve(source, args, context, _ref4) {\n var schema = _ref4.schema;\n return schema;\n },\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n};\nexport var TypeMetaFieldDef = {\n name: '__type',\n type: __Type,\n description: 'Request the type information of a single type.',\n args: [{\n name: 'name',\n description: undefined,\n type: GraphQLNonNull(GraphQLString),\n defaultValue: undefined,\n extensions: undefined,\n astNode: undefined\n }],\n resolve: function resolve(source, _ref5, context, _ref6) {\n var name = _ref5.name;\n var schema = _ref6.schema;\n return schema.getType(name);\n },\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n};\nexport var TypeNameMetaFieldDef = {\n name: '__typename',\n type: GraphQLNonNull(GraphQLString),\n description: 'The name of the current Object type at runtime.',\n args: [],\n resolve: function resolve(source, args, context, _ref7) {\n var parentType = _ref7.parentType;\n return parentType.name;\n },\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n};\nexport var introspectionTypes = Object.freeze([__Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind]);\nexport function isIntrospectionType(type) {\n return isNamedType(type) && introspectionTypes.some(function (_ref8) {\n var name = _ref8.name;\n return type.name === name;\n });\n}\n","import find from '../polyfills/find';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport toObjMap from '../jsutils/toObjMap';\nimport devAssert from '../jsutils/devAssert';\nimport instanceOf from '../jsutils/instanceOf';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport defineToStringTag from '../jsutils/defineToStringTag';\nimport { __Schema } from './introspection';\nimport { GraphQLDirective, isDirective, specifiedDirectives } from './directives';\nimport { isObjectType, isInterfaceType, isUnionType, isInputObjectType, getNamedType } from './definition';\n/**\n * Test if the given value is a GraphQL schema.\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSchema(schema) {\n return instanceOf(schema, GraphQLSchema);\n}\nexport function assertSchema(schema) {\n if (!isSchema(schema)) {\n throw new Error(\"Expected \".concat(inspect(schema), \" to be a GraphQL schema.\"));\n }\n\n return schema;\n}\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * const MyAppSchema = new GraphQLSchema({\n * query: MyAppQueryRootType,\n * mutation: MyAppMutationRootType,\n * })\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * const characterInterface = new GraphQLInterfaceType({\n * name: 'Character',\n * ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n * name: 'Human',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n * name: 'Droid',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const schema = new GraphQLSchema({\n * query: new GraphQLObjectType({\n * name: 'Query',\n * fields: {\n * hero: { type: characterInterface, ... },\n * }\n * }),\n * ...\n * // Since this schema references only the `Character` interface it's\n * // necessary to explicitly list the types that implement it if\n * // you want them to be included in the final schema.\n * types: [humanType, droidType],\n * })\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. @include and\n * @skip) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * const MyAppSchema = new GraphQLSchema({\n * ...\n * directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n *\n */\n\nexport var GraphQLSchema =\n/*#__PURE__*/\nfunction () {\n // Used as a cache for validateSchema().\n // Referenced by validateSchema().\n function GraphQLSchema(config) {\n // If this schema was built from a source known to be valid, then it may be\n // marked with assumeValid to avoid an additional type system validation.\n if (config && config.assumeValid) {\n this.__validationErrors = [];\n } else {\n this.__validationErrors = undefined; // Otherwise check for common mistakes during construction to produce\n // clear and early error messages.\n\n isObjectLike(config) || devAssert(0, 'Must provide configuration object.');\n !config.types || Array.isArray(config.types) || devAssert(0, \"\\\"types\\\" must be Array if provided but got: \".concat(inspect(config.types), \".\"));\n !config.directives || Array.isArray(config.directives) || devAssert(0, '\"directives\" must be Array if provided but got: ' + \"\".concat(inspect(config.directives), \".\"));\n !config.allowedLegacyNames || Array.isArray(config.allowedLegacyNames) || devAssert(0, '\"allowedLegacyNames\" must be Array if provided but got: ' + \"\".concat(inspect(config.allowedLegacyNames), \".\"));\n }\n\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes;\n this.__allowedLegacyNames = config.allowedLegacyNames || [];\n this._queryType = config.query;\n this._mutationType = config.mutation;\n this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n this._directives = config.directives || specifiedDirectives; // Build type map now to detect any errors within this schema.\n\n var initialTypes = [this._queryType, this._mutationType, this._subscriptionType, __Schema].concat(config.types); // Keep track of all types referenced within the schema.\n\n var typeMap = Object.create(null); // First by deeply visiting all initial types.\n\n typeMap = initialTypes.reduce(typeMapReducer, typeMap); // Then by deeply visiting all directive types.\n\n typeMap = this._directives.reduce(typeMapDirectiveReducer, typeMap); // Storing the resulting map for reference by the schema.\n\n this._typeMap = typeMap;\n this._possibleTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n this._implementations = Object.create(null);\n\n for (var _i2 = 0, _objectValues2 = objectValues(this._typeMap); _i2 < _objectValues2.length; _i2++) {\n var type = _objectValues2[_i2];\n\n if (isObjectType(type)) {\n for (var _i4 = 0, _type$getInterfaces2 = type.getInterfaces(); _i4 < _type$getInterfaces2.length; _i4++) {\n var iface = _type$getInterfaces2[_i4];\n\n if (isInterfaceType(iface)) {\n var impls = this._implementations[iface.name];\n\n if (impls) {\n impls.push(type);\n } else {\n this._implementations[iface.name] = [type];\n }\n }\n }\n }\n }\n }\n\n var _proto = GraphQLSchema.prototype;\n\n _proto.getQueryType = function getQueryType() {\n return this._queryType;\n };\n\n _proto.getMutationType = function getMutationType() {\n return this._mutationType;\n };\n\n _proto.getSubscriptionType = function getSubscriptionType() {\n return this._subscriptionType;\n };\n\n _proto.getTypeMap = function getTypeMap() {\n return this._typeMap;\n };\n\n _proto.getType = function getType(name) {\n return this.getTypeMap()[name];\n };\n\n _proto.getPossibleTypes = function getPossibleTypes(abstractType) {\n if (isUnionType(abstractType)) {\n return abstractType.getTypes();\n }\n\n return this._implementations[abstractType.name] || [];\n };\n\n _proto.isPossibleType = function isPossibleType(abstractType, possibleType) {\n if (this._possibleTypeMap[abstractType.name] == null) {\n var map = Object.create(null);\n\n for (var _i6 = 0, _this$getPossibleType2 = this.getPossibleTypes(abstractType); _i6 < _this$getPossibleType2.length; _i6++) {\n var type = _this$getPossibleType2[_i6];\n map[type.name] = true;\n }\n\n this._possibleTypeMap[abstractType.name] = map;\n }\n\n return Boolean(this._possibleTypeMap[abstractType.name][possibleType.name]);\n };\n\n _proto.getDirectives = function getDirectives() {\n return this._directives;\n };\n\n _proto.getDirective = function getDirective(name) {\n return find(this.getDirectives(), function (directive) {\n return directive.name === name;\n });\n };\n\n _proto.toConfig = function toConfig() {\n return {\n query: this.getQueryType(),\n mutation: this.getMutationType(),\n subscription: this.getSubscriptionType(),\n types: objectValues(this.getTypeMap()),\n directives: this.getDirectives().slice(),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || [],\n assumeValid: this.__validationErrors !== undefined,\n allowedLegacyNames: this.__allowedLegacyNames\n };\n };\n\n return GraphQLSchema;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLSchema);\n\nfunction typeMapReducer(map, type) {\n if (!type) {\n return map;\n }\n\n var namedType = getNamedType(type);\n var seenType = map[namedType.name];\n\n if (seenType) {\n if (seenType !== namedType) {\n throw new Error(\"Schema must contain uniquely named types but contains multiple types named \\\"\".concat(namedType.name, \"\\\".\"));\n }\n\n return map;\n }\n\n map[namedType.name] = namedType;\n var reducedMap = map;\n\n if (isUnionType(namedType)) {\n reducedMap = namedType.getTypes().reduce(typeMapReducer, reducedMap);\n }\n\n if (isObjectType(namedType)) {\n reducedMap = namedType.getInterfaces().reduce(typeMapReducer, reducedMap);\n }\n\n if (isObjectType(namedType) || isInterfaceType(namedType)) {\n for (var _i8 = 0, _objectValues4 = objectValues(namedType.getFields()); _i8 < _objectValues4.length; _i8++) {\n var field = _objectValues4[_i8];\n var fieldArgTypes = field.args.map(function (arg) {\n return arg.type;\n });\n reducedMap = fieldArgTypes.reduce(typeMapReducer, reducedMap);\n reducedMap = typeMapReducer(reducedMap, field.type);\n }\n }\n\n if (isInputObjectType(namedType)) {\n for (var _i10 = 0, _objectValues6 = objectValues(namedType.getFields()); _i10 < _objectValues6.length; _i10++) {\n var _field = _objectValues6[_i10];\n reducedMap = typeMapReducer(reducedMap, _field.type);\n }\n }\n\n return reducedMap;\n}\n\nfunction typeMapDirectiveReducer(map, directive) {\n // Directives are not validated until validateSchema() is called.\n if (!isDirective(directive)) {\n return map;\n }\n\n return directive.args.reduce(function (_map, arg) {\n return typeMapReducer(_map, arg.type);\n }, map);\n}\n","import find from '../polyfills/find';\nimport flatMap from '../polyfills/flatMap';\nimport objectValues from '../polyfills/objectValues';\nimport objectEntries from '../polyfills/objectEntries';\nimport inspect from '../jsutils/inspect';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { isValidNameError } from '../utilities/assertValidName';\nimport { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators';\nimport { isDirective } from './directives';\nimport { isIntrospectionType } from './introspection';\nimport { assertSchema } from './schema';\nimport { isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNamedType, isNonNullType, isInputType, isOutputType, isRequiredArgument } from './definition';\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\n\nexport function validateSchema(schema) {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n assertSchema(schema); // If this Schema has already been validated, return the previous results.\n\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n } // Validate the schema, producing a list of errors.\n\n\n var context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context); // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n\n var errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nexport function assertValidSchema(schema) {\n var errors = validateSchema(schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map(function (error) {\n return error.message;\n }).join('\\n\\n'));\n }\n}\n\nvar SchemaValidationContext =\n/*#__PURE__*/\nfunction () {\n function SchemaValidationContext(schema) {\n this._errors = [];\n this.schema = schema;\n }\n\n var _proto = SchemaValidationContext.prototype;\n\n _proto.reportError = function reportError(message, nodes) {\n var _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n this.addError(new GraphQLError(message, _nodes));\n };\n\n _proto.addError = function addError(error) {\n this._errors.push(error);\n };\n\n _proto.getErrors = function getErrors() {\n return this._errors;\n };\n\n return SchemaValidationContext;\n}();\n\nfunction validateRootTypes(context) {\n var schema = context.schema;\n var queryType = schema.getQueryType();\n\n if (!queryType) {\n context.reportError('Query root type must be provided.', schema.astNode);\n } else if (!isObjectType(queryType)) {\n context.reportError(\"Query root type must be Object type, it cannot be \".concat(inspect(queryType), \".\"), getOperationTypeNode(schema, queryType, 'query'));\n }\n\n var mutationType = schema.getMutationType();\n\n if (mutationType && !isObjectType(mutationType)) {\n context.reportError('Mutation root type must be Object type if provided, it cannot be ' + \"\".concat(inspect(mutationType), \".\"), getOperationTypeNode(schema, mutationType, 'mutation'));\n }\n\n var subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && !isObjectType(subscriptionType)) {\n context.reportError('Subscription root type must be Object type if provided, it cannot be ' + \"\".concat(inspect(subscriptionType), \".\"), getOperationTypeNode(schema, subscriptionType, 'subscription'));\n }\n}\n\nfunction getOperationTypeNode(schema, type, operation) {\n var operationNodes = getAllSubNodes(schema, function (node) {\n return node.operationTypes;\n });\n\n for (var _i2 = 0; _i2 < operationNodes.length; _i2++) {\n var node = operationNodes[_i2];\n\n if (node.operation === operation) {\n return node.type;\n }\n }\n\n return type.astNode;\n}\n\nfunction validateDirectives(context) {\n for (var _i4 = 0, _context$schema$getDi2 = context.schema.getDirectives(); _i4 < _context$schema$getDi2.length; _i4++) {\n var directive = _context$schema$getDi2[_i4];\n\n // Ensure all directives are in fact GraphQL directives.\n if (!isDirective(directive)) {\n context.reportError(\"Expected directive but got: \".concat(inspect(directive), \".\"), directive && directive.astNode);\n continue;\n } // Ensure they are named correctly.\n\n\n validateName(context, directive); // TODO: Ensure proper locations.\n // Ensure the arguments are valid.\n\n var argNames = Object.create(null);\n\n var _loop = function _loop(_i6, _directive$args2) {\n var arg = _directive$args2[_i6];\n var argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure they are unique per directive.\n\n if (argNames[argName]) {\n context.reportError(\"Argument @\".concat(directive.name, \"(\").concat(argName, \":) can only be defined once.\"), directive.astNode && directive.args.filter(function (_ref) {\n var name = _ref.name;\n return name === argName;\n }).map(function (_ref2) {\n var astNode = _ref2.astNode;\n return astNode;\n }));\n return \"continue\";\n }\n\n argNames[argName] = true; // Ensure the type is an input type.\n\n if (!isInputType(arg.type)) {\n context.reportError(\"The type of @\".concat(directive.name, \"(\").concat(argName, \":) must be Input Type \") + \"but got: \".concat(inspect(arg.type), \".\"), arg.astNode);\n }\n };\n\n for (var _i6 = 0, _directive$args2 = directive.args; _i6 < _directive$args2.length; _i6++) {\n var _ret = _loop(_i6, _directive$args2);\n\n if (_ret === \"continue\") continue;\n }\n }\n}\n\nfunction validateName(context, node) {\n // If a schema explicitly allows some legacy name which is no longer valid,\n // allow it to be assumed valid.\n if (context.schema.__allowedLegacyNames.indexOf(node.name) !== -1) {\n return;\n } // Ensure names are valid, however introspection types opt out.\n\n\n var error = isValidNameError(node.name, node.astNode || undefined);\n\n if (error) {\n context.addError(error);\n }\n}\n\nfunction validateTypes(context) {\n var validateInputObjectCircularRefs = createInputObjectCircularRefsValidator(context);\n var typeMap = context.schema.getTypeMap();\n\n for (var _i8 = 0, _objectValues2 = objectValues(typeMap); _i8 < _objectValues2.length; _i8++) {\n var type = _objectValues2[_i8];\n\n // Ensure all provided types are in fact GraphQL type.\n if (!isNamedType(type)) {\n context.reportError(\"Expected GraphQL named type but got: \".concat(inspect(type), \".\"), type && type.astNode);\n continue;\n } // Ensure it is named correctly (excluding introspection types).\n\n\n if (!isIntrospectionType(type)) {\n validateName(context, type);\n }\n\n if (isObjectType(type)) {\n // Ensure fields are valid\n validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n validateObjectInterfaces(context, type);\n } else if (isInterfaceType(type)) {\n // Ensure fields are valid.\n validateFields(context, type);\n } else if (isUnionType(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (isEnumType(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (isInputObjectType(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n validateInputObjectCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(context, type) {\n var fields = objectValues(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n if (fields.length === 0) {\n context.reportError(\"Type \".concat(type.name, \" must define one or more fields.\"), getAllNodes(type));\n }\n\n for (var _i10 = 0; _i10 < fields.length; _i10++) {\n var field = fields[_i10];\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an output type\n\n if (!isOutputType(field.type)) {\n context.reportError(\"The type of \".concat(type.name, \".\").concat(field.name, \" must be Output Type \") + \"but got: \".concat(inspect(field.type), \".\"), field.astNode && field.astNode.type);\n } // Ensure the arguments are valid\n\n\n var argNames = Object.create(null);\n\n var _loop2 = function _loop2(_i12, _field$args2) {\n var arg = _field$args2[_i12];\n var argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure they are unique per field.\n\n if (argNames[argName]) {\n context.reportError(\"Field argument \".concat(type.name, \".\").concat(field.name, \"(\").concat(argName, \":) can only be defined once.\"), field.args.filter(function (_ref3) {\n var name = _ref3.name;\n return name === argName;\n }).map(function (_ref4) {\n var astNode = _ref4.astNode;\n return astNode;\n }));\n }\n\n argNames[argName] = true; // Ensure the type is an input type\n\n if (!isInputType(arg.type)) {\n context.reportError(\"The type of \".concat(type.name, \".\").concat(field.name, \"(\").concat(argName, \":) must be Input \") + \"Type but got: \".concat(inspect(arg.type), \".\"), arg.astNode && arg.astNode.type);\n }\n };\n\n for (var _i12 = 0, _field$args2 = field.args; _i12 < _field$args2.length; _i12++) {\n _loop2(_i12, _field$args2);\n }\n }\n}\n\nfunction validateObjectInterfaces(context, object) {\n var implementedTypeNames = Object.create(null);\n\n for (var _i14 = 0, _object$getInterfaces2 = object.getInterfaces(); _i14 < _object$getInterfaces2.length; _i14++) {\n var iface = _object$getInterfaces2[_i14];\n\n if (!isInterfaceType(iface)) {\n context.reportError(\"Type \".concat(inspect(object), \" must only implement Interface types, \") + \"it cannot implement \".concat(inspect(iface), \".\"), getAllImplementsInterfaceNodes(object, iface));\n continue;\n }\n\n if (implementedTypeNames[iface.name]) {\n context.reportError(\"Type \".concat(object.name, \" can only implement \").concat(iface.name, \" once.\"), getAllImplementsInterfaceNodes(object, iface));\n continue;\n }\n\n implementedTypeNames[iface.name] = true;\n validateObjectImplementsInterface(context, object, iface);\n }\n}\n\nfunction validateObjectImplementsInterface(context, object, iface) {\n var objectFieldMap = object.getFields();\n var ifaceFieldMap = iface.getFields(); // Assert each interface field is implemented.\n\n for (var _i16 = 0, _objectEntries2 = objectEntries(ifaceFieldMap); _i16 < _objectEntries2.length; _i16++) {\n var _ref6 = _objectEntries2[_i16];\n var fieldName = _ref6[0];\n var ifaceField = _ref6[1];\n var objectField = objectFieldMap[fieldName]; // Assert interface field exists on object.\n\n if (!objectField) {\n context.reportError(\"Interface field \".concat(iface.name, \".\").concat(fieldName, \" expected but \").concat(object.name, \" does not provide it.\"), [ifaceField.astNode].concat(getAllNodes(object)));\n continue;\n } // Assert interface field type is satisfied by object field type, by being\n // a valid subtype. (covariant)\n\n\n if (!isTypeSubTypeOf(context.schema, objectField.type, ifaceField.type)) {\n context.reportError(\"Interface field \".concat(iface.name, \".\").concat(fieldName, \" expects type \") + \"\".concat(inspect(ifaceField.type), \" but \").concat(object.name, \".\").concat(fieldName, \" \") + \"is type \".concat(inspect(objectField.type), \".\"), [ifaceField.astNode && ifaceField.astNode.type, objectField.astNode && objectField.astNode.type]);\n } // Assert each interface field arg is implemented.\n\n\n var _loop3 = function _loop3(_i18, _ifaceField$args2) {\n var ifaceArg = _ifaceField$args2[_i18];\n var argName = ifaceArg.name;\n var objectArg = find(objectField.args, function (arg) {\n return arg.name === argName;\n }); // Assert interface field arg exists on object field.\n\n if (!objectArg) {\n context.reportError(\"Interface field argument \".concat(iface.name, \".\").concat(fieldName, \"(\").concat(argName, \":) expected but \").concat(object.name, \".\").concat(fieldName, \" does not provide it.\"), [ifaceArg.astNode, objectField.astNode]);\n return \"continue\";\n } // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n\n\n if (!isEqualType(ifaceArg.type, objectArg.type)) {\n context.reportError(\"Interface field argument \".concat(iface.name, \".\").concat(fieldName, \"(\").concat(argName, \":) \") + \"expects type \".concat(inspect(ifaceArg.type), \" but \") + \"\".concat(object.name, \".\").concat(fieldName, \"(\").concat(argName, \":) is type \") + \"\".concat(inspect(objectArg.type), \".\"), [ifaceArg.astNode && ifaceArg.astNode.type, objectArg.astNode && objectArg.astNode.type]);\n } // TODO: validate default values?\n\n };\n\n for (var _i18 = 0, _ifaceField$args2 = ifaceField.args; _i18 < _ifaceField$args2.length; _i18++) {\n var _ret2 = _loop3(_i18, _ifaceField$args2);\n\n if (_ret2 === \"continue\") continue;\n } // Assert additional arguments must not be required.\n\n\n var _loop4 = function _loop4(_i20, _objectField$args2) {\n var objectArg = _objectField$args2[_i20];\n var argName = objectArg.name;\n var ifaceArg = find(ifaceField.args, function (arg) {\n return arg.name === argName;\n });\n\n if (!ifaceArg && isRequiredArgument(objectArg)) {\n context.reportError(\"Object field \".concat(object.name, \".\").concat(fieldName, \" includes required argument \").concat(argName, \" that is missing from the Interface field \").concat(iface.name, \".\").concat(fieldName, \".\"), [objectArg.astNode, ifaceField.astNode]);\n }\n };\n\n for (var _i20 = 0, _objectField$args2 = objectField.args; _i20 < _objectField$args2.length; _i20++) {\n _loop4(_i20, _objectField$args2);\n }\n }\n}\n\nfunction validateUnionMembers(context, union) {\n var memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\"Union type \".concat(union.name, \" must define one or more member types.\"), getAllNodes(union));\n }\n\n var includedTypeNames = Object.create(null);\n\n for (var _i22 = 0; _i22 < memberTypes.length; _i22++) {\n var memberType = memberTypes[_i22];\n\n if (includedTypeNames[memberType.name]) {\n context.reportError(\"Union type \".concat(union.name, \" can only include type \").concat(memberType.name, \" once.\"), getUnionMemberTypeNodes(union, memberType.name));\n continue;\n }\n\n includedTypeNames[memberType.name] = true;\n\n if (!isObjectType(memberType)) {\n context.reportError(\"Union type \".concat(union.name, \" can only include Object types, \") + \"it cannot include \".concat(inspect(memberType), \".\"), getUnionMemberTypeNodes(union, String(memberType)));\n }\n }\n}\n\nfunction validateEnumValues(context, enumType) {\n var enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\"Enum type \".concat(enumType.name, \" must define one or more values.\"), getAllNodes(enumType));\n }\n\n for (var _i24 = 0; _i24 < enumValues.length; _i24++) {\n var enumValue = enumValues[_i24];\n var valueName = enumValue.name; // Ensure valid name.\n\n validateName(context, enumValue);\n\n if (valueName === 'true' || valueName === 'false' || valueName === 'null') {\n context.reportError(\"Enum type \".concat(enumType.name, \" cannot include value: \").concat(valueName, \".\"), enumValue.astNode);\n }\n }\n}\n\nfunction validateInputFields(context, inputObj) {\n var fields = objectValues(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\"Input Object type \".concat(inputObj.name, \" must define one or more fields.\"), getAllNodes(inputObj));\n } // Ensure the arguments are valid\n\n\n for (var _i26 = 0; _i26 < fields.length; _i26++) {\n var field = fields[_i26];\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an input type\n\n if (!isInputType(field.type)) {\n context.reportError(\"The type of \".concat(inputObj.name, \".\").concat(field.name, \" must be Input Type \") + \"but got: \".concat(inspect(field.type), \".\"), field.astNode && field.astNode.type);\n }\n }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n var visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n var fieldPath = []; // Position in the type path\n\n var fieldPathIndexByTypeName = Object.create(null);\n return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(inputObj) {\n if (visitedTypes[inputObj.name]) {\n return;\n }\n\n visitedTypes[inputObj.name] = true;\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n var fields = objectValues(inputObj.getFields());\n\n for (var _i28 = 0; _i28 < fields.length; _i28++) {\n var field = fields[_i28];\n\n if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) {\n var fieldType = field.type.ofType;\n var cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n fieldPath.push(field);\n\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n var cyclePath = fieldPath.slice(cycleIndex);\n var pathStr = cyclePath.map(function (fieldObj) {\n return fieldObj.name;\n }).join('.');\n context.reportError(\"Cannot reference Input Object \\\"\".concat(fieldType.name, \"\\\" within itself through a series of non-null fields: \\\"\").concat(pathStr, \"\\\".\"), cyclePath.map(function (fieldObj) {\n return fieldObj.astNode;\n }));\n }\n\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction getAllNodes(object) {\n var astNode = object.astNode,\n extensionASTNodes = object.extensionASTNodes;\n return astNode ? extensionASTNodes ? [astNode].concat(extensionASTNodes) : [astNode] : extensionASTNodes || [];\n}\n\nfunction getAllSubNodes(object, getter) {\n return flatMap(getAllNodes(object), function (item) {\n return getter(item) || [];\n });\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n return getAllSubNodes(type, function (typeNode) {\n return typeNode.interfaces;\n }).filter(function (ifaceNode) {\n return ifaceNode.name.value === iface.name;\n });\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n return getAllSubNodes(union, function (unionNode) {\n return unionNode.types;\n }).filter(function (typeNode) {\n return typeNode.name.value === typeName;\n });\n}\n","import inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport { Kind } from '../language/kinds';\nimport { GraphQLList, GraphQLNonNull } from '../type/definition';\n/**\n * Given a Schema and an AST node describing a type, return a GraphQLType\n * definition which applies to that type. For example, if provided the parsed\n * AST node for `[User]`, a GraphQLList instance will be returned, containing\n * the type called \"User\" found in the schema. If a type called \"User\" is not\n * found in the schema, then undefined will be returned.\n */\n\n/* eslint-disable no-redeclare */\n\nexport function typeFromAST(schema, typeNode) {\n /* eslint-enable no-redeclare */\n var innerType;\n\n if (typeNode.kind === Kind.LIST_TYPE) {\n innerType = typeFromAST(schema, typeNode.type);\n return innerType && GraphQLList(innerType);\n }\n\n if (typeNode.kind === Kind.NON_NULL_TYPE) {\n innerType = typeFromAST(schema, typeNode.type);\n return innerType && GraphQLNonNull(innerType);\n }\n\n /* istanbul ignore else */\n if (typeNode.kind === Kind.NAMED_TYPE) {\n return schema.getType(typeNode.name.value);\n } // Not reachable. All possible type nodes have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected type node: ' + inspect(typeNode));\n}\n","import find from '../polyfills/find';\nimport { Kind } from '../language/kinds';\nimport { isObjectType, isInterfaceType, isEnumType, isInputObjectType, isListType, isCompositeType, isInputType, isOutputType, getNullableType, getNamedType } from '../type/definition';\nimport { SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from '../type/introspection';\nimport { typeFromAST } from './typeFromAST';\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\n\nexport var TypeInfo =\n/*#__PURE__*/\nfunction () {\n function TypeInfo(schema, // NOTE: this experimental optional second parameter is only needed in order\n // to support non-spec-compliant codebases. You should never need to use it.\n // It may disappear in the future.\n getFieldDefFn, // Initial type may be provided in rare cases to facilitate traversals\n // beginning somewhere other than documents.\n initialType) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._argument = null;\n this._enumValue = null;\n this._getFieldDef = getFieldDefFn || getFieldDef;\n\n if (initialType) {\n if (isInputType(initialType)) {\n this._inputTypeStack.push(initialType);\n }\n\n if (isCompositeType(initialType)) {\n this._parentTypeStack.push(initialType);\n }\n\n if (isOutputType(initialType)) {\n this._typeStack.push(initialType);\n }\n }\n }\n\n var _proto = TypeInfo.prototype;\n\n _proto.getType = function getType() {\n if (this._typeStack.length > 0) {\n return this._typeStack[this._typeStack.length - 1];\n }\n };\n\n _proto.getParentType = function getParentType() {\n if (this._parentTypeStack.length > 0) {\n return this._parentTypeStack[this._parentTypeStack.length - 1];\n }\n };\n\n _proto.getInputType = function getInputType() {\n if (this._inputTypeStack.length > 0) {\n return this._inputTypeStack[this._inputTypeStack.length - 1];\n }\n };\n\n _proto.getParentInputType = function getParentInputType() {\n if (this._inputTypeStack.length > 1) {\n return this._inputTypeStack[this._inputTypeStack.length - 2];\n }\n };\n\n _proto.getFieldDef = function getFieldDef() {\n if (this._fieldDefStack.length > 0) {\n return this._fieldDefStack[this._fieldDefStack.length - 1];\n }\n };\n\n _proto.getDefaultValue = function getDefaultValue() {\n if (this._defaultValueStack.length > 0) {\n return this._defaultValueStack[this._defaultValueStack.length - 1];\n }\n };\n\n _proto.getDirective = function getDirective() {\n return this._directive;\n };\n\n _proto.getArgument = function getArgument() {\n return this._argument;\n };\n\n _proto.getEnumValue = function getEnumValue() {\n return this._enumValue;\n };\n\n _proto.enter = function enter(node) {\n var schema = this._schema; // Note: many of the types below are explicitly typed as \"mixed\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n\n switch (node.kind) {\n case Kind.SELECTION_SET:\n {\n var namedType = getNamedType(this.getType());\n\n this._parentTypeStack.push(isCompositeType(namedType) ? namedType : undefined);\n\n break;\n }\n\n case Kind.FIELD:\n {\n var parentType = this.getParentType();\n var fieldDef;\n var fieldType;\n\n if (parentType) {\n fieldDef = this._getFieldDef(schema, parentType, node);\n\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n\n this._fieldDefStack.push(fieldDef);\n\n this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);\n\n break;\n }\n\n case Kind.DIRECTIVE:\n this._directive = schema.getDirective(node.name.value);\n break;\n\n case Kind.OPERATION_DEFINITION:\n {\n var type;\n\n if (node.operation === 'query') {\n type = schema.getQueryType();\n } else if (node.operation === 'mutation') {\n type = schema.getMutationType();\n } else if (node.operation === 'subscription') {\n type = schema.getSubscriptionType();\n }\n\n this._typeStack.push(isObjectType(type) ? type : undefined);\n\n break;\n }\n\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION:\n {\n var typeConditionAST = node.typeCondition;\n var outputType = typeConditionAST ? typeFromAST(schema, typeConditionAST) : getNamedType(this.getType());\n\n this._typeStack.push(isOutputType(outputType) ? outputType : undefined);\n\n break;\n }\n\n case Kind.VARIABLE_DEFINITION:\n {\n var inputType = typeFromAST(schema, node.type);\n\n this._inputTypeStack.push(isInputType(inputType) ? inputType : undefined);\n\n break;\n }\n\n case Kind.ARGUMENT:\n {\n var argDef;\n var argType;\n var fieldOrDirective = this.getDirective() || this.getFieldDef();\n\n if (fieldOrDirective) {\n argDef = find(fieldOrDirective.args, function (arg) {\n return arg.name === node.name.value;\n });\n\n if (argDef) {\n argType = argDef.type;\n }\n }\n\n this._argument = argDef;\n\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n this._inputTypeStack.push(isInputType(argType) ? argType : undefined);\n\n break;\n }\n\n case Kind.LIST:\n {\n var listType = getNullableType(this.getInputType());\n var itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value.\n\n this._defaultValueStack.push(undefined);\n\n this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);\n\n break;\n }\n\n case Kind.OBJECT_FIELD:\n {\n var objectType = getNamedType(this.getInputType());\n var inputFieldType;\n var inputField;\n\n if (isInputObjectType(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n\n if (inputField) {\n inputFieldType = inputField.type;\n }\n }\n\n this._defaultValueStack.push(inputField ? inputField.defaultValue : undefined);\n\n this._inputTypeStack.push(isInputType(inputFieldType) ? inputFieldType : undefined);\n\n break;\n }\n\n case Kind.ENUM:\n {\n var enumType = getNamedType(this.getInputType());\n var enumValue;\n\n if (isEnumType(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n\n this._enumValue = enumValue;\n break;\n }\n }\n };\n\n _proto.leave = function leave(node) {\n switch (node.kind) {\n case Kind.SELECTION_SET:\n this._parentTypeStack.pop();\n\n break;\n\n case Kind.FIELD:\n this._fieldDefStack.pop();\n\n this._typeStack.pop();\n\n break;\n\n case Kind.DIRECTIVE:\n this._directive = null;\n break;\n\n case Kind.OPERATION_DEFINITION:\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION:\n this._typeStack.pop();\n\n break;\n\n case Kind.VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ARGUMENT:\n this._argument = null;\n\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.LIST:\n case Kind.OBJECT_FIELD:\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ENUM:\n this._enumValue = null;\n break;\n }\n };\n\n return TypeInfo;\n}();\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\n\nfunction getFieldDef(schema, parentType, fieldNode) {\n var name = fieldNode.name.value;\n\n if (name === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) {\n return SchemaMetaFieldDef;\n }\n\n if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n return TypeMetaFieldDef;\n }\n\n if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) {\n return TypeNameMetaFieldDef;\n }\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n return parentType.getFields()[name];\n }\n}\n","import { Kind } from './kinds';\nexport function isDefinitionNode(node) {\n return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);\n}\nexport function isExecutableDefinitionNode(node) {\n return node.kind === Kind.OPERATION_DEFINITION || node.kind === Kind.FRAGMENT_DEFINITION;\n}\nexport function isSelectionNode(node) {\n return node.kind === Kind.FIELD || node.kind === Kind.FRAGMENT_SPREAD || node.kind === Kind.INLINE_FRAGMENT;\n}\nexport function isValueNode(node) {\n return node.kind === Kind.VARIABLE || node.kind === Kind.INT || node.kind === Kind.FLOAT || node.kind === Kind.STRING || node.kind === Kind.BOOLEAN || node.kind === Kind.NULL || node.kind === Kind.ENUM || node.kind === Kind.LIST || node.kind === Kind.OBJECT;\n}\nexport function isTypeNode(node) {\n return node.kind === Kind.NAMED_TYPE || node.kind === Kind.LIST_TYPE || node.kind === Kind.NON_NULL_TYPE;\n}\nexport function isTypeSystemDefinitionNode(node) {\n return node.kind === Kind.SCHEMA_DEFINITION || isTypeDefinitionNode(node) || node.kind === Kind.DIRECTIVE_DEFINITION;\n}\nexport function isTypeDefinitionNode(node) {\n return node.kind === Kind.SCALAR_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.INTERFACE_TYPE_DEFINITION || node.kind === Kind.UNION_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION;\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return node.kind === Kind.SCALAR_TYPE_EXTENSION || node.kind === Kind.OBJECT_TYPE_EXTENSION || node.kind === Kind.INTERFACE_TYPE_EXTENSION || node.kind === Kind.UNION_TYPE_EXTENSION || node.kind === Kind.ENUM_TYPE_EXTENSION || node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION;\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { isExecutableDefinitionNode } from '../../language/predicates';\nexport function nonExecutableDefinitionMessage(defName) {\n return \"The \".concat(defName, \" definition is not executable.\");\n}\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n */\n\nexport function ExecutableDefinitions(context) {\n return {\n Document: function Document(node) {\n for (var _i2 = 0, _node$definitions2 = node.definitions; _i2 < _node$definitions2.length; _i2++) {\n var definition = _node$definitions2[_i2];\n\n if (!isExecutableDefinitionNode(definition)) {\n context.reportError(new GraphQLError(nonExecutableDefinitionMessage(definition.kind === Kind.SCHEMA_DEFINITION || definition.kind === Kind.SCHEMA_EXTENSION ? 'schema' : definition.name.value), definition));\n }\n }\n\n return false;\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateOperationNameMessage(operationName) {\n return \"There can be only one operation named \\\"\".concat(operationName, \"\\\".\");\n}\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n */\n\nexport function UniqueOperationNames(context) {\n var knownOperationNames = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition(node) {\n var operationName = node.name;\n\n if (operationName) {\n if (knownOperationNames[operationName.value]) {\n context.reportError(new GraphQLError(duplicateOperationNameMessage(operationName.value), [knownOperationNames[operationName.value], operationName]));\n } else {\n knownOperationNames[operationName.value] = operationName;\n }\n }\n\n return false;\n },\n FragmentDefinition: function FragmentDefinition() {\n return false;\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nexport function anonOperationNotAloneMessage() {\n return 'This anonymous operation must be the only defined operation.';\n}\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n */\n\nexport function LoneAnonymousOperation(context) {\n var operationCount = 0;\n return {\n Document: function Document(node) {\n operationCount = node.definitions.filter(function (definition) {\n return definition.kind === Kind.OPERATION_DEFINITION;\n }).length;\n },\n OperationDefinition: function OperationDefinition(node) {\n if (!node.name && operationCount > 1) {\n context.reportError(new GraphQLError(anonOperationNotAloneMessage(), node));\n }\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function singleFieldOnlyMessage(name) {\n return name ? \"Subscription \\\"\".concat(name, \"\\\" must select only one top level field.\") : 'Anonymous Subscription must select only one top level field.';\n}\n/**\n * Subscriptions must only include one field.\n *\n * A GraphQL subscription is valid only if it contains a single root field.\n */\n\nexport function SingleFieldSubscriptions(context) {\n return {\n OperationDefinition: function OperationDefinition(node) {\n if (node.operation === 'subscription') {\n if (node.selectionSet.selections.length !== 1) {\n context.reportError(new GraphQLError(singleFieldOnlyMessage(node.name && node.name.value), node.selectionSet.selections.slice(1)));\n }\n }\n }\n };\n}\n","var MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n\n// eslint-disable-next-line no-redeclare\nexport default function didYouMean(firstArg, secondArg) {\n var _ref = typeof firstArg === 'string' ? [firstArg, secondArg] : [undefined, firstArg],\n subMessage = _ref[0],\n suggestions = _ref[1];\n\n var message = ' Did you mean ';\n\n if (subMessage) {\n message += subMessage + ' ';\n }\n\n switch (suggestions.length) {\n case 0:\n return '';\n\n case 1:\n return message + suggestions[0] + '?';\n\n case 2:\n return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n }\n\n var selected = suggestions.slice(0, MAX_SUGGESTIONS);\n var lastItem = selected.pop();\n return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n","/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\nexport default function suggestionList(input, options) {\n var optionsByDistance = Object.create(null);\n var inputThreshold = input.length / 2;\n\n for (var _i2 = 0; _i2 < options.length; _i2++) {\n var option = options[_i2];\n var distance = lexicalDistance(input, option);\n var threshold = Math.max(inputThreshold, option.length / 2, 1);\n\n if (distance <= threshold) {\n optionsByDistance[option] = distance;\n }\n }\n\n return Object.keys(optionsByDistance).sort(function (a, b) {\n return optionsByDistance[a] - optionsByDistance[b];\n });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n *\n * @param {string} a\n * @param {string} b\n * @return {int} distance in number of edits\n */\n\nfunction lexicalDistance(aStr, bStr) {\n if (aStr === bStr) {\n return 0;\n }\n\n var d = [];\n var a = aStr.toLowerCase();\n var b = bStr.toLowerCase();\n var aLength = a.length;\n var bLength = b.length; // Any case change counts as a single edit\n\n if (a === b) {\n return 1;\n }\n\n for (var i = 0; i <= aLength; i++) {\n d[i] = [i];\n }\n\n for (var j = 1; j <= bLength; j++) {\n d[0][j] = j;\n }\n\n for (var _i3 = 1; _i3 <= aLength; _i3++) {\n for (var _j = 1; _j <= bLength; _j++) {\n var cost = a[_i3 - 1] === b[_j - 1] ? 0 : 1;\n d[_i3][_j] = Math.min(d[_i3 - 1][_j] + 1, d[_i3][_j - 1] + 1, d[_i3 - 1][_j - 1] + cost);\n\n if (_i3 > 1 && _j > 1 && a[_i3 - 1] === b[_j - 2] && a[_i3 - 2] === b[_j - 1]) {\n d[_i3][_j] = Math.min(d[_i3][_j], d[_i3 - 2][_j - 2] + cost);\n }\n }\n }\n\n return d[aLength][bLength];\n}\n","import didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { isTypeDefinitionNode, isTypeSystemDefinitionNode, isTypeSystemExtensionNode } from '../../language/predicates';\nimport { specifiedScalarTypes } from '../../type/scalars';\nexport function unknownTypeMessage(typeName, suggestedTypes) {\n return \"Unknown type \\\"\".concat(typeName, \"\\\".\") + didYouMean(suggestedTypes.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n }));\n}\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n */\n\nexport function KnownTypeNames(context) {\n var schema = context.getSchema();\n var existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n var definedTypes = Object.create(null);\n\n for (var _i2 = 0, _context$getDocument$2 = context.getDocument().definitions; _i2 < _context$getDocument$2.length; _i2++) {\n var def = _context$getDocument$2[_i2];\n\n if (isTypeDefinitionNode(def)) {\n definedTypes[def.name.value] = true;\n }\n }\n\n var typeNames = Object.keys(existingTypesMap).concat(Object.keys(definedTypes));\n return {\n NamedType: function NamedType(node, _1, parent, _2, ancestors) {\n var typeName = node.name.value;\n\n if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n var definitionNode = ancestors[2] || parent;\n var isSDL = isSDLNode(definitionNode);\n\n if (isSDL && isSpecifiedScalarName(typeName)) {\n return;\n }\n\n var suggestedTypes = suggestionList(typeName, isSDL ? specifiedScalarsNames.concat(typeNames) : typeNames);\n context.reportError(new GraphQLError(unknownTypeMessage(typeName, suggestedTypes), node));\n }\n }\n };\n}\nvar specifiedScalarsNames = specifiedScalarTypes.map(function (type) {\n return type.name;\n});\n\nfunction isSpecifiedScalarName(typeName) {\n return specifiedScalarsNames.indexOf(typeName) !== -1;\n}\n\nfunction isSDLNode(value) {\n return Boolean(value && !Array.isArray(value) && (isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value)));\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nimport { print } from '../../language/printer';\nimport { isCompositeType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nexport function inlineFragmentOnNonCompositeErrorMessage(type) {\n return \"Fragment cannot condition on non composite type \\\"\".concat(type, \"\\\".\");\n}\nexport function fragmentOnNonCompositeErrorMessage(fragName, type) {\n return \"Fragment \\\"\".concat(fragName, \"\\\" cannot condition on non composite type \\\"\").concat(type, \"\\\".\");\n}\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n */\n\nexport function FragmentsOnCompositeTypes(context) {\n return {\n InlineFragment: function InlineFragment(node) {\n var typeCondition = node.typeCondition;\n\n if (typeCondition) {\n var type = typeFromAST(context.getSchema(), typeCondition);\n\n if (type && !isCompositeType(type)) {\n context.reportError(new GraphQLError(inlineFragmentOnNonCompositeErrorMessage(print(typeCondition)), typeCondition));\n }\n }\n },\n FragmentDefinition: function FragmentDefinition(node) {\n var type = typeFromAST(context.getSchema(), node.typeCondition);\n\n if (type && !isCompositeType(type)) {\n context.reportError(new GraphQLError(fragmentOnNonCompositeErrorMessage(node.name.value, print(node.typeCondition)), node.typeCondition));\n }\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nimport { print } from '../../language/printer';\nimport { isInputType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nexport function nonInputTypeOnVarMessage(variableName, typeName) {\n return \"Variable \\\"$\".concat(variableName, \"\\\" cannot be non-input type \\\"\").concat(typeName, \"\\\".\");\n}\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n */\n\nexport function VariablesAreInputTypes(context) {\n return {\n VariableDefinition: function VariableDefinition(node) {\n var type = typeFromAST(context.getSchema(), node.type); // If the variable type is not an input type, return an error.\n\n if (type && !isInputType(type)) {\n var variableName = node.variable.name.value;\n context.reportError(new GraphQLError(nonInputTypeOnVarMessage(variableName, print(node.type)), node.type));\n }\n }\n };\n}\n","import inspect from '../../jsutils/inspect';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { getNamedType, isLeafType } from '../../type/definition';\nexport function noSubselectionAllowedMessage(fieldName, type) {\n return \"Field \\\"\".concat(fieldName, \"\\\" must not have a selection since type \\\"\").concat(type, \"\\\" has no subfields.\");\n}\nexport function requiredSubselectionMessage(fieldName, type) {\n return \"Field \\\"\".concat(fieldName, \"\\\" of type \\\"\").concat(type, \"\\\" must have a selection of subfields. Did you mean \\\"\").concat(fieldName, \" { ... }\\\"?\");\n}\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\n\nexport function ScalarLeafs(context) {\n return {\n Field: function Field(node) {\n var type = context.getType();\n var selectionSet = node.selectionSet;\n\n if (type) {\n if (isLeafType(getNamedType(type))) {\n if (selectionSet) {\n context.reportError(new GraphQLError(noSubselectionAllowedMessage(node.name.value, inspect(type)), selectionSet));\n }\n } else if (!selectionSet) {\n context.reportError(new GraphQLError(requiredSubselectionMessage(node.name.value, inspect(type)), node));\n }\n }\n }\n };\n}\n","import didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { isObjectType, isInterfaceType, isAbstractType } from '../../type/definition';\nexport function undefinedFieldMessage(fieldName, type, suggestedTypeNames, suggestedFieldNames) {\n var quotedTypeNames = suggestedTypeNames.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n });\n var quotedFieldNames = suggestedFieldNames.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n });\n return \"Cannot query field \\\"\".concat(fieldName, \"\\\" on type \\\"\").concat(type, \"\\\".\") + (didYouMean('to use an inline fragment on', quotedTypeNames) || didYouMean(quotedFieldNames));\n}\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n */\n\nexport function FieldsOnCorrectType(context) {\n return {\n Field: function Field(node) {\n var type = context.getParentType();\n\n if (type) {\n var fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n // This field doesn't exist, lets look for suggestions.\n var schema = context.getSchema();\n var fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n var suggestedTypeNames = getSuggestedTypeNames(schema, type, fieldName); // If there are no suggested types, then perhaps this was a typo?\n\n var suggestedFieldNames = suggestedTypeNames.length !== 0 ? [] : getSuggestedFieldNames(schema, type, fieldName); // Report an error, including helpful suggestions.\n\n context.reportError(new GraphQLError(undefinedFieldMessage(fieldName, type.name, suggestedTypeNames, suggestedFieldNames), node));\n }\n }\n }\n };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest\n * them, sorted by how often the type is referenced, starting with Interfaces.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n if (isAbstractType(type)) {\n var suggestedObjectTypes = [];\n var interfaceUsageCount = Object.create(null);\n\n for (var _i2 = 0, _schema$getPossibleTy2 = schema.getPossibleTypes(type); _i2 < _schema$getPossibleTy2.length; _i2++) {\n var possibleType = _schema$getPossibleTy2[_i2];\n\n if (!possibleType.getFields()[fieldName]) {\n continue;\n } // This object type defines this field.\n\n\n suggestedObjectTypes.push(possibleType.name);\n\n for (var _i4 = 0, _possibleType$getInte2 = possibleType.getInterfaces(); _i4 < _possibleType$getInte2.length; _i4++) {\n var possibleInterface = _possibleType$getInte2[_i4];\n\n if (!possibleInterface.getFields()[fieldName]) {\n continue;\n } // This interface type defines this field.\n\n\n interfaceUsageCount[possibleInterface.name] = (interfaceUsageCount[possibleInterface.name] || 0) + 1;\n }\n } // Suggest interface types based on how common they are.\n\n\n var suggestedInterfaceTypes = Object.keys(interfaceUsageCount).sort(function (a, b) {\n return interfaceUsageCount[b] - interfaceUsageCount[a];\n }); // Suggest both interface and object types.\n\n return suggestedInterfaceTypes.concat(suggestedObjectTypes);\n } // Otherwise, must be an Object type, which does not have possible fields.\n\n\n return [];\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\n\nfunction getSuggestedFieldNames(schema, type, fieldName) {\n if (isObjectType(type) || isInterfaceType(type)) {\n var possibleFieldNames = Object.keys(type.getFields());\n return suggestionList(fieldName, possibleFieldNames);\n } // Otherwise, must be a Union type, which does not define fields.\n\n\n return [];\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateFragmentNameMessage(fragName) {\n return \"There can be only one fragment named \\\"\".concat(fragName, \"\\\".\");\n}\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n */\n\nexport function UniqueFragmentNames(context) {\n var knownFragmentNames = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition() {\n return false;\n },\n FragmentDefinition: function FragmentDefinition(node) {\n var fragmentName = node.name.value;\n\n if (knownFragmentNames[fragmentName]) {\n context.reportError(new GraphQLError(duplicateFragmentNameMessage(fragmentName), [knownFragmentNames[fragmentName], node.name]));\n } else {\n knownFragmentNames[fragmentName] = node.name;\n }\n\n return false;\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function unknownFragmentMessage(fragName) {\n return \"Unknown fragment \\\"\".concat(fragName, \"\\\".\");\n}\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n */\n\nexport function KnownFragmentNames(context) {\n return {\n FragmentSpread: function FragmentSpread(node) {\n var fragmentName = node.name.value;\n var fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n context.reportError(new GraphQLError(unknownFragmentMessage(fragmentName), node.name));\n }\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function unusedFragMessage(fragName) {\n return \"Fragment \\\"\".concat(fragName, \"\\\" is never used.\");\n}\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n */\n\nexport function NoUnusedFragments(context) {\n var operationDefs = [];\n var fragmentDefs = [];\n return {\n OperationDefinition: function OperationDefinition(node) {\n operationDefs.push(node);\n return false;\n },\n FragmentDefinition: function FragmentDefinition(node) {\n fragmentDefs.push(node);\n return false;\n },\n Document: {\n leave: function leave() {\n var fragmentNameUsed = Object.create(null);\n\n for (var _i2 = 0; _i2 < operationDefs.length; _i2++) {\n var operation = operationDefs[_i2];\n\n for (var _i4 = 0, _context$getRecursive2 = context.getRecursivelyReferencedFragments(operation); _i4 < _context$getRecursive2.length; _i4++) {\n var fragment = _context$getRecursive2[_i4];\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (var _i6 = 0; _i6 < fragmentDefs.length; _i6++) {\n var fragmentDef = fragmentDefs[_i6];\n var fragName = fragmentDef.name.value;\n\n if (fragmentNameUsed[fragName] !== true) {\n context.reportError(new GraphQLError(unusedFragMessage(fragName), fragmentDef));\n }\n }\n }\n }\n };\n}\n","import inspect from '../../jsutils/inspect';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { isCompositeType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nimport { doTypesOverlap } from '../../utilities/typeComparators';\nexport function typeIncompatibleSpreadMessage(fragName, parentType, fragType) {\n return \"Fragment \\\"\".concat(fragName, \"\\\" cannot be spread here as objects of type \\\"\").concat(parentType, \"\\\" can never be of type \\\"\").concat(fragType, \"\\\".\");\n}\nexport function typeIncompatibleAnonSpreadMessage(parentType, fragType) {\n return \"Fragment cannot be spread here as objects of type \\\"\".concat(parentType, \"\\\" can never be of type \\\"\").concat(fragType, \"\\\".\");\n}\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\n\nexport function PossibleFragmentSpreads(context) {\n return {\n InlineFragment: function InlineFragment(node) {\n var fragType = context.getType();\n var parentType = context.getParentType();\n\n if (isCompositeType(fragType) && isCompositeType(parentType) && !doTypesOverlap(context.getSchema(), fragType, parentType)) {\n context.reportError(new GraphQLError(typeIncompatibleAnonSpreadMessage(inspect(parentType), inspect(fragType)), node));\n }\n },\n FragmentSpread: function FragmentSpread(node) {\n var fragName = node.name.value;\n var fragType = getFragmentType(context, fragName);\n var parentType = context.getParentType();\n\n if (fragType && parentType && !doTypesOverlap(context.getSchema(), fragType, parentType)) {\n context.reportError(new GraphQLError(typeIncompatibleSpreadMessage(fragName, inspect(parentType), inspect(fragType)), node));\n }\n }\n };\n}\n\nfunction getFragmentType(context, name) {\n var frag = context.getFragment(name);\n\n if (frag) {\n var type = typeFromAST(context.getSchema(), frag.typeCondition);\n\n if (isCompositeType(type)) {\n return type;\n }\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function cycleErrorMessage(fragName, spreadNames) {\n var via = spreadNames.length ? ' via ' + spreadNames.join(', ') : '';\n return \"Cannot spread fragment \\\"\".concat(fragName, \"\\\" within itself\").concat(via, \".\");\n}\nexport function NoFragmentCycles(context) {\n // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n var visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n var spreadPath = []; // Position in the spread path\n\n var spreadPathIndexByName = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition() {\n return false;\n },\n FragmentDefinition: function FragmentDefinition(node) {\n detectCycleRecursive(node);\n return false;\n }\n }; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(fragment) {\n if (visitedFrags[fragment.name.value]) {\n return;\n }\n\n var fragmentName = fragment.name.value;\n visitedFrags[fragmentName] = true;\n var spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n if (spreadNodes.length === 0) {\n return;\n }\n\n spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n for (var _i2 = 0; _i2 < spreadNodes.length; _i2++) {\n var spreadNode = spreadNodes[_i2];\n var spreadName = spreadNode.name.value;\n var cycleIndex = spreadPathIndexByName[spreadName];\n spreadPath.push(spreadNode);\n\n if (cycleIndex === undefined) {\n var spreadFragment = context.getFragment(spreadName);\n\n if (spreadFragment) {\n detectCycleRecursive(spreadFragment);\n }\n } else {\n var cyclePath = spreadPath.slice(cycleIndex);\n var fragmentNames = cyclePath.slice(0, -1).map(function (s) {\n return s.name.value;\n });\n context.reportError(new GraphQLError(cycleErrorMessage(spreadName, fragmentNames), cyclePath));\n }\n\n spreadPath.pop();\n }\n\n spreadPathIndexByName[fragmentName] = undefined;\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateVariableMessage(variableName) {\n return \"There can be only one variable named \\\"\".concat(variableName, \"\\\".\");\n}\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\n\nexport function UniqueVariableNames(context) {\n var knownVariableNames = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition() {\n knownVariableNames = Object.create(null);\n },\n VariableDefinition: function VariableDefinition(node) {\n var variableName = node.variable.name.value;\n\n if (knownVariableNames[variableName]) {\n context.reportError(new GraphQLError(duplicateVariableMessage(variableName), [knownVariableNames[variableName], node.variable.name]));\n } else {\n knownVariableNames[variableName] = node.variable.name;\n }\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function undefinedVarMessage(varName, opName) {\n return opName ? \"Variable \\\"$\".concat(varName, \"\\\" is not defined by operation \\\"\").concat(opName, \"\\\".\") : \"Variable \\\"$\".concat(varName, \"\\\" is not defined.\");\n}\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n */\n\nexport function NoUndefinedVariables(context) {\n var variableNameDefined = Object.create(null);\n return {\n OperationDefinition: {\n enter: function enter() {\n variableNameDefined = Object.create(null);\n },\n leave: function leave(operation) {\n var usages = context.getRecursiveVariableUsages(operation);\n\n for (var _i2 = 0; _i2 < usages.length; _i2++) {\n var _ref2 = usages[_i2];\n var node = _ref2.node;\n var varName = node.name.value;\n\n if (variableNameDefined[varName] !== true) {\n context.reportError(new GraphQLError(undefinedVarMessage(varName, operation.name && operation.name.value), [node, operation]));\n }\n }\n }\n },\n VariableDefinition: function VariableDefinition(node) {\n variableNameDefined[node.variable.name.value] = true;\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function unusedVariableMessage(varName, opName) {\n return opName ? \"Variable \\\"$\".concat(varName, \"\\\" is never used in operation \\\"\").concat(opName, \"\\\".\") : \"Variable \\\"$\".concat(varName, \"\\\" is never used.\");\n}\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n */\n\nexport function NoUnusedVariables(context) {\n var variableDefs = [];\n return {\n OperationDefinition: {\n enter: function enter() {\n variableDefs = [];\n },\n leave: function leave(operation) {\n var variableNameUsed = Object.create(null);\n var usages = context.getRecursiveVariableUsages(operation);\n var opName = operation.name ? operation.name.value : null;\n\n for (var _i2 = 0; _i2 < usages.length; _i2++) {\n var _ref2 = usages[_i2];\n var node = _ref2.node;\n variableNameUsed[node.name.value] = true;\n }\n\n for (var _i4 = 0, _variableDefs2 = variableDefs; _i4 < _variableDefs2.length; _i4++) {\n var variableDef = _variableDefs2[_i4];\n var variableName = variableDef.variable.name.value;\n\n if (variableNameUsed[variableName] !== true) {\n context.reportError(new GraphQLError(unusedVariableMessage(variableName, opName), variableDef));\n }\n }\n }\n },\n VariableDefinition: function VariableDefinition(def) {\n variableDefs.push(def);\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { DirectiveLocation } from '../../language/directiveLocation';\nimport { specifiedDirectives } from '../../type/directives';\nexport function unknownDirectiveMessage(directiveName) {\n return \"Unknown directive \\\"\".concat(directiveName, \"\\\".\");\n}\nexport function misplacedDirectiveMessage(directiveName, location) {\n return \"Directive \\\"\".concat(directiveName, \"\\\" may not be used on \").concat(location, \".\");\n}\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n */\n\nexport function KnownDirectives(context) {\n var locationsMap = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : specifiedDirectives;\n\n for (var _i2 = 0; _i2 < definedDirectives.length; _i2++) {\n var directive = definedDirectives[_i2];\n locationsMap[directive.name] = directive.locations;\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i4 = 0; _i4 < astDefinitions.length; _i4++) {\n var def = astDefinitions[_i4];\n\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n locationsMap[def.name.value] = def.locations.map(function (name) {\n return name.value;\n });\n }\n }\n\n return {\n Directive: function Directive(node, key, parent, path, ancestors) {\n var name = node.name.value;\n var locations = locationsMap[name];\n\n if (!locations) {\n context.reportError(new GraphQLError(unknownDirectiveMessage(name), node));\n return;\n }\n\n var candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n if (candidateLocation && locations.indexOf(candidateLocation) === -1) {\n context.reportError(new GraphQLError(misplacedDirectiveMessage(name, candidateLocation), node));\n }\n }\n };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n var appliedTo = ancestors[ancestors.length - 1];\n\n if (!Array.isArray(appliedTo)) {\n switch (appliedTo.kind) {\n case Kind.OPERATION_DEFINITION:\n switch (appliedTo.operation) {\n case 'query':\n return DirectiveLocation.QUERY;\n\n case 'mutation':\n return DirectiveLocation.MUTATION;\n\n case 'subscription':\n return DirectiveLocation.SUBSCRIPTION;\n }\n\n break;\n\n case Kind.FIELD:\n return DirectiveLocation.FIELD;\n\n case Kind.FRAGMENT_SPREAD:\n return DirectiveLocation.FRAGMENT_SPREAD;\n\n case Kind.INLINE_FRAGMENT:\n return DirectiveLocation.INLINE_FRAGMENT;\n\n case Kind.FRAGMENT_DEFINITION:\n return DirectiveLocation.FRAGMENT_DEFINITION;\n\n case Kind.VARIABLE_DEFINITION:\n return DirectiveLocation.VARIABLE_DEFINITION;\n\n case Kind.SCHEMA_DEFINITION:\n case Kind.SCHEMA_EXTENSION:\n return DirectiveLocation.SCHEMA;\n\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION:\n return DirectiveLocation.SCALAR;\n\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION:\n return DirectiveLocation.OBJECT;\n\n case Kind.FIELD_DEFINITION:\n return DirectiveLocation.FIELD_DEFINITION;\n\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_EXTENSION:\n return DirectiveLocation.INTERFACE;\n\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION:\n return DirectiveLocation.UNION;\n\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION:\n return DirectiveLocation.ENUM;\n\n case Kind.ENUM_VALUE_DEFINITION:\n return DirectiveLocation.ENUM_VALUE;\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return DirectiveLocation.INPUT_OBJECT;\n\n case Kind.INPUT_VALUE_DEFINITION:\n {\n var parentNode = ancestors[ancestors.length - 3];\n return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ? DirectiveLocation.INPUT_FIELD_DEFINITION : DirectiveLocation.ARGUMENT_DEFINITION;\n }\n }\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { specifiedDirectives } from '../../type/directives';\nexport function duplicateDirectiveMessage(directiveName) {\n return \"The directive \\\"\".concat(directiveName, \"\\\" can only be used once at this location.\");\n}\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n */\n\nexport function UniqueDirectivesPerLocation(context) {\n var uniqueDirectiveMap = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : specifiedDirectives;\n\n for (var _i2 = 0; _i2 < definedDirectives.length; _i2++) {\n var directive = definedDirectives[_i2];\n uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i4 = 0; _i4 < astDefinitions.length; _i4++) {\n var def = astDefinitions[_i4];\n\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n uniqueDirectiveMap[def.name.value] = !def.repeatable;\n }\n }\n\n return {\n // Many different AST nodes may contain directives. Rather than listing\n // them all, just listen for entering any node, and check to see if it\n // defines any directives.\n enter: function enter(node) {\n // Flow can't refine that node.directives will only contain directives,\n // so we cast so the rest of the code is well typed.\n var directives = node.directives;\n\n if (directives) {\n var knownDirectives = Object.create(null);\n\n for (var _i6 = 0; _i6 < directives.length; _i6++) {\n var _directive = directives[_i6];\n var directiveName = _directive.name.value;\n\n if (uniqueDirectiveMap[directiveName]) {\n if (knownDirectives[directiveName]) {\n context.reportError(new GraphQLError(duplicateDirectiveMessage(directiveName), [knownDirectives[directiveName], _directive]));\n } else {\n knownDirectives[directiveName] = _directive;\n }\n }\n }\n }\n }\n };\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { specifiedDirectives } from '../../type/directives';\nexport function unknownArgMessage(argName, fieldName, typeName, suggestedArgs) {\n return \"Unknown argument \\\"\".concat(argName, \"\\\" on field \\\"\").concat(fieldName, \"\\\" of type \\\"\").concat(typeName, \"\\\".\") + didYouMean(suggestedArgs.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n }));\n}\nexport function unknownDirectiveArgMessage(argName, directiveName, suggestedArgs) {\n return \"Unknown argument \\\"\".concat(argName, \"\\\" on directive \\\"@\").concat(directiveName, \"\\\".\") + didYouMean(suggestedArgs.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n }));\n}\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n */\n\nexport function KnownArgumentNames(context) {\n return _objectSpread({}, KnownArgumentNamesOnDirectives(context), {\n Argument: function Argument(argNode) {\n var argDef = context.getArgument();\n var fieldDef = context.getFieldDef();\n var parentType = context.getParentType();\n\n if (!argDef && fieldDef && parentType) {\n var argName = argNode.name.value;\n var knownArgsNames = fieldDef.args.map(function (arg) {\n return arg.name;\n });\n context.reportError(new GraphQLError(unknownArgMessage(argName, fieldDef.name, parentType.name, suggestionList(argName, knownArgsNames)), argNode));\n }\n }\n });\n} // @internal\n\nexport function KnownArgumentNamesOnDirectives(context) {\n var directiveArgs = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : specifiedDirectives;\n\n for (var _i2 = 0; _i2 < definedDirectives.length; _i2++) {\n var directive = definedDirectives[_i2];\n directiveArgs[directive.name] = directive.args.map(function (arg) {\n return arg.name;\n });\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i4 = 0; _i4 < astDefinitions.length; _i4++) {\n var def = astDefinitions[_i4];\n\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n directiveArgs[def.name.value] = def.arguments ? def.arguments.map(function (arg) {\n return arg.name.value;\n }) : [];\n }\n }\n\n return {\n Directive: function Directive(directiveNode) {\n var directiveName = directiveNode.name.value;\n var knownArgs = directiveArgs[directiveName];\n\n if (directiveNode.arguments && knownArgs) {\n for (var _i6 = 0, _directiveNode$argume2 = directiveNode.arguments; _i6 < _directiveNode$argume2.length; _i6++) {\n var argNode = _directiveNode$argume2[_i6];\n var argName = argNode.name.value;\n\n if (knownArgs.indexOf(argName) === -1) {\n var suggestions = suggestionList(argName, knownArgs);\n context.reportError(new GraphQLError(unknownDirectiveArgMessage(argName, directiveName, suggestions), argNode));\n }\n }\n }\n\n return false;\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateArgMessage(argName) {\n return \"There can be only one argument named \\\"\".concat(argName, \"\\\".\");\n}\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n */\n\nexport function UniqueArgumentNames(context) {\n var knownArgNames = Object.create(null);\n return {\n Field: function Field() {\n knownArgNames = Object.create(null);\n },\n Directive: function Directive() {\n knownArgNames = Object.create(null);\n },\n Argument: function Argument(node) {\n var argName = node.name.value;\n\n if (knownArgNames[argName]) {\n context.reportError(new GraphQLError(duplicateArgMessage(argName), [knownArgNames[argName], node.name]));\n } else {\n knownArgNames[argName] = node.name;\n }\n\n return false;\n }\n };\n}\n","import objectValues from '../../polyfills/objectValues';\nimport keyMap from '../../jsutils/keyMap';\nimport inspect from '../../jsutils/inspect';\nimport isInvalid from '../../jsutils/isInvalid';\nimport didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { print } from '../../language/printer';\nimport { isScalarType, isEnumType, isInputObjectType, isListType, isNonNullType, isRequiredInputField, getNullableType, getNamedType } from '../../type/definition';\nexport function badValueMessage(typeName, valueName, message) {\n return \"Expected type \".concat(typeName, \", found \").concat(valueName) + (message ? \"; \".concat(message) : '.');\n}\nexport function badEnumValueMessage(typeName, valueName, suggestedValues) {\n return \"Expected type \".concat(typeName, \", found \").concat(valueName, \".\") + didYouMean('the enum value', suggestedValues);\n}\nexport function requiredFieldMessage(typeName, fieldName, fieldTypeName) {\n return \"Field \".concat(typeName, \".\").concat(fieldName, \" of required type \").concat(fieldTypeName, \" was not provided.\");\n}\nexport function unknownFieldMessage(typeName, fieldName, suggestedFields) {\n return \"Field \\\"\".concat(fieldName, \"\\\" is not defined by type \").concat(typeName, \".\") + didYouMean(suggestedFields);\n}\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n */\n\nexport function ValuesOfCorrectType(context) {\n return {\n NullValue: function NullValue(node) {\n var type = context.getInputType();\n\n if (isNonNullType(type)) {\n context.reportError(new GraphQLError(badValueMessage(inspect(type), print(node)), node));\n }\n },\n ListValue: function ListValue(node) {\n // Note: TypeInfo will traverse into a list's item type, so look to the\n // parent input type to check if it is a list.\n var type = getNullableType(context.getParentInputType());\n\n if (!isListType(type)) {\n isValidScalar(context, node);\n return false; // Don't traverse further.\n }\n },\n ObjectValue: function ObjectValue(node) {\n var type = getNamedType(context.getInputType());\n\n if (!isInputObjectType(type)) {\n isValidScalar(context, node);\n return false; // Don't traverse further.\n } // Ensure every required field exists.\n\n\n var fieldNodeMap = keyMap(node.fields, function (field) {\n return field.name.value;\n });\n\n for (var _i2 = 0, _objectValues2 = objectValues(type.getFields()); _i2 < _objectValues2.length; _i2++) {\n var fieldDef = _objectValues2[_i2];\n var fieldNode = fieldNodeMap[fieldDef.name];\n\n if (!fieldNode && isRequiredInputField(fieldDef)) {\n var typeStr = inspect(fieldDef.type);\n context.reportError(new GraphQLError(requiredFieldMessage(type.name, fieldDef.name, typeStr), node));\n }\n }\n },\n ObjectField: function ObjectField(node) {\n var parentType = getNamedType(context.getParentInputType());\n var fieldType = context.getInputType();\n\n if (!fieldType && isInputObjectType(parentType)) {\n var suggestions = suggestionList(node.name.value, Object.keys(parentType.getFields()));\n context.reportError(new GraphQLError(unknownFieldMessage(parentType.name, node.name.value, suggestions), node));\n }\n },\n EnumValue: function EnumValue(node) {\n var type = getNamedType(context.getInputType());\n\n if (!isEnumType(type)) {\n isValidScalar(context, node);\n } else if (!type.getValue(node.value)) {\n context.reportError(new GraphQLError(badEnumValueMessage(type.name, print(node), enumTypeSuggestion(type, node)), node));\n }\n },\n IntValue: function IntValue(node) {\n return isValidScalar(context, node);\n },\n FloatValue: function FloatValue(node) {\n return isValidScalar(context, node);\n },\n StringValue: function StringValue(node) {\n return isValidScalar(context, node);\n },\n BooleanValue: function BooleanValue(node) {\n return isValidScalar(context, node);\n }\n };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidScalar(context, node) {\n // Report any error at the full type expected by the location.\n var locationType = context.getInputType();\n\n if (!locationType) {\n return;\n }\n\n var type = getNamedType(locationType);\n\n if (!isScalarType(type)) {\n var message = isEnumType(type) ? badEnumValueMessage(inspect(locationType), print(node), enumTypeSuggestion(type, node)) : badValueMessage(inspect(locationType), print(node));\n context.reportError(new GraphQLError(message, node));\n return;\n } // Scalars determine if a literal value is valid via parseLiteral() which\n // may throw or return an invalid value to indicate failure.\n\n\n try {\n var parseResult = type.parseLiteral(node, undefined\n /* variables */\n );\n\n if (isInvalid(parseResult)) {\n context.reportError(new GraphQLError(badValueMessage(inspect(locationType), print(node)), node));\n }\n } catch (error) {\n // Ensure a reference to the original error is maintained.\n context.reportError(new GraphQLError(badValueMessage(inspect(locationType), print(node), error.message), node, undefined, undefined, undefined, error));\n }\n}\n\nfunction enumTypeSuggestion(type, node) {\n var allNames = type.getValues().map(function (value) {\n return value.name;\n });\n return suggestionList(print(node), allNames);\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport inspect from '../../jsutils/inspect';\nimport keyMap from '../../jsutils/keyMap';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { print } from '../../language/printer';\nimport { specifiedDirectives } from '../../type/directives';\nimport { isType, isRequiredArgument } from '../../type/definition';\nexport function missingFieldArgMessage(fieldName, argName, type) {\n return \"Field \\\"\".concat(fieldName, \"\\\" argument \\\"\").concat(argName, \"\\\" of type \\\"\").concat(type, \"\\\" is required, but it was not provided.\");\n}\nexport function missingDirectiveArgMessage(directiveName, argName, type) {\n return \"Directive \\\"@\".concat(directiveName, \"\\\" argument \\\"\").concat(argName, \"\\\" of type \\\"\").concat(type, \"\\\" is required, but it was not provided.\");\n}\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\n\nexport function ProvidedRequiredArguments(context) {\n return _objectSpread({}, ProvidedRequiredArgumentsOnDirectives(context), {\n Field: {\n // Validate on leave to allow for deeper errors to appear first.\n leave: function leave(fieldNode) {\n var fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n return false;\n }\n\n var argNodes = fieldNode.arguments || [];\n var argNodeMap = keyMap(argNodes, function (arg) {\n return arg.name.value;\n });\n\n for (var _i2 = 0, _fieldDef$args2 = fieldDef.args; _i2 < _fieldDef$args2.length; _i2++) {\n var argDef = _fieldDef$args2[_i2];\n var argNode = argNodeMap[argDef.name];\n\n if (!argNode && isRequiredArgument(argDef)) {\n context.reportError(new GraphQLError(missingFieldArgMessage(fieldDef.name, argDef.name, inspect(argDef.type)), fieldNode));\n }\n }\n }\n }\n });\n} // @internal\n\nexport function ProvidedRequiredArgumentsOnDirectives(context) {\n var requiredArgsMap = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : specifiedDirectives;\n\n for (var _i4 = 0; _i4 < definedDirectives.length; _i4++) {\n var directive = definedDirectives[_i4];\n requiredArgsMap[directive.name] = keyMap(directive.args.filter(isRequiredArgument), function (arg) {\n return arg.name;\n });\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i6 = 0; _i6 < astDefinitions.length; _i6++) {\n var def = astDefinitions[_i6];\n\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n requiredArgsMap[def.name.value] = keyMap(def.arguments ? def.arguments.filter(isRequiredArgumentNode) : [], function (arg) {\n return arg.name.value;\n });\n }\n }\n\n return {\n Directive: {\n // Validate on leave to allow for deeper errors to appear first.\n leave: function leave(directiveNode) {\n var directiveName = directiveNode.name.value;\n var requiredArgs = requiredArgsMap[directiveName];\n\n if (requiredArgs) {\n var argNodes = directiveNode.arguments || [];\n var argNodeMap = keyMap(argNodes, function (arg) {\n return arg.name.value;\n });\n\n for (var _i8 = 0, _Object$keys2 = Object.keys(requiredArgs); _i8 < _Object$keys2.length; _i8++) {\n var argName = _Object$keys2[_i8];\n\n if (!argNodeMap[argName]) {\n var argType = requiredArgs[argName].type;\n context.reportError(new GraphQLError(missingDirectiveArgMessage(directiveName, argName, isType(argType) ? inspect(argType) : print(argType)), directiveNode));\n }\n }\n }\n }\n }\n };\n}\n\nfunction isRequiredArgumentNode(arg) {\n return arg.type.kind === Kind.NON_NULL_TYPE && arg.defaultValue == null;\n}\n","import inspect from '../../jsutils/inspect';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { isNonNullType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nimport { isTypeSubTypeOf } from '../../utilities/typeComparators';\nexport function badVarPosMessage(varName, varType, expectedType) {\n return \"Variable \\\"$\".concat(varName, \"\\\" of type \\\"\").concat(varType, \"\\\" used in position expecting type \\\"\").concat(expectedType, \"\\\".\");\n}\n/**\n * Variables passed to field arguments conform to type\n */\n\nexport function VariablesInAllowedPosition(context) {\n var varDefMap = Object.create(null);\n return {\n OperationDefinition: {\n enter: function enter() {\n varDefMap = Object.create(null);\n },\n leave: function leave(operation) {\n var usages = context.getRecursiveVariableUsages(operation);\n\n for (var _i2 = 0; _i2 < usages.length; _i2++) {\n var _ref2 = usages[_i2];\n var node = _ref2.node;\n var type = _ref2.type;\n var defaultValue = _ref2.defaultValue;\n var varName = node.name.value;\n var varDef = varDefMap[varName];\n\n if (varDef && type) {\n // A var type is allowed if it is the same or more strict (e.g. is\n // a subtype of) than the expected type. It can be more strict if\n // the variable type is non-null when the expected type is nullable.\n // If both are list types, the variable item type can be more strict\n // than the expected item type (contravariant).\n var schema = context.getSchema();\n var varType = typeFromAST(schema, varDef.type);\n\n if (varType && !allowedVariableUsage(schema, varType, varDef.defaultValue, type, defaultValue)) {\n context.reportError(new GraphQLError(badVarPosMessage(varName, inspect(varType), inspect(type)), [varDef, node]));\n }\n }\n }\n }\n },\n VariableDefinition: function VariableDefinition(node) {\n varDefMap[node.variable.name.value] = node;\n }\n };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(schema, varType, varDefaultValue, locationType, locationDefaultValue) {\n if (isNonNullType(locationType) && !isNonNullType(varType)) {\n var hasNonNullVariableDefaultValue = varDefaultValue != null && varDefaultValue.kind !== Kind.NULL;\n var hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n return false;\n }\n\n var nullableLocationType = locationType.ofType;\n return isTypeSubTypeOf(schema, varType, nullableLocationType);\n }\n\n return isTypeSubTypeOf(schema, varType, locationType);\n}\n","import find from '../../polyfills/find';\nimport objectEntries from '../../polyfills/objectEntries';\nimport inspect from '../../jsutils/inspect';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { print } from '../../language/printer';\nimport { getNamedType, isNonNullType, isLeafType, isObjectType, isListType, isInterfaceType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nexport function fieldsConflictMessage(responseName, reason) {\n return \"Fields \\\"\".concat(responseName, \"\\\" conflict because \").concat(reasonMessage(reason), \". \") + 'Use different aliases on the fields to fetch both if this was intentional.';\n}\n\nfunction reasonMessage(reason) {\n if (Array.isArray(reason)) {\n return reason.map(function (_ref) {\n var responseName = _ref[0],\n subreason = _ref[1];\n return \"subfields \\\"\".concat(responseName, \"\\\" conflict because \").concat(reasonMessage(subreason));\n }).join(' and ');\n }\n\n return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n */\n\n\nexport function OverlappingFieldsCanBeMerged(context) {\n // A memoization for when two fragments are compared \"between\" each other for\n // conflicts. Two fragments may be compared many times, so memoizing this can\n // dramatically improve the performance of this validator.\n var comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n // selection set. Selection sets may be asked for this information multiple\n // times, so this improves the performance of this validator.\n\n var cachedFieldsAndFragmentNames = new Map();\n return {\n SelectionSet: function SelectionSet(selectionSet) {\n var conflicts = findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, context.getParentType(), selectionSet);\n\n for (var _i2 = 0; _i2 < conflicts.length; _i2++) {\n var _ref3 = conflicts[_i2];\n var _ref2$ = _ref3[0];\n var responseName = _ref2$[0];\n var reason = _ref2$[1];\n var fields1 = _ref3[1];\n var fields2 = _ref3[2];\n context.reportError(new GraphQLError(fieldsConflictMessage(responseName, reason), fields1.concat(fields2)));\n }\n }\n };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentType, selectionSet) {\n var conflicts = [];\n\n var _getFieldsAndFragment = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet),\n fieldMap = _getFieldsAndFragment[0],\n fragmentNames = _getFieldsAndFragment[1]; // (A) Find find all conflicts \"within\" the fields of this selection set.\n // Note: this is the *only place* `collectConflictsWithin` is called.\n\n\n collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap);\n\n if (fragmentNames.length !== 0) {\n // (B) Then collect conflicts between these fields and those represented by\n // each spread fragment name found.\n var comparedFragments = Object.create(null);\n\n for (var i = 0; i < fragmentNames.length; i++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragments, comparedFragmentPairs, false, fieldMap, fragmentNames[i]); // (C) Then compare this fragment with all other fragments found in this\n // selection set to collect conflicts between fragments spread together.\n // This compares each item in the list of fragment names to every other\n // item in that same list (except for itself).\n\n for (var j = i + 1; j < fragmentNames.length; j++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, fragmentNames[i], fragmentNames[j]);\n }\n }\n }\n\n return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\n\nfunction collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragments, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fragmentName) {\n // Memoize so a fragment is not compared for conflicts more than once.\n if (comparedFragments[fragmentName]) {\n return;\n }\n\n comparedFragments[fragmentName] = true;\n var fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n return;\n }\n\n var _getReferencedFieldsA = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment),\n fieldMap2 = _getReferencedFieldsA[0],\n fragmentNames2 = _getReferencedFieldsA[1]; // Do not compare a fragment's fieldMap to itself.\n\n\n if (fieldMap === fieldMap2) {\n return;\n } // (D) First collect any conflicts between the provided collection of fields\n // and the collection of fields represented by the given fragment.\n\n\n collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fieldMap2); // (E) Then collect any conflicts between the provided collection of fields\n // and any fragment names found in the given fragment.\n\n for (var i = 0; i < fragmentNames2.length; i++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragments, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fragmentNames2[i]);\n }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\n\nfunction collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentName2) {\n // No need to compare a fragment to itself.\n if (fragmentName1 === fragmentName2) {\n return;\n } // Memoize so two fragments are not compared for conflicts more than once.\n\n\n if (comparedFragmentPairs.has(fragmentName1, fragmentName2, areMutuallyExclusive)) {\n return;\n }\n\n comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n var fragment1 = context.getFragment(fragmentName1);\n var fragment2 = context.getFragment(fragmentName2);\n\n if (!fragment1 || !fragment2) {\n return;\n }\n\n var _getReferencedFieldsA2 = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment1),\n fieldMap1 = _getReferencedFieldsA2[0],\n fragmentNames1 = _getReferencedFieldsA2[1];\n\n var _getReferencedFieldsA3 = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment2),\n fieldMap2 = _getReferencedFieldsA3[0],\n fragmentNames2 = _getReferencedFieldsA3[1]; // (F) First, collect all conflicts between these two collections of fields\n // (not including any nested fragments).\n\n\n collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (G) Then collect conflicts between the first fragment and any nested\n // fragments spread in the second fragment.\n\n for (var j = 0; j < fragmentNames2.length; j++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentNames2[j]);\n } // (G) Then collect conflicts between the second fragment and any nested\n // fragments spread in the first fragment.\n\n\n for (var i = 0; i < fragmentNames1.length; i++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentNames1[i], fragmentName2);\n }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\n\nfunction findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, parentType1, selectionSet1, parentType2, selectionSet2) {\n var conflicts = [];\n\n var _getFieldsAndFragment2 = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType1, selectionSet1),\n fieldMap1 = _getFieldsAndFragment2[0],\n fragmentNames1 = _getFieldsAndFragment2[1];\n\n var _getFieldsAndFragment3 = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType2, selectionSet2),\n fieldMap2 = _getFieldsAndFragment3[0],\n fragmentNames2 = _getFieldsAndFragment3[1]; // (H) First, collect all conflicts between these two collections of field.\n\n\n collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (I) Then collect conflicts between the first collection of fields and\n // those referenced by each fragment name associated with the second.\n\n if (fragmentNames2.length !== 0) {\n var comparedFragments = Object.create(null);\n\n for (var j = 0; j < fragmentNames2.length; j++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragments, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fragmentNames2[j]);\n }\n } // (I) Then collect conflicts between the second collection of fields and\n // those referenced by each fragment name associated with the first.\n\n\n if (fragmentNames1.length !== 0) {\n var _comparedFragments = Object.create(null);\n\n for (var i = 0; i < fragmentNames1.length; i++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, _comparedFragments, comparedFragmentPairs, areMutuallyExclusive, fieldMap2, fragmentNames1[i]);\n }\n } // (J) Also collect conflicts between any fragment names by the first and\n // fragment names by the second. This compares each item in the first set of\n // names to each item in the second set of names.\n\n\n for (var _i3 = 0; _i3 < fragmentNames1.length; _i3++) {\n for (var _j = 0; _j < fragmentNames2.length; _j++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentNames1[_i3], fragmentNames2[_j]);\n }\n }\n\n return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\n\nfunction collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For every response name, if there are multiple fields, they\n // must be compared to find a potential conflict.\n for (var _i5 = 0, _objectEntries2 = objectEntries(fieldMap); _i5 < _objectEntries2.length; _i5++) {\n var _ref5 = _objectEntries2[_i5];\n var responseName = _ref5[0];\n var fields = _ref5[1];\n\n // This compares every field in the list to every other field in this list\n // (except to itself). If the list only has one item, nothing needs to\n // be compared.\n if (fields.length > 1) {\n for (var i = 0; i < fields.length; i++) {\n for (var j = i + 1; j < fields.length; j++) {\n var conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, // within one collection is never mutually exclusive\n responseName, fields[i], fields[j]);\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\n\nfunction collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, fieldMap1, fieldMap2) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For any response name which appears in both provided field\n // maps, each field from the first field map must be compared to every field\n // in the second field map to find potential conflicts.\n for (var _i7 = 0, _Object$keys2 = Object.keys(fieldMap1); _i7 < _Object$keys2.length; _i7++) {\n var responseName = _Object$keys2[_i7];\n var fields2 = fieldMap2[responseName];\n\n if (fields2) {\n var fields1 = fieldMap1[responseName];\n\n for (var i = 0; i < fields1.length; i++) {\n for (var j = 0; j < fields2.length; j++) {\n var conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, fields1[i], fields2[j]);\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\n\nfunction findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, field1, field2) {\n var parentType1 = field1[0],\n node1 = field1[1],\n def1 = field1[2];\n var parentType2 = field2[0],\n node2 = field2[1],\n def2 = field2[2]; // If it is known that two fields could not possibly apply at the same\n // time, due to the parent types, then it is safe to permit them to diverge\n // in aliased field or arguments used as they will not present any ambiguity\n // by differing.\n // It is known that two parent types could never overlap if they are\n // different Object types. Interface or Union types might overlap - if not\n // in the current state of the schema, then perhaps in some future version,\n // thus may not safely diverge.\n\n var areMutuallyExclusive = parentFieldsAreMutuallyExclusive || parentType1 !== parentType2 && isObjectType(parentType1) && isObjectType(parentType2); // The return type for each field.\n\n var type1 = def1 && def1.type;\n var type2 = def2 && def2.type;\n\n if (!areMutuallyExclusive) {\n // Two aliases must refer to the same field.\n var name1 = node1.name.value;\n var name2 = node2.name.value;\n\n if (name1 !== name2) {\n return [[responseName, \"\".concat(name1, \" and \").concat(name2, \" are different fields\")], [node1], [node2]];\n } // Two field calls must have the same arguments.\n\n\n if (!sameArguments(node1.arguments || [], node2.arguments || [])) {\n return [[responseName, 'they have differing arguments'], [node1], [node2]];\n }\n }\n\n if (type1 && type2 && doTypesConflict(type1, type2)) {\n return [[responseName, \"they return conflicting types \".concat(inspect(type1), \" and \").concat(inspect(type2))], [node1], [node2]];\n } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n // for both collections so fields in a fragment reference are never\n // compared to themselves.\n\n\n var selectionSet1 = node1.selectionSet;\n var selectionSet2 = node2.selectionSet;\n\n if (selectionSet1 && selectionSet2) {\n var conflicts = findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, getNamedType(type1), selectionSet1, getNamedType(type2), selectionSet2);\n return subfieldConflicts(conflicts, responseName, node1, node2);\n }\n}\n\nfunction sameArguments(arguments1, arguments2) {\n if (arguments1.length !== arguments2.length) {\n return false;\n }\n\n return arguments1.every(function (argument1) {\n var argument2 = find(arguments2, function (argument) {\n return argument.name.value === argument1.name.value;\n });\n\n if (!argument2) {\n return false;\n }\n\n return sameValue(argument1.value, argument2.value);\n });\n}\n\nfunction sameValue(value1, value2) {\n return !value1 && !value2 || print(value1) === print(value2);\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\n\nfunction doTypesConflict(type1, type2) {\n if (isListType(type1)) {\n return isListType(type2) ? doTypesConflict(type1.ofType, type2.ofType) : true;\n }\n\n if (isListType(type2)) {\n return true;\n }\n\n if (isNonNullType(type1)) {\n return isNonNullType(type2) ? doTypesConflict(type1.ofType, type2.ofType) : true;\n }\n\n if (isNonNullType(type2)) {\n return true;\n }\n\n if (isLeafType(type1) || isLeafType(type2)) {\n return type1 !== type2;\n }\n\n return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\n\nfunction getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet) {\n var cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n if (!cached) {\n var nodeAndDefs = Object.create(null);\n var fragmentNames = Object.create(null);\n\n _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeAndDefs, fragmentNames);\n\n cached = [nodeAndDefs, Object.keys(fragmentNames)];\n cachedFieldsAndFragmentNames.set(selectionSet, cached);\n }\n\n return cached;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\n\nfunction getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment) {\n // Short-circuit building a type from the node if possible.\n var cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n if (cached) {\n return cached;\n }\n\n var fragmentType = typeFromAST(context.getSchema(), fragment.typeCondition);\n return getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragmentType, fragment.selectionSet);\n}\n\nfunction _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeAndDefs, fragmentNames) {\n for (var _i9 = 0, _selectionSet$selecti2 = selectionSet.selections; _i9 < _selectionSet$selecti2.length; _i9++) {\n var selection = _selectionSet$selecti2[_i9];\n\n switch (selection.kind) {\n case Kind.FIELD:\n {\n var fieldName = selection.name.value;\n var fieldDef = void 0;\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n fieldDef = parentType.getFields()[fieldName];\n }\n\n var responseName = selection.alias ? selection.alias.value : fieldName;\n\n if (!nodeAndDefs[responseName]) {\n nodeAndDefs[responseName] = [];\n }\n\n nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n break;\n }\n\n case Kind.FRAGMENT_SPREAD:\n fragmentNames[selection.name.value] = true;\n break;\n\n case Kind.INLINE_FRAGMENT:\n {\n var typeCondition = selection.typeCondition;\n var inlineFragmentType = typeCondition ? typeFromAST(context.getSchema(), typeCondition) : parentType;\n\n _collectFieldsAndFragmentNames(context, inlineFragmentType, selection.selectionSet, nodeAndDefs, fragmentNames);\n\n break;\n }\n }\n }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n if (conflicts.length > 0) {\n return [[responseName, conflicts.map(function (_ref6) {\n var reason = _ref6[0];\n return reason;\n })], conflicts.reduce(function (allFields, _ref7) {\n var fields1 = _ref7[1];\n return allFields.concat(fields1);\n }, [node1]), conflicts.reduce(function (allFields, _ref8) {\n var fields2 = _ref8[2];\n return allFields.concat(fields2);\n }, [node2])];\n }\n}\n/**\n * A way to keep track of pairs of things when the ordering of the pair does\n * not matter. We do this by maintaining a sort of double adjacency sets.\n */\n\n\nvar PairSet =\n/*#__PURE__*/\nfunction () {\n function PairSet() {\n this._data = Object.create(null);\n }\n\n var _proto = PairSet.prototype;\n\n _proto.has = function has(a, b, areMutuallyExclusive) {\n var first = this._data[a];\n var result = first && first[b];\n\n if (result === undefined) {\n return false;\n } // areMutuallyExclusive being false is a superset of being true,\n // hence if we want to know if this PairSet \"has\" these two with no\n // exclusivity, we have to ensure it was added as such.\n\n\n if (areMutuallyExclusive === false) {\n return result === false;\n }\n\n return true;\n };\n\n _proto.add = function add(a, b, areMutuallyExclusive) {\n _pairSetAdd(this._data, a, b, areMutuallyExclusive);\n\n _pairSetAdd(this._data, b, a, areMutuallyExclusive);\n };\n\n return PairSet;\n}();\n\nfunction _pairSetAdd(data, a, b, areMutuallyExclusive) {\n var map = data[a];\n\n if (!map) {\n map = Object.create(null);\n data[a] = map;\n }\n\n map[b] = areMutuallyExclusive;\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateInputFieldMessage(fieldName) {\n return \"There can be only one input field named \\\"\".concat(fieldName, \"\\\".\");\n}\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n */\n\nexport function UniqueInputFieldNames(context) {\n var knownNameStack = [];\n var knownNames = Object.create(null);\n return {\n ObjectValue: {\n enter: function enter() {\n knownNameStack.push(knownNames);\n knownNames = Object.create(null);\n },\n leave: function leave() {\n knownNames = knownNameStack.pop();\n }\n },\n ObjectField: function ObjectField(node) {\n var fieldName = node.name.value;\n\n if (knownNames[fieldName]) {\n context.reportError(new GraphQLError(duplicateInputFieldMessage(fieldName), [knownNames[fieldName], node.name]));\n } else {\n knownNames[fieldName] = node.name;\n }\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function schemaDefinitionNotAloneMessage() {\n return 'Must provide only one schema definition.';\n}\nexport function canNotDefineSchemaWithinExtensionMessage() {\n return 'Cannot define a new schema within a schema extension.';\n}\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\n\nexport function LoneSchemaDefinition(context) {\n var oldSchema = context.getSchema();\n var alreadyDefined = oldSchema && (oldSchema.astNode || oldSchema.getQueryType() || oldSchema.getMutationType() || oldSchema.getSubscriptionType());\n var schemaDefinitionsCount = 0;\n return {\n SchemaDefinition: function SchemaDefinition(node) {\n if (alreadyDefined) {\n context.reportError(new GraphQLError(canNotDefineSchemaWithinExtensionMessage(), node));\n return;\n }\n\n if (schemaDefinitionsCount > 0) {\n context.reportError(new GraphQLError(schemaDefinitionNotAloneMessage(), node));\n }\n\n ++schemaDefinitionsCount;\n }\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateOperationTypeMessage(operation) {\n return \"There can be only one \".concat(operation, \" type in schema.\");\n}\nexport function existedOperationTypeMessage(operation) {\n return \"Type for \".concat(operation, \" already defined in the schema. It cannot be redefined.\");\n}\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\n\nexport function UniqueOperationTypes(context) {\n var schema = context.getSchema();\n var definedOperationTypes = Object.create(null);\n var existingOperationTypes = schema ? {\n query: schema.getQueryType(),\n mutation: schema.getMutationType(),\n subscription: schema.getSubscriptionType()\n } : {};\n return {\n SchemaDefinition: checkOperationTypes,\n SchemaExtension: checkOperationTypes\n };\n\n function checkOperationTypes(node) {\n if (node.operationTypes) {\n for (var _i2 = 0, _ref2 = node.operationTypes || []; _i2 < _ref2.length; _i2++) {\n var operationType = _ref2[_i2];\n var operation = operationType.operation;\n var alreadyDefinedOperationType = definedOperationTypes[operation];\n\n if (existingOperationTypes[operation]) {\n context.reportError(new GraphQLError(existedOperationTypeMessage(operation), operationType));\n } else if (alreadyDefinedOperationType) {\n context.reportError(new GraphQLError(duplicateOperationTypeMessage(operation), [alreadyDefinedOperationType, operationType]));\n } else {\n definedOperationTypes[operation] = operationType;\n }\n }\n }\n\n return false;\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateTypeNameMessage(typeName) {\n return \"There can be only one type named \\\"\".concat(typeName, \"\\\".\");\n}\nexport function existedTypeNameMessage(typeName) {\n return \"Type \\\"\".concat(typeName, \"\\\" already exists in the schema. It cannot also be defined in this type definition.\");\n}\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\n\nexport function UniqueTypeNames(context) {\n var knownTypeNames = Object.create(null);\n var schema = context.getSchema();\n return {\n ScalarTypeDefinition: checkTypeName,\n ObjectTypeDefinition: checkTypeName,\n InterfaceTypeDefinition: checkTypeName,\n UnionTypeDefinition: checkTypeName,\n EnumTypeDefinition: checkTypeName,\n InputObjectTypeDefinition: checkTypeName\n };\n\n function checkTypeName(node) {\n var typeName = node.name.value;\n\n if (schema && schema.getType(typeName)) {\n context.reportError(new GraphQLError(existedTypeNameMessage(typeName), node.name));\n return;\n }\n\n if (knownTypeNames[typeName]) {\n context.reportError(new GraphQLError(duplicateTypeNameMessage(typeName), [knownTypeNames[typeName], node.name]));\n } else {\n knownTypeNames[typeName] = node.name;\n }\n\n return false;\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nimport { isEnumType } from '../../type/definition';\nexport function duplicateEnumValueNameMessage(typeName, valueName) {\n return \"Enum value \\\"\".concat(typeName, \".\").concat(valueName, \"\\\" can only be defined once.\");\n}\nexport function existedEnumValueNameMessage(typeName, valueName) {\n return \"Enum value \\\"\".concat(typeName, \".\").concat(valueName, \"\\\" already exists in the schema. It cannot also be defined in this type extension.\");\n}\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\n\nexport function UniqueEnumValueNames(context) {\n var schema = context.getSchema();\n var existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n var knownValueNames = Object.create(null);\n return {\n EnumTypeDefinition: checkValueUniqueness,\n EnumTypeExtension: checkValueUniqueness\n };\n\n function checkValueUniqueness(node) {\n var typeName = node.name.value;\n\n if (!knownValueNames[typeName]) {\n knownValueNames[typeName] = Object.create(null);\n }\n\n if (node.values) {\n var valueNames = knownValueNames[typeName];\n\n for (var _i2 = 0, _node$values2 = node.values; _i2 < _node$values2.length; _i2++) {\n var valueDef = _node$values2[_i2];\n var valueName = valueDef.name.value;\n var existingType = existingTypeMap[typeName];\n\n if (isEnumType(existingType) && existingType.getValue(valueName)) {\n context.reportError(new GraphQLError(existedEnumValueNameMessage(typeName, valueName), valueDef.name));\n } else if (valueNames[valueName]) {\n context.reportError(new GraphQLError(duplicateEnumValueNameMessage(typeName, valueName), [valueNames[valueName], valueDef.name]));\n } else {\n valueNames[valueName] = valueDef.name;\n }\n }\n }\n\n return false;\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nimport { isObjectType, isInterfaceType, isInputObjectType } from '../../type/definition';\nexport function duplicateFieldDefinitionNameMessage(typeName, fieldName) {\n return \"Field \\\"\".concat(typeName, \".\").concat(fieldName, \"\\\" can only be defined once.\");\n}\nexport function existedFieldDefinitionNameMessage(typeName, fieldName) {\n return \"Field \\\"\".concat(typeName, \".\").concat(fieldName, \"\\\" already exists in the schema. It cannot also be defined in this type extension.\");\n}\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\n\nexport function UniqueFieldDefinitionNames(context) {\n var schema = context.getSchema();\n var existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n var knownFieldNames = Object.create(null);\n return {\n InputObjectTypeDefinition: checkFieldUniqueness,\n InputObjectTypeExtension: checkFieldUniqueness,\n InterfaceTypeDefinition: checkFieldUniqueness,\n InterfaceTypeExtension: checkFieldUniqueness,\n ObjectTypeDefinition: checkFieldUniqueness,\n ObjectTypeExtension: checkFieldUniqueness\n };\n\n function checkFieldUniqueness(node) {\n var typeName = node.name.value;\n\n if (!knownFieldNames[typeName]) {\n knownFieldNames[typeName] = Object.create(null);\n }\n\n if (node.fields) {\n var fieldNames = knownFieldNames[typeName];\n\n for (var _i2 = 0, _node$fields2 = node.fields; _i2 < _node$fields2.length; _i2++) {\n var fieldDef = _node$fields2[_i2];\n var fieldName = fieldDef.name.value;\n\n if (hasField(existingTypeMap[typeName], fieldName)) {\n context.reportError(new GraphQLError(existedFieldDefinitionNameMessage(typeName, fieldName), fieldDef.name));\n } else if (fieldNames[fieldName]) {\n context.reportError(new GraphQLError(duplicateFieldDefinitionNameMessage(typeName, fieldName), [fieldNames[fieldName], fieldDef.name]));\n } else {\n fieldNames[fieldName] = fieldDef.name;\n }\n }\n }\n\n return false;\n }\n}\n\nfunction hasField(type, fieldName) {\n if (isObjectType(type) || isInterfaceType(type) || isInputObjectType(type)) {\n return type.getFields()[fieldName];\n }\n\n return false;\n}\n","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateDirectiveNameMessage(directiveName) {\n return \"There can be only one directive named \\\"\".concat(directiveName, \"\\\".\");\n}\nexport function existedDirectiveNameMessage(directiveName) {\n return \"Directive \\\"\".concat(directiveName, \"\\\" already exists in the schema. It cannot be redefined.\");\n}\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\n\nexport function UniqueDirectiveNames(context) {\n var knownDirectiveNames = Object.create(null);\n var schema = context.getSchema();\n return {\n DirectiveDefinition: function DirectiveDefinition(node) {\n var directiveName = node.name.value;\n\n if (schema && schema.getDirective(directiveName)) {\n context.reportError(new GraphQLError(existedDirectiveNameMessage(directiveName), node.name));\n return;\n }\n\n if (knownDirectiveNames[directiveName]) {\n context.reportError(new GraphQLError(duplicateDirectiveNameMessage(directiveName), [knownDirectiveNames[directiveName], node.name]));\n } else {\n knownDirectiveNames[directiveName] = node.name;\n }\n\n return false;\n }\n };\n}\n","var _defKindToExtKind;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { isTypeDefinitionNode } from '../../language/predicates';\nimport { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../../type/definition';\nexport function extendingUnknownTypeMessage(typeName, suggestedTypes) {\n return \"Cannot extend type \\\"\".concat(typeName, \"\\\" because it is not defined.\") + didYouMean(suggestedTypes.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n }));\n}\nexport function extendingDifferentTypeKindMessage(typeName, kind) {\n return \"Cannot extend non-\".concat(kind, \" type \\\"\").concat(typeName, \"\\\".\");\n}\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\n\nexport function PossibleTypeExtensions(context) {\n var schema = context.getSchema();\n var definedTypes = Object.create(null);\n\n for (var _i2 = 0, _context$getDocument$2 = context.getDocument().definitions; _i2 < _context$getDocument$2.length; _i2++) {\n var def = _context$getDocument$2[_i2];\n\n if (isTypeDefinitionNode(def)) {\n definedTypes[def.name.value] = def;\n }\n }\n\n return {\n ScalarTypeExtension: checkExtension,\n ObjectTypeExtension: checkExtension,\n InterfaceTypeExtension: checkExtension,\n UnionTypeExtension: checkExtension,\n EnumTypeExtension: checkExtension,\n InputObjectTypeExtension: checkExtension\n };\n\n function checkExtension(node) {\n var typeName = node.name.value;\n var defNode = definedTypes[typeName];\n var existingType = schema && schema.getType(typeName);\n\n if (defNode) {\n var expectedKind = defKindToExtKind[defNode.kind];\n\n if (expectedKind !== node.kind) {\n context.reportError(new GraphQLError(extendingDifferentTypeKindMessage(typeName, extensionKindToTypeName(expectedKind)), [defNode, node]));\n }\n } else if (existingType) {\n var _expectedKind = typeToExtKind(existingType);\n\n if (_expectedKind !== node.kind) {\n context.reportError(new GraphQLError(extendingDifferentTypeKindMessage(typeName, extensionKindToTypeName(_expectedKind)), node));\n }\n } else {\n var allTypeNames = Object.keys(definedTypes);\n\n if (schema) {\n allTypeNames = allTypeNames.concat(Object.keys(schema.getTypeMap()));\n }\n\n var suggestedTypes = suggestionList(typeName, allTypeNames);\n context.reportError(new GraphQLError(extendingUnknownTypeMessage(typeName, suggestedTypes), node.name));\n }\n }\n}\nvar defKindToExtKind = (_defKindToExtKind = {}, _defineProperty(_defKindToExtKind, Kind.SCALAR_TYPE_DEFINITION, Kind.SCALAR_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.OBJECT_TYPE_DEFINITION, Kind.OBJECT_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.INTERFACE_TYPE_DEFINITION, Kind.INTERFACE_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.UNION_TYPE_DEFINITION, Kind.UNION_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.ENUM_TYPE_DEFINITION, Kind.ENUM_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.INPUT_OBJECT_TYPE_DEFINITION, Kind.INPUT_OBJECT_TYPE_EXTENSION), _defKindToExtKind);\n\nfunction typeToExtKind(type) {\n if (isScalarType(type)) {\n return Kind.SCALAR_TYPE_EXTENSION;\n } else if (isObjectType(type)) {\n return Kind.OBJECT_TYPE_EXTENSION;\n } else if (isInterfaceType(type)) {\n return Kind.INTERFACE_TYPE_EXTENSION;\n } else if (isUnionType(type)) {\n return Kind.UNION_TYPE_EXTENSION;\n } else if (isEnumType(type)) {\n return Kind.ENUM_TYPE_EXTENSION;\n } else if (isInputObjectType(type)) {\n return Kind.INPUT_OBJECT_TYPE_EXTENSION;\n }\n}\n\nfunction extensionKindToTypeName(kind) {\n switch (kind) {\n case Kind.SCALAR_TYPE_EXTENSION:\n return 'scalar';\n\n case Kind.OBJECT_TYPE_EXTENSION:\n return 'object';\n\n case Kind.INTERFACE_TYPE_EXTENSION:\n return 'interface';\n\n case Kind.UNION_TYPE_EXTENSION:\n return 'union';\n\n case Kind.ENUM_TYPE_EXTENSION:\n return 'enum';\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return 'input object';\n\n default:\n return 'unknown type';\n }\n}\n","// Spec Section: \"Executable Definitions\"\nimport { ExecutableDefinitions } from './rules/ExecutableDefinitions'; // Spec Section: \"Operation Name Uniqueness\"\n\nimport { UniqueOperationNames } from './rules/UniqueOperationNames'; // Spec Section: \"Lone Anonymous Operation\"\n\nimport { LoneAnonymousOperation } from './rules/LoneAnonymousOperation'; // Spec Section: \"Subscriptions with Single Root Field\"\n\nimport { SingleFieldSubscriptions } from './rules/SingleFieldSubscriptions'; // Spec Section: \"Fragment Spread Type Existence\"\n\nimport { KnownTypeNames } from './rules/KnownTypeNames'; // Spec Section: \"Fragments on Composite Types\"\n\nimport { FragmentsOnCompositeTypes } from './rules/FragmentsOnCompositeTypes'; // Spec Section: \"Variables are Input Types\"\n\nimport { VariablesAreInputTypes } from './rules/VariablesAreInputTypes'; // Spec Section: \"Leaf Field Selections\"\n\nimport { ScalarLeafs } from './rules/ScalarLeafs'; // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\nimport { FieldsOnCorrectType } from './rules/FieldsOnCorrectType'; // Spec Section: \"Fragment Name Uniqueness\"\n\nimport { UniqueFragmentNames } from './rules/UniqueFragmentNames'; // Spec Section: \"Fragment spread target defined\"\n\nimport { KnownFragmentNames } from './rules/KnownFragmentNames'; // Spec Section: \"Fragments must be used\"\n\nimport { NoUnusedFragments } from './rules/NoUnusedFragments'; // Spec Section: \"Fragment spread is possible\"\n\nimport { PossibleFragmentSpreads } from './rules/PossibleFragmentSpreads'; // Spec Section: \"Fragments must not form cycles\"\n\nimport { NoFragmentCycles } from './rules/NoFragmentCycles'; // Spec Section: \"Variable Uniqueness\"\n\nimport { UniqueVariableNames } from './rules/UniqueVariableNames'; // Spec Section: \"All Variable Used Defined\"\n\nimport { NoUndefinedVariables } from './rules/NoUndefinedVariables'; // Spec Section: \"All Variables Used\"\n\nimport { NoUnusedVariables } from './rules/NoUnusedVariables'; // Spec Section: \"Directives Are Defined\"\n\nimport { KnownDirectives } from './rules/KnownDirectives'; // Spec Section: \"Directives Are Unique Per Location\"\n\nimport { UniqueDirectivesPerLocation } from './rules/UniqueDirectivesPerLocation'; // Spec Section: \"Argument Names\"\n\nimport { KnownArgumentNames, KnownArgumentNamesOnDirectives } from // @internal\n'./rules/KnownArgumentNames'; // Spec Section: \"Argument Uniqueness\"\n\nimport { UniqueArgumentNames } from './rules/UniqueArgumentNames'; // Spec Section: \"Value Type Correctness\"\n\nimport { ValuesOfCorrectType } from './rules/ValuesOfCorrectType'; // Spec Section: \"Argument Optionality\"\n\nimport { ProvidedRequiredArguments, ProvidedRequiredArgumentsOnDirectives } from // @internal\n'./rules/ProvidedRequiredArguments'; // Spec Section: \"All Variable Usages Are Allowed\"\n\nimport { VariablesInAllowedPosition } from './rules/VariablesInAllowedPosition'; // Spec Section: \"Field Selection Merging\"\n\nimport { OverlappingFieldsCanBeMerged } from './rules/OverlappingFieldsCanBeMerged'; // Spec Section: \"Input Object Field Uniqueness\"\n\nimport { UniqueInputFieldNames } from './rules/UniqueInputFieldNames';\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\n\nexport var specifiedRules = Object.freeze([ExecutableDefinitions, UniqueOperationNames, LoneAnonymousOperation, SingleFieldSubscriptions, KnownTypeNames, FragmentsOnCompositeTypes, VariablesAreInputTypes, ScalarLeafs, FieldsOnCorrectType, UniqueFragmentNames, KnownFragmentNames, NoUnusedFragments, PossibleFragmentSpreads, NoFragmentCycles, UniqueVariableNames, NoUndefinedVariables, NoUnusedVariables, KnownDirectives, UniqueDirectivesPerLocation, KnownArgumentNames, UniqueArgumentNames, ValuesOfCorrectType, ProvidedRequiredArguments, VariablesInAllowedPosition, OverlappingFieldsCanBeMerged, UniqueInputFieldNames]);\nimport { LoneSchemaDefinition } from './rules/LoneSchemaDefinition';\nimport { UniqueOperationTypes } from './rules/UniqueOperationTypes';\nimport { UniqueTypeNames } from './rules/UniqueTypeNames';\nimport { UniqueEnumValueNames } from './rules/UniqueEnumValueNames';\nimport { UniqueFieldDefinitionNames } from './rules/UniqueFieldDefinitionNames';\nimport { UniqueDirectiveNames } from './rules/UniqueDirectiveNames';\nimport { PossibleTypeExtensions } from './rules/PossibleTypeExtensions'; // @internal\n\nexport var specifiedSDLRules = Object.freeze([LoneSchemaDefinition, UniqueOperationTypes, UniqueTypeNames, UniqueEnumValueNames, UniqueFieldDefinitionNames, UniqueDirectiveNames, KnownTypeNames, KnownDirectives, UniqueDirectivesPerLocation, PossibleTypeExtensions, KnownArgumentNamesOnDirectives, UniqueArgumentNames, UniqueInputFieldNames, ProvidedRequiredArgumentsOnDirectives]);\n","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Kind } from '../language/kinds';\nimport { visit, visitWithTypeInfo } from '../language/visitor';\nimport { TypeInfo } from '../utilities/TypeInfo';\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nexport var ASTValidationContext =\n/*#__PURE__*/\nfunction () {\n function ASTValidationContext(ast, onError) {\n this._ast = ast;\n this._errors = [];\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n var _proto = ASTValidationContext.prototype;\n\n _proto.reportError = function reportError(error) {\n this._errors.push(error);\n\n if (this._onError) {\n this._onError(error);\n }\n } // @deprecated: use onError callback instead - will be removed in v15.\n ;\n\n _proto.getErrors = function getErrors() {\n return this._errors;\n };\n\n _proto.getDocument = function getDocument() {\n return this._ast;\n };\n\n _proto.getFragment = function getFragment(name) {\n var fragments = this._fragments;\n\n if (!fragments) {\n this._fragments = fragments = this.getDocument().definitions.reduce(function (frags, statement) {\n if (statement.kind === Kind.FRAGMENT_DEFINITION) {\n frags[statement.name.value] = statement;\n }\n\n return frags;\n }, Object.create(null));\n }\n\n return fragments[name];\n };\n\n _proto.getFragmentSpreads = function getFragmentSpreads(node) {\n var spreads = this._fragmentSpreads.get(node);\n\n if (!spreads) {\n spreads = [];\n var setsToVisit = [node];\n\n while (setsToVisit.length !== 0) {\n var set = setsToVisit.pop();\n\n for (var _i2 = 0, _set$selections2 = set.selections; _i2 < _set$selections2.length; _i2++) {\n var selection = _set$selections2[_i2];\n\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n\n this._fragmentSpreads.set(node, spreads);\n }\n\n return spreads;\n };\n\n _proto.getRecursivelyReferencedFragments = function getRecursivelyReferencedFragments(operation) {\n var fragments = this._recursivelyReferencedFragments.get(operation);\n\n if (!fragments) {\n fragments = [];\n var collectedNames = Object.create(null);\n var nodesToVisit = [operation.selectionSet];\n\n while (nodesToVisit.length !== 0) {\n var node = nodesToVisit.pop();\n\n for (var _i4 = 0, _this$getFragmentSpre2 = this.getFragmentSpreads(node); _i4 < _this$getFragmentSpre2.length; _i4++) {\n var spread = _this$getFragmentSpre2[_i4];\n var fragName = spread.name.value;\n\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n var fragment = this.getFragment(fragName);\n\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n\n return fragments;\n };\n\n return ASTValidationContext;\n}();\nexport var SDLValidationContext =\n/*#__PURE__*/\nfunction (_ASTValidationContext) {\n _inheritsLoose(SDLValidationContext, _ASTValidationContext);\n\n function SDLValidationContext(ast, schema, onError) {\n var _this;\n\n _this = _ASTValidationContext.call(this, ast, onError) || this;\n _this._schema = schema;\n return _this;\n }\n\n var _proto2 = SDLValidationContext.prototype;\n\n _proto2.getSchema = function getSchema() {\n return this._schema;\n };\n\n return SDLValidationContext;\n}(ASTValidationContext);\nexport var ValidationContext =\n/*#__PURE__*/\nfunction (_ASTValidationContext2) {\n _inheritsLoose(ValidationContext, _ASTValidationContext2);\n\n function ValidationContext(schema, ast, typeInfo, onError) {\n var _this2;\n\n _this2 = _ASTValidationContext2.call(this, ast, onError) || this;\n _this2._schema = schema;\n _this2._typeInfo = typeInfo;\n _this2._variableUsages = new Map();\n _this2._recursiveVariableUsages = new Map();\n return _this2;\n }\n\n var _proto3 = ValidationContext.prototype;\n\n _proto3.getSchema = function getSchema() {\n return this._schema;\n };\n\n _proto3.getVariableUsages = function getVariableUsages(node) {\n var usages = this._variableUsages.get(node);\n\n if (!usages) {\n var newUsages = [];\n var typeInfo = new TypeInfo(this._schema);\n visit(node, visitWithTypeInfo(typeInfo, {\n VariableDefinition: function VariableDefinition() {\n return false;\n },\n Variable: function Variable(variable) {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n defaultValue: typeInfo.getDefaultValue()\n });\n }\n }));\n usages = newUsages;\n\n this._variableUsages.set(node, usages);\n }\n\n return usages;\n };\n\n _proto3.getRecursiveVariableUsages = function getRecursiveVariableUsages(operation) {\n var usages = this._recursiveVariableUsages.get(operation);\n\n if (!usages) {\n usages = this.getVariableUsages(operation);\n\n for (var _i6 = 0, _this$getRecursivelyR2 = this.getRecursivelyReferencedFragments(operation); _i6 < _this$getRecursivelyR2.length; _i6++) {\n var frag = _this$getRecursivelyR2[_i6];\n usages = usages.concat(this.getVariableUsages(frag));\n }\n\n this._recursiveVariableUsages.set(operation, usages);\n }\n\n return usages;\n };\n\n _proto3.getType = function getType() {\n return this._typeInfo.getType();\n };\n\n _proto3.getParentType = function getParentType() {\n return this._typeInfo.getParentType();\n };\n\n _proto3.getInputType = function getInputType() {\n return this._typeInfo.getInputType();\n };\n\n _proto3.getParentInputType = function getParentInputType() {\n return this._typeInfo.getParentInputType();\n };\n\n _proto3.getFieldDef = function getFieldDef() {\n return this._typeInfo.getFieldDef();\n };\n\n _proto3.getDirective = function getDirective() {\n return this._typeInfo.getDirective();\n };\n\n _proto3.getArgument = function getArgument() {\n return this._typeInfo.getArgument();\n };\n\n return ValidationContext;\n}(ASTValidationContext);\n","import devAssert from '../jsutils/devAssert';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { visit, visitInParallel, visitWithTypeInfo } from '../language/visitor';\nimport { assertValidSchema } from '../type/validate';\nimport { TypeInfo } from '../utilities/TypeInfo';\nimport { specifiedRules, specifiedSDLRules } from './specifiedRules';\nimport { SDLValidationContext, ValidationContext } from './ValidationContext';\nexport var ABORT_VALIDATION = Object.freeze({});\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\n\nexport function validate(schema, documentAST) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : specifiedRules;\n var typeInfo = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new TypeInfo(schema);\n var options = arguments.length > 4 ? arguments[4] : undefined;\n documentAST || devAssert(0, 'Must provide document'); // If the schema used for validation is invalid, throw an error.\n\n assertValidSchema(schema);\n var abortObj = Object.freeze({});\n var errors = [];\n var maxErrors = options && options.maxErrors;\n var context = new ValidationContext(schema, documentAST, typeInfo, function (error) {\n if (maxErrors != null && errors.length >= maxErrors) {\n errors.push(new GraphQLError('Too many validation errors, error limit reached. Validation aborted.'));\n throw abortObj;\n }\n\n errors.push(error);\n }); // This uses a specialized visitor which runs multiple visitors in parallel,\n // while maintaining the visitor skip and break API.\n\n var visitor = visitInParallel(rules.map(function (rule) {\n return rule(context);\n })); // Visit the whole document with each instance of all provided rules.\n\n try {\n visit(documentAST, visitWithTypeInfo(typeInfo, visitor));\n } catch (e) {\n if (e !== abortObj) {\n throw e;\n }\n }\n\n return errors;\n} // @internal\n\nexport function validateSDL(documentAST, schemaToExtend) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : specifiedSDLRules;\n var errors = [];\n var context = new SDLValidationContext(documentAST, schemaToExtend, function (error) {\n errors.push(error);\n });\n var visitors = rules.map(function (rule) {\n return rule(context);\n });\n visit(documentAST, visitInParallel(visitors));\n return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nexport function assertValidSDL(documentAST) {\n var errors = validateSDL(documentAST);\n\n if (errors.length !== 0) {\n throw new Error(errors.map(function (error) {\n return error.message;\n }).join('\\n\\n'));\n }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nexport function assertValidSDLExtension(documentAST, schema) {\n var errors = validateSDL(documentAST, schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map(function (error) {\n return error.message;\n }).join('\\n\\n'));\n }\n}\n","/**\n * Memoizes the provided three-argument function.\n */\nexport default function memoize3(fn) {\n var cache0;\n\n function memoized(a1, a2, a3) {\n if (!cache0) {\n cache0 = new WeakMap();\n }\n\n var cache1 = cache0.get(a1);\n var cache2;\n\n if (cache1) {\n cache2 = cache1.get(a2);\n\n if (cache2) {\n var cachedValue = cache2.get(a3);\n\n if (cachedValue !== undefined) {\n return cachedValue;\n }\n }\n } else {\n cache1 = new WeakMap();\n cache0.set(a1, cache1);\n }\n\n if (!cache2) {\n cache2 = new WeakMap();\n cache1.set(a2, cache2);\n }\n\n var newValue = fn(a1, a2, a3);\n cache2.set(a3, newValue);\n return newValue;\n }\n\n return memoized;\n}\n","import isPromise from './isPromise';\n\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\nexport default function promiseReduce(values, callback, initialValue) {\n return values.reduce(function (previous, value) {\n return isPromise(previous) ? previous.then(function (resolved) {\n return callback(resolved, value);\n }) : callback(previous, value);\n }, initialValue);\n}\n","/**\n * This function transforms a JS object `ObjMap>` into\n * a `Promise>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nexport default function promiseForObject(object) {\n var keys = Object.keys(object);\n var valuesAndPromises = keys.map(function (name) {\n return object[name];\n });\n return Promise.all(valuesAndPromises).then(function (values) {\n return values.reduce(function (resolvedObject, value, i) {\n resolvedObject[keys[i]] = value;\n return resolvedObject;\n }, Object.create(null));\n });\n}\n","/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nexport function addPath(prev, key) {\n return {\n prev: prev,\n key: key\n };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nexport function pathToArray(path) {\n var flattened = [];\n var curr = path;\n\n while (curr) {\n flattened.push(curr.key);\n curr = curr.prev;\n }\n\n return flattened.reverse();\n}\n","import { GraphQLError } from './GraphQLError';\n/**\n * Given an arbitrary Error, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\n\nexport function locatedError(originalError, nodes, path) {\n // Note: this uses a brand-check to support GraphQL errors originating from\n // other contexts.\n if (originalError && Array.isArray(originalError.path)) {\n return originalError;\n }\n\n return new GraphQLError(originalError && originalError.message, originalError && originalError.nodes || nodes, originalError && originalError.source, originalError && originalError.positions, path, originalError);\n}\n","import { GraphQLError } from '../error/GraphQLError';\n\n/**\n * Extracts the root type of the operation from the schema.\n */\nexport function getOperationRootType(schema, operation) {\n if (operation.operation === 'query') {\n var queryType = schema.getQueryType();\n\n if (!queryType) {\n throw new GraphQLError('Schema does not define the required query root type.', operation);\n }\n\n return queryType;\n }\n\n if (operation.operation === 'mutation') {\n var mutationType = schema.getMutationType();\n\n if (!mutationType) {\n throw new GraphQLError('Schema is not configured for mutations.', operation);\n }\n\n return mutationType;\n }\n\n if (operation.operation === 'subscription') {\n var subscriptionType = schema.getSubscriptionType();\n\n if (!subscriptionType) {\n throw new GraphQLError('Schema is not configured for subscriptions.', operation);\n }\n\n return subscriptionType;\n }\n\n throw new GraphQLError('Can only have query, mutation and subscription operations.', operation);\n}\n","/**\n * Build a string describing the path.\n */\nexport default function printPathArray(path) {\n return path.map(function (key) {\n return typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key;\n }).join('');\n}\n","import objectValues from '../polyfills/objectValues';\nimport keyMap from '../jsutils/keyMap';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport isInvalid from '../jsutils/isInvalid';\nimport { Kind } from '../language/kinds';\nimport { isScalarType, isEnumType, isInputObjectType, isListType, isNonNullType } from '../type/definition';\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Mixed |\n * | NullValue | null |\n *\n */\n\nexport function valueFromAST(valueNode, type, variables) {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (isNonNullType(type)) {\n if (valueNode.kind === Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n\n return valueFromAST(valueNode, type.ofType, variables);\n }\n\n if (valueNode.kind === Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (valueNode.kind === Kind.VARIABLE) {\n var variableName = valueNode.name.value;\n\n if (!variables || isInvalid(variables[variableName])) {\n // No valid return value.\n return;\n }\n\n var variableValue = variables[variableName];\n\n if (variableValue === null && isNonNullType(type)) {\n return; // Invalid: intentionally return no value.\n } // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n\n\n return variableValue;\n }\n\n if (isListType(type)) {\n var itemType = type.ofType;\n\n if (valueNode.kind === Kind.LIST) {\n var coercedValues = [];\n\n for (var _i2 = 0, _valueNode$values2 = valueNode.values; _i2 < _valueNode$values2.length; _i2++) {\n var itemNode = _valueNode$values2[_i2];\n\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (isNonNullType(itemType)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(null);\n } else {\n var itemValue = valueFromAST(itemNode, itemType, variables);\n\n if (isInvalid(itemValue)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(itemValue);\n }\n }\n\n return coercedValues;\n }\n\n var coercedValue = valueFromAST(valueNode, itemType, variables);\n\n if (isInvalid(coercedValue)) {\n return; // Invalid: intentionally return no value.\n }\n\n return [coercedValue];\n }\n\n if (isInputObjectType(type)) {\n if (valueNode.kind !== Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n\n var coercedObj = Object.create(null);\n var fieldNodes = keyMap(valueNode.fields, function (field) {\n return field.name.value;\n });\n\n for (var _i4 = 0, _objectValues2 = objectValues(type.getFields()); _i4 < _objectValues2.length; _i4++) {\n var field = _objectValues2[_i4];\n var fieldNode = fieldNodes[field.name];\n\n if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n if (field.defaultValue !== undefined) {\n coercedObj[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n return; // Invalid: intentionally return no value.\n }\n\n continue;\n }\n\n var fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n if (isInvalid(fieldValue)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedObj[field.name] = fieldValue;\n }\n\n return coercedObj;\n }\n\n if (isEnumType(type)) {\n if (valueNode.kind !== Kind.ENUM) {\n return; // Invalid: intentionally return no value.\n }\n\n var enumValue = type.getValue(valueNode.value);\n\n if (!enumValue) {\n return; // Invalid: intentionally return no value.\n }\n\n return enumValue.value;\n }\n\n /* istanbul ignore else */\n if (isScalarType(type)) {\n // Scalars fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n var result;\n\n try {\n result = type.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n\n if (isInvalid(result)) {\n return; // Invalid: intentionally return no value.\n }\n\n return result;\n } // Not reachable. All possible input types have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected input type: ' + inspect(type));\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n return valueNode.kind === Kind.VARIABLE && (!variables || isInvalid(variables[valueNode.name.value]));\n}\n","import { forEach, isCollection } from 'iterall';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport didYouMean from '../jsutils/didYouMean';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport suggestionList from '../jsutils/suggestionList';\nimport printPathArray from '../jsutils/printPathArray';\nimport { addPath, pathToArray } from '../jsutils/Path';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { isScalarType, isEnumType, isInputObjectType, isListType, isNonNullType } from '../type/definition';\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nexport function coerceInputValue(inputValue, type) {\n var onError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultOnError;\n return coerceInputValueImpl(inputValue, type, onError);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n var errorPrefix = 'Invalid value ' + inspect(invalidValue);\n\n if (path.length > 0) {\n errorPrefix += \" at \\\"value\".concat(printPathArray(path), \"\\\": \");\n }\n\n error.message = errorPrefix + ': ' + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n if (isNonNullType(type)) {\n if (inputValue != null) {\n return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n }\n\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected non-nullable type \".concat(inspect(type), \" not to be null.\")));\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (isListType(type)) {\n var itemType = type.ofType;\n\n if (isCollection(inputValue)) {\n var coercedValue = [];\n forEach(inputValue, function (itemValue, index) {\n coercedValue.push(coerceInputValueImpl(itemValue, itemType, onError, addPath(path, index)));\n });\n return coercedValue;\n } // Lists accept a non-list value as a list of one.\n\n\n return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(inputValue)) {\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected type \".concat(type.name, \" to be an object.\")));\n return;\n }\n\n var _coercedValue = {};\n var fieldDefs = type.getFields();\n\n for (var _i2 = 0, _objectValues2 = objectValues(fieldDefs); _i2 < _objectValues2.length; _i2++) {\n var field = _objectValues2[_i2];\n var fieldValue = inputValue[field.name];\n\n if (fieldValue === undefined) {\n if (field.defaultValue !== undefined) {\n _coercedValue[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n var typeStr = inspect(field.type);\n onError(pathToArray(path), inputValue, new GraphQLError(\"Field \".concat(field.name, \" of required type \").concat(typeStr, \" was not provided.\")));\n }\n\n continue;\n }\n\n _coercedValue[field.name] = coerceInputValueImpl(fieldValue, field.type, onError, addPath(path, field.name));\n } // Ensure every provided field is defined.\n\n\n for (var _i4 = 0, _Object$keys2 = Object.keys(inputValue); _i4 < _Object$keys2.length; _i4++) {\n var fieldName = _Object$keys2[_i4];\n\n if (!fieldDefs[fieldName]) {\n var suggestions = suggestionList(fieldName, Object.keys(type.getFields()));\n onError(pathToArray(path), inputValue, new GraphQLError(\"Field \\\"\".concat(fieldName, \"\\\" is not defined by type \").concat(type.name, \".\") + didYouMean(suggestions)));\n }\n }\n\n return _coercedValue;\n }\n\n if (isScalarType(type)) {\n var parseResult; // Scalars determine if a input value is valid via parseValue(), which can\n // throw to indicate failure. If it throws, maintain a reference to\n // the original error.\n\n try {\n parseResult = type.parseValue(inputValue);\n } catch (error) {\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected type \".concat(type.name, \". \") + error.message, undefined, undefined, undefined, undefined, error));\n return;\n }\n\n if (parseResult === undefined) {\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected type \".concat(type.name, \".\")));\n }\n\n return parseResult;\n }\n\n /* istanbul ignore else */\n if (isEnumType(type)) {\n if (typeof inputValue === 'string') {\n var enumValue = type.getValue(inputValue);\n\n if (enumValue) {\n return enumValue.value;\n }\n }\n\n var _suggestions = suggestionList(String(inputValue), type.getValues().map(function (enumValue) {\n return enumValue.name;\n }));\n\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected type \".concat(type.name, \".\") + didYouMean(_suggestions)));\n return;\n } // Not reachable. All possible input types have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected input type: ' + inspect(type));\n}\n","import find from '../polyfills/find';\nimport keyMap from '../jsutils/keyMap';\nimport inspect from '../jsutils/inspect';\nimport printPathArray from '../jsutils/printPathArray';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { Kind } from '../language/kinds';\nimport { print } from '../language/printer';\nimport { isInputType, isNonNullType } from '../type/definition';\nimport { typeFromAST } from '../utilities/typeFromAST';\nimport { valueFromAST } from '../utilities/valueFromAST';\nimport { coerceInputValue } from '../utilities/coerceInputValue';\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getVariableValues(schema, varDefNodes, inputs, options) {\n var maxErrors = options && options.maxErrors;\n var errors = [];\n\n try {\n var coerced = coerceVariableValues(schema, varDefNodes, inputs, function (error) {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new GraphQLError('Too many errors processing variables, error limit reached. Execution aborted.');\n }\n\n errors.push(error);\n });\n\n if (errors.length === 0) {\n return {\n coerced: coerced\n };\n }\n } catch (error) {\n errors.push(error);\n }\n\n return {\n errors: errors\n };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n var coercedValues = {};\n\n var _loop = function _loop(_i2) {\n var varDefNode = varDefNodes[_i2];\n var varName = varDefNode.variable.name.value;\n var varType = typeFromAST(schema, varDefNode.type);\n\n if (!isInputType(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n var varTypeStr = print(varDefNode.type);\n onError(new GraphQLError(\"Variable \\\"$\".concat(varName, \"\\\" expected value of type \\\"\").concat(varTypeStr, \"\\\" which cannot be used as an input type.\"), varDefNode.type));\n return \"continue\";\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType);\n } else if (isNonNullType(varType)) {\n var _varTypeStr = inspect(varType);\n\n onError(new GraphQLError(\"Variable \\\"$\".concat(varName, \"\\\" of required type \\\"\").concat(_varTypeStr, \"\\\" was not provided.\"), varDefNode));\n }\n\n return \"continue\";\n }\n\n var value = inputs[varName];\n\n if (value === null && isNonNullType(varType)) {\n var _varTypeStr2 = inspect(varType);\n\n onError(new GraphQLError(\"Variable \\\"$\".concat(varName, \"\\\" of non-null type \\\"\").concat(_varTypeStr2, \"\\\" must not be null.\"), varDefNode));\n return \"continue\";\n }\n\n coercedValues[varName] = coerceInputValue(value, varType, function (path, invalidValue, error) {\n var prefix = \"Variable \\\"$\".concat(varName, \"\\\" got invalid value \") + inspect(invalidValue);\n\n if (path.length > 0) {\n prefix += \" at \\\"\".concat(varName).concat(printPathArray(path), \"\\\"\");\n }\n\n onError(new GraphQLError(prefix + '; ' + error.message, varDefNode, undefined, undefined, undefined, error.originalError));\n });\n };\n\n for (var _i2 = 0; _i2 < varDefNodes.length; _i2++) {\n var _ret = _loop(_i2);\n\n if (_ret === \"continue\") continue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\n\nexport function getArgumentValues(def, node, variableValues) {\n var coercedValues = {};\n var argNodeMap = keyMap(node.arguments || [], function (arg) {\n return arg.name.value;\n });\n\n for (var _i4 = 0, _def$args2 = def.args; _i4 < _def$args2.length; _i4++) {\n var argDef = _def$args2[_i4];\n var name = argDef.name;\n var argType = argDef.type;\n var argumentNode = argNodeMap[name];\n\n if (!argumentNode) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\"Argument \\\"\".concat(name, \"\\\" of required type \\\"\").concat(inspect(argType), \"\\\" \") + 'was not provided.', node);\n }\n\n continue;\n }\n\n var valueNode = argumentNode.value;\n var isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n var variableName = valueNode.name.value;\n\n if (variableValues == null || !hasOwnProperty(variableValues, variableName)) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\"Argument \\\"\".concat(name, \"\\\" of required type \\\"\").concat(inspect(argType), \"\\\" \") + \"was provided the variable \\\"$\".concat(variableName, \"\\\" which was not provided a runtime value.\"), valueNode);\n }\n\n continue;\n }\n\n isNull = variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argType)) {\n throw new GraphQLError(\"Argument \\\"\".concat(name, \"\\\" of non-null type \\\"\").concat(inspect(argType), \"\\\" \") + 'must not be null.', valueNode);\n }\n\n var coercedValue = valueFromAST(valueNode, argType, variableValues);\n\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectType validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new GraphQLError(\"Argument \\\"\".concat(name, \"\\\" has invalid value \").concat(print(valueNode), \".\"), valueNode);\n }\n\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nexport function getDirectiveValues(directiveDef, node, variableValues) {\n var directiveNode = node.directives && find(node.directives, function (directive) {\n return directive.name.value === directiveDef.name;\n });\n\n if (directiveNode) {\n return getArgumentValues(directiveDef, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","import { forEach, isCollection } from 'iterall';\nimport inspect from '../jsutils/inspect';\nimport memoize3 from '../jsutils/memoize3';\nimport invariant from '../jsutils/invariant';\nimport devAssert from '../jsutils/devAssert';\nimport isInvalid from '../jsutils/isInvalid';\nimport isNullish from '../jsutils/isNullish';\nimport isPromise from '../jsutils/isPromise';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport promiseReduce from '../jsutils/promiseReduce';\nimport promiseForObject from '../jsutils/promiseForObject';\nimport { addPath, pathToArray } from '../jsutils/Path';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { locatedError } from '../error/locatedError';\nimport { Kind } from '../language/kinds';\nimport { assertValidSchema } from '../type/validate';\nimport { SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from '../type/introspection';\nimport { GraphQLIncludeDirective, GraphQLSkipDirective } from '../type/directives';\nimport { isObjectType, isAbstractType, isLeafType, isListType, isNonNullType } from '../type/definition';\nimport { typeFromAST } from '../utilities/typeFromAST';\nimport { getOperationRootType } from '../utilities/getOperationRootType';\nimport { getVariableValues, getArgumentValues, getDirectiveValues } from './values';\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g \"a\"\n * 2) fragment \"spreads\" e.g. \"...c\"\n * 3) inline fragment \"spreads\" e.g. \"...on Type { a }\"\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\nexport function execute(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {\n /* eslint-enable no-redeclare */\n // Extract arguments from object args if provided.\n return arguments.length === 1 ? executeImpl(argsOrSchema) : executeImpl({\n schema: argsOrSchema,\n document: document,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n });\n}\n\nfunction executeImpl(args) {\n var schema = args.schema,\n document = args.document,\n rootValue = args.rootValue,\n contextValue = args.contextValue,\n variableValues = args.variableValues,\n operationName = args.operationName,\n fieldResolver = args.fieldResolver,\n typeResolver = args.typeResolver; // If arguments are missing or incorrect, throw an error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver); // Return early errors if execution context failed.\n\n if (Array.isArray(exeContext)) {\n return {\n errors: exeContext\n };\n } // Return a Promise that will eventually resolve to the data described by\n // The \"Response\" section of the GraphQL specification.\n //\n // If errors are encountered while executing a GraphQL field, only that\n // field and its descendants will be omitted, and sibling fields will still\n // be executed. An execution which encounters errors will still result in a\n // resolved Promise.\n\n\n var data = executeOperation(exeContext, exeContext.operation, rootValue);\n return buildResponse(exeContext, data);\n}\n/**\n * Given a completed execution context and data, build the { errors, data }\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\n\nfunction buildResponse(exeContext, data) {\n if (isPromise(data)) {\n return data.then(function (resolved) {\n return buildResponse(exeContext, resolved);\n });\n }\n\n return exeContext.errors.length === 0 ? {\n data: data\n } : {\n errors: exeContext.errors,\n data: data\n };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n */\n\n\nexport function assertValidExecutionArguments(schema, document, rawVariableValues) {\n document || devAssert(0, 'Must provide document'); // If the schema used for execution is invalid, throw an error.\n\n assertValidSchema(schema); // Variables, if provided, must be an object.\n\n rawVariableValues == null || isObjectLike(rawVariableValues) || devAssert(0, 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.');\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n */\n\nexport function buildExecutionContext(schema, document, rootValue, contextValue, rawVariableValues, operationName, fieldResolver, typeResolver) {\n var operation;\n var hasMultipleAssumedOperations = false;\n var fragments = Object.create(null);\n\n for (var _i2 = 0, _document$definitions2 = document.definitions; _i2 < _document$definitions2.length; _i2++) {\n var definition = _document$definitions2[_i2];\n\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n if (!operationName && operation) {\n hasMultipleAssumedOperations = true;\n } else if (!operationName || definition.name && definition.name.value === operationName) {\n operation = definition;\n }\n\n break;\n\n case Kind.FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n }\n }\n\n if (!operation) {\n if (operationName) {\n return [new GraphQLError(\"Unknown operation named \\\"\".concat(operationName, \"\\\".\"))];\n }\n\n return [new GraphQLError('Must provide an operation.')];\n }\n\n if (hasMultipleAssumedOperations) {\n return [new GraphQLError('Must provide operation name if query contains multiple operations.')];\n }\n\n var coercedVariableValues = getVariableValues(schema, operation.variableDefinitions || [], rawVariableValues || {}, {\n maxErrors: 50\n });\n\n if (coercedVariableValues.errors) {\n return coercedVariableValues.errors;\n }\n\n return {\n schema: schema,\n fragments: fragments,\n rootValue: rootValue,\n contextValue: contextValue,\n operation: operation,\n variableValues: coercedVariableValues.coerced,\n fieldResolver: fieldResolver || defaultFieldResolver,\n typeResolver: typeResolver || defaultTypeResolver,\n errors: []\n };\n}\n/**\n * Implements the \"Evaluating operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n var type = getOperationRootType(exeContext.schema, operation);\n var fields = collectFields(exeContext, type, operation.selectionSet, Object.create(null), Object.create(null));\n var path = undefined; // Errors from sub-fields of a NonNull type may propagate to the top level,\n // at which point we still log the error and null the parent field, which\n // in this case is the entire response.\n //\n // Similar to completeValueCatchingError.\n\n try {\n var result = operation.operation === 'mutation' ? executeFieldsSerially(exeContext, type, rootValue, path, fields) : executeFields(exeContext, type, rootValue, path, fields);\n\n if (isPromise(result)) {\n return result.then(undefined, function (error) {\n exeContext.errors.push(error);\n return Promise.resolve(null);\n });\n }\n\n return result;\n } catch (error) {\n exeContext.errors.push(error);\n return null;\n }\n}\n/**\n * Implements the \"Evaluating selection sets\" section of the spec\n * for \"write\" mode.\n */\n\n\nfunction executeFieldsSerially(exeContext, parentType, sourceValue, path, fields) {\n return promiseReduce(Object.keys(fields), function (results, responseName) {\n var fieldNodes = fields[responseName];\n var fieldPath = addPath(path, responseName);\n var result = resolveField(exeContext, parentType, sourceValue, fieldNodes, fieldPath);\n\n if (result === undefined) {\n return results;\n }\n\n if (isPromise(result)) {\n return result.then(function (resolvedResult) {\n results[responseName] = resolvedResult;\n return results;\n });\n }\n\n results[responseName] = result;\n return results;\n }, Object.create(null));\n}\n/**\n * Implements the \"Evaluating selection sets\" section of the spec\n * for \"read\" mode.\n */\n\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n var results = Object.create(null);\n var containsPromise = false;\n\n for (var _i4 = 0, _Object$keys2 = Object.keys(fields); _i4 < _Object$keys2.length; _i4++) {\n var responseName = _Object$keys2[_i4];\n var fieldNodes = fields[responseName];\n var fieldPath = addPath(path, responseName);\n var result = resolveField(exeContext, parentType, sourceValue, fieldNodes, fieldPath);\n\n if (result !== undefined) {\n results[responseName] = result;\n\n if (!containsPromise && isPromise(result)) {\n containsPromise = true;\n }\n }\n } // If there are no promises, we can just return the object\n\n\n if (!containsPromise) {\n return results;\n } // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n\n\n return promiseForObject(results);\n}\n/**\n * Given a selectionSet, adds all of the fields in that selection to\n * the passed in map of fields, and returns it at the end.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field which\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * Object type returned by that field.\n */\n\n\nexport function collectFields(exeContext, runtimeType, selectionSet, fields, visitedFragmentNames) {\n for (var _i6 = 0, _selectionSet$selecti2 = selectionSet.selections; _i6 < _selectionSet$selecti2.length; _i6++) {\n var selection = _selectionSet$selecti2[_i6];\n\n switch (selection.kind) {\n case Kind.FIELD:\n {\n if (!shouldIncludeNode(exeContext, selection)) {\n continue;\n }\n\n var name = getFieldEntryKey(selection);\n\n if (!fields[name]) {\n fields[name] = [];\n }\n\n fields[name].push(selection);\n break;\n }\n\n case Kind.INLINE_FRAGMENT:\n {\n if (!shouldIncludeNode(exeContext, selection) || !doesFragmentConditionMatch(exeContext, selection, runtimeType)) {\n continue;\n }\n\n collectFields(exeContext, runtimeType, selection.selectionSet, fields, visitedFragmentNames);\n break;\n }\n\n case Kind.FRAGMENT_SPREAD:\n {\n var fragName = selection.name.value;\n\n if (visitedFragmentNames[fragName] || !shouldIncludeNode(exeContext, selection)) {\n continue;\n }\n\n visitedFragmentNames[fragName] = true;\n var fragment = exeContext.fragments[fragName];\n\n if (!fragment || !doesFragmentConditionMatch(exeContext, fragment, runtimeType)) {\n continue;\n }\n\n collectFields(exeContext, runtimeType, fragment.selectionSet, fields, visitedFragmentNames);\n break;\n }\n }\n }\n\n return fields;\n}\n/**\n * Determines if a field should be included based on the @include and @skip\n * directives, where @skip has higher precedence than @include.\n */\n\nfunction shouldIncludeNode(exeContext, node) {\n var skip = getDirectiveValues(GraphQLSkipDirective, node, exeContext.variableValues);\n\n if (skip && skip.if === true) {\n return false;\n }\n\n var include = getDirectiveValues(GraphQLIncludeDirective, node, exeContext.variableValues);\n\n if (include && include.if === false) {\n return false;\n }\n\n return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\n\nfunction doesFragmentConditionMatch(exeContext, fragment, type) {\n var typeConditionNode = fragment.typeCondition;\n\n if (!typeConditionNode) {\n return true;\n }\n\n var conditionalType = typeFromAST(exeContext.schema, typeConditionNode);\n\n if (conditionalType === type) {\n return true;\n }\n\n if (isAbstractType(conditionalType)) {\n return exeContext.schema.isPossibleType(conditionalType, type);\n }\n\n return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\n\nfunction getFieldEntryKey(node) {\n return node.alias ? node.alias.value : node.name.value;\n}\n/**\n * Resolves the field on the given source object. In particular, this\n * figures out the value that the field returns by calling its resolve function,\n * then calls completeValue to complete promises, serialize scalars, or execute\n * the sub-selection-set for objects.\n */\n\n\nfunction resolveField(exeContext, parentType, source, fieldNodes, path) {\n var fieldNode = fieldNodes[0];\n var fieldName = fieldNode.name.value;\n var fieldDef = getFieldDef(exeContext.schema, parentType, fieldName);\n\n if (!fieldDef) {\n return;\n }\n\n var resolveFn = fieldDef.resolve || exeContext.fieldResolver;\n var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path); // Get the resolve function, regardless of if its result is normal\n // or abrupt (error).\n\n var result = resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info);\n return completeValueCatchingError(exeContext, fieldDef.type, fieldNodes, info, path, result);\n}\n\nexport function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {\n // The resolve function's optional fourth argument is a collection of\n // information about the current execution state.\n return {\n fieldName: fieldDef.name,\n fieldNodes: fieldNodes,\n returnType: fieldDef.type,\n parentType: parentType,\n path: path,\n schema: exeContext.schema,\n fragments: exeContext.fragments,\n rootValue: exeContext.rootValue,\n operation: exeContext.operation,\n variableValues: exeContext.variableValues\n };\n} // Isolates the \"ReturnOrAbrupt\" behavior to not de-opt the `resolveField`\n// function. Returns the result of resolveFn or the abrupt-return Error object.\n\nexport function resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info) {\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n var args = getArgumentValues(fieldDef, fieldNodes[0], exeContext.variableValues); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n var _contextValue = exeContext.contextValue;\n var result = resolveFn(source, args, _contextValue, info);\n return isPromise(result) ? result.then(undefined, asErrorInstance) : result;\n } catch (error) {\n return asErrorInstance(error);\n }\n} // Sometimes a non-error is thrown, wrap it as an Error instance to ensure a\n// consistent Error interface.\n\nfunction asErrorInstance(error) {\n if (error instanceof Error) {\n return error;\n }\n\n return new Error('Unexpected error value: ' + inspect(error));\n} // This is a small wrapper around completeValue which detects and logs errors\n// in the execution context.\n\n\nfunction completeValueCatchingError(exeContext, returnType, fieldNodes, info, path, result) {\n try {\n var completed;\n\n if (isPromise(result)) {\n completed = result.then(function (resolved) {\n return completeValue(exeContext, returnType, fieldNodes, info, path, resolved);\n });\n } else {\n completed = completeValue(exeContext, returnType, fieldNodes, info, path, result);\n }\n\n if (isPromise(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, function (error) {\n return handleFieldError(error, fieldNodes, path, returnType, exeContext);\n });\n }\n\n return completed;\n } catch (error) {\n return handleFieldError(error, fieldNodes, path, returnType, exeContext);\n }\n}\n\nfunction handleFieldError(rawError, fieldNodes, path, returnType, exeContext) {\n var error = locatedError(asErrorInstance(rawError), fieldNodes, pathToArray(path)); // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n\n if (isNonNullType(returnType)) {\n throw error;\n } // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n\n\n exeContext.errors.push(error);\n return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Field entries\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by evaluating all sub-selections.\n */\n\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n } // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n\n\n if (isNonNullType(returnType)) {\n var completed = completeValue(exeContext, returnType.ofType, fieldNodes, info, path, result);\n\n if (completed === null) {\n throw new Error(\"Cannot return null for non-nullable field \".concat(info.parentType.name, \".\").concat(info.fieldName, \".\"));\n }\n\n return completed;\n } // If result value is null-ish (null, undefined, or NaN) then return null.\n\n\n if (isNullish(result)) {\n return null;\n } // If field type is List, complete each item in the list with the inner type\n\n\n if (isListType(returnType)) {\n return completeListValue(exeContext, returnType, fieldNodes, info, path, result);\n } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n // returning null if serialization is not possible.\n\n\n if (isLeafType(returnType)) {\n return completeLeafValue(returnType, result);\n } // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n\n\n if (isAbstractType(returnType)) {\n return completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result);\n } // If field type is Object, execute and complete all sub-selections.\n\n\n /* istanbul ignore else */\n if (isObjectType(returnType)) {\n return completeObjectValue(exeContext, returnType, fieldNodes, info, path, result);\n } // Not reachable. All possible output types have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Cannot complete value of unexpected output type: ' + inspect(returnType));\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\n\nfunction completeListValue(exeContext, returnType, fieldNodes, info, path, result) {\n if (!isCollection(result)) {\n throw new GraphQLError(\"Expected Iterable, but did not find one for field \".concat(info.parentType.name, \".\").concat(info.fieldName, \".\"));\n } // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n\n\n var itemType = returnType.ofType;\n var containsPromise = false;\n var completedResults = [];\n forEach(result, function (item, index) {\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n var fieldPath = addPath(path, index);\n var completedItem = completeValueCatchingError(exeContext, itemType, fieldNodes, info, fieldPath, item);\n\n if (!containsPromise && isPromise(completedItem)) {\n containsPromise = true;\n }\n\n completedResults.push(completedItem);\n });\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\n\nfunction completeLeafValue(returnType, result) {\n var serializedResult = returnType.serialize(result);\n\n if (isInvalid(serializedResult)) {\n throw new Error(\"Expected a value of type \\\"\".concat(inspect(returnType), \"\\\" but \") + \"received: \".concat(inspect(result)));\n }\n\n return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\n\nfunction completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result) {\n var resolveTypeFn = returnType.resolveType || exeContext.typeResolver;\n var contextValue = exeContext.contextValue;\n var runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if (isPromise(runtimeType)) {\n return runtimeType.then(function (resolvedRuntimeType) {\n return completeObjectValue(exeContext, ensureValidRuntimeType(resolvedRuntimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result);\n });\n }\n\n return completeObjectValue(exeContext, ensureValidRuntimeType(runtimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result);\n}\n\nfunction ensureValidRuntimeType(runtimeTypeOrName, exeContext, returnType, fieldNodes, info, result) {\n var runtimeType = typeof runtimeTypeOrName === 'string' ? exeContext.schema.getType(runtimeTypeOrName) : runtimeTypeOrName;\n\n if (!isObjectType(runtimeType)) {\n throw new GraphQLError(\"Abstract type \".concat(returnType.name, \" must resolve to an Object type at runtime for field \").concat(info.parentType.name, \".\").concat(info.fieldName, \" with \") + \"value \".concat(inspect(result), \", received \\\"\").concat(inspect(runtimeType), \"\\\". \") + \"Either the \".concat(returnType.name, \" type should provide a \\\"resolveType\\\" function or each possible type should provide an \\\"isTypeOf\\\" function.\"), fieldNodes);\n }\n\n if (!exeContext.schema.isPossibleType(returnType, runtimeType)) {\n throw new GraphQLError(\"Runtime Object type \\\"\".concat(runtimeType.name, \"\\\" is not a possible type for \\\"\").concat(returnType.name, \"\\\".\"), fieldNodes);\n }\n\n return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\n\nfunction completeObjectValue(exeContext, returnType, fieldNodes, info, path, result) {\n // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n if (returnType.isTypeOf) {\n var isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n if (isPromise(isTypeOf)) {\n return isTypeOf.then(function (resolvedIsTypeOf) {\n if (!resolvedIsTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n\n return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result);\n });\n }\n\n if (!isTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n }\n\n return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n return new GraphQLError(\"Expected value of type \\\"\".concat(returnType.name, \"\\\" but got: \").concat(inspect(result), \".\"), fieldNodes);\n}\n\nfunction collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result) {\n // Collect sub-fields to execute to complete this value.\n var subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes);\n return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\n\n\nvar collectSubfields = memoize3(_collectSubfields);\n\nfunction _collectSubfields(exeContext, returnType, fieldNodes) {\n var subFieldNodes = Object.create(null);\n var visitedFragmentNames = Object.create(null);\n\n for (var _i8 = 0; _i8 < fieldNodes.length; _i8++) {\n var node = fieldNodes[_i8];\n\n if (node.selectionSet) {\n subFieldNodes = collectFields(exeContext, returnType, node.selectionSet, subFieldNodes, visitedFragmentNames);\n }\n }\n\n return subFieldNodes;\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\n\nexport var defaultTypeResolver = function defaultTypeResolver(value, contextValue, info, abstractType) {\n // First, look for `__typename`.\n if (isObjectLike(value) && typeof value.__typename === 'string') {\n return value.__typename;\n } // Otherwise, test each possible type.\n\n\n var possibleTypes = info.schema.getPossibleTypes(abstractType);\n var promisedIsTypeOfResults = [];\n\n for (var i = 0; i < possibleTypes.length; i++) {\n var type = possibleTypes[i];\n\n if (type.isTypeOf) {\n var isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if (isPromise(isTypeOfResult)) {\n promisedIsTypeOfResults[i] = isTypeOfResult;\n } else if (isTypeOfResult) {\n return type;\n }\n }\n }\n\n if (promisedIsTypeOfResults.length) {\n return Promise.all(promisedIsTypeOfResults).then(function (isTypeOfResults) {\n for (var _i9 = 0; _i9 < isTypeOfResults.length; _i9++) {\n if (isTypeOfResults[_i9]) {\n return possibleTypes[_i9];\n }\n }\n });\n }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nexport var defaultFieldResolver = function defaultFieldResolver(source, args, contextValue, info) {\n // ensure source is a value for which property access is acceptable.\n if (isObjectLike(source) || typeof source === 'function') {\n var property = source[info.fieldName];\n\n if (typeof property === 'function') {\n return source[info.fieldName](args, contextValue, info);\n }\n\n return property;\n }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the two introspection fields, __schema\n * and __typename. __typename is special because it can always be\n * queried as a field, even in situations where no other fields\n * are allowed, like on a Union. __schema could get automatically\n * added to the query type, but that would require mutating type\n * definitions, which would cause issues.\n */\n\nexport function getFieldDef(schema, parentType, fieldName) {\n if (fieldName === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) {\n return SchemaMetaFieldDef;\n } else if (fieldName === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n return TypeMetaFieldDef;\n } else if (fieldName === TypeNameMetaFieldDef.name) {\n return TypeNameMetaFieldDef;\n }\n\n return parentType.getFields()[fieldName];\n}\n","import isPromise from './jsutils/isPromise';\nimport { parse } from './language/parser';\nimport { validate } from './validation/validate';\nimport { validateSchema } from './type/validate';\nimport { execute } from './execution/execute';\n/**\n * This is the primary entry point function for fulfilling GraphQL operations\n * by parsing, validating, and executing a GraphQL document along side a\n * GraphQL schema.\n *\n * More sophisticated GraphQL servers, such as those which persist queries,\n * may wish to separate the validation and execution phases to a static time\n * tooling step, and a server runtime step.\n *\n * Accepts either an object with named arguments, or individual arguments:\n *\n * schema:\n * The GraphQL type system to use when validating and executing a query.\n * source:\n * A GraphQL language formatted string representing the requested operation.\n * rootValue:\n * The value provided as the first argument to resolver functions on the top\n * level type (e.g. the query object type).\n * contextValue:\n * The context value is provided as an argument to resolver functions after\n * field arguments. It is used to pass shared information useful at any point\n * during executing this query, for example the currently logged in user and\n * connections to databases or other services.\n * variableValues:\n * A mapping of variable name to runtime value to use for all variables\n * defined in the requestString.\n * operationName:\n * The name of the operation to use if requestString contains multiple\n * possible operations. Can be omitted if requestString contains only\n * one operation.\n * fieldResolver:\n * A resolver function to use when one is not provided by the schema.\n * If not provided, the default field resolver is used (which looks for a\n * value or method on the source value with the field's name).\n * typeResolver:\n * A type resolver function to use when none is provided by the schema.\n * If not provided, the default type resolver is used (which looks for a\n * `__typename` field or alternatively calls the `isTypeOf` method).\n */\n\nexport function graphql(argsOrSchema, source, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {\n var _arguments = arguments;\n\n /* eslint-enable no-redeclare */\n // Always return a Promise for a consistent API.\n return new Promise(function (resolve) {\n return resolve( // Extract arguments from object args if provided.\n _arguments.length === 1 ? graphqlImpl(argsOrSchema) : graphqlImpl({\n schema: argsOrSchema,\n source: source,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n }));\n });\n}\n/**\n * The graphqlSync function also fulfills GraphQL operations by parsing,\n * validating, and executing a GraphQL document along side a GraphQL schema.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nexport function graphqlSync(argsOrSchema, source, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {\n /* eslint-enable no-redeclare */\n // Extract arguments from object args if provided.\n var result = arguments.length === 1 ? graphqlImpl(argsOrSchema) : graphqlImpl({\n schema: argsOrSchema,\n source: source,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n }); // Assert that the execution was synchronous.\n\n if (isPromise(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n\n return result;\n}\n\nfunction graphqlImpl(args) {\n var schema = args.schema,\n source = args.source,\n rootValue = args.rootValue,\n contextValue = args.contextValue,\n variableValues = args.variableValues,\n operationName = args.operationName,\n fieldResolver = args.fieldResolver,\n typeResolver = args.typeResolver; // Validate Schema\n\n var schemaValidationErrors = validateSchema(schema);\n\n if (schemaValidationErrors.length > 0) {\n return {\n errors: schemaValidationErrors\n };\n } // Parse\n\n\n var document;\n\n try {\n document = parse(source);\n } catch (syntaxError) {\n return {\n errors: [syntaxError]\n };\n } // Validate\n\n\n var validationErrors = validate(schema, document);\n\n if (validationErrors.length > 0) {\n return {\n errors: validationErrors\n };\n } // Execute\n\n\n return execute({\n schema: schema,\n document: document,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n });\n}\n","export { // Predicate\nisSchema, // Assertion\nassertSchema, // GraphQL Schema definition\nGraphQLSchema } from './schema';\nexport { // Predicates\nisType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField, // Assertions\nassertType, assertScalarType, assertObjectType, assertInterfaceType, assertUnionType, assertEnumType, assertInputObjectType, assertListType, assertNonNullType, assertInputType, assertOutputType, assertLeafType, assertCompositeType, assertAbstractType, assertWrappingType, assertNullableType, assertNamedType, // Un-modifiers\ngetNullableType, getNamedType, // Definitions\nGraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, // Type Wrappers\nGraphQLList, GraphQLNonNull } from './definition';\nexport { // Predicate\nisDirective, // Assertion\nassertDirective, // Directives Definition\nGraphQLDirective, // Built-in Directives defined by the Spec\nisSpecifiedDirective, specifiedDirectives, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective, // Constant Deprecation Reason\nDEFAULT_DEPRECATION_REASON } from './directives';\n// Common built-in scalar instances.\nexport { // Predicate\nisSpecifiedScalarType, // Standard GraphQL Scalars\nspecifiedScalarTypes, GraphQLInt, GraphQLFloat, GraphQLString, GraphQLBoolean, GraphQLID } from './scalars';\nexport { // Predicate\nisIntrospectionType, // GraphQL Types for introspection.\nintrospectionTypes, __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind, // \"Enum\" of Type Kinds\nTypeKind, // Meta-field definitions.\nSchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from './introspection';\n// Validate GraphQL schema.\nexport { validateSchema, assertValidSchema } from './validate';\n","export { Source } from './source';\nexport { getLocation } from './location';\nexport { printLocation, printSourceLocation } from './printLocation';\nexport { Kind } from './kinds';\nexport { TokenKind } from './tokenKind';\nexport { createLexer } from './lexer';\nexport { parse, parseValue, parseType } from './parser';\nexport { print } from './printer';\nexport { visit, visitInParallel, visitWithTypeInfo, getVisitFn, BREAK } from './visitor';\nexport { isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode } from './predicates';\nexport { DirectiveLocation } from './directiveLocation';\n","export { pathToArray as responsePathAsArray } from '../jsutils/Path';\nexport { execute, defaultFieldResolver, defaultTypeResolver } from './execute';\nexport { getDirectiveValues } from './values';\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { $$asyncIterator, getAsyncIterator } from 'iterall';\n\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nexport default function mapAsyncIterator(iterable, callback, rejectCallback) {\n var iterator = getAsyncIterator(iterable);\n var $return;\n var abruptClose; // $FlowFixMe(>=0.68.0)\n\n if (typeof iterator.return === 'function') {\n $return = iterator.return;\n\n abruptClose = function abruptClose(error) {\n var rethrow = function rethrow() {\n return Promise.reject(error);\n };\n\n return $return.call(iterator).then(rethrow, rethrow);\n };\n }\n\n function mapResult(result) {\n return result.done ? result : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose);\n }\n\n var mapReject;\n\n if (rejectCallback) {\n // Capture rejectCallback to ensure it cannot be null.\n var reject = rejectCallback;\n\n mapReject = function mapReject(error) {\n return asyncMapValue(error, reject).then(iteratorResult, abruptClose);\n };\n }\n /* TODO: Flow doesn't support symbols as keys:\n https://github.com/facebook/flow/issues/3258 */\n\n\n return _defineProperty({\n next: function next() {\n return iterator.next().then(mapResult, mapReject);\n },\n return: function _return() {\n return $return ? $return.call(iterator).then(mapResult, mapReject) : Promise.resolve({\n value: undefined,\n done: true\n });\n },\n throw: function _throw(error) {\n // $FlowFixMe(>=0.68.0)\n if (typeof iterator.throw === 'function') {\n return iterator.throw(error).then(mapResult, mapReject);\n }\n\n return Promise.reject(error).catch(abruptClose);\n }\n }, $$asyncIterator, function () {\n return this;\n });\n}\n\nfunction asyncMapValue(value, callback) {\n return new Promise(function (resolve) {\n return resolve(callback(value));\n });\n}\n\nfunction iteratorResult(value) {\n return {\n value: value,\n done: false\n };\n}\n","import { isAsyncIterable } from 'iterall';\nimport inspect from '../jsutils/inspect';\nimport { addPath, pathToArray } from '../jsutils/Path';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { locatedError } from '../error/locatedError';\nimport { assertValidExecutionArguments, buildExecutionContext, buildResolveInfo, collectFields, execute, getFieldDef, resolveFieldValueOrError } from '../execution/execute';\nimport { getOperationRootType } from '../utilities/getOperationRootType';\nimport mapAsyncIterator from './mapAsyncIterator';\nexport function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {\n /* eslint-enable no-redeclare */\n // Extract arguments from object args if provided.\n return arguments.length === 1 ? subscribeImpl(argsOrSchema) : subscribeImpl({\n schema: argsOrSchema,\n document: document,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n subscribeFieldResolver: subscribeFieldResolver\n });\n}\n/**\n * This function checks if the error is a GraphQLError. If it is, report it as\n * an ExecutionResult, containing only errors and no data. Otherwise treat the\n * error as a system-class error and re-throw it.\n */\n\nfunction reportGraphQLError(error) {\n if (error instanceof GraphQLError) {\n return {\n errors: [error]\n };\n }\n\n throw error;\n}\n\nfunction subscribeImpl(args) {\n var schema = args.schema,\n document = args.document,\n rootValue = args.rootValue,\n contextValue = args.contextValue,\n variableValues = args.variableValues,\n operationName = args.operationName,\n fieldResolver = args.fieldResolver,\n subscribeFieldResolver = args.subscribeFieldResolver;\n var sourcePromise = createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, subscribeFieldResolver); // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n var mapSourceToResponse = function mapSourceToResponse(payload) {\n return execute(schema, document, payload, contextValue, variableValues, operationName, fieldResolver);\n }; // Resolve the Source Stream, then map every source value to a\n // ExecutionResult value as described above.\n\n\n return sourcePromise.then(function (resultOrStream) {\n return (// Note: Flow can't refine isAsyncIterable, so explicit casts are used.\n isAsyncIterable(resultOrStream) ? mapAsyncIterator(resultOrStream, mapSourceToResponse, reportGraphQLError) : resultOrStream\n );\n });\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\n\nexport function createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver) {\n // If arguments are missing or incorrectly typed, this is an internal\n // developer mistake which should throw an early error.\n assertValidExecutionArguments(schema, document, variableValues);\n\n try {\n // If a valid context cannot be created due to incorrect arguments,\n // this will throw an error.\n var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver); // Return early errors if execution context failed.\n\n if (Array.isArray(exeContext)) {\n return Promise.resolve({\n errors: exeContext\n });\n }\n\n var type = getOperationRootType(schema, exeContext.operation);\n var fields = collectFields(exeContext, type, exeContext.operation.selectionSet, Object.create(null), Object.create(null));\n var responseNames = Object.keys(fields);\n var responseName = responseNames[0];\n var fieldNodes = fields[responseName];\n var fieldNode = fieldNodes[0];\n var fieldName = fieldNode.name.value;\n var fieldDef = getFieldDef(schema, type, fieldName);\n\n if (!fieldDef) {\n throw new GraphQLError(\"The subscription field \\\"\".concat(fieldName, \"\\\" is not defined.\"), fieldNodes);\n } // Call the `subscribe()` resolver or the default resolver to produce an\n // AsyncIterable yielding raw payloads.\n\n\n var resolveFn = fieldDef.subscribe || exeContext.fieldResolver;\n var path = addPath(undefined, responseName);\n var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path); // resolveFieldValueOrError implements the \"ResolveFieldEventStream\"\n // algorithm from GraphQL specification. It differs from\n // \"ResolveFieldValue\" due to providing a different `resolveFn`.\n\n var result = resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, rootValue, info); // Coerce to Promise for easier error handling and consistent return type.\n\n return Promise.resolve(result).then(function (eventStream) {\n // If eventStream is an Error, rethrow a located error.\n if (eventStream instanceof Error) {\n return {\n errors: [locatedError(eventStream, fieldNodes, pathToArray(path))]\n };\n } // Assert field returned an event stream, otherwise yield an error.\n\n\n if (isAsyncIterable(eventStream)) {\n // Note: isAsyncIterable above ensures this will be correct.\n return eventStream;\n }\n\n throw new Error('Subscription field must return Async Iterable. Received: ' + inspect(eventStream));\n });\n } catch (error) {\n // As with reportGraphQLError above, if the error is a GraphQLError, report\n // it as an ExecutionResult; otherwise treat it as a system-class error and\n // re-throw it.\n return error instanceof GraphQLError ? Promise.resolve({\n errors: [error]\n }) : Promise.reject(error);\n }\n}\n","export { subscribe, createSourceEventStream } from './subscribe';\n","export { validate } from './validate';\nexport { ValidationContext } from './ValidationContext';\n// All validation rules in the GraphQL Specification.\nexport { specifiedRules } from './specifiedRules'; // Spec Section: \"Executable Definitions\"\n\nexport { ExecutableDefinitions as ExecutableDefinitionsRule } from './rules/ExecutableDefinitions'; // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\nexport { FieldsOnCorrectType as FieldsOnCorrectTypeRule } from './rules/FieldsOnCorrectType'; // Spec Section: \"Fragments on Composite Types\"\n\nexport { FragmentsOnCompositeTypes as FragmentsOnCompositeTypesRule } from './rules/FragmentsOnCompositeTypes'; // Spec Section: \"Argument Names\"\n\nexport { KnownArgumentNames as KnownArgumentNamesRule } from './rules/KnownArgumentNames'; // Spec Section: \"Directives Are Defined\"\n\nexport { KnownDirectives as KnownDirectivesRule } from './rules/KnownDirectives'; // Spec Section: \"Fragment spread target defined\"\n\nexport { KnownFragmentNames as KnownFragmentNamesRule } from './rules/KnownFragmentNames'; // Spec Section: \"Fragment Spread Type Existence\"\n\nexport { KnownTypeNames as KnownTypeNamesRule } from './rules/KnownTypeNames'; // Spec Section: \"Lone Anonymous Operation\"\n\nexport { LoneAnonymousOperation as LoneAnonymousOperationRule } from './rules/LoneAnonymousOperation'; // Spec Section: \"Fragments must not form cycles\"\n\nexport { NoFragmentCycles as NoFragmentCyclesRule } from './rules/NoFragmentCycles'; // Spec Section: \"All Variable Used Defined\"\n\nexport { NoUndefinedVariables as NoUndefinedVariablesRule } from './rules/NoUndefinedVariables'; // Spec Section: \"Fragments must be used\"\n\nexport { NoUnusedFragments as NoUnusedFragmentsRule } from './rules/NoUnusedFragments'; // Spec Section: \"All Variables Used\"\n\nexport { NoUnusedVariables as NoUnusedVariablesRule } from './rules/NoUnusedVariables'; // Spec Section: \"Field Selection Merging\"\n\nexport { OverlappingFieldsCanBeMerged as OverlappingFieldsCanBeMergedRule } from './rules/OverlappingFieldsCanBeMerged'; // Spec Section: \"Fragment spread is possible\"\n\nexport { PossibleFragmentSpreads as PossibleFragmentSpreadsRule } from './rules/PossibleFragmentSpreads'; // Spec Section: \"Argument Optionality\"\n\nexport { ProvidedRequiredArguments as ProvidedRequiredArgumentsRule } from './rules/ProvidedRequiredArguments'; // Spec Section: \"Leaf Field Selections\"\n\nexport { ScalarLeafs as ScalarLeafsRule } from './rules/ScalarLeafs'; // Spec Section: \"Subscriptions with Single Root Field\"\n\nexport { SingleFieldSubscriptions as SingleFieldSubscriptionsRule } from './rules/SingleFieldSubscriptions'; // Spec Section: \"Argument Uniqueness\"\n\nexport { UniqueArgumentNames as UniqueArgumentNamesRule } from './rules/UniqueArgumentNames'; // Spec Section: \"Directives Are Unique Per Location\"\n\nexport { UniqueDirectivesPerLocation as UniqueDirectivesPerLocationRule } from './rules/UniqueDirectivesPerLocation'; // Spec Section: \"Fragment Name Uniqueness\"\n\nexport { UniqueFragmentNames as UniqueFragmentNamesRule } from './rules/UniqueFragmentNames'; // Spec Section: \"Input Object Field Uniqueness\"\n\nexport { UniqueInputFieldNames as UniqueInputFieldNamesRule } from './rules/UniqueInputFieldNames'; // Spec Section: \"Operation Name Uniqueness\"\n\nexport { UniqueOperationNames as UniqueOperationNamesRule } from './rules/UniqueOperationNames'; // Spec Section: \"Variable Uniqueness\"\n\nexport { UniqueVariableNames as UniqueVariableNamesRule } from './rules/UniqueVariableNames'; // Spec Section: \"Values Type Correctness\"\n\nexport { ValuesOfCorrectType as ValuesOfCorrectTypeRule } from './rules/ValuesOfCorrectType'; // Spec Section: \"Variables are Input Types\"\n\nexport { VariablesAreInputTypes as VariablesAreInputTypesRule } from './rules/VariablesAreInputTypes'; // Spec Section: \"All Variable Usages Are Allowed\"\n\nexport { VariablesInAllowedPosition as VariablesInAllowedPositionRule } from './rules/VariablesInAllowedPosition'; // SDL-specific validation rules\n\nexport { LoneSchemaDefinition as LoneSchemaDefinitionRule } from './rules/LoneSchemaDefinition';\nexport { UniqueOperationTypes as UniqueOperationTypesRule } from './rules/UniqueOperationTypes';\nexport { UniqueTypeNames as UniqueTypeNamesRule } from './rules/UniqueTypeNames';\nexport { UniqueEnumValueNames as UniqueEnumValueNamesRule } from './rules/UniqueEnumValueNames';\nexport { UniqueFieldDefinitionNames as UniqueFieldDefinitionNamesRule } from './rules/UniqueFieldDefinitionNames';\nexport { UniqueDirectiveNames as UniqueDirectiveNamesRule } from './rules/UniqueDirectiveNames';\nexport { PossibleTypeExtensions as PossibleTypeExtensionsRule } from './rules/PossibleTypeExtensions';\n","import devAssert from '../jsutils/devAssert';\n\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n */\nexport function formatError(error) {\n error || devAssert(0, 'Received null or undefined error.');\n var message = error.message || 'An unknown error occurred.';\n var locations = error.locations;\n var path = error.path;\n var extensions = error.extensions;\n return extensions ? {\n message: message,\n locations: locations,\n path: path,\n extensions: extensions\n } : {\n message: message,\n locations: locations,\n path: path\n };\n}\n/**\n * @see https://github.com/graphql/graphql-spec/blob/master/spec/Section%207%20--%20Response.md#errors\n */\n","export { GraphQLError, printError } from './GraphQLError';\nexport { syntaxError } from './syntaxError';\nexport { locatedError } from './locatedError';\nexport { formatError } from './formatError';\n","export function getIntrospectionQuery(options) {\n var descriptions = !(options && options.descriptions === false);\n return \"\\n query IntrospectionQuery {\\n __schema {\\n queryType { name }\\n mutationType { name }\\n subscriptionType { name }\\n types {\\n ...FullType\\n }\\n directives {\\n name\\n \".concat(descriptions ? 'description' : '', \"\\n locations\\n args {\\n ...InputValue\\n }\\n }\\n }\\n }\\n\\n fragment FullType on __Type {\\n kind\\n name\\n \").concat(descriptions ? 'description' : '', \"\\n fields(includeDeprecated: true) {\\n name\\n \").concat(descriptions ? 'description' : '', \"\\n args {\\n ...InputValue\\n }\\n type {\\n ...TypeRef\\n }\\n isDeprecated\\n deprecationReason\\n }\\n inputFields {\\n ...InputValue\\n }\\n interfaces {\\n ...TypeRef\\n }\\n enumValues(includeDeprecated: true) {\\n name\\n \").concat(descriptions ? 'description' : '', \"\\n isDeprecated\\n deprecationReason\\n }\\n possibleTypes {\\n ...TypeRef\\n }\\n }\\n\\n fragment InputValue on __InputValue {\\n name\\n \").concat(descriptions ? 'description' : '', \"\\n type { ...TypeRef }\\n defaultValue\\n }\\n\\n fragment TypeRef on __Type {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n \");\n}\n/**\n * Deprecated, call getIntrospectionQuery directly.\n *\n * This function will be removed in v15\n */\n\nexport var introspectionQuery = getIntrospectionQuery();\n","import { Kind } from '../language/kinds';\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\nexport function getOperationAST(documentAST, operationName) {\n var operation = null;\n\n for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {\n var definition = _documentAST$definiti2[_i2];\n\n if (definition.kind === Kind.OPERATION_DEFINITION) {\n if (!operationName) {\n // If no operation name was provided, only return an Operation if there\n // is one defined in the document. Upon encountering the second, return\n // null.\n if (operation) {\n return null;\n }\n\n operation = definition;\n } else if (definition.name && definition.name.value === operationName) {\n return definition;\n }\n }\n }\n\n return operation;\n}\n","import invariant from '../jsutils/invariant';\nimport isPromise from '../jsutils/isPromise';\nimport { parse } from '../language/parser';\nimport { execute } from '../execution/execute';\nimport { getIntrospectionQuery } from './introspectionQuery';\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n */\n\nexport function introspectionFromSchema(schema, options) {\n var queryAST = parse(getIntrospectionQuery(options));\n var result = execute(schema, queryAST);\n\n /* istanbul ignore next */\n !isPromise(result) && !result.errors && result.data || invariant(0);\n return result.data;\n}\n","import objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport devAssert from '../jsutils/devAssert';\nimport keyValMap from '../jsutils/keyValMap';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport { parseValue } from '../language/parser';\nimport { GraphQLDirective } from '../type/directives';\nimport { specifiedScalarTypes } from '../type/scalars';\nimport { introspectionTypes, TypeKind } from '../type/introspection';\nimport { GraphQLSchema } from '../type/schema';\nimport { isInputType, isOutputType, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, assertNullableType, assertObjectType, assertInterfaceType } from '../type/definition';\nimport { valueFromAST } from './valueFromAST';\n\n/**\n * Build a GraphQLSchema for use by client tools.\n *\n * Given the result of a client running the introspection query, creates and\n * returns a GraphQLSchema instance which can be then used with all graphql-js\n * tools, but cannot be used to execute a query, as introspection does not\n * represent the \"resolver\", \"parse\" or \"serialize\" functions or any other\n * server-internal mechanisms.\n *\n * This function expects a complete introspection result. Don't forget to check\n * the \"errors\" field of a server response before calling this function.\n */\nexport function buildClientSchema(introspection, options) {\n isObjectLike(introspection) && isObjectLike(introspection.__schema) || devAssert(0, 'Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ' + inspect(introspection)); // Get the schema from the introspection result.\n\n var schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.\n\n var typeMap = keyValMap(schemaIntrospection.types, function (typeIntrospection) {\n return typeIntrospection.name;\n }, function (typeIntrospection) {\n return buildType(typeIntrospection);\n });\n\n for (var _i2 = 0, _ref2 = [].concat(specifiedScalarTypes, introspectionTypes); _i2 < _ref2.length; _i2++) {\n var stdType = _ref2[_i2];\n\n if (typeMap[stdType.name]) {\n typeMap[stdType.name] = stdType;\n }\n } // Get the root Query, Mutation, and Subscription types.\n\n\n var queryType = schemaIntrospection.queryType ? getObjectType(schemaIntrospection.queryType) : null;\n var mutationType = schemaIntrospection.mutationType ? getObjectType(schemaIntrospection.mutationType) : null;\n var subscriptionType = schemaIntrospection.subscriptionType ? getObjectType(schemaIntrospection.subscriptionType) : null; // Get the directives supported by Introspection, assuming empty-set if\n // directives were not queried for.\n\n var directives = schemaIntrospection.directives ? schemaIntrospection.directives.map(buildDirective) : []; // Then produce and return a Schema with these types.\n\n return new GraphQLSchema({\n query: queryType,\n mutation: mutationType,\n subscription: subscriptionType,\n types: objectValues(typeMap),\n directives: directives,\n assumeValid: options && options.assumeValid,\n allowedLegacyNames: options && options.allowedLegacyNames\n }); // Given a type reference in introspection, return the GraphQLType instance.\n // preferring cached instances before building new instances.\n\n function getType(typeRef) {\n if (typeRef.kind === TypeKind.LIST) {\n var itemRef = typeRef.ofType;\n\n if (!itemRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n return GraphQLList(getType(itemRef));\n }\n\n if (typeRef.kind === TypeKind.NON_NULL) {\n var nullableRef = typeRef.ofType;\n\n if (!nullableRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n var nullableType = getType(nullableRef);\n return GraphQLNonNull(assertNullableType(nullableType));\n }\n\n if (!typeRef.name) {\n throw new Error('Unknown type reference: ' + inspect(typeRef));\n }\n\n return getNamedType(typeRef.name);\n }\n\n function getNamedType(typeName) {\n var type = typeMap[typeName];\n\n if (!type) {\n throw new Error(\"Invalid or incomplete schema, unknown type: \".concat(typeName, \". Ensure that a full introspection query is used in order to build a client schema.\"));\n }\n\n return type;\n }\n\n function getInputType(typeRef) {\n var type = getType(typeRef);\n\n if (isInputType(type)) {\n return type;\n }\n\n throw new Error('Introspection must provide input type for arguments, but received: ' + inspect(type) + '.');\n }\n\n function getOutputType(typeRef) {\n var type = getType(typeRef);\n\n if (isOutputType(type)) {\n return type;\n }\n\n throw new Error('Introspection must provide output type for fields, but received: ' + inspect(type) + '.');\n }\n\n function getObjectType(typeRef) {\n var type = getType(typeRef);\n return assertObjectType(type);\n }\n\n function getInterfaceType(typeRef) {\n var type = getType(typeRef);\n return assertInterfaceType(type);\n } // Given a type's introspection result, construct the correct\n // GraphQLType instance.\n\n\n function buildType(type) {\n if (type && type.name && type.kind) {\n switch (type.kind) {\n case TypeKind.SCALAR:\n return buildScalarDef(type);\n\n case TypeKind.OBJECT:\n return buildObjectDef(type);\n\n case TypeKind.INTERFACE:\n return buildInterfaceDef(type);\n\n case TypeKind.UNION:\n return buildUnionDef(type);\n\n case TypeKind.ENUM:\n return buildEnumDef(type);\n\n case TypeKind.INPUT_OBJECT:\n return buildInputObjectDef(type);\n }\n }\n\n throw new Error('Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema:' + inspect(type));\n }\n\n function buildScalarDef(scalarIntrospection) {\n return new GraphQLScalarType({\n name: scalarIntrospection.name,\n description: scalarIntrospection.description\n });\n }\n\n function buildObjectDef(objectIntrospection) {\n if (!objectIntrospection.interfaces) {\n throw new Error('Introspection result missing interfaces: ' + inspect(objectIntrospection));\n }\n\n return new GraphQLObjectType({\n name: objectIntrospection.name,\n description: objectIntrospection.description,\n interfaces: function interfaces() {\n return objectIntrospection.interfaces.map(getInterfaceType);\n },\n fields: function fields() {\n return buildFieldDefMap(objectIntrospection);\n }\n });\n }\n\n function buildInterfaceDef(interfaceIntrospection) {\n return new GraphQLInterfaceType({\n name: interfaceIntrospection.name,\n description: interfaceIntrospection.description,\n fields: function fields() {\n return buildFieldDefMap(interfaceIntrospection);\n }\n });\n }\n\n function buildUnionDef(unionIntrospection) {\n if (!unionIntrospection.possibleTypes) {\n throw new Error('Introspection result missing possibleTypes: ' + inspect(unionIntrospection));\n }\n\n return new GraphQLUnionType({\n name: unionIntrospection.name,\n description: unionIntrospection.description,\n types: function types() {\n return unionIntrospection.possibleTypes.map(getObjectType);\n }\n });\n }\n\n function buildEnumDef(enumIntrospection) {\n if (!enumIntrospection.enumValues) {\n throw new Error('Introspection result missing enumValues: ' + inspect(enumIntrospection));\n }\n\n return new GraphQLEnumType({\n name: enumIntrospection.name,\n description: enumIntrospection.description,\n values: keyValMap(enumIntrospection.enumValues, function (valueIntrospection) {\n return valueIntrospection.name;\n }, function (valueIntrospection) {\n return {\n description: valueIntrospection.description,\n deprecationReason: valueIntrospection.deprecationReason\n };\n })\n });\n }\n\n function buildInputObjectDef(inputObjectIntrospection) {\n if (!inputObjectIntrospection.inputFields) {\n throw new Error('Introspection result missing inputFields: ' + inspect(inputObjectIntrospection));\n }\n\n return new GraphQLInputObjectType({\n name: inputObjectIntrospection.name,\n description: inputObjectIntrospection.description,\n fields: function fields() {\n return buildInputValueDefMap(inputObjectIntrospection.inputFields);\n }\n });\n }\n\n function buildFieldDefMap(typeIntrospection) {\n if (!typeIntrospection.fields) {\n throw new Error('Introspection result missing fields: ' + inspect(typeIntrospection));\n }\n\n return keyValMap(typeIntrospection.fields, function (fieldIntrospection) {\n return fieldIntrospection.name;\n }, function (fieldIntrospection) {\n if (!fieldIntrospection.args) {\n throw new Error('Introspection result missing field args: ' + inspect(fieldIntrospection));\n }\n\n return {\n description: fieldIntrospection.description,\n deprecationReason: fieldIntrospection.deprecationReason,\n type: getOutputType(fieldIntrospection.type),\n args: buildInputValueDefMap(fieldIntrospection.args)\n };\n });\n }\n\n function buildInputValueDefMap(inputValueIntrospections) {\n return keyValMap(inputValueIntrospections, function (inputValue) {\n return inputValue.name;\n }, buildInputValue);\n }\n\n function buildInputValue(inputValueIntrospection) {\n var type = getInputType(inputValueIntrospection.type);\n var defaultValue = inputValueIntrospection.defaultValue ? valueFromAST(parseValue(inputValueIntrospection.defaultValue), type) : undefined;\n return {\n description: inputValueIntrospection.description,\n type: type,\n defaultValue: defaultValue\n };\n }\n\n function buildDirective(directiveIntrospection) {\n if (!directiveIntrospection.args) {\n throw new Error('Introspection result missing directive args: ' + inspect(directiveIntrospection));\n }\n\n if (!directiveIntrospection.locations) {\n throw new Error('Introspection result missing directive locations: ' + inspect(directiveIntrospection));\n }\n\n return new GraphQLDirective({\n name: directiveIntrospection.name,\n description: directiveIntrospection.description,\n locations: directiveIntrospection.locations.slice(),\n args: buildInputValueDefMap(directiveIntrospection.args)\n });\n }\n}\n","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n */\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(lines);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.join('\\n');\n} // @internal\n\nexport function getBlockStringIndentation(lines) {\n var commonIndent = null;\n\n for (var i = 1; i < lines.length; i++) {\n var line = lines[i];\n var indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n if (commonIndent === null || indent < commonIndent) {\n commonIndent = indent;\n\n if (commonIndent === 0) {\n break;\n }\n }\n }\n\n return commonIndent === null ? 0 : commonIndent;\n}\n\nfunction leadingWhitespace(str) {\n var i = 0;\n\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n\n return i;\n}\n\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\n\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","import objectValues from '../polyfills/objectValues';\nimport keyMap from '../jsutils/keyMap';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport devAssert from '../jsutils/devAssert';\nimport keyValMap from '../jsutils/keyValMap';\nimport { Kind } from '../language/kinds';\nimport { TokenKind } from '../language/tokenKind';\nimport { parse } from '../language/parser';\nimport { isTypeDefinitionNode } from '../language/predicates';\nimport { dedentBlockStringValue } from '../language/blockString';\nimport { assertValidSDL } from '../validation/validate';\nimport { getDirectiveValues } from '../execution/values';\nimport { specifiedScalarTypes } from '../type/scalars';\nimport { introspectionTypes } from '../type/introspection';\nimport { GraphQLSchema } from '../type/schema';\nimport { GraphQLDirective, GraphQLSkipDirective, GraphQLIncludeDirective, GraphQLDeprecatedDirective } from '../type/directives';\nimport { GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull } from '../type/definition';\nimport { valueFromAST } from './valueFromAST';\n\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query\n * and Mutation.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n *\n * Accepts options as a second argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\nexport function buildASTSchema(documentAST, options) {\n documentAST && documentAST.kind === Kind.DOCUMENT || devAssert(0, 'Must provide valid Document AST');\n\n if (!options || !(options.assumeValid || options.assumeValidSDL)) {\n assertValidSDL(documentAST);\n }\n\n var schemaDef;\n var typeDefs = [];\n var directiveDefs = [];\n\n for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {\n var def = _documentAST$definiti2[_i2];\n\n if (def.kind === Kind.SCHEMA_DEFINITION) {\n schemaDef = def;\n } else if (isTypeDefinitionNode(def)) {\n typeDefs.push(def);\n } else if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n directiveDefs.push(def);\n }\n }\n\n var astBuilder = new ASTDefinitionBuilder(options, function (typeName) {\n var type = typeMap[typeName];\n\n if (type === undefined) {\n throw new Error(\"Type \\\"\".concat(typeName, \"\\\" not found in document.\"));\n }\n\n return type;\n });\n var typeMap = keyByNameNode(typeDefs, function (node) {\n return astBuilder.buildType(node);\n });\n var operationTypes = schemaDef ? getOperationTypes(schemaDef) : {\n query: 'Query',\n mutation: 'Mutation',\n subscription: 'Subscription'\n };\n var directives = directiveDefs.map(function (def) {\n return astBuilder.buildDirective(def);\n }); // If specified directives were not explicitly declared, add them.\n\n if (!directives.some(function (directive) {\n return directive.name === 'skip';\n })) {\n directives.push(GraphQLSkipDirective);\n }\n\n if (!directives.some(function (directive) {\n return directive.name === 'include';\n })) {\n directives.push(GraphQLIncludeDirective);\n }\n\n if (!directives.some(function (directive) {\n return directive.name === 'deprecated';\n })) {\n directives.push(GraphQLDeprecatedDirective);\n }\n\n return new GraphQLSchema({\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n query: operationTypes.query ? typeMap[operationTypes.query] : null,\n mutation: operationTypes.mutation ? typeMap[operationTypes.mutation] : null,\n subscription: operationTypes.subscription ? typeMap[operationTypes.subscription] : null,\n types: objectValues(typeMap),\n directives: directives,\n astNode: schemaDef,\n assumeValid: options && options.assumeValid,\n allowedLegacyNames: options && options.allowedLegacyNames\n });\n\n function getOperationTypes(schema) {\n var opTypes = {};\n\n for (var _i4 = 0, _schema$operationType2 = schema.operationTypes; _i4 < _schema$operationType2.length; _i4++) {\n var operationType = _schema$operationType2[_i4];\n opTypes[operationType.operation] = operationType.type.name.value;\n }\n\n return opTypes;\n }\n}\nvar stdTypeMap = keyMap(specifiedScalarTypes.concat(introspectionTypes), function (type) {\n return type.name;\n});\nexport var ASTDefinitionBuilder =\n/*#__PURE__*/\nfunction () {\n function ASTDefinitionBuilder(options, resolveType) {\n this._options = options;\n this._resolveType = resolveType;\n }\n\n var _proto = ASTDefinitionBuilder.prototype;\n\n _proto.getNamedType = function getNamedType(node) {\n var name = node.name.value;\n return stdTypeMap[name] || this._resolveType(name);\n };\n\n _proto.getWrappedType = function getWrappedType(node) {\n if (node.kind === Kind.LIST_TYPE) {\n return new GraphQLList(this.getWrappedType(node.type));\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return new GraphQLNonNull(this.getWrappedType(node.type));\n }\n\n return this.getNamedType(node);\n };\n\n _proto.buildDirective = function buildDirective(directive) {\n var _this = this;\n\n var locations = directive.locations.map(function (_ref) {\n var value = _ref.value;\n return value;\n });\n return new GraphQLDirective({\n name: directive.name.value,\n description: getDescription(directive, this._options),\n locations: locations,\n isRepeatable: directive.repeatable,\n args: keyByNameNode(directive.arguments || [], function (arg) {\n return _this.buildArg(arg);\n }),\n astNode: directive\n });\n };\n\n _proto.buildField = function buildField(field) {\n var _this2 = this;\n\n return {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n type: this.getWrappedType(field.type),\n description: getDescription(field, this._options),\n args: keyByNameNode(field.arguments || [], function (arg) {\n return _this2.buildArg(arg);\n }),\n deprecationReason: getDeprecationReason(field),\n astNode: field\n };\n };\n\n _proto.buildArg = function buildArg(value) {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n var type = this.getWrappedType(value.type);\n return {\n type: type,\n description: getDescription(value, this._options),\n defaultValue: valueFromAST(value.defaultValue, type),\n astNode: value\n };\n };\n\n _proto.buildInputField = function buildInputField(value) {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n var type = this.getWrappedType(value.type);\n return {\n type: type,\n description: getDescription(value, this._options),\n defaultValue: valueFromAST(value.defaultValue, type),\n astNode: value\n };\n };\n\n _proto.buildEnumValue = function buildEnumValue(value) {\n return {\n description: getDescription(value, this._options),\n deprecationReason: getDeprecationReason(value),\n astNode: value\n };\n };\n\n _proto.buildType = function buildType(astNode) {\n var name = astNode.name.value;\n\n if (stdTypeMap[name]) {\n return stdTypeMap[name];\n }\n\n switch (astNode.kind) {\n case Kind.OBJECT_TYPE_DEFINITION:\n return this._makeTypeDef(astNode);\n\n case Kind.INTERFACE_TYPE_DEFINITION:\n return this._makeInterfaceDef(astNode);\n\n case Kind.ENUM_TYPE_DEFINITION:\n return this._makeEnumDef(astNode);\n\n case Kind.UNION_TYPE_DEFINITION:\n return this._makeUnionDef(astNode);\n\n case Kind.SCALAR_TYPE_DEFINITION:\n return this._makeScalarDef(astNode);\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n return this._makeInputObjectDef(astNode);\n } // Not reachable. All possible type definition nodes have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected type definition node: ' + inspect(astNode));\n };\n\n _proto._makeTypeDef = function _makeTypeDef(astNode) {\n var _this3 = this;\n\n var interfaceNodes = astNode.interfaces;\n var fieldNodes = astNode.fields; // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n\n var interfaces = interfaceNodes && interfaceNodes.length > 0 ? function () {\n return interfaceNodes.map(function (ref) {\n return _this3.getNamedType(ref);\n });\n } : [];\n var fields = fieldNodes && fieldNodes.length > 0 ? function () {\n return keyByNameNode(fieldNodes, function (field) {\n return _this3.buildField(field);\n });\n } : Object.create(null);\n return new GraphQLObjectType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n interfaces: interfaces,\n fields: fields,\n astNode: astNode\n });\n };\n\n _proto._makeInterfaceDef = function _makeInterfaceDef(astNode) {\n var _this4 = this;\n\n var fieldNodes = astNode.fields;\n var fields = fieldNodes && fieldNodes.length > 0 ? function () {\n return keyByNameNode(fieldNodes, function (field) {\n return _this4.buildField(field);\n });\n } : Object.create(null);\n return new GraphQLInterfaceType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n fields: fields,\n astNode: astNode\n });\n };\n\n _proto._makeEnumDef = function _makeEnumDef(astNode) {\n var _this5 = this;\n\n var valueNodes = astNode.values || [];\n return new GraphQLEnumType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n values: keyByNameNode(valueNodes, function (value) {\n return _this5.buildEnumValue(value);\n }),\n astNode: astNode\n });\n };\n\n _proto._makeUnionDef = function _makeUnionDef(astNode) {\n var _this6 = this;\n\n var typeNodes = astNode.types; // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n\n var types = typeNodes && typeNodes.length > 0 ? function () {\n return typeNodes.map(function (ref) {\n return _this6.getNamedType(ref);\n });\n } : [];\n return new GraphQLUnionType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n types: types,\n astNode: astNode\n });\n };\n\n _proto._makeScalarDef = function _makeScalarDef(astNode) {\n return new GraphQLScalarType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n astNode: astNode\n });\n };\n\n _proto._makeInputObjectDef = function _makeInputObjectDef(def) {\n var _this7 = this;\n\n var fields = def.fields;\n return new GraphQLInputObjectType({\n name: def.name.value,\n description: getDescription(def, this._options),\n fields: fields ? function () {\n return keyByNameNode(fields, function (field) {\n return _this7.buildInputField(field);\n });\n } : Object.create(null),\n astNode: def\n });\n };\n\n return ASTDefinitionBuilder;\n}();\n\nfunction keyByNameNode(list, valFn) {\n return keyValMap(list, function (_ref2) {\n var name = _ref2.name;\n return name.value;\n }, valFn);\n}\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\n\nfunction getDeprecationReason(node) {\n var deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node);\n return deprecated && deprecated.reason;\n}\n/**\n * Given an ast node, returns its string description.\n * @deprecated: provided to ease adoption and will be removed in v16.\n *\n * Accepts options as a second argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\n\n\nexport function getDescription(node, options) {\n if (node.description) {\n return node.description.value;\n }\n\n if (options && options.commentDescriptions) {\n var rawValue = getLeadingCommentBlock(node);\n\n if (rawValue !== undefined) {\n return dedentBlockStringValue('\\n' + rawValue);\n }\n }\n}\n\nfunction getLeadingCommentBlock(node) {\n var loc = node.loc;\n\n if (!loc) {\n return;\n }\n\n var comments = [];\n var token = loc.startToken.prev;\n\n while (token && token.kind === TokenKind.COMMENT && token.next && token.prev && token.line + 1 === token.next.line && token.line !== token.prev.line) {\n var value = String(token.value);\n comments.push(value);\n token = token.prev;\n }\n\n return comments.reverse().join('\\n');\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\n\nexport function buildSchema(source, options) {\n return buildASTSchema(parse(source, options), options);\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport flatMap from '../polyfills/flatMap';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport mapValue from '../jsutils/mapValue';\nimport invariant from '../jsutils/invariant';\nimport devAssert from '../jsutils/devAssert';\nimport keyValMap from '../jsutils/keyValMap';\nimport { Kind } from '../language/kinds';\nimport { isTypeDefinitionNode, isTypeExtensionNode } from '../language/predicates';\nimport { assertValidSDLExtension } from '../validation/validate';\nimport { GraphQLDirective } from '../type/directives';\nimport { isSpecifiedScalarType } from '../type/scalars';\nimport { isIntrospectionType } from '../type/introspection';\nimport { assertSchema, GraphQLSchema } from '../type/schema';\nimport { isScalarType, isObjectType, isInterfaceType, isUnionType, isListType, isNonNullType, isEnumType, isInputObjectType, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType } from '../type/definition';\nimport { ASTDefinitionBuilder } from './buildASTSchema';\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n *\n * Accepts options as a third argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\nexport function extendSchema(schema, documentAST, options) {\n assertSchema(schema);\n documentAST && documentAST.kind === Kind.DOCUMENT || devAssert(0, 'Must provide valid Document AST');\n\n if (!options || !(options.assumeValid || options.assumeValidSDL)) {\n assertValidSDLExtension(documentAST, schema);\n } // Collect the type definitions and extensions found in the document.\n\n\n var typeDefs = [];\n var typeExtsMap = Object.create(null); // New directives and types are separate because a directives and types can\n // have the same name. For example, a type named \"skip\".\n\n var directiveDefs = [];\n var schemaDef; // Schema extensions are collected which may add additional operation types.\n\n var schemaExts = [];\n\n for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {\n var def = _documentAST$definiti2[_i2];\n\n if (def.kind === Kind.SCHEMA_DEFINITION) {\n schemaDef = def;\n } else if (def.kind === Kind.SCHEMA_EXTENSION) {\n schemaExts.push(def);\n } else if (isTypeDefinitionNode(def)) {\n typeDefs.push(def);\n } else if (isTypeExtensionNode(def)) {\n var extendedTypeName = def.name.value;\n var existingTypeExts = typeExtsMap[extendedTypeName];\n typeExtsMap[extendedTypeName] = existingTypeExts ? existingTypeExts.concat([def]) : [def];\n } else if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n directiveDefs.push(def);\n }\n } // If this document contains no new types, extensions, or directives then\n // return the same unmodified GraphQLSchema instance.\n\n\n if (Object.keys(typeExtsMap).length === 0 && typeDefs.length === 0 && directiveDefs.length === 0 && schemaExts.length === 0 && !schemaDef) {\n return schema;\n }\n\n var schemaConfig = schema.toConfig();\n var astBuilder = new ASTDefinitionBuilder(options, function (typeName) {\n var type = typeMap[typeName];\n\n if (type === undefined) {\n throw new Error(\"Unknown type: \\\"\".concat(typeName, \"\\\".\"));\n }\n\n return type;\n });\n var typeMap = keyValMap(typeDefs, function (node) {\n return node.name.value;\n }, function (node) {\n return astBuilder.buildType(node);\n });\n\n for (var _i4 = 0, _schemaConfig$types2 = schemaConfig.types; _i4 < _schemaConfig$types2.length; _i4++) {\n var existingType = _schemaConfig$types2[_i4];\n typeMap[existingType.name] = extendNamedType(existingType);\n } // Get the extended root operation types.\n\n\n var operationTypes = {\n query: schemaConfig.query && schemaConfig.query.name,\n mutation: schemaConfig.mutation && schemaConfig.mutation.name,\n subscription: schemaConfig.subscription && schemaConfig.subscription.name\n };\n\n if (schemaDef) {\n for (var _i6 = 0, _schemaDef$operationT2 = schemaDef.operationTypes; _i6 < _schemaDef$operationT2.length; _i6++) {\n var _ref2 = _schemaDef$operationT2[_i6];\n var operation = _ref2.operation;\n var type = _ref2.type;\n operationTypes[operation] = type.name.value;\n }\n } // Then, incorporate schema definition and all schema extensions.\n\n\n for (var _i8 = 0; _i8 < schemaExts.length; _i8++) {\n var schemaExt = schemaExts[_i8];\n\n if (schemaExt.operationTypes) {\n for (var _i10 = 0, _schemaExt$operationT2 = schemaExt.operationTypes; _i10 < _schemaExt$operationT2.length; _i10++) {\n var _ref4 = _schemaExt$operationT2[_i10];\n var _operation = _ref4.operation;\n var _type = _ref4.type;\n operationTypes[_operation] = _type.name.value;\n }\n }\n } // Support both original legacy names and extended legacy names.\n\n\n var allowedLegacyNames = schemaConfig.allowedLegacyNames.concat(options && options.allowedLegacyNames || []); // Then produce and return a Schema with these types.\n\n return new GraphQLSchema({\n // Note: While this could make early assertions to get the correctly\n // typed values, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n query: getMaybeTypeByName(operationTypes.query),\n mutation: getMaybeTypeByName(operationTypes.mutation),\n subscription: getMaybeTypeByName(operationTypes.subscription),\n types: objectValues(typeMap),\n directives: getMergedDirectives(),\n astNode: schemaDef || schemaConfig.astNode,\n extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExts),\n allowedLegacyNames: allowedLegacyNames\n }); // Below are functions used for producing this schema that have closed over\n // this scope and have access to the schema, cache, and newly defined types.\n\n function replaceType(type) {\n if (isListType(type)) {\n return new GraphQLList(replaceType(type.ofType));\n } else if (isNonNullType(type)) {\n return new GraphQLNonNull(replaceType(type.ofType));\n }\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n return typeMap[type.name];\n }\n\n function getMaybeTypeByName(typeName) {\n return typeName ? typeMap[typeName] : null;\n }\n\n function getMergedDirectives() {\n var existingDirectives = schema.getDirectives().map(extendDirective);\n existingDirectives || devAssert(0, 'schema must have default directives');\n return existingDirectives.concat(directiveDefs.map(function (node) {\n return astBuilder.buildDirective(node);\n }));\n }\n\n function extendNamedType(type) {\n if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {\n // Builtin types are not extended.\n return type;\n } else if (isScalarType(type)) {\n return extendScalarType(type);\n } else if (isObjectType(type)) {\n return extendObjectType(type);\n } else if (isInterfaceType(type)) {\n return extendInterfaceType(type);\n } else if (isUnionType(type)) {\n return extendUnionType(type);\n } else if (isEnumType(type)) {\n return extendEnumType(type);\n } else if (isInputObjectType(type)) {\n return extendInputObjectType(type);\n } // Not reachable. All possible types have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected type: ' + inspect(type));\n }\n\n function extendDirective(directive) {\n var config = directive.toConfig();\n return new GraphQLDirective(_objectSpread({}, config, {\n args: mapValue(config.args, extendArg)\n }));\n }\n\n function extendInputObjectType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n var fieldNodes = flatMap(extensions, function (node) {\n return node.fields || [];\n });\n return new GraphQLInputObjectType(_objectSpread({}, config, {\n fields: function fields() {\n return _objectSpread({}, mapValue(config.fields, function (field) {\n return _objectSpread({}, field, {\n type: replaceType(field.type)\n });\n }), {}, keyValMap(fieldNodes, function (field) {\n return field.name.value;\n }, function (field) {\n return astBuilder.buildInputField(field);\n }));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendEnumType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[type.name] || [];\n var valueNodes = flatMap(extensions, function (node) {\n return node.values || [];\n });\n return new GraphQLEnumType(_objectSpread({}, config, {\n values: _objectSpread({}, config.values, {}, keyValMap(valueNodes, function (value) {\n return value.name.value;\n }, function (value) {\n return astBuilder.buildEnumValue(value);\n })),\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendScalarType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n return new GraphQLScalarType(_objectSpread({}, config, {\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendObjectType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n var interfaceNodes = flatMap(extensions, function (node) {\n return node.interfaces || [];\n });\n var fieldNodes = flatMap(extensions, function (node) {\n return node.fields || [];\n });\n return new GraphQLObjectType(_objectSpread({}, config, {\n interfaces: function interfaces() {\n return [].concat(type.getInterfaces().map(replaceNamedType), interfaceNodes.map(function (node) {\n return astBuilder.getNamedType(node);\n }));\n },\n fields: function fields() {\n return _objectSpread({}, mapValue(config.fields, extendField), {}, keyValMap(fieldNodes, function (node) {\n return node.name.value;\n }, function (node) {\n return astBuilder.buildField(node);\n }));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendInterfaceType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n var fieldNodes = flatMap(extensions, function (node) {\n return node.fields || [];\n });\n return new GraphQLInterfaceType(_objectSpread({}, config, {\n fields: function fields() {\n return _objectSpread({}, mapValue(config.fields, extendField), {}, keyValMap(fieldNodes, function (node) {\n return node.name.value;\n }, function (node) {\n return astBuilder.buildField(node);\n }));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendUnionType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n var typeNodes = flatMap(extensions, function (node) {\n return node.types || [];\n });\n return new GraphQLUnionType(_objectSpread({}, config, {\n types: function types() {\n return [].concat(type.getTypes().map(replaceNamedType), typeNodes.map(function (node) {\n return astBuilder.getNamedType(node);\n }));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendField(field) {\n return _objectSpread({}, field, {\n type: replaceType(field.type),\n args: mapValue(field.args, extendArg)\n });\n }\n\n function extendArg(arg) {\n return _objectSpread({}, arg, {\n type: replaceType(arg.type)\n });\n }\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport keyValMap from '../jsutils/keyValMap';\nimport { GraphQLSchema } from '../type/schema';\nimport { GraphQLDirective } from '../type/directives';\nimport { isIntrospectionType } from '../type/introspection';\nimport { GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, isListType, isNonNullType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../type/definition';\n/**\n * Sort GraphQLSchema.\n */\n\nexport function lexicographicSortSchema(schema) {\n var schemaConfig = schema.toConfig();\n var typeMap = keyValMap(sortByName(schemaConfig.types), function (type) {\n return type.name;\n }, sortNamedType);\n return new GraphQLSchema(_objectSpread({}, schemaConfig, {\n types: objectValues(typeMap),\n directives: sortByName(schemaConfig.directives).map(sortDirective),\n query: replaceMaybeType(schemaConfig.query),\n mutation: replaceMaybeType(schemaConfig.mutation),\n subscription: replaceMaybeType(schemaConfig.subscription)\n }));\n\n function replaceType(type) {\n if (isListType(type)) {\n return new GraphQLList(replaceType(type.ofType));\n } else if (isNonNullType(type)) {\n return new GraphQLNonNull(replaceType(type.ofType));\n }\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n return typeMap[type.name];\n }\n\n function replaceMaybeType(maybeType) {\n return maybeType && replaceNamedType(maybeType);\n }\n\n function sortDirective(directive) {\n var config = directive.toConfig();\n return new GraphQLDirective(_objectSpread({}, config, {\n locations: sortBy(config.locations, function (x) {\n return x;\n }),\n args: sortArgs(config.args)\n }));\n }\n\n function sortArgs(args) {\n return sortObjMap(args, function (arg) {\n return _objectSpread({}, arg, {\n type: replaceType(arg.type)\n });\n });\n }\n\n function sortFields(fieldsMap) {\n return sortObjMap(fieldsMap, function (field) {\n return _objectSpread({}, field, {\n type: replaceType(field.type),\n args: sortArgs(field.args)\n });\n });\n }\n\n function sortInputFields(fieldsMap) {\n return sortObjMap(fieldsMap, function (field) {\n return _objectSpread({}, field, {\n type: replaceType(field.type)\n });\n });\n }\n\n function sortTypes(arr) {\n return sortByName(arr).map(replaceNamedType);\n }\n\n function sortNamedType(type) {\n if (isScalarType(type) || isIntrospectionType(type)) {\n return type;\n } else if (isObjectType(type)) {\n var config = type.toConfig();\n return new GraphQLObjectType(_objectSpread({}, config, {\n interfaces: function interfaces() {\n return sortTypes(config.interfaces);\n },\n fields: function fields() {\n return sortFields(config.fields);\n }\n }));\n } else if (isInterfaceType(type)) {\n var _config = type.toConfig();\n\n return new GraphQLInterfaceType(_objectSpread({}, _config, {\n fields: function fields() {\n return sortFields(_config.fields);\n }\n }));\n } else if (isUnionType(type)) {\n var _config2 = type.toConfig();\n\n return new GraphQLUnionType(_objectSpread({}, _config2, {\n types: function types() {\n return sortTypes(_config2.types);\n }\n }));\n } else if (isEnumType(type)) {\n var _config3 = type.toConfig();\n\n return new GraphQLEnumType(_objectSpread({}, _config3, {\n values: sortObjMap(_config3.values)\n }));\n } else if (isInputObjectType(type)) {\n var _config4 = type.toConfig();\n\n return new GraphQLInputObjectType(_objectSpread({}, _config4, {\n fields: function fields() {\n return sortInputFields(_config4.fields);\n }\n }));\n } // Not reachable. All possible types have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected type: ' + inspect(type));\n }\n}\n\nfunction sortObjMap(map, sortValueFn) {\n var sortedMap = Object.create(null);\n var sortedKeys = sortBy(Object.keys(map), function (x) {\n return x;\n });\n\n for (var _i2 = 0; _i2 < sortedKeys.length; _i2++) {\n var key = sortedKeys[_i2];\n var value = map[key];\n sortedMap[key] = sortValueFn ? sortValueFn(value) : value;\n }\n\n return sortedMap;\n}\n\nfunction sortByName(array) {\n return sortBy(array, function (obj) {\n return obj.name;\n });\n}\n\nfunction sortBy(array, mapToKey) {\n return array.slice().sort(function (obj1, obj2) {\n var key1 = mapToKey(obj1);\n var key2 = mapToKey(obj2);\n return key1.localeCompare(key2);\n });\n}\n","import flatMap from '../polyfills/flatMap';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport { print } from '../language/printer';\nimport { printBlockString } from '../language/blockString';\nimport { isIntrospectionType } from '../type/introspection';\nimport { GraphQLString, isSpecifiedScalarType } from '../type/scalars';\nimport { GraphQLDirective, DEFAULT_DEPRECATION_REASON, isSpecifiedDirective } from '../type/directives';\nimport { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../type/definition';\nimport { astFromValue } from '../utilities/astFromValue';\n\n/**\n * Accepts options as a second argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\nexport function printSchema(schema, options) {\n return printFilteredSchema(schema, function (n) {\n return !isSpecifiedDirective(n);\n }, isDefinedType, options);\n}\nexport function printIntrospectionSchema(schema, options) {\n return printFilteredSchema(schema, isSpecifiedDirective, isIntrospectionType, options);\n}\n\nfunction isDefinedType(type) {\n return !isSpecifiedScalarType(type) && !isIntrospectionType(type);\n}\n\nfunction printFilteredSchema(schema, directiveFilter, typeFilter, options) {\n var directives = schema.getDirectives().filter(directiveFilter);\n var typeMap = schema.getTypeMap();\n var types = objectValues(typeMap).sort(function (type1, type2) {\n return type1.name.localeCompare(type2.name);\n }).filter(typeFilter);\n return [printSchemaDefinition(schema)].concat(directives.map(function (directive) {\n return printDirective(directive, options);\n }), types.map(function (type) {\n return printType(type, options);\n })).filter(Boolean).join('\\n\\n') + '\\n';\n}\n\nfunction printSchemaDefinition(schema) {\n if (isSchemaOfCommonNames(schema)) {\n return;\n }\n\n var operationTypes = [];\n var queryType = schema.getQueryType();\n\n if (queryType) {\n operationTypes.push(\" query: \".concat(queryType.name));\n }\n\n var mutationType = schema.getMutationType();\n\n if (mutationType) {\n operationTypes.push(\" mutation: \".concat(mutationType.name));\n }\n\n var subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n operationTypes.push(\" subscription: \".concat(subscriptionType.name));\n }\n\n return \"schema {\\n\".concat(operationTypes.join('\\n'), \"\\n}\");\n}\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * schema {\n * query: Query\n * mutation: Mutation\n * }\n *\n * When using this naming convention, the schema description can be omitted.\n */\n\n\nfunction isSchemaOfCommonNames(schema) {\n var queryType = schema.getQueryType();\n\n if (queryType && queryType.name !== 'Query') {\n return false;\n }\n\n var mutationType = schema.getMutationType();\n\n if (mutationType && mutationType.name !== 'Mutation') {\n return false;\n }\n\n var subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && subscriptionType.name !== 'Subscription') {\n return false;\n }\n\n return true;\n}\n\nexport function printType(type, options) {\n if (isScalarType(type)) {\n return printScalar(type, options);\n } else if (isObjectType(type)) {\n return printObject(type, options);\n } else if (isInterfaceType(type)) {\n return printInterface(type, options);\n } else if (isUnionType(type)) {\n return printUnion(type, options);\n } else if (isEnumType(type)) {\n return printEnum(type, options);\n } else if (isInputObjectType(type)) {\n return printInputObject(type, options);\n } // Not reachable. All possible types have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\nfunction printScalar(type, options) {\n return printDescription(options, type) + \"scalar \".concat(type.name);\n}\n\nfunction printObject(type, options) {\n var interfaces = type.getInterfaces();\n var implementedInterfaces = interfaces.length ? ' implements ' + interfaces.map(function (i) {\n return i.name;\n }).join(' & ') : '';\n return printDescription(options, type) + \"type \".concat(type.name).concat(implementedInterfaces) + printFields(options, type);\n}\n\nfunction printInterface(type, options) {\n return printDescription(options, type) + \"interface \".concat(type.name) + printFields(options, type);\n}\n\nfunction printUnion(type, options) {\n var types = type.getTypes();\n var possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n return printDescription(options, type) + 'union ' + type.name + possibleTypes;\n}\n\nfunction printEnum(type, options) {\n var values = type.getValues().map(function (value, i) {\n return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value);\n });\n return printDescription(options, type) + \"enum \".concat(type.name) + printBlock(values);\n}\n\nfunction printInputObject(type, options) {\n var fields = objectValues(type.getFields()).map(function (f, i) {\n return printDescription(options, f, ' ', !i) + ' ' + printInputValue(f);\n });\n return printDescription(options, type) + \"input \".concat(type.name) + printBlock(fields);\n}\n\nfunction printFields(options, type) {\n var fields = objectValues(type.getFields()).map(function (f, i) {\n return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f);\n });\n return printBlock(fields);\n}\n\nfunction printBlock(items) {\n return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(options, args) {\n var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (args.length === 0) {\n return '';\n } // If every arg does not have a description, print them on one line.\n\n\n if (args.every(function (arg) {\n return !arg.description;\n })) {\n return '(' + args.map(printInputValue).join(', ') + ')';\n }\n\n return '(\\n' + args.map(function (arg, i) {\n return printDescription(options, arg, ' ' + indentation, !i) + ' ' + indentation + printInputValue(arg);\n }).join('\\n') + '\\n' + indentation + ')';\n}\n\nfunction printInputValue(arg) {\n var defaultAST = astFromValue(arg.defaultValue, arg.type);\n var argDecl = arg.name + ': ' + String(arg.type);\n\n if (defaultAST) {\n argDecl += \" = \".concat(print(defaultAST));\n }\n\n return argDecl;\n}\n\nfunction printDirective(directive, options) {\n return printDescription(options, directive) + 'directive @' + directive.name + printArgs(options, directive.args) + (directive.isRepeatable ? ' repeatable' : '') + ' on ' + directive.locations.join(' | ');\n}\n\nfunction printDeprecated(fieldOrEnumVal) {\n if (!fieldOrEnumVal.isDeprecated) {\n return '';\n }\n\n var reason = fieldOrEnumVal.deprecationReason;\n var reasonAST = astFromValue(reason, GraphQLString);\n\n if (reasonAST && reason !== '' && reason !== DEFAULT_DEPRECATION_REASON) {\n return ' @deprecated(reason: ' + print(reasonAST) + ')';\n }\n\n return ' @deprecated';\n}\n\nfunction printDescription(options, def) {\n var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var firstInBlock = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (!def.description) {\n return '';\n }\n\n var lines = descriptionLines(def.description, 120 - indentation.length);\n\n if (options && options.commentDescriptions) {\n return printDescriptionWithComments(lines, indentation, firstInBlock);\n }\n\n var text = lines.join('\\n');\n var preferMultipleLines = text.length > 70;\n var blockString = printBlockString(text, '', preferMultipleLines);\n var prefix = indentation && !firstInBlock ? '\\n' + indentation : indentation;\n return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n\nfunction printDescriptionWithComments(lines, indentation, firstInBlock) {\n var description = indentation && !firstInBlock ? '\\n' : '';\n\n for (var _i2 = 0; _i2 < lines.length; _i2++) {\n var line = lines[_i2];\n\n if (line === '') {\n description += indentation + '#\\n';\n } else {\n description += indentation + '# ' + line + '\\n';\n }\n }\n\n return description;\n}\n\nfunction descriptionLines(description, maxLen) {\n var rawLines = description.split('\\n');\n return flatMap(rawLines, function (line) {\n if (line.length < maxLen + 5) {\n return line;\n } // For > 120 character long lines, cut at space boundaries into sublines\n // of ~80 chars.\n\n\n return breakLine(line, maxLen);\n });\n}\n\nfunction breakLine(line, maxLen) {\n var parts = line.split(new RegExp(\"((?: |^).{15,\".concat(maxLen - 40, \"}(?= |$))\")));\n\n if (parts.length < 4) {\n return [line];\n }\n\n var sublines = [parts[0] + parts[1] + parts[2]];\n\n for (var i = 3; i < parts.length; i += 2) {\n sublines.push(parts[i].slice(1) + parts[i + 1]);\n }\n\n return sublines;\n}\n","/* istanbul ignore file */\nimport inspect from '../jsutils/inspect';\nimport printPathArray from '../jsutils/printPathArray';\nimport { pathToArray } from '../jsutils/Path';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { coerceInputValue } from './coerceInputValue';\n\n/**\n * Deprecated. Use coerceInputValue() directly for richer information.\n *\n * This function will be removed in v15\n */\nexport function coerceValue(inputValue, type, blameNode, path) {\n var errors = [];\n var value = coerceInputValue(inputValue, type, function (errorPath, invalidValue, error) {\n var errorPrefix = 'Invalid value ' + inspect(invalidValue);\n var pathArray = [].concat(pathToArray(path), errorPath);\n\n if (pathArray.length > 0) {\n errorPrefix += \" at \\\"value\".concat(printPathArray(pathArray), \"\\\"\");\n }\n\n errors.push(new GraphQLError(errorPrefix + ': ' + error.message, blameNode, undefined, undefined, undefined, error.originalError));\n });\n return errors.length > 0 ? {\n errors: errors,\n value: undefined\n } : {\n errors: undefined,\n value: value\n };\n}\n","/* istanbul ignore file */\nimport { coerceValue } from './coerceValue';\n/**\n * Deprecated. Use coerceInputValue() directly for richer information.\n *\n * This function will be removed in v15\n */\n\nexport function isValidJSValue(value, type) {\n var errors = coerceValue(value, type).errors;\n return errors ? errors.map(function (error) {\n return error.message;\n }) : [];\n}\n","import { Kind } from '../language/kinds';\nimport { visit, visitWithTypeInfo } from '../language/visitor';\nimport { ValuesOfCorrectType } from '../validation/rules/ValuesOfCorrectType';\nimport { ValidationContext } from '../validation/ValidationContext';\nimport { GraphQLSchema } from '../type/schema';\nimport { TypeInfo } from './TypeInfo';\n/**\n * Utility which determines if a value literal node is valid for an input type.\n *\n * Deprecated. Rely on validation for documents containing literal values.\n *\n * This function will be removed in v15\n */\n\nexport function isValidLiteralValue(type, valueNode) {\n var emptySchema = new GraphQLSchema({});\n var emptyDoc = {\n kind: Kind.DOCUMENT,\n definitions: []\n };\n var typeInfo = new TypeInfo(emptySchema, undefined, type);\n var context = new ValidationContext(emptySchema, emptyDoc, typeInfo);\n var visitor = ValuesOfCorrectType(context);\n visit(valueNode, visitWithTypeInfo(typeInfo, visitor));\n return context.getErrors();\n}\n","import flatMap from '../polyfills/flatMap';\n\n/**\n * Provided a collection of ASTs, presumably each from different files,\n * concatenate the ASTs together into batched AST, useful for validating many\n * GraphQL source files which together represent one conceptual application.\n */\nexport function concatAST(asts) {\n return {\n kind: 'Document',\n definitions: flatMap(asts, function (ast) {\n return ast.definitions;\n })\n };\n}\n","import { visit } from '../language/visitor';\n\n/**\n * separateOperations accepts a single AST document which may contain many\n * operations and fragments and returns a collection of AST documents each of\n * which contains a single operation as well the fragment definitions it\n * refers to.\n */\nexport function separateOperations(documentAST) {\n var operations = [];\n var fragments = Object.create(null);\n var positions = new Map();\n var depGraph = Object.create(null);\n var fromName;\n var idx = 0; // Populate metadata and build a dependency graph.\n\n visit(documentAST, {\n OperationDefinition: function OperationDefinition(node) {\n fromName = opName(node);\n operations.push(node);\n positions.set(node, idx++);\n },\n FragmentDefinition: function FragmentDefinition(node) {\n fromName = node.name.value;\n fragments[fromName] = node;\n positions.set(node, idx++);\n },\n FragmentSpread: function FragmentSpread(node) {\n var toName = node.name.value;\n (depGraph[fromName] || (depGraph[fromName] = Object.create(null)))[toName] = true;\n }\n }); // For each operation, produce a new synthesized AST which includes only what\n // is necessary for completing that operation.\n\n var separatedDocumentASTs = Object.create(null);\n\n for (var _i2 = 0; _i2 < operations.length; _i2++) {\n var operation = operations[_i2];\n var operationName = opName(operation);\n var dependencies = Object.create(null);\n collectTransitiveDependencies(dependencies, depGraph, operationName); // The list of definition nodes to be included for this operation, sorted\n // to retain the same order as the original document.\n\n var definitions = [operation];\n\n for (var _i4 = 0, _Object$keys2 = Object.keys(dependencies); _i4 < _Object$keys2.length; _i4++) {\n var name = _Object$keys2[_i4];\n definitions.push(fragments[name]);\n }\n\n definitions.sort(function (n1, n2) {\n return (positions.get(n1) || 0) - (positions.get(n2) || 0);\n });\n separatedDocumentASTs[operationName] = {\n kind: 'Document',\n definitions: definitions\n };\n }\n\n return separatedDocumentASTs;\n}\n\n// Provides the empty string for anonymous operations.\nfunction opName(operation) {\n return operation.name ? operation.name.value : '';\n} // From a dependency graph, collects a list of transitive dependencies by\n// recursing through a dependency graph.\n\n\nfunction collectTransitiveDependencies(collected, depGraph, fromName) {\n var immediateDeps = depGraph[fromName];\n\n if (immediateDeps) {\n for (var _i6 = 0, _Object$keys4 = Object.keys(immediateDeps); _i6 < _Object$keys4.length; _i6++) {\n var toName = _Object$keys4[_i6];\n\n if (!collected[toName]) {\n collected[toName] = true;\n collectTransitiveDependencies(collected, depGraph, toName);\n }\n }\n }\n}\n","import inspect from '../jsutils/inspect';\nimport { Source } from '../language/source';\nimport { TokenKind } from '../language/tokenKind';\nimport { createLexer, isPunctuatorToken } from '../language/lexer';\nimport { dedentBlockStringValue, getBlockStringIndentation } from '../language/blockString';\n/**\n * Strips characters that are not significant to the validity or execution\n * of a GraphQL document:\n * - UnicodeBOM\n * - WhiteSpace\n * - LineTerminator\n * - Comment\n * - Comma\n * - BlockString indentation\n *\n * Note: It is required to have a delimiter character between neighboring\n * non-punctuator tokens and this function always uses single space as delimiter.\n *\n * It is guaranteed that both input and output documents if parsed would result\n * in the exact same AST except for nodes location.\n *\n * Warning: It is guaranteed that this function will always produce stable results.\n * However, it's not guaranteed that it will stay the same between different\n * releases due to bugfixes or changes in the GraphQL specification.\n *\n * Query example:\n *\n * query SomeQuery($foo: String!, $bar: String) {\n * someField(foo: $foo, bar: $bar) {\n * a\n * b {\n * c\n * d\n * }\n * }\n * }\n *\n * Becomes:\n *\n * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}\n *\n * SDL example:\n *\n * \"\"\"\n * Type description\n * \"\"\"\n * type Foo {\n * \"\"\"\n * Field description\n * \"\"\"\n * bar: String\n * }\n *\n * Becomes:\n *\n * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n */\n\nexport function stripIgnoredCharacters(source) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n\n if (!(sourceObj instanceof Source)) {\n throw new TypeError(\"Must provide string or Source. Received: \".concat(inspect(sourceObj)));\n }\n\n var body = sourceObj.body;\n var lexer = createLexer(sourceObj);\n var strippedBody = '';\n var wasLastAddedTokenNonPunctuator = false;\n\n while (lexer.advance().kind !== TokenKind.EOF) {\n var currentToken = lexer.token;\n var tokenKind = currentToken.kind;\n /**\n * Every two non-punctuator tokens should have space between them.\n * Also prevent case of non-punctuator token following by spread resulting\n * in invalid token (e.g. `1...` is invalid Float token).\n */\n\n var isNonPunctuator = !isPunctuatorToken(currentToken);\n\n if (wasLastAddedTokenNonPunctuator) {\n if (isNonPunctuator || currentToken.kind === TokenKind.SPREAD) {\n strippedBody += ' ';\n }\n }\n\n var tokenBody = body.slice(currentToken.start, currentToken.end);\n\n if (tokenKind === TokenKind.BLOCK_STRING) {\n strippedBody += dedentBlockString(tokenBody);\n } else {\n strippedBody += tokenBody;\n }\n\n wasLastAddedTokenNonPunctuator = isNonPunctuator;\n }\n\n return strippedBody;\n}\n\nfunction dedentBlockString(blockStr) {\n // skip leading and trailing triple quotations\n var rawStr = blockStr.slice(3, -3);\n var body = dedentBlockStringValue(rawStr);\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n\n if (getBlockStringIndentation(lines) > 0) {\n body = '\\n' + body;\n }\n\n var lastChar = body[body.length - 1];\n var hasTrailingQuote = lastChar === '\"' && body.slice(-4) !== '\\\\\"\"\"';\n\n if (hasTrailingQuote || lastChar === '\\\\') {\n body += '\\n';\n }\n\n return '\"\"\"' + body + '\"\"\"';\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport objectValues from '../polyfills/objectValues';\nimport keyMap from '../jsutils/keyMap';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport { print } from '../language/printer';\nimport { visit } from '../language/visitor';\nimport { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNonNullType, isListType, isNamedType, isRequiredArgument, isRequiredInputField } from '../type/definition';\nimport { astFromValue } from './astFromValue';\nexport var BreakingChangeType = Object.freeze({\n TYPE_REMOVED: 'TYPE_REMOVED',\n TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND',\n TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION',\n VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM',\n REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED',\n INTERFACE_REMOVED_FROM_OBJECT: 'INTERFACE_REMOVED_FROM_OBJECT',\n FIELD_REMOVED: 'FIELD_REMOVED',\n FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND',\n REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED',\n ARG_REMOVED: 'ARG_REMOVED',\n ARG_CHANGED_KIND: 'ARG_CHANGED_KIND',\n DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED',\n DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED',\n REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED',\n DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED'\n});\nexport var DangerousChangeType = Object.freeze({\n VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM',\n TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION',\n OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED',\n OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED',\n INTERFACE_ADDED_TO_OBJECT: 'INTERFACE_ADDED_TO_OBJECT',\n ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE'\n});\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n */\nexport function findBreakingChanges(oldSchema, newSchema) {\n var breakingChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {\n return change.type in BreakingChangeType;\n });\n return breakingChanges;\n}\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n */\n\nexport function findDangerousChanges(oldSchema, newSchema) {\n var dangerousChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {\n return change.type in DangerousChangeType;\n });\n return dangerousChanges;\n}\n\nfunction findSchemaChanges(oldSchema, newSchema) {\n return [].concat(findTypeChanges(oldSchema, newSchema), findDirectiveChanges(oldSchema, newSchema));\n}\n\nfunction findDirectiveChanges(oldSchema, newSchema) {\n var schemaChanges = [];\n var directivesDiff = diff(oldSchema.getDirectives(), newSchema.getDirectives());\n\n for (var _i2 = 0, _directivesDiff$remov2 = directivesDiff.removed; _i2 < _directivesDiff$remov2.length; _i2++) {\n var oldDirective = _directivesDiff$remov2[_i2];\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REMOVED,\n description: \"\".concat(oldDirective.name, \" was removed.\")\n });\n }\n\n for (var _i4 = 0, _directivesDiff$persi2 = directivesDiff.persisted; _i4 < _directivesDiff$persi2.length; _i4++) {\n var _ref2 = _directivesDiff$persi2[_i4];\n var _oldDirective = _ref2[0];\n var newDirective = _ref2[1];\n var argsDiff = diff(_oldDirective.args, newDirective.args);\n\n for (var _i6 = 0, _argsDiff$added2 = argsDiff.added; _i6 < _argsDiff$added2.length; _i6++) {\n var newArg = _argsDiff$added2[_i6];\n\n if (isRequiredArgument(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n description: \"A required arg \".concat(newArg.name, \" on directive \").concat(_oldDirective.name, \" was added.\")\n });\n }\n }\n\n for (var _i8 = 0, _argsDiff$removed2 = argsDiff.removed; _i8 < _argsDiff$removed2.length; _i8++) {\n var oldArg = _argsDiff$removed2[_i8];\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n description: \"\".concat(oldArg.name, \" was removed from \").concat(_oldDirective.name, \".\")\n });\n }\n\n for (var _i10 = 0, _oldDirective$locatio2 = _oldDirective.locations; _i10 < _oldDirective$locatio2.length; _i10++) {\n var location = _oldDirective$locatio2[_i10];\n\n if (newDirective.locations.indexOf(location) === -1) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n description: \"\".concat(location, \" was removed from \").concat(_oldDirective.name, \".\")\n });\n }\n }\n }\n\n return schemaChanges;\n}\n\nfunction findTypeChanges(oldSchema, newSchema) {\n var schemaChanges = [];\n var typesDiff = diff(objectValues(oldSchema.getTypeMap()), objectValues(newSchema.getTypeMap()));\n\n for (var _i12 = 0, _typesDiff$removed2 = typesDiff.removed; _i12 < _typesDiff$removed2.length; _i12++) {\n var oldType = _typesDiff$removed2[_i12];\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED,\n description: \"\".concat(oldType.name, \" was removed.\")\n });\n }\n\n for (var _i14 = 0, _typesDiff$persisted2 = typesDiff.persisted; _i14 < _typesDiff$persisted2.length; _i14++) {\n var _ref4 = _typesDiff$persisted2[_i14];\n var _oldType = _ref4[0];\n var newType = _ref4[1];\n\n if (isEnumType(_oldType) && isEnumType(newType)) {\n schemaChanges.push.apply(schemaChanges, findEnumTypeChanges(_oldType, newType));\n } else if (isUnionType(_oldType) && isUnionType(newType)) {\n schemaChanges.push.apply(schemaChanges, findUnionTypeChanges(_oldType, newType));\n } else if (isInputObjectType(_oldType) && isInputObjectType(newType)) {\n schemaChanges.push.apply(schemaChanges, findInputObjectTypeChanges(_oldType, newType));\n } else if (isObjectType(_oldType) && isObjectType(newType)) {\n schemaChanges.push.apply(schemaChanges, findObjectTypeChanges(_oldType, newType));\n } else if (isInterfaceType(_oldType) && isInterfaceType(newType)) {\n schemaChanges.push.apply(schemaChanges, findFieldChanges(_oldType, newType));\n } else if (_oldType.constructor !== newType.constructor) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_CHANGED_KIND,\n description: \"\".concat(_oldType.name, \" changed from \") + \"\".concat(typeKindName(_oldType), \" to \").concat(typeKindName(newType), \".\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(oldType, newType) {\n var schemaChanges = [];\n var fieldsDiff = diff(objectValues(oldType.getFields()), objectValues(newType.getFields()));\n\n for (var _i16 = 0, _fieldsDiff$added2 = fieldsDiff.added; _i16 < _fieldsDiff$added2.length; _i16++) {\n var newField = _fieldsDiff$added2[_i16];\n\n if (isRequiredInputField(newField)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n description: \"A required field \".concat(newField.name, \" on input type \").concat(oldType.name, \" was added.\")\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n description: \"An optional field \".concat(newField.name, \" on input type \").concat(oldType.name, \" was added.\")\n });\n }\n }\n\n for (var _i18 = 0, _fieldsDiff$removed2 = fieldsDiff.removed; _i18 < _fieldsDiff$removed2.length; _i18++) {\n var oldField = _fieldsDiff$removed2[_i18];\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" was removed.\")\n });\n }\n\n for (var _i20 = 0, _fieldsDiff$persisted2 = fieldsDiff.persisted; _i20 < _fieldsDiff$persisted2.length; _i20++) {\n var _ref6 = _fieldsDiff$persisted2[_i20];\n var _oldField = _ref6[0];\n var _newField = _ref6[1];\n var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldField.type, _newField.type);\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: \"\".concat(oldType.name, \".\").concat(_oldField.name, \" changed type from \") + \"\".concat(String(_oldField.type), \" to \").concat(String(_newField.type), \".\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findUnionTypeChanges(oldType, newType) {\n var schemaChanges = [];\n var possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n for (var _i22 = 0, _possibleTypesDiff$ad2 = possibleTypesDiff.added; _i22 < _possibleTypesDiff$ad2.length; _i22++) {\n var newPossibleType = _possibleTypesDiff$ad2[_i22];\n schemaChanges.push({\n type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n description: \"\".concat(newPossibleType.name, \" was added to union type \").concat(oldType.name, \".\")\n });\n }\n\n for (var _i24 = 0, _possibleTypesDiff$re2 = possibleTypesDiff.removed; _i24 < _possibleTypesDiff$re2.length; _i24++) {\n var oldPossibleType = _possibleTypesDiff$re2[_i24];\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n description: \"\".concat(oldPossibleType.name, \" was removed from union type \").concat(oldType.name, \".\")\n });\n }\n\n return schemaChanges;\n}\n\nfunction findEnumTypeChanges(oldType, newType) {\n var schemaChanges = [];\n var valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n for (var _i26 = 0, _valuesDiff$added2 = valuesDiff.added; _i26 < _valuesDiff$added2.length; _i26++) {\n var newValue = _valuesDiff$added2[_i26];\n schemaChanges.push({\n type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n description: \"\".concat(newValue.name, \" was added to enum type \").concat(oldType.name, \".\")\n });\n }\n\n for (var _i28 = 0, _valuesDiff$removed2 = valuesDiff.removed; _i28 < _valuesDiff$removed2.length; _i28++) {\n var oldValue = _valuesDiff$removed2[_i28];\n schemaChanges.push({\n type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n description: \"\".concat(oldValue.name, \" was removed from enum type \").concat(oldType.name, \".\")\n });\n }\n\n return schemaChanges;\n}\n\nfunction findObjectTypeChanges(oldType, newType) {\n var schemaChanges = findFieldChanges(oldType, newType);\n var interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n for (var _i30 = 0, _interfacesDiff$added2 = interfacesDiff.added; _i30 < _interfacesDiff$added2.length; _i30++) {\n var newInterface = _interfacesDiff$added2[_i30];\n schemaChanges.push({\n type: DangerousChangeType.INTERFACE_ADDED_TO_OBJECT,\n description: \"\".concat(newInterface.name, \" added to interfaces implemented by \").concat(oldType.name, \".\")\n });\n }\n\n for (var _i32 = 0, _interfacesDiff$remov2 = interfacesDiff.removed; _i32 < _interfacesDiff$remov2.length; _i32++) {\n var oldInterface = _interfacesDiff$remov2[_i32];\n schemaChanges.push({\n type: BreakingChangeType.INTERFACE_REMOVED_FROM_OBJECT,\n description: \"\".concat(oldType.name, \" no longer implements interface \").concat(oldInterface.name, \".\")\n });\n }\n\n return schemaChanges;\n}\n\nfunction findFieldChanges(oldType, newType) {\n var schemaChanges = [];\n var fieldsDiff = diff(objectValues(oldType.getFields()), objectValues(newType.getFields()));\n\n for (var _i34 = 0, _fieldsDiff$removed4 = fieldsDiff.removed; _i34 < _fieldsDiff$removed4.length; _i34++) {\n var oldField = _fieldsDiff$removed4[_i34];\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" was removed.\")\n });\n }\n\n for (var _i36 = 0, _fieldsDiff$persisted4 = fieldsDiff.persisted; _i36 < _fieldsDiff$persisted4.length; _i36++) {\n var _ref8 = _fieldsDiff$persisted4[_i36];\n var _oldField2 = _ref8[0];\n var newField = _ref8[1];\n schemaChanges.push.apply(schemaChanges, findArgChanges(oldType, _oldField2, newField));\n var isSafe = isChangeSafeForObjectOrInterfaceField(_oldField2.type, newField.type);\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: \"\".concat(oldType.name, \".\").concat(_oldField2.name, \" changed type from \") + \"\".concat(String(_oldField2.type), \" to \").concat(String(newField.type), \".\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findArgChanges(oldType, oldField, newField) {\n var schemaChanges = [];\n var argsDiff = diff(oldField.args, newField.args);\n\n for (var _i38 = 0, _argsDiff$removed4 = argsDiff.removed; _i38 < _argsDiff$removed4.length; _i38++) {\n var oldArg = _argsDiff$removed4[_i38];\n schemaChanges.push({\n type: BreakingChangeType.ARG_REMOVED,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(oldArg.name, \" was removed.\")\n });\n }\n\n for (var _i40 = 0, _argsDiff$persisted2 = argsDiff.persisted; _i40 < _argsDiff$persisted2.length; _i40++) {\n var _ref10 = _argsDiff$persisted2[_i40];\n var _oldArg = _ref10[0];\n var newArg = _ref10[1];\n var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldArg.type, newArg.type);\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_CHANGED_KIND,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(_oldArg.name, \" has changed type from \") + \"\".concat(String(_oldArg.type), \" to \").concat(String(newArg.type), \".\")\n });\n } else if (_oldArg.defaultValue !== undefined) {\n if (newArg.defaultValue === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(_oldArg.name, \" defaultValue was removed.\")\n });\n } else {\n // Since we looking only for client's observable changes we should\n // compare default values in the same representation as they are\n // represented inside introspection.\n var oldValueStr = stringifyValue(_oldArg.defaultValue, _oldArg.type);\n var newValueStr = stringifyValue(newArg.defaultValue, newArg.type);\n\n if (oldValueStr !== newValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(_oldArg.name, \" has changed defaultValue from \").concat(oldValueStr, \" to \").concat(newValueStr, \".\")\n });\n }\n }\n }\n }\n\n for (var _i42 = 0, _argsDiff$added4 = argsDiff.added; _i42 < _argsDiff$added4.length; _i42++) {\n var _newArg = _argsDiff$added4[_i42];\n\n if (isRequiredArgument(_newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_ARG_ADDED,\n description: \"A required arg \".concat(_newArg.name, \" on \").concat(oldType.name, \".\").concat(oldField.name, \" was added.\")\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n description: \"An optional arg \".concat(_newArg.name, \" on \").concat(oldType.name, \".\").concat(oldField.name, \" was added.\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(oldType, newType) {\n if (isListType(oldType)) {\n return (// if they're both lists, make sure the underlying types are compatible\n isListType(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType) || // moving from nullable to non-null of the same underlying type is safe\n isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)\n );\n }\n\n if (isNonNullType(oldType)) {\n // if they're both non-null, make sure the underlying types are compatible\n return isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType);\n }\n\n return (// if they're both named types, see if their names are equivalent\n isNamedType(newType) && oldType.name === newType.name || // moving from nullable to non-null of the same underlying type is safe\n isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)\n );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {\n if (isListType(oldType)) {\n // if they're both lists, make sure the underlying types are compatible\n return isListType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType);\n }\n\n if (isNonNullType(oldType)) {\n return (// if they're both non-null, make sure the underlying types are\n // compatible\n isNonNullType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType) || // moving from non-null to nullable of the same underlying type is safe\n !isNonNullType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType)\n );\n } // if they're both named types, see if their names are equivalent\n\n\n return isNamedType(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type) {\n if (isScalarType(type)) {\n return 'a Scalar type';\n }\n\n if (isObjectType(type)) {\n return 'an Object type';\n }\n\n if (isInterfaceType(type)) {\n return 'an Interface type';\n }\n\n if (isUnionType(type)) {\n return 'a Union type';\n }\n\n if (isEnumType(type)) {\n return 'an Enum type';\n }\n\n /* istanbul ignore else */\n if (isInputObjectType(type)) {\n return 'an Input type';\n } // Not reachable. All possible named types have been considered.\n\n\n /* istanbul ignore next */\n invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\nfunction stringifyValue(value, type) {\n var ast = astFromValue(value, type);\n\n /* istanbul ignore next */\n ast != null || invariant(0);\n var sortedAST = visit(ast, {\n ObjectValue: function ObjectValue(objectNode) {\n var fields = [].concat(objectNode.fields).sort(function (fieldA, fieldB) {\n return fieldA.name.value.localeCompare(fieldB.name.value);\n });\n return _objectSpread({}, objectNode, {\n fields: fields\n });\n }\n });\n return print(sortedAST);\n}\n\nfunction diff(oldArray, newArray) {\n var added = [];\n var removed = [];\n var persisted = [];\n var oldMap = keyMap(oldArray, function (_ref11) {\n var name = _ref11.name;\n return name;\n });\n var newMap = keyMap(newArray, function (_ref12) {\n var name = _ref12.name;\n return name;\n });\n\n for (var _i44 = 0; _i44 < oldArray.length; _i44++) {\n var oldItem = oldArray[_i44];\n var newItem = newMap[oldItem.name];\n\n if (newItem === undefined) {\n removed.push(oldItem);\n } else {\n persisted.push([oldItem, newItem]);\n }\n }\n\n for (var _i46 = 0; _i46 < newArray.length; _i46++) {\n var _newItem = newArray[_i46];\n\n if (oldMap[_newItem.name] === undefined) {\n added.push(_newItem);\n }\n }\n\n return {\n added: added,\n persisted: persisted,\n removed: removed\n };\n}\n","import { GraphQLError } from '../error/GraphQLError';\nimport { visit, visitWithTypeInfo } from '../language/visitor';\nimport { getNamedType } from '../type/definition';\nimport { TypeInfo } from './TypeInfo';\n/**\n * A validation rule which reports deprecated usages.\n *\n * Returns a list of GraphQLError instances describing each deprecated use.\n */\n\nexport function findDeprecatedUsages(schema, ast) {\n var errors = [];\n var typeInfo = new TypeInfo(schema);\n visit(ast, visitWithTypeInfo(typeInfo, {\n Field: function Field(node) {\n var fieldDef = typeInfo.getFieldDef();\n\n if (fieldDef && fieldDef.isDeprecated) {\n var parentType = typeInfo.getParentType();\n\n if (parentType) {\n var reason = fieldDef.deprecationReason;\n errors.push(new GraphQLError(\"The field \".concat(parentType.name, \".\").concat(fieldDef.name, \" is deprecated.\") + (reason ? ' ' + reason : ''), node));\n }\n }\n },\n EnumValue: function EnumValue(node) {\n var enumVal = typeInfo.getEnumValue();\n\n if (enumVal && enumVal.isDeprecated) {\n var type = getNamedType(typeInfo.getInputType());\n\n if (type) {\n var reason = enumVal.deprecationReason;\n errors.push(new GraphQLError(\"The enum value \".concat(type.name, \".\").concat(enumVal.name, \" is deprecated.\") + (reason ? ' ' + reason : ''), node));\n }\n }\n }\n }));\n return errors;\n}\n","// The GraphQL query recommended for a full schema introspection.\nexport { // Produce the GraphQL query recommended for a full schema introspection.\n// Accepts optional IntrospectionOptions.\ngetIntrospectionQuery, // @deprecated, use getIntrospectionQuery() - will be removed in v15.\nintrospectionQuery } from './introspectionQuery';\n// Gets the target Operation from a Document.\nexport { getOperationAST } from './getOperationAST'; // Gets the Type for the target Operation AST.\n\nexport { getOperationRootType } from './getOperationRootType'; // Convert a GraphQLSchema to an IntrospectionQuery.\n\nexport { introspectionFromSchema } from './introspectionFromSchema'; // Build a GraphQLSchema from an introspection result.\n\nexport { buildClientSchema } from './buildClientSchema'; // Build a GraphQLSchema from GraphQL Schema language.\n\nexport { buildASTSchema, buildSchema, // @deprecated: Get the description from a schema AST node and supports legacy\n// syntax for specifying descriptions - will be removed in v16.\ngetDescription } from './buildASTSchema';\n// Extends an existing GraphQLSchema from a parsed GraphQL Schema language AST.\nexport { extendSchema } from './extendSchema'; // Sort a GraphQLSchema.\n\nexport { lexicographicSortSchema } from './lexicographicSortSchema'; // Print a GraphQLSchema to GraphQL Schema language.\n\nexport { printSchema, printType, printIntrospectionSchema } from './schemaPrinter'; // Create a GraphQLType from a GraphQL language AST.\n\nexport { typeFromAST } from './typeFromAST'; // Create a JavaScript value from a GraphQL language AST with a type.\n\nexport { valueFromAST } from './valueFromAST'; // Create a JavaScript value from a GraphQL language AST without a type.\n\nexport { valueFromASTUntyped } from './valueFromASTUntyped'; // Create a GraphQL language AST from a JavaScript value.\n\nexport { astFromValue } from './astFromValue'; // A helper to use within recursive-descent visitors which need to be aware of\n// the GraphQL type system.\n\nexport { TypeInfo } from './TypeInfo'; // Coerces a JavaScript value to a GraphQL type, or produces errors.\n\nexport { coerceInputValue } from './coerceInputValue'; // @deprecated use coerceInputValue - will be removed in v15.\n\nexport { coerceValue } from './coerceValue'; // @deprecated use coerceInputValue - will be removed in v15.\n\nexport { isValidJSValue } from './isValidJSValue'; // @deprecated use validation - will be removed in v15\n\nexport { isValidLiteralValue } from './isValidLiteralValue'; // Concatenates multiple AST together.\n\nexport { concatAST } from './concatAST'; // Separates an AST into an AST per Operation.\n\nexport { separateOperations } from './separateOperations'; // Strips characters that are not significant to the validity or execution\n// of a GraphQL document.\n\nexport { stripIgnoredCharacters } from './stripIgnoredCharacters'; // Comparators for types\n\nexport { isEqualType, isTypeSubTypeOf, doTypesOverlap } from './typeComparators'; // Asserts that a string is a valid GraphQL name\n\nexport { assertValidName, isValidNameError } from './assertValidName'; // Compares two GraphQLSchemas and detects breaking changes.\n\nexport { BreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges } from './findBreakingChanges';\n// Report all deprecated usage within a GraphQL document.\nexport { findDeprecatedUsages } from './findDeprecatedUsages';\n","/**\n * GraphQL.js provides a reference implementation for the GraphQL specification\n * but is also a useful utility for operating on GraphQL files and building\n * sophisticated tools.\n *\n * This primary module exports a general purpose function for fulfilling all\n * steps of the GraphQL specification in a single operation, but also includes\n * utilities for every part of the GraphQL specification:\n *\n * - Parsing the GraphQL language.\n * - Building a GraphQL type schema.\n * - Validating a GraphQL request against a type schema.\n * - Executing a GraphQL request against a type schema.\n *\n * This also includes utility functions for operating on GraphQL types and\n * GraphQL documents to facilitate building tools.\n *\n * You may also import from each sub-directory directly. For example, the\n * following two import statements are equivalent:\n *\n * import { parse } from 'graphql';\n * import { parse } from 'graphql/language';\n */\n// The GraphQL.js version info.\nexport { version, versionInfo } from './version'; // The primary entry point into fulfilling a GraphQL request.\n\nexport { graphql, graphqlSync } from './graphql'; // Create and operate on GraphQL type definitions and schema.\n\nexport { // Definitions\nGraphQLSchema, GraphQLDirective, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, // Standard GraphQL Scalars\nspecifiedScalarTypes, GraphQLInt, GraphQLFloat, GraphQLString, GraphQLBoolean, GraphQLID, // Built-in Directives defined by the Spec\nspecifiedDirectives, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective, // \"Enum\" of Type Kinds\nTypeKind, // Constant Deprecation Reason\nDEFAULT_DEPRECATION_REASON, // GraphQL Types for introspection.\nintrospectionTypes, __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind, // Meta-field definitions.\nSchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, // Predicates\nisSchema, isDirective, isType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField, isSpecifiedScalarType, isIntrospectionType, isSpecifiedDirective, // Assertions\nassertSchema, assertDirective, assertType, assertScalarType, assertObjectType, assertInterfaceType, assertUnionType, assertEnumType, assertInputObjectType, assertListType, assertNonNullType, assertInputType, assertOutputType, assertLeafType, assertCompositeType, assertAbstractType, assertWrappingType, assertNullableType, assertNamedType, // Un-modifiers\ngetNullableType, getNamedType, // Validate GraphQL schema.\nvalidateSchema, assertValidSchema } from './type';\n// Parse and operate on GraphQL language source files.\nexport { Source, getLocation, // Print source location\nprintLocation, printSourceLocation, // Lex\ncreateLexer, TokenKind, // Parse\nparse, parseValue, parseType, // Print\nprint, // Visit\nvisit, visitInParallel, visitWithTypeInfo, getVisitFn, BREAK, Kind, DirectiveLocation, // Predicates\nisDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode } from './language';\n// Execute GraphQL queries.\nexport { execute, defaultFieldResolver, defaultTypeResolver, responsePathAsArray, getDirectiveValues } from './execution';\nexport { subscribe, createSourceEventStream } from './subscription';\n// Validate GraphQL documents.\nexport { validate, ValidationContext, // All validation rules in the GraphQL Specification.\nspecifiedRules, // Individual validation rules.\nExecutableDefinitionsRule, FieldsOnCorrectTypeRule, FragmentsOnCompositeTypesRule, KnownArgumentNamesRule, KnownDirectivesRule, KnownFragmentNamesRule, KnownTypeNamesRule, LoneAnonymousOperationRule, NoFragmentCyclesRule, NoUndefinedVariablesRule, NoUnusedFragmentsRule, NoUnusedVariablesRule, OverlappingFieldsCanBeMergedRule, PossibleFragmentSpreadsRule, ProvidedRequiredArgumentsRule, ScalarLeafsRule, SingleFieldSubscriptionsRule, UniqueArgumentNamesRule, UniqueDirectivesPerLocationRule, UniqueFragmentNamesRule, UniqueInputFieldNamesRule, UniqueOperationNamesRule, UniqueVariableNamesRule, ValuesOfCorrectTypeRule, VariablesAreInputTypesRule, VariablesInAllowedPositionRule, // SDL-specific validation rules\nLoneSchemaDefinitionRule, UniqueOperationTypesRule, UniqueTypeNamesRule, UniqueEnumValueNamesRule, UniqueFieldDefinitionNamesRule, UniqueDirectiveNamesRule, PossibleTypeExtensionsRule } from './validation';\n// Create, format, and print GraphQL errors.\nexport { GraphQLError, syntaxError, locatedError, printError, formatError } from './error';\n// Utilities for operating on GraphQL type schema and parsed sources.\nexport { // Produce the GraphQL query recommended for a full schema introspection.\n// Accepts optional IntrospectionOptions.\ngetIntrospectionQuery, // @deprecated: use getIntrospectionQuery - will be removed in v15.\nintrospectionQuery, // Gets the target Operation from a Document.\ngetOperationAST, // Gets the Type for the target Operation AST.\ngetOperationRootType, // Convert a GraphQLSchema to an IntrospectionQuery.\nintrospectionFromSchema, // Build a GraphQLSchema from an introspection result.\nbuildClientSchema, // Build a GraphQLSchema from a parsed GraphQL Schema language AST.\nbuildASTSchema, // Build a GraphQLSchema from a GraphQL schema language document.\nbuildSchema, // @deprecated: Get the description from a schema AST node and supports legacy\n// syntax for specifying descriptions - will be removed in v16.\ngetDescription, // Extends an existing GraphQLSchema from a parsed GraphQL Schema\n// language AST.\nextendSchema, // Sort a GraphQLSchema.\nlexicographicSortSchema, // Print a GraphQLSchema to GraphQL Schema language.\nprintSchema, // Print a GraphQLType to GraphQL Schema language.\nprintType, // Prints the built-in introspection schema in the Schema Language\n// format.\nprintIntrospectionSchema, // Create a GraphQLType from a GraphQL language AST.\ntypeFromAST, // Create a JavaScript value from a GraphQL language AST with a Type.\nvalueFromAST, // Create a JavaScript value from a GraphQL language AST without a Type.\nvalueFromASTUntyped, // Create a GraphQL language AST from a JavaScript value.\nastFromValue, // A helper to use within recursive-descent visitors which need to be aware of\n// the GraphQL type system.\nTypeInfo, // Coerces a JavaScript value to a GraphQL type, or produces errors.\ncoerceInputValue, // @deprecated use coerceInputValue - will be removed in v15\ncoerceValue, // @deprecated use coerceInputValue - will be removed in v15\nisValidJSValue, // @deprecated use validation - will be removed in v15\nisValidLiteralValue, // Concatenates multiple AST together.\nconcatAST, // Separates an AST into an AST per Operation.\nseparateOperations, // Strips characters that are not significant to the validity or execution\n// of a GraphQL document.\nstripIgnoredCharacters, // Comparators for types\nisEqualType, isTypeSubTypeOf, doTypesOverlap, // Asserts a string is a valid GraphQL name.\nassertValidName, // Determine if a string is a valid GraphQL name.\nisValidNameError, // Compares two GraphQLSchemas and detects breaking changes.\nBreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges, // Report all deprecated usage within a GraphQL document.\nfindDeprecatedUsages } from './utilities';\n","import { Injectable, Injector } from '@rxdi/core';\nimport {\n ApolloClient,\n MutationOptions,\n QueryOptions,\n SubscriptionOptions\n} from '@rxdi/graphql-client';\nimport { WatchQueryOptions } from 'apollo-client';\nimport { from, Observable } from 'rxjs';\n\n@Injectable()\nexport class BaseService {\n @Injector(ApolloClient)\n public graphql: ApolloClient;\n\n query(options: QueryOptions) {\n return from(this.graphql.query.bind(this.graphql)(options)) as Observable<{\n data: T;\n }>;\n }\n\n mutate(options: MutationOptions) {\n return from(this.graphql.mutate.bind(this.graphql)(options)) as Observable<{\n data: T;\n }>;\n }\n\n watchQuery(options: WatchQueryOptions) {\n return this.graphql.watchQuery(options);\n }\n\n subscribe(options: SubscriptionOptions) {\n return from(\n this.graphql.subscribe.bind(this.graphql)(options)\n ) as Observable<{ data: T }>;\n }\n}\n","import { InjectionToken } from '@rxdi/core';\n\nimport { OptionalProperties } from './types';\n\nexport const DEFAULTS = new InjectionToken();\n\nexport type DEFAULTS = OptionalProperties;\n","import { Container, Inject } from '@rxdi/core';\nimport {\n async,\n Component,\n css,\n html,\n LitElement,\n property\n} from '@rxdi/lit-html';\nimport {\n MutationOptions,\n QueryBaseOptions,\n QueryOptions,\n SubscriptionOptions\n} from 'apollo-client';\nimport gql from 'graphql-tag';\nimport {\n BehaviorSubject,\n isObservable,\n Observable,\n of,\n ReplaySubject,\n Subscription\n} from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\n\nimport { BaseService } from './base.service';\nimport { DEFAULTS } from './tokens';\nimport { GraphOptions } from './types';\n\n/**\n * @customElement r-graph\n */\n@Component({\n selector: 'r-graph',\n template(this: GraphComponent) {\n return html`\n \n ${async(\n this.result.pipe(\n map(state =>\n this.options.render\n ? this.options.render(\n state,\n data => this.result.next(data),\n this.shadowRoot\n )\n : state\n ),\n tap(() => (this.loading = false)),\n catchError(e => {\n this.error = e;\n this.loading = false;\n return of('');\n })\n )\n )}\n ${this.loading\n ? html`\n ${typeof this.options.loading === 'function'\n ? this.options.loading()\n : Container.get(DEFAULTS).loading()}\n `\n : ''}\n ${this.error\n ? html`\n ${typeof this.options.error === 'function'\n ? this.options.error(this.error)\n : Container.get(DEFAULTS).error(this.error)}\n `\n : ''}\n \n `;\n }\n})\nexport class GraphComponent extends LitElement {\n @property({ type: Object })\n public options: GraphOptions = {\n fetch: '',\n style: css``,\n state: new BehaviorSubject({}),\n render: res =>\n html`\n ${res}\n `,\n loading: () => html``,\n error: () => html``,\n settings: {} as QueryBaseOptions\n };\n\n @Inject(BaseService)\n private graphql: BaseService;\n\n @property({ type: Boolean })\n private loading = true;\n\n @property({ type: String })\n private error = '';\n\n private subscription: Subscription;\n private pubsubSubscription: Subscription;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private result: ReplaySubject;\n OnInit() {\n this.result = new ReplaySubject();\n }\n OnUpdateFirst() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let task: Observable;\n if (this.options.state) {\n if (isObservable(this.options.state)) {\n task = this.options.state;\n } else {\n this.result.next(this.options.state);\n }\n } else {\n try {\n task = this.query();\n } catch (e) {\n this.result.error(e);\n this.result.complete();\n }\n }\n if (this.options.subscribe) {\n this.pubsubSubscription = this.graphql\n .subscribe({\n query: gql`\n ${this.options.subscribe}\n `\n })\n .subscribe(\n data => this.result.next(data),\n e => this.result.error(e)\n );\n }\n if (!task) {\n return;\n }\n this.subscription = task.subscribe(\n detail => {\n this.result.next(detail);\n this.dispatchEvent(new CustomEvent('onData', { detail }));\n },\n error => {\n if (error && error.networkError) {\n if (error.networkError.result) {\n error.message = `${JSON.stringify(\n error.networkError.result.errors\n )} ${error.message}`;\n }\n }\n this.result.error(error);\n this.dispatchEvent(new CustomEvent('onError', { detail: error }));\n }\n );\n }\n\n OnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.pubsubSubscription) {\n this.pubsubSubscription.unsubscribe();\n }\n this.result.complete();\n }\n\n private query(): Observable<{ data }> {\n let fetch = this.options.fetch;\n this.options.settings = this.options.settings || {};\n this.options.fetch = this.options.fetch || '';\n if (this.options.fetch['loc'] && this.options.fetch['loc'].source) {\n fetch = this.options.fetch['loc'].source.body;\n }\n if (typeof fetch === 'string' && fetch.includes('mutation')) {\n this.options.settings.mutation = gql`\n ${fetch}\n `;\n return this.graphql.mutate(this.options.settings as MutationOptions);\n }\n this.options.settings.query =\n typeof fetch !== 'string'\n ? fetch\n : gql`\n ${fetch}\n `;\n\n if (typeof fetch === 'string' && fetch.includes('subscription')) {\n return this.graphql.subscribe(\n this.options.settings as SubscriptionOptions\n );\n }\n return this.graphql.query(this.options.settings as QueryOptions);\n }\n\n isPrimitive(test) {\n return test !== Object(test);\n }\n}\n","import { Module, ModuleWithProviders } from '@rxdi/core';\nimport { GraphqlModule, GraphqlModuleConfig } from '@rxdi/graphql-client';\n\nimport { GraphComponent } from './graph.component';\nimport { DEFAULTS } from './tokens';\n\n@Module()\nexport class GraphModule {\n public static forRoot(\n config: GraphqlModuleConfig,\n defaults: DEFAULTS = {} as DEFAULTS\n ): ModuleWithProviders {\n return {\n module: GraphModule,\n components: [GraphComponent],\n providers: [{ provide: DEFAULTS, useValue: defaults }],\n frameworkImports: [GraphqlModule.forRoot(config)]\n };\n }\n}\n","import { GraphqlModuleConfig } from '@rxdi/graphql-client';\nimport { html } from '@rxdi/lit-html';\n\nimport { DEFAULTS } from './tokens';\n\nexport interface GraphqlSettings {\n config: GraphqlModuleConfig;\n defaults: DEFAULTS;\n}\n\nexport const GraphqlSettings: GraphqlSettings = {\n config: {\n uri: 'https://countries.trevorblades.com/',\n pubsub: 'wss://pubsub.youvolio.com/subscriptions',\n async onRequest() {\n return new Headers();\n }\n },\n defaults: {\n error: e => {\n return html`\n

\n ${e}\n

\n `;\n },\n loading: () => {\n return html`\n
\n \n
\n `;\n }\n }\n};\n","import { setConfig } from '@rhtml/graphql';\nimport { html } from '@rxdi/lit-html';\n\nsetConfig({\n config: {\n uri: 'https://countries.trevorblades.com/',\n /* wss://your-domain/subscriptions */\n pubsub: '',\n async onRequest() {\n return new Headers();\n }\n },\n defaults: {\n error: e => {\n return html`\n

\n ${e}\n

\n `;\n },\n loading: () => {\n return html`\n
\n \n
\n `;\n }\n }\n});\n","export interface HookState {\n element: HTMLElement;\n renderIsInProgress: boolean;\n hooksExecutedThisRender: number;\n elementUpdateFn: Function;\n}\n\nlet hooksState: HookState;\n\nconst OnRender = (element: HTMLElement, elementUpdateFn: Function) => {\n hooksState = {\n element,\n renderIsInProgress: true,\n hooksExecutedThisRender: 0,\n elementUpdateFn\n };\n};\n\nconst OnEndRender = () => {\n hooksState = {\n element: null,\n renderIsInProgress: false,\n hooksExecutedThisRender: 0,\n elementUpdateFn: null\n };\n};\n\nexport const renderWithHooks = (\n element: HTMLElement,\n templateFn: Function,\n elementUpdateFn: Function\n) => {\n OnRender(element, elementUpdateFn);\n const template = templateFn(element);\n OnEndRender();\n return template;\n};\n\nexport const getCurrentElement = () => hooksState.element;\n\nexport const getElementUpdateFn = () => hooksState.elementUpdateFn;\n\nexport const registerHook = (name?: string): [HTMLElement, number] => {\n if (!hooksState.renderIsInProgress) {\n throw new Error(\n `Hooks must be called from within an element's render() method. ${name} was not.`\n );\n }\n const hookId = hooksState.hooksExecutedThisRender++;\n return [hooksState.element, hookId];\n};\n","import { getElementUpdateFn, registerHook } from './hooks-core';\n\nconst stateMap = new WeakMap>();\n\nconst updateState = (\n element: HTMLElement,\n hookID: number,\n elementUpdateFn: Function,\n newValue: T\n) => {\n const currentValue = stateMap.get(element).get(hookID);\n if (currentValue === newValue) {\n return;\n }\n stateMap.get(element).set(hookID, newValue);\n if (elementUpdateFn) {\n elementUpdateFn();\n }\n};\n\nexport const useState = (value: T) => {\n const [element, hookID] = registerHook();\n const elementUpdateFn = getElementUpdateFn();\n\n if (!stateMap.has(element)) {\n stateMap.set(element, new Map());\n }\n\n if (!stateMap.get(element).has(hookID)) {\n updateState(element, hookID, null, value);\n }\n\n return [\n stateMap.get(element).get(hookID),\n updateState.bind(null, element, hookID, elementUpdateFn)\n ];\n};\n","import { render, TemplateResult } from '@rxdi/lit-html';\n\nimport { renderWithHooks } from './hooks-core';\n\nexport interface HookElementOptions {\n observedAttributes: string[];\n shadowRoot?: boolean;\n}\n\nexport const component = (\n renderFn: (e: HTMLElement) => TemplateResult,\n {\n observedAttributes,\n shadowRoot\n }: HookElementOptions = {} as HookElementOptions\n) =>\n class extends HTMLElement {\n static get observedAttributes() {\n return observedAttributes || [];\n }\n connectedCallback() {\n if (shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n this.render();\n }\n render() {\n render(\n renderWithHooks(this, renderFn, this.render.bind(this)),\n shadowRoot ? this.shadowRoot : this\n );\n }\n attributeChangedCallback(name, oldValue, newValue) {\n console.log(`Value ${name} changed from ${oldValue} to ${newValue}`);\n }\n };\n",null,"/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, html, LitElement, property } from '@rxdi/lit-html';\n\nimport { LetOperator } from './let';\n/**\n * @customElement r-for\n */\n@Component({\n selector: 'r-for',\n template() {\n return html`\n \n `;\n }\n})\nexport class ForOperator extends LitElement {\n @property({ type: Array })\n public of: any = [];\n OnUpdate() {\n const slotNodes = this.shadowRoot.querySelector('slot').assignedNodes();\n if (slotNodes.length) {\n const slotNode = slotNodes[0];\n const letOperator = slotNode.nextSibling as LetOperator;\n if (letOperator) {\n letOperator.data = this.of;\n }\n }\n }\n}\n","import { Component, html, LitElement, property } from '@rxdi/lit-html';\n/**\n * @customElement r-let\n */\n@Component({\n selector: 'r-let',\n template(this: LetOperator) {\n return html`\n ${this.isObservable(this.data)\n ? html`\n this.normalizeArray(s).map(this.item)\n }}\n >\n `\n : this.normalizeArray(this.data).map(this.item)}\n `;\n }\n})\nexport class LetOperator extends LitElement {\n @property({ type: Array })\n public data = [];\n\n @property({ type: Object })\n public item = v =>\n html`\n ${v}\n `;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private normalizeArray(state: Record) {\n if (!state || typeof state === 'string') {\n return [];\n }\n if (typeof state === 'number') {\n return Array.from(Array(state), (v, i) => i);\n }\n /* https://javascript.info/map-set */\n if (state instanceof Map || state instanceof Set) {\n return [...state.entries()];\n }\n if (!Array.isArray(state)) {\n return Object.entries(state);\n }\n return state;\n }\n\n private isObservable(value) {\n return (\n value && this.isFunction(value.lift) && this.isFunction(value.subscribe)\n );\n }\n private isFunction(value) {\n return typeof value === 'function';\n }\n}\n","import { Component, html, LitElement, property } from '@rxdi/lit-html';\n\n/**\n * @customElement r-if\n */\n@Component({\n selector: 'r-if',\n template(this: IfOperator) {\n return html`\n ${this.exp\n ? html`\n \n `\n : ''}\n `;\n }\n})\nexport class IfOperator extends LitElement {\n @property({ type: Boolean }) exp: boolean;\n}\n","import { Component, LitElement, property } from '@rxdi/lit-html';\n\n/**\n * @customElement r-lens\n */\n@Component({\n selector: 'r-lens'\n})\nexport class LensComponent extends LitElement {\n @property({ type: String }) match: string;\n @property({ type: Array }) get: (number | string | Function)[];\n @property({ type: Object }) ray: (res: T) => T = res => res;\n}\n","import {\n Component,\n html,\n LitElement,\n property,\n TemplateResult\n} from '@rxdi/lit-html';\n\n/**\n * @customElement r-render\n */\n@Component({\n selector: 'r-render',\n template: () => html`\n \n `\n})\nexport class RenderComponent extends LitElement {\n @property({ type: Object }) state: (\n state: T,\n setState?: (res: T) => void,\n shadowRoot?: ShadowRoot\n ) => TemplateResult;\n}\n","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar attr = (function (name) {\n return {\n get: function get(obj) {\n return !obj[name] && typeof obj.get === 'function' ? obj.get(name) : obj[name];\n },\n mod: function mod(f) {\n return function (obj) {\n var _arguments = arguments;\n return function () {\n for (var _len = _arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = _arguments[_key];\n }\n if (typeof obj.set === 'function') {\n return obj.set(name, f(obj[name] || obj.get(name)));\n } else if (Array.isArray(obj)) {\n return obj.slice(0, name).concat(f.apply(void 0, [obj[name]].concat(params))).concat(obj.slice(name + 1));\n } else {\n return _objectSpread({}, obj, _defineProperty({}, name, f.apply(void 0, [obj[name]].concat(params))));\n }\n }();\n };\n },\n traversal: false\n };\n});\n\nvar keys = function keys(obj) {\n return obj ? typeof obj.keys === 'function' ? obj.keys() : Object.keys(obj) : [];\n};\nvar setter = function setter(constructor) {\n switch (constructor) {\n case Map:\n return function (obj, key, value) {\n obj.set(key, value);\n return obj;\n };\n case Set:\n return function (obj, _, value) {\n return obj.add(value);\n };\n case Object:\n return function (obj, key, value) {\n obj[key] = value;\n return obj;\n };\n }\n};\nvar getter = function getter(constructor) {\n switch (constructor) {\n case Map:\n return function (obj, key) {\n return obj.get(key);\n };\n case Set:\n return function (_, key) {\n return key;\n };\n case Object:\n return function (obj, key) {\n return obj[key];\n };\n }\n};\nvar toFP = function toFP(_ref) {\n var native = _ref.native,\n overrides = _ref.overrides;\n return function (f) {\n for (var _len = arguments.length, fixedArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n fixedArgs[_key - 1] = arguments[_key];\n }\n return function (coll) {\n var fxn = into(f);\n if (typeof coll === 'undefined' || coll === null) {\n return coll;\n }\n if (typeof coll[native] === 'function') {\n return coll[native].apply(coll, [fxn].concat(fixedArgs));\n } else {\n var Constructor = Object.getPrototypeOf(coll).constructor;\n var override = overrides[Constructor];\n if (override) {\n return override(Constructor, getter(Constructor), setter(Constructor)).apply(void 0, [coll, fxn].concat(fixedArgs));\n }\n }\n };\n };\n};\nvar filter = function () {\n var _overrides;\n var iteratorFilter = function iteratorFilter(Constructor, get, set) {\n return function (obj, pred) {\n var acc = new Constructor();\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n try {\n for (var _iterator = keys(obj)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var value = get(obj, key);\n if (pred(value, key)) {\n set(acc, key, value);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return acc;\n };\n };\n return toFP({\n native: 'filter',\n overrides: (_overrides = {}, _defineProperty(_overrides, Object, iteratorFilter), _defineProperty(_overrides, Map, iteratorFilter), _defineProperty(_overrides, Set, iteratorFilter), _overrides)\n });\n}();\nvar map = function () {\n var _overrides2;\n var iteratorMap = function iteratorMap(Constructor, get, set) {\n return function (obj, f) {\n var acc = new Constructor();\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n try {\n for (var _iterator2 = keys(obj)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n set(acc, key, f(get(obj, key), key));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n return acc;\n };\n };\n return toFP({\n native: 'map',\n overrides: (_overrides2 = {}, _defineProperty(_overrides2, Object, iteratorMap), _defineProperty(_overrides2, Map, iteratorMap), _defineProperty(_overrides2, Set, iteratorMap), _defineProperty(_overrides2, Promise, function () {\n return function (promise, f) {\n return promise.then(f);\n };\n }), _overrides2)\n });\n}();\nvar find = function () {\n var _overrides3;\n var iteratorFind = function iteratorFind(_, get, __) {\n return function (obj, f) {\n var result;\n if (!obj) {\n return result;\n }\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n try {\n for (var _iterator3 = keys(obj)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var key = _step3.value;\n var value = get(obj, key);\n if (f(value, key)) {\n return value;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n };\n };\n return toFP({\n native: 'find',\n overrides: (_overrides3 = {}, _defineProperty(_overrides3, Object, iteratorFind), _defineProperty(_overrides3, Map, iteratorFind), _defineProperty(_overrides3, Set, iteratorFind), _overrides3)\n });\n}();\nvar some = function () {\n var _overrides4;\n var iteratorSome = function iteratorSome(_, get, __) {\n return function (obj, pred) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n try {\n for (var _iterator4 = keys(obj)[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var key = _step4.value;\n if (pred(get(obj, key), key)) {\n return true;\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n return false;\n };\n };\n return toFP({\n native: 'some',\n overrides: (_overrides4 = {}, _defineProperty(_overrides4, Object, iteratorSome), _defineProperty(_overrides4, Map, iteratorSome), _defineProperty(_overrides4, Set, iteratorSome), _overrides4)\n });\n}();\nvar reduce = function () {\n var _overrides5;\n var iteratorReduce = function iteratorReduce(Constructor, get, _) {\n return function (obj, f, base) {\n var acc = new Constructor();\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n try {\n for (var _iterator5 = keys(obj)[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var key = _step5.value;\n f(acc, get(obj, key), key);\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n return base;\n };\n };\n return toFP({\n native: 'reduce',\n overrides: (_overrides5 = {}, _defineProperty(_overrides5, Object, iteratorReduce), _defineProperty(_overrides5, Map, iteratorReduce), _defineProperty(_overrides5, Set, iteratorReduce), _overrides5)\n });\n}();\nvar every = function every(arr) {\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n try {\n for (var _iterator6 = arr[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var elem = _step6.value;\n if (!elem) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n return true;\n};\nvar cons = function cons(x) {\n return function (xs) {\n return _toConsumableArray(xs).concat([x]);\n };\n};\nvar unshift = function unshift(x) {\n return function (xs) {\n return [x].concat(_toConsumableArray(xs));\n };\n};\nvar first = function first(xs) {\n return xs[0];\n};\nvar rest = function rest(_ref2) {\n var _ref3 = _toArray(_ref2),\n x = _ref3[0],\n xs = _ref3.slice(1);\n return xs;\n};\nvar push = cons;\nvar concat = function concat(xs) {\n return function (ys) {\n return _toConsumableArray(ys).concat(_toConsumableArray(xs));\n };\n};\nvar append = concat;\nvar prepend = function prepend(ys) {\n return function (xs) {\n return _toConsumableArray(ys).concat(_toConsumableArray(xs));\n };\n};\n\nvar compile = function compile(lens) {\n return ['string', 'number'].includes(_typeof(lens)) ? attr(lens) : _objectSpread({\n traversal: false,\n optional: false\n }, lens);\n};\nvar compose = (function () {\n for (var _len = arguments.length, lenses = new Array(_len), _key = 0; _key < _len; _key++) {\n lenses[_key] = arguments[_key];\n }\n return lenses.length === 1 ? compile(lenses[0]) : {\n get: function get(obj) {\n return lenses.map(compile).reduce(function (_ref, lens) {\n var traverser = _ref.traverser,\n state = _ref.state,\n shortCircuited = _ref.shortCircuited;\n var nextState = shortCircuited ? null : traverser(lens.get)(state);\n return {\n state: nextState,\n traverser: lens.traversal ? function (f) {\n return map(traverser(f));\n } : traverser,\n shortCircuited: shortCircuited || lens.optional && (nextState === null || nextState === undefined)\n };\n }, {\n state: obj,\n traverser: function traverser(x) {\n return x;\n },\n shortCircuited: false\n }).state;\n },\n mod: function mod(f) {\n return function (obj) {\n var aux;\n for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n params[_key2 - 1] = arguments[_key2];\n }\n return aux = function aux(object, lenses) {\n var _lenses, first$$1, rest$$1;\n return _lenses = _toArray(lenses), first$$1 = _lenses[0], rest$$1 = _lenses.slice(1), rest$$1.length === 0 ? first$$1.mod(f).apply(void 0, [object].concat(params)) : first$$1.mod(function (obj) {\n return aux(obj, rest$$1);\n }).apply(void 0, [object].concat(params));\n }, aux(obj, lenses.map(compile));\n };\n }\n };\n});\n\nvar get = function get() {\n return compose.apply(void 0, arguments).get;\n};\n\nvar has = function has(pattern) {\n return function (obj) {\n return pattern && _typeof(pattern) === 'object' ? !!obj && every(Object.keys(pattern).map(function (key) {\n return has(get(key)(pattern))(bindingGet(key)(obj));\n })) : typeof pattern === 'function' ? pattern(obj) : pattern === obj;\n };\n};\nvar greaterThan = function greaterThan(a) {\n return function (b) {\n return b > a;\n };\n};\nvar lessThan = function lessThan(a) {\n return function (b) {\n return b < a;\n };\n};\nvar greaterThanEq = function greaterThanEq(a) {\n return function (b) {\n return b >= a;\n };\n};\nvar lessThanEq = function lessThanEq(a) {\n return function (b) {\n return b <= a;\n };\n};\nvar toggle = function toggle(bool) {\n return !bool;\n};\nvar returns = function returns(val) {\n return function (f) {\n return f() === val;\n };\n};\nvar bindingGet = function bindingGet(key) {\n return function (pattern) {\n var v;\n return v = get(key)(pattern), typeof v === 'function' ? v.bind(pattern) : v;\n };\n};\nvar isObject = function isObject(x) {\n return _typeof(x) === 'object' && !Array.isArray(x) && x !== null;\n};\nvar isValue = function isValue(x) {\n return x !== null && x !== undefined;\n};\n\nvar into = function into(f) {\n return typeof f === 'function' ? f : _typeof(f) === 'object' ? has(f) : get(f);\n};\n\nvar identity = function identity(a) {\n return a;\n};\nvar flip = function flip(f) {\n return function (a) {\n return function (b) {\n return f(b)(a);\n };\n };\n};\nvar always = function always(a) {\n return function (b) {\n return a;\n };\n};\nvar not = function not(f) {\n return function () {\n return !into(f).apply(void 0, arguments);\n };\n};\nvar and = function and() {\n for (var _len = arguments.length, fs = new Array(_len), _key = 0; _key < _len; _key++) {\n fs[_key] = arguments[_key];\n }\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return fs.reduce(function (acc, f) {\n return acc && f.apply(void 0, args);\n }, true);\n };\n};\nvar or = function or() {\n for (var _len3 = arguments.length, fs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n fs[_key3] = arguments[_key3];\n }\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return fs.reduce(function (acc, f) {\n return acc || f.apply(void 0, args);\n }, false);\n };\n};\nvar curry = function curry(n) {\n return function (f) {\n return _curry(n, f);\n };\n};\nfunction _curry(n, f) {\n var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n return function (arg) {\n return n ? _curry(n, f, cons(arg)(args)) : f.apply(void 0, _toConsumableArray(args));\n };\n}\n\nvar add = function add(a) {\n return function (b) {\n return a + b;\n };\n};\nvar sub = function sub(a) {\n return function (b) {\n return b - a;\n };\n};\nvar inc = function inc(num) {\n return num + 1;\n};\nvar dec = function dec(num) {\n return num - 1;\n};\n\nvar includes = function includes(snippet) {\n return function (text) {\n return text.includes(snippet);\n };\n};\nvar includesi = function includesi(snippet) {\n return function (text) {\n return text.toLowerCase().includes(snippet.toLowerCase());\n };\n};\n\nvar foldOf = function foldOf(f) {\n return function (field) {\n var getter = into(field);\n return function (acc, curr) {\n return f(acc, curr, getter);\n };\n };\n};\nvar maxOf = foldOf(function (acc, curr, getter) {\n return getter(curr) > getter(acc) ? curr : acc;\n});\nvar minOf = foldOf(function (acc, curr, getter) {\n return getter(curr) < getter(acc) ? curr : acc;\n});\nvar findOf = foldOf(function (acc, curr, getter) {\n return getter(acc) ? acc : getter(curr) ? curr : null;\n});\nvar sumOf = foldOf(function (acc, curr, getter) {\n return getter(curr) + (typeof acc === 'number' ? acc : getter(acc));\n});\nvar productOf = foldOf(function (acc, curr, getter) {\n return getter(curr) * (typeof acc === 'number' ? acc : getter(acc));\n});\n\nvar mod = function mod() {\n return compose.apply(void 0, arguments).mod;\n};\nvar set$1 = function set() {\n for (var _len = arguments.length, lenses = new Array(_len), _key = 0; _key < _len; _key++) {\n lenses[_key] = arguments[_key];\n }\n return function (newValue) {\n return compose.apply(void 0, lenses).mod(always(newValue));\n };\n};\n\nvar matching = function matching(pred) {\n var predFxn = into(pred);\n return {\n get: filter(predFxn),\n mod: function mod(f) {\n return map(function (n) {\n return predFxn(n) ? f(n) : n;\n });\n },\n traversal: true\n };\n};\n\nvar all = function all() {\n return {\n get: identity,\n mod: map,\n traversal: true\n };\n};\nvar all$1 = Object.assign(all, all());\n\nvar unless = (function (pred) {\n return matching(not(pred));\n});\n\nvar updateAll = function updateAll() {\n for (var _len = arguments.length, updaters = new Array(_len), _key = 0; _key < _len; _key++) {\n updaters[_key] = arguments[_key];\n }\n return function (state) {\n return updaters.reduce(function (currState, transformer) {\n return transformer(currState);\n }, state);\n };\n};\n\nvar withOf = function withOf(f) {\n f.of = f;\n return f;\n};\nvar foldBy = function foldBy(reducer) {\n return function (field) {\n return compile({\n get: reduce(reducer(field)),\n mod: function mod(f) {\n return function (obj) {\n var matching = reduce(reducer(field))(obj);\n return map(function (item) {\n return item === matching ? f(item) : item;\n })(obj);\n };\n }\n });\n };\n};\nvar findBy = withOf(foldBy(findOf));\nvar maxBy = withOf(foldBy(maxOf));\nvar minBy = withOf(foldBy(minOf));\n\nvar maybe = (function (name) {\n var base = attr(name);\n return compile({\n get: function get(obj) {\n return obj && base.get(obj);\n },\n mod: function mod(f) {\n return function (obj) {\n return obj && base.get(obj) ? base.mod(f)(obj) : obj;\n };\n },\n optional: true\n });\n});\n\nvar valueOr = function valueOr(def) {\n return compile({\n get: function get(val) {\n return isValue(val) ? val : def;\n },\n mod: function mod(fn) {\n return function (val) {\n return isValue(val) ? fn(val) : fn(def);\n };\n }\n });\n};\n\nvar fill = function fill(filling) {\n return function (obj) {\n var out = _objectSpread({}, obj);\n Object.entries(filling).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n out[key] = isValue(out[key]) ? out[key] : value;\n if (out.hasOwnProperty(key)) {\n if (isObject(out[key]) && isObject(value)) {\n out[key] = fill(value)(obj[key]);\n }\n }\n });\n return out;\n };\n};\n\nexport { compile as lens, matching, all$1 as all, unless, maybe, mod, set$1 as set, get, identity, flip, always, not, and, or, curry, into, filter, map, find, some, reduce, every, cons, unshift, first, rest, push, concat, append, prepend, has, greaterThan, lessThan, greaterThanEq, lessThanEq, toggle, returns, isObject, isValue, add, sub, inc, dec, includes, includesi, foldOf, maxOf, minOf, findOf, sumOf, productOf, updateAll, foldBy, findBy, maxBy, minBy, valueOr, fill };\n","import {\n Component,\n html,\n LitElement,\n property,\n TemplateResult\n} from '@rxdi/lit-html';\nimport { map } from 'rxjs/operators';\nimport { all, get, mod } from 'shades';\n\nimport { FetchComponent } from './fetch';\nimport { LensComponent } from './lens';\nimport { RenderComponent } from './render';\nimport { SettingsComponent } from './settings';\nimport { StateComponent } from './state';\nimport { StyleComponent } from './style';\nimport { GraphOptions } from './types';\n\nfunction isObservable(obj) {\n return typeof obj.lift === 'function' && typeof obj.subscribe === 'function';\n}\n\n/**\n * @customElement r-part\n */\n@Component({\n selector: 'r-part',\n template(this: MonadComponent) {\n return html`\n \n ${this.options ? this.componentToRender : ''}\n `;\n }\n})\nexport class MonadComponent extends LitElement {\n @property({ type: Object })\n private options: GraphOptions;\n\n private componentToRender: TemplateResult;\n\n async OnUpdateFirst() {\n const nodes = this.shadowRoot.querySelector('slot').assignedNodes();\n const renderComponent = this.findNode(nodes, 'r-render') as RenderComponent;\n const fetchComponent = this.findNode(nodes, 'r-fetch') as FetchComponent;\n const stateComponent = this.findNode(nodes, 'r-state') as StateComponent;\n const settings = this.findNode(nodes, 'r-settings') as SettingsComponent;\n const lensComponent = this.findNode(nodes, 'r-lens') as LensComponent;\n const styleComponent = this.findNode(nodes, 'r-style');\n\n const script = this.findNode(nodes, 'script') as HTMLScriptElement;\n if (script) {\n new Function(script.innerHTML).call(this);\n }\n const fetch: string = fetchComponent\n ? this.applyQueries(fetchComponent)\n : '';\n\n let state = stateComponent ? await stateComponent.value : null;\n\n if (lensComponent) {\n state = this.applyLenses(state, lensComponent);\n }\n this.options = {\n state,\n fetch,\n style: styleComponent?.value,\n render: renderComponent.state\n };\n this.options.settings = settings ? settings.value : null;\n\n fetchComponent\n ? (this.componentToRender = html`\n \n `)\n : (this.componentToRender = html`\n \n `);\n }\n\n private trim(query = '', type: 'query' | 'mutation' | 'subscription') {\n if (query.includes(type)) {\n return query;\n }\n const trimmedQuery = query.trim().replace(/\\s/g, ' ');\n return `${type} ${trimmedQuery}`;\n }\n\n private applyQueries(fetchComponent: FetchComponent) {\n if (fetchComponent.query) {\n return this.trim(fetchComponent.query, 'query');\n }\n if (fetchComponent.subscribe) {\n return this.trim(fetchComponent.subscribe, 'subscription');\n }\n if (fetchComponent.mutate) {\n return this.trim(fetchComponent.mutate, 'mutation');\n }\n return '';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private applyLenses(state: any = {}, lensComponent: LensComponent) {\n let newState = JSON.parse(JSON.stringify(state));\n if (lensComponent.match) {\n newState = this.get(newState, lensComponent.match);\n } else if (lensComponent.get) {\n lensComponent.get = lensComponent.get.map(a => (a === 'all' ? all : a));\n if (isObservable(newState)) {\n newState = newState.pipe(\n map(s => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const expectedState = (get as any)(...lensComponent.get)(s);\n if (!expectedState) {\n return s;\n }\n return expectedState;\n })\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newState = (get as any)(...lensComponent.get)(newState);\n }\n if (lensComponent.ray) {\n newState = lensComponent.ray(newState);\n }\n } else if (lensComponent.ray) {\n if (isObservable(newState)) {\n newState = newState.pipe(map(s => lensComponent.ray(s)));\n } else {\n newState = lensComponent.ray(newState);\n }\n }\n return newState;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private modState(args: any[], state) {\n return new Promise((resolve, reject) => {\n try {\n mod(args[0], args[1], args[2], args[3], args[4])(resolve)(state);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n private findNode(nodes: Node[], localName: string): T | null {\n const node = nodes.find(\n n =>\n n &&\n n.nextSibling &&\n (n.nextSibling as HTMLElement).localName === localName\n );\n return (node ? node.nextSibling : null) as never;\n }\n\n private get(obj = {}, path = '', defaultValue?) {\n return (\n path\n .replace(/\\[(.+?)\\]/g, '.$1')\n .split('.')\n .reduce((o, key) => o[key], obj) || defaultValue\n );\n }\n}\n","import { Component, LitElement, property } from '@rxdi/lit-html';\n\n/**\n * @customElement r-state\n */\n@Component({\n selector: 'r-state'\n})\nexport class StateComponent extends LitElement {\n @property() value;\n}\n","export const RegistryReadyEvent = 'r-component-registry-ready';\nexport const selector = `r-component-registry`;\n","import '@rhtml/operators';\n\nimport {\n Component,\n html,\n LitElement,\n property,\n TemplateResult\n} from '@rxdi/lit-html';\n\nimport { RegistryReadyEvent, selector } from './interface';\n\n/**\n * @customElement r-component-registry\n */\n@Component({\n selector,\n template() {\n return html`\n \n i}>\n \n `;\n }\n})\nexport class ComponentRegistry extends LitElement {\n @property({ type: Array })\n private components = [];\n OnInit() {\n window.dispatchEvent(new Event(RegistryReadyEvent));\n }\n register(template: TemplateResult) {\n this.components = [...this.components, template];\n }\n}\n\nwindow.addEventListener('load', () =>\n document.body.append(document.createElement(selector))\n);\n","import { Component, html, LitElement } from '@rxdi/lit-html';\n\n/**\n * @customElement r-component\n */\n@Component({\n selector: 'r-component',\n template: () => html`\n \n `\n})\nexport class RComponentOperator extends LitElement {\n async OnUpdateFirst() {\n const nodes = this.shadowRoot.querySelector('slot').assignedNodes();\n const selectorComponent = this.findNode(nodes, 'r-selector');\n const renderComponent = this.findNode(nodes, 'r-render');\n const propertiesComponent = this.findNode(nodes, 'r-props');\n\n if (propertiesComponent) {\n await propertiesComponent.requestUpdate();\n }\n const selector = selectorComponent ? selectorComponent.innerText : null;\n\n if (!window.customElements.get(selector) && selector) {\n Component({\n selector,\n template() {\n return renderComponent\n ? renderComponent.state(\n this,\n state => Object.assign(this, state),\n this.shadowRoot\n )\n : html`\n Missing template\n `;\n }\n })(\n class extends LitElement {\n loading = true;\n static get properties() {\n return { ...propertiesComponent.props, loading: { type: Boolean } };\n }\n }\n );\n }\n\n if (renderComponent) {\n renderComponent.remove();\n }\n if (selectorComponent) {\n selectorComponent.remove();\n }\n if (propertiesComponent) {\n propertiesComponent.remove();\n }\n\n const script = this.findNode(nodes, 'script') as HTMLScriptElement;\n if (script) {\n await window.customElements.whenDefined(selector);\n new Function(script.innerHTML).call(\n await window.customElements.get(selector)\n );\n script.remove();\n }\n this.remove();\n }\n findNode(nodes, localName) {\n const node = nodes.find(\n n => n && n.nextSibling && n.nextSibling.localName === localName\n );\n return node ? node.nextSibling : null;\n }\n}\n","import { Component, html, LitElement } from '@rxdi/lit-html';\n/**\n * @customElement r-key\n */\n@Component({\n selector: 'r-key',\n template: () => html`\n \n `\n})\nexport class RKeyOperator extends LitElement {}\n","import { Component, html, LitElement, property } from '@rxdi/lit-html';\n/**\n * @customElement r-prop\n */\n@Component({\n selector: 'r-prop',\n template: () => html`\n \n `\n})\nexport class RPropOperator extends LitElement {\n @property()\n key: string;\n\n @property()\n type: string;\n}\n","import { Component, html, LitElement } from '@rxdi/lit-html';\n/**\n * @customElement r-props\n */\n@Component({\n selector: 'r-props',\n template: () => html`\n \n `\n})\nexport class RPropsOperator extends LitElement {\n private nodes: NodeListOf;\n public props = {};\n OnUpdateFirst() {\n this.nodes = this.querySelectorAll('r-prop');\n\n this.nodes.forEach(n => {\n const k = n.querySelector('r-key');\n const t = n.querySelector('r-type');\n const key = n['key'] || k.innerText;\n let type = n['type'] || t.innerText;\n if (this.isString(type)) {\n type = String;\n }\n if (this.isNumber(type)) {\n type = Number;\n }\n if (this.isBoolean(type)) {\n type = Boolean;\n }\n if (this.isObject(type)) {\n type = Object;\n }\n this.props[key] = { type };\n });\n }\n OnDestroy() {\n this.nodes.forEach(n => n.remove());\n }\n\n isString(value) {\n return value === 'String';\n }\n\n isNumber(value) {\n return value === 'Number';\n }\n\n isBoolean(value) {\n return value === 'Boolean';\n }\n\n isObject(value) {\n return value === 'Object';\n }\n}\n","import { Component, html, LitElement } from '@rxdi/lit-html';\n/**\n * @customElement r-type\n */\n@Component({\n selector: 'r-type',\n template: () => html`\n \n `\n})\nexport class RTypeOperator extends LitElement {}\n","import { TemplateResult } from '@rxdi/lit-html';\n\nimport { ComponentRegistry } from './component-registry';\nimport { RegistryReadyEvent, selector } from './interface';\n\nexport function Hydrate(template: TemplateResult) {\n return new Promise(resolve => {\n let registry = document.querySelector(selector) as ComponentRegistry;\n if (registry) {\n registry.register(template);\n resolve(registry);\n } else {\n const handler = () => {\n registry = document.querySelector(selector);\n registry.register(template);\n resolve(registry);\n window.removeEventListener(RegistryReadyEvent, handler);\n };\n window.addEventListener(RegistryReadyEvent, handler);\n }\n });\n}\n","import { LitElement, property } from '@rxdi/lit-html';\n\nexport class LitServiceElement extends LitElement {\n @property({ type: Object })\n run: (self: T) => void = () => null;\n\n OnUpdateFirst() {\n this.remove();\n this.run(this as never);\n }\n}\n","import './component-registry';\n\nimport { ComponentRegistry } from './component-registry';\nimport { RComponentOperator } from './r-component';\nimport { RKeyOperator } from './r-key';\nimport { RPropOperator } from './r-prop';\nimport { RPropsOperator } from './r-props';\nimport { RTypeOperator } from './r-type';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'r-component': RComponentOperator;\n 'r-key': RKeyOperator;\n 'r-prop': RPropOperator;\n 'r-props': RPropsOperator;\n 'r-type': RTypeOperator;\n 'r-component-registry': ComponentRegistry;\n }\n}\n\nexport * from './r-component';\nexport * from './r-key';\nexport * from './r-prop';\nexport * from './r-props';\nexport * from './r-type';\nexport * from './hydrate';\nexport * from './lit-service-element';\n","import './setup-graphql';\nimport '@rhtml/hooks';\nimport '@rhtml/operators';\nimport '@rhtml/components';\nimport '@rhtml/graphql';\nimport '@rhtml/experiments';\n\nimport { Component, html, LitElement, property } from '@rxdi/lit-html';\nimport { interval } from 'rxjs';\nimport { of } from 'rxjs';\nimport { map, scan } from 'rxjs/operators';\nimport { delay } from 'rxjs/operators';\n\nimport { NotificationState, State } from './interface';\n\ninterface IUser {\n id: number;\n name: string;\n}\ninterface IState {\n loading: boolean;\n userId: number;\n user: IUser;\n}\n\n/**\n * @customElement user-service\n */\n@Component({\n selector: 'user-service'\n})\nexport class UserService extends LitElement {\n @property()\n run: (self: UserService) => void;\n\n OnUpdateFirst() {\n this.remove();\n this.run.call(this);\n }\n\n getUserById(id: number) {\n return of({ id, name: 'Kristyian Tachev' })\n .pipe(delay(2000))\n .toPromise();\n }\n}\n\n@Component({\n selector: 'r-html-view',\n template(this: RHtmlViewComponent) {\n return html`\n State) => html`\n \n ${counter}\n `,\n loading: () => html`\n \n i / 10))}>\n \n html`\n Loading ${g}s...\n `}\n >\n \n `,\n error: () =>\n html`\n Error\n `\n }}\n >\n \n\n \n \n void\n ) => html`\n \n Loading\n \n

User id: ${user.id}

\n

User name: ${user.name}

\n
\n `}\n >\n \n
\n\n \n r-counter\n \n \n \n html`\n \n setState({ value: state.value + state.value, loading: false })}\n >\n Increment\n \n \n Loading...\n

${state.value}

\n

User: ${JSON.stringify(state.user)}

\n `}\n >\n \n
\n\n \n\n \n\n \n \n html`\n

${name}

\n `}\n >\n \n
\n\n \n \n \n html`\n \n name}>\n \n `}\n >\n \n \n\n \n \n void\n ) => html`\n

${appUpdated}

\n {\n setState({\n data: {\n notifications: {\n appUpdated: Number(appUpdated) + Number(appUpdated)\n }\n }\n });\n }}\n >\n Increment Subscriptions State x2\n \n

\n \n

\n\n

\n \n

\n

\n \n

\n (will be overriten when server emit new state)\n `}\n >\n \n
\n\n \n r-pesho\n \n \n \n \n \n html`\n ${s.pesho} | ${s.pesho2} | ${s.pesho3}\n `}\n >\n \n \n `;\n }\n})\nexport class RHtmlViewComponent extends LitElement {}\n"]} \ No newline at end of file diff --git a/examples/hydrate/index.html b/examples/hydrate/index.html deleted file mode 100644 index 503b266..0000000 --- a/examples/hydrate/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/examples/hydrate/main.ts b/examples/hydrate/main.ts deleted file mode 100644 index 77d3229..0000000 --- a/examples/hydrate/main.ts +++ /dev/null @@ -1,5 +0,0 @@ -import '@rhtml/operators'; -import '@rhtml/components'; -import '@rhtml/experiments'; -import './user-profile'; -import './user.service'; diff --git a/examples/hydrate/user-profile.ts b/examples/hydrate/user-profile.ts deleted file mode 100644 index 8025dfb..0000000 --- a/examples/hydrate/user-profile.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Hydrate } from '@rhtml/experiments'; -import { html, LitElement } from '@rxdi/lit-html'; - -import { IUser, UserService } from './user.service'; - -interface IState { - loading: boolean; - userId: number; - user: IUser; -} - -const UserProfile = html` - - user-profile - - - - void - ) => html` - - Loading... - -

User id: ${user.id}

-

User name: ${user.name}

-
- `} - > -
-
-`; - -Hydrate(UserProfile); - -export declare class UserProfileComponent extends LitElement { - userId: string; -} - -declare global { - interface HTMLElementTagNameMap { - 'user-profile': UserProfileComponent; - } -} diff --git a/examples/hydrate/user.service.ts b/examples/hydrate/user.service.ts deleted file mode 100644 index 8d5b77d..0000000 --- a/examples/hydrate/user.service.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { LitServiceElement } from '@rhtml/experiments'; -import { Component } from '@rxdi/lit-html'; -import { of } from 'rxjs'; -import { delay } from 'rxjs/operators'; - -export interface IUser { - id?: number; - name?: string; -} - -/** - * @customElement user-service - */ -@Component({ - selector: 'user-service', -}) -export class UserService extends LitServiceElement { - getUserById(id: number) { - return of({ id, name: 'Kristyian Tachev' }).pipe(delay(2000)).toPromise(); - } -} diff --git a/examples/main/index.html b/examples/main/index.html deleted file mode 100644 index 3acd5ac..0000000 --- a/examples/main/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - diff --git a/examples/main/interface.ts b/examples/main/interface.ts deleted file mode 100644 index 6d4d819..0000000 --- a/examples/main/interface.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface State { - counter: number; -} -export interface NotificationState { - data: { notifications: { appUpdated: string | number } }; -} diff --git a/examples/main/main.ts b/examples/main/main.ts deleted file mode 100644 index 4d4a759..0000000 --- a/examples/main/main.ts +++ /dev/null @@ -1,222 +0,0 @@ -import './setup-graphql'; -import '@rhtml/hooks'; -import '@rhtml/operators'; -import '@rhtml/components'; -import '@rhtml/graphql'; -import '@rhtml/experiments'; - -import { Component, html, LitElement, property } from '@rxdi/lit-html'; -import { interval } from 'rxjs'; -import { of } from 'rxjs'; -import { map, scan } from 'rxjs/operators'; -import { delay } from 'rxjs/operators'; - -import { NotificationState, State } from './interface'; - -interface IUser { - id: number; - name: string; -} -interface IState { - loading: boolean; - userId: number; - user: IUser; -} - -/** - * @customElement user-service - */ -@Component({ - selector: 'user-service', -}) -export class UserService extends LitElement { - @property() - run: (self: UserService) => void; - - OnUpdateFirst() { - this.remove(); - this.run.call(this); - } - - getUserById(id: number) { - return of({ id, name: 'Kristyian Tachev' }).pipe(delay(2000)).toPromise(); - } -} - -@Component({ - selector: 'r-html-view', - template(this: RHtmlViewComponent) { - return html` - State) => html` - - ${counter} - `, - loading: () => html` - - i / 10))} - > - html` Loading ${g}s... `}> - - `, - error: () => html` Error `, - }} - > - - - - - void - ) => html` - - Loading - -

User id: ${user.id}

-

User name: ${user.name}

-
- `} - > -
-
- - - r-counter - - - - html` - - - Loading... -

${state.value}

-

User: ${JSON.stringify(state.user)}

- `} - > -
-
- - - - - - - - html`

${name}

`}>
-
- - - - - html` - - name}> - - `} - > - - - - - - void - ) => html` -

${appUpdated}

- -

- -

- -

- -

-

- -

- (will be overriten when server emit new state) - `} - > -
-
- - - r-pesho - - - - - - html` ${s.pesho} | ${s.pesho2} | ${s.pesho3} `} - > - - - `; - }, -}) -export class RHtmlViewComponent extends LitElement {} diff --git a/examples/main/setup-graphql.ts b/examples/main/setup-graphql.ts deleted file mode 100644 index 37b5951..0000000 --- a/examples/main/setup-graphql.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { setConfig } from '@rhtml/graphql'; -import { html } from '@rxdi/lit-html'; - -setConfig({ - config: { - uri: 'https://countries.trevorblades.com/', - /* wss://your-domain/subscriptions */ - pubsub: '', - async onRequest() { - return new Headers(); - }, - }, - defaults: { - error: (e) => { - return html`

${e}

`; - }, - loading: () => { - return html` -
- -
- `; - }, - }, -}); diff --git a/examples/package-lock.json b/examples/package-lock.json deleted file mode 100644 index 4edc591..0000000 --- a/examples/package-lock.json +++ /dev/null @@ -1,1927 +0,0 @@ -{ - "name": "@rhtml/example", - "version": "0.0.2", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@abraham/reflection": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@abraham/reflection/-/reflection-0.8.0.tgz", - "integrity": "sha512-Oy2jk9hHEI/t1avTgB4BCQtceUOqwrElQdecGS0wTqH5rc0KXysUrhpX4ep0vCMjoxzNyXSx7JU+KWkrkFIKOg==" - }, - "@apollo/client": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.3.tgz", - "integrity": "sha512-nzZ6d6a4flLpm3pZOGpuAUxLlp9heob7QcCkyIqZlCLvciUibgufRfYTwfkWCc4NaGHGSZyodzvfr79H6oUwGQ==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.7.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "response-iterator": "^0.2.6", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } - } - }, - "@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==" - }, - "@lit/reactive-element": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.5.0.tgz", - "integrity": "sha512-fQh9FDK0LPTwDk+0HhSZEtb8K0LTN1wXerwpGrWA+a8tWulYRDLI4vQDWp4GOIsewn0572KYV/oZ3+492D7osA==" - }, - "@rhtml/components": { - "version": "0.0.117", - "resolved": "https://registry.npmjs.org/@rhtml/components/-/components-0.0.117.tgz", - "integrity": "sha512-7znQxHAgvvc7kD6+k3jHG0gar5jKX45b+1/1uSst7l9rPPWhVbqtpS6VCtmD6exTw960Aq3oOqahTlUsIQEYcA==", - "requires": { - "@rhtml/renderer": "0.0.117", - "@rxdi/lit-html": "^0.7.133", - "rxjs": "^6.6.3", - "shades": "^2.1.0" - } - }, - "@rhtml/experiments": { - "version": "0.0.117", - "resolved": "https://registry.npmjs.org/@rhtml/experiments/-/experiments-0.0.117.tgz", - "integrity": "sha512-fNhjH32K7cants7woDA6SGAaiUnKu0d7ZAoQzaMtd896w72hTtxeeuAWyUQdOeGTcHdCayWg1jQ0jJ02XhaS/A==", - "requires": { - "@rhtml/operators": "0.0.117", - "@rxdi/lit-html": "^0.7.133" - } - }, - "@rhtml/graphql": { - "version": "0.0.117", - "resolved": "https://registry.npmjs.org/@rhtml/graphql/-/graphql-0.0.117.tgz", - "integrity": "sha512-gfsS3IWqk7iwCQIYEB9Ahdk8MIW9AJLHnHOajDqhVCcIyF8LOjNtxVr41q3ss+79NxsIuggZDYaQY7H4oHeYIQ==", - "requires": { - "@rxdi/core": "^0.7.133", - "@rxdi/graphql-client": "^0.7.133", - "@rxdi/lit-html": "^0.7.133", - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0", - "graphql-tag": "^2.10.1", - "rxjs": "^6.6.3", - "shades": "^2.1.0" - } - }, - "@rhtml/hooks": { - "version": "0.0.117", - "resolved": "https://registry.npmjs.org/@rhtml/hooks/-/hooks-0.0.117.tgz", - "integrity": "sha512-bTFgHpICyHo3iH9ZG165Bi/GyOPm7MgT5ouxO2r3qZhJK+QQhQMSioEuvTWyFHbywHIJ7bXNCYrqtpdkEcivug==", - "requires": { - "@rxdi/lit-html": "^0.7.133" - } - }, - "@rhtml/operators": { - "version": "0.0.117", - "resolved": "https://registry.npmjs.org/@rhtml/operators/-/operators-0.0.117.tgz", - "integrity": "sha512-EPF7JNNqu2aAa912zNi7Lntp6JleqH0hOJKlqU76FKQE8NqgpuupP15QhAMPMFiSaaEN9X0aInaJoalYf8RuEQ==", - "requires": { - "@rhtml/renderer": "0.0.117", - "@rxdi/lit-html": "^0.7.133" - } - }, - "@rhtml/renderer": { - "version": "0.0.117", - "resolved": "https://registry.npmjs.org/@rhtml/renderer/-/renderer-0.0.117.tgz", - "integrity": "sha512-upVPqJFHOKNAMVFnymDdcWONZ8RfeEM/6wwkz8h6ki5Y+kS9Of2+JQA16oR7kIqhM01euw4mRH8kvRWADeK7jg==", - "requires": { - "@rxdi/lit-html": "^0.7.133" - } - }, - "@rxdi/core": { - "version": "0.7.158", - "resolved": "https://registry.npmjs.org/@rxdi/core/-/core-0.7.158.tgz", - "integrity": "sha512-ttQu/wJySV8MF71cLPn0QM8GjbppA8zxMYYdQBVCwwbEM+3EvQ8uP4ydzWP6sst5mKkzeVpcM7jEyv4uw92y5g==", - "requires": { - "@abraham/reflection": "^0.8.0", - "rxjs": "^6.5.3" - } - }, - "@rxdi/graphql-client": { - "version": "0.7.158", - "resolved": "https://registry.npmjs.org/@rxdi/graphql-client/-/graphql-client-0.7.158.tgz", - "integrity": "sha512-KOoh8OFnhFi3IY06OQVGrmwgxgNcUaC8GOTP8afG8tkDndS2DrG6pA2xduYLB/F/OmejA7akYjLPx4i2PajEXA==", - "requires": { - "@apollo/client": "^3.4.16", - "subscriptions-transport-ws": "^0.9.19" - } - }, - "@rxdi/lit-html": { - "version": "0.7.158", - "resolved": "https://registry.npmjs.org/@rxdi/lit-html/-/lit-html-0.7.158.tgz", - "integrity": "sha512-2H8gmHL9VAEeDMfaSpqvdy8BNaH+9pYsj+stjPAh63k6hDRqih8JcDYsIPpFz/gEU6OCszQ61FwPxe+HSirtrQ==", - "requires": { - "lit": "^2.5.0" - } - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" - }, - "@wry/context": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.0.tgz", - "integrity": "sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ==", - "requires": { - "tslib": "^2.3.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } - } - }, - "@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "requires": { - "tslib": "^2.3.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } - } - }, - "@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", - "requires": { - "tslib": "^2.3.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", - "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", - "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - } - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "electron-to-chromium": { - "version": "1.3.861", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", - "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "graphql": { - "version": "14.7.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", - "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", - "requires": { - "iterall": "^1.2.2" - } - }, - "graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "requires": { - "tslib": "^2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, - "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0" - } - }, - "iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "lit": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.5.0.tgz", - "integrity": "sha512-DtnUP6vR3l4Q8nRPPNBD+UxbAhwJPeky+OVbi3pdgMqm0g57xFSl1Sj64D1rIB+nVNdiVVg8YxB0hqKjvdadZA==", - "requires": { - "@lit/reactive-element": "^1.5.0", - "lit-element": "^3.2.0", - "lit-html": "^2.5.0" - } - }, - "lit-element": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", - "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", - "requires": { - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.2.0" - } - }, - "lit-html": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.5.0.tgz", - "integrity": "sha512-bLHosg1XL3JRUcKdSVI0sLCs0y1wWrj2sqqAN3cZ7bDDPNgmDHH29RV48x6Wz3ZmkxIupaE+z7uXSZ/pXWAO1g==", - "requires": { - "@types/trusted-types": "^2.0.2" - } - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", - "dev": true - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "optimism": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.2.tgz", - "integrity": "sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ==", - "requires": { - "@wry/context": "^0.7.0", - "@wry/trie": "^0.3.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "response-iterator": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", - "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==" - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "shades": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/shades/-/shades-2.2.0.tgz", - "integrity": "sha512-MXdFzFoYCQgL+YV1jLRall9AONOKnbEez97GEfCTPSACNR/Pnh+qC1M54YfV9LYDP4UNzL+1SjK1gZFNfsbM7Q==" - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "subscriptions-transport-ws": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", - "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", - "requires": { - "backo2": "^1.0.2", - "eventemitter3": "^3.1.0", - "iterall": "^1.2.1", - "symbol-observable": "^1.0.4", - "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" - }, - "dependencies": { - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "requires": { - "tslib": "^2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" - }, - "zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "requires": { - "zen-observable": "0.8.15" - } - } - } -} diff --git a/examples/package.json b/examples/package.json deleted file mode 100644 index c8c100a..0000000 --- a/examples/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "@rhtml/example", - "version": "0.0.2", - "scripts": { - "start": "npx parcel ./main/index.html --out-dir build/main", - "start-hydrate": "npx parcel ./hydrate/index.html --out-dir build/hydrate", - "start-performance": "npx parcel ./performance/index.html --out-dir build/performance" - }, - "dependencies": { - "@rhtml/components": "^0.0.117", - "@rhtml/experiments": "0.0.117", - "@rhtml/graphql": "0.0.117", - "@rhtml/hooks": "0.0.117", - "@rhtml/operators": "^0.0.117", - "@rhtml/renderer": "0.0.117", - "@rxdi/core": "^0.7.168", - "@rxdi/lit-html": "^0.7.168", - "rxjs": "^7.8.0" - }, - "browserslist": [ - "last 1 chrome versions" - ], - "devDependencies": { - "cssnano": "^4.1.10" - } -} \ No newline at end of file diff --git a/examples/performance/index.html b/examples/performance/index.html deleted file mode 100644 index 2afb7a8..0000000 --- a/examples/performance/index.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/examples/performance/main.ts b/examples/performance/main.ts deleted file mode 100644 index b3c00ee..0000000 --- a/examples/performance/main.ts +++ /dev/null @@ -1,4 +0,0 @@ -import '@rhtml/operators'; -import '@rhtml/components'; -import '@rhtml/experiments'; -import './performance'; diff --git a/examples/performance/performance.ts b/examples/performance/performance.ts deleted file mode 100644 index 66dbe2f..0000000 --- a/examples/performance/performance.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { Hydrate } from '@rhtml/experiments'; -import { html } from '@rxdi/lit-html'; -let startTime: number; -let lastMeasure: string; -const startMeasure = function (name: string) { - startTime = performance.now(); - lastMeasure = name; -}; -const stopMeasure = function () { - const last = lastMeasure; - if (lastMeasure) { - setTimeout(function () { - lastMeasure = null; - const stop = performance.now(); - const duration = 0; - console.log(last + ' took ' + (stop - startTime)); - }, 0); - } -}; - -const Performance = html` - - performance-test - - - - - html` - - - - - - - - - - - html` -

${index}

- ${index === rows - 1 ? stopMeasure() : ''} - `} - >
-
- `} - > -
-
-`; - -Hydrate(Performance); diff --git a/examples/tsconfig.json b/examples/tsconfig.json deleted file mode 100644 index 8ea6c69..0000000 --- a/examples/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./src", - "sourceMap": true, - "module": "esnext", - "declaration": false, - "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "esModuleInterop": true, - "target": "es6", - "outDir": "dist", - "typeRoots": ["node_modules/@types", "index.d.ts"], - "lib": ["es2015", "es2016", "es6", "es2017", "dom"] - }, - "exclude": ["node_modules"] -} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..dafa15a --- /dev/null +++ b/jest.config.js @@ -0,0 +1,16 @@ +module.exports = { + testEnvironment: 'node', + testPathIgnorePatterns: ['/node_modules/'], + coverageReporters: ['lcov', 'html'], + rootDir: './', + moduleFileExtensions: ['ts', 'tsx', 'js', 'json', 'node'], + globals: { + __DEV__: true + }, + transform: { + '\\.(ts|tsx)$': 'ts-jest' + }, + testRegex: '/src/.*\\.spec.(ts|tsx|js)$', + verbose: true, + collectCoverage: true +}; diff --git a/packages/fastify/README.md b/packages/fastify/README.md index 4d9c3ce..f6d8ccc 100644 --- a/packages/fastify/README.md +++ b/packages/fastify/README.md @@ -1,398 +1,123 @@ -# @rhtml/di - -Smallest Dependency Injection for Typescript and Javascript! - -- Only `1.42kb` bundled size without Reflection, `2.49kb` with `@abraham/reflection`; -- Decorators available inside `@rhtml/di/module` `Module`, `Component` -- Hooks available `OnInit`, `OnDestroy` `class { OnDestroy() {} OnInit() {} }` -- 100% Code coverage and branches -- No dependencies -- Works with [`deno`](https://deno.land/) +# @rhtml/fastify #### Installation ```bash -npm i @rhtml/di +npm i @rhtml/fastify ``` #### Usage ```ts -import { Inject, Injectable } from '@rhtml/di'; +import multipart from '@fastify/multipart'; +import { Module } from '@rhtml/di'; -class Test { - test = 42; -} -@Injectable() -class Test2 { - constructor(@Inject(Test) public test: Test) {} -} -const test2 = set(Test2); -console.log(test2.test.test); // 42 -``` - -#### With `Deno` using `esm.sh` as a `cdn` - -Example can be found [here](./example/deno) -Deno land https://deno.land/x/rdi - -```typescript -import 'https://deno.land/x/reflect_metadata@v0.1.12/mod.ts'; - -import { - Bootstrap, - Injectable, - Module -} from 'https://cdn.esm.sh/v53/@rhtml/di@0.0.81'; - -@Injectable() -class MyService { - OnInit() { - console.log('[MyService]: initialized'); - } - - helloWorld() { - return 'Hello World from @rhtml/di'; - } -} - -@Injectable() -class MyService2 { - constructor(private myService: MyService) {} - OnInit() { - console.log(this.myService.helloWorld()); - } -} +import { FastifyModule } from '@rhtml/fastify'; @Module({ - providers: [MyService, MyService2] + imports: [ + FastifyModule.forRoot({ + logger: pino({ + level: 'debug', + }), + plugins: [ + { + module: multipart, + }, + ], + }), + ], }) export class AppModule {} - -await Bootstrap(AppModule); - -``` - -#### With Reflection - -```bash -npm i @abraham/reflection -``` - -```ts -import '@abraham/reflection'; - -import { Inject, Injectable } from '@rhtml/di'; - -class Test { - test = 42; -} -@Injectable() -class Test2 { - constructor(public test: Test) {} -} -const test2 = set(Test2); -console.log(test2.test.test); // 42 ``` -#### Token Injection - -```ts -import { InjectionToken, Injectable, Inject } from '@rhtml/di'; - -const Token = new InjectionToken(); - -@Injectable() -class Test { - myMethod() {} -} - -set(Test, Token); - -@Injectable() -class App { - constructor(@Inject(Token) private test: Test) {} -} - -console.log(get(App).test.myMethod()); -``` - -#### Monadic approach +#### Controller ```typescript -import { Inject, PrivateReader, Reader } from '@rhtml/di'; - -export class UserCache { - name = '[UserCache]: My name is '; -} - -export class UserService { - @Inject(UserCache) - public cache: UserCache; -} - -const AppModule = [UserService, UserCache]; - -class App { - @Reader(...AppModule) - getPesho(name: string): Reader<[UserService], string> { - return ([userService]) => userService.cache.name + name; - } - - getPeshoAsync( - name: string - ): PrivateReader<[UserService, UserCache], Promise> { - return async ([userService, userCache]) => - userService.cache.name + name + userCache.name; - } - - @Reader(...AppModule) - test2(name: string): Reader<[UserService, UserCache], Promise> { - return async ([userService, userCache]) => { - return ( - userService.cache.name + - name + - (await this.getPeshoAsync('omg')([userService, userCache])) - ); - }; - } -} -const app = new App(); -const action = app.getPesho('Kristiyan Tachev'); -const asyncAction = app.test2('Kristiyan Tachev'); -console.log(action()); -asyncAction().then(console.log); -``` - -```typescript -import { Inject, Reader, set } from '@rhtml/di'; - -export class UserCache { - name = '[UserCache]: My name is '; -} - -export class UserService { - @Inject(UserCache) - public cache: UserCache; -} - -class App { - @Reader(UserService) - getPesho(name: string): Reader<[UserService], string> { - return ([userService]) => userService.cache.name + name; - } +import { Controller, Route } from '@core'; - @Reader(UserService) - getPeshoAsync(name: string): Reader<[UserService], Promise> { - return async ([userService]) => userService.cache.name + name; - } -} -const app = set(App); -const action = app.getPesho('Kristiyan Tachev'); -const asyncAction = app.getPeshoAsync('Kristiyan Tachev'); -console.log(action()); -asyncAction().then(console.log); -``` - -##### Using Static methods - -```ts -import { Inject, Reader, set } from '@rhtml/di'; - -export class UserCache { - name = '[UserCache]: My name is '; -} - -export class UserService { - @Inject(UserCache) - public cache: UserCache; -} - -const AppModule = [UserService, UserCache]; - -class App { - @Reader(...AppModule) - public static getPesho(name: string): Reader<[UserService], string> { - return ([userService]) => userService.cache.name + name; - } - - public static getPeshoAsync( - name: string - ): PrivateReader, Promise> { - return async ([userService, userCache]) => - userService.cache.name + name + userCache.name; - } - - @Reader(...AppModule) - public static test2( - name: string - ): Reader<[UserService, UserCache], Promise> { - return async ([userService, userCache]) => { - return ( - userService.cache.name + - name + - (await this.getPeshoAsync('omg')([userService, userCache])) - ); +@Controller({ + route: '/status', +}) +export class HealthCheckController { + @Route({ + method: 'GET', + }) + healthCheck() { + return { + server: { + status: 'working', + }, }; } } -const asyncAction = App.test2('Kristiyan Tachev'); -asyncAction().then(console.log); ``` -##### Module decorator +#### AppModule -```ts -import { Injectable, Inject, set, get } from '@rhtml/di'; -import { Module } from '@rhtml/di/module'; +```typescript +import 'pino-pretty'; -class User { - id = 1; -} -class UserService { - @Inject(User) - user: User; -} +import { Module } from '@rhtml/di'; +import pino from 'pino'; -@Injectable() -class InjectableService { - constructor(@Inject(User) private user: User) {} -} +import { FastifyModule } from '@rhtml/fastify'; -@Module({ - providers: [UserService, InjectableService] -}) -class UserModule {} +import { HealthCheckController } from './healtcheck.controller'; @Module({ - imports: [UserModule] + imports: [ + FastifyModule.forRoot({ + logger: pino({ + level: 'debug', + transport: { + target: 'pino-pretty', + options: { + colorize: true, + }, + }, + }), + }), + ], + bootstrap: [HealthCheckController], }) -class AppModule {} -console.log(has(AppModule)); // False -set(AppModule); -const userService = get(UserService); -expect(userService.user.id).toBe(1); +export class AppModule {} ``` -##### Advanced example using Lazy providers - -```ts -import '@abraham/reflection'; - -import { Inject, Injectable, InjectionToken, remove, set } from '@rhtml/di'; -import { - Bootstrap, - Component, - Module, - ModuleWithProviders -} from '@rhtml/di/module'; - -type Token1 = number; -type Token2 = string; - -const Token1 = new InjectionToken(); -const Token2 = new InjectionToken(); - -const now = Date.now(); +#### Importing external plugin to fastify rhtml module -@Injectable() -export class UserService66 { - constructor() { - console.log('[UserService66]'); - } - - getOmg() { - return 'ARE BE OMG'; - } -} - -@Injectable() -export class UserService { - // @Inject(Token1) public token: number; - constructor(@Inject(Token1) public token: number) { - console.log('[UserService]', token); - } -} - -@Injectable() -export class UserService2 { - constructor(public userService: UserService) { - console.log('[UserService2]'); - } -} - -@Injectable() -export class UserService3 { - // @Inject(Token1) public token: number; - constructor(@Inject(Token1) public token: Token1) { - console.log('[UserService3]', token); - } -} - -@Injectable({ providers: [set(UserService66)] }) -export class UserService4 { - constructor(data: UserService66) { - console.log('[UserService4]', data.getOmg()); - } - - getPesh() { - return 6000; - } -} - -@Component() -class AppComponent { - constructor( - public userService2: UserService2, - @Inject(Token2) public token: Token2 - ) { - console.log('[AppComponent]', userService2.userService.token, token); - } +```typescript +import 'pino-pretty'; - OnInit() { - console.log('INITIALIZEEEDDDDD '); - } +import multipart from '@fastify/multipart'; +import { Module } from '@rhtml/di'; +import pino from 'pino'; - OnDestroy() { - console.log('ON DESTROY '); - } -} +import { FastifyModule } from '@rhtml/fastify'; -set(UserService4); +import { HealthCheckController } from './healtcheck.controller'; @Module({ - providers: [ - UserService2, - { - provide: Token1, - deps: [UserService4], - useFactory: (data: UserService4) => - new Promise(resolve => - setTimeout(() => resolve(data.getPesh()), 1000) - ) - } + imports: [ + FastifyModule.forRoot({ + logger: pino({ + level: 'debug', + transport: { + target: 'pino-pretty', + options: { + colorize: true, + }, + }, + }), + plugins: [ + { + module: multipart, + options: {}, + }, + ], + }), ], - bootstrap: [AppComponent] + bootstrap: [HealthCheckController], }) -export class MainModule { - static forRoot(): ModuleWithProviders { - return { - module: MainModule, - providers: [ - { - provide: Token2, - useFactory: async () => { - console.log('aa'); - return '1234'; - } - } - ] - }; - } -} - -Bootstrap(MainModule).then(() => { - console.log('Started', `after ${Date.now() - now}`); - remove(AppComponent); -}); +export class AppModule {} ``` diff --git a/packages/fastify/jest.config.js b/packages/fastify/jest.config.js new file mode 100644 index 0000000..dafa15a --- /dev/null +++ b/packages/fastify/jest.config.js @@ -0,0 +1,16 @@ +module.exports = { + testEnvironment: 'node', + testPathIgnorePatterns: ['/node_modules/'], + coverageReporters: ['lcov', 'html'], + rootDir: './', + moduleFileExtensions: ['ts', 'tsx', 'js', 'json', 'node'], + globals: { + __DEV__: true + }, + transform: { + '\\.(ts|tsx)$': 'ts-jest' + }, + testRegex: '/src/.*\\.spec.(ts|tsx|js)$', + verbose: true, + collectCoverage: true +};