diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a409cd51 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +node_modules +.idea +.vscode +.merlin +_build +_esy +_release +*.byte +*.native +*.install diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 00000000..fabd017b --- /dev/null +++ b/ARCHITECTURE.md @@ -0,0 +1,79 @@ +# Architecture +This document covers the architecture of ReasonRelay and how it differs from Relay itself. + +## High level overview +ReasonRelay is made up of primarily 3 parts: + +### 1. Reason bindings for Relay +These can be found in `ReasonRelay.re` and binds most of Relay to Reason. It also binds to `relay-hooks` under the hood. + +### 2. PPX +The PPX deals with various code transformation to simplify type-safe usage of Relay in Reason. This is found in `ReasonRelayPpx.re`. + +### 3. Patched Relay compiler + Reason language plugin for emitting Reason types +The Relay compiler does not natively support everything we need to have in order to make it work with emitting Reason types, so we ship a patched compiler. In addition to that, there's also a Reason language plugin that's responsible of taking the GraphQL selections from the Relay GraphQL tags and turning them into Reason types + whatever more is needed to make it work with Reason. + +### Lifecycle overview +Lets look at the full lifecycle of using the various parts together. Imagine the following query inside of `MyComponent.re`: + +```reason +module Query = [%relay.query {| + query MyComponentQuery { + viewer { + firstName + status + } + } + |} +]; +``` + +This uses the `[%relay.query]` tag to define a query, like you'd normally do inside of `graphql` tagged template literals in normal Relay. The following then happens: +1. You write that `[%relay.query]` and put it in a file `MyComponent.re`. +2. You run the Relay compiler. The compiler finds the `[%relay.query]` tag, extracts the content, validates it, and sends it to the Reason language compiler plugin. +3. The Reason language plugin generates a file like `MyComponentQuery_graphql.re` inside of your generated folder. This file contains type information about the query, utils for unwrapping unions if there are any, and the raw data structure Relay uses at runtime to send/decode requests. +4. The Relay compiler we ship also produces a file called `SchemaAssets.re` inside of the generated folder. This file contains type information and utils for wrapping/unwrapping all enums in your schema. +5. The PPX transforms `module Query = [%relay.query {| query MyComponentQuery { ... } |}]` into something roughly like this: +````reason +module Query = { + module Operation = MyComponentQuery_graphql; + module UseQuery = ReasonRelay.MakeUseQuery({ + type variables = Operation.variables; + type response = Operation.response; + let node = Operation.node; + }); + + let use = UseQuery.use; + let fetch = ... +} +```` +...where the end effect is that this connects the `Query` module to the generated Relay artifact, and exposes a type safe `use` hook and `fetch` function for that particular query. + +So, to re-iterate: You write a query/fragment/mutation -> Relay finds and compiles that into an artifact -> The PPX transforms what you wrote into a consumable module. + +## Reason bindings for Relay +A few things are worth noting of the bindings and how they're designed: + +* We're not necessarily going for a 1-to-1 binding to Relay's API, but rather we're focusing on productivity in Reason. This means that we likely _won't bind things that would be very complicated in Reason_, if there's viable alternatives. +* As much as possible of what's in the bindings is hooks based. This means we won't bind the various Relay containers, the `QueryRenderer` component and so on. +* We prefer `data last` APIs in Reason (`someThing |> someFunc` vs `someThing->someFunc`). This is just a choice at this point, and might be changed before we hit stable if there's a good case for it. It's mostly for cohesiveness. +* We prefer exposing core primitives through type safe wrappers where possible. This means it's unlikely we'll ever expose the underlying `useQuery` hook, and instead we only expose `QueryModule.use` which is `useQuery` but wrapped in a type-safe way for that particular query. + +Other than that, we aim to cover as much of Relay as we can, and we also don't mind adding our own, opinionated APIs on top, if it makes sense. + +## PPX +The PPX provided by ReasonRelay is responsible for taking things like `module Query = [%relay.query {| ... |}]` and turning it into something usable. + +It uses `graphql_parser` and `ppx_tools`, which effectively enforces OCaml `>=4.03`. This is what made BuckleScript 6 a requirement. + +## Relay compiler and the language plugin for Reason +As mentioned, we've needed to patch the compiler for now in order for it to work with Reason. The patch is fairly minor and the changes are mostly tied to changing the generated file suffix from `.graphql` to the Reason friendly `_graohql`, allowing `.bs.js` generated files to live inside of the generated folder, and a few other things. + PRs to Relay will follow in order for this behavior to eventually be supported via a plugin. + + This has the unfortunate side effect right now that we've had to pin the Relay compiler to a certain version, since we ship a built compiler. + +### The language plugin +The language plugin is what generate the actual types that make Relay usable in Reason. Things worth noting: +* It re-uses as much as possible from Relays official Flow plugin. This hasn't been that easy, but it's mostly to easy upgrades. +* It builds the Reason code using strings, not AST. Currently more productive to use strings for this use case. Might change in the future. +* It has a JS part and a Reason part. The ambition is to move more into Reason, and eventually just have a thin layer in JS that does what we must have JS for, and then delegates everything else to Reason. Not there yet though. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..6f830e76 --- /dev/null +++ b/README.md @@ -0,0 +1,425 @@ +# reason-relay +Bindings and a compiler plugin for using Relay with ReasonML. + +_NOTE: This is alpha-grade software and various aspects of the API is likely to change in the near future. We're also missing support for a few core Relay features in waiting for the official Relay hooks based APIs. It is not recommended to use this for production apps yet, but you're welcome and encouraged to try it out and post your feedback._ + +Please refer to ARCHITECTURE.md for a more thorough overview of the different parts and the reasoning behind them. + +## Getting started +*Requires BuckleScript 6 (currently in beta), Relay == 5.0.0 and React >= 16.8.1* + +``` +# Add reason-relay to the project +yarn add reason-relay + +# You also need to make sure you have Relay and relay-hooks installed. NOTE: Babel and the Relay babel plugin is not needed if you only use ReasonRelay. + +yarn add relay-hooks relay-runtime@5.0.0 relay-compiler@5.0.0 react-relay@5.0.0 +``` + +Add ReasonRelay bindings + PPX to `bsconfig.json`. + +``` +... +"ppx-flags": ["reason-relay/ppx"], +"bs-dependencies": ["reason-react", "reason-relay"], +... +``` + +_As of now_, the Relay compiler does not natively support what we need to make it +work for emitting Reason types. Therefore, we ship a patched compiler that you can use. +It works the same way as the Relay compiler, _except_ you don't need to provide `--language` and you _must_ provide `--schema` via the CLI (not only via `relay.config.js` or similar). + +Run the script via package.json like this: +``` +"scripts": { + "relay": "reason-relay-compiler --src ./src --schema ./path/to/schema.graphql --artifactDirectory ./src/__generated__" +} + +yarn relay +``` + +## Usage +_Check out the `examples` folder for a complete example of setup and usage of most features._ + +In general, the bindings closely matches how Relay itself works. However, there's a few opinionated +choices made that are explained below. This documentation does not cover that much of how Relay works in general, and it's not going to be enough if you're new or inexperienced with Relay. In those cases, please look at the Relay documentation in parallel (https://relay.dev) and come back here for finding out how to do things in Reason. + +### Workflow +Just a quick overview of the workflow of using ReasonRelay, primarily for people unfamiliar with Relay: + +1. Write GraphQL queries, fragments and mutations using `[%relay]` nodes. +2. Run the ReasonRelay compiler. This finds the `[%relay]` nodes and generates artifacts (types etc) for each node. +3. The ReasonRelay PPX transforms your `[%relay]` nodes into modules that you can use in your components. + +So, write GraphQL -> Run the compiler -> Use the generated modules. + +### Setup +You'll need to create and expose and environment for Relay to use. +```reason +let fetchQuery = ...; // Check out RelayEnv.re in the examples folder for an example fetchQuery function using bs-fetch + +let network = ReasonRelay.Network.makePromiseBased(fetchQuery); // Eventually we'll support makeObservableBased network too +let store = ReasonRelay.Store.make(ReasonRelay.RecordSource.make()); + +let environment = ReasonRelay.Environment.make(~network, ~store); +``` + +You'll then need to make sure you wrap your app with Relays context provider, feeding it +your environment: + +```reason +// Here, RelayEnv.re contains the environment setup, as in the above example +ReactDOMRe.renderToElementWithId( + + + , + "app", +); +``` + +There, you're all set up! + +### Queries, fragments and mutations +All Relay/GraphQL operations must be defined inside `[%relay]` nodes. One exists for each supported +feature: `[%relay.query]`, `[%relay.fragment]`, `[%relay.mutation]`. +You assign that node to a module, like: + +```reason +module MyQuery = [%relay.query {| + query SomeQuery { ... } +|}]; +``` +The _module name_ can be anything (`MyQuery` above). That's just a regular module. The GraphQL string +you provide to the node however is subject to _all the normal Relay validations_, +meaning the GraphQL string must follow Relay conventions of having a globally unique name matching the file name, following +the operation/fragment naming convention, and so on. + + +### Queries +Queries are defined using `[%relay.query {| query YourQueryHere ... |}]`: + +```reason +module Query = [%relay.query {| + query SomeOverviewQuery($id: ID!) { + user(id: $id) { + firstName + friendCount + ...SomeUserDisplayerComponent_user + } + } +|}]; +``` + +This will be transformed into a module with roughly the following signature: + +``` +module Query = { + // `use` is a React hook you can use in your components. + let use = (~variables, ~dataFrom=?, ()) => queryResult; + + // `fetch` lets you fetch the query standalone, without going through a React component + let fetch = (~environment: Environment.t, ~variables) => Js.Promise.t(response); +}; +``` + +#### Use as hook: Query.use(~variables=..., ~dataFrom=...) +You can use the query as a hook inside of a React component: +```reason +[@react.component] +let make = (~userId) => { + let query = Query.use(~variables={"id": userId}, ~dataFrom=StoreThenNetwork, ()); + + switch (query) { + | Loading => React.string("Loading...") + | Error(err) => React.string("Error!") + | Data(data) => switch (data##user |> Js.Nullable.toOption) { + | Some(user) => React.string(user##firstName) + | None => React.null + | NoData => React.null +} +``` + +#### Use independently: Query.fetch(...) +You can also use the query as you'd use `fetchQuery` from Relay, fetching the query outside +of a React component. Doing that looks like this: +```reason +Query.fetch(~environment=SomeModuleWithMyEnvironment.environment, ~variables={"id": userId}) + |> Js.Promise.then_(res => switch(res##user |> Js.Nullable.toOption) { + | Some(user) => { + ... + Js.Promise.resolve(); + } + ) +``` + +### Fragments +_HINT:_ Check out `examples` in this code repo for a complete example of using fragments and queries together. + +Fragments are only exposed through React hooks. You define a fragment using `[%relay.fragment {| fragment MyFragment_user on User { ... } |]`. +You then spread the fragment in your query just like normal. Using the fragment looks like this: + +```reason +module BookFragment = [%relay.fragment + {| + fragment BookDisplayer_book on Book { + title + author + } + |} +]; + +/** + * `book` passed to the component below is, just like "normal" Relay, + * and object from a query that contains the fragment spread. + */ + +[@react.component] +let make = (~book as bookRef) => { + let book = BookFragment.use(bookRef); + ... +``` + +You can have as many fragments as you like in a component, but each must be defined +separately. Fragments only expose a `use` hook, and nothing else. + +### Mutations +Mutations are defined using `[%relay.mutation {| mutation YourMutationHere ... |}]`: + +```reason +module UpdateBookMutation = [%relay.mutation + {| + mutation BookEditorUpdateMutation($input: UpdateBookInput!) { + updateBook(input: $input) { + book { + title + author + } + } + } + |} +]; +``` + +This will be transformed into a module with roughly the following signature: + +``` +module UpdateBookMutation = { + // `use` is a React hook you can use in your components. + let use = () => (mutate, mutationStatus); + + // `commitMutation` lets you commit the mutation from anywhere, not tied to a React component. + let commitMutation= (~environment: Environment.t, ~variables, ~optimisticResponse, ~updater ...) => Js.Promise.t(response); +}; +``` + +Everything that Relay supports (optimistic updates etc) is also supported by ReasonRelay, except for +mutation updater configs. Please use the `updater` functionality for now when you need to update the store. + +#### Use as hook: UpdateBookMutation.use() +You can use the mutation as a React hook: +```reason +[@react.component] +let make = (~bookId) => { + let (mutate, mutationState) = UpdateBookMutation.use(); + + ... + mutate( + ~variables={ + "input": { + "clientMutationId": None, + "id": bookId, + "title": state.title, + "author": state.author, + }, + }, +``` + +#### Use standalone: UpdateBookMutation.commitMutation(...) +Just like you'd use `commitMutation` from regular Relay, you can do the mutation from anywhere +without needing to use a hook inside of a React component. `commitMutation` returns a promise that +resolves with the mutation result. + +``` +UpdateBookMutation.commitMutation( + ~environment=SomeModuleWithMyEnv.environment, + ~variables={ + "input": { + "clientMutationId": None, + "id": bookId, + "title": state.title, + "author": state.author, + }, + }, +) |> Js.Promise.then_(res => ...) +``` + +### Refetching +Right now, there are no bindings to simplify refetching (RefetchContainer in Relay). We are waiting for the official Relay hooks/suspense-based API before we make an actual binding for refetching. + +Meanwhile, doing a normal `MyDefinedQuery.fetch(...)` should suffice for some scenarios. + +### Connections/pagination +No bindings exist for PaginationContainer or a pagination hook either right now. Sadly there are no workarounds/alternatives +(like with refetch) before we get the hooks/suspense based APIs from Relay itself. + +### Unions and Enums +Since Reason's type system is quite different to Flow/TypeScript, working with unions and enums works in a special way with ReasonReact. + +#### Unions +Unions are fields in GraphQL that can return multiple GraphQL types. The field selections of each type is also potentially different for each +used union. In Flow/TypeScript, this is handled by using union types that match on the `__typename` property that's always available on a union. Reason however does not have union types in the same sense. In order to get type-safety in Reason you'll therefore need to _unwrap_ the union. + +Imagine a GraphQL union that looks like this: +```graphql +type SomeType { + id: ID! + name: String! + age: Int! +} + +type AnotherType { + id: ID! + count: Int! + available: Boolean! +} + +union SomeUnion = SomeType | AnotherType +``` + +Now, the following Relay selection is made: +```reason +module Query = [%relay.query {| + someUnionProp { + __typename + + ... on SomeType { + name + } + + ... on AnotherType { + count + } + } +|} +``` + +In this scenario, working with `someUnionProp` could be either a `SomeType` or `AnotherType`. With ReasonRelay, this will generate roughly the following (pseudo code): +```reason +module Union_someUnionProp = { + type wrapped; + let unwrap: wrapped => [ | `SomeType({. "name": string }) | `AnotherType({. "count": int }) | `UnmappedUnionMember ] +}; + +type response = {. + "someUnionProp": Union_someUnionProp.wrapped +}; +``` + +So, the actual node in the response is an abstract type `wrapped` that you'll need to unwrap, which will return a polymorphic variant +with the data for each GraphQL type. All `Union_someUnionPropName` modules are available on the `Query` module where the Relay operation +is defined. Unwrapping and using the data would then look like this: + +```reason +switch (data##someUnionProp |> Query.Union_someUnionProp.unwrap) { + | `SomeType(data) => React.string(data##name) + | `AnotherType(data) => React.string("Count: " ++ string_of_int(data##count)) + | `UnmappedUnionMember => React.null +} +``` + +`UnmappedUnionMember` is a safety guard that you'll need to handle in case the server extends the union with something that you currently do not have code to handle. + +#### Enums +In the GraphQL response, enums are just strings that follow a defined schema. However, Reason does not have string literal enums. This means you'll need to unwrap enums in order to work with them. The compiler generates a file called `SchemaAssets.re` containing types and utils to interact with all enums in your schema. + +Here's how you unwrap enums to work with them: +```reason +// someEnum is an enum MyEnum, with possible values SOME_VALUE | ANOTHER_VALUE +module Query = [%relay.query {| + query SomeQuery { + someEnum + } +|}]; +``` + +You then work with the enum this way: +```reason +switch(data##someEnum |> SchemaAssets.Enum_MyEnum.unwrap) { + | `SOME_VALUE => React.string("Some value") + | `ANOTHER_VALUE => React.string("Another value") + | `FUTURE_ADDED_VALUE__=> React.null +}; +``` + +Similar to unions, enums _always_ include a safety guard to force you to handle enum values that might be added after your code is deployed. In enums, that's an additional polymorphic variant `FUTURE_ADDED_VALUE__` that's added to each enum and returned whenever there's an unknown enum value matched. + +#### Enums as inputs/variables +If you want to use enums as _input values_, whether it's as a variable for querying or as an input for a mutation, you'll need to _wrap_ the enum in order for it to be converted to something that can be sent to the server. `wrap` is a function that's generated for each of your enums. Example: + +```reason +~variables={ + "myEnumValue": SchemaAssets.Enum_MyEnum.wrap(`SOME_VALUE) +} +``` + +### Interacting with the store +ReasonRelay exposes a full interface to interacting with the store. + +#### Updater functions for mutations +You can pass an updater function to mutations just like you'd normally do in Relay: + +```reason +mutate( +~variables={ + ... +}, +~updater= + store => { + // Open ReasonRelay to simplify using RecordSourceSelectorProxy and RecordProxy + open ReasonRelay; + + let mutationRes = + store + |> RecordSourceSelectorProxy.getRootField( + ~fieldName="addBook", + ); + + ... + }, +(), +); +``` + +#### commitLocalUpdate +`commitLocalUpdate` is exposed for committing local updates, and can be used like this: +```reason +commitLocalUpdate(~environment=SomeModuleWithMyEnv.environment, ~updater=store => { + open ReasonRelay; + let root = store |> RecordSourceSelectorProxy.getRoot; + let someRootRecord = root |> RecordProxy.getLinkedRecord(~name="someFieldName", ~arguments=None); + + switch (someRootRecord) { + | Some(recordProxy) => { + recordProxy |> RecordProxy.setValueString(~name="someFieldThatIsAString", ~value="New value", ~arguments=None); + } + | None => ... + } +}) +``` + +#### Note on getting and setting values from a RecordProxy +`RecordProxy`, the data type Relay exposes to update data in the store, saves field values as mixed types, +meaning that `recordProxy.getValue("someKey")` in the JS version of Relay can return just about any type there is. +However, Reason does not allow more than one type to be returned from a function call. So, in ReasonRelay, +`getValue` and `setValue` is replaced with one function for each primitive type: +```reason +let someBoolValue = recordProxy |> RecordProxy.getValueBool(~name="someFieldThatIsABoolean", ~arguments=None); +let someStringValue = recordProxy |> RecordProxy.getValueString(~name="someFieldThatIsAString", ~arguments=None); + +recordProxy |> RecordProxy.setValueInt(~name="someFieldThatIsAnInt", ~value=1, ~arguments=None); +recordProxy |> RecordProxy.setValueFloat(~name="someFieldThatIsAFloat", ~value=2.0, ~arguments=None); +``` + +## Developing +Instructions coming soon. diff --git a/TODO.md b/TODO.md new file mode 100644 index 00000000..b08542b6 --- /dev/null +++ b/TODO.md @@ -0,0 +1,20 @@ +# TODO +Here's a list of things left to fix/bind/do. + +## Bindings +### Subscriptions +Nothing has been bound for subscriptions yet, and it'll require adding some new stuff. I don't use subscriptions in any of the projects I made this for, but I'll gladly add them if there's a need for them. + +### Environment +Extend bindings for the environment. https://github.com/facebook/relay/blob/45eeb2d7f8e23be495bd3a07be03763d5e43724f/packages/relay-runtime/store/RelayModernEnvironment.js#L57 + +### Network +[ ] Fetch fn returning observables +[ ] Better/more idiomatic bindings for the fetch function + +### Hooks +[ ] useRefetch (wait for official Relay API) +[ ] usePagination (wait for official Relay API) + +## Docs +[ ] Fully document all interfaces (use `bs-odoc`or similar to generate the interface documentation?) \ No newline at end of file diff --git a/example/.gitignore b/example/.gitignore new file mode 100755 index 00000000..1c2bb277 --- /dev/null +++ b/example/.gitignore @@ -0,0 +1,26 @@ +*.exe +*.obj +*.out +*.compile +*.native +*.byte +*.cmo +*.annot +*.cmi +*.cmx +*.cmt +*.cmti +*.cma +*.a +*.cmxa +*.obj +*~ +*.annot +*.cmj +*.bak +lib/bs +*.mlast +*.mliast +.vscode +.merlin +.bsb.lock \ No newline at end of file diff --git a/example/babel.config.js b/example/babel.config.js new file mode 100644 index 00000000..e0bfc604 --- /dev/null +++ b/example/babel.config.js @@ -0,0 +1,13 @@ +module.exports = { + presets: [ + '@babel/preset-react', + [ + '@babel/preset-env', + { + targets: { + node: 'current' + } + } + ] + ] +}; diff --git a/example/bsconfig.json b/example/bsconfig.json new file mode 100755 index 00000000..77063985 --- /dev/null +++ b/example/bsconfig.json @@ -0,0 +1,24 @@ +{ + "name": "reason-relay-test", + "version": "0.1.0", + "reason": { + "react-jsx": 3 + }, + "sources": [ + { + "dir": "src", + "subdirs": true + } + ], + "package-specs": { + "module": "es6", + "in-source": true + }, + "suffix": ".bs.js", + "ppx-flags": ["reason-relay/ppx"], + "bs-dependencies": ["reason-react", "reason-relay", "bs-fetch"], + "warnings": { + "error": "+101" + }, + "refmt": 3 +} diff --git a/example/jest.config.js b/example/jest.config.js new file mode 100644 index 00000000..1488c61e --- /dev/null +++ b/example/jest.config.js @@ -0,0 +1,185 @@ +// For a detailed explanation regarding each configuration property, visit: +// https://jestjs.io/docs/en/configuration.html + +module.exports = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // Respect "browser" field in package.json when resolving modules + // browser: false, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/private/var/folders/bk/pshd_5w943ng0gmsmryl4zh00000gn/T/jest_dx", + + // Automatically clear mock calls and instances between every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + // collectCoverage: false, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: null, + + // The directory where Jest should output its coverage files + // coverageDirectory: null, + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: null, + + // A path to a custom dependency extractor + // dependencyExtractor: null, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: null, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: null, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + // moduleFileExtensions: [ + // "js", + // "json", + // "jsx", + // "ts", + // "tsx", + // "node" + // ], + + // A map from regular expressions to module names that allow to stub out resources with a single module + // moduleNameMapper: {}, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + // preset: null, + + // Run tests from one or more projects + // projects: null, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state between every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: null, + + // Automatically restore mock state between every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: null, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + // setupFilesAfterEnv: [], + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + // testEnvironment: "jest-environment-jsdom", + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + // testMatch: [ + // "**/__tests__/**/*.[jt]s?(x)", + // "**/?(*.)+(spec|test).[tj]s?(x)" + // ], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + // testPathIgnorePatterns: [ + // "/node_modules/" + // ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: null, + + // This option allows use of a custom test runner + // testRunner: "jasmine2", + + // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href + // testURL: "http://localhost", + + // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" + // timers: "real", + + // A map from regular expressions to paths to transformers + // transform: null, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + transformIgnorePatterns: [ + "/node_modules/(?!bs-platform|reason-relay|bs-fetch)" + ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: null, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +}; diff --git a/example/package.json b/example/package.json new file mode 100755 index 00000000..d3a76aa0 --- /dev/null +++ b/example/package.json @@ -0,0 +1,43 @@ +{ + "scripts": { + "bs:watch": "bsb -w", + "bs:clean": "bsb -clean-world", + "bs:build": "bsb -make-world", + "relay": "reason-relay-compiler --src src --schema schema.graphql --artifactDirectory src/__generated__", + "server": "webpack-dev-server", + "test": "jest" + }, + "dependencies": { + "bs-fetch": "^0.5.0", + "bs-platform": "^6.0.3", + "graphql": "^14.3.1", + "html-webpack-plugin": "^3.2.0", + "react": "16.8.6", + "react-dom": "16.8.6", + "react-relay": "^5.0.0", + "reason-react": ">=0.7.0", + "relay-compiler": "^5.0.0", + "relay-hooks": "^1.2.1", + "relay-runtime": "^5.0.0", + "webpack": "^4.35.0", + "webpack-cli": "^3.3.4", + "webpack-dev-server": "^3.7.2" + }, + "resolutions": { + "react": "16.8.6", + "react-dom": "16.8.6", + "graphql": "14.3.1" + }, + "devDependencies": { + "@babel/core": "^7.5.4", + "@babel/preset-env": "^7.5.4", + "@babel/preset-react": "^7.0.0", + "@testing-library/react": "^8.0.4", + "babel-jest": "^24.8.0", + "graphql-query-test-mock": "^0.11.1", + "jest": "^24.8.0", + "jest-dom": "^4.0.0", + "nock": "^10.0.6", + "node-fetch": "^2.6.0" + } +} diff --git a/example/schema.graphql b/example/schema.graphql new file mode 100755 index 00000000..c2f94578 --- /dev/null +++ b/example/schema.graphql @@ -0,0 +1,101 @@ +directive @cacheControl(maxAge: Int, scope: CacheControlScope) on FIELD_DEFINITION | OBJECT | INTERFACE + +input AddBookInput { + clientMutationId: String + title: String! + author: String! +} + +type AddBookPayload { + clientMutationId: String + book: Book +} + +type Book { + id: ID! + title: String! + author: String! + shelf: Shelf! + status: BookStatus +} + +type BookCollection { + id: ID! + books: [Book!]! +} + +type BookConnection { + edges: [BookEdge]! + pageInfo: PageInfo! +} + +type BookEdge { + cursor: String! + node: Book! +} + +enum BookStatus { + Draft + Published + Discontinued +} + +enum CacheControlScope { + PUBLIC + PRIVATE +} + +input DeleteBookInput { + clientMutationId: String + id: ID! +} + +type DeleteBookPayload { + clientMutationId: String + deleted: Boolean! +} + +type Mutation { + addBook(input: AddBookInput!): AddBookPayload! + deleteBook(input: DeleteBookInput!): DeleteBookPayload! + updateBook(input: UpdateBookInput!): UpdateBookPayload! +} + +type PageInfo { + hasNextPage: Boolean! + hasPreviousPage: Boolean! + endCursor: String + startCursor: String +} + +type Query { + book(id: ID!): Book + books(status: BookStatus): [Book!]! + booksPaginated(first: Int, after: String): BookConnection + fromShelf(shelfId: ID!): [ShelfContent!] +} + +type Shelf { + id: ID! + name: String! + contents: [ShelfContent!]! +} + +union ShelfContent = Book | BookCollection + +input UpdateBookInput { + clientMutationId: String + id: ID! + title: String! + author: String! + status: BookStatus +} + +type UpdateBookPayload { + clientMutationId: String + book: Book +} + +"""The `Upload` scalar type represents a file upload.""" +scalar Upload + diff --git a/example/server/.gitignore b/example/server/.gitignore new file mode 100644 index 00000000..766109af --- /dev/null +++ b/example/server/.gitignore @@ -0,0 +1,64 @@ + +# Created by https://www.gitignore.io/api/node,npm + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# End of https://www.gitignore.io/api/node,npm diff --git a/example/server/index.js b/example/server/index.js new file mode 100644 index 00000000..6fdb5294 --- /dev/null +++ b/example/server/index.js @@ -0,0 +1,199 @@ +const { ApolloServer, gql } = require('apollo-server'); +const { toGlobalId, connectionFromArray } = require('graphql-relay'); + +let books = [ + { + type: 'Book', + id: toGlobalId('Book', '1'), + title: 'Harry Potter and the Chamber of Secrets', + author: 'J.K. Rowling', + shelfId: toGlobalId('Shelf', '1'), + status: 'Discontinued' + }, + { + type: 'Book', + id: toGlobalId('Book', '2'), + title: 'Jurassic Park', + author: 'Michael Crichton', + shelfId: toGlobalId('Shelf', '2'), + status: 'Published' + } +]; + +let bookCollection = [ + { + type: 'BookCollection', + id: toGlobalId('BookCollection', '1'), + books: [books[1], books[2]] + } +]; + +let shelves = [ + { + id: toGlobalId('Shelf', '1'), + name: 'Shelf 1', + contents: [books[0], bookCollection[0]] + }, + { + id: toGlobalId('Shelf', '2'), + name: 'Shelf 2', + contents: [] + } +]; + +const typeDefs = gql` + type Shelf { + id: ID! + name: String! + contents: [ShelfContent!]! + } + + enum BookStatus { + Draft + Published + Discontinued + } + + type Book { + id: ID! + title: String! + author: String! + shelf: Shelf! + status: BookStatus + } + + type BookCollection { + id: ID! + books: [Book!]! + } + + type PageInfo { + hasNextPage: Boolean! + hasPreviousPage: Boolean! + endCursor: String + startCursor: String + } + + type BookEdge { + cursor: String! + node: Book! + } + + type BookConnection { + edges: [BookEdge]! + pageInfo: PageInfo! + } + + union ShelfContent = Book | BookCollection + + type Query { + book(id: ID!): Book + books(status: BookStatus): [Book!]! + booksPaginated(first: Int, after: String): BookConnection + fromShelf(shelfId: ID!): [ShelfContent!] + } + + input AddBookInput { + clientMutationId: String + title: String! + author: String! + } + + type AddBookPayload { + clientMutationId: String + book: Book + } + + input DeleteBookInput { + clientMutationId: String + id: ID! + } + + type DeleteBookPayload { + clientMutationId: String + deleted: Boolean! + } + + input UpdateBookInput { + clientMutationId: String + id: ID! + title: String! + author: String! + status: BookStatus + } + + type UpdateBookPayload { + clientMutationId: String + book: Book + } + + type Mutation { + addBook(input: AddBookInput!): AddBookPayload! + deleteBook(input: DeleteBookInput!): DeleteBookPayload! + updateBook(input: UpdateBookInput!): UpdateBookPayload! + } +`; + +const resolvers = { + Query: { + book: (_, args) => books.find(b => b.id === args.id), + books: (_, args) => + books.filter(b => (args.status ? b.status === args.status : true)), + booksPaginated: (_, args) => connectionFromArray(books, args), + fromShelf: (_, args) => { + let shelf = shelves.find(s => s.id === args.shelfId); + return shelf ? shelf.contents : null; + } + }, + ShelfContent: { + __resolveType(obj) { + return obj.type || null; + } + }, + Book: { + shelf: book => shelves.find(s => s.id === book.shelfId) + }, + Mutation: { + addBook: (_, args) => { + const book = { + id: toGlobalId('Book', Math.random()), + title: args.input.title, + author: args.input.author, + shelfId: shelves[0].id + }; + + books.push(book); + + return { book }; + }, + deleteBook: (_, args) => { + const bookIndex = books.findIndex(b => b.id === args.id); + + if (bookIndex) { + books.splice(bookIndex, 1); + } + + return { deleted: bookIndex > -1 }; + }, + updateBook: (_, args) => { + const book = books.find(b => b.id === args.input.id); + + if (book) { + book.title = args.input.title; + book.author = args.input.author; + book.status = args.input.status; + } + + return { book }; + } + } +}; + +const server = new ApolloServer({ + typeDefs, + resolvers +}); + +server.listen().then(({ url }) => { + console.log(`🚀 Server ready at ${url}`); +}); diff --git a/example/server/package.json b/example/server/package.json new file mode 100644 index 00000000..6d33588a --- /dev/null +++ b/example/server/package.json @@ -0,0 +1,18 @@ +{ + "name": "graphql-server-example", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "node index.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "Meteor Development Group", + "license": "MIT", + "dependencies": { + "apollo-server": "^2.0.5", + "graphql": "^0.13.2", + "graphql-relay": "^0.6.0" + } +} diff --git a/example/server/yarn.lock b/example/server/yarn.lock new file mode 100644 index 00000000..47eb1563 --- /dev/null +++ b/example/server/yarn.lock @@ -0,0 +1,1056 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@apollographql/apollo-tools@^0.3.6": + version "0.3.7" + resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.3.7.tgz#3bc9c35b9fff65febd4ddc0c1fc04677693a3d40" + integrity sha512-+ertvzAwzkYmuUtT8zH3Zi6jPdyxZwOgnYaZHY7iLnMVJDhQKWlkyjLMF8wyzlPiEdDImVUMm5lOIBZo7LkGlg== + dependencies: + apollo-env "0.5.1" + +"@apollographql/graphql-playground-html@1.6.20": + version "1.6.20" + resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.20.tgz#bf9f2acdf319c0959fad8ec1239741dd2ead4e8d" + integrity sha512-3LWZa80HcP70Pl+H4KhLDJ7S0px+9/c8GTXdl6SpunRecUaB27g/oOQnAjNHLHdbWuGE0uyqcuGiTfbKB3ilaQ== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= + +"@types/accepts@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" + integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== + dependencies: + "@types/node" "*" + +"@types/body-parser@*", "@types/body-parser@1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c" + integrity sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.32" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.32.tgz#aa0e9616b9435ccad02bc52b5b454ffc2c70ba28" + integrity sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg== + dependencies: + "@types/node" "*" + +"@types/cors@^2.8.4": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.5.tgz#c0c54c4e643e1d943d447292f2baf9dc82cfc8ec" + integrity sha512-GmK8AKu8i+s+EChK/uZ5IbrXPcPaQKWaNSGevDT/7o3gFObwSUQwqb1jMqxuo+YPvj0ckGzINI+EO7EHcmJjKg== + dependencies: + "@types/express" "*" + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/express-serve-static-core@*": + version "4.16.7" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.7.tgz#50ba6f8a691c08a3dd9fa7fba25ef3133d298049" + integrity sha512-847KvL8Q1y3TtFLRTXcVakErLJQgdpFSaq+k043xefz9raEf0C7HalpSY7OW5PyjCnY8P7bPW5t/Co9qqp+USg== + dependencies: + "@types/node" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.0.tgz#49eaedb209582a86f12ed9b725160f12d04ef287" + integrity sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/serve-static" "*" + +"@types/long@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" + integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== + +"@types/mime@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" + integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== + +"@types/node@*": + version "12.0.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.12.tgz#cc791b402360db1eaf7176479072f91ee6c6c7ca" + integrity sha512-Uy0PN4R5vgBUXFoJrKryf5aTk3kJ8Rv3PdlHjl6UaX+Cqp1QE0yPQ68MPXGrZOfG7gZVNDIJZYyot0B9ubXUrQ== + +"@types/node@^10.1.0": + version "10.14.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.12.tgz#0eec3155a46e6c4db1f27c3e588a205f767d622f" + integrity sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg== + +"@types/range-parser@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + +"@types/serve-static@*": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48" + integrity sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q== + dependencies: + "@types/express-serve-static-core" "*" + "@types/mime" "*" + +"@types/ws@^6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-6.0.1.tgz#ca7a3f3756aa12f62a0a62145ed14c6db25d5a28" + integrity sha512-EzH8k1gyZ4xih/MaZTXwT2xOkPiIMSrhQ9b8wrlX88L0T02eYsddatQlwVFlEPyEqV0ChpdpNnE51QPH6NVT4Q== + dependencies: + "@types/events" "*" + "@types/node" "*" + +"@wry/equality@^0.1.2": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.9.tgz#b13e18b7a8053c6858aa6c85b54911fb31e3a909" + integrity sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ== + dependencies: + tslib "^1.9.3" + +accepts@^1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +apollo-cache-control@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.7.4.tgz#0cb5c7be0e0dd0c44b1257144cd7f9f2a3c374e6" + integrity sha512-TVACHwcEF4wfHo5H9FLnoNjo0SLDo2jPW+bXs9aw0Y4Z2UisskSAPnIYOqUPnU8SoeNvs7zWgbLizq11SRTJtg== + dependencies: + apollo-server-env "2.4.0" + graphql-extensions "0.7.4" + +apollo-datasource@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-0.5.0.tgz#7a8c97e23da7b9c15cb65103d63178ab19eca5e9" + integrity sha512-SVXxJyKlWguuDjxkY/WGlC/ykdsTmPxSF0z8FenagcQ91aPURXzXP1ZDz5PbamY+0iiCRubazkxtTQw4GWTFPg== + dependencies: + apollo-server-caching "0.4.0" + apollo-server-env "2.4.0" + +apollo-engine-reporting-protobuf@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.3.1.tgz#a581257fa8e3bb115ce38bf1b22e052d1475ad69" + integrity sha512-Ui3nPG6BSZF8BEqxFs6EkX6mj2OnFLMejxEHSOdM82bakyeouCGd7J0fiy8AD6liJoIyc4X7XfH4ZGGMvMh11A== + dependencies: + protobufjs "^6.8.6" + +apollo-engine-reporting@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/apollo-engine-reporting/-/apollo-engine-reporting-1.3.5.tgz#075424d39dfe77a20f96e8e33b7ae52d58c38e1e" + integrity sha512-pSwjPgXK/elFsR22LXALtT3jI4fpEpeTNTHgNwLVLohaolusMYgBc/9FnVyFWFfMFS9k+3RmfeQdHhZ6T7WKFQ== + dependencies: + apollo-engine-reporting-protobuf "0.3.1" + apollo-graphql "^0.3.3" + apollo-server-core "2.6.7" + apollo-server-env "2.4.0" + async-retry "^1.2.1" + graphql-extensions "0.7.6" + +apollo-env@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/apollo-env/-/apollo-env-0.5.1.tgz#b9b0195c16feadf0fe9fd5563edb0b9b7d9e97d3" + integrity sha512-fndST2xojgSdH02k5hxk1cbqA9Ti8RX4YzzBoAB4oIe1Puhq7+YlhXGXfXB5Y4XN0al8dLg+5nAkyjNAR2qZTw== + dependencies: + core-js "^3.0.1" + node-fetch "^2.2.0" + sha.js "^2.4.11" + +apollo-graphql@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/apollo-graphql/-/apollo-graphql-0.3.3.tgz#ce1df194f6e547ad3ce1e35b42f9c211766e1658" + integrity sha512-t3CO/xIDVsCG2qOvx2MEbuu4b/6LzQjcBBwiVnxclmmFyAxYCIe7rpPlnLHSq7HyOMlCWDMozjoeWfdqYSaLqQ== + dependencies: + apollo-env "0.5.1" + lodash.sortby "^4.7.0" + +apollo-link@^1.2.3: + version "1.2.12" + resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.12.tgz#014b514fba95f1945c38ad4c216f31bcfee68429" + integrity sha512-fsgIAXPKThyMVEMWQsUN22AoQI+J/pVXcjRGAShtk97h7D8O+SPskFinCGEkxPeQpE83uKaqafB2IyWdjN+J3Q== + dependencies: + apollo-utilities "^1.3.0" + ts-invariant "^0.4.0" + tslib "^1.9.3" + zen-observable-ts "^0.8.19" + +apollo-server-caching@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-0.4.0.tgz#e82917590d723c0adc1fa52900e79e93ad65e4d9" + integrity sha512-GTOZdbLhrSOKYNWMYgaqX5cVNSMT0bGUTZKV8/tYlyYmsB6ey7l6iId3Q7UpHS6F6OR2lstz5XaKZ+T3fDfPzQ== + dependencies: + lru-cache "^5.0.0" + +apollo-server-core@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.6.7.tgz#85b0310f40cfec43a702569c73af16d88776a6f0" + integrity sha512-HfOGLvEwPgDWTvd3ZKRPEkEnICKb7xadn1Mci4+auMTsL/NVkfpjPa8cdzubi/kS2/MvioIn7Bg74gmiSLghGQ== + dependencies: + "@apollographql/apollo-tools" "^0.3.6" + "@apollographql/graphql-playground-html" "1.6.20" + "@types/ws" "^6.0.0" + apollo-cache-control "0.7.4" + apollo-datasource "0.5.0" + apollo-engine-reporting "1.3.5" + apollo-server-caching "0.4.0" + apollo-server-env "2.4.0" + apollo-server-errors "2.3.0" + apollo-server-plugin-base "0.5.6" + apollo-tracing "0.7.3" + fast-json-stable-stringify "^2.0.0" + graphql-extensions "0.7.6" + graphql-subscriptions "^1.0.0" + graphql-tag "^2.9.2" + graphql-tools "^4.0.0" + graphql-upload "^8.0.2" + sha.js "^2.4.11" + subscriptions-transport-ws "^0.9.11" + ws "^6.0.0" + +apollo-server-env@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-2.4.0.tgz#6611556c6b627a1636eed31317d4f7ea30705872" + integrity sha512-7ispR68lv92viFeu5zsRUVGP+oxsVI3WeeBNniM22Cx619maBUwcYTIC3+Y3LpXILhLZCzA1FASZwusgSlyN9w== + dependencies: + node-fetch "^2.1.2" + util.promisify "^1.0.0" + +apollo-server-errors@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.3.0.tgz#700622b66a16dffcad3b017e4796749814edc061" + integrity sha512-rUvzwMo2ZQgzzPh2kcJyfbRSfVKRMhfIlhY7BzUfM4x6ZT0aijlgsf714Ll3Mbf5Fxii32kD0A/DmKsTecpccw== + +apollo-server-express@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.6.7.tgz#22307e08b75be1553f4099d00028abe52597767d" + integrity sha512-qbCQM+8LxXpwPNN5Sdvcb+Sne8zuCORFt25HJtPJRkHlyBUzOd7JA7SEnUn5e2geTiiGoVIU5leh+++C51udTw== + dependencies: + "@apollographql/graphql-playground-html" "1.6.20" + "@types/accepts" "^1.3.5" + "@types/body-parser" "1.17.0" + "@types/cors" "^2.8.4" + "@types/express" "4.17.0" + accepts "^1.3.5" + apollo-server-core "2.6.7" + body-parser "^1.18.3" + cors "^2.8.4" + graphql-subscriptions "^1.0.0" + graphql-tools "^4.0.0" + type-is "^1.6.16" + +apollo-server-plugin-base@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-0.5.6.tgz#3a7128437a0f845e7d873fa43ef091ff7bf27975" + integrity sha512-wJvcPqfm/kiBwY5JZT85t2A4pcHv24xdQIpWMNt1zsnx77lIZqJmhsc22eSUSrlnYqUMXC4XMVgSUfAO4oI9wg== + +apollo-server@^2.0.5: + version "2.6.7" + resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-2.6.7.tgz#b707ede529b4d45f2f00a74f3b457658b0e62e83" + integrity sha512-4wk9JykURLed6CnNIj9jhU6ueeTVmGBTyAnnvnlhRrOf50JAFszUErZIKg6lw5vVr5riaByrGFIkMBTySCHgPQ== + dependencies: + apollo-server-core "2.6.7" + apollo-server-express "2.6.7" + express "^4.0.0" + graphql-subscriptions "^1.0.0" + graphql-tools "^4.0.0" + +apollo-tracing@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.7.3.tgz#8533e3e2dca2d5a25e8439ce498ea33ff4d159ee" + integrity sha512-H6fSC+awQGnfDyYdGIB0UQUhcUC3n5Vy+ujacJ0bY6R+vwWeZOQvu7wRHNjk/rbOSTLCo9A0OcVX7huRyu9SZg== + dependencies: + apollo-server-env "2.4.0" + graphql-extensions "0.7.4" + +apollo-utilities@^1.0.1, apollo-utilities@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.2.tgz#8cbdcf8b012f664cd6cb5767f6130f5aed9115c9" + integrity sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg== + dependencies: + "@wry/equality" "^0.1.2" + fast-json-stable-stringify "^2.0.0" + ts-invariant "^0.4.0" + tslib "^1.9.3" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + +async-retry@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.2.3.tgz#a6521f338358d322b1a0012b79030c6f411d1ce0" + integrity sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q== + dependencies: + retry "0.12.0" + +backo2@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +body-parser@1.19.0, body-parser@^1.18.3: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +busboy@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" + integrity sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw== + dependencies: + dicer "0.3.0" + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +core-js@^3.0.1: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07" + integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ== + +cors@^2.8.4: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +deprecated-decorator@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" + integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +dicer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872" + integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA== + dependencies: + streamsearch "0.1.2" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +es-abstract@^1.5.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +express@^4.0.0: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-capacitor@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c" + integrity sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +graphql-extensions@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.7.4.tgz#78327712822281d5778b9210a55dc59c93a9c184" + integrity sha512-Ly+DiTDU+UtlfPGQkqmBX2SWMr9OT3JxMRwpB9K86rDNDBTJtG6AE2kliQKKE+hg1+945KAimO7Ep+YAvS7ywg== + dependencies: + "@apollographql/apollo-tools" "^0.3.6" + +graphql-extensions@0.7.6: + version "0.7.6" + resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.7.6.tgz#80cdddf08b0af12525529d1922ee2ea0d0cc8ecf" + integrity sha512-RV00O3YFD1diehvdja180BlKOGWgeigr/8/Wzr6lXwLcFtk6FecQC/7nf6oW1qhuXczHyNjt/uCr0WWbWq6mYg== + dependencies: + "@apollographql/apollo-tools" "^0.3.6" + +graphql-relay@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/graphql-relay/-/graphql-relay-0.6.0.tgz#18ec36b772cfcb3dbb9bd369c3f8004cf42c7b93" + integrity sha512-OVDi6C9/qOT542Q3KxZdXja3NrDvqzbihn1B44PH8P/c5s0Q90RyQwT6guhGqXqbYEH6zbeLJWjQqiYvcg2vVw== + dependencies: + prettier "^1.16.0" + +graphql-subscriptions@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz#5f2fa4233eda44cf7570526adfcf3c16937aef11" + integrity sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA== + dependencies: + iterall "^1.2.1" + +graphql-tag@^2.9.2: + version "2.10.1" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.1.tgz#10aa41f1cd8fae5373eaf11f1f67260a3cad5e02" + integrity sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg== + +graphql-tools@^4.0.0: + version "4.0.5" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.5.tgz#d2b41ee0a330bfef833e5cdae7e1f0b0d86b1754" + integrity sha512-kQCh3IZsMqquDx7zfIGWBau42xe46gmqabwYkpPlCLIjcEY1XK+auP7iGRD9/205BPyoQdY8hT96MPpgERdC9Q== + dependencies: + apollo-link "^1.2.3" + apollo-utilities "^1.0.1" + deprecated-decorator "^0.1.6" + iterall "^1.1.3" + uuid "^3.1.0" + +graphql-upload@^8.0.2: + version "8.0.7" + resolved "https://registry.yarnpkg.com/graphql-upload/-/graphql-upload-8.0.7.tgz#8644264e241529552ea4b3797e7ee15809cf01a3" + integrity sha512-gi2yygbDPXbHPC7H0PNPqP++VKSoNoJO4UrXWq4T0Bi4IhyUd3Ycop/FSxhx2svWIK3jdXR/i0vi91yR1aAF0g== + dependencies: + busboy "^0.3.1" + fs-capacitor "^2.0.4" + http-errors "^1.7.2" + object-path "^0.11.4" + +graphql@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.13.2.tgz#4c740ae3c222823e7004096f832e7b93b2108270" + integrity sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog== + dependencies: + iterall "^1.2.1" + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@^1.7.2, http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inherits@2.0.4, inherits@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ipaddr.js@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== + +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +iterall@^1.1.3, iterall@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" + integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +lru-cache@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +mime-db@1.40.0: + version "1.40.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== + +mime-types@~2.1.24: + version "2.1.24" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + dependencies: + mime-db "1.40.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +node-fetch@^2.1.2, node-fetch@^2.2.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +object-assign@^4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-path@^0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +prettier@^1.16.0: + version "1.18.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" + integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== + +protobufjs@^6.8.6: + version "6.8.8" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" + integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.0" + "@types/node" "^10.1.0" + long "^4.0.0" + +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +retry@0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@^5.0.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.11: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +streamsearch@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" + integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= + +subscriptions-transport-ws@^0.9.11: + version "0.9.16" + resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.16.tgz#90a422f0771d9c32069294c08608af2d47f596ec" + integrity sha512-pQdoU7nC+EpStXnCfh/+ho0zE0Z+ma+i7xvj7bkXKb1dvYHSZxgRPaU6spRP+Bjzow67c/rRDoix5RT0uU9omw== + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^5.2.0" + +symbol-observable@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +ts-invariant@^0.4.0: + version "0.4.4" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" + integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== + dependencies: + tslib "^1.9.3" + +tslib@^1.9.3: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +type-is@^1.6.16, type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.1.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +zen-observable-ts@^0.8.19: + version "0.8.19" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz#c094cd20e83ddb02a11144a6e2a89706946b5694" + integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" + +zen-observable@^0.8.0: + version "0.8.14" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.14.tgz#d33058359d335bc0db1f0af66158b32872af3bf7" + integrity sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g== diff --git a/example/src/BookDisplayer.bs.js b/example/src/BookDisplayer.bs.js new file mode 100644 index 00000000..b692249e --- /dev/null +++ b/example/src/BookDisplayer.bs.js @@ -0,0 +1,53 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as BookEditor from "./BookEditor.bs.js"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as ShelfDisplayer from "./ShelfDisplayer.bs.js"; +import * as BookDisplayer_book_graphql from "./__generated__/BookDisplayer_book_graphql.bs.js"; + +var UseFragment = ReasonRelay.MakeUseFragment(/* module */[/* fragmentSpec */BookDisplayer_book_graphql.node]); + +function use(fRef) { + return Curry._1(UseFragment[/* use */0], fRef); +} + +var BookFragment = /* module */[ + /* Operation */0, + /* UseFragment */UseFragment, + /* use */use +]; + +function BookDisplayer(Props) { + var bookRef = Props.book; + var match = Props.allowEditMode; + var allowEditMode = match !== undefined ? match : false; + var book = Curry._1(UseFragment[/* use */0], bookRef); + var match$1 = React.useState((function () { + return false; + })); + var setEditMode = match$1[1]; + var editMode = match$1[0]; + var match$2 = editMode && allowEditMode; + return React.createElement("div", undefined, React.createElement("h1", undefined, book.title + (" " + book.author)), React.createElement(ShelfDisplayer.make, { + shelf: book.shelf + }), allowEditMode ? React.createElement("p", undefined, React.createElement("button", { + onClick: (function (param) { + return Curry._1(setEditMode, (function (current) { + return !current; + })); + }) + }, editMode ? "Stop editing" : "Start editing")) : null, React.createElement("p", undefined, match$2 ? React.createElement(BookEditor.make, { + book: book + }) : null)); +} + +var make = BookDisplayer; + +export { + BookFragment , + make , + +} +/* UseFragment Not a pure module */ diff --git a/example/src/BookDisplayer.re b/example/src/BookDisplayer.re new file mode 100644 index 00000000..55259f18 --- /dev/null +++ b/example/src/BookDisplayer.re @@ -0,0 +1,31 @@ +module BookFragment = [%relay.fragment + {| + fragment BookDisplayer_book on Book { + ...BookEditor_book + title + author + shelf { + ...ShelfDisplayer_shelf + } + } + |} +]; + +[@react.component] +let make = (~book as bookRef, ~allowEditMode: bool=false) => { + let book = BookFragment.use(bookRef); + let (editMode, setEditMode) = React.useState(() => false); + +
+

{React.string(book##title ++ " " ++ book##author)}

+ + {allowEditMode + ?

+ +

+ : React.null} +

{editMode && allowEditMode ? : React.null}

+
; +}; \ No newline at end of file diff --git a/example/src/BookEditor.bs.js b/example/src/BookEditor.bs.js new file mode 100644 index 00000000..8b57dea6 --- /dev/null +++ b/example/src/BookEditor.bs.js @@ -0,0 +1,153 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Block from "bs-platform/lib/es6/block.js"; +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as ShowForDuration from "./ShowForDuration.bs.js"; +import * as BookEditor_book_graphql from "./__generated__/BookEditor_book_graphql.bs.js"; +import * as BookEditorDeleteMutation_graphql from "./__generated__/BookEditorDeleteMutation_graphql.bs.js"; +import * as BookEditorUpdateMutation_graphql from "./__generated__/BookEditorUpdateMutation_graphql.bs.js"; + +var UseFragment = ReasonRelay.MakeUseFragment(/* module */[/* fragmentSpec */BookEditor_book_graphql.node]); + +function use(fRef) { + return Curry._1(UseFragment[/* use */0], fRef); +} + +var BookFragment = /* module */[ + /* Operation */0, + /* UseFragment */UseFragment, + /* use */use +]; + +var Mutation = ReasonRelay.MakeCommitMutation(/* module */[/* node */BookEditorUpdateMutation_graphql.node]); + +var UseMutation = ReasonRelay.MakeUseMutation(/* module */[/* node */BookEditorUpdateMutation_graphql.node]); + +var use$1 = UseMutation[/* use */0]; + +var commitMutation = Mutation[/* commitMutation */0]; + +var UpdateMutation = /* module */[ + /* Operation */0, + /* Mutation */Mutation, + /* UseMutation */UseMutation, + /* use */use$1, + /* commitMutation */commitMutation +]; + +var Mutation$1 = ReasonRelay.MakeCommitMutation(/* module */[/* node */BookEditorDeleteMutation_graphql.node]); + +var UseMutation$1 = ReasonRelay.MakeUseMutation(/* module */[/* node */BookEditorDeleteMutation_graphql.node]); + +var use$2 = UseMutation$1[/* use */0]; + +var commitMutation$1 = Mutation$1[/* commitMutation */0]; + +var DeleteMutation = /* module */[ + /* Operation */0, + /* Mutation */Mutation$1, + /* UseMutation */UseMutation$1, + /* use */use$2, + /* commitMutation */commitMutation$1 +]; + +function reducer(state, action) { + if (action.tag) { + return /* record */[ + /* title */state[/* title */0], + /* author */action[0] + ]; + } else { + return /* record */[ + /* title */action[0], + /* author */state[/* author */1] + ]; + } +} + +function BookEditor(Props) { + var bookRef = Props.book; + var book = Curry._1(UseFragment[/* use */0], bookRef); + var match = React.useReducer(reducer, /* record */[ + /* title */book.title, + /* author */book.author + ]); + var dispatch = match[1]; + var state = match[0]; + var match$1 = Curry._1(use$1, /* () */0); + var mutationState = match$1[1]; + var updateBook = match$1[0]; + var tmp; + if (typeof mutationState === "number") { + tmp = "Saving..."; + } else if (mutationState.tag) { + var res = mutationState[0]; + if (res !== undefined) { + var match$2 = Caml_option.valFromOption(res).updateBook.book; + tmp = (match$2 == null) ? React.createElement(ShowForDuration.make, { + duration: 2000, + children: "Ooops, something went wrong." + }) : React.createElement(ShowForDuration.make, { + duration: 2000, + children: "Saved!" + }); + } else { + tmp = React.createElement(ShowForDuration.make, { + duration: 2000, + children: "No data Ooops, something went wrong." + }); + } + } else { + tmp = React.createElement(ShowForDuration.make, { + duration: 2000, + children: "ERROR: Ooops, something went wrong." + }); + } + return React.createElement("p", undefined, React.createElement("p", undefined, React.createElement("input", { + type: "text", + value: state[/* title */0], + onChange: (function (e) { + return Curry._1(dispatch, /* SetTitle */Block.__(0, [e.currentTarget.value])); + }) + })), React.createElement("p", undefined, React.createElement("input", { + type: "text", + value: state[/* author */1], + onChange: (function (e) { + return Curry._1(dispatch, /* SetAuthor */Block.__(1, [e.currentTarget.value])); + }) + })), React.createElement("p", undefined, React.createElement("button", { + onClick: (function (param) { + Curry._5(updateBook, { + input: { + clientMutationId: undefined, + id: book.id, + title: state[/* title */0], + author: state[/* author */1], + status: Caml_option.nullable_to_opt(book.status) + } + }, undefined, undefined, undefined, /* () */0).then((function (res) { + if (res.tag) { + return Promise.resolve((console.log("Error...", res[0]), /* () */0)); + } else { + return Promise.resolve((console.log("Success!", res[0]), /* () */0)); + } + })); + return /* () */0; + }) + }, "Save"), tmp)); +} + +var make = BookEditor; + +export { + BookFragment , + UpdateMutation , + DeleteMutation , + reducer , + make , + +} +/* UseFragment Not a pure module */ diff --git a/example/src/BookEditor.re b/example/src/BookEditor.re new file mode 100644 index 00000000..4e0c2fb1 --- /dev/null +++ b/example/src/BookEditor.re @@ -0,0 +1,132 @@ +module BookFragment = [%relay.fragment + {| + fragment BookEditor_book on Book { + id + title + author + status + } + |} +]; + +module UpdateMutation = [%relay.mutation + {| + mutation BookEditorUpdateMutation($input: UpdateBookInput!) { + updateBook(input: $input) { + book { + title + author + status + } + } + } + |} +]; + +module DeleteMutation = [%relay.mutation + {| + mutation BookEditorDeleteMutation($input: DeleteBookInput!) { + deleteBook(input: $input) { + deleted + } + } + |} +]; + +type state = { + title: string, + author: string, +}; + +type action = + | SetTitle(string) + | SetAuthor(string); + +let reducer = (state, action) => + switch (action) { + | SetTitle(title) => {...state, title} + | SetAuthor(author) => {...state, author} + }; + +[@react.component] +let make = (~book as bookRef) => { + let book = BookFragment.use(bookRef); + + let (state, dispatch) = + React.useReducer(reducer, {title: book##title, author: book##author}); + + let (updateBook, mutationState) = UpdateMutation.use(); + +

+

+ + dispatch(SetTitle(ReactEvent.Form.currentTarget(e)##value)) + } + /> +

+

+ + dispatch(SetAuthor(ReactEvent.Form.currentTarget(e)##value)) + } + /> +

+

+ + {switch (mutationState) { + | Loading => React.string("Saving...") + | Success(res) => + switch (res) { + | Some(res) => + switch (res##updateBook##book |> Js.Nullable.toOption) { + | Some(_) => + + {React.string("Saved!")} + + | None => + + {React.string("Ooops, something went wrong.")} + + } + | None => + + {React.string("No data Ooops, something went wrong.")} + + } + | Error(_) => + + {React.string("ERROR: Ooops, something went wrong.")} + + }} +

+

; +}; \ No newline at end of file diff --git a/example/src/BooksOverview.bs.js b/example/src/BooksOverview.bs.js new file mode 100644 index 00000000..e54faf0f --- /dev/null +++ b/example/src/BooksOverview.bs.js @@ -0,0 +1,54 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as $$Array from "bs-platform/lib/es6/array.js"; +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as BookDisplayer from "./BookDisplayer.bs.js"; +import * as ReasonReactRouter from "reason-react/src/ReasonReactRouter.js"; +import * as BooksOverviewQuery_graphql from "./__generated__/BooksOverviewQuery_graphql.bs.js"; + +var UseQuery = ReasonRelay.MakeUseQuery(/* module */[/* query */BooksOverviewQuery_graphql.node]); + +var use = UseQuery[/* use */0]; + +function $$fetch(environment, variables) { + return ReasonRelay.fetchQuery(environment, BooksOverviewQuery_graphql.node, variables); +} + +var Query = /* module */[ + /* Operation */0, + /* UseQuery */UseQuery, + /* use */use, + /* fetch */$$fetch +]; + +function BooksOverview(Props) { + var query = Curry._3(use, /* () */0, /* StoreOrNetwork */2, /* () */0); + if (typeof query === "number") { + return React.createElement("div", undefined, "Loading..."); + } else if (query.tag) { + return $$Array.mapi((function (index, book) { + return React.createElement("div", { + key: String(index) + }, React.createElement(BookDisplayer.make, { + book: book + }), React.createElement("p", undefined, React.createElement("button", { + onClick: (function (param) { + return ReasonReactRouter.push("/book/" + book.id); + }) + }, "More info"))); + }), query[0].books); + } else { + return React.createElement("div", undefined, "Error!"); + } +} + +var make = BooksOverview; + +export { + Query , + make , + +} +/* UseQuery Not a pure module */ diff --git a/example/src/BooksOverview.re b/example/src/BooksOverview.re new file mode 100644 index 00000000..aea5d723 --- /dev/null +++ b/example/src/BooksOverview.re @@ -0,0 +1,34 @@ +module Query = [%relay.query + {| + query BooksOverviewQuery { + books { + id + ...BookDisplayer_book + } + } +|} +]; + +[@react.component] +let make = () => { + let query = Query.use(~variables=(), ~dataFrom=StoreOrNetwork, ()); + + switch (query) { + | Loading =>
{React.string("Loading...")}
+ | Error(_) =>
{React.string("Error!")}
+ | Data(data) => + data##books + |> Array.mapi((index, book) => +
+ +

+ +

+
+ ) + |> React.array + }; +}; \ No newline at end of file diff --git a/example/src/CreateBookView.bs.js b/example/src/CreateBookView.bs.js new file mode 100644 index 00000000..f9871d59 --- /dev/null +++ b/example/src/CreateBookView.bs.js @@ -0,0 +1,137 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as $$Array from "bs-platform/lib/es6/array.js"; +import * as Block from "bs-platform/lib/es6/block.js"; +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as CreateBookViewQuery_graphql from "./__generated__/CreateBookViewQuery_graphql.bs.js"; +import * as CreateBookViewMutation_graphql from "./__generated__/CreateBookViewMutation_graphql.bs.js"; +import * as CreateBookViewExistingBookDisplayer from "./CreateBookViewExistingBookDisplayer.bs.js"; + +var Mutation = ReasonRelay.MakeCommitMutation(/* module */[/* node */CreateBookViewMutation_graphql.node]); + +var UseMutation = ReasonRelay.MakeUseMutation(/* module */[/* node */CreateBookViewMutation_graphql.node]); + +var use = UseMutation[/* use */0]; + +var commitMutation = Mutation[/* commitMutation */0]; + +var CreateMutation = /* module */[ + /* Operation */0, + /* Mutation */Mutation, + /* UseMutation */UseMutation, + /* use */use, + /* commitMutation */commitMutation +]; + +var UseQuery = ReasonRelay.MakeUseQuery(/* module */[/* query */CreateBookViewQuery_graphql.node]); + +var use$1 = UseQuery[/* use */0]; + +function $$fetch(environment, variables) { + return ReasonRelay.fetchQuery(environment, CreateBookViewQuery_graphql.node, variables); +} + +var Query = /* module */[ + /* Operation */0, + /* UseQuery */UseQuery, + /* use */use$1, + /* fetch */$$fetch +]; + +var initialState = /* record */[ + /* title */"", + /* author */"" +]; + +function reducer(state, action) { + if (typeof action === "number") { + return initialState; + } else if (action.tag) { + return /* record */[ + /* title */state[/* title */0], + /* author */action[0] + ]; + } else { + return /* record */[ + /* title */action[0], + /* author */state[/* author */1] + ]; + } +} + +function CreateBookView(Props) { + var match = Curry._1(use, /* () */0); + var addBook = match[0]; + var query = Curry._3(use$1, /* () */0, /* StoreThenNetwork */1, /* () */0); + var match$1 = React.useReducer(reducer, initialState); + var dispatch = match$1[1]; + var state = match$1[0]; + var tmp; + tmp = typeof query === "number" ? "Loading..." : ( + query.tag ? $$Array.mapi((function (index, book) { + return React.createElement(CreateBookViewExistingBookDisplayer.make, { + book: book, + key: String(index) + }); + }), query[0].books) : "Oops, something failed!" + ); + return React.createElement("div", undefined, React.createElement("h1", undefined, "Create book"), React.createElement("p", undefined, React.createElement("strong", undefined, "Title"), React.createElement("p", undefined, React.createElement("input", { + type: "text", + value: state[/* title */0], + onChange: (function (e) { + return Curry._1(dispatch, /* SetTitle */Block.__(0, [e.currentTarget.value])); + }) + }))), React.createElement("p", undefined, React.createElement("strong", undefined, "Author"), React.createElement("p", undefined, React.createElement("input", { + type: "text", + value: state[/* author */1], + onChange: (function (e) { + return Curry._1(dispatch, /* SetAuthor */Block.__(1, [e.currentTarget.value])); + }) + }))), React.createElement("p", undefined, React.createElement("button", { + onClick: (function (param) { + Curry._5(addBook, { + input: { + clientMutationId: undefined, + title: state[/* title */0], + author: state[/* author */1] + } + }, undefined, undefined, (function (store) { + var mutationRes = ReasonRelay.RecordSourceSelectorProxy[/* getRootField */4]("addBook", store); + var rootNode = ReasonRelay.RecordSourceSelectorProxy[/* getRoot */3](store); + var rootBooks = ReasonRelay.RecordProxy[/* getLinkedRecords */3]("books", undefined, rootNode); + var addedBook = mutationRes !== undefined ? ReasonRelay.RecordProxy[/* getLinkedRecord */2]("book", undefined, Caml_option.valFromOption(mutationRes)) : undefined; + if (rootBooks !== undefined) { + if (addedBook !== undefined) { + ReasonRelay.RecordProxy[/* setLinkedRecords */11]($$Array.append(rootBooks, /* array */[Caml_option.some(Caml_option.valFromOption(addedBook))]), "books", undefined, rootNode); + } + + } else if (addedBook !== undefined) { + ReasonRelay.RecordProxy[/* setLinkedRecords */11](/* array */[Caml_option.some(Caml_option.valFromOption(addedBook))], "books", undefined, rootNode); + } + return /* () */0; + }), /* () */0).then((function (res) { + if (res.tag) { + return Promise.resolve((console.log(res[0]), /* () */0)); + } else { + return Promise.resolve((console.log("Yay!"), /* () */0)); + } + })); + return /* () */0; + }) + }, "Save"), React.createElement("p", undefined, typeof match[1] === "number" ? "Saving..." : null)), React.createElement("p", undefined, React.createElement("h3", undefined, "Existing books")), React.createElement("p", undefined, tmp)); +} + +var make = CreateBookView; + +export { + CreateMutation , + Query , + initialState , + reducer , + make , + +} +/* Mutation Not a pure module */ diff --git a/example/src/CreateBookView.re b/example/src/CreateBookView.re new file mode 100644 index 00000000..27544058 --- /dev/null +++ b/example/src/CreateBookView.re @@ -0,0 +1,177 @@ +module CreateMutation = [%relay.mutation + {| + mutation CreateBookViewMutation($input: AddBookInput!) { + addBook(input: $input) { + book { + title + author + shelf { + name + } + } + } + } +|} +]; + +module Query = [%relay.query + {| + query CreateBookViewQuery { + books { + ...CreateBookViewExistingBookDisplayer_book + } + } +|} +]; + +type state = { + title: string, + author: string, +}; + +type action = + | Reset + | SetTitle(string) + | SetAuthor(string); + +let initialState = {title: "", author: ""}; + +let reducer = (state, action) => + switch (action) { + | Reset => initialState + | SetTitle(title) => {...state, title} + | SetAuthor(author) => {...state, author} + }; + +[@react.component] +let make = () => { + let (addBook, addBookStatus) = CreateMutation.use(); + let query = Query.use(~variables=(), ~dataFrom=StoreThenNetwork, ()); + let (state, dispatch) = React.useReducer(reducer, initialState); + +
+

{React.string("Create book")}

+

+ {React.string("Title")} +

+ + dispatch(SetTitle(ReactEvent.Form.currentTarget(e)##value)) + } + /> +

+

+

+ {React.string("Author")} +

+ + dispatch(SetAuthor(ReactEvent.Form.currentTarget(e)##value)) + } + /> +

+

+

+ +

+ {switch (addBookStatus) { + | Loading => React.string("Saving...") + | _ => React.null + }} +

+

+

{React.string("Existing books")}

+

+ {switch (query) { + | Loading => React.string("Loading...") + | Error(_) => React.string("Oops, something failed!") + | Data(data) => + data##books + |> Array.mapi((index, book) => + + ) + |> React.array + }} +

+
; +}; \ No newline at end of file diff --git a/example/src/CreateBookViewExistingBookDisplayer.bs.js b/example/src/CreateBookViewExistingBookDisplayer.bs.js new file mode 100644 index 00000000..a0dc88cb --- /dev/null +++ b/example/src/CreateBookViewExistingBookDisplayer.bs.js @@ -0,0 +1,33 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as CreateBookViewExistingBookDisplayer_book_graphql from "./__generated__/CreateBookViewExistingBookDisplayer_book_graphql.bs.js"; + +var UseFragment = ReasonRelay.MakeUseFragment(/* module */[/* fragmentSpec */CreateBookViewExistingBookDisplayer_book_graphql.node]); + +function use(fRef) { + return Curry._1(UseFragment[/* use */0], fRef); +} + +var BookFragment = /* module */[ + /* Operation */0, + /* UseFragment */UseFragment, + /* use */use +]; + +function CreateBookViewExistingBookDisplayer(Props) { + var bookRef = Props.book; + var book = Curry._1(UseFragment[/* use */0], bookRef); + return React.createElement("p", undefined, React.createElement("p", undefined, React.createElement("strong", undefined, book.title)), React.createElement("p", undefined, book.author)); +} + +var make = CreateBookViewExistingBookDisplayer; + +export { + BookFragment , + make , + +} +/* UseFragment Not a pure module */ diff --git a/example/src/CreateBookViewExistingBookDisplayer.re b/example/src/CreateBookViewExistingBookDisplayer.re new file mode 100644 index 00000000..baa8a162 --- /dev/null +++ b/example/src/CreateBookViewExistingBookDisplayer.re @@ -0,0 +1,18 @@ +module BookFragment = [%relay.fragment + {| + fragment CreateBookViewExistingBookDisplayer_book on Book { + title + author + } +|} +]; + +[@react.component] +let make = (~book as bookRef) => { + let book = BookFragment.use(bookRef); + +

+

{React.string(book##title)}

+

{React.string(book##author)}

+

; +}; \ No newline at end of file diff --git a/example/src/EnvironmentProvider.bs.js b/example/src/EnvironmentProvider.bs.js new file mode 100644 index 00000000..94cb319c --- /dev/null +++ b/example/src/EnvironmentProvider.bs.js @@ -0,0 +1,22 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as RelayEnv from "./RelayEnv.bs.js"; +import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; + +function EnvironmentProvider(Props) { + var children = Props.children; + var match = Props.environment; + var environment = match !== undefined ? Caml_option.valFromOption(match) : RelayEnv.environment; + return React.createElement(ReasonRelay.Context[/* Provider */1][/* make */1], Curry._4(ReasonRelay.Context[/* Provider */1][/* makeProps */0], environment, children, undefined, /* () */0)); +} + +var make = EnvironmentProvider; + +export { + make , + +} +/* react Not a pure module */ diff --git a/example/src/EnvironmentProvider.re b/example/src/EnvironmentProvider.re new file mode 100644 index 00000000..1bbb2a1a --- /dev/null +++ b/example/src/EnvironmentProvider.re @@ -0,0 +1,6 @@ +[@react.component] +let make = (~children, ~environment=RelayEnv.environment) => { + + children + ; +}; \ No newline at end of file diff --git a/example/src/Index.bs.js b/example/src/Index.bs.js new file mode 100644 index 00000000..13ff00db --- /dev/null +++ b/example/src/Index.bs.js @@ -0,0 +1,15 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Main from "./Main.bs.js"; +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as RelayEnv from "./RelayEnv.bs.js"; +import * as ReactDOMRe from "reason-react/src/ReactDOMRe.js"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; + +ReactDOMRe.renderToElementWithId(React.createElement(ReasonRelay.Context[/* Provider */1][/* make */1], Curry._4(ReasonRelay.Context[/* Provider */1][/* makeProps */0], RelayEnv.environment, React.createElement(Main.make, { }), undefined, /* () */0)), "app"); + +export { + +} +/* Not a pure module */ diff --git a/example/src/Index.re b/example/src/Index.re new file mode 100755 index 00000000..019e7a55 --- /dev/null +++ b/example/src/Index.re @@ -0,0 +1,6 @@ +ReactDOMRe.renderToElementWithId( + +
+ , + "app", +); \ No newline at end of file diff --git a/example/src/Main.bs.js b/example/src/Main.bs.js new file mode 100644 index 00000000..e61d0095 --- /dev/null +++ b/example/src/Main.bs.js @@ -0,0 +1,82 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as React from "react"; +import * as BooksOverview from "./BooksOverview.bs.js"; +import * as TestMutations from "./testViews/testMutations/TestMutations.bs.js"; +import * as CreateBookView from "./CreateBookView.bs.js"; +import * as ReasonReactRouter from "reason-react/src/ReasonReactRouter.js"; +import * as SingleBookDisplayer from "./SingleBookDisplayer.bs.js"; + +function Main$GoToViewButton(Props) { + var label = Props.label; + var target = Props.target; + return React.createElement("button", { + onClick: (function (param) { + return ReasonReactRouter.push(target); + }) + }, label); +} + +var GoToViewButton = /* module */[/* make */Main$GoToViewButton]; + +function Main(Props) { + var url = ReasonReactRouter.useUrl(undefined, /* () */0); + var match = url[/* path */0]; + var exit = 0; + if (match) { + switch (match[0]) { + case "book" : + var match$1 = match[1]; + if (match$1 && !match$1[1]) { + return React.createElement("div", undefined, React.createElement(SingleBookDisplayer.make, { + bookId: match$1[0] + }), React.createElement(Main$GoToViewButton, { + label: "To overview", + target: "/", + key: "overview" + })); + } else { + exit = 1; + } + break; + case "create" : + return React.createElement("div", undefined, React.createElement(CreateBookView.make, { }), React.createElement(Main$GoToViewButton, { + label: "To overview", + target: "/", + key: "overview" + })); + case "test-mutations" : + if (match[1]) { + exit = 1; + } else { + return React.createElement("div", undefined, React.createElement(TestMutations.make, { }), React.createElement(Main$GoToViewButton, { + label: "To overview", + target: "/", + key: "overview" + })); + } + break; + default: + exit = 1; + } + } else { + exit = 1; + } + if (exit === 1) { + return React.createElement("div", undefined, React.createElement(BooksOverview.make, { }), React.createElement(Main$GoToViewButton, { + label: "Create book", + target: "/create", + key: "create" + })); + } + +} + +var make = Main; + +export { + GoToViewButton , + make , + +} +/* react Not a pure module */ diff --git a/example/src/Main.re b/example/src/Main.re new file mode 100644 index 00000000..04310d61 --- /dev/null +++ b/example/src/Main.re @@ -0,0 +1,36 @@ +module GoToViewButton = { + [@react.component] + let make = (~label, ~target) => + ; +}; + +[@react.component] +let make = () => { + let url = ReasonReactRouter.useUrl(); + + switch (url.path) { + | ["test-mutations"] => +
+ + +
+ | ["create", ..._rest] => +
+ + +
+ + | ["book", bookId] => +
+ + +
+ | _ => +
+ + +
+ }; +}; \ No newline at end of file diff --git a/example/src/RelayEnv.bs.js b/example/src/RelayEnv.bs.js new file mode 100644 index 00000000..bbe03df8 --- /dev/null +++ b/example/src/RelayEnv.bs.js @@ -0,0 +1,55 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Fetch from "bs-fetch/src/Fetch.js"; +import * as Js_dict from "bs-platform/lib/es6/js_dict.js"; +import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as Caml_exceptions from "bs-platform/lib/es6/caml_exceptions.js"; + +var Graphql_error = Caml_exceptions.create("RelayEnv.Graphql_error"); + +function fetchQuery(operation, variables, _cacheConfig) { + return fetch("http://localhost:4000", Fetch.RequestInit[/* make */0](/* Post */2, { + "content-type": "application/json", + accept: "application/json" + }, Caml_option.some(JSON.stringify(Js_dict.fromList(/* :: */[ + /* tuple */[ + "query", + operation.text + ], + /* :: */[ + /* tuple */[ + "variables", + variables + ], + /* [] */0 + ] + ]))), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)(/* () */0)).then((function (resp) { + if (resp.ok) { + return resp.json(); + } else { + return Promise.reject([ + Graphql_error, + "Request failed: " + resp.statusText + ]); + } + })); +} + +var network = ReasonRelay.Network[/* makePromiseBased */0](fetchQuery); + +function makeEnvironment(param) { + return ReasonRelay.Environment[/* make */0](network, ReasonRelay.Store[/* make */0](ReasonRelay.RecordSource[/* make */0](/* () */0))); +} + +var environment = makeEnvironment(/* () */0); + +export { + Graphql_error , + fetchQuery , + network , + makeEnvironment , + environment , + +} +/* network Not a pure module */ diff --git a/example/src/RelayEnv.re b/example/src/RelayEnv.re new file mode 100644 index 00000000..f0393462 --- /dev/null +++ b/example/src/RelayEnv.re @@ -0,0 +1,47 @@ +exception Graphql_error(string); + +let fetchQuery: ReasonRelay.Network.fetchFunctionPromise = + (operation, variables, _cacheConfig) => + Fetch.( + fetchWithInit( + "http://localhost:4000", + Fetch.RequestInit.make( + ~method_=Post, + ~body= + Js.Dict.fromList([ + ("query", Js.Json.string(operation##text)), + ("variables", variables), + ]) + |> Js.Json.object_ + |> Js.Json.stringify + |> Fetch.BodyInit.make, + ~headers= + Fetch.HeadersInit.make({ + "content-type": "application/json", + "accept": "application/json", + }), + (), + ), + ) + |> Js.Promise.then_(resp => + if (Response.ok(resp)) { + Response.json(resp); + } else { + Js.Promise.reject( + Graphql_error( + "Request failed: " ++ Response.statusText(resp), + ), + ); + } + ) + ); + +let network = ReasonRelay.Network.makePromiseBased(fetchQuery); + +let makeEnvironment = () => + ReasonRelay.Environment.make( + ~network, + ~store=ReasonRelay.Store.make(ReasonRelay.RecordSource.make()), + ); + +let environment = makeEnvironment(); \ No newline at end of file diff --git a/example/src/ShelfDisplayer.bs.js b/example/src/ShelfDisplayer.bs.js new file mode 100644 index 00000000..c612a62a --- /dev/null +++ b/example/src/ShelfDisplayer.bs.js @@ -0,0 +1,33 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as ShelfDisplayer_shelf_graphql from "./__generated__/ShelfDisplayer_shelf_graphql.bs.js"; + +var UseFragment = ReasonRelay.MakeUseFragment(/* module */[/* fragmentSpec */ShelfDisplayer_shelf_graphql.node]); + +function use(fRef) { + return Curry._1(UseFragment[/* use */0], fRef); +} + +var ShelfFragment = /* module */[ + /* Operation */0, + /* UseFragment */UseFragment, + /* use */use +]; + +function ShelfDisplayer(Props) { + var shelfRef = Props.shelf; + var shelf = Curry._1(UseFragment[/* use */0], shelfRef); + return React.createElement("div", undefined, React.createElement("p", undefined, "on shelf: ", React.createElement("strong", undefined, shelf.name))); +} + +var make = ShelfDisplayer; + +export { + ShelfFragment , + make , + +} +/* UseFragment Not a pure module */ diff --git a/example/src/ShelfDisplayer.re b/example/src/ShelfDisplayer.re new file mode 100644 index 00000000..00766fd6 --- /dev/null +++ b/example/src/ShelfDisplayer.re @@ -0,0 +1,19 @@ +module ShelfFragment = [%relay.fragment + {| + fragment ShelfDisplayer_shelf on Shelf { + name + } + |} +]; + +[@react.component] +let make = (~shelf as shelfRef) => { + let shelf = ShelfFragment.use(shelfRef); + +
+

+ {React.string("on shelf: ")} + {React.string(shelf##name)} +

+
; +}; \ No newline at end of file diff --git a/example/src/ShowForDuration.bs.js b/example/src/ShowForDuration.bs.js new file mode 100644 index 00000000..68d757dd --- /dev/null +++ b/example/src/ShowForDuration.bs.js @@ -0,0 +1,48 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; + +function ShowForDuration(Props) { + var match = Props.duration; + var duration = match !== undefined ? match : 200; + var children = Props.children; + var match$1 = React.useState((function () { + return false; + })); + var setShow = match$1[1]; + var show = match$1[0]; + React.useEffect((function () { + if (show) { + var id = setTimeout((function (param) { + return Curry._1(setShow, (function (param) { + return false; + })); + }), duration); + return (function (param) { + clearTimeout(id); + return /* () */0; + }); + } + + }), /* array */[show]); + React.useEffect((function () { + Curry._1(setShow, (function (param) { + return true; + })); + return undefined; + }), ([])); + if (show) { + return children; + } else { + return null; + } +} + +var make = ShowForDuration; + +export { + make , + +} +/* react Not a pure module */ diff --git a/example/src/ShowForDuration.re b/example/src/ShowForDuration.re new file mode 100644 index 00000000..54b14db0 --- /dev/null +++ b/example/src/ShowForDuration.re @@ -0,0 +1,22 @@ +[@react.component] +let make = (~duration=200, ~children) => { + let (show, setShow) = React.useState(() => false); + + React.useEffect1( + () => + if (show) { + let id = Js.Global.setTimeout(() => setShow(_ => false), duration); + Some(() => Js.Global.clearTimeout(id)); + } else { + None; + }, + [|show|], + ); + + React.useEffect0(() => { + setShow(_ => true); + None; + }); + + show ? children : React.null; +}; \ No newline at end of file diff --git a/example/src/SingleBookDisplayer.bs.js b/example/src/SingleBookDisplayer.bs.js new file mode 100644 index 00000000..f8dacff0 --- /dev/null +++ b/example/src/SingleBookDisplayer.bs.js @@ -0,0 +1,53 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as BookDisplayer from "./BookDisplayer.bs.js"; +import * as SingleBookDisplayerQuery_graphql from "./__generated__/SingleBookDisplayerQuery_graphql.bs.js"; + +var UseQuery = ReasonRelay.MakeUseQuery(/* module */[/* query */SingleBookDisplayerQuery_graphql.node]); + +var use = UseQuery[/* use */0]; + +function $$fetch(environment, variables) { + return ReasonRelay.fetchQuery(environment, SingleBookDisplayerQuery_graphql.node, variables); +} + +var Query = /* module */[ + /* Operation */0, + /* UseQuery */UseQuery, + /* use */use, + /* fetch */$$fetch +]; + +function SingleBookDisplayer(Props) { + var bookId = Props.bookId; + var query = Curry._3(use, { + bookId: bookId + }, /* StoreOrNetwork */2, /* () */0); + if (typeof query === "number") { + return React.createElement("div", undefined, "Loading..."); + } else if (query.tag) { + var match = query[0].book; + if (match == null) { + return React.createElement("div", undefined, "404"); + } else { + return React.createElement(BookDisplayer.make, { + book: match, + allowEditMode: true + }); + } + } else { + return React.createElement("div", undefined, "Error!"); + } +} + +var make = SingleBookDisplayer; + +export { + Query , + make , + +} +/* UseQuery Not a pure module */ diff --git a/example/src/SingleBookDisplayer.re b/example/src/SingleBookDisplayer.re new file mode 100644 index 00000000..7a00157f --- /dev/null +++ b/example/src/SingleBookDisplayer.re @@ -0,0 +1,26 @@ +module Query = [%relay.query + {| + query SingleBookDisplayerQuery($bookId: ID!) { + book(id: $bookId) { + ...BookDisplayer_book + ...BookEditor_book + } + } +|} +]; + +[@react.component] +let make = (~bookId) => { + let query = + Query.use(~variables={"bookId": bookId}, ~dataFrom=StoreOrNetwork, ()); + + switch (query) { + | Loading =>
{React.string("Loading...")}
+ | Error(_) =>
{React.string("Error!")}
+ | Data(data) => + switch (data##book |> Js.Nullable.toOption) { + | Some(book) => + | None =>
{React.string("404")}
+ } + }; +}; \ No newline at end of file diff --git a/example/src/Utils.bs.js b/example/src/Utils.bs.js new file mode 100644 index 00000000..823f78ec --- /dev/null +++ b/example/src/Utils.bs.js @@ -0,0 +1,17 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; + +function toOpt(prim) { + if (prim == null) { + return undefined; + } else { + return Caml_option.some(prim); + } +} + +export { + toOpt , + +} +/* No side effect */ diff --git a/example/src/Utils.re b/example/src/Utils.re new file mode 100644 index 00000000..e319c51d --- /dev/null +++ b/example/src/Utils.re @@ -0,0 +1 @@ +let toOpt = Js.Nullable.toOption; \ No newline at end of file diff --git a/example/src/__generated__/BookDisplayer_book_graphql.bs.js b/example/src/__generated__/BookDisplayer_book_graphql.bs.js new file mode 100644 index 00000000..3e714e15 --- /dev/null +++ b/example/src/__generated__/BookDisplayer_book_graphql.bs.js @@ -0,0 +1,56 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( { + "kind": "Fragment", + "name": "BookDisplayer_book", + "type": "Book", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + { + "kind": "FragmentSpread", + "name": "ShelfDisplayer_shelf", + "args": null + } + ] + }, + { + "kind": "FragmentSpread", + "name": "BookEditor_book", + "args": null + } + ] +} ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/BookDisplayer_book_graphql.re b/example/src/__generated__/BookDisplayer_book_graphql.re new file mode 100644 index 00000000..b6815d60 --- /dev/null +++ b/example/src/__generated__/BookDisplayer_book_graphql.re @@ -0,0 +1,64 @@ +module Unions = {}; +type fragment = { + . + "title": string, + "author": string, + "shelf": { + . + "__$fragment_ref__ShelfDisplayer_shelf": ShelfDisplayer_shelf_graphql.t, + }, + "__$fragment_ref__BookEditor_book": BookEditor_book_graphql.t, +}; + +type t; +type fragmentRef; +type fragmentRefSelector('a) = + {.. "__$fragment_ref__BookDisplayer_book": t} as 'a; +external getFragmentRef: fragmentRefSelector('a) => fragmentRef = "%identity"; + +let node: ReasonRelay.fragmentNode = [%bs.raw + {| { + "kind": "Fragment", + "name": "BookDisplayer_book", + "type": "Book", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + { + "kind": "FragmentSpread", + "name": "ShelfDisplayer_shelf", + "args": null + } + ] + }, + { + "kind": "FragmentSpread", + "name": "BookEditor_book", + "args": null + } + ] +} |} +]; diff --git a/example/src/__generated__/BookEditorDeleteMutation_graphql.bs.js b/example/src/__generated__/BookEditorDeleteMutation_graphql.bs.js new file mode 100644 index 00000000..0be11656 --- /dev/null +++ b/example/src/__generated__/BookEditorDeleteMutation_graphql.bs.js @@ -0,0 +1,72 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "DeleteBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "deleteBook", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } + ], + "concreteType": "DeleteBookPayload", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "deleted", + "args": null, + "storageKey": null + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "BookEditorDeleteMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "BookEditorDeleteMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "params": { + "operationKind": "mutation", + "name": "BookEditorDeleteMutation", + "id": null, + "text": "mutation BookEditorDeleteMutation(\n $input: DeleteBookInput!\n) {\n deleteBook(input: $input) {\n deleted\n }\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/BookEditorDeleteMutation_graphql.re b/example/src/__generated__/BookEditorDeleteMutation_graphql.re new file mode 100644 index 00000000..768ce61c --- /dev/null +++ b/example/src/__generated__/BookEditorDeleteMutation_graphql.re @@ -0,0 +1,71 @@ +module Unions = {}; +type input_DeleteBookInput = { + . + "clientMutationId": option(string), + "id": string, +}; +type variables = {. "input": input_DeleteBookInput}; +type response = {. "deleteBook": {. "deleted": bool}}; + +let node: ReasonRelay.mutationNode = [%bs.raw + {| (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "DeleteBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "deleteBook", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } + ], + "concreteType": "DeleteBookPayload", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "deleted", + "args": null, + "storageKey": null + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "BookEditorDeleteMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "BookEditorDeleteMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "params": { + "operationKind": "mutation", + "name": "BookEditorDeleteMutation", + "id": null, + "text": "mutation BookEditorDeleteMutation(\n $input: DeleteBookInput!\n) {\n deleteBook(input: $input) {\n deleted\n }\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/BookEditorUpdateMutation_graphql.bs.js b/example/src/__generated__/BookEditorUpdateMutation_graphql.bs.js new file mode 100644 index 00000000..13d2061b --- /dev/null +++ b/example/src/__generated__/BookEditorUpdateMutation_graphql.bs.js @@ -0,0 +1,133 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "UpdateBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } +], +v2 = { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null +}, +v3 = { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null +}, +v4 = { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "BookEditorUpdateMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "updateBook", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "UpdateBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + (v4/*: any*/) + ] + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "BookEditorUpdateMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "updateBook", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "UpdateBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + (v4/*: any*/), + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + } + ] + } + ] + } + ] + }, + "params": { + "operationKind": "mutation", + "name": "BookEditorUpdateMutation", + "id": null, + "text": "mutation BookEditorUpdateMutation(\n $input: UpdateBookInput!\n) {\n updateBook(input: $input) {\n book {\n title\n author\n status\n id\n }\n }\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/BookEditorUpdateMutation_graphql.re b/example/src/__generated__/BookEditorUpdateMutation_graphql.re new file mode 100644 index 00000000..dc326bfc --- /dev/null +++ b/example/src/__generated__/BookEditorUpdateMutation_graphql.re @@ -0,0 +1,147 @@ +module Unions = {}; +type input_UpdateBookInput = { + . + "clientMutationId": option(string), + "id": string, + "title": string, + "author": string, + "status": option(SchemaAssets.Enum_BookStatus.wrapped), +}; +type variables = {. "input": input_UpdateBookInput}; +type response = { + . + "updateBook": { + . + "book": + Js.Nullable.t({ + . + "title": string, + "author": string, + "status": Js.Nullable.t(SchemaAssets.Enum_BookStatus.wrapped), + }), + }, +}; + +let node: ReasonRelay.mutationNode = [%bs.raw + {| (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "UpdateBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } +], +v2 = { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null +}, +v3 = { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null +}, +v4 = { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "BookEditorUpdateMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "updateBook", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "UpdateBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + (v4/*: any*/) + ] + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "BookEditorUpdateMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "updateBook", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "UpdateBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + (v4/*: any*/), + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + } + ] + } + ] + } + ] + }, + "params": { + "operationKind": "mutation", + "name": "BookEditorUpdateMutation", + "id": null, + "text": "mutation BookEditorUpdateMutation(\n $input: UpdateBookInput!\n) {\n updateBook(input: $input) {\n book {\n title\n author\n status\n id\n }\n }\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/BookEditor_book_graphql.bs.js b/example/src/__generated__/BookEditor_book_graphql.bs.js new file mode 100644 index 00000000..d0589d99 --- /dev/null +++ b/example/src/__generated__/BookEditor_book_graphql.bs.js @@ -0,0 +1,49 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( { + "kind": "Fragment", + "name": "BookEditor_book", + "type": "Book", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] +} ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/BookEditor_book_graphql.re b/example/src/__generated__/BookEditor_book_graphql.re new file mode 100644 index 00000000..a9d594e4 --- /dev/null +++ b/example/src/__generated__/BookEditor_book_graphql.re @@ -0,0 +1,54 @@ +module Unions = {}; +type fragment = { + . + "id": string, + "title": string, + "author": string, + "status": Js.Nullable.t(SchemaAssets.Enum_BookStatus.wrapped), +}; + +type t; +type fragmentRef; +type fragmentRefSelector('a) = + {.. "__$fragment_ref__BookEditor_book": t} as 'a; +external getFragmentRef: fragmentRefSelector('a) => fragmentRef = "%identity"; + +let node: ReasonRelay.fragmentNode = [%bs.raw + {| { + "kind": "Fragment", + "name": "BookEditor_book", + "type": "Book", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] +} |} +]; diff --git a/example/src/__generated__/BooksOverviewQuery_graphql.bs.js b/example/src/__generated__/BooksOverviewQuery_graphql.bs.js new file mode 100644 index 00000000..f96099ff --- /dev/null +++ b/example/src/__generated__/BooksOverviewQuery_graphql.bs.js @@ -0,0 +1,116 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "BooksOverviewQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v0/*: any*/), + { + "kind": "FragmentSpread", + "name": "BookDisplayer_book", + "args": null + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "BooksOverviewQuery", + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v0/*: any*/), + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + }, + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "name", + "args": null, + "storageKey": null + }, + (v0/*: any*/) + ] + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "BooksOverviewQuery", + "id": null, + "text": "query BooksOverviewQuery {\n books {\n id\n ...BookDisplayer_book\n }\n}\n\nfragment BookDisplayer_book on Book {\n ...BookEditor_book\n title\n author\n shelf {\n ...ShelfDisplayer_shelf\n id\n }\n}\n\nfragment BookEditor_book on Book {\n id\n title\n author\n status\n}\n\nfragment ShelfDisplayer_shelf on Shelf {\n name\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/BooksOverviewQuery_graphql.re b/example/src/__generated__/BooksOverviewQuery_graphql.re new file mode 100644 index 00000000..532bf1b8 --- /dev/null +++ b/example/src/__generated__/BooksOverviewQuery_graphql.re @@ -0,0 +1,118 @@ +module Unions = {}; +type variables = unit; +type response = { + . + "books": + array({ + . + "id": string, + "__$fragment_ref__BookDisplayer_book": BookDisplayer_book_graphql.t, + }), +}; + +let node: ReasonRelay.queryNode = [%bs.raw + {| (function(){ +var v0 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "BooksOverviewQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v0/*: any*/), + { + "kind": "FragmentSpread", + "name": "BookDisplayer_book", + "args": null + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "BooksOverviewQuery", + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v0/*: any*/), + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + }, + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "name", + "args": null, + "storageKey": null + }, + (v0/*: any*/) + ] + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "BooksOverviewQuery", + "id": null, + "text": "query BooksOverviewQuery {\n books {\n id\n ...BookDisplayer_book\n }\n}\n\nfragment BookDisplayer_book on Book {\n ...BookEditor_book\n title\n author\n shelf {\n ...ShelfDisplayer_shelf\n id\n }\n}\n\nfragment BookEditor_book on Book {\n id\n title\n author\n status\n}\n\nfragment ShelfDisplayer_shelf on Shelf {\n name\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/CreateBookViewExistingBookDisplayer_book_graphql.bs.js b/example/src/__generated__/CreateBookViewExistingBookDisplayer_book_graphql.bs.js new file mode 100644 index 00000000..a315c605 --- /dev/null +++ b/example/src/__generated__/CreateBookViewExistingBookDisplayer_book_graphql.bs.js @@ -0,0 +1,35 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( { + "kind": "Fragment", + "name": "CreateBookViewExistingBookDisplayer_book", + "type": "Book", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + } + ] +} ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/CreateBookViewExistingBookDisplayer_book_graphql.re b/example/src/__generated__/CreateBookViewExistingBookDisplayer_book_graphql.re new file mode 100644 index 00000000..68523fda --- /dev/null +++ b/example/src/__generated__/CreateBookViewExistingBookDisplayer_book_graphql.re @@ -0,0 +1,38 @@ +module Unions = {}; +type fragment = { + . + "title": string, + "author": string, +}; + +type t; +type fragmentRef; +type fragmentRefSelector('a) = + {.. "__$fragment_ref__CreateBookViewExistingBookDisplayer_book": t} as 'a; +external getFragmentRef: fragmentRefSelector('a) => fragmentRef = "%identity"; + +let node: ReasonRelay.fragmentNode = [%bs.raw + {| { + "kind": "Fragment", + "name": "CreateBookViewExistingBookDisplayer_book", + "type": "Book", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + } + ] +} |} +]; diff --git a/example/src/__generated__/CreateBookViewMutation_graphql.bs.js b/example/src/__generated__/CreateBookViewMutation_graphql.bs.js new file mode 100644 index 00000000..dd976bb9 --- /dev/null +++ b/example/src/__generated__/CreateBookViewMutation_graphql.bs.js @@ -0,0 +1,157 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "AddBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } +], +v2 = { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null +}, +v3 = { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null +}, +v4 = { + "kind": "ScalarField", + "alias": null, + "name": "name", + "args": null, + "storageKey": null +}, +v5 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "CreateBookViewMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "addBook", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "AddBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + (v4/*: any*/) + ] + } + ] + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "CreateBookViewMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "addBook", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "AddBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + (v4/*: any*/), + (v5/*: any*/) + ] + }, + (v5/*: any*/) + ] + } + ] + } + ] + }, + "params": { + "operationKind": "mutation", + "name": "CreateBookViewMutation", + "id": null, + "text": "mutation CreateBookViewMutation(\n $input: AddBookInput!\n) {\n addBook(input: $input) {\n book {\n title\n author\n shelf {\n name\n id\n }\n id\n }\n }\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/CreateBookViewMutation_graphql.re b/example/src/__generated__/CreateBookViewMutation_graphql.re new file mode 100644 index 00000000..6a2da7de --- /dev/null +++ b/example/src/__generated__/CreateBookViewMutation_graphql.re @@ -0,0 +1,169 @@ +module Unions = {}; +type input_AddBookInput = { + . + "clientMutationId": option(string), + "title": string, + "author": string, +}; +type variables = {. "input": input_AddBookInput}; +type response = { + . + "addBook": { + . + "book": + Js.Nullable.t({ + . + "title": string, + "author": string, + "shelf": {. "name": string}, + }), + }, +}; + +let node: ReasonRelay.mutationNode = [%bs.raw + {| (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "AddBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } +], +v2 = { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null +}, +v3 = { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null +}, +v4 = { + "kind": "ScalarField", + "alias": null, + "name": "name", + "args": null, + "storageKey": null +}, +v5 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "CreateBookViewMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "addBook", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "AddBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + (v4/*: any*/) + ] + } + ] + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "CreateBookViewMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "addBook", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "AddBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + (v4/*: any*/), + (v5/*: any*/) + ] + }, + (v5/*: any*/) + ] + } + ] + } + ] + }, + "params": { + "operationKind": "mutation", + "name": "CreateBookViewMutation", + "id": null, + "text": "mutation CreateBookViewMutation(\n $input: AddBookInput!\n) {\n addBook(input: $input) {\n book {\n title\n author\n shelf {\n name\n id\n }\n id\n }\n }\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/CreateBookViewQuery_graphql.bs.js b/example/src/__generated__/CreateBookViewQuery_graphql.bs.js new file mode 100644 index 00000000..e378c10e --- /dev/null +++ b/example/src/__generated__/CreateBookViewQuery_graphql.bs.js @@ -0,0 +1,86 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "CreateBookViewQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + { + "kind": "FragmentSpread", + "name": "CreateBookViewExistingBookDisplayer_book", + "args": null + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "CreateBookViewQuery", + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "CreateBookViewQuery", + "id": null, + "text": "query CreateBookViewQuery {\n books {\n ...CreateBookViewExistingBookDisplayer_book\n id\n }\n}\n\nfragment CreateBookViewExistingBookDisplayer_book on Book {\n title\n author\n}\n", + "metadata": {} + } +} ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/CreateBookViewQuery_graphql.re b/example/src/__generated__/CreateBookViewQuery_graphql.re new file mode 100644 index 00000000..84559933 --- /dev/null +++ b/example/src/__generated__/CreateBookViewQuery_graphql.re @@ -0,0 +1,87 @@ +module Unions = {}; +type variables = unit; +type response = { + . + "books": + array({ + . + "__$fragment_ref__CreateBookViewExistingBookDisplayer_book": CreateBookViewExistingBookDisplayer_book_graphql.t, + }), +}; + +let node: ReasonRelay.queryNode = [%bs.raw + {| { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "CreateBookViewQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + { + "kind": "FragmentSpread", + "name": "CreateBookViewExistingBookDisplayer_book", + "args": null + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "CreateBookViewQuery", + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "CreateBookViewQuery", + "id": null, + "text": "query CreateBookViewQuery {\n books {\n ...CreateBookViewExistingBookDisplayer_book\n id\n }\n}\n\nfragment CreateBookViewExistingBookDisplayer_book on Book {\n title\n author\n}\n", + "metadata": {} + } +} |} +]; diff --git a/example/src/__generated__/ShelfDisplayer_shelf_graphql.bs.js b/example/src/__generated__/ShelfDisplayer_shelf_graphql.bs.js new file mode 100644 index 00000000..6b60ab2d --- /dev/null +++ b/example/src/__generated__/ShelfDisplayer_shelf_graphql.bs.js @@ -0,0 +1,28 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( { + "kind": "Fragment", + "name": "ShelfDisplayer_shelf", + "type": "Shelf", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "name", + "args": null, + "storageKey": null + } + ] +} ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/ShelfDisplayer_shelf_graphql.re b/example/src/__generated__/ShelfDisplayer_shelf_graphql.re new file mode 100644 index 00000000..e2859224 --- /dev/null +++ b/example/src/__generated__/ShelfDisplayer_shelf_graphql.re @@ -0,0 +1,27 @@ +module Unions = {}; +type fragment = {. "name": string}; + +type t; +type fragmentRef; +type fragmentRefSelector('a) = + {.. "__$fragment_ref__ShelfDisplayer_shelf": t} as 'a; +external getFragmentRef: fragmentRefSelector('a) => fragmentRef = "%identity"; + +let node: ReasonRelay.fragmentNode = [%bs.raw + {| { + "kind": "Fragment", + "name": "ShelfDisplayer_shelf", + "type": "Shelf", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "name", + "args": null, + "storageKey": null + } + ] +} |} +]; diff --git a/example/src/__generated__/SingleBookDisplayerQuery_graphql.bs.js b/example/src/__generated__/SingleBookDisplayerQuery_graphql.bs.js new file mode 100644 index 00000000..6c13e977 --- /dev/null +++ b/example/src/__generated__/SingleBookDisplayerQuery_graphql.bs.js @@ -0,0 +1,135 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "bookId", + "type": "ID!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "Variable", + "name": "id", + "variableName": "bookId" + } +], +v2 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "SingleBookDisplayerQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "Book", + "plural": false, + "selections": [ + { + "kind": "FragmentSpread", + "name": "BookDisplayer_book", + "args": null + }, + { + "kind": "FragmentSpread", + "name": "BookEditor_book", + "args": null + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "SingleBookDisplayerQuery", + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + }, + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "name", + "args": null, + "storageKey": null + }, + (v2/*: any*/) + ] + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "SingleBookDisplayerQuery", + "id": null, + "text": "query SingleBookDisplayerQuery(\n $bookId: ID!\n) {\n book(id: $bookId) {\n ...BookDisplayer_book\n ...BookEditor_book\n id\n }\n}\n\nfragment BookDisplayer_book on Book {\n ...BookEditor_book\n title\n author\n shelf {\n ...ShelfDisplayer_shelf\n id\n }\n}\n\nfragment BookEditor_book on Book {\n id\n title\n author\n status\n}\n\nfragment ShelfDisplayer_shelf on Shelf {\n name\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/SingleBookDisplayerQuery_graphql.re b/example/src/__generated__/SingleBookDisplayerQuery_graphql.re new file mode 100644 index 00000000..122b5b18 --- /dev/null +++ b/example/src/__generated__/SingleBookDisplayerQuery_graphql.re @@ -0,0 +1,137 @@ +module Unions = {}; +type variables = {. "bookId": string}; +type response = { + . + "book": + Js.Nullable.t({ + . + "__$fragment_ref__BookDisplayer_book": BookDisplayer_book_graphql.t, + "__$fragment_ref__BookEditor_book": BookEditor_book_graphql.t, + }), +}; + +let node: ReasonRelay.queryNode = [%bs.raw + {| (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "bookId", + "type": "ID!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "Variable", + "name": "id", + "variableName": "bookId" + } +], +v2 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "SingleBookDisplayerQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "Book", + "plural": false, + "selections": [ + { + "kind": "FragmentSpread", + "name": "BookDisplayer_book", + "args": null + }, + { + "kind": "FragmentSpread", + "name": "BookEditor_book", + "args": null + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "SingleBookDisplayerQuery", + "argumentDefinitions": (v0/*: any*/), + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": (v1/*: any*/), + "concreteType": "Book", + "plural": false, + "selections": [ + (v2/*: any*/), + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + }, + { + "kind": "LinkedField", + "alias": null, + "name": "shelf", + "storageKey": null, + "args": null, + "concreteType": "Shelf", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "name", + "args": null, + "storageKey": null + }, + (v2/*: any*/) + ] + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "SingleBookDisplayerQuery", + "id": null, + "text": "query SingleBookDisplayerQuery(\n $bookId: ID!\n) {\n book(id: $bookId) {\n ...BookDisplayer_book\n ...BookEditor_book\n id\n }\n}\n\nfragment BookDisplayer_book on Book {\n ...BookEditor_book\n title\n author\n shelf {\n ...ShelfDisplayer_shelf\n id\n }\n}\n\nfragment BookEditor_book on Book {\n id\n title\n author\n status\n}\n\nfragment ShelfDisplayer_shelf on Shelf {\n name\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/TestMutationsAddBookMutation_graphql.bs.js b/example/src/__generated__/TestMutationsAddBookMutation_graphql.bs.js new file mode 100644 index 00000000..1f8f3160 --- /dev/null +++ b/example/src/__generated__/TestMutationsAddBookMutation_graphql.bs.js @@ -0,0 +1,104 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "AddBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "addBook", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } + ], + "concreteType": "AddBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestMutationsAddBookMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "TestMutationsAddBookMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "params": { + "operationKind": "mutation", + "name": "TestMutationsAddBookMutation", + "id": null, + "text": "mutation TestMutationsAddBookMutation(\n $input: AddBookInput!\n) {\n addBook(input: $input) {\n book {\n id\n title\n author\n status\n }\n }\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/TestMutationsAddBookMutation_graphql.re b/example/src/__generated__/TestMutationsAddBookMutation_graphql.re new file mode 100644 index 00000000..fad26cf7 --- /dev/null +++ b/example/src/__generated__/TestMutationsAddBookMutation_graphql.re @@ -0,0 +1,117 @@ +module Unions = {}; +type input_AddBookInput = { + . + "clientMutationId": option(string), + "title": string, + "author": string, +}; +type variables = {. "input": input_AddBookInput}; +type response = { + . + "addBook": { + . + "book": + Js.Nullable.t({ + . + "id": string, + "title": string, + "author": string, + "status": Js.Nullable.t(SchemaAssets.Enum_BookStatus.wrapped), + }), + }, +}; + +let node: ReasonRelay.mutationNode = [%bs.raw + {| (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "AddBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "addBook", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } + ], + "concreteType": "AddBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestMutationsAddBookMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "TestMutationsAddBookMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "params": { + "operationKind": "mutation", + "name": "TestMutationsAddBookMutation", + "id": null, + "text": "mutation TestMutationsAddBookMutation(\n $input: AddBookInput!\n) {\n addBook(input: $input) {\n book {\n id\n title\n author\n status\n }\n }\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/TestMutationsDeleteBookMutation_graphql.bs.js b/example/src/__generated__/TestMutationsDeleteBookMutation_graphql.bs.js new file mode 100644 index 00000000..4529fc4c --- /dev/null +++ b/example/src/__generated__/TestMutationsDeleteBookMutation_graphql.bs.js @@ -0,0 +1,104 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "AddBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "addBook", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } + ], + "concreteType": "AddBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestMutationsDeleteBookMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "TestMutationsDeleteBookMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "params": { + "operationKind": "mutation", + "name": "TestMutationsDeleteBookMutation", + "id": null, + "text": "mutation TestMutationsDeleteBookMutation(\n $input: AddBookInput!\n) {\n addBook(input: $input) {\n book {\n id\n title\n author\n status\n }\n }\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/TestMutationsDeleteBookMutation_graphql.re b/example/src/__generated__/TestMutationsDeleteBookMutation_graphql.re new file mode 100644 index 00000000..06de7b7a --- /dev/null +++ b/example/src/__generated__/TestMutationsDeleteBookMutation_graphql.re @@ -0,0 +1,117 @@ +module Unions = {}; +type input_AddBookInput = { + . + "clientMutationId": option(string), + "title": string, + "author": string, +}; +type variables = {. "input": input_AddBookInput}; +type response = { + . + "addBook": { + . + "book": + Js.Nullable.t({ + . + "id": string, + "title": string, + "author": string, + "status": Js.Nullable.t(SchemaAssets.Enum_BookStatus.wrapped), + }), + }, +}; + +let node: ReasonRelay.mutationNode = [%bs.raw + {| (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "AddBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "addBook", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } + ], + "concreteType": "AddBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestMutationsDeleteBookMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "TestMutationsDeleteBookMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "params": { + "operationKind": "mutation", + "name": "TestMutationsDeleteBookMutation", + "id": null, + "text": "mutation TestMutationsDeleteBookMutation(\n $input: AddBookInput!\n) {\n addBook(input: $input) {\n book {\n id\n title\n author\n status\n }\n }\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/TestMutationsQuery_graphql.bs.js b/example/src/__generated__/TestMutationsQuery_graphql.bs.js new file mode 100644 index 00000000..c21ae1ec --- /dev/null +++ b/example/src/__generated__/TestMutationsQuery_graphql.bs.js @@ -0,0 +1,79 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestMutationsQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": [], + "selections": (v0/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "TestMutationsQuery", + "argumentDefinitions": [], + "selections": (v0/*: any*/) + }, + "params": { + "operationKind": "query", + "name": "TestMutationsQuery", + "id": null, + "text": "query TestMutationsQuery {\n books {\n id\n title\n author\n status\n }\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/TestMutationsQuery_graphql.re b/example/src/__generated__/TestMutationsQuery_graphql.re new file mode 100644 index 00000000..775ee31b --- /dev/null +++ b/example/src/__generated__/TestMutationsQuery_graphql.re @@ -0,0 +1,83 @@ +module Unions = {}; +type variables = unit; +type response = { + . + "books": + array({ + . + "id": string, + "title": string, + "author": string, + "status": Js.Nullable.t(SchemaAssets.Enum_BookStatus.wrapped), + }), +}; + +let node: ReasonRelay.queryNode = [%bs.raw + {| (function(){ +var v0 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestMutationsQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": [], + "selections": (v0/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "TestMutationsQuery", + "argumentDefinitions": [], + "selections": (v0/*: any*/) + }, + "params": { + "operationKind": "query", + "name": "TestMutationsQuery", + "id": null, + "text": "query TestMutationsQuery {\n books {\n id\n title\n author\n status\n }\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/TestMutationsUpdateBookMutation_graphql.bs.js b/example/src/__generated__/TestMutationsUpdateBookMutation_graphql.bs.js new file mode 100644 index 00000000..14fab9ef --- /dev/null +++ b/example/src/__generated__/TestMutationsUpdateBookMutation_graphql.bs.js @@ -0,0 +1,104 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "UpdateBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "updateBook", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } + ], + "concreteType": "UpdateBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestMutationsUpdateBookMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "TestMutationsUpdateBookMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "params": { + "operationKind": "mutation", + "name": "TestMutationsUpdateBookMutation", + "id": null, + "text": "mutation TestMutationsUpdateBookMutation(\n $input: UpdateBookInput!\n) {\n updateBook(input: $input) {\n book {\n id\n title\n author\n status\n }\n }\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/TestMutationsUpdateBookMutation_graphql.re b/example/src/__generated__/TestMutationsUpdateBookMutation_graphql.re new file mode 100644 index 00000000..f1f3aa7b --- /dev/null +++ b/example/src/__generated__/TestMutationsUpdateBookMutation_graphql.re @@ -0,0 +1,119 @@ +module Unions = {}; +type input_UpdateBookInput = { + . + "clientMutationId": option(string), + "id": string, + "title": string, + "author": string, + "status": option(SchemaAssets.Enum_BookStatus.wrapped), +}; +type variables = {. "input": input_UpdateBookInput}; +type response = { + . + "updateBook": { + . + "book": + Js.Nullable.t({ + . + "id": string, + "title": string, + "author": string, + "status": Js.Nullable.t(SchemaAssets.Enum_BookStatus.wrapped), + }), + }, +}; + +let node: ReasonRelay.mutationNode = [%bs.raw + {| (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "input", + "type": "UpdateBookInput!", + "defaultValue": null + } +], +v1 = [ + { + "kind": "LinkedField", + "alias": null, + "name": "updateBook", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } + ], + "concreteType": "UpdateBookPayload", + "plural": false, + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "book", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": false, + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null + } + ] + } + ] + } +]; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestMutationsUpdateBookMutation", + "type": "Mutation", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "operation": { + "kind": "Operation", + "name": "TestMutationsUpdateBookMutation", + "argumentDefinitions": (v0/*: any*/), + "selections": (v1/*: any*/) + }, + "params": { + "operationKind": "mutation", + "name": "TestMutationsUpdateBookMutation", + "id": null, + "text": "mutation TestMutationsUpdateBookMutation(\n $input: UpdateBookInput!\n) {\n updateBook(input: $input) {\n book {\n id\n title\n author\n status\n }\n }\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/TestQueryFragmentQuery_graphql.bs.js b/example/src/__generated__/TestQueryFragmentQuery_graphql.bs.js new file mode 100644 index 00000000..d301da98 --- /dev/null +++ b/example/src/__generated__/TestQueryFragmentQuery_graphql.bs.js @@ -0,0 +1,90 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( (function(){ +var v0 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestQueryFragmentQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v0/*: any*/), + { + "kind": "FragmentSpread", + "name": "TestQueryFragment_book", + "args": null + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "TestQueryFragmentQuery", + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v0/*: any*/), + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "TestQueryFragmentQuery", + "id": null, + "text": "query TestQueryFragmentQuery {\n books {\n id\n ...TestQueryFragment_book\n }\n}\n\nfragment TestQueryFragment_book on Book {\n id\n title\n author\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/TestQueryFragmentQuery_graphql.re b/example/src/__generated__/TestQueryFragmentQuery_graphql.re new file mode 100644 index 00000000..86adb8ff --- /dev/null +++ b/example/src/__generated__/TestQueryFragmentQuery_graphql.re @@ -0,0 +1,92 @@ +module Unions = {}; +type variables = unit; +type response = { + . + "books": + array({ + . + "id": string, + "__$fragment_ref__TestQueryFragment_book": TestQueryFragment_book_graphql.t, + }), +}; + +let node: ReasonRelay.queryNode = [%bs.raw + {| (function(){ +var v0 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestQueryFragmentQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v0/*: any*/), + { + "kind": "FragmentSpread", + "name": "TestQueryFragment_book", + "args": null + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "TestQueryFragmentQuery", + "argumentDefinitions": [], + "selections": [ + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v0/*: any*/), + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "TestQueryFragmentQuery", + "id": null, + "text": "query TestQueryFragmentQuery {\n books {\n id\n ...TestQueryFragment_book\n }\n}\n\nfragment TestQueryFragment_book on Book {\n id\n title\n author\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__generated__/TestQueryFragment_book_graphql.bs.js b/example/src/__generated__/TestQueryFragment_book_graphql.bs.js new file mode 100644 index 00000000..7ad55929 --- /dev/null +++ b/example/src/__generated__/TestQueryFragment_book_graphql.bs.js @@ -0,0 +1,42 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +var Unions = /* module */[]; + +var node = ( { + "kind": "Fragment", + "name": "TestQueryFragment_book", + "type": "Book", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + } + ] +} ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/TestQueryFragment_book_graphql.re b/example/src/__generated__/TestQueryFragment_book_graphql.re new file mode 100644 index 00000000..c2cae0f3 --- /dev/null +++ b/example/src/__generated__/TestQueryFragment_book_graphql.re @@ -0,0 +1,46 @@ +module Unions = {}; +type fragment = { + . + "id": string, + "title": string, + "author": string, +}; + +type t; +type fragmentRef; +type fragmentRefSelector('a) = + {.. "__$fragment_ref__TestQueryFragment_book": t} as 'a; +external getFragmentRef: fragmentRefSelector('a) => fragmentRef = "%identity"; + +let node: ReasonRelay.fragmentNode = [%bs.raw + {| { + "kind": "Fragment", + "name": "TestQueryFragment_book", + "type": "Book", + "metadata": null, + "argumentDefinitions": [], + "selections": [ + { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null + }, + { + "kind": "ScalarField", + "alias": null, + "name": "author", + "args": null, + "storageKey": null + } + ] +} |} +]; diff --git a/example/src/__generated__/TestUnionsEnumsQuery_graphql.bs.js b/example/src/__generated__/TestUnionsEnumsQuery_graphql.bs.js new file mode 100644 index 00000000..cbe44dee --- /dev/null +++ b/example/src/__generated__/TestUnionsEnumsQuery_graphql.bs.js @@ -0,0 +1,204 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +function unwrap(wrapped) { + var match = wrapped.__typename; + switch (match) { + case "Book" : + return /* `Book */[ + 737456201, + wrapped + ]; + case "BookCollection" : + return /* `BookCollection */[ + -196012025, + wrapped + ]; + default: + return /* UnmappedUnionMember */809179453; + } +} + +var Union_fromShelf = /* module */[/* unwrap */unwrap]; + +var Unions = /* module */[/* Union_fromShelf */Union_fromShelf]; + +var node = ( (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "bookStatus", + "type": "BookStatus!", + "defaultValue": null + }, + { + "kind": "LocalArgument", + "name": "shelfId", + "type": "ID!", + "defaultValue": null + } +], +v1 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}, +v2 = { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null +}, +v3 = { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null +}, +v4 = [ + (v1/*: any*/), + (v2/*: any*/), + (v3/*: any*/) +], +v5 = { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "status", + "variableName": "bookStatus" + } + ], + "concreteType": "Book", + "plural": true, + "selections": (v4/*: any*/) +}, +v6 = [ + { + "kind": "Variable", + "name": "shelfId", + "variableName": "shelfId" + } +], +v7 = { + "kind": "ScalarField", + "alias": null, + "name": "__typename", + "args": null, + "storageKey": null +}, +v8 = { + "kind": "InlineFragment", + "type": "Book", + "selections": (v4/*: any*/) +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestUnionsEnumsQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": [ + (v5/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "fromShelf", + "storageKey": null, + "args": (v6/*: any*/), + "concreteType": null, + "plural": true, + "selections": [ + (v7/*: any*/), + (v8/*: any*/), + { + "kind": "InlineFragment", + "type": "BookCollection", + "selections": [ + (v1/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v2/*: any*/), + (v3/*: any*/) + ] + } + ] + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "TestUnionsEnumsQuery", + "argumentDefinitions": (v0/*: any*/), + "selections": [ + (v5/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "fromShelf", + "storageKey": null, + "args": (v6/*: any*/), + "concreteType": null, + "plural": true, + "selections": [ + (v7/*: any*/), + (v8/*: any*/), + { + "kind": "InlineFragment", + "type": "BookCollection", + "selections": [ + (v1/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + (v1/*: any*/) + ] + } + ] + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "TestUnionsEnumsQuery", + "id": null, + "text": "query TestUnionsEnumsQuery(\n $bookStatus: BookStatus!\n $shelfId: ID!\n) {\n books(status: $bookStatus) {\n id\n title\n status\n }\n fromShelf(shelfId: $shelfId) {\n __typename\n ... on Book {\n id\n title\n status\n }\n ... on BookCollection {\n id\n books {\n title\n status\n id\n }\n }\n }\n}\n", + "metadata": {} + } +}; +})() ); + +export { + Unions , + node , + +} +/* node Not a pure module */ diff --git a/example/src/__generated__/TestUnionsEnumsQuery_graphql.re b/example/src/__generated__/TestUnionsEnumsQuery_graphql.re new file mode 100644 index 00000000..8483fd6a --- /dev/null +++ b/example/src/__generated__/TestUnionsEnumsQuery_graphql.re @@ -0,0 +1,237 @@ +module Unions = { + module Union_fromShelf = { + type wrapped; + + external __unwrap_union: wrapped => {. "__typename": string} = + "%identity"; + type type_Book = { + . + "id": string, + "title": string, + "status": Js.Nullable.t(SchemaAssets.Enum_BookStatus.wrapped), + }; + type type_BookCollection = { + . + "id": string, + "books": + Js.Nullable.t( + array({ + . + "title": string, + "status": Js.Nullable.t(SchemaAssets.Enum_BookStatus.wrapped), + }), + ), + }; + external __unwrap_Book: wrapped => type_Book = "%identity"; + external __unwrap_BookCollection: wrapped => type_BookCollection = + "%identity"; + + type t = [ + | `Book(type_Book) + | `BookCollection(type_BookCollection) + | `UnmappedUnionMember + ]; + + let unwrap = wrapped => { + let unwrappedUnion = wrapped |> __unwrap_union; + switch (unwrappedUnion##__typename) { + | "Book" => `Book(wrapped |> __unwrap_Book) + | "BookCollection" => + `BookCollection(wrapped |> __unwrap_BookCollection) + | _ => `UnmappedUnionMember + }; + }; + }; +}; +open Unions; +type variables = { + . + "bookStatus": SchemaAssets.Enum_BookStatus.wrapped, + "shelfId": string, +}; +type response = { + . + "books": + array({ + . + "id": string, + "title": string, + "status": Js.Nullable.t(SchemaAssets.Enum_BookStatus.wrapped), + }), + "fromShelf": Js.Nullable.t(array(Union_fromShelf.wrapped)), +}; + +let node: ReasonRelay.queryNode = [%bs.raw + {| (function(){ +var v0 = [ + { + "kind": "LocalArgument", + "name": "bookStatus", + "type": "BookStatus!", + "defaultValue": null + }, + { + "kind": "LocalArgument", + "name": "shelfId", + "type": "ID!", + "defaultValue": null + } +], +v1 = { + "kind": "ScalarField", + "alias": null, + "name": "id", + "args": null, + "storageKey": null +}, +v2 = { + "kind": "ScalarField", + "alias": null, + "name": "title", + "args": null, + "storageKey": null +}, +v3 = { + "kind": "ScalarField", + "alias": null, + "name": "status", + "args": null, + "storageKey": null +}, +v4 = [ + (v1/*: any*/), + (v2/*: any*/), + (v3/*: any*/) +], +v5 = { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": [ + { + "kind": "Variable", + "name": "status", + "variableName": "bookStatus" + } + ], + "concreteType": "Book", + "plural": true, + "selections": (v4/*: any*/) +}, +v6 = [ + { + "kind": "Variable", + "name": "shelfId", + "variableName": "shelfId" + } +], +v7 = { + "kind": "ScalarField", + "alias": null, + "name": "__typename", + "args": null, + "storageKey": null +}, +v8 = { + "kind": "InlineFragment", + "type": "Book", + "selections": (v4/*: any*/) +}; +return { + "kind": "Request", + "fragment": { + "kind": "Fragment", + "name": "TestUnionsEnumsQuery", + "type": "Query", + "metadata": null, + "argumentDefinitions": (v0/*: any*/), + "selections": [ + (v5/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "fromShelf", + "storageKey": null, + "args": (v6/*: any*/), + "concreteType": null, + "plural": true, + "selections": [ + (v7/*: any*/), + (v8/*: any*/), + { + "kind": "InlineFragment", + "type": "BookCollection", + "selections": [ + (v1/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v2/*: any*/), + (v3/*: any*/) + ] + } + ] + } + ] + } + ] + }, + "operation": { + "kind": "Operation", + "name": "TestUnionsEnumsQuery", + "argumentDefinitions": (v0/*: any*/), + "selections": [ + (v5/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "fromShelf", + "storageKey": null, + "args": (v6/*: any*/), + "concreteType": null, + "plural": true, + "selections": [ + (v7/*: any*/), + (v8/*: any*/), + { + "kind": "InlineFragment", + "type": "BookCollection", + "selections": [ + (v1/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "books", + "storageKey": null, + "args": null, + "concreteType": "Book", + "plural": true, + "selections": [ + (v2/*: any*/), + (v3/*: any*/), + (v1/*: any*/) + ] + } + ] + } + ] + } + ] + }, + "params": { + "operationKind": "query", + "name": "TestUnionsEnumsQuery", + "id": null, + "text": "query TestUnionsEnumsQuery(\n $bookStatus: BookStatus!\n $shelfId: ID!\n) {\n books(status: $bookStatus) {\n id\n title\n status\n }\n fromShelf(shelfId: $shelfId) {\n __typename\n ... on Book {\n id\n title\n status\n }\n ... on BookCollection {\n id\n books {\n title\n status\n id\n }\n }\n }\n}\n", + "metadata": {} + } +}; +})() |} +]; diff --git a/example/src/__reasonRelayGenerated__/SchemaAssets.bs.js b/example/src/__reasonRelayGenerated__/SchemaAssets.bs.js new file mode 100644 index 00000000..58537281 --- /dev/null +++ b/example/src/__reasonRelayGenerated__/SchemaAssets.bs.js @@ -0,0 +1,69 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + + +function unwrap(wrapped) { + switch (wrapped) { + case "Discontinued" : + return /* Discontinued */293760815; + case "Draft" : + return /* Draft */-219956991; + case "Published" : + return /* Published */-358147186; + default: + return /* FUTURE_ADDED_VALUE__ */-769308010; + } +} + +function wrap(t) { + if (t >= -219956991) { + if (t >= 293760815) { + return "Discontinued"; + } else { + return "Draft"; + } + } else if (t >= -358147186) { + return "Published"; + } else { + return ""; + } +} + +var Enum_BookStatus = /* module */[ + /* unwrap */unwrap, + /* wrap */wrap +]; + +function unwrap$1(wrapped) { + switch (wrapped) { + case "PRIVATE" : + return /* PRIVATE */155386083; + case "PUBLIC" : + return /* PUBLIC */427175081; + default: + return /* FUTURE_ADDED_VALUE__ */-769308010; + } +} + +function wrap$1(t) { + if (t !== 155386083) { + if (t >= 427175081) { + return "PUBLIC"; + } else { + return ""; + } + } else { + return "PRIVATE"; + } +} + +var Enum_CacheControlScope = /* module */[ + /* unwrap */unwrap$1, + /* wrap */wrap$1 +]; + +export { + Enum_BookStatus , + Enum_CacheControlScope , + +} +/* No side effect */ diff --git a/example/src/__reasonRelayGenerated__/SchemaAssets.re b/example/src/__reasonRelayGenerated__/SchemaAssets.re new file mode 100644 index 00000000..b3de9fa4 --- /dev/null +++ b/example/src/__reasonRelayGenerated__/SchemaAssets.re @@ -0,0 +1,66 @@ +/** This file is autogenerated by ReasonRelay and should not be modified manually. */ +/** + * ENUMS + * Helpers for wrapping/unwrapping enums. + */ +module Enum_BookStatus: { + type t = [ | `Draft | `Published | `Discontinued | `FUTURE_ADDED_VALUE__]; + type wrapped; + let unwrap: wrapped => t; + let wrap: t => wrapped; +} = { + type t = [ | `Draft | `Published | `Discontinued | `FUTURE_ADDED_VALUE__]; + type wrapped; + + external __unwrap: wrapped => string = "%identity"; + external __wrap: string => wrapped = "%identity"; + + let unwrap = wrapped => + switch (wrapped |> __unwrap) { + | "Draft" => `Draft + | "Published" => `Published + | "Discontinued" => `Discontinued + | _ => `FUTURE_ADDED_VALUE__ + }; + + let wrap = t => + ( + switch (t) { + | `Draft => "Draft" + | `Published => "Published" + | `Discontinued => "Discontinued" + | `FUTURE_ADDED_VALUE__ => "" + } + ) + |> __wrap; +}; + +module Enum_CacheControlScope: { + type t = [ | `PUBLIC | `PRIVATE | `FUTURE_ADDED_VALUE__]; + type wrapped; + let unwrap: wrapped => t; + let wrap: t => wrapped; +} = { + type t = [ | `PUBLIC | `PRIVATE | `FUTURE_ADDED_VALUE__]; + type wrapped; + + external __unwrap: wrapped => string = "%identity"; + external __wrap: string => wrapped = "%identity"; + + let unwrap = wrapped => + switch (wrapped |> __unwrap) { + | "PUBLIC" => `PUBLIC + | "PRIVATE" => `PRIVATE + | _ => `FUTURE_ADDED_VALUE__ + }; + + let wrap = t => + ( + switch (t) { + | `PUBLIC => "PUBLIC" + | `PRIVATE => "PRIVATE" + | `FUTURE_ADDED_VALUE__ => "" + } + ) + |> __wrap; +}; diff --git a/example/src/index.html b/example/src/index.html new file mode 100755 index 00000000..5c043b32 --- /dev/null +++ b/example/src/index.html @@ -0,0 +1,10 @@ + + + + + ReasonReact Examples + + +
+ + diff --git a/example/src/testViews/testMutations/TestMutations.bs.js b/example/src/testViews/testMutations/TestMutations.bs.js new file mode 100644 index 00000000..ecafc0c6 --- /dev/null +++ b/example/src/testViews/testMutations/TestMutations.bs.js @@ -0,0 +1,149 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as $$Array from "bs-platform/lib/es6/array.js"; +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as Js_null_undefined from "bs-platform/lib/es6/js_null_undefined.js"; +import * as TestMutationsQuery_graphql from "../../__generated__/TestMutationsQuery_graphql.bs.js"; +import * as TestMutationsAddBookMutation_graphql from "../../__generated__/TestMutationsAddBookMutation_graphql.bs.js"; +import * as TestMutationsDeleteBookMutation_graphql from "../../__generated__/TestMutationsDeleteBookMutation_graphql.bs.js"; +import * as TestMutationsUpdateBookMutation_graphql from "../../__generated__/TestMutationsUpdateBookMutation_graphql.bs.js"; + +var Mutation = ReasonRelay.MakeCommitMutation(/* module */[/* node */TestMutationsAddBookMutation_graphql.node]); + +var UseMutation = ReasonRelay.MakeUseMutation(/* module */[/* node */TestMutationsAddBookMutation_graphql.node]); + +var use = UseMutation[/* use */0]; + +var commitMutation = Mutation[/* commitMutation */0]; + +var AddMutation = /* module */[ + /* Operation */0, + /* Mutation */Mutation, + /* UseMutation */UseMutation, + /* use */use, + /* commitMutation */commitMutation +]; + +var Mutation$1 = ReasonRelay.MakeCommitMutation(/* module */[/* node */TestMutationsUpdateBookMutation_graphql.node]); + +var UseMutation$1 = ReasonRelay.MakeUseMutation(/* module */[/* node */TestMutationsUpdateBookMutation_graphql.node]); + +var use$1 = UseMutation$1[/* use */0]; + +var commitMutation$1 = Mutation$1[/* commitMutation */0]; + +var UpdateMutation = /* module */[ + /* Operation */0, + /* Mutation */Mutation$1, + /* UseMutation */UseMutation$1, + /* use */use$1, + /* commitMutation */commitMutation$1 +]; + +var Mutation$2 = ReasonRelay.MakeCommitMutation(/* module */[/* node */TestMutationsDeleteBookMutation_graphql.node]); + +var UseMutation$2 = ReasonRelay.MakeUseMutation(/* module */[/* node */TestMutationsDeleteBookMutation_graphql.node]); + +var use$2 = UseMutation$2[/* use */0]; + +var commitMutation$2 = Mutation$2[/* commitMutation */0]; + +var DeleteMutation = /* module */[ + /* Operation */0, + /* Mutation */Mutation$2, + /* UseMutation */UseMutation$2, + /* use */use$2, + /* commitMutation */commitMutation$2 +]; + +var UseQuery = ReasonRelay.MakeUseQuery(/* module */[/* query */TestMutationsQuery_graphql.node]); + +var use$3 = UseQuery[/* use */0]; + +function $$fetch(environment, variables) { + return ReasonRelay.fetchQuery(environment, TestMutationsQuery_graphql.node, variables); +} + +var Query = /* module */[ + /* Operation */0, + /* UseQuery */UseQuery, + /* use */use$3, + /* fetch */$$fetch +]; + +function TestMutations(Props) { + var environment = ReasonRelay.useEnvironmentFromContext(/* () */0); + var query = Curry._3(use$3, /* () */0, undefined, /* () */0); + var match = Curry._1(use$1, /* () */0); + var updateBook = match[0]; + var tmp; + tmp = typeof query === "number" || !query.tag ? null : $$Array.map((function (book) { + return React.createElement("div", { + key: book.id + }, React.createElement("p", undefined, book.title), React.createElement("p", undefined, book.author), React.createElement("button", { + type: "button", + onClick: (function (param) { + Curry._5(updateBook, { + input: { + clientMutationId: undefined, + id: book.id, + author: "New author", + title: book.title, + status: Caml_option.nullable_to_opt(book.status) + } + }, { + updateBook: { + book: Js_null_undefined.fromOption({ + id: book.id, + title: book.title, + author: "New author", + status: book.status + }) + } + }, undefined, undefined, /* () */0); + return /* () */0; + }) + }, "Update " + (book.title + " optimistic"))); + }), query[0].books); + return React.createElement(React.Fragment, undefined, tmp, typeof match[1] === "number" ? React.createElement("p", undefined, "Doing mutation...") : null, React.createElement("button", { + onClick: (function (param) { + Curry._6(commitMutation, environment, { + input: { + clientMutationId: undefined, + title: "New book", + author: "Some author" + } + }, undefined, undefined, (function (store) { + var mutationRes = ReasonRelay.RecordSourceSelectorProxy[/* getRootField */4]("addBook", store); + var rootNode = ReasonRelay.RecordSourceSelectorProxy[/* getRoot */3](store); + var rootBooks = ReasonRelay.RecordProxy[/* getLinkedRecords */3]("books", undefined, rootNode); + var addedBook = mutationRes !== undefined ? ReasonRelay.RecordProxy[/* getLinkedRecord */2]("book", undefined, Caml_option.valFromOption(mutationRes)) : undefined; + if (rootBooks !== undefined) { + if (addedBook !== undefined) { + ReasonRelay.RecordProxy[/* setLinkedRecords */11]($$Array.append(rootBooks, /* array */[Caml_option.some(Caml_option.valFromOption(addedBook))]), "books", undefined, rootNode); + } + + } else if (addedBook !== undefined) { + ReasonRelay.RecordProxy[/* setLinkedRecords */11](/* array */[Caml_option.some(Caml_option.valFromOption(addedBook))], "books", undefined, rootNode); + } + return /* () */0; + }), /* () */0); + return /* () */0; + }) + }, "Add book by Commit mutation")); +} + +var make = TestMutations; + +export { + AddMutation , + UpdateMutation , + DeleteMutation , + Query , + make , + +} +/* Mutation Not a pure module */ diff --git a/example/src/testViews/testMutations/TestMutations.re b/example/src/testViews/testMutations/TestMutations.re new file mode 100644 index 00000000..5bbe8d1d --- /dev/null +++ b/example/src/testViews/testMutations/TestMutations.re @@ -0,0 +1,191 @@ +/** + * This file demonstrates mutations, both using the standard + * commitMutation and using hooks. + * + * It also demonstrates optimistic updates (the "provide-your-response" + * kind) and a semi-complex update of the store after a mutation (adding + * the added book to an existing lists of books). + */ +module AddMutation = [%relay.mutation + {| + mutation TestMutationsAddBookMutation($input: AddBookInput!) { + addBook(input: $input) { + book { + id + title + author + status + } + } + } +|} +]; + +module UpdateMutation = [%relay.mutation + {| + mutation TestMutationsUpdateBookMutation($input: UpdateBookInput!) { + updateBook(input: $input) { + book { + id + title + author + status + } + } + } +|} +]; + +module DeleteMutation = [%relay.mutation + {| + mutation TestMutationsDeleteBookMutation($input: AddBookInput!) { + addBook(input: $input) { + book { + id + title + author + status + } + } + } +|} +]; + +module Query = [%relay.query + {| + query TestMutationsQuery { + books { + id + title + author + status + } + } +|} +]; + +[@react.component] +let make = () => { + let environment = ReasonRelay.useEnvironmentFromContext(); + let query = Query.use(~variables=(), ()); + let (updateBook, updateBookStatus) = UpdateMutation.use(); + + <> + {switch (query) { + | Loading + | Error(_) => React.null + | Data(data) => + data##books + |> Array.map(book => +
+

{React.string(book##title)}

+

{React.string(book##author)}

+ +
+ ) + |> React.array + }} + {switch (updateBookStatus) { + | Loading =>

{React.string("Doing mutation...")}

+ | _ => React.null + }} + + ; +}; \ No newline at end of file diff --git a/example/src/testViews/testMutations/__tests__/TestMutations-tests.js b/example/src/testViews/testMutations/__tests__/TestMutations-tests.js new file mode 100644 index 00000000..43f91f4a --- /dev/null +++ b/example/src/testViews/testMutations/__tests__/TestMutations-tests.js @@ -0,0 +1,142 @@ +import * as React from 'react'; +import { make as TestMutations } from '../TestMutations.bs'; +import { act } from 'react-dom/test-utils'; +import { QueryMock } from 'graphql-query-test-mock'; +import { + render, + fireEvent, + cleanup, + waitForElement +} from '@testing-library/react'; +import { makeEnvironment } from '../../../RelayEnv.bs'; +import { make as EnvironmentProvider } from '../../../EnvironmentProvider.bs'; + +global.fetch = require('node-fetch'); + +let queryMock; + +beforeEach(() => { + queryMock = new QueryMock(); + queryMock.setup('http://localhost:4000'); +}); + +afterEach(() => { + queryMock.cleanup(); + queryMock.reset(); + cleanup(); +}); + +describe('TestMutations', () => { + test('commitMutation', async () => { + queryMock.mockQuery({ + name: 'TestMutationsAddBookMutation', + data: { + addBook: { + book: { + id: 'book-3', + title: 'New book', + author: 'Some author', + status: 'Published' + } + } + }, + variables: { + input: { + title: 'New book', + author: 'Some author' + } + } + }); + + queryMock.mockQuery({ + name: 'TestMutationsQuery', + data: { + books: [ + { + id: 'book-1', + title: 'Some book', + author: 'Some author', + status: 'Published' + } + ] + } + }); + + let r; + + act(() => { + r = render( + + + + ); + }); + + await waitForElement(() => r.getByText('Some book')); + + act(() => { + fireEvent.click(r.getByText('Add book by Commit mutation')); + }); + + await waitForElement(() => r.getByText('New book')); + }); + + test('optimistic updates and hook', async () => { + queryMock.mockQuery({ + name: 'TestMutationsQuery', + data: { + books: [ + { + id: 'book-1', + title: 'Some book', + author: 'Some author', + status: 'Published' + } + ] + } + }); + + let r; + + act(() => { + r = render( + + + + ); + }); + + await waitForElement(() => r.getByText('Some book')); + + const resolveQuery = queryMock.mockQueryWithControlledResolution({ + name: 'TestMutationsUpdateBookMutation', + data: { + updateBook: { + book: { + id: 'book-1', + title: 'Some book', + author: 'New author', + status: 'Published' + } + } + }, + variables: { + input: { + id: 'book-1', + title: 'Some book', + author: 'New author', + status: 'Published' + } + } + }); + + + fireEvent.click(r.getByText('Update Some book optimistic')); + + + await waitForElement(() => r.getByText('New author')); + await waitForElement(() => r.getByText('Doing mutation...')); + + resolveQuery(); + }); +}); diff --git a/example/src/testViews/testQueryFragment/TestQueryFragment.bs.js b/example/src/testViews/testQueryFragment/TestQueryFragment.bs.js new file mode 100644 index 00000000..b7c0b928 --- /dev/null +++ b/example/src/testViews/testQueryFragment/TestQueryFragment.bs.js @@ -0,0 +1,104 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as $$Array from "bs-platform/lib/es6/array.js"; +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as Caml_option from "bs-platform/lib/es6/caml_option.js"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as TestQueryFragmentQuery_graphql from "../../__generated__/TestQueryFragmentQuery_graphql.bs.js"; +import * as TestQueryFragment_book_graphql from "../../__generated__/TestQueryFragment_book_graphql.bs.js"; + +var UseQuery = ReasonRelay.MakeUseQuery(/* module */[/* query */TestQueryFragmentQuery_graphql.node]); + +var use = UseQuery[/* use */0]; + +function $$fetch(environment, variables) { + return ReasonRelay.fetchQuery(environment, TestQueryFragmentQuery_graphql.node, variables); +} + +var Query = /* module */[ + /* Operation */0, + /* UseQuery */UseQuery, + /* use */use, + /* fetch */$$fetch +]; + +var UseFragment = ReasonRelay.MakeUseFragment(/* module */[/* fragmentSpec */TestQueryFragment_book_graphql.node]); + +function use$1(fRef) { + return Curry._1(UseFragment[/* use */0], fRef); +} + +var Fragment = /* module */[ + /* Operation */0, + /* UseFragment */UseFragment, + /* use */use$1 +]; + +function TestQueryFragment$BookViewer(Props) { + var bookRef = Props.book; + var book = Curry._1(UseFragment[/* use */0], bookRef); + var environment = ReasonRelay.useEnvironmentFromContext(/* () */0); + var match = React.useState((function () { + return "New Title"; + })); + var setTitle = match[1]; + var title = match[0]; + return React.createElement("div", undefined, React.createElement("h1", undefined, book.title), React.createElement("p", undefined, book.author), React.createElement("p", undefined, React.createElement("input", { + placeholder: book.title + " title", + type: "text", + value: title, + onChange: (function (e) { + return Curry._1(setTitle, (function (param) { + return e.currentTarget.value; + })); + }) + }), React.createElement("button", { + onClick: (function (param) { + return ReasonRelay.commitLocalUpdate(environment, (function (store) { + var bookNode = ReasonRelay.RecordSourceSelectorProxy[/* get */2](ReasonRelay.makeDataId(book.id), store); + if (bookNode !== undefined) { + var bookNode$1 = Caml_option.valFromOption(bookNode); + var currentTitle = ReasonRelay.RecordProxy[/* getValueString */6]("title", undefined, bookNode$1); + if (currentTitle !== undefined) { + ReasonRelay.RecordProxy[/* setValueString */12](currentTitle + (" " + title), "title", undefined, bookNode$1); + return /* () */0; + } else { + return /* () */0; + } + } else { + return /* () */0; + } + })); + }) + }, "Update " + (book.title + " locally")))); +} + +var BookViewer = /* module */[/* make */TestQueryFragment$BookViewer]; + +function TestQueryFragment(Props) { + var query = Curry._3(use, /* () */0, undefined, /* () */0); + if (typeof query === "number") { + return React.createElement("p", undefined, "Loading..."); + } else if (query.tag) { + return $$Array.map((function (book) { + return React.createElement(TestQueryFragment$BookViewer, { + book: book, + key: book.id + }); + }), query[0].books); + } else { + return React.createElement("p", undefined, "Error"); + } +} + +var make = TestQueryFragment; + +export { + Query , + Fragment , + BookViewer , + make , + +} +/* UseQuery Not a pure module */ diff --git a/example/src/testViews/testQueryFragment/TestQueryFragment.re b/example/src/testViews/testQueryFragment/TestQueryFragment.re new file mode 100644 index 00000000..a40637c7 --- /dev/null +++ b/example/src/testViews/testQueryFragment/TestQueryFragment.re @@ -0,0 +1,107 @@ +/** + * This file shows: + 1. Using queries as hooks + 2. Using fragments + 3. Making local updates to the store + */ +module Query = [%relay.query + {| + query TestQueryFragmentQuery { + books { + id + ...TestQueryFragment_book + } + } +|} +]; + +module Fragment = [%relay.fragment + {| + fragment TestQueryFragment_book on Book { + id + title + author + } +|} +]; + +module BookViewer = { + [@react.component] + let make = (~book as bookRef) => { + let book = Fragment.use(bookRef); + let environment = ReasonRelay.useEnvironmentFromContext(); + let (title, setTitle) = React.useState(() => "New Title"); + +
+

{book##title |> React.string}

+

{book##author |> React.string}

+

+ + setTitle(_ => ReactEvent.Form.currentTarget(e)##value) + } + placeholder={book##title ++ " title"} + /> + /*** + * This demonstrates updating the store locally only, without doing an actual mutation. + * + */ + +

+
; + }; +}; + +[@react.component] +let make = () => { + let query = Query.use(~variables=(), ()); + + switch (query) { + | Loading =>

{React.string("Loading...")}

+ | Error(_) =>

{React.string("Error")}

+ | Data(res) => + res##books + |> Array.map(book => ) + |> React.array + }; +}; \ No newline at end of file diff --git a/example/src/testViews/testQueryFragment/__tests__/TestQueryFragment-tests.js b/example/src/testViews/testQueryFragment/__tests__/TestQueryFragment-tests.js new file mode 100644 index 00000000..e136253c --- /dev/null +++ b/example/src/testViews/testQueryFragment/__tests__/TestQueryFragment-tests.js @@ -0,0 +1,100 @@ +import * as React from 'react'; +import { make as TestQueryFragment } from '../TestQueryFragment.bs'; +import { act } from 'react-dom/test-utils'; +import { QueryMock } from 'graphql-query-test-mock'; +import { + render, + fireEvent, + cleanup, + waitForElement +} from '@testing-library/react'; +import { makeEnvironment } from '../../../RelayEnv.bs'; +import { make as EnvironmentProvider } from '../../../EnvironmentProvider.bs'; + +global.fetch = require('node-fetch'); + +let queryMock; + +beforeEach(() => { + queryMock = new QueryMock(); + queryMock.setup('http://localhost:4000'); +}); + +afterEach(() => { + queryMock.cleanup(); + queryMock.reset(); + cleanup(); +}); + +describe('TestQueryFragment', () => { + describe('query and fragment', () => { + test('query and fragment', async () => { + const resolveQuery = queryMock.mockQueryWithControlledResolution({ + name: 'TestQueryFragmentQuery', + data: { + books: [ + { + id: 'book-1', + title: 'First Book', + author: 'First Author' + }, + { + id: 'book-2', + title: 'Second Book', + author: 'Second Author' + } + ] + } + }); + let r; + + act(() => { + r = render( + + + + ); + }); + + await waitForElement(() => r.getByText('Loading...')); + + resolveQuery(); + + await waitForElement(() => r.getByText('First Book')); + await waitForElement(() => r.getByText('First Author')); + }); + + test('commitLocalUpdate', async () => { + queryMock.mockQuery({ + name: 'TestQueryFragmentQuery', + data: { + books: [ + { + id: 'book-1', + title: 'First Book', + author: 'First Author' + } + ] + } + }); + + let r; + + act(() => { + r = render( + + + + ); + }); + + await waitForElement(() => r.getByText('First Book')); + + act(() => { + fireEvent.click(r.getByText('Update First Book locally')); + }); + + expect(r.getByText('First Book New Title')).toBeTruthy(); + }); + }); +}); diff --git a/example/src/testViews/testUnionsEnums/TestUnionsEnums.bs.js b/example/src/testViews/testUnionsEnums/TestUnionsEnums.bs.js new file mode 100644 index 00000000..dc1514f9 --- /dev/null +++ b/example/src/testViews/testUnionsEnums/TestUnionsEnums.bs.js @@ -0,0 +1,84 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE + +import * as $$Array from "bs-platform/lib/es6/array.js"; +import * as Curry from "bs-platform/lib/es6/curry.js"; +import * as React from "react"; +import * as Belt_Option from "bs-platform/lib/es6/belt_Option.js"; +import * as ReasonRelay from "reason-relay/src/ReasonRelay.bs.js"; +import * as SchemaAssets from "../../__reasonRelayGenerated__/SchemaAssets.bs.js"; +import * as TestUnionsEnumsQuery_graphql from "../../__generated__/TestUnionsEnumsQuery_graphql.bs.js"; + +var UseQuery = ReasonRelay.MakeUseQuery(/* module */[/* query */TestUnionsEnumsQuery_graphql.node]); + +var use = UseQuery[/* use */0]; + +function $$fetch(environment, variables) { + return ReasonRelay.fetchQuery(environment, TestUnionsEnumsQuery_graphql.node, variables); +} + +var Query_001 = /* Union_fromShelf */TestUnionsEnumsQuery_graphql.Unions[0]; + +var Query = /* module */[ + /* Operation */0, + Query_001, + /* UseQuery */UseQuery, + /* use */use, + /* fetch */$$fetch +]; + +function TestUnionsEnums(Props) { + var query = Curry._3(use, { + shelfId: "123", + bookStatus: SchemaAssets.Enum_BookStatus[/* wrap */1](/* Discontinued */293760815) + }, undefined, /* () */0); + if (typeof query === "number") { + return "Loading..."; + } else if (query.tag) { + var data = query[0]; + var match = data.fromShelf; + return React.createElement("div", undefined, React.createElement("h2", undefined, "Books"), $$Array.mapi((function (index, book) { + var match = book.status; + var tmp; + if (match == null) { + tmp = ""; + } else { + var match$1 = SchemaAssets.Enum_BookStatus[/* unwrap */0](match); + tmp = match$1 >= -219956991 ? ( + match$1 >= 293760815 ? "Not used anymore" : "Undergoing work" + ) : ( + match$1 >= -358147186 ? "Here!" : "" + ); + } + return React.createElement("div", { + key: String(index) + }, book.title, React.createElement("div", undefined, tmp)); + }), data.books), React.createElement("h2", undefined, "From shelf"), (match == null) ? null : $$Array.mapi((function (index, item) { + var match = Curry._1(TestUnionsEnumsQuery_graphql.Unions[/* Union_fromShelf */0][/* unwrap */0], item); + var tmp; + if (typeof match === "number") { + tmp = React.createElement("p", undefined, "Unknown..."); + } else if (match[0] >= 737456201) { + tmp = React.createElement("p", undefined, React.createElement("strong", undefined, "Book: " + match[1].title)); + } else { + var match$1 = match[1].books; + tmp = React.createElement("p", undefined, React.createElement("strong", undefined, "Collection size: " + String(( + (match$1 == null) ? /* array */[] : match$1 + ).length))); + } + return React.createElement("div", { + key: String(index) + }, tmp); + }), match)); + } else { + return "Error!" + Belt_Option.getWithDefault(query[0].message, ""); + } +} + +var make = TestUnionsEnums; + +export { + Query , + make , + +} +/* UseQuery Not a pure module */ diff --git a/example/src/testViews/testUnionsEnums/TestUnionsEnums.re b/example/src/testViews/testUnionsEnums/TestUnionsEnums.re new file mode 100644 index 00000000..4644c7eb --- /dev/null +++ b/example/src/testViews/testUnionsEnums/TestUnionsEnums.re @@ -0,0 +1,114 @@ +module Query = [%relay.query + {| + query TestUnionsEnumsQuery($bookStatus: BookStatus!, $shelfId: ID!) { + books(status: $bookStatus) { + id + title + status + } + + fromShelf(shelfId: $shelfId) { + __typename + ... on Book { + id + title + status + } + + ... on BookCollection { + id + books { + title + status + } + } + } + } +|} +]; + +[@react.component] +let make = () => { + let query = + Query.use( + ~variables={ + "shelfId": "123", + "bookStatus": SchemaAssets.Enum_BookStatus.wrap(`Discontinued), + }, + (), + ); + + switch (query) { + | Loading => React.string("Loading...") + | Error(error) => + React.string( + "Error!" ++ Belt.Option.getWithDefault(Js.Exn.message(error), ""), + ) + | Data(data) => +
+

{React.string("Books")}

+ {data##books + |> Array.mapi((index, book) => +
+ {React.string(book##title)} +
+ {React.string( + switch (book##status |> Js.Nullable.toOption) { + | Some(status) => + switch (status |> SchemaAssets.Enum_BookStatus.unwrap) { + | `Discontinued => "Not used anymore" + | `Draft => "Undergoing work" + | `Published => "Here!" + | `FUTURE_ADDED_VALUE__ => "" + } + | None => "" + }, + )} +
+
+ ) + |> React.array} +

{React.string("From shelf")}

+ {switch (data##fromShelf |> Js.Nullable.toOption) { + | Some(fromShelf) => + fromShelf + |> Array.mapi((index, item) => +
+ {switch (item |> Query.Union_fromShelf.unwrap) { + | `Book(book) => +

+ + {React.string("Book: " ++ book##title)} + +

+ | `BookCollection(bookCollection) => +

+ + {React.string( + "Collection size: " + ++ string_of_int( + Array.length( + switch ( + bookCollection##books + |> Js.Nullable.toOption + ) { + | Some(books) => books + | None => [||] + }, + ), + ), + )} + +

+ | `UnmappedUnionMember => +

{React.string("Unknown...")}

+ }} +
+ ) + |> React.array + + | None => React.null + }} +
+ }; +}; \ No newline at end of file diff --git a/example/src/testViews/testUnionsEnums/__tests__/TestUnionsEnums-tests.js b/example/src/testViews/testUnionsEnums/__tests__/TestUnionsEnums-tests.js new file mode 100644 index 00000000..83962e45 --- /dev/null +++ b/example/src/testViews/testUnionsEnums/__tests__/TestUnionsEnums-tests.js @@ -0,0 +1,105 @@ +import * as React from 'react'; +import { make as TestUnionsEnums } from '../TestUnionsEnums.bs'; +import { act } from 'react-dom/test-utils'; +import { QueryMock } from 'graphql-query-test-mock'; +import { + render, + fireEvent, + cleanup, + waitForElement +} from '@testing-library/react'; +import { makeEnvironment } from '../../../RelayEnv.bs'; +import { make as EnvironmentProvider } from '../../../EnvironmentProvider.bs'; + +global.fetch = require('node-fetch'); + +let queryMock; + +beforeEach(() => { + queryMock = new QueryMock(); + queryMock.setup('http://localhost:4000'); +}); + +afterEach(() => { + queryMock.cleanup(); + queryMock.reset(); + cleanup(); +}); + +describe('TestUnionsEnums', () => { + test('enums', async () => { + queryMock.mockQuery({ + name: 'TestUnionsEnumsQuery', + variables: { bookStatus: 'Discontinued', shelfId: '123' }, + data: { + books: [ + { + id: 'book-1', + title: 'First Book', + status: 'Discontinued' + }, + { + id: 'book-2', + title: 'Second Book', + status: 'Published' + } + ], + fromShelf: null + } + }); + let r; + + act(() => { + r = render( + + + + ); + }); + + await waitForElement(() => r.getByText('Not used anymore')); + await waitForElement(() => r.getByText('Here!')); + }); + + test('union', async () => { + queryMock.mockQuery({ + name: 'TestUnionsEnumsQuery', + variables: { bookStatus: 'Discontinued', shelfId: '123' }, + data: { + books: [], + fromShelf: [ + { + __typename: 'BookCollection', + id: 'BookCollection-1', + books: [ + { + id: 'book-1', + title: 'First Book', + status: 'Discontinued' + } + ] + }, + { + __typename: 'Book', + id: 'book-1', + title: 'First Book', + status: 'Discontinued' + } + ] + } + }); + + let r; + + act(() => { + r = render( + + + + ); + }); + + await waitForElement(() => r.getByText('Book: First Book')); + await waitForElement(() => r.getByText('Collection size: 1')); + }); +}); diff --git a/example/webpack.config.js b/example/webpack.config.js new file mode 100755 index 00000000..19043b16 --- /dev/null +++ b/example/webpack.config.js @@ -0,0 +1,32 @@ +const path = require('path'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const outputDir = path.join(__dirname, 'build/'); + +const isProd = process.env.NODE_ENV === 'production'; + +module.exports = { + entry: './src/Index.bs.js', + mode: isProd ? 'production' : 'development', + output: { + path: outputDir, + filename: 'Index.js', + publicPath: '/' + }, + resolve: { + alias: { + react: path.resolve('./node_modules/react'), + 'react-dom': path.resolve('./node_modules/react-dom') + } + }, + plugins: [ + new HtmlWebpackPlugin({ + template: 'src/index.html' + }) + ], + devServer: { + compress: true, + contentBase: outputDir, + port: process.env.PORT || 8000, + historyApiFallback: true + } +}; diff --git a/example/yarn.lock b/example/yarn.lock new file mode 100755 index 00000000..dcd47e54 --- /dev/null +++ b/example/yarn.lock @@ -0,0 +1,7502 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.0.0": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" + integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helpers" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.5" + "@babel/types" "^7.4.4" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.5.4": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.4.tgz#4c32df7ad5a58e9ea27ad025c11276324e0b4ddd" + integrity sha512-+DaeBEpYq6b2+ZmHx3tHspC+ZRflrvLqwfv8E3hNr5LVQoyBnL8RPKSBCg+rK2W2My9PWlujBiqd0ZPsR9Q6zQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/helpers" "^7.5.4" + "@babel/parser" "^7.5.0" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.0" + "@babel/types" "^7.5.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.0.0", "@babel/generator@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" + integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== + dependencies: + "@babel/types" "^7.4.4" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.4.0", "@babel/generator@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.0.tgz#f20e4b7a91750ee8b63656073d843d2a736dca4a" + integrity sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA== + dependencies: + "@babel/types" "^7.5.0" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-builder-react-jsx@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" + integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== + dependencies: + "@babel/types" "^7.3.0" + esutils "^2.0.0" + +"@babel/helper-call-delegate@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" + integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-create-class-features-plugin@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba" + integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + +"@babel/helper-define-map@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" + integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" + integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" + integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" + integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== + dependencies: + lodash "^4.17.11" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" + integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" + integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helpers@^7.5.4": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.5.4.tgz#2f00608aa10d460bde0ccf665d6dcf8477357cf0" + integrity sha512-6LJ6xwUEJP51w0sIgKyfvFMJvIb9mWAfohJp0+m6eHJigkFdcH8duZ1sfhn0ltJRzwUIT/yqqhdSfRpCpL7oow== + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.0" + "@babel/types" "^7.5.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" + integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.0.tgz#3e0713dff89ad6ae37faec3b29dcfc5c979770b7" + integrity sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA== + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce" + integrity sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-dynamic-import@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" + integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" + integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.5.4": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.4.tgz#250de35d867ce8260a31b1fdac6c4fc1baa99331" + integrity sha512-KCx0z3y7y8ipZUMAEEJOyNi11lMb/FOPUjjB113tfowgw0c16EGYos7worCKBcUAh2oG+OBnoUhsnTSoLpV9uA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" + integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz#23b3b7b9bcdabd73672a9149f728cd3be6214812" + integrity sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" + integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" + integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" + integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.11" + +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" + integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" + integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" + integrity sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-transform-duplicate-keys@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" + integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" + integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" + integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" + integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" + integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-commonjs@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" + integrity sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ== + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" + integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" + integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== + dependencies: + regexp-tree "^0.1.6" + +"@babel/plugin-transform-new-target@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" + integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== + dependencies: + "@babel/helper-call-delegate" "^7.4.4" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" + integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" + integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" + integrity sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" + integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== + dependencies: + "@babel/helper-builder-react-jsx" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-regenerator@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== + dependencies: + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-reserved-words@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" + integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" + integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" + integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/polyfill@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.4.4.tgz#78801cf3dbe657844eeabf31c1cae3828051e893" + integrity sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + +"@babel/preset-env@^7.5.4": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.5.4.tgz#64bc15041a3cbb0798930319917e70fcca57713d" + integrity sha512-hFnFnouyRNiH1rL8YkX1ANCNAUVC8Djwdqfev8i1415tnAG+7hlA5zhZ0Q/3Q5gkop4HioIPbCEWAalqcbxRoQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-dynamic-import" "^7.5.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.5.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.5.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.4.4" + "@babel/plugin-transform-classes" "^7.4.4" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.5.0" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/plugin-transform-duplicate-keys" "^7.5.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.4.4" + "@babel/plugin-transform-function-name" "^7.4.4" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-member-expression-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.5.0" + "@babel/plugin-transform-modules-commonjs" "^7.5.0" + "@babel/plugin-transform-modules-systemjs" "^7.5.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" + "@babel/plugin-transform-new-target" "^7.4.4" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.4.4" + "@babel/plugin-transform-property-literals" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.4.5" + "@babel/plugin-transform-reserved-words" "^7.2.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.4.4" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.4.4" + "@babel/types" "^7.5.0" + browserslist "^4.6.0" + core-js-compat "^3.1.1" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.5.0" + +"@babel/preset-react@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + +"@babel/runtime@^7.0.0": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" + integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.4.5": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.4.tgz#cb7d1ad7c6d65676e66b47186577930465b5271b" + integrity sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" + integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/types" "^7.4.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485" + integrity sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.5.0" + "@babel/types" "^7.5.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" + integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@babel/types@^7.2.0", "@babel/types@^7.4.0", "@babel/types@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.0.tgz#e47d43840c2e7f9105bc4d3a2c371b4d0c7832ab" + integrity sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" + integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@jest/console@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" + integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== + dependencies: + "@jest/source-map" "^24.3.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" + integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.8.0" + jest-config "^24.8.0" + jest-haste-map "^24.8.0" + jest-message-util "^24.8.0" + jest-regex-util "^24.3.0" + jest-resolve-dependencies "^24.8.0" + jest-runner "^24.8.0" + jest-runtime "^24.8.0" + jest-snapshot "^24.8.0" + jest-util "^24.8.0" + jest-validate "^24.8.0" + jest-watcher "^24.8.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + pirates "^4.0.1" + realpath-native "^1.1.0" + rimraf "^2.5.4" + strip-ansi "^5.0.0" + +"@jest/environment@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac" + integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw== + dependencies: + "@jest/fake-timers" "^24.8.0" + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + jest-mock "^24.8.0" + +"@jest/fake-timers@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1" + integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw== + dependencies: + "@jest/types" "^24.8.0" + jest-message-util "^24.8.0" + jest-mock "^24.8.0" + +"@jest/reporters@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" + integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw== + dependencies: + "@jest/environment" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.1.1" + jest-haste-map "^24.8.0" + jest-resolve "^24.8.0" + jest-runtime "^24.8.0" + jest-util "^24.8.0" + jest-worker "^24.6.0" + node-notifier "^5.2.1" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0": + version "24.3.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" + integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" + integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng== + dependencies: + "@jest/console" "^24.7.1" + "@jest/types" "^24.8.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" + integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg== + dependencies: + "@jest/test-result" "^24.8.0" + jest-haste-map "^24.8.0" + jest-runner "^24.8.0" + jest-runtime "^24.8.0" + +"@jest/transform@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5" + integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.8.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.8.0" + jest-regex-util "^24.3.0" + jest-util "^24.8.0" + micromatch "^3.1.10" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad" + integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^12.0.9" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@restart/hooks@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.3.1.tgz#bcc0ee82500bb2ac5849c3c3384d520a196cb7a0" + integrity sha512-kjGGlli8iTe5TFDw6qHZJ5QK1naITMveIO+o8yQJJqwX8VIkiQzLddK98Lduga2krJMzWlNqDR/4isGLiyBlUA== + +"@sheerun/mutationobserver-shim@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" + integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q== + +"@testing-library/dom@^5.0.0": + version "5.5.3" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-5.5.3.tgz#e601362fb2c5b194836c2d6851a35075b086fb68" + integrity sha512-qHgb8vU3KjOO4GXkRdi70dpINNGRN6w3eyXDUZzScBthLFmVBoO5iFQvtlK2DiViTefKDeFwIQqJ7nxHmr/8lA== + dependencies: + "@babel/runtime" "^7.4.5" + "@sheerun/mutationobserver-shim" "^0.3.2" + aria-query "3.0.0" + pretty-format "^24.8.0" + wait-for-expect "^1.2.0" + +"@testing-library/react@^8.0.4": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-8.0.4.tgz#6ed405ba88b625ec53d7cfa78c038a950bafc1fa" + integrity sha512-omm4D00Z0aMaWfPRRP4X6zIaOVb0Kf1Yc1H5VE4id9D0pQRiBcTtmjbN0kZgT8rQGxHhVAuv1NuwFwMTwKzFqg== + dependencies: + "@babel/runtime" "^7.4.5" + "@testing-library/dom" "^5.0.0" + +"@types/babel__core@^7.1.0": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.2.tgz#608c74f55928033fce18b99b213c16be4b3d114f" + integrity sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" + integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.7.tgz#2496e9ff56196cc1429c72034e07eab6121b6f3f" + integrity sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" + integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "12.0.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.10.tgz#51babf9c7deadd5343620055fc8aff7995c8b031" + integrity sha512-LcsGbPomWsad6wmMNv7nBLw7YYYyfdYcz6xryKYQhx89c3XXan+8Q6AJ43G5XDIaklaVkK3mE4fCb0SBvMiPSQ== + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/yargs@^12.0.2", "@types/yargs@^12.0.9": + version "12.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" + integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-dynamic-import@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== + +acorn-globals@^4.1.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" + integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +acorn@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3" + integrity sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw== + +acorn@^6.0.5: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" + integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" + integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== + +ajv@^6.1.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" + integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.5.5: + version "6.10.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593" + integrity sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +aria-query@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + +async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +babel-jest@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" + integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== + dependencies: + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.6.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^5.1.0: + version "5.1.4" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz#841d16b9a58eeb407a0ddce622ba02fe87a752ba" + integrity sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ== + dependencies: + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" + integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-preset-fbjs@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.2.0.tgz#c0e6347d3e0379ed84b3c2434d3467567aa05297" + integrity sha512-5Jo+JeWiVz2wHUUyAlvb/sSYnXNig9r+HqGAOSfh5Fzxp7SnAaR/tEGRJ1ZX7C77kfk82658w6R5Z+uPATTD9g== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +babel-preset-jest@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" + integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.6.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +bluebird@^3.5.5: + version "3.5.5" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" + integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.6.0, browserslist@^4.6.2: + version "4.6.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.4.tgz#fd0638b3f8867fec2c604ed0ed9300379f8ec7c2" + integrity sha512-ErJT8qGfRt/VWHSr1HeqZzz50DvxHtr1fVL1m5wf20aGrG8e1ce8fpZ2EjZEfs09DDZYSvtRaDlMpWslBf8Low== + dependencies: + caniuse-lite "^1.0.30000981" + electron-to-chromium "^1.3.188" + node-releases "^1.1.25" + +bs-fetch@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/bs-fetch/-/bs-fetch-0.5.0.tgz#6913b1d1ddfa0b0a4b832357854e9763d61d4b28" + integrity sha512-cGjwRpyNcIaX+p2ssy/38zs7BM/miKNgmOR3NEhxKFete5mR05JcvjuV4raG89oGCG281SU1b56TTAKmf9VCug== + +bs-platform@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-6.0.3.tgz#cb401aa4dadbf063dd4a183921195ef3c16d7b11" + integrity sha512-zptjWiSaioLVbEq0n3LPwfn1nyY3qt8fXzdI1O+yj6a6sBKmtT2kcx9oXJZl/cuLUnVumXKpb5ksTsYztbJPUg== + +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^11.3.2: + version "11.3.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" + integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30000981: + version "1.0.30000983" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000983.tgz#ab3c70061ca2a3467182a10ac75109b199b647f8" + integrity sha512-/llD1bZ6qwNkt41AsvjsmwNOoA4ZB+8iqmf5LVyeSXuBODT/hAMFNVOh84NdUzoiYiSKqo5vQ3ZzeYHSi/olDQ== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chai@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +chokidar@^2.0.2, chokidar@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" + integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +chrome-trace-event@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.2.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + dependencies: + source-map "~0.6.0" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@2.17.x: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@^2.11.0, commander@^2.19.0, commander@~2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.17" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" + integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + dependencies: + mime-db ">= 1.40.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.1.0, convert-source-map@^1.4.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.1.1: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.4.tgz#e4d0c40fbd01e65b1d457980fe4112d4358a7408" + integrity sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg== + dependencies: + browserslist "^4.6.2" + core-js-pure "3.1.4" + semver "^6.1.1" + +core-js-pure@3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.4.tgz#5fa17dc77002a169a3566cc48dc774d2e13e3769" + integrity sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA== + +core-js@^2.4.1, core-js@^2.6.5: + version "2.6.9" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +"cssom@>= 0.3.2 < 0.4.0", cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.3.0.tgz#c36c466f7037fd30f03baa271b65f0f17b50585c" + integrity sha512-wXsoRfsRfsLVNaVzoKdqvEmK/5PFaEXNspVT22Ots6K/cnJdpoDKuQFw+qlMiXnmaif1OgeC466X1zISgAOcGg== + dependencies: + cssom "~0.3.6" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.5, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-equal@^1.0.0, deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +diff-sequences@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" + integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== + +diff@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.188: + version "1.3.190" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.190.tgz#5bf599519983bfffd9d4387817039a3ed7ca085f" + integrity sha512-cs9WnTnGBGnYYVFMCtLmr9jXNTOkdp95RLz5VhwzDn7dErg1Lnt9o4d01gEH69XlmRKWUr91Yu1hA+Hi8qW0PA== + +elliptic@^6.0.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.5.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.9.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" + integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-scope@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" + integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +expect@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d" + integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA== + dependencies: + "@jest/types" "^24.8.0" + ansi-styles "^3.2.0" + jest-get-type "^24.8.0" + jest-matcher-utils "^24.8.0" + jest-message-util "^24.8.0" + jest-regex-util "^24.3.0" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-glob@^2.2.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + dependencies: + bser "^2.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" + integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== + dependencies: + core-js "^2.4.1" + fbjs-css-vars "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" + integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ== + dependencies: + debug "^3.2.6" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-minipass@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + dependencies: + minipass "^2.2.1" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +graphql-query-test-mock@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/graphql-query-test-mock/-/graphql-query-test-mock-0.11.1.tgz#6858386a7fa7b16df1eb511830eb694fa072b8a1" + integrity sha512-P6BV53T/Dx94F54LglHgY6jqsOEtnF/lim4/9oZ830iznsMTNHlb1ivI5kJDJEgxHPsRVZJLrVi76xHmVExw3A== + dependencies: + deep-equal "^1.0.1" + graphql "14.1.1" + jest-diff "^23.6.0" + object-hash "^1.3.1" + +graphql@14.1.1, graphql@14.3.1, graphql@^14.3.1: + version "14.3.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.3.1.tgz#b3aa50e61a841ada3c1f9ccda101c483f8e8c807" + integrity sha512-FZm7kAa3FqKdXy8YSSpAoTtyDFMIYSpCDOr+3EqlI1bxmtHu+Vv/I2vrSeT1sBOEnEniX3uo4wFhFdS/8XN6gA== + dependencies: + iterall "^1.2.2" + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + +handlebars@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" + integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + +html-minifier@^3.2.3: + version "3.5.21" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-webpack-plugin@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2, http-errors@~1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-proxy-middleware@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +immutable@~3.7.6: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +interpret@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.0, ipaddr.js@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-path-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c" + integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.1.1: + version "2.2.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" + integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== + dependencies: + handlebars "^4.1.2" + +iterall@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" + integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== + +jest-changed-files@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" + integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug== + dependencies: + "@jest/types" "^24.8.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" + integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA== + dependencies: + "@jest/core" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.8.0" + jest-util "^24.8.0" + jest-validate "^24.8.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^12.0.2" + +jest-config@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f" + integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.8.0" + "@jest/types" "^24.8.0" + babel-jest "^24.8.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.8.0" + jest-environment-node "^24.8.0" + jest-get-type "^24.8.0" + jest-jasmine2 "^24.8.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.8.0" + jest-util "^24.8.0" + jest-validate "^24.8.0" + micromatch "^3.1.10" + pretty-format "^24.8.0" + realpath-native "^1.1.0" + +jest-diff@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" + integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g== + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" + +jest-diff@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" + integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.3.0" + jest-get-type "^24.8.0" + pretty-format "^24.8.0" + +jest-docblock@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" + integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg== + dependencies: + detect-newline "^2.1.0" + +jest-dom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jest-dom/-/jest-dom-4.0.0.tgz#94eba3cbc6576e7bd6821867c92d176de28920eb" + integrity sha512-gBxYZlZB1Jgvf2gP2pRfjjUWF8woGBHj/g5rAQgFPB/0K2atGuhVcPO+BItyjWeKg9zM+dokgcMOH01vrWVMFA== + +jest-each@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775" + integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA== + dependencies: + "@jest/types" "^24.8.0" + chalk "^2.0.1" + jest-get-type "^24.8.0" + jest-util "^24.8.0" + pretty-format "^24.8.0" + +jest-environment-jsdom@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857" + integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ== + dependencies: + "@jest/environment" "^24.8.0" + "@jest/fake-timers" "^24.8.0" + "@jest/types" "^24.8.0" + jest-mock "^24.8.0" + jest-util "^24.8.0" + jsdom "^11.5.1" + +jest-environment-node@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231" + integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q== + dependencies: + "@jest/environment" "^24.8.0" + "@jest/fake-timers" "^24.8.0" + "@jest/types" "^24.8.0" + jest-mock "^24.8.0" + jest-util "^24.8.0" + +jest-get-type@^22.1.0: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== + +jest-get-type@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" + integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== + +jest-haste-map@^24.8.0: + version "24.8.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.1.tgz#f39cc1d2b1d907e014165b4bd5a957afcb992982" + integrity sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g== + dependencies: + "@jest/types" "^24.8.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.4.0" + jest-util "^24.8.0" + jest-worker "^24.6.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" + integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.8.0" + is-generator-fn "^2.0.0" + jest-each "^24.8.0" + jest-matcher-utils "^24.8.0" + jest-message-util "^24.8.0" + jest-runtime "^24.8.0" + jest-snapshot "^24.8.0" + jest-util "^24.8.0" + pretty-format "^24.8.0" + throat "^4.0.0" + +jest-leak-detector@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980" + integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g== + dependencies: + pretty-format "^24.8.0" + +jest-matcher-utils@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" + integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw== + dependencies: + chalk "^2.0.1" + jest-diff "^24.8.0" + jest-get-type "^24.8.0" + pretty-format "^24.8.0" + +jest-message-util@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b" + integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" + integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A== + dependencies: + "@jest/types" "^24.8.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" + integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== + +jest-resolve-dependencies@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" + integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw== + dependencies: + "@jest/types" "^24.8.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.8.0" + +jest-resolve@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" + integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== + dependencies: + "@jest/types" "^24.8.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb" + integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.8.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.8.0" + jest-jasmine2 "^24.8.0" + jest-leak-detector "^24.8.0" + jest-message-util "^24.8.0" + jest-resolve "^24.8.0" + jest-runtime "^24.8.0" + jest-util "^24.8.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620" + integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.8.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/yargs" "^12.0.2" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.8.0" + jest-haste-map "^24.8.0" + jest-message-util "^24.8.0" + jest-mock "^24.8.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.8.0" + jest-snapshot "^24.8.0" + jest-util "^24.8.0" + jest-validate "^24.8.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^12.0.2" + +jest-serializer@^24.4.0: + version "24.4.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" + integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== + +jest-snapshot@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" + integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.8.0" + chalk "^2.0.1" + expect "^24.8.0" + jest-diff "^24.8.0" + jest-matcher-utils "^24.8.0" + jest-message-util "^24.8.0" + jest-resolve "^24.8.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.8.0" + semver "^5.5.0" + +jest-util@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" + integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA== + dependencies: + "@jest/console" "^24.7.1" + "@jest/fake-timers" "^24.8.0" + "@jest/source-map" "^24.3.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" + integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA== + dependencies: + "@jest/types" "^24.8.0" + camelcase "^5.0.0" + chalk "^2.0.1" + jest-get-type "^24.8.0" + leven "^2.1.0" + pretty-format "^24.8.0" + +jest-watcher@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4" + integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw== + dependencies: + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/yargs" "^12.0.9" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.8.0" + string-length "^2.0.0" + +jest-worker@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" + integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== + dependencies: + merge-stream "^1.0.1" + supports-color "^6.1.0" + +jest@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081" + integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg== + dependencies: + import-local "^2.0.0" + jest-cli "^24.8.0" + +js-levenshtein@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +kleur@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash@^4.17.11, lodash@^4.17.3: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +lodash@^4.17.5: + version "4.17.14" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" + integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== + +loglevel@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" + integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= + dependencies: + readable-stream "^2.0.1" + +merge2@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" + integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": + version "1.40.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.24" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + dependencies: + mime-db "1.40.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.2: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.1, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.2.1, minipass@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +nock@^10.0.6: + version "10.0.6" + resolved "https://registry.yarnpkg.com/nock/-/nock-10.0.6.tgz#e6d90ee7a68b8cfc2ab7f6127e7d99aa7d13d111" + integrity sha512-b47OWj1qf/LqSQYnmokNWM8D88KvUl2y7jT0567NB3ZBAZFz2bWp2PC81Xn7u8F2/vJxzkzNZybnemeFa7AZ2w== + dependencies: + chai "^4.1.2" + debug "^4.1.0" + deep-equal "^1.0.0" + json-stringify-safe "^5.0.1" + lodash "^4.17.5" + mkdirp "^0.5.0" + propagate "^1.0.0" + qs "^6.5.1" + semver "^5.5.0" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-fetch@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +node-forge@0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.2.1: + version "5.4.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" + integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-releases@^1.1.25: + version "1.1.25" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.25.tgz#0c2d7dbc7fed30fbe02a9ee3007b8c90bf0133d3" + integrity sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ== + dependencies: + semver "^5.3.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: + version "1.4.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" + integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nullthrows@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.0.7: + version "2.1.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" + integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== + +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" + integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.10" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" + integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.4" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" + integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +portfinder@^1.0.20: + version "1.0.20" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" + integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prettier@^1.17.0: + version "1.18.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" + integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" + integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +pretty-format@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" + integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== + dependencies: + "@jest/types" "^24.8.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +private@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db" + integrity sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg== + dependencies: + kleur "^3.0.2" + sisteransi "^1.0.0" + +prop-types@^15.6.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +propagate@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/propagate/-/propagate-1.0.0.tgz#00c2daeedda20e87e3782b344adba1cddd6ad709" + integrity sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk= + +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24, psl@^1.1.28: + version "1.2.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6" + integrity sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.7.0, qs@^6.5.1: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dom@16.8.6, react-dom@>=16.8.1: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" + integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.13.6" + +react-is@^16.8.1, react-is@^16.8.4: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" + integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + +react-relay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-relay/-/react-relay-5.0.0.tgz#66af68e8e5fad05879a3f21f895a0296ef2741a8" + integrity sha512-gpUvedaCaPVPT0nMrTbev2TzrU0atgq2j/zAnGHiR9WgqRXwtHsK6FWFN65HRbopO2DzuJx9VZ2I3VO6uL5EMA== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^1.0.0" + nullthrows "^1.1.0" + relay-runtime "5.0.0" + +react@16.8.6, react@>=16.8.1: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" + integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.13.6" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +reason-react@>=0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/reason-react/-/reason-react-0.7.0.tgz#46a975c321e81cd51310d7b1a02418ca7667b0d6" + integrity sha512-czR/f0lY5iyLCki9gwftOFF5Zs40l7ZSFmpGK/Z6hx2jBVeFDmIiXB8bAQW/cO6IvtuEt97OmsYueiuOYG9XjQ== + dependencies: + react ">=16.8.1" + react-dom ">=16.8.1" + +regenerate-unicode-properties@^8.0.2: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + +regenerator-transform@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" + integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w== + dependencies: + private "^0.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp-tree@^0.1.6: + version "0.1.11" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.11.tgz#c9c7f00fcf722e0a56c7390983a7a63dd6c272f3" + integrity sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg== + +regexpu-core@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" + integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.0.2" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" + +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +relay-compiler@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-5.0.0.tgz#ca2514bda20ff829550ac87f126d07a1517bf6de" + integrity sha512-q8gKlPRTJe/TwtIokbdXehy1SxDFIyLBZdsfg60J4OcqyviIx++Vhc+h4lXzBY8LsBVaJjTuolftYcXJLhlE6g== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/polyfill" "^7.0.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.1.2" + chalk "^2.4.1" + fast-glob "^2.2.2" + fb-watchman "^2.0.0" + fbjs "^1.0.0" + immutable "~3.7.6" + nullthrows "^1.1.0" + relay-runtime "5.0.0" + signedsource "^1.0.0" + yargs "^9.0.0" + +relay-hooks@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/relay-hooks/-/relay-hooks-1.2.1.tgz#dee6bfadfaa983646e224c9c421df73aec5bfbde" + integrity sha512-A0dxfiXWXIqtey3u+JXd/lNLPX5j18L/BQdlEIfJ2P1doj7zsybJ8c16dX976rgCMBZaoduxzqlUf/a9UV+5cg== + dependencies: + "@restart/hooks" "^0.3.1" + +relay-runtime@5.0.0, relay-runtime@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-5.0.0.tgz#7c688ee621d6106a2cd9f3a3706eb6d717c7f660" + integrity sha512-lrC2CwfpWWHBAN608eENAt5Bc5zqXXE2O9HSo8tc6Gy5TxfK+fU+x9jdwXQ2mXxVPgANYtYeKzU5UTfcX0aDEw== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^1.0.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== + dependencies: + lodash "^4.17.11" + +request-promise-native@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + dependencies: + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@^1.10.0, resolve@^1.3.2: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" + integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== + dependencies: + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.2, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@^0.13.6: + version "0.13.6" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" + integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" + integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== + dependencies: + node-forge "0.7.5" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +semver@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" + integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== + +semver@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" + integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" + integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +signedsource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" + integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= + +sisteransi@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.2.tgz#ec57d64b6f25c4f26c0e2c7dd23f2d7f12f7e418" + integrity sha512-ZcYcZcT69nSLAR2oLN2JwNmLkJEKGooFMCdvOkFrToUt/WfcRWqhIg4P4KwY4dmLbuyXIx4o4YmPsvMRJYJd/w== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" + integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.6, source-map-support@~0.5.10: + version "0.5.12" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" + integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" + integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tapable@^1.0.0, tapable@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^4: + version "4.4.10" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.5" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +terser-webpack-plugin@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4" + integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg== + dependencies: + cacache "^11.3.2" + find-cache-dir "^2.0.0" + is-wsl "^1.1.0" + loader-utils "^1.2.3" + schema-utils "^1.0.0" + serialize-javascript "^1.7.0" + source-map "^0.6.1" + terser "^4.0.0" + webpack-sources "^1.3.0" + worker-farm "^1.7.0" + +terser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.0.0.tgz#ef356f6f359a963e2cc675517f21c1c382877374" + integrity sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA== + dependencies: + commander "^2.19.0" + source-map "~0.6.1" + source-map-support "~0.5.10" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== + +timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== + dependencies: + setimmediate "^1.0.4" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + +tough-cookie@^2.3.3, tough-cookie@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +tslib@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +ua-parser-js@^0.7.18: + version "0.7.20" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" + integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +uglify-js@^3.1.4: + version "3.6.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" + integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== + dependencies: + commander "~2.20.0" + source-map "~0.6.1" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" + integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" + integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0, util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.1, uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +v8-compile-cache@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" + integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== + +w3c-hr-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + dependencies: + browser-process-hrtime "^0.1.2" + +wait-for-expect@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-1.2.0.tgz#fdab6a26e87d2039101db88bff3d8158e5c3e13f" + integrity sha512-EJhKpA+5UHixduMBEGhTFuLuVgQBKWxkFbefOdj2bbk2/OpA5Opsc4aUTGmF+qJ+v3kTGxDRNYwKaT4j6g5n8Q== + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-cli@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.4.tgz#de27e281c48a897b8c219cb093e261d5f6afe44a" + integrity sha512-ubJGQEKMtBSpT+LiL5hXvn2GIOWiRWItR1DGUqJRhwRBeGhpRXjvF5f0erqdRJLErkfqS5/Ldkkedh4AL5Q1ZQ== + dependencies: + chalk "^2.4.1" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.0" + findup-sync "^2.0.0" + global-modules "^1.0.0" + import-local "^2.0.0" + interpret "^1.1.0" + loader-utils "^1.1.0" + prettier "^1.17.0" + supports-color "^5.5.0" + v8-compile-cache "^2.0.2" + yargs "^12.0.5" + +webpack-dev-middleware@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" + integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.2" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.7.2.tgz#f79caa5974b7f8b63268ef5421222a8486d792f5" + integrity sha512-mjWtrKJW2T9SsjJ4/dxDC2fkFVUw8jlpemDERqV0ZJIkjjjamR2AbQlr3oz+j4JLhYCHImHnXZK5H06P2wvUew== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.6" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "^0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + killable "^1.0.1" + loglevel "^1.6.3" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.20" + schema-utils "^1.0.0" + selfsigned "^1.10.4" + semver "^6.1.1" + serve-index "^1.9.1" + sockjs "0.3.19" + sockjs-client "1.3.0" + spdy "^4.0.0" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.0" + webpack-log "^2.0.0" + yargs "12.0.5" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-sources@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.35.0: + version "4.35.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.35.0.tgz#ad3f0f8190876328806ccb7a36f3ce6e764b8378" + integrity sha512-M5hL3qpVvtr8d4YaJANbAQBc4uT01G33eDpl/psRTBCfjxFTihdhin1NtAKB1ruDwzeVdcsHHV3NX+QsAgOosw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.0.5" + acorn-dynamic-import "^4.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.0" + json-parse-better-errors "^1.0.2" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^1.0.0" + tapable "^1.1.0" + terser-webpack-plugin "^1.1.0" + watchpack "^1.5.0" + webpack-sources "^1.3.0" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@>=0.10.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.14, which@^1.2.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= + dependencies: + camelcase "^4.1.0" + +yargs@12.0.5, yargs@^12.0.2, yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + integrity sha1-UqzCP+7Kw0BCB47njAwAf1CF20w= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" diff --git a/packages/reason-relay/.gitignore b/packages/reason-relay/.gitignore new file mode 100644 index 00000000..ede34766 --- /dev/null +++ b/packages/reason-relay/.gitignore @@ -0,0 +1,3 @@ +lib +dist +node_modules diff --git a/packages/reason-relay/bsconfig.json b/packages/reason-relay/bsconfig.json new file mode 100755 index 00000000..1366dc89 --- /dev/null +++ b/packages/reason-relay/bsconfig.json @@ -0,0 +1,24 @@ +{ + "name": "reason-relay", + "version": "0.1.0", + "namespace": false, + "reason": { + "react-jsx": 3 + }, + "sources": [ + { + "dir": "src" + } + ], + "package-specs": { + "module": "commonjs", + "in-source": true + }, + "ppx-flags": [], + "bs-dependencies": ["reason-react"], + "suffix": ".bs.js", + "warnings": { + "error": "+101" + }, + "refmt": 3 +} diff --git a/packages/reason-relay/build.sh b/packages/reason-relay/build.sh new file mode 100755 index 00000000..480084b2 --- /dev/null +++ b/packages/reason-relay/build.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +yarn build; + +# build ppx +echo "Build PPX..."; +cd ppx; +esy @ppx build; +cd ..; + +# build language plugin +echo "Build language plugin..."; +cd ./language-plugin/; yarn; yarn build; cd ..; + +# clean dist +rm -rf dist; +mkdir -p dist/src; + +# copy bindings and readme +cp src/ReasonRelay.re dist/src/; +cp src/ReasonRelay.rei dist/src/; +cp ./../../README.md dist/; + +# copy ppx +cp ppx/_build/default/bin/bin.exe dist/ppx; + +# copy config files +cp bsconfig.json dist/; +cp package.json dist/; +cp yarn.lock dist/; + +# run yarn +cd dist; yarn; cd ..; + +# copy language plugin +cp -r ./language-plugin/lib dist/language-plugin; + +# copy compiler +cp -r ./compiler/ dist/compiler; diff --git a/packages/reason-relay/compiler/compiler-cli.js b/packages/reason-relay/compiler/compiler-cli.js new file mode 100755 index 00000000..a13d6fe4 --- /dev/null +++ b/packages/reason-relay/compiler/compiler-cli.js @@ -0,0 +1,144 @@ +#!/usr/bin/env node +const path = require('path'); +const fs = require('fs'); +const { parseRE, printRE } = require('reason'); +const mkdir = require('mkdirp-sync'); +const { spawn } = require('child_process'); +const { buildSchema, introspectionQuery, graphql } = require('graphql'); + +const args = process.argv.slice(2); + +function runRelayCompiler(args) { + spawn(path.resolve(__dirname + '/relay-compiler'), args, { + stdio: 'inherit' + }); +} + +function generateSchemaAssets(schema, targetPath) { + let enums = schema.data.__schema.types + .filter(({ kind, name }) => kind === 'ENUM' && !name.startsWith('_')) + .map(e => { + const { name, enumValues } = e; + const values = enumValues.map(v => v.name); + + let enumT = `type t = [ ${values + .map(v => ` | \`${v}`) + .join('')} | \`FUTURE_ADDED_VALUE__ ]`; + + return ` + module Enum_${name}: { + ${enumT}; + type wrapped; + let unwrap: wrapped => t; + let wrap: t => wrapped; + } = { + ${enumT}; + type wrapped; + + external __unwrap: wrapped => string = "%identity"; + external __wrap: string => wrapped = "%identity"; + + let unwrap = wrapped => switch(wrapped |> __unwrap) { + ${values.map(val => `| "${val}" => \`${val}`).join('')} + | _ => \`FUTURE_ADDED_VALUE__ + }; + + let wrap = t => switch(t) { + ${values.map(val => `| \`${val} => "${val}"`).join('')} + | \`FUTURE_ADDED_VALUE__ => "" + } |> __wrap; + }; + `; + }) + .join('\n\n'); + + fs.writeFileSync( + path.resolve(targetPath + '/SchemaAssets.re'), + printRE( + parseRE(` +/** This file is autogenerated by ReasonRelay and should not be modified manually. */ + +/** + * ENUMS + * Helpers for wrapping/unwrapping enums. + */ + +${enums} + `) + ) + ); +} + +async function parseSchema(rawSchemaContent, pathToSchema) { + const schemaType = pathToSchema.split('.').pop(); + let schema; + + switch (schemaType.toLowerCase()) { + default: + case 'json': + schema = JSON.parse(rawSchemaContent); + break; + case 'graphql': + const graphqlSchema = buildSchema(rawSchemaContent); + const jsonIntrospectionSchema = await graphql( + graphqlSchema, + introspectionQuery, + {} + ); + schema = jsonIntrospectionSchema; + break; + } + + return schema; +} + +function findArg(name) { + return args.reduce((acc, curr, index, arr) => { + if (curr.trim() === '--' + name && arr[index + 1]) { + acc = arr[index + 1]; + } + + return acc; + }, null); +} + +async function runCompiler() { + const schemaPath = findArg('schema'); + + if (schemaPath) { + console.log('Generating ReasonRelay assets...'); + + const schemaJson = await parseSchema( + fs.readFileSync(schemaPath, 'utf8'), + schemaPath + ); + + let targetPath = path.resolve('./src/__reasonRelayGenerated__'); + mkdir(targetPath); + + const argsMap = args.reduce((acc, curr, index, arr) => { + if (curr.startsWith('--')) { + acc[curr] = arr[index + 1]; + } + + return acc; + }, {}); + + argsMap['--language'] = path.resolve( + __dirname + '/../language-plugin/index.js' + ); + + runRelayCompiler( + Object.keys(argsMap).reduce((acc, curr) => { + acc.push(curr, argsMap[curr]); + return acc; + }, []) + ); + + generateSchemaAssets(schemaJson, targetPath); + } else { + runRelayCompiler(['--help']); + } +} + +runCompiler(); diff --git a/packages/reason-relay/compiler/relay-compiler b/packages/reason-relay/compiler/relay-compiler new file mode 100755 index 00000000..fe2b565d --- /dev/null +++ b/packages/reason-relay/compiler/relay-compiler @@ -0,0 +1,43491 @@ +#!/usr/bin/env node +/** + * Relay v5.0.0 + * + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +module.exports = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 78); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} + +module.exports = _interopRequireDefault; + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +module.exports = require("graphql"); + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +var defineProperty = __webpack_require__(27); + +function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); + + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + + ownKeys.forEach(function (key) { + defineProperty(target, key, source[key]); + }); + } + + return target; +} + +module.exports = _objectSpread; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var Profiler = __webpack_require__(10); + +var invariant = __webpack_require__(4); + +var _require = __webpack_require__(114), + createUserError = _require.createUserError; + +var _require2 = __webpack_require__(21), + ImmutableOrderedMap = _require2.OrderedMap; + +/** + * An immutable representation of a corpus of documents being compiled together. + * For each document, the context stores the IR and any validation errors. + */ +var GraphQLCompilerContext = +/*#__PURE__*/ +function () { + function GraphQLCompilerContext(serverSchema, clientSchema) { + this._isMutable = false; + this._documents = new ImmutableOrderedMap(); + this._withTransform = new WeakMap(); + this.serverSchema = serverSchema; // If a separate client schema doesn't exist, use the server schema. + + this.clientSchema = clientSchema || serverSchema; + } + /** + * Returns the documents for the context in the order they were added. + */ + + + var _proto = GraphQLCompilerContext.prototype; + + _proto.documents = function documents() { + return this._documents.toArray(); + }; + + _proto.forEachDocument = function forEachDocument(fn) { + this._documents.forEach(fn); + }; + + _proto.replace = function replace(node) { + return this._update(this._documents.update(node.name, function (existing) { + !existing ? true ? invariant(false, 'GraphQLCompilerContext: Expected to replace existing node %s, but' + 'one was not found in the context.', node.name) : undefined : void 0; + return node; + })); + }; + + _proto.add = function add(node) { + return this._update(this._documents.update(node.name, function (existing) { + !!existing ? true ? invariant(false, 'GraphQLCompilerContext: Duplicate document named `%s`. GraphQL ' + 'fragments and roots must have unique names.', node.name) : undefined : void 0; + return node; + })); + }; + + _proto.addAll = function addAll(nodes) { + return this.withMutations(function (mutable) { + return nodes.reduce(function (ctx, definition) { + return ctx.add(definition); + }, mutable); + }); + } + /** + * Apply a list of compiler transforms and return a new compiler context. + */ + ; + + _proto.applyTransforms = function applyTransforms(transforms, reporter) { + var _this = this; + + return Profiler.run('applyTransforms', function () { + return transforms.reduce(function (ctx, transform) { + return ctx.applyTransform(transform, reporter); + }, _this); + }); + } + /** + * Applies a transform to this context, returning a new context. + * + * This is memoized such that applying the same sequence of transforms will + * not result in duplicated work. + */ + ; + + _proto.applyTransform = function applyTransform(transform, reporter) { + var transformed = this._withTransform.get(transform); + + if (!transformed) { + var start = process.hrtime(); + transformed = Profiler.instrument(transform)(this); + var delta = process.hrtime(start); + var deltaMs = Math.round((delta[0] * 1e9 + delta[1]) / 1e6); + reporter && reporter.reportTime(transform.name, deltaMs); + + this._withTransform.set(transform, transformed); + } + + return transformed; + }; + + _proto.get = function get(name) { + return this._documents.get(name); + }; + + _proto.getFragment = function getFragment(name) { + var node = this._get(name); + + if (node.kind !== 'Fragment') { + var childModule = name.substring(0, name.lastIndexOf('_')); + throw createUserError('GraphQLCompilerContext: Cannot find fragment `%s`.' + ' Please make sure the fragment exists in `%s`.', name, childModule); + } + + return node; + }; + + _proto.getRoot = function getRoot(name) { + var node = this._get(name); + + !(node.kind === 'Root') ? true ? invariant(false, 'GraphQLCompilerContext: Expected `%s` to be a root, got `%s`.', name, node.kind) : undefined : void 0; + return node; + }; + + _proto.remove = function remove(name) { + return this._update(this._documents["delete"](name)); + }; + + _proto.withMutations = function withMutations(fn) { + var mutableCopy = this._update(this._documents.asMutable()); + + mutableCopy._isMutable = true; + var result = fn(mutableCopy); + result._isMutable = false; + result._documents = result._documents.asImmutable(); + return this._documents === result._documents ? this : result; + }; + + _proto._get = function _get(name) { + var document = this._documents.get(name); + + !document ? true ? invariant(false, 'GraphQLCompilerContext: Unknown document `%s`.', name) : undefined : void 0; + return document; + }; + + _proto._update = function _update(documents) { + var context = this._isMutable ? this : new GraphQLCompilerContext(this.serverSchema, this.clientSchema); + context._documents = documents; + return context; + }; + + return GraphQLCompilerContext; +}(); + +module.exports = GraphQLCompilerContext; + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + +module.exports = require("fbjs/lib/invariant"); + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var invariant = __webpack_require__(4); + +var _require = __webpack_require__(9), + createCombinedError = _require.createCombinedError, + eachWithErrors = _require.eachWithErrors; + +/** + * @public + * + * Helper for writing compiler transforms that apply "map" and/or "filter"-style + * operations to compiler contexts. The `visitor` argument accepts a map of IR + * kinds to user-defined functions that can map nodes of that kind to new values + * (of the same kind). + * + * If a visitor function is defined for a kind, the visitor function is + * responsible for traversing its children (by calling `this.traverse(node)`) + * and returning either the input (to indicate no changes), a new node (to + * indicate changes), or null/undefined (to indicate the removal of that node + * from the output). + * + * If a visitor function is *not* defined for a kind, a default traversal is + * used to evaluate its children. + * + * The `stateInitializer` argument accepts an optional function to construct the + * state for each document (fragment or root) in the context. Any documents for + * which the initializer returns null/undefined is deleted from the context + * without being traversed. + * + * Example: Alias all scalar fields with the reverse of their name: + * + * ``` + * transform(context, { + * ScalarField: visitScalarField, + * }); + * + * function visitScalarField(field: ScalarField, state: State): ?ScalarField { + * // Traverse child nodes - for a scalar field these are the arguments & + * // directives. + * const nextField = this.traverse(field, state); + * // Return a new node with a different alias. + * return { + * ...nextField, + * alias: nextField.name.split('').reverse().join(''), + * }; + * } + * ``` + */ +function transform(context, visitor, stateInitializer) { + var transformer = new Transformer(context, visitor); + return context.withMutations(function (ctx) { + var nextContext = ctx; + var errors = eachWithErrors(context.documents(), function (prevNode) { + var nextNode; + + if (stateInitializer === undefined) { + nextNode = transformer.visit(prevNode, undefined); + } else { + var _state = stateInitializer(prevNode); + + if (_state != null) { + nextNode = transformer.visit(prevNode, _state); + } + } + + if (!nextNode) { + nextContext = nextContext.remove(prevNode.name); + } else if (nextNode !== prevNode) { + nextContext = nextContext.replace(nextNode); + } + }); + + if (errors != null && errors.length !== 0) { + throw createCombinedError(errors); + } + + return nextContext; + }); +} +/** + * @internal + */ + + +var Transformer = +/*#__PURE__*/ +function () { + function Transformer(context, visitor) { + this._context = context; + this._states = []; + this._visitor = visitor; + } + /** + * @public + * + * Returns the original compiler context that is being transformed. This can + * be used to look up fragments by name, for example. + */ + + + var _proto = Transformer.prototype; + + _proto.getContext = function getContext() { + return this._context; + } + /** + * @public + * + * Transforms the node, calling a user-defined visitor function if defined for + * the node's kind. Uses the given state for this portion of the traversal. + * + * Note: This differs from `traverse` in that it calls a visitor function for + * the node itself. + */ + ; + + _proto.visit = function visit(node, state) { + this._states.push(state); + + var nextNode = this._visit(node); + + this._states.pop(); + + return nextNode; + } + /** + * @public + * + * Transforms the children of the given node, skipping the user-defined + * visitor function for the node itself. Uses the given state for this portion + * of the traversal. + * + * Note: This differs from `visit` in that it does not call a visitor function + * for the node itself. + */ + ; + + _proto.traverse = function traverse(node, state) { + this._states.push(state); + + var nextNode = this._traverse(node); + + this._states.pop(); + + return nextNode; + }; + + _proto._visit = function _visit(node) { + var nodeVisitor = this._visitor[node.kind]; + + if (nodeVisitor) { + // If a handler for the kind is defined, it is responsible for calling + // `traverse` to transform children as necessary. + var _state2 = this._getState(); + + var nextNode = nodeVisitor.call(this, node, _state2); + return nextNode; + } // Otherwise traverse is called automatically. + + + return this._traverse(node); + }; + + _proto._traverse = function _traverse(prevNode) { + var nextNode; + + switch (prevNode.kind) { + case 'Argument': + nextNode = this._traverseChildren(prevNode, null, ['value']); + break; + + case 'Literal': + case 'LocalArgumentDefinition': + case 'RootArgumentDefinition': + case 'Variable': + nextNode = prevNode; + break; + + case 'Defer': + nextNode = this._traverseChildren(prevNode, ['selections'], ['if']); + break; + + case 'Stream': + nextNode = this._traverseChildren(prevNode, ['selections'], ['if', 'initialCount']); + break; + + case 'ClientExtension': + nextNode = this._traverseChildren(prevNode, ['selections']); + break; + + case 'Directive': + nextNode = this._traverseChildren(prevNode, ['args']); + break; + + case 'ModuleImport': + nextNode = this._traverseChildren(prevNode, ['selections']); + + if (!nextNode.selections.length) { + nextNode = null; + } + + break; + + case 'FragmentSpread': + case 'ScalarField': + nextNode = this._traverseChildren(prevNode, ['args', 'directives']); + break; + + case 'LinkedField': + nextNode = this._traverseChildren(prevNode, ['args', 'directives', 'selections']); + + if (!nextNode.selections.length) { + nextNode = null; + } + + break; + + case 'ListValue': + nextNode = this._traverseChildren(prevNode, ['items']); + break; + + case 'ObjectFieldValue': + nextNode = this._traverseChildren(prevNode, null, ['value']); + break; + + case 'ObjectValue': + nextNode = this._traverseChildren(prevNode, ['fields']); + break; + + case 'Condition': + nextNode = this._traverseChildren(prevNode, ['directives', 'selections'], ['condition']); + + if (!nextNode.selections.length) { + nextNode = null; + } + + break; + + case 'InlineFragment': + nextNode = this._traverseChildren(prevNode, ['directives', 'selections']); + + if (!nextNode.selections.length) { + nextNode = null; + } + + break; + + case 'Fragment': + case 'Root': + nextNode = this._traverseChildren(prevNode, ['argumentDefinitions', 'directives', 'selections']); + break; + + case 'Request': + nextNode = this._traverseChildren(prevNode, null, ['fragment', 'root']); + break; + + case 'SplitOperation': + nextNode = this._traverseChildren(prevNode, ['selections']); + break; + + default: + prevNode; + true ? true ? invariant(false, 'GraphQLIRTransformer: Unknown kind `%s`.', prevNode.kind) : undefined : undefined; + } + + return nextNode; + }; + + _proto._traverseChildren = function _traverseChildren(prevNode, pluralKeys, singularKeys) { + var _this = this; + + var nextNode; + pluralKeys && pluralKeys.forEach(function (key) { + var prevItems = prevNode[key]; + + if (!prevItems) { + return; + } + + !Array.isArray(prevItems) ? true ? invariant(false, 'GraphQLIRTransformer: Expected data for `%s` to be an array, got `%s`.', key, prevItems) : undefined : void 0; + + var nextItems = _this._map(prevItems); + + if (nextNode || nextItems !== prevItems) { + nextNode = nextNode || (0, _objectSpread2["default"])({}, prevNode); + nextNode[key] = nextItems; + } + }); + singularKeys && singularKeys.forEach(function (key) { + var prevItem = prevNode[key]; + + if (!prevItem) { + return; + } + + var nextItem = _this._visit(prevItem); + + if (nextNode || nextItem !== prevItem) { + nextNode = nextNode || (0, _objectSpread2["default"])({}, prevNode); + nextNode[key] = nextItem; + } + }); + return nextNode || prevNode; + }; + + _proto._map = function _map(prevItems) { + var _this2 = this; + + var nextItems; + prevItems.forEach(function (prevItem, index) { + var nextItem = _this2._visit(prevItem); + + if (nextItems || nextItem !== prevItem) { + nextItems = nextItems || prevItems.slice(0, index); + + if (nextItem) { + nextItems.push(nextItem); + } + } + }); + return nextItems || prevItems; + }; + + _proto._getState = function _getState() { + !this._states.length ? true ? invariant(false, 'GraphQLIRTransformer: Expected a current state to be set but found none. ' + 'This is usually the result of mismatched number of pushState()/popState() ' + 'calls.') : undefined : void 0; + return this._states[this._states.length - 1]; + }; + + return Transformer; +}(); + +module.exports = { + transform: transform +}; + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayWithoutHoles = __webpack_require__(96); + +var iterableToArray = __webpack_require__(97); + +var nonIterableSpread = __webpack_require__(98); + +function _toConsumableArray(arr) { + return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread(); +} + +module.exports = _toConsumableArray; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isArrayExpression = isArrayExpression; +exports.isAssignmentExpression = isAssignmentExpression; +exports.isBinaryExpression = isBinaryExpression; +exports.isInterpreterDirective = isInterpreterDirective; +exports.isDirective = isDirective; +exports.isDirectiveLiteral = isDirectiveLiteral; +exports.isBlockStatement = isBlockStatement; +exports.isBreakStatement = isBreakStatement; +exports.isCallExpression = isCallExpression; +exports.isCatchClause = isCatchClause; +exports.isConditionalExpression = isConditionalExpression; +exports.isContinueStatement = isContinueStatement; +exports.isDebuggerStatement = isDebuggerStatement; +exports.isDoWhileStatement = isDoWhileStatement; +exports.isEmptyStatement = isEmptyStatement; +exports.isExpressionStatement = isExpressionStatement; +exports.isFile = isFile; +exports.isForInStatement = isForInStatement; +exports.isForStatement = isForStatement; +exports.isFunctionDeclaration = isFunctionDeclaration; +exports.isFunctionExpression = isFunctionExpression; +exports.isIdentifier = isIdentifier; +exports.isIfStatement = isIfStatement; +exports.isLabeledStatement = isLabeledStatement; +exports.isStringLiteral = isStringLiteral; +exports.isNumericLiteral = isNumericLiteral; +exports.isNullLiteral = isNullLiteral; +exports.isBooleanLiteral = isBooleanLiteral; +exports.isRegExpLiteral = isRegExpLiteral; +exports.isLogicalExpression = isLogicalExpression; +exports.isMemberExpression = isMemberExpression; +exports.isNewExpression = isNewExpression; +exports.isProgram = isProgram; +exports.isObjectExpression = isObjectExpression; +exports.isObjectMethod = isObjectMethod; +exports.isObjectProperty = isObjectProperty; +exports.isRestElement = isRestElement; +exports.isReturnStatement = isReturnStatement; +exports.isSequenceExpression = isSequenceExpression; +exports.isParenthesizedExpression = isParenthesizedExpression; +exports.isSwitchCase = isSwitchCase; +exports.isSwitchStatement = isSwitchStatement; +exports.isThisExpression = isThisExpression; +exports.isThrowStatement = isThrowStatement; +exports.isTryStatement = isTryStatement; +exports.isUnaryExpression = isUnaryExpression; +exports.isUpdateExpression = isUpdateExpression; +exports.isVariableDeclaration = isVariableDeclaration; +exports.isVariableDeclarator = isVariableDeclarator; +exports.isWhileStatement = isWhileStatement; +exports.isWithStatement = isWithStatement; +exports.isAssignmentPattern = isAssignmentPattern; +exports.isArrayPattern = isArrayPattern; +exports.isArrowFunctionExpression = isArrowFunctionExpression; +exports.isClassBody = isClassBody; +exports.isClassDeclaration = isClassDeclaration; +exports.isClassExpression = isClassExpression; +exports.isExportAllDeclaration = isExportAllDeclaration; +exports.isExportDefaultDeclaration = isExportDefaultDeclaration; +exports.isExportNamedDeclaration = isExportNamedDeclaration; +exports.isExportSpecifier = isExportSpecifier; +exports.isForOfStatement = isForOfStatement; +exports.isImportDeclaration = isImportDeclaration; +exports.isImportDefaultSpecifier = isImportDefaultSpecifier; +exports.isImportNamespaceSpecifier = isImportNamespaceSpecifier; +exports.isImportSpecifier = isImportSpecifier; +exports.isMetaProperty = isMetaProperty; +exports.isClassMethod = isClassMethod; +exports.isObjectPattern = isObjectPattern; +exports.isSpreadElement = isSpreadElement; +exports.isSuper = isSuper; +exports.isTaggedTemplateExpression = isTaggedTemplateExpression; +exports.isTemplateElement = isTemplateElement; +exports.isTemplateLiteral = isTemplateLiteral; +exports.isYieldExpression = isYieldExpression; +exports.isAnyTypeAnnotation = isAnyTypeAnnotation; +exports.isArrayTypeAnnotation = isArrayTypeAnnotation; +exports.isBooleanTypeAnnotation = isBooleanTypeAnnotation; +exports.isBooleanLiteralTypeAnnotation = isBooleanLiteralTypeAnnotation; +exports.isNullLiteralTypeAnnotation = isNullLiteralTypeAnnotation; +exports.isClassImplements = isClassImplements; +exports.isDeclareClass = isDeclareClass; +exports.isDeclareFunction = isDeclareFunction; +exports.isDeclareInterface = isDeclareInterface; +exports.isDeclareModule = isDeclareModule; +exports.isDeclareModuleExports = isDeclareModuleExports; +exports.isDeclareTypeAlias = isDeclareTypeAlias; +exports.isDeclareOpaqueType = isDeclareOpaqueType; +exports.isDeclareVariable = isDeclareVariable; +exports.isDeclareExportDeclaration = isDeclareExportDeclaration; +exports.isDeclareExportAllDeclaration = isDeclareExportAllDeclaration; +exports.isDeclaredPredicate = isDeclaredPredicate; +exports.isExistsTypeAnnotation = isExistsTypeAnnotation; +exports.isFunctionTypeAnnotation = isFunctionTypeAnnotation; +exports.isFunctionTypeParam = isFunctionTypeParam; +exports.isGenericTypeAnnotation = isGenericTypeAnnotation; +exports.isInferredPredicate = isInferredPredicate; +exports.isInterfaceExtends = isInterfaceExtends; +exports.isInterfaceDeclaration = isInterfaceDeclaration; +exports.isInterfaceTypeAnnotation = isInterfaceTypeAnnotation; +exports.isIntersectionTypeAnnotation = isIntersectionTypeAnnotation; +exports.isMixedTypeAnnotation = isMixedTypeAnnotation; +exports.isEmptyTypeAnnotation = isEmptyTypeAnnotation; +exports.isNullableTypeAnnotation = isNullableTypeAnnotation; +exports.isNumberLiteralTypeAnnotation = isNumberLiteralTypeAnnotation; +exports.isNumberTypeAnnotation = isNumberTypeAnnotation; +exports.isObjectTypeAnnotation = isObjectTypeAnnotation; +exports.isObjectTypeInternalSlot = isObjectTypeInternalSlot; +exports.isObjectTypeCallProperty = isObjectTypeCallProperty; +exports.isObjectTypeIndexer = isObjectTypeIndexer; +exports.isObjectTypeProperty = isObjectTypeProperty; +exports.isObjectTypeSpreadProperty = isObjectTypeSpreadProperty; +exports.isOpaqueType = isOpaqueType; +exports.isQualifiedTypeIdentifier = isQualifiedTypeIdentifier; +exports.isStringLiteralTypeAnnotation = isStringLiteralTypeAnnotation; +exports.isStringTypeAnnotation = isStringTypeAnnotation; +exports.isThisTypeAnnotation = isThisTypeAnnotation; +exports.isTupleTypeAnnotation = isTupleTypeAnnotation; +exports.isTypeofTypeAnnotation = isTypeofTypeAnnotation; +exports.isTypeAlias = isTypeAlias; +exports.isTypeAnnotation = isTypeAnnotation; +exports.isTypeCastExpression = isTypeCastExpression; +exports.isTypeParameter = isTypeParameter; +exports.isTypeParameterDeclaration = isTypeParameterDeclaration; +exports.isTypeParameterInstantiation = isTypeParameterInstantiation; +exports.isUnionTypeAnnotation = isUnionTypeAnnotation; +exports.isVariance = isVariance; +exports.isVoidTypeAnnotation = isVoidTypeAnnotation; +exports.isJSXAttribute = isJSXAttribute; +exports.isJSXClosingElement = isJSXClosingElement; +exports.isJSXElement = isJSXElement; +exports.isJSXEmptyExpression = isJSXEmptyExpression; +exports.isJSXExpressionContainer = isJSXExpressionContainer; +exports.isJSXSpreadChild = isJSXSpreadChild; +exports.isJSXIdentifier = isJSXIdentifier; +exports.isJSXMemberExpression = isJSXMemberExpression; +exports.isJSXNamespacedName = isJSXNamespacedName; +exports.isJSXOpeningElement = isJSXOpeningElement; +exports.isJSXSpreadAttribute = isJSXSpreadAttribute; +exports.isJSXText = isJSXText; +exports.isJSXFragment = isJSXFragment; +exports.isJSXOpeningFragment = isJSXOpeningFragment; +exports.isJSXClosingFragment = isJSXClosingFragment; +exports.isNoop = isNoop; +exports.isPlaceholder = isPlaceholder; +exports.isArgumentPlaceholder = isArgumentPlaceholder; +exports.isAwaitExpression = isAwaitExpression; +exports.isBindExpression = isBindExpression; +exports.isClassProperty = isClassProperty; +exports.isOptionalMemberExpression = isOptionalMemberExpression; +exports.isPipelineTopicExpression = isPipelineTopicExpression; +exports.isPipelineBareFunction = isPipelineBareFunction; +exports.isPipelinePrimaryTopicReference = isPipelinePrimaryTopicReference; +exports.isOptionalCallExpression = isOptionalCallExpression; +exports.isClassPrivateProperty = isClassPrivateProperty; +exports.isClassPrivateMethod = isClassPrivateMethod; +exports.isImport = isImport; +exports.isDecorator = isDecorator; +exports.isDoExpression = isDoExpression; +exports.isExportDefaultSpecifier = isExportDefaultSpecifier; +exports.isExportNamespaceSpecifier = isExportNamespaceSpecifier; +exports.isPrivateName = isPrivateName; +exports.isBigIntLiteral = isBigIntLiteral; +exports.isTSParameterProperty = isTSParameterProperty; +exports.isTSDeclareFunction = isTSDeclareFunction; +exports.isTSDeclareMethod = isTSDeclareMethod; +exports.isTSQualifiedName = isTSQualifiedName; +exports.isTSCallSignatureDeclaration = isTSCallSignatureDeclaration; +exports.isTSConstructSignatureDeclaration = isTSConstructSignatureDeclaration; +exports.isTSPropertySignature = isTSPropertySignature; +exports.isTSMethodSignature = isTSMethodSignature; +exports.isTSIndexSignature = isTSIndexSignature; +exports.isTSAnyKeyword = isTSAnyKeyword; +exports.isTSUnknownKeyword = isTSUnknownKeyword; +exports.isTSNumberKeyword = isTSNumberKeyword; +exports.isTSObjectKeyword = isTSObjectKeyword; +exports.isTSBooleanKeyword = isTSBooleanKeyword; +exports.isTSStringKeyword = isTSStringKeyword; +exports.isTSSymbolKeyword = isTSSymbolKeyword; +exports.isTSVoidKeyword = isTSVoidKeyword; +exports.isTSUndefinedKeyword = isTSUndefinedKeyword; +exports.isTSNullKeyword = isTSNullKeyword; +exports.isTSNeverKeyword = isTSNeverKeyword; +exports.isTSThisType = isTSThisType; +exports.isTSFunctionType = isTSFunctionType; +exports.isTSConstructorType = isTSConstructorType; +exports.isTSTypeReference = isTSTypeReference; +exports.isTSTypePredicate = isTSTypePredicate; +exports.isTSTypeQuery = isTSTypeQuery; +exports.isTSTypeLiteral = isTSTypeLiteral; +exports.isTSArrayType = isTSArrayType; +exports.isTSTupleType = isTSTupleType; +exports.isTSOptionalType = isTSOptionalType; +exports.isTSRestType = isTSRestType; +exports.isTSUnionType = isTSUnionType; +exports.isTSIntersectionType = isTSIntersectionType; +exports.isTSConditionalType = isTSConditionalType; +exports.isTSInferType = isTSInferType; +exports.isTSParenthesizedType = isTSParenthesizedType; +exports.isTSTypeOperator = isTSTypeOperator; +exports.isTSIndexedAccessType = isTSIndexedAccessType; +exports.isTSMappedType = isTSMappedType; +exports.isTSLiteralType = isTSLiteralType; +exports.isTSExpressionWithTypeArguments = isTSExpressionWithTypeArguments; +exports.isTSInterfaceDeclaration = isTSInterfaceDeclaration; +exports.isTSInterfaceBody = isTSInterfaceBody; +exports.isTSTypeAliasDeclaration = isTSTypeAliasDeclaration; +exports.isTSAsExpression = isTSAsExpression; +exports.isTSTypeAssertion = isTSTypeAssertion; +exports.isTSEnumDeclaration = isTSEnumDeclaration; +exports.isTSEnumMember = isTSEnumMember; +exports.isTSModuleDeclaration = isTSModuleDeclaration; +exports.isTSModuleBlock = isTSModuleBlock; +exports.isTSImportType = isTSImportType; +exports.isTSImportEqualsDeclaration = isTSImportEqualsDeclaration; +exports.isTSExternalModuleReference = isTSExternalModuleReference; +exports.isTSNonNullExpression = isTSNonNullExpression; +exports.isTSExportAssignment = isTSExportAssignment; +exports.isTSNamespaceExportDeclaration = isTSNamespaceExportDeclaration; +exports.isTSTypeAnnotation = isTSTypeAnnotation; +exports.isTSTypeParameterInstantiation = isTSTypeParameterInstantiation; +exports.isTSTypeParameterDeclaration = isTSTypeParameterDeclaration; +exports.isTSTypeParameter = isTSTypeParameter; +exports.isExpression = isExpression; +exports.isBinary = isBinary; +exports.isScopable = isScopable; +exports.isBlockParent = isBlockParent; +exports.isBlock = isBlock; +exports.isStatement = isStatement; +exports.isTerminatorless = isTerminatorless; +exports.isCompletionStatement = isCompletionStatement; +exports.isConditional = isConditional; +exports.isLoop = isLoop; +exports.isWhile = isWhile; +exports.isExpressionWrapper = isExpressionWrapper; +exports.isFor = isFor; +exports.isForXStatement = isForXStatement; +exports.isFunction = isFunction; +exports.isFunctionParent = isFunctionParent; +exports.isPureish = isPureish; +exports.isDeclaration = isDeclaration; +exports.isPatternLike = isPatternLike; +exports.isLVal = isLVal; +exports.isTSEntityName = isTSEntityName; +exports.isLiteral = isLiteral; +exports.isImmutable = isImmutable; +exports.isUserWhitespacable = isUserWhitespacable; +exports.isMethod = isMethod; +exports.isObjectMember = isObjectMember; +exports.isProperty = isProperty; +exports.isUnaryLike = isUnaryLike; +exports.isPattern = isPattern; +exports.isClass = isClass; +exports.isModuleDeclaration = isModuleDeclaration; +exports.isExportDeclaration = isExportDeclaration; +exports.isModuleSpecifier = isModuleSpecifier; +exports.isFlow = isFlow; +exports.isFlowType = isFlowType; +exports.isFlowBaseAnnotation = isFlowBaseAnnotation; +exports.isFlowDeclaration = isFlowDeclaration; +exports.isFlowPredicate = isFlowPredicate; +exports.isJSX = isJSX; +exports.isPrivate = isPrivate; +exports.isTSTypeElement = isTSTypeElement; +exports.isTSType = isTSType; +exports.isNumberLiteral = isNumberLiteral; +exports.isRegexLiteral = isRegexLiteral; +exports.isRestProperty = isRestProperty; +exports.isSpreadProperty = isSpreadProperty; + +var _shallowEqual = _interopRequireDefault(__webpack_require__(31)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isArrayExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArrayExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isAssignmentExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "AssignmentExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBinaryExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BinaryExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInterpreterDirective(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InterpreterDirective") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDirective(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Directive") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDirectiveLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DirectiveLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBlockStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BlockStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBreakStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BreakStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isCallExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "CallExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isCatchClause(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "CatchClause") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isConditionalExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ConditionalExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isContinueStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ContinueStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDebuggerStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DebuggerStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDoWhileStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DoWhileStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEmptyStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EmptyStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExpressionStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExpressionStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFile(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "File") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isForInStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ForInStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isForStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ForStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FunctionDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FunctionExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isIdentifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Identifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isIfStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "IfStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLabeledStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "LabeledStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isStringLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "StringLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNumericLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NumericLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNullLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NullLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBooleanLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BooleanLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isRegExpLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "RegExpLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLogicalExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "LogicalExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isMemberExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "MemberExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNewExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NewExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isProgram(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Program") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectMethod") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isRestElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "RestElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isReturnStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ReturnStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSequenceExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SequenceExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isParenthesizedExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ParenthesizedExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSwitchCase(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SwitchCase") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSwitchStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SwitchStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isThisExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ThisExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isThrowStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ThrowStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTryStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TryStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUnaryExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "UnaryExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUpdateExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "UpdateExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isVariableDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "VariableDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isVariableDeclarator(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "VariableDeclarator") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isWhileStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "WhileStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isWithStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "WithStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isAssignmentPattern(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "AssignmentPattern") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isArrayPattern(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArrayPattern") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isArrowFunctionExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArrowFunctionExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassBody(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassBody") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportAllDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportAllDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportDefaultDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportDefaultDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportNamedDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportNamedDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isForOfStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ForOfStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImportDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ImportDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImportDefaultSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ImportDefaultSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImportNamespaceSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ImportNamespaceSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImportSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ImportSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isMetaProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "MetaProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassMethod") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectPattern(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectPattern") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSpreadElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SpreadElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSuper(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Super") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTaggedTemplateExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TaggedTemplateExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTemplateElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TemplateElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTemplateLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TemplateLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isYieldExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "YieldExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isAnyTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "AnyTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isArrayTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArrayTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBooleanTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BooleanTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBooleanLiteralTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BooleanLiteralTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNullLiteralTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NullLiteralTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassImplements(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassImplements") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareClass(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareClass") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareFunction(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareFunction") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareInterface(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareInterface") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareModule(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareModule") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareModuleExports(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareModuleExports") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareTypeAlias(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareTypeAlias") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareOpaqueType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareOpaqueType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareVariable(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareVariable") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareExportDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareExportDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareExportAllDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareExportAllDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclaredPredicate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclaredPredicate") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExistsTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExistsTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FunctionTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionTypeParam(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FunctionTypeParam") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isGenericTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "GenericTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInferredPredicate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InferredPredicate") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInterfaceExtends(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InterfaceExtends") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInterfaceDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InterfaceDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInterfaceTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InterfaceTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isIntersectionTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "IntersectionTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isMixedTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "MixedTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEmptyTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EmptyTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNullableTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NullableTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNumberLiteralTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NumberLiteralTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNumberTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NumberTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeInternalSlot(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeInternalSlot") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeCallProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeCallProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeIndexer(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeIndexer") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeSpreadProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeSpreadProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isOpaqueType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "OpaqueType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isQualifiedTypeIdentifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "QualifiedTypeIdentifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isStringLiteralTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "StringLiteralTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isStringTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "StringTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isThisTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ThisTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTupleTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TupleTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeofTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeofTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeAlias(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeAlias") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeCastExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeCastExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeParameter(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeParameter") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeParameterDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeParameterDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeParameterInstantiation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeParameterInstantiation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUnionTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "UnionTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isVariance(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Variance") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isVoidTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "VoidTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXAttribute(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXAttribute") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXClosingElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXClosingElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXEmptyExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXEmptyExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXExpressionContainer(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXExpressionContainer") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXSpreadChild(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXSpreadChild") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXIdentifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXIdentifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXMemberExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXMemberExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXNamespacedName(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXNamespacedName") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXOpeningElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXOpeningElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXSpreadAttribute(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXSpreadAttribute") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXText(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXText") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXFragment(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXFragment") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXOpeningFragment(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXOpeningFragment") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXClosingFragment(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXClosingFragment") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNoop(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Noop") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPlaceholder(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Placeholder") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isArgumentPlaceholder(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArgumentPlaceholder") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isAwaitExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "AwaitExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBindExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BindExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isOptionalMemberExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "OptionalMemberExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPipelineTopicExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "PipelineTopicExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPipelineBareFunction(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "PipelineBareFunction") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPipelinePrimaryTopicReference(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "PipelinePrimaryTopicReference") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isOptionalCallExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "OptionalCallExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassPrivateProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassPrivateProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassPrivateMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassPrivateMethod") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImport(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Import") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDecorator(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Decorator") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDoExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DoExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportDefaultSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportDefaultSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportNamespaceSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportNamespaceSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPrivateName(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "PrivateName") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBigIntLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BigIntLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSParameterProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSParameterProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSDeclareFunction(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSDeclareFunction") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSDeclareMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSDeclareMethod") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSQualifiedName(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSQualifiedName") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSCallSignatureDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSCallSignatureDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSConstructSignatureDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSConstructSignatureDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSPropertySignature(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSPropertySignature") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSMethodSignature(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSMethodSignature") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSIndexSignature(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSIndexSignature") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSAnyKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSAnyKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSUnknownKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSUnknownKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNumberKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNumberKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSObjectKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSObjectKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSBooleanKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSBooleanKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSStringKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSStringKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSSymbolKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSSymbolKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSVoidKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSVoidKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSUndefinedKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSUndefinedKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNullKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNullKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNeverKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNeverKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSThisType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSThisType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSFunctionType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSFunctionType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSConstructorType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSConstructorType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeReference(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeReference") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypePredicate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypePredicate") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeQuery(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeQuery") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSArrayType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSArrayType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTupleType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTupleType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSOptionalType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSOptionalType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSRestType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSRestType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSUnionType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSUnionType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSIntersectionType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSIntersectionType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSConditionalType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSConditionalType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSInferType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSInferType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSParenthesizedType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSParenthesizedType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeOperator(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeOperator") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSIndexedAccessType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSIndexedAccessType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSMappedType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSMappedType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSLiteralType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSLiteralType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSExpressionWithTypeArguments(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSExpressionWithTypeArguments") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSInterfaceDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSInterfaceDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSInterfaceBody(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSInterfaceBody") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeAliasDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeAliasDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSAsExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSAsExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeAssertion(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeAssertion") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSEnumDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSEnumDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSEnumMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSEnumMember") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSModuleDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSModuleDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSModuleBlock(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSModuleBlock") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSImportType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSImportType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSImportEqualsDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSImportEqualsDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSExternalModuleReference(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSExternalModuleReference") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNonNullExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNonNullExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSExportAssignment(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSExportAssignment") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNamespaceExportDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNamespaceExportDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeParameterInstantiation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeParameterInstantiation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeParameterDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeParameterDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeParameter(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeParameter") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Expression" || "ArrayExpression" === nodeType || "AssignmentExpression" === nodeType || "BinaryExpression" === nodeType || "CallExpression" === nodeType || "ConditionalExpression" === nodeType || "FunctionExpression" === nodeType || "Identifier" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "LogicalExpression" === nodeType || "MemberExpression" === nodeType || "NewExpression" === nodeType || "ObjectExpression" === nodeType || "SequenceExpression" === nodeType || "ParenthesizedExpression" === nodeType || "ThisExpression" === nodeType || "UnaryExpression" === nodeType || "UpdateExpression" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "MetaProperty" === nodeType || "Super" === nodeType || "TaggedTemplateExpression" === nodeType || "TemplateLiteral" === nodeType || "YieldExpression" === nodeType || "TypeCastExpression" === nodeType || "JSXElement" === nodeType || "JSXFragment" === nodeType || "AwaitExpression" === nodeType || "BindExpression" === nodeType || "OptionalMemberExpression" === nodeType || "PipelinePrimaryTopicReference" === nodeType || "OptionalCallExpression" === nodeType || "Import" === nodeType || "DoExpression" === nodeType || "BigIntLiteral" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSNonNullExpression" === nodeType || nodeType === "Placeholder" && ("Expression" === node.expectedNode || "Identifier" === node.expectedNode || "StringLiteral" === node.expectedNode)) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBinary(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Binary" || "BinaryExpression" === nodeType || "LogicalExpression" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isScopable(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Scopable" || "BlockStatement" === nodeType || "CatchClause" === nodeType || "DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "Program" === nodeType || "ObjectMethod" === nodeType || "SwitchStatement" === nodeType || "WhileStatement" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassDeclaration" === nodeType || "ClassExpression" === nodeType || "ForOfStatement" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBlockParent(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BlockParent" || "BlockStatement" === nodeType || "CatchClause" === nodeType || "DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "Program" === nodeType || "ObjectMethod" === nodeType || "SwitchStatement" === nodeType || "WhileStatement" === nodeType || "ArrowFunctionExpression" === nodeType || "ForOfStatement" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBlock(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Block" || "BlockStatement" === nodeType || "Program" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Statement" || "BlockStatement" === nodeType || "BreakStatement" === nodeType || "ContinueStatement" === nodeType || "DebuggerStatement" === nodeType || "DoWhileStatement" === nodeType || "EmptyStatement" === nodeType || "ExpressionStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "IfStatement" === nodeType || "LabeledStatement" === nodeType || "ReturnStatement" === nodeType || "SwitchStatement" === nodeType || "ThrowStatement" === nodeType || "TryStatement" === nodeType || "VariableDeclaration" === nodeType || "WhileStatement" === nodeType || "WithStatement" === nodeType || "ClassDeclaration" === nodeType || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ForOfStatement" === nodeType || "ImportDeclaration" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType || "TSDeclareFunction" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSEnumDeclaration" === nodeType || "TSModuleDeclaration" === nodeType || "TSImportEqualsDeclaration" === nodeType || "TSExportAssignment" === nodeType || "TSNamespaceExportDeclaration" === nodeType || nodeType === "Placeholder" && ("Statement" === node.expectedNode || "Declaration" === node.expectedNode || "BlockStatement" === node.expectedNode)) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTerminatorless(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Terminatorless" || "BreakStatement" === nodeType || "ContinueStatement" === nodeType || "ReturnStatement" === nodeType || "ThrowStatement" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isCompletionStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "CompletionStatement" || "BreakStatement" === nodeType || "ContinueStatement" === nodeType || "ReturnStatement" === nodeType || "ThrowStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isConditional(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Conditional" || "ConditionalExpression" === nodeType || "IfStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLoop(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Loop" || "DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "WhileStatement" === nodeType || "ForOfStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isWhile(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "While" || "DoWhileStatement" === nodeType || "WhileStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExpressionWrapper(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExpressionWrapper" || "ExpressionStatement" === nodeType || "ParenthesizedExpression" === nodeType || "TypeCastExpression" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFor(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "For" || "ForInStatement" === nodeType || "ForStatement" === nodeType || "ForOfStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isForXStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ForXStatement" || "ForInStatement" === nodeType || "ForOfStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunction(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Function" || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "ObjectMethod" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionParent(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FunctionParent" || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "ObjectMethod" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPureish(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Pureish" || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassDeclaration" === nodeType || "ClassExpression" === nodeType || "BigIntLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Declaration" || "FunctionDeclaration" === nodeType || "VariableDeclaration" === nodeType || "ClassDeclaration" === nodeType || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ImportDeclaration" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType || "TSDeclareFunction" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSEnumDeclaration" === nodeType || "TSModuleDeclaration" === nodeType || nodeType === "Placeholder" && "Declaration" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPatternLike(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "PatternLike" || "Identifier" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLVal(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "LVal" || "Identifier" === nodeType || "MemberExpression" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || "TSParameterProperty" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSEntityName(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSEntityName" || "Identifier" === nodeType || "TSQualifiedName" === nodeType || nodeType === "Placeholder" && "Identifier" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Literal" || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "TemplateLiteral" === nodeType || "BigIntLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImmutable(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Immutable" || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || "JSXExpressionContainer" === nodeType || "JSXSpreadChild" === nodeType || "JSXOpeningElement" === nodeType || "JSXText" === nodeType || "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType || "BigIntLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUserWhitespacable(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "UserWhitespacable" || "ObjectMethod" === nodeType || "ObjectProperty" === nodeType || "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType || "ObjectTypeSpreadProperty" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Method" || "ObjectMethod" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectMember" || "ObjectMethod" === nodeType || "ObjectProperty" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Property" || "ObjectProperty" === nodeType || "ClassProperty" === nodeType || "ClassPrivateProperty" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUnaryLike(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "UnaryLike" || "UnaryExpression" === nodeType || "SpreadElement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPattern(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Pattern" || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || nodeType === "Placeholder" && "Pattern" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClass(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Class" || "ClassDeclaration" === nodeType || "ClassExpression" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isModuleDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ModuleDeclaration" || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ImportDeclaration" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportDeclaration" || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isModuleSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ModuleSpecifier" || "ExportSpecifier" === nodeType || "ImportDefaultSpecifier" === nodeType || "ImportNamespaceSpecifier" === nodeType || "ImportSpecifier" === nodeType || "ExportDefaultSpecifier" === nodeType || "ExportNamespaceSpecifier" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlow(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Flow" || "AnyTypeAnnotation" === nodeType || "ArrayTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "BooleanLiteralTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "ClassImplements" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "DeclaredPredicate" === nodeType || "ExistsTypeAnnotation" === nodeType || "FunctionTypeAnnotation" === nodeType || "FunctionTypeParam" === nodeType || "GenericTypeAnnotation" === nodeType || "InferredPredicate" === nodeType || "InterfaceExtends" === nodeType || "InterfaceDeclaration" === nodeType || "InterfaceTypeAnnotation" === nodeType || "IntersectionTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NullableTypeAnnotation" === nodeType || "NumberLiteralTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "ObjectTypeAnnotation" === nodeType || "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType || "ObjectTypeSpreadProperty" === nodeType || "OpaqueType" === nodeType || "QualifiedTypeIdentifier" === nodeType || "StringLiteralTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "TypeAlias" === nodeType || "TypeAnnotation" === nodeType || "TypeCastExpression" === nodeType || "TypeParameter" === nodeType || "TypeParameterDeclaration" === nodeType || "TypeParameterInstantiation" === nodeType || "UnionTypeAnnotation" === nodeType || "Variance" === nodeType || "VoidTypeAnnotation" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlowType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FlowType" || "AnyTypeAnnotation" === nodeType || "ArrayTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "BooleanLiteralTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "ExistsTypeAnnotation" === nodeType || "FunctionTypeAnnotation" === nodeType || "GenericTypeAnnotation" === nodeType || "InterfaceTypeAnnotation" === nodeType || "IntersectionTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NullableTypeAnnotation" === nodeType || "NumberLiteralTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "ObjectTypeAnnotation" === nodeType || "StringLiteralTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "UnionTypeAnnotation" === nodeType || "VoidTypeAnnotation" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlowBaseAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FlowBaseAnnotation" || "AnyTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "VoidTypeAnnotation" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlowDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FlowDeclaration" || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlowPredicate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FlowPredicate" || "DeclaredPredicate" === nodeType || "InferredPredicate" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSX(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSX" || "JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || "JSXEmptyExpression" === nodeType || "JSXExpressionContainer" === nodeType || "JSXSpreadChild" === nodeType || "JSXIdentifier" === nodeType || "JSXMemberExpression" === nodeType || "JSXNamespacedName" === nodeType || "JSXOpeningElement" === nodeType || "JSXSpreadAttribute" === nodeType || "JSXText" === nodeType || "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPrivate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Private" || "ClassPrivateProperty" === nodeType || "ClassPrivateMethod" === nodeType || "PrivateName" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeElement" || "TSCallSignatureDeclaration" === nodeType || "TSConstructSignatureDeclaration" === nodeType || "TSPropertySignature" === nodeType || "TSMethodSignature" === nodeType || "TSIndexSignature" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSType" || "TSAnyKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSThisType" === nodeType || "TSFunctionType" === nodeType || "TSConstructorType" === nodeType || "TSTypeReference" === nodeType || "TSTypePredicate" === nodeType || "TSTypeQuery" === nodeType || "TSTypeLiteral" === nodeType || "TSArrayType" === nodeType || "TSTupleType" === nodeType || "TSOptionalType" === nodeType || "TSRestType" === nodeType || "TSUnionType" === nodeType || "TSIntersectionType" === nodeType || "TSConditionalType" === nodeType || "TSInferType" === nodeType || "TSParenthesizedType" === nodeType || "TSTypeOperator" === nodeType || "TSIndexedAccessType" === nodeType || "TSMappedType" === nodeType || "TSLiteralType" === nodeType || "TSExpressionWithTypeArguments" === nodeType || "TSImportType" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNumberLiteral(node, opts) { + console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NumberLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isRegexLiteral(node, opts) { + console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "RegexLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isRestProperty(node, opts) { + console.trace("The node type RestProperty has been renamed to RestElement"); + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "RestProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSpreadProperty(node, opts) { + console.trace("The node type SpreadProperty has been renamed to SpreadElement"); + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SpreadProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var invariant = __webpack_require__(4); + +var nullthrows = __webpack_require__(113); + +var _require = __webpack_require__(1), + GraphQLInterfaceType = _require.GraphQLInterfaceType, + GraphQLList = _require.GraphQLList, + GraphQLObjectType = _require.GraphQLObjectType, + GraphQLSchema = _require.GraphQLSchema, + GraphQLUnionType = _require.GraphQLUnionType, + SchemaMetaFieldDef = _require.SchemaMetaFieldDef, + TypeMetaFieldDef = _require.TypeMetaFieldDef, + TypeNameMetaFieldDef = _require.TypeNameMetaFieldDef, + assertAbstractType = _require.assertAbstractType, + getNamedType = _require.getNamedType, + getNullableType = _require.getNullableType; + +var ID = 'id'; +var ID_TYPE = 'ID'; + +/** + * Determine if the given type may implement the named type: + * - it is the named type + * - it implements the named interface + * - it is an abstract type and *some* of its concrete types may + * implement the named type + */ +function mayImplement(schema, type, typeName) { + var unmodifiedType = getRawType(type); + return unmodifiedType.toString() === typeName || implementsInterface(unmodifiedType, typeName) || isAbstractType(unmodifiedType) && hasConcreteTypeThatImplements(schema, unmodifiedType, typeName); +} + +function canHaveSelections(type) { + return type instanceof GraphQLObjectType || type instanceof GraphQLInterfaceType; +} +/** + * Implements duck typing that checks whether a type has an id field of the ID + * type. This is approximating what we can hopefully do with the __id proposal + * a bit more cleanly. + */ + + +function hasID(schema, type) { + var unmodifiedType = getRawType(type); + !(unmodifiedType instanceof GraphQLObjectType || unmodifiedType instanceof GraphQLInterfaceType) ? true ? invariant(false, 'GraphQLSchemaUtils.hasID(): Expected a concrete type or interface, ' + 'got type `%s`.', type) : undefined : void 0; + var idType = schema.getType(ID_TYPE); + var idField = unmodifiedType.getFields()[ID]; + return idField && getRawType(idField.type) === idType; +} +/** + * Determine if a type is abstract (not concrete). + * + * Note: This is used in place of the `graphql` version of the function in order + * to not break `instanceof` checks with Jest. This version also unwraps + * non-null/list wrapper types. + */ + + +function isAbstractType(type) { + var rawType = getRawType(type); + return rawType instanceof GraphQLInterfaceType || rawType instanceof GraphQLUnionType; +} + +function isUnionType(type) { + return type instanceof GraphQLUnionType; +} +/** + * Get the unmodified type, with list/null wrappers removed. + */ + + +function getRawType(type) { + return nullthrows(getNamedType(type)); +} +/** + * Gets the non-list type, removing the list wrapper if present. + */ + + +function getSingularType(type) { + var unmodifiedType = type; + + while (unmodifiedType instanceof GraphQLList) { + unmodifiedType = unmodifiedType.ofType; + } + + return unmodifiedType; +} +/** + * @public + */ + + +function implementsInterface(type, interfaceName) { + return getInterfaces(type).some(function (interfaceType) { + return interfaceType.toString() === interfaceName; + }); +} +/** + * @private + */ + + +function hasConcreteTypeThatImplements(schema, type, interfaceName) { + return isAbstractType(type) && getConcreteTypes(schema, type).some(function (concreteType) { + return implementsInterface(concreteType, interfaceName); + }); +} +/** + * @private + */ + + +function getConcreteTypes(schema, type) { + return schema.getPossibleTypes(assertAbstractType(type)); +} +/** + * @private + */ + + +function getInterfaces(type) { + if (type instanceof GraphQLObjectType) { + return type.getInterfaces(); + } + + return []; +} +/** + * @public + * + * Determine if an AST node contains a fragment/operation definition. + */ + + +function isExecutableDefinitionAST(ast) { + return ast.kind === 'FragmentDefinition' || ast.kind === 'OperationDefinition'; +} +/** + * @public + * + * Determine if an AST node contains a schema definition. + */ + + +function isSchemaDefinitionAST(ast) { + return ast.kind === 'SchemaDefinition' || ast.kind === 'ScalarTypeDefinition' || ast.kind === 'ObjectTypeDefinition' || ast.kind === 'InterfaceTypeDefinition' || ast.kind === 'UnionTypeDefinition' || ast.kind === 'EnumTypeDefinition' || ast.kind === 'InputObjectTypeDefinition' || ast.kind === 'DirectiveDefinition' || ast.kind === 'ScalarTypeExtension' || ast.kind === 'ObjectTypeExtension' || ast.kind === 'InterfaceTypeExtension' || ast.kind === 'UnionTypeExtension' || ast.kind === 'EnumTypeExtension' || ast.kind === 'InputObjectTypeExtension'; +} + +function isServerDefinedField(field, compilerContext, parentType) { + var serverSchema = compilerContext.serverSchema; + var rawType = getRawType(field.type); + var serverType = serverSchema.getType(rawType.name); + var parentServerType = serverSchema.getType(getRawType(parentType).name); + return serverType != null && parentServerType != null && (canHaveSelections(parentType) && assertTypeWithFields(parentType).getFields()[field.name]) != null || // Allow metadata fields and fields defined on classic "fat" interfaces + field.name === SchemaMetaFieldDef.name || field.name === TypeMetaFieldDef.name || field.name === TypeNameMetaFieldDef.name || field.directives.some(function (_ref) { + var name = _ref.name; + return name === 'fixme_fat_interface'; + }); +} + +function isClientDefinedField(field, compilerContext, parentType) { + return !isServerDefinedField(field, compilerContext, parentType); +} + +function assertTypeWithFields(type) { + !(type instanceof GraphQLObjectType || type instanceof GraphQLInterfaceType) ? true ? invariant(false, 'GraphQLSchemaUtils: Expected type `%s` to be an object or interface type.', type) : undefined : void 0; + return type; +} + +function generateIDField(idType) { + return { + kind: 'ScalarField', + alias: null, + args: [], + directives: [], + handles: null, + loc: { + kind: 'Generated' + }, + metadata: null, + name: ID, + type: idType + }; +} + +module.exports = { + assertTypeWithFields: assertTypeWithFields, + canHaveSelections: canHaveSelections, + generateIDField: generateIDField, + getNullableType: getNullableType, + getRawType: getRawType, + getSingularType: getSingularType, + hasID: hasID, + implementsInterface: implementsInterface, + isAbstractType: isAbstractType, + isClientDefinedField: isClientDefinedField, + isExecutableDefinitionAST: isExecutableDefinitionAST, + isSchemaDefinitionAST: isSchemaDefinitionAST, + isServerDefinedField: isServerDefinedField, + isUnionType: isUnionType, + mayImplement: mayImplement +}; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _require = __webpack_require__(1), + GraphQLError = _require.GraphQLError; + +/** + * Creates an error describing invalid application code (GraphQL/Schema) + * that must be fixed by the end developer. This should only be used + * for local errors that don't affect processing of other user code. + */ +function createUserError(message, locations, nodes) { + var _nodes; + + var messageWithLocations = message; + + if (locations != null) { + var printedLocations = printLocations(locations); + messageWithLocations = printedLocations.length === 0 ? message : [message].concat(printedLocations).join('\n\n') + '\n'; + } + + return new GraphQLError(messageWithLocations, (_nodes = nodes) !== null && _nodes !== void 0 ? _nodes : []); +} +/** + * Similar to createUserError but for errors that are *not* recoverable: + * the compiler should not continue to process other inputs because their + * validity can't be determined. + */ + + +function createNonRecoverableUserError(message, locations, nodes) { + var _nodes2; + + var messageWithLocations = message; + + if (locations != null) { + var printedLocations = printLocations(locations); + messageWithLocations = printedLocations.length === 0 ? message : [message].concat(printedLocations).join('\n\n') + '\n'; + } + + var error = new GraphQLError(messageWithLocations, (_nodes2 = nodes) !== null && _nodes2 !== void 0 ? _nodes2 : []); + return new Error(error.message); +} +/** + * Creates an error describing a problem with the compiler itself - such + * as a broken invariant - that must be fixed within the compiler. + */ + + +function createCompilerError(message, locations, nodes) { + var _nodes3; + + var messageWithLocations = message; + + if (locations != null) { + var printedLocations = printLocations(locations); + messageWithLocations = printedLocations.length === 0 ? message : [message].concat(printedLocations).join('\n\n') + '\n'; + } + + var error = new GraphQLError("Internal Error: ".concat(messageWithLocations), (_nodes3 = nodes) !== null && _nodes3 !== void 0 ? _nodes3 : []); + return new Error(error.message); +} +/** + * Merges the results of multiple user errors into one so that they + * can be reported in bulk. + */ + + +function createCombinedError(errors, maybePrefix) { + var prefix = maybePrefix != null ? "".concat(maybePrefix, ": ") : ''; + return new Error("".concat(prefix, "Encountered ").concat(errors.length, " error(s):\n") + errors.map(function (error) { + return String(error).split('\n').map(function (line, index) { + return index === 0 ? "- ".concat(line) : " ".concat(line); + }).join('\n'); + }).join('\n')); +} +/** + * Iterates over the elements of some iterable value, calling the + * supplied callback for each item with a guard for user errors. + * Returns null if the iteration completed without errors, otherwise + * returns an array of all the user errors encountered. + * + * Note that non-user errors are rethrown since they are + * non-recoverable. + */ + + +function eachWithErrors(iterable, fn) { + var errors = []; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = iterable[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var item = _step.value; + + try { + fn(item); + } catch (error) { + if (error instanceof GraphQLError) { + errors.push(error); + } else { + throw error; + } + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + if (errors.length !== 0) { + return errors; + } + + return null; +} + +function printLocations(locations) { + var printedLocations = []; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = locations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var location = _step2.value; + var sourceLocation = location; + + while (sourceLocation.kind === 'Derived') { + sourceLocation = sourceLocation.source; + } + + switch (sourceLocation.kind) { + case 'Source': + { + // source location + var prefix = sourceLocation === location ? 'Source: ' : 'Source (derived): '; + printedLocations.push(prefix + highlightSourceAtLocation(sourceLocation.source, getLocation(sourceLocation.source, sourceLocation.start))); + break; + } + + case 'Generated': + { + printedLocations.push('Source: (generated)'); + break; + } + + case 'Unknown': + { + printedLocations.push('Source: (unknown)'); + break; + } + + default: + { + sourceLocation; + throw createCompilerError("RelayCompilerError: cannot print location '".concat(String(sourceLocation), "'.")); + } + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + return printedLocations; +} +/** + * Render a helpful description of the location of the error in the GraphQL + * Source document. + */ + + +function highlightSourceAtLocation(source, location) { + var firstLineColumnOffset = source.locationOffset.column - 1; + var body = whitespace(firstLineColumnOffset) + source.body; + var lineIndex = location.line - 1; + var lineOffset = source.locationOffset.line - 1; + var lineNum = location.line + lineOffset; + var columnOffset = location.line === 1 ? firstLineColumnOffset : 0; + var columnNum = location.column + columnOffset; + var lines = body.split(/\r\n|[\n\r]/g); + return "".concat(source.name, " (").concat(lineNum, ":").concat(columnNum, ")\n") + printPrefixedLines([// Lines specified like this: ["prefix", "string"], + ["".concat(lineNum - 1, ": "), lines[lineIndex - 1]], ["".concat(lineNum, ": "), lines[lineIndex]], ['', whitespace(columnNum - 1) + '^'], ["".concat(lineNum + 1, ": "), lines[lineIndex + 1]]]); +} + +function printPrefixedLines(lines) { + var existingLines = lines.filter(function (_ref) { + var _ = _ref[0], + line = _ref[1]; + return line !== undefined; + }); + var padLen = 0; + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = existingLines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var _step3$value = _step3.value, + prefix = _step3$value[0]; + padLen = Math.max(padLen, prefix.length); + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { + _iterator3["return"](); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + + return existingLines.map(function (_ref2) { + var prefix = _ref2[0], + line = _ref2[1]; + return lpad(padLen, prefix) + line; + }).join('\n'); +} + +function whitespace(len) { + return Array(len + 1).join(' '); +} + +function lpad(len, str) { + return whitespace(len - str.length) + str; +} + +function getLocation(source, position) { + var lineRegexp = /\r\n|[\n\r]/g; + var line = 1; + var column = position + 1; + var match; + + while ((match = lineRegexp.exec(source.body)) && match.index < position) { + line += 1; + column = position + 1 - (match.index + match[0].length); + } + + return { + line: line, + column: column + }; +} + +module.exports = { + createCombinedError: createCombinedError, + createCompilerError: createCompilerError, + createNonRecoverableUserError: createNonRecoverableUserError, + createUserError: createUserError, + eachWithErrors: eachWithErrors +}; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _asyncToGenerator = __webpack_require__(16); + +var invariant = __webpack_require__(4); +/** + * The compiler profiler builds a "call graph" of high level operations as a + * means of tracking time spent over the course of running the compiler. + */ + + +var enabled = false; +var traces = [{ + ph: 'M', + pid: 0, + tid: 0, + name: 'process_name', + args: { + name: 'relay-compiler' + } +}, { + ph: 'M', + pid: 0, + tid: 0, + name: 'thread_name', + args: { + name: 'relay-compiler' + } +}]; +var stack = []; + +function enable() { + enabled = true; +} + +function getTraces() { + return traces; +} +/** + * Run the provided function as part of a stack profile. + */ + + +function run(name, fn) { + return instrument(fn, name)(); +} +/** + * Run the provided async function as part context in a stack profile. + * See instrumentAsyncContext() for limitations and usage notes. + */ + + +function asyncContext(name, fn) { + return instrumentAsyncContext(fn, name)(); +} +/** + * Wait for the provided async operation as an async profile. + */ + + +function waitFor(name, fn) { + return instrumentWait(fn, name)(); +} +/** + * Return a new instrumented sync function to be part of a stack profile. + * + * This instruments synchronous functions to be displayed in a stack + * visualization. To instrument async functions, see instrumentAsyncContext() + * and instrumentWait(). + */ + + +function instrument(fn, name) { + if (!enabled) { + return fn; + } + + var profileName = name || fn.displayName || fn.name; + + var instrumented = function instrumented() { + var traceId = start(profileName); + + try { + return fn.apply(this, arguments); + } finally { + end(traceId); + } + }; + + instrumented.displayName = profileName; + return instrumented; +} +/** + * Return a new instrumented async function which provides context for a stack. + * + * Because the resulting profiling information will be incorporated into a + * stack visualization, the instrumented function must represent a distinct + * region of time which does not overlap with any other async context. + * + * In other words, functions instrumented with instrumentAsyncContext must not + * run in parallel via Promise.all(). + * + * To instrument functions which will run in parallel, use instrumentWait(). + */ + + +function instrumentAsyncContext(fn, name) { + if (!enabled) { + return fn; + } + + var profileName = name || // $FlowFixMe - Flow no longer considers statics of functions as any + fn.displayName || fn.name; + + var instrumented = + /*#__PURE__*/ + function () { + var _instrumented = _asyncToGenerator(function* () { + var traceId = start(profileName); + + try { + return yield fn.apply(this, arguments); + } finally { + end(traceId); + } + }); + + function instrumented() { + return _instrumented.apply(this, arguments); + } + + return instrumented; + }(); + + instrumented.displayName = profileName; + return instrumented; +} +/** + * Return a new instrumented function which performs an awaited async operation. + * + * The instrumented function is not included in the overall run time of the + * compiler, instead it captures the time waiting on some asynchronous external + * resource such as network or filesystem which are often run in parallel. + */ + + +function instrumentWait(fn, name) { + if (!enabled) { + return fn; + } + + var profileName = name || // $FlowFixMe - Flow no longer considers statics of functions as any + fn.displayName || fn.name; + + var instrumented = + /*#__PURE__*/ + function () { + var _instrumented2 = _asyncToGenerator(function* () { + var traceId = startWait(profileName); + + try { + return yield fn.apply(this, arguments); + } finally { + end(traceId); + } + }); + + function instrumented() { + return _instrumented2.apply(this, arguments); + } + + return instrumented; + }(); + + instrumented.displayName = profileName; + return instrumented; +} + +var T_ZERO = process.hrtime(); // Return a Uint32 of microtime duration since program start. + +function microtime() { + var hrtime = process.hrtime(T_ZERO); // eslint-disable-next-line no-bitwise + + return 0 | hrtime[0] * 1e6 + Math.round(hrtime[1] / 1e3); +} +/** + * Start a stack profile with a particular name, returns an ID to pass to end(). + * + * Other profiles may start before this one ends, which will be represented as + * nested operations, however all nested operations must end before this ends. + * + * In particular, be careful to end after errors. + */ + + +function start(name) { + var beginTrace = { + ph: 'B', + name: name, + pid: 0, + tid: 0, + ts: microtime() + }; + traces.push(beginTrace); + stack.push(beginTrace); + return traces.length - 1; +} + +var asyncID = 0; +/** + * Start an async wait profile with a particular name, returns an ID to pass + * to end(). + * + * Other profiles may start before this one ends, which will be represented as + * nested operations, however all nested operations must end before this ends. + * + * In particular, be careful to end after errors. + */ + +function startWait(name) { + traces.push({ + ph: 'b', + name: name, + cat: 'wait', + id: asyncID++, + pid: 0, + tid: 0, + ts: microtime() + }); + return traces.length - 1; +} + +function end(traceIdx) { + var trace = traces[traceIdx]; + + if (trace.ph === 'b') { + traces.push({ + ph: 'e', + cat: trace.cat, + name: trace.name, + id: trace.id, + pid: trace.pid, + tid: trace.tid, + ts: microtime() + }); + return; + } + + !(trace.ph === 'B') ? true ? invariant(false, 'Begin trace phase') : undefined : void 0; + !(stack.pop() === trace) ? true ? invariant(false, 'GraphQLCompilerProfiler: The profile trace %s ended before nested traces. ' + 'If it is async, try using Profile.waitFor or Profile.profileWait.', trace.name) : undefined : void 0; + var prevTrace = traces[traces.length - 1]; + + if (trace === prevTrace) { + traces[traceIdx] = { + ph: 'X', + name: trace.name, + pid: trace.pid, + tid: trace.tid, + ts: trace.ts, + dur: microtime() - trace.ts + }; + return; + } + + traces.push({ + ph: 'E', + name: trace.name, + pid: trace.pid, + tid: trace.tid, + ts: microtime() + }); +} + +module.exports = { + enable: enable, + getTraces: getTraces, + run: run, + asyncContext: asyncContext, + waitFor: waitFor, + instrument: instrument, + instrumentAsyncContext: instrumentAsyncContext, + instrumentWait: instrumentWait, + start: start, + startWait: startWait, + end: end +}; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var _exportNames = { + react: true, + assertNode: true, + createTypeAnnotationBasedOnTypeof: true, + createUnionTypeAnnotation: true, + cloneNode: true, + clone: true, + cloneDeep: true, + cloneWithoutLoc: true, + addComment: true, + addComments: true, + inheritInnerComments: true, + inheritLeadingComments: true, + inheritsComments: true, + inheritTrailingComments: true, + removeComments: true, + ensureBlock: true, + toBindingIdentifierName: true, + toBlock: true, + toComputedKey: true, + toExpression: true, + toIdentifier: true, + toKeyAlias: true, + toSequenceExpression: true, + toStatement: true, + valueToNode: true, + appendToMemberExpression: true, + inherits: true, + prependToMemberExpression: true, + removeProperties: true, + removePropertiesDeep: true, + removeTypeDuplicates: true, + getBindingIdentifiers: true, + getOuterBindingIdentifiers: true, + traverse: true, + traverseFast: true, + shallowEqual: true, + is: true, + isBinding: true, + isBlockScoped: true, + isImmutable: true, + isLet: true, + isNode: true, + isNodesEquivalent: true, + isPlaceholderType: true, + isReferenced: true, + isScope: true, + isSpecifierDefault: true, + isType: true, + isValidES3Identifier: true, + isValidIdentifier: true, + isVar: true, + matchesPattern: true, + validate: true, + buildMatchMemberExpression: true +}; +Object.defineProperty(exports, "assertNode", { + enumerable: true, + get: function () { + return _assertNode.default; + } +}); +Object.defineProperty(exports, "createTypeAnnotationBasedOnTypeof", { + enumerable: true, + get: function () { + return _createTypeAnnotationBasedOnTypeof.default; + } +}); +Object.defineProperty(exports, "createUnionTypeAnnotation", { + enumerable: true, + get: function () { + return _createUnionTypeAnnotation.default; + } +}); +Object.defineProperty(exports, "cloneNode", { + enumerable: true, + get: function () { + return _cloneNode.default; + } +}); +Object.defineProperty(exports, "clone", { + enumerable: true, + get: function () { + return _clone.default; + } +}); +Object.defineProperty(exports, "cloneDeep", { + enumerable: true, + get: function () { + return _cloneDeep.default; + } +}); +Object.defineProperty(exports, "cloneWithoutLoc", { + enumerable: true, + get: function () { + return _cloneWithoutLoc.default; + } +}); +Object.defineProperty(exports, "addComment", { + enumerable: true, + get: function () { + return _addComment.default; + } +}); +Object.defineProperty(exports, "addComments", { + enumerable: true, + get: function () { + return _addComments.default; + } +}); +Object.defineProperty(exports, "inheritInnerComments", { + enumerable: true, + get: function () { + return _inheritInnerComments.default; + } +}); +Object.defineProperty(exports, "inheritLeadingComments", { + enumerable: true, + get: function () { + return _inheritLeadingComments.default; + } +}); +Object.defineProperty(exports, "inheritsComments", { + enumerable: true, + get: function () { + return _inheritsComments.default; + } +}); +Object.defineProperty(exports, "inheritTrailingComments", { + enumerable: true, + get: function () { + return _inheritTrailingComments.default; + } +}); +Object.defineProperty(exports, "removeComments", { + enumerable: true, + get: function () { + return _removeComments.default; + } +}); +Object.defineProperty(exports, "ensureBlock", { + enumerable: true, + get: function () { + return _ensureBlock.default; + } +}); +Object.defineProperty(exports, "toBindingIdentifierName", { + enumerable: true, + get: function () { + return _toBindingIdentifierName.default; + } +}); +Object.defineProperty(exports, "toBlock", { + enumerable: true, + get: function () { + return _toBlock.default; + } +}); +Object.defineProperty(exports, "toComputedKey", { + enumerable: true, + get: function () { + return _toComputedKey.default; + } +}); +Object.defineProperty(exports, "toExpression", { + enumerable: true, + get: function () { + return _toExpression.default; + } +}); +Object.defineProperty(exports, "toIdentifier", { + enumerable: true, + get: function () { + return _toIdentifier.default; + } +}); +Object.defineProperty(exports, "toKeyAlias", { + enumerable: true, + get: function () { + return _toKeyAlias.default; + } +}); +Object.defineProperty(exports, "toSequenceExpression", { + enumerable: true, + get: function () { + return _toSequenceExpression.default; + } +}); +Object.defineProperty(exports, "toStatement", { + enumerable: true, + get: function () { + return _toStatement.default; + } +}); +Object.defineProperty(exports, "valueToNode", { + enumerable: true, + get: function () { + return _valueToNode.default; + } +}); +Object.defineProperty(exports, "appendToMemberExpression", { + enumerable: true, + get: function () { + return _appendToMemberExpression.default; + } +}); +Object.defineProperty(exports, "inherits", { + enumerable: true, + get: function () { + return _inherits.default; + } +}); +Object.defineProperty(exports, "prependToMemberExpression", { + enumerable: true, + get: function () { + return _prependToMemberExpression.default; + } +}); +Object.defineProperty(exports, "removeProperties", { + enumerable: true, + get: function () { + return _removeProperties.default; + } +}); +Object.defineProperty(exports, "removePropertiesDeep", { + enumerable: true, + get: function () { + return _removePropertiesDeep.default; + } +}); +Object.defineProperty(exports, "removeTypeDuplicates", { + enumerable: true, + get: function () { + return _removeTypeDuplicates.default; + } +}); +Object.defineProperty(exports, "getBindingIdentifiers", { + enumerable: true, + get: function () { + return _getBindingIdentifiers.default; + } +}); +Object.defineProperty(exports, "getOuterBindingIdentifiers", { + enumerable: true, + get: function () { + return _getOuterBindingIdentifiers.default; + } +}); +Object.defineProperty(exports, "traverse", { + enumerable: true, + get: function () { + return _traverse.default; + } +}); +Object.defineProperty(exports, "traverseFast", { + enumerable: true, + get: function () { + return _traverseFast.default; + } +}); +Object.defineProperty(exports, "shallowEqual", { + enumerable: true, + get: function () { + return _shallowEqual.default; + } +}); +Object.defineProperty(exports, "is", { + enumerable: true, + get: function () { + return _is.default; + } +}); +Object.defineProperty(exports, "isBinding", { + enumerable: true, + get: function () { + return _isBinding.default; + } +}); +Object.defineProperty(exports, "isBlockScoped", { + enumerable: true, + get: function () { + return _isBlockScoped.default; + } +}); +Object.defineProperty(exports, "isImmutable", { + enumerable: true, + get: function () { + return _isImmutable.default; + } +}); +Object.defineProperty(exports, "isLet", { + enumerable: true, + get: function () { + return _isLet.default; + } +}); +Object.defineProperty(exports, "isNode", { + enumerable: true, + get: function () { + return _isNode.default; + } +}); +Object.defineProperty(exports, "isNodesEquivalent", { + enumerable: true, + get: function () { + return _isNodesEquivalent.default; + } +}); +Object.defineProperty(exports, "isPlaceholderType", { + enumerable: true, + get: function () { + return _isPlaceholderType.default; + } +}); +Object.defineProperty(exports, "isReferenced", { + enumerable: true, + get: function () { + return _isReferenced.default; + } +}); +Object.defineProperty(exports, "isScope", { + enumerable: true, + get: function () { + return _isScope.default; + } +}); +Object.defineProperty(exports, "isSpecifierDefault", { + enumerable: true, + get: function () { + return _isSpecifierDefault.default; + } +}); +Object.defineProperty(exports, "isType", { + enumerable: true, + get: function () { + return _isType.default; + } +}); +Object.defineProperty(exports, "isValidES3Identifier", { + enumerable: true, + get: function () { + return _isValidES3Identifier.default; + } +}); +Object.defineProperty(exports, "isValidIdentifier", { + enumerable: true, + get: function () { + return _isValidIdentifier.default; + } +}); +Object.defineProperty(exports, "isVar", { + enumerable: true, + get: function () { + return _isVar.default; + } +}); +Object.defineProperty(exports, "matchesPattern", { + enumerable: true, + get: function () { + return _matchesPattern.default; + } +}); +Object.defineProperty(exports, "validate", { + enumerable: true, + get: function () { + return _validate.default; + } +}); +Object.defineProperty(exports, "buildMatchMemberExpression", { + enumerable: true, + get: function () { + return _buildMatchMemberExpression.default; + } +}); +exports.react = void 0; + +var _isReactComponent = _interopRequireDefault(__webpack_require__(150)); + +var _isCompatTag = _interopRequireDefault(__webpack_require__(151)); + +var _buildChildren = _interopRequireDefault(__webpack_require__(152)); + +var _assertNode = _interopRequireDefault(__webpack_require__(163)); + +var _generated = __webpack_require__(164); + +Object.keys(_generated).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _generated[key]; + } + }); +}); + +var _createTypeAnnotationBasedOnTypeof = _interopRequireDefault(__webpack_require__(165)); + +var _createUnionTypeAnnotation = _interopRequireDefault(__webpack_require__(166)); + +var _generated2 = __webpack_require__(13); + +Object.keys(_generated2).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _generated2[key]; + } + }); +}); + +var _cloneNode = _interopRequireDefault(__webpack_require__(23)); + +var _clone = _interopRequireDefault(__webpack_require__(63)); + +var _cloneDeep = _interopRequireDefault(__webpack_require__(167)); + +var _cloneWithoutLoc = _interopRequireDefault(__webpack_require__(168)); + +var _addComment = _interopRequireDefault(__webpack_require__(169)); + +var _addComments = _interopRequireDefault(__webpack_require__(64)); + +var _inheritInnerComments = _interopRequireDefault(__webpack_require__(65)); + +var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(66)); + +var _inheritsComments = _interopRequireDefault(__webpack_require__(67)); + +var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(68)); + +var _removeComments = _interopRequireDefault(__webpack_require__(171)); + +var _generated3 = __webpack_require__(172); + +Object.keys(_generated3).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _generated3[key]; + } + }); +}); + +var _constants = __webpack_require__(17); + +Object.keys(_constants).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _constants[key]; + } + }); +}); + +var _ensureBlock = _interopRequireDefault(__webpack_require__(173)); + +var _toBindingIdentifierName = _interopRequireDefault(__webpack_require__(174)); + +var _toBlock = _interopRequireDefault(__webpack_require__(69)); + +var _toComputedKey = _interopRequireDefault(__webpack_require__(175)); + +var _toExpression = _interopRequireDefault(__webpack_require__(176)); + +var _toIdentifier = _interopRequireDefault(__webpack_require__(70)); + +var _toKeyAlias = _interopRequireDefault(__webpack_require__(177)); + +var _toSequenceExpression = _interopRequireDefault(__webpack_require__(178)); + +var _toStatement = _interopRequireDefault(__webpack_require__(180)); + +var _valueToNode = _interopRequireDefault(__webpack_require__(181)); + +var _definitions = __webpack_require__(12); + +Object.keys(_definitions).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _definitions[key]; + } + }); +}); + +var _appendToMemberExpression = _interopRequireDefault(__webpack_require__(184)); + +var _inherits = _interopRequireDefault(__webpack_require__(185)); + +var _prependToMemberExpression = _interopRequireDefault(__webpack_require__(186)); + +var _removeProperties = _interopRequireDefault(__webpack_require__(73)); + +var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(71)); + +var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(62)); + +var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(26)); + +var _getOuterBindingIdentifiers = _interopRequireDefault(__webpack_require__(187)); + +var _traverse = _interopRequireDefault(__webpack_require__(188)); + +var _traverseFast = _interopRequireDefault(__webpack_require__(72)); + +var _shallowEqual = _interopRequireDefault(__webpack_require__(31)); + +var _is = _interopRequireDefault(__webpack_require__(33)); + +var _isBinding = _interopRequireDefault(__webpack_require__(189)); + +var _isBlockScoped = _interopRequireDefault(__webpack_require__(190)); + +var _isImmutable = _interopRequireDefault(__webpack_require__(191)); + +var _isLet = _interopRequireDefault(__webpack_require__(74)); + +var _isNode = _interopRequireDefault(__webpack_require__(61)); + +var _isNodesEquivalent = _interopRequireDefault(__webpack_require__(192)); + +var _isPlaceholderType = _interopRequireDefault(__webpack_require__(58)); + +var _isReferenced = _interopRequireDefault(__webpack_require__(193)); + +var _isScope = _interopRequireDefault(__webpack_require__(194)); + +var _isSpecifierDefault = _interopRequireDefault(__webpack_require__(195)); + +var _isType = _interopRequireDefault(__webpack_require__(34)); + +var _isValidES3Identifier = _interopRequireDefault(__webpack_require__(196)); + +var _isValidIdentifier = _interopRequireDefault(__webpack_require__(22)); + +var _isVar = _interopRequireDefault(__webpack_require__(197)); + +var _matchesPattern = _interopRequireDefault(__webpack_require__(57)); + +var _validate = _interopRequireDefault(__webpack_require__(60)); + +var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(56)); + +var _generated4 = __webpack_require__(7); + +Object.keys(_generated4).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _generated4[key]; + } + }); +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const react = { + isReactComponent: _isReactComponent.default, + isCompatTag: _isCompatTag.default, + buildChildren: _buildChildren.default +}; +exports.react = react; + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "VISITOR_KEYS", { + enumerable: true, + get: function () { + return _utils.VISITOR_KEYS; + } +}); +Object.defineProperty(exports, "ALIAS_KEYS", { + enumerable: true, + get: function () { + return _utils.ALIAS_KEYS; + } +}); +Object.defineProperty(exports, "FLIPPED_ALIAS_KEYS", { + enumerable: true, + get: function () { + return _utils.FLIPPED_ALIAS_KEYS; + } +}); +Object.defineProperty(exports, "NODE_FIELDS", { + enumerable: true, + get: function () { + return _utils.NODE_FIELDS; + } +}); +Object.defineProperty(exports, "BUILDER_KEYS", { + enumerable: true, + get: function () { + return _utils.BUILDER_KEYS; + } +}); +Object.defineProperty(exports, "DEPRECATED_KEYS", { + enumerable: true, + get: function () { + return _utils.DEPRECATED_KEYS; + } +}); +Object.defineProperty(exports, "PLACEHOLDERS", { + enumerable: true, + get: function () { + return _placeholders.PLACEHOLDERS; + } +}); +Object.defineProperty(exports, "PLACEHOLDERS_ALIAS", { + enumerable: true, + get: function () { + return _placeholders.PLACEHOLDERS_ALIAS; + } +}); +Object.defineProperty(exports, "PLACEHOLDERS_FLIPPED_ALIAS", { + enumerable: true, + get: function () { + return _placeholders.PLACEHOLDERS_FLIPPED_ALIAS; + } +}); +exports.TYPES = void 0; + +function _toFastProperties() { + const data = _interopRequireDefault(__webpack_require__(156)); + + _toFastProperties = function () { + return data; + }; + + return data; +} + +__webpack_require__(32); + +__webpack_require__(35); + +__webpack_require__(158); + +__webpack_require__(159); + +__webpack_require__(160); + +__webpack_require__(161); + +__webpack_require__(162); + +var _utils = __webpack_require__(15); + +var _placeholders = __webpack_require__(59); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _toFastProperties().default)(_utils.VISITOR_KEYS); +(0, _toFastProperties().default)(_utils.ALIAS_KEYS); +(0, _toFastProperties().default)(_utils.FLIPPED_ALIAS_KEYS); +(0, _toFastProperties().default)(_utils.NODE_FIELDS); +(0, _toFastProperties().default)(_utils.BUILDER_KEYS); +(0, _toFastProperties().default)(_utils.DEPRECATED_KEYS); +(0, _toFastProperties().default)(_placeholders.PLACEHOLDERS_ALIAS); +(0, _toFastProperties().default)(_placeholders.PLACEHOLDERS_FLIPPED_ALIAS); +const TYPES = Object.keys(_utils.VISITOR_KEYS).concat(Object.keys(_utils.FLIPPED_ALIAS_KEYS)).concat(Object.keys(_utils.DEPRECATED_KEYS)); +exports.TYPES = TYPES; + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.arrayExpression = exports.ArrayExpression = ArrayExpression; +exports.assignmentExpression = exports.AssignmentExpression = AssignmentExpression; +exports.binaryExpression = exports.BinaryExpression = BinaryExpression; +exports.interpreterDirective = exports.InterpreterDirective = InterpreterDirective; +exports.directive = exports.Directive = Directive; +exports.directiveLiteral = exports.DirectiveLiteral = DirectiveLiteral; +exports.blockStatement = exports.BlockStatement = BlockStatement; +exports.breakStatement = exports.BreakStatement = BreakStatement; +exports.callExpression = exports.CallExpression = CallExpression; +exports.catchClause = exports.CatchClause = CatchClause; +exports.conditionalExpression = exports.ConditionalExpression = ConditionalExpression; +exports.continueStatement = exports.ContinueStatement = ContinueStatement; +exports.debuggerStatement = exports.DebuggerStatement = DebuggerStatement; +exports.doWhileStatement = exports.DoWhileStatement = DoWhileStatement; +exports.emptyStatement = exports.EmptyStatement = EmptyStatement; +exports.expressionStatement = exports.ExpressionStatement = ExpressionStatement; +exports.file = exports.File = File; +exports.forInStatement = exports.ForInStatement = ForInStatement; +exports.forStatement = exports.ForStatement = ForStatement; +exports.functionDeclaration = exports.FunctionDeclaration = FunctionDeclaration; +exports.functionExpression = exports.FunctionExpression = FunctionExpression; +exports.identifier = exports.Identifier = Identifier; +exports.ifStatement = exports.IfStatement = IfStatement; +exports.labeledStatement = exports.LabeledStatement = LabeledStatement; +exports.stringLiteral = exports.StringLiteral = StringLiteral; +exports.numericLiteral = exports.NumericLiteral = NumericLiteral; +exports.nullLiteral = exports.NullLiteral = NullLiteral; +exports.booleanLiteral = exports.BooleanLiteral = BooleanLiteral; +exports.regExpLiteral = exports.RegExpLiteral = RegExpLiteral; +exports.logicalExpression = exports.LogicalExpression = LogicalExpression; +exports.memberExpression = exports.MemberExpression = MemberExpression; +exports.newExpression = exports.NewExpression = NewExpression; +exports.program = exports.Program = Program; +exports.objectExpression = exports.ObjectExpression = ObjectExpression; +exports.objectMethod = exports.ObjectMethod = ObjectMethod; +exports.objectProperty = exports.ObjectProperty = ObjectProperty; +exports.restElement = exports.RestElement = RestElement; +exports.returnStatement = exports.ReturnStatement = ReturnStatement; +exports.sequenceExpression = exports.SequenceExpression = SequenceExpression; +exports.parenthesizedExpression = exports.ParenthesizedExpression = ParenthesizedExpression; +exports.switchCase = exports.SwitchCase = SwitchCase; +exports.switchStatement = exports.SwitchStatement = SwitchStatement; +exports.thisExpression = exports.ThisExpression = ThisExpression; +exports.throwStatement = exports.ThrowStatement = ThrowStatement; +exports.tryStatement = exports.TryStatement = TryStatement; +exports.unaryExpression = exports.UnaryExpression = UnaryExpression; +exports.updateExpression = exports.UpdateExpression = UpdateExpression; +exports.variableDeclaration = exports.VariableDeclaration = VariableDeclaration; +exports.variableDeclarator = exports.VariableDeclarator = VariableDeclarator; +exports.whileStatement = exports.WhileStatement = WhileStatement; +exports.withStatement = exports.WithStatement = WithStatement; +exports.assignmentPattern = exports.AssignmentPattern = AssignmentPattern; +exports.arrayPattern = exports.ArrayPattern = ArrayPattern; +exports.arrowFunctionExpression = exports.ArrowFunctionExpression = ArrowFunctionExpression; +exports.classBody = exports.ClassBody = ClassBody; +exports.classDeclaration = exports.ClassDeclaration = ClassDeclaration; +exports.classExpression = exports.ClassExpression = ClassExpression; +exports.exportAllDeclaration = exports.ExportAllDeclaration = ExportAllDeclaration; +exports.exportDefaultDeclaration = exports.ExportDefaultDeclaration = ExportDefaultDeclaration; +exports.exportNamedDeclaration = exports.ExportNamedDeclaration = ExportNamedDeclaration; +exports.exportSpecifier = exports.ExportSpecifier = ExportSpecifier; +exports.forOfStatement = exports.ForOfStatement = ForOfStatement; +exports.importDeclaration = exports.ImportDeclaration = ImportDeclaration; +exports.importDefaultSpecifier = exports.ImportDefaultSpecifier = ImportDefaultSpecifier; +exports.importNamespaceSpecifier = exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier; +exports.importSpecifier = exports.ImportSpecifier = ImportSpecifier; +exports.metaProperty = exports.MetaProperty = MetaProperty; +exports.classMethod = exports.ClassMethod = ClassMethod; +exports.objectPattern = exports.ObjectPattern = ObjectPattern; +exports.spreadElement = exports.SpreadElement = SpreadElement; +exports.super = exports.Super = Super; +exports.taggedTemplateExpression = exports.TaggedTemplateExpression = TaggedTemplateExpression; +exports.templateElement = exports.TemplateElement = TemplateElement; +exports.templateLiteral = exports.TemplateLiteral = TemplateLiteral; +exports.yieldExpression = exports.YieldExpression = YieldExpression; +exports.anyTypeAnnotation = exports.AnyTypeAnnotation = AnyTypeAnnotation; +exports.arrayTypeAnnotation = exports.ArrayTypeAnnotation = ArrayTypeAnnotation; +exports.booleanTypeAnnotation = exports.BooleanTypeAnnotation = BooleanTypeAnnotation; +exports.booleanLiteralTypeAnnotation = exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation; +exports.nullLiteralTypeAnnotation = exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation; +exports.classImplements = exports.ClassImplements = ClassImplements; +exports.declareClass = exports.DeclareClass = DeclareClass; +exports.declareFunction = exports.DeclareFunction = DeclareFunction; +exports.declareInterface = exports.DeclareInterface = DeclareInterface; +exports.declareModule = exports.DeclareModule = DeclareModule; +exports.declareModuleExports = exports.DeclareModuleExports = DeclareModuleExports; +exports.declareTypeAlias = exports.DeclareTypeAlias = DeclareTypeAlias; +exports.declareOpaqueType = exports.DeclareOpaqueType = DeclareOpaqueType; +exports.declareVariable = exports.DeclareVariable = DeclareVariable; +exports.declareExportDeclaration = exports.DeclareExportDeclaration = DeclareExportDeclaration; +exports.declareExportAllDeclaration = exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration; +exports.declaredPredicate = exports.DeclaredPredicate = DeclaredPredicate; +exports.existsTypeAnnotation = exports.ExistsTypeAnnotation = ExistsTypeAnnotation; +exports.functionTypeAnnotation = exports.FunctionTypeAnnotation = FunctionTypeAnnotation; +exports.functionTypeParam = exports.FunctionTypeParam = FunctionTypeParam; +exports.genericTypeAnnotation = exports.GenericTypeAnnotation = GenericTypeAnnotation; +exports.inferredPredicate = exports.InferredPredicate = InferredPredicate; +exports.interfaceExtends = exports.InterfaceExtends = InterfaceExtends; +exports.interfaceDeclaration = exports.InterfaceDeclaration = InterfaceDeclaration; +exports.interfaceTypeAnnotation = exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation; +exports.intersectionTypeAnnotation = exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation; +exports.mixedTypeAnnotation = exports.MixedTypeAnnotation = MixedTypeAnnotation; +exports.emptyTypeAnnotation = exports.EmptyTypeAnnotation = EmptyTypeAnnotation; +exports.nullableTypeAnnotation = exports.NullableTypeAnnotation = NullableTypeAnnotation; +exports.numberLiteralTypeAnnotation = exports.NumberLiteralTypeAnnotation = NumberLiteralTypeAnnotation; +exports.numberTypeAnnotation = exports.NumberTypeAnnotation = NumberTypeAnnotation; +exports.objectTypeAnnotation = exports.ObjectTypeAnnotation = ObjectTypeAnnotation; +exports.objectTypeInternalSlot = exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot; +exports.objectTypeCallProperty = exports.ObjectTypeCallProperty = ObjectTypeCallProperty; +exports.objectTypeIndexer = exports.ObjectTypeIndexer = ObjectTypeIndexer; +exports.objectTypeProperty = exports.ObjectTypeProperty = ObjectTypeProperty; +exports.objectTypeSpreadProperty = exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty; +exports.opaqueType = exports.OpaqueType = OpaqueType; +exports.qualifiedTypeIdentifier = exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier; +exports.stringLiteralTypeAnnotation = exports.StringLiteralTypeAnnotation = StringLiteralTypeAnnotation; +exports.stringTypeAnnotation = exports.StringTypeAnnotation = StringTypeAnnotation; +exports.thisTypeAnnotation = exports.ThisTypeAnnotation = ThisTypeAnnotation; +exports.tupleTypeAnnotation = exports.TupleTypeAnnotation = TupleTypeAnnotation; +exports.typeofTypeAnnotation = exports.TypeofTypeAnnotation = TypeofTypeAnnotation; +exports.typeAlias = exports.TypeAlias = TypeAlias; +exports.typeAnnotation = exports.TypeAnnotation = TypeAnnotation; +exports.typeCastExpression = exports.TypeCastExpression = TypeCastExpression; +exports.typeParameter = exports.TypeParameter = TypeParameter; +exports.typeParameterDeclaration = exports.TypeParameterDeclaration = TypeParameterDeclaration; +exports.typeParameterInstantiation = exports.TypeParameterInstantiation = TypeParameterInstantiation; +exports.unionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation; +exports.variance = exports.Variance = Variance; +exports.voidTypeAnnotation = exports.VoidTypeAnnotation = VoidTypeAnnotation; +exports.jSXAttribute = exports.jsxAttribute = exports.JSXAttribute = JSXAttribute; +exports.jSXClosingElement = exports.jsxClosingElement = exports.JSXClosingElement = JSXClosingElement; +exports.jSXElement = exports.jsxElement = exports.JSXElement = JSXElement; +exports.jSXEmptyExpression = exports.jsxEmptyExpression = exports.JSXEmptyExpression = JSXEmptyExpression; +exports.jSXExpressionContainer = exports.jsxExpressionContainer = exports.JSXExpressionContainer = JSXExpressionContainer; +exports.jSXSpreadChild = exports.jsxSpreadChild = exports.JSXSpreadChild = JSXSpreadChild; +exports.jSXIdentifier = exports.jsxIdentifier = exports.JSXIdentifier = JSXIdentifier; +exports.jSXMemberExpression = exports.jsxMemberExpression = exports.JSXMemberExpression = JSXMemberExpression; +exports.jSXNamespacedName = exports.jsxNamespacedName = exports.JSXNamespacedName = JSXNamespacedName; +exports.jSXOpeningElement = exports.jsxOpeningElement = exports.JSXOpeningElement = JSXOpeningElement; +exports.jSXSpreadAttribute = exports.jsxSpreadAttribute = exports.JSXSpreadAttribute = JSXSpreadAttribute; +exports.jSXText = exports.jsxText = exports.JSXText = JSXText; +exports.jSXFragment = exports.jsxFragment = exports.JSXFragment = JSXFragment; +exports.jSXOpeningFragment = exports.jsxOpeningFragment = exports.JSXOpeningFragment = JSXOpeningFragment; +exports.jSXClosingFragment = exports.jsxClosingFragment = exports.JSXClosingFragment = JSXClosingFragment; +exports.noop = exports.Noop = Noop; +exports.placeholder = exports.Placeholder = Placeholder; +exports.argumentPlaceholder = exports.ArgumentPlaceholder = ArgumentPlaceholder; +exports.awaitExpression = exports.AwaitExpression = AwaitExpression; +exports.bindExpression = exports.BindExpression = BindExpression; +exports.classProperty = exports.ClassProperty = ClassProperty; +exports.optionalMemberExpression = exports.OptionalMemberExpression = OptionalMemberExpression; +exports.pipelineTopicExpression = exports.PipelineTopicExpression = PipelineTopicExpression; +exports.pipelineBareFunction = exports.PipelineBareFunction = PipelineBareFunction; +exports.pipelinePrimaryTopicReference = exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference; +exports.optionalCallExpression = exports.OptionalCallExpression = OptionalCallExpression; +exports.classPrivateProperty = exports.ClassPrivateProperty = ClassPrivateProperty; +exports.classPrivateMethod = exports.ClassPrivateMethod = ClassPrivateMethod; +exports.import = exports.Import = Import; +exports.decorator = exports.Decorator = Decorator; +exports.doExpression = exports.DoExpression = DoExpression; +exports.exportDefaultSpecifier = exports.ExportDefaultSpecifier = ExportDefaultSpecifier; +exports.exportNamespaceSpecifier = exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier; +exports.privateName = exports.PrivateName = PrivateName; +exports.bigIntLiteral = exports.BigIntLiteral = BigIntLiteral; +exports.tSParameterProperty = exports.tsParameterProperty = exports.TSParameterProperty = TSParameterProperty; +exports.tSDeclareFunction = exports.tsDeclareFunction = exports.TSDeclareFunction = TSDeclareFunction; +exports.tSDeclareMethod = exports.tsDeclareMethod = exports.TSDeclareMethod = TSDeclareMethod; +exports.tSQualifiedName = exports.tsQualifiedName = exports.TSQualifiedName = TSQualifiedName; +exports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration; +exports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration; +exports.tSPropertySignature = exports.tsPropertySignature = exports.TSPropertySignature = TSPropertySignature; +exports.tSMethodSignature = exports.tsMethodSignature = exports.TSMethodSignature = TSMethodSignature; +exports.tSIndexSignature = exports.tsIndexSignature = exports.TSIndexSignature = TSIndexSignature; +exports.tSAnyKeyword = exports.tsAnyKeyword = exports.TSAnyKeyword = TSAnyKeyword; +exports.tSUnknownKeyword = exports.tsUnknownKeyword = exports.TSUnknownKeyword = TSUnknownKeyword; +exports.tSNumberKeyword = exports.tsNumberKeyword = exports.TSNumberKeyword = TSNumberKeyword; +exports.tSObjectKeyword = exports.tsObjectKeyword = exports.TSObjectKeyword = TSObjectKeyword; +exports.tSBooleanKeyword = exports.tsBooleanKeyword = exports.TSBooleanKeyword = TSBooleanKeyword; +exports.tSStringKeyword = exports.tsStringKeyword = exports.TSStringKeyword = TSStringKeyword; +exports.tSSymbolKeyword = exports.tsSymbolKeyword = exports.TSSymbolKeyword = TSSymbolKeyword; +exports.tSVoidKeyword = exports.tsVoidKeyword = exports.TSVoidKeyword = TSVoidKeyword; +exports.tSUndefinedKeyword = exports.tsUndefinedKeyword = exports.TSUndefinedKeyword = TSUndefinedKeyword; +exports.tSNullKeyword = exports.tsNullKeyword = exports.TSNullKeyword = TSNullKeyword; +exports.tSNeverKeyword = exports.tsNeverKeyword = exports.TSNeverKeyword = TSNeverKeyword; +exports.tSThisType = exports.tsThisType = exports.TSThisType = TSThisType; +exports.tSFunctionType = exports.tsFunctionType = exports.TSFunctionType = TSFunctionType; +exports.tSConstructorType = exports.tsConstructorType = exports.TSConstructorType = TSConstructorType; +exports.tSTypeReference = exports.tsTypeReference = exports.TSTypeReference = TSTypeReference; +exports.tSTypePredicate = exports.tsTypePredicate = exports.TSTypePredicate = TSTypePredicate; +exports.tSTypeQuery = exports.tsTypeQuery = exports.TSTypeQuery = TSTypeQuery; +exports.tSTypeLiteral = exports.tsTypeLiteral = exports.TSTypeLiteral = TSTypeLiteral; +exports.tSArrayType = exports.tsArrayType = exports.TSArrayType = TSArrayType; +exports.tSTupleType = exports.tsTupleType = exports.TSTupleType = TSTupleType; +exports.tSOptionalType = exports.tsOptionalType = exports.TSOptionalType = TSOptionalType; +exports.tSRestType = exports.tsRestType = exports.TSRestType = TSRestType; +exports.tSUnionType = exports.tsUnionType = exports.TSUnionType = TSUnionType; +exports.tSIntersectionType = exports.tsIntersectionType = exports.TSIntersectionType = TSIntersectionType; +exports.tSConditionalType = exports.tsConditionalType = exports.TSConditionalType = TSConditionalType; +exports.tSInferType = exports.tsInferType = exports.TSInferType = TSInferType; +exports.tSParenthesizedType = exports.tsParenthesizedType = exports.TSParenthesizedType = TSParenthesizedType; +exports.tSTypeOperator = exports.tsTypeOperator = exports.TSTypeOperator = TSTypeOperator; +exports.tSIndexedAccessType = exports.tsIndexedAccessType = exports.TSIndexedAccessType = TSIndexedAccessType; +exports.tSMappedType = exports.tsMappedType = exports.TSMappedType = TSMappedType; +exports.tSLiteralType = exports.tsLiteralType = exports.TSLiteralType = TSLiteralType; +exports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments; +exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = exports.TSInterfaceDeclaration = TSInterfaceDeclaration; +exports.tSInterfaceBody = exports.tsInterfaceBody = exports.TSInterfaceBody = TSInterfaceBody; +exports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration; +exports.tSAsExpression = exports.tsAsExpression = exports.TSAsExpression = TSAsExpression; +exports.tSTypeAssertion = exports.tsTypeAssertion = exports.TSTypeAssertion = TSTypeAssertion; +exports.tSEnumDeclaration = exports.tsEnumDeclaration = exports.TSEnumDeclaration = TSEnumDeclaration; +exports.tSEnumMember = exports.tsEnumMember = exports.TSEnumMember = TSEnumMember; +exports.tSModuleDeclaration = exports.tsModuleDeclaration = exports.TSModuleDeclaration = TSModuleDeclaration; +exports.tSModuleBlock = exports.tsModuleBlock = exports.TSModuleBlock = TSModuleBlock; +exports.tSImportType = exports.tsImportType = exports.TSImportType = TSImportType; +exports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration; +exports.tSExternalModuleReference = exports.tsExternalModuleReference = exports.TSExternalModuleReference = TSExternalModuleReference; +exports.tSNonNullExpression = exports.tsNonNullExpression = exports.TSNonNullExpression = TSNonNullExpression; +exports.tSExportAssignment = exports.tsExportAssignment = exports.TSExportAssignment = TSExportAssignment; +exports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration; +exports.tSTypeAnnotation = exports.tsTypeAnnotation = exports.TSTypeAnnotation = TSTypeAnnotation; +exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation; +exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = exports.TSTypeParameterDeclaration = TSTypeParameterDeclaration; +exports.tSTypeParameter = exports.tsTypeParameter = exports.TSTypeParameter = TSTypeParameter; +exports.numberLiteral = exports.NumberLiteral = NumberLiteral; +exports.regexLiteral = exports.RegexLiteral = RegexLiteral; +exports.restProperty = exports.RestProperty = RestProperty; +exports.spreadProperty = exports.SpreadProperty = SpreadProperty; + +var _builder = _interopRequireDefault(__webpack_require__(154)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function ArrayExpression(...args) { + return (0, _builder.default)("ArrayExpression", ...args); +} + +function AssignmentExpression(...args) { + return (0, _builder.default)("AssignmentExpression", ...args); +} + +function BinaryExpression(...args) { + return (0, _builder.default)("BinaryExpression", ...args); +} + +function InterpreterDirective(...args) { + return (0, _builder.default)("InterpreterDirective", ...args); +} + +function Directive(...args) { + return (0, _builder.default)("Directive", ...args); +} + +function DirectiveLiteral(...args) { + return (0, _builder.default)("DirectiveLiteral", ...args); +} + +function BlockStatement(...args) { + return (0, _builder.default)("BlockStatement", ...args); +} + +function BreakStatement(...args) { + return (0, _builder.default)("BreakStatement", ...args); +} + +function CallExpression(...args) { + return (0, _builder.default)("CallExpression", ...args); +} + +function CatchClause(...args) { + return (0, _builder.default)("CatchClause", ...args); +} + +function ConditionalExpression(...args) { + return (0, _builder.default)("ConditionalExpression", ...args); +} + +function ContinueStatement(...args) { + return (0, _builder.default)("ContinueStatement", ...args); +} + +function DebuggerStatement(...args) { + return (0, _builder.default)("DebuggerStatement", ...args); +} + +function DoWhileStatement(...args) { + return (0, _builder.default)("DoWhileStatement", ...args); +} + +function EmptyStatement(...args) { + return (0, _builder.default)("EmptyStatement", ...args); +} + +function ExpressionStatement(...args) { + return (0, _builder.default)("ExpressionStatement", ...args); +} + +function File(...args) { + return (0, _builder.default)("File", ...args); +} + +function ForInStatement(...args) { + return (0, _builder.default)("ForInStatement", ...args); +} + +function ForStatement(...args) { + return (0, _builder.default)("ForStatement", ...args); +} + +function FunctionDeclaration(...args) { + return (0, _builder.default)("FunctionDeclaration", ...args); +} + +function FunctionExpression(...args) { + return (0, _builder.default)("FunctionExpression", ...args); +} + +function Identifier(...args) { + return (0, _builder.default)("Identifier", ...args); +} + +function IfStatement(...args) { + return (0, _builder.default)("IfStatement", ...args); +} + +function LabeledStatement(...args) { + return (0, _builder.default)("LabeledStatement", ...args); +} + +function StringLiteral(...args) { + return (0, _builder.default)("StringLiteral", ...args); +} + +function NumericLiteral(...args) { + return (0, _builder.default)("NumericLiteral", ...args); +} + +function NullLiteral(...args) { + return (0, _builder.default)("NullLiteral", ...args); +} + +function BooleanLiteral(...args) { + return (0, _builder.default)("BooleanLiteral", ...args); +} + +function RegExpLiteral(...args) { + return (0, _builder.default)("RegExpLiteral", ...args); +} + +function LogicalExpression(...args) { + return (0, _builder.default)("LogicalExpression", ...args); +} + +function MemberExpression(...args) { + return (0, _builder.default)("MemberExpression", ...args); +} + +function NewExpression(...args) { + return (0, _builder.default)("NewExpression", ...args); +} + +function Program(...args) { + return (0, _builder.default)("Program", ...args); +} + +function ObjectExpression(...args) { + return (0, _builder.default)("ObjectExpression", ...args); +} + +function ObjectMethod(...args) { + return (0, _builder.default)("ObjectMethod", ...args); +} + +function ObjectProperty(...args) { + return (0, _builder.default)("ObjectProperty", ...args); +} + +function RestElement(...args) { + return (0, _builder.default)("RestElement", ...args); +} + +function ReturnStatement(...args) { + return (0, _builder.default)("ReturnStatement", ...args); +} + +function SequenceExpression(...args) { + return (0, _builder.default)("SequenceExpression", ...args); +} + +function ParenthesizedExpression(...args) { + return (0, _builder.default)("ParenthesizedExpression", ...args); +} + +function SwitchCase(...args) { + return (0, _builder.default)("SwitchCase", ...args); +} + +function SwitchStatement(...args) { + return (0, _builder.default)("SwitchStatement", ...args); +} + +function ThisExpression(...args) { + return (0, _builder.default)("ThisExpression", ...args); +} + +function ThrowStatement(...args) { + return (0, _builder.default)("ThrowStatement", ...args); +} + +function TryStatement(...args) { + return (0, _builder.default)("TryStatement", ...args); +} + +function UnaryExpression(...args) { + return (0, _builder.default)("UnaryExpression", ...args); +} + +function UpdateExpression(...args) { + return (0, _builder.default)("UpdateExpression", ...args); +} + +function VariableDeclaration(...args) { + return (0, _builder.default)("VariableDeclaration", ...args); +} + +function VariableDeclarator(...args) { + return (0, _builder.default)("VariableDeclarator", ...args); +} + +function WhileStatement(...args) { + return (0, _builder.default)("WhileStatement", ...args); +} + +function WithStatement(...args) { + return (0, _builder.default)("WithStatement", ...args); +} + +function AssignmentPattern(...args) { + return (0, _builder.default)("AssignmentPattern", ...args); +} + +function ArrayPattern(...args) { + return (0, _builder.default)("ArrayPattern", ...args); +} + +function ArrowFunctionExpression(...args) { + return (0, _builder.default)("ArrowFunctionExpression", ...args); +} + +function ClassBody(...args) { + return (0, _builder.default)("ClassBody", ...args); +} + +function ClassDeclaration(...args) { + return (0, _builder.default)("ClassDeclaration", ...args); +} + +function ClassExpression(...args) { + return (0, _builder.default)("ClassExpression", ...args); +} + +function ExportAllDeclaration(...args) { + return (0, _builder.default)("ExportAllDeclaration", ...args); +} + +function ExportDefaultDeclaration(...args) { + return (0, _builder.default)("ExportDefaultDeclaration", ...args); +} + +function ExportNamedDeclaration(...args) { + return (0, _builder.default)("ExportNamedDeclaration", ...args); +} + +function ExportSpecifier(...args) { + return (0, _builder.default)("ExportSpecifier", ...args); +} + +function ForOfStatement(...args) { + return (0, _builder.default)("ForOfStatement", ...args); +} + +function ImportDeclaration(...args) { + return (0, _builder.default)("ImportDeclaration", ...args); +} + +function ImportDefaultSpecifier(...args) { + return (0, _builder.default)("ImportDefaultSpecifier", ...args); +} + +function ImportNamespaceSpecifier(...args) { + return (0, _builder.default)("ImportNamespaceSpecifier", ...args); +} + +function ImportSpecifier(...args) { + return (0, _builder.default)("ImportSpecifier", ...args); +} + +function MetaProperty(...args) { + return (0, _builder.default)("MetaProperty", ...args); +} + +function ClassMethod(...args) { + return (0, _builder.default)("ClassMethod", ...args); +} + +function ObjectPattern(...args) { + return (0, _builder.default)("ObjectPattern", ...args); +} + +function SpreadElement(...args) { + return (0, _builder.default)("SpreadElement", ...args); +} + +function Super(...args) { + return (0, _builder.default)("Super", ...args); +} + +function TaggedTemplateExpression(...args) { + return (0, _builder.default)("TaggedTemplateExpression", ...args); +} + +function TemplateElement(...args) { + return (0, _builder.default)("TemplateElement", ...args); +} + +function TemplateLiteral(...args) { + return (0, _builder.default)("TemplateLiteral", ...args); +} + +function YieldExpression(...args) { + return (0, _builder.default)("YieldExpression", ...args); +} + +function AnyTypeAnnotation(...args) { + return (0, _builder.default)("AnyTypeAnnotation", ...args); +} + +function ArrayTypeAnnotation(...args) { + return (0, _builder.default)("ArrayTypeAnnotation", ...args); +} + +function BooleanTypeAnnotation(...args) { + return (0, _builder.default)("BooleanTypeAnnotation", ...args); +} + +function BooleanLiteralTypeAnnotation(...args) { + return (0, _builder.default)("BooleanLiteralTypeAnnotation", ...args); +} + +function NullLiteralTypeAnnotation(...args) { + return (0, _builder.default)("NullLiteralTypeAnnotation", ...args); +} + +function ClassImplements(...args) { + return (0, _builder.default)("ClassImplements", ...args); +} + +function DeclareClass(...args) { + return (0, _builder.default)("DeclareClass", ...args); +} + +function DeclareFunction(...args) { + return (0, _builder.default)("DeclareFunction", ...args); +} + +function DeclareInterface(...args) { + return (0, _builder.default)("DeclareInterface", ...args); +} + +function DeclareModule(...args) { + return (0, _builder.default)("DeclareModule", ...args); +} + +function DeclareModuleExports(...args) { + return (0, _builder.default)("DeclareModuleExports", ...args); +} + +function DeclareTypeAlias(...args) { + return (0, _builder.default)("DeclareTypeAlias", ...args); +} + +function DeclareOpaqueType(...args) { + return (0, _builder.default)("DeclareOpaqueType", ...args); +} + +function DeclareVariable(...args) { + return (0, _builder.default)("DeclareVariable", ...args); +} + +function DeclareExportDeclaration(...args) { + return (0, _builder.default)("DeclareExportDeclaration", ...args); +} + +function DeclareExportAllDeclaration(...args) { + return (0, _builder.default)("DeclareExportAllDeclaration", ...args); +} + +function DeclaredPredicate(...args) { + return (0, _builder.default)("DeclaredPredicate", ...args); +} + +function ExistsTypeAnnotation(...args) { + return (0, _builder.default)("ExistsTypeAnnotation", ...args); +} + +function FunctionTypeAnnotation(...args) { + return (0, _builder.default)("FunctionTypeAnnotation", ...args); +} + +function FunctionTypeParam(...args) { + return (0, _builder.default)("FunctionTypeParam", ...args); +} + +function GenericTypeAnnotation(...args) { + return (0, _builder.default)("GenericTypeAnnotation", ...args); +} + +function InferredPredicate(...args) { + return (0, _builder.default)("InferredPredicate", ...args); +} + +function InterfaceExtends(...args) { + return (0, _builder.default)("InterfaceExtends", ...args); +} + +function InterfaceDeclaration(...args) { + return (0, _builder.default)("InterfaceDeclaration", ...args); +} + +function InterfaceTypeAnnotation(...args) { + return (0, _builder.default)("InterfaceTypeAnnotation", ...args); +} + +function IntersectionTypeAnnotation(...args) { + return (0, _builder.default)("IntersectionTypeAnnotation", ...args); +} + +function MixedTypeAnnotation(...args) { + return (0, _builder.default)("MixedTypeAnnotation", ...args); +} + +function EmptyTypeAnnotation(...args) { + return (0, _builder.default)("EmptyTypeAnnotation", ...args); +} + +function NullableTypeAnnotation(...args) { + return (0, _builder.default)("NullableTypeAnnotation", ...args); +} + +function NumberLiteralTypeAnnotation(...args) { + return (0, _builder.default)("NumberLiteralTypeAnnotation", ...args); +} + +function NumberTypeAnnotation(...args) { + return (0, _builder.default)("NumberTypeAnnotation", ...args); +} + +function ObjectTypeAnnotation(...args) { + return (0, _builder.default)("ObjectTypeAnnotation", ...args); +} + +function ObjectTypeInternalSlot(...args) { + return (0, _builder.default)("ObjectTypeInternalSlot", ...args); +} + +function ObjectTypeCallProperty(...args) { + return (0, _builder.default)("ObjectTypeCallProperty", ...args); +} + +function ObjectTypeIndexer(...args) { + return (0, _builder.default)("ObjectTypeIndexer", ...args); +} + +function ObjectTypeProperty(...args) { + return (0, _builder.default)("ObjectTypeProperty", ...args); +} + +function ObjectTypeSpreadProperty(...args) { + return (0, _builder.default)("ObjectTypeSpreadProperty", ...args); +} + +function OpaqueType(...args) { + return (0, _builder.default)("OpaqueType", ...args); +} + +function QualifiedTypeIdentifier(...args) { + return (0, _builder.default)("QualifiedTypeIdentifier", ...args); +} + +function StringLiteralTypeAnnotation(...args) { + return (0, _builder.default)("StringLiteralTypeAnnotation", ...args); +} + +function StringTypeAnnotation(...args) { + return (0, _builder.default)("StringTypeAnnotation", ...args); +} + +function ThisTypeAnnotation(...args) { + return (0, _builder.default)("ThisTypeAnnotation", ...args); +} + +function TupleTypeAnnotation(...args) { + return (0, _builder.default)("TupleTypeAnnotation", ...args); +} + +function TypeofTypeAnnotation(...args) { + return (0, _builder.default)("TypeofTypeAnnotation", ...args); +} + +function TypeAlias(...args) { + return (0, _builder.default)("TypeAlias", ...args); +} + +function TypeAnnotation(...args) { + return (0, _builder.default)("TypeAnnotation", ...args); +} + +function TypeCastExpression(...args) { + return (0, _builder.default)("TypeCastExpression", ...args); +} + +function TypeParameter(...args) { + return (0, _builder.default)("TypeParameter", ...args); +} + +function TypeParameterDeclaration(...args) { + return (0, _builder.default)("TypeParameterDeclaration", ...args); +} + +function TypeParameterInstantiation(...args) { + return (0, _builder.default)("TypeParameterInstantiation", ...args); +} + +function UnionTypeAnnotation(...args) { + return (0, _builder.default)("UnionTypeAnnotation", ...args); +} + +function Variance(...args) { + return (0, _builder.default)("Variance", ...args); +} + +function VoidTypeAnnotation(...args) { + return (0, _builder.default)("VoidTypeAnnotation", ...args); +} + +function JSXAttribute(...args) { + return (0, _builder.default)("JSXAttribute", ...args); +} + +function JSXClosingElement(...args) { + return (0, _builder.default)("JSXClosingElement", ...args); +} + +function JSXElement(...args) { + return (0, _builder.default)("JSXElement", ...args); +} + +function JSXEmptyExpression(...args) { + return (0, _builder.default)("JSXEmptyExpression", ...args); +} + +function JSXExpressionContainer(...args) { + return (0, _builder.default)("JSXExpressionContainer", ...args); +} + +function JSXSpreadChild(...args) { + return (0, _builder.default)("JSXSpreadChild", ...args); +} + +function JSXIdentifier(...args) { + return (0, _builder.default)("JSXIdentifier", ...args); +} + +function JSXMemberExpression(...args) { + return (0, _builder.default)("JSXMemberExpression", ...args); +} + +function JSXNamespacedName(...args) { + return (0, _builder.default)("JSXNamespacedName", ...args); +} + +function JSXOpeningElement(...args) { + return (0, _builder.default)("JSXOpeningElement", ...args); +} + +function JSXSpreadAttribute(...args) { + return (0, _builder.default)("JSXSpreadAttribute", ...args); +} + +function JSXText(...args) { + return (0, _builder.default)("JSXText", ...args); +} + +function JSXFragment(...args) { + return (0, _builder.default)("JSXFragment", ...args); +} + +function JSXOpeningFragment(...args) { + return (0, _builder.default)("JSXOpeningFragment", ...args); +} + +function JSXClosingFragment(...args) { + return (0, _builder.default)("JSXClosingFragment", ...args); +} + +function Noop(...args) { + return (0, _builder.default)("Noop", ...args); +} + +function Placeholder(...args) { + return (0, _builder.default)("Placeholder", ...args); +} + +function ArgumentPlaceholder(...args) { + return (0, _builder.default)("ArgumentPlaceholder", ...args); +} + +function AwaitExpression(...args) { + return (0, _builder.default)("AwaitExpression", ...args); +} + +function BindExpression(...args) { + return (0, _builder.default)("BindExpression", ...args); +} + +function ClassProperty(...args) { + return (0, _builder.default)("ClassProperty", ...args); +} + +function OptionalMemberExpression(...args) { + return (0, _builder.default)("OptionalMemberExpression", ...args); +} + +function PipelineTopicExpression(...args) { + return (0, _builder.default)("PipelineTopicExpression", ...args); +} + +function PipelineBareFunction(...args) { + return (0, _builder.default)("PipelineBareFunction", ...args); +} + +function PipelinePrimaryTopicReference(...args) { + return (0, _builder.default)("PipelinePrimaryTopicReference", ...args); +} + +function OptionalCallExpression(...args) { + return (0, _builder.default)("OptionalCallExpression", ...args); +} + +function ClassPrivateProperty(...args) { + return (0, _builder.default)("ClassPrivateProperty", ...args); +} + +function ClassPrivateMethod(...args) { + return (0, _builder.default)("ClassPrivateMethod", ...args); +} + +function Import(...args) { + return (0, _builder.default)("Import", ...args); +} + +function Decorator(...args) { + return (0, _builder.default)("Decorator", ...args); +} + +function DoExpression(...args) { + return (0, _builder.default)("DoExpression", ...args); +} + +function ExportDefaultSpecifier(...args) { + return (0, _builder.default)("ExportDefaultSpecifier", ...args); +} + +function ExportNamespaceSpecifier(...args) { + return (0, _builder.default)("ExportNamespaceSpecifier", ...args); +} + +function PrivateName(...args) { + return (0, _builder.default)("PrivateName", ...args); +} + +function BigIntLiteral(...args) { + return (0, _builder.default)("BigIntLiteral", ...args); +} + +function TSParameterProperty(...args) { + return (0, _builder.default)("TSParameterProperty", ...args); +} + +function TSDeclareFunction(...args) { + return (0, _builder.default)("TSDeclareFunction", ...args); +} + +function TSDeclareMethod(...args) { + return (0, _builder.default)("TSDeclareMethod", ...args); +} + +function TSQualifiedName(...args) { + return (0, _builder.default)("TSQualifiedName", ...args); +} + +function TSCallSignatureDeclaration(...args) { + return (0, _builder.default)("TSCallSignatureDeclaration", ...args); +} + +function TSConstructSignatureDeclaration(...args) { + return (0, _builder.default)("TSConstructSignatureDeclaration", ...args); +} + +function TSPropertySignature(...args) { + return (0, _builder.default)("TSPropertySignature", ...args); +} + +function TSMethodSignature(...args) { + return (0, _builder.default)("TSMethodSignature", ...args); +} + +function TSIndexSignature(...args) { + return (0, _builder.default)("TSIndexSignature", ...args); +} + +function TSAnyKeyword(...args) { + return (0, _builder.default)("TSAnyKeyword", ...args); +} + +function TSUnknownKeyword(...args) { + return (0, _builder.default)("TSUnknownKeyword", ...args); +} + +function TSNumberKeyword(...args) { + return (0, _builder.default)("TSNumberKeyword", ...args); +} + +function TSObjectKeyword(...args) { + return (0, _builder.default)("TSObjectKeyword", ...args); +} + +function TSBooleanKeyword(...args) { + return (0, _builder.default)("TSBooleanKeyword", ...args); +} + +function TSStringKeyword(...args) { + return (0, _builder.default)("TSStringKeyword", ...args); +} + +function TSSymbolKeyword(...args) { + return (0, _builder.default)("TSSymbolKeyword", ...args); +} + +function TSVoidKeyword(...args) { + return (0, _builder.default)("TSVoidKeyword", ...args); +} + +function TSUndefinedKeyword(...args) { + return (0, _builder.default)("TSUndefinedKeyword", ...args); +} + +function TSNullKeyword(...args) { + return (0, _builder.default)("TSNullKeyword", ...args); +} + +function TSNeverKeyword(...args) { + return (0, _builder.default)("TSNeverKeyword", ...args); +} + +function TSThisType(...args) { + return (0, _builder.default)("TSThisType", ...args); +} + +function TSFunctionType(...args) { + return (0, _builder.default)("TSFunctionType", ...args); +} + +function TSConstructorType(...args) { + return (0, _builder.default)("TSConstructorType", ...args); +} + +function TSTypeReference(...args) { + return (0, _builder.default)("TSTypeReference", ...args); +} + +function TSTypePredicate(...args) { + return (0, _builder.default)("TSTypePredicate", ...args); +} + +function TSTypeQuery(...args) { + return (0, _builder.default)("TSTypeQuery", ...args); +} + +function TSTypeLiteral(...args) { + return (0, _builder.default)("TSTypeLiteral", ...args); +} + +function TSArrayType(...args) { + return (0, _builder.default)("TSArrayType", ...args); +} + +function TSTupleType(...args) { + return (0, _builder.default)("TSTupleType", ...args); +} + +function TSOptionalType(...args) { + return (0, _builder.default)("TSOptionalType", ...args); +} + +function TSRestType(...args) { + return (0, _builder.default)("TSRestType", ...args); +} + +function TSUnionType(...args) { + return (0, _builder.default)("TSUnionType", ...args); +} + +function TSIntersectionType(...args) { + return (0, _builder.default)("TSIntersectionType", ...args); +} + +function TSConditionalType(...args) { + return (0, _builder.default)("TSConditionalType", ...args); +} + +function TSInferType(...args) { + return (0, _builder.default)("TSInferType", ...args); +} + +function TSParenthesizedType(...args) { + return (0, _builder.default)("TSParenthesizedType", ...args); +} + +function TSTypeOperator(...args) { + return (0, _builder.default)("TSTypeOperator", ...args); +} + +function TSIndexedAccessType(...args) { + return (0, _builder.default)("TSIndexedAccessType", ...args); +} + +function TSMappedType(...args) { + return (0, _builder.default)("TSMappedType", ...args); +} + +function TSLiteralType(...args) { + return (0, _builder.default)("TSLiteralType", ...args); +} + +function TSExpressionWithTypeArguments(...args) { + return (0, _builder.default)("TSExpressionWithTypeArguments", ...args); +} + +function TSInterfaceDeclaration(...args) { + return (0, _builder.default)("TSInterfaceDeclaration", ...args); +} + +function TSInterfaceBody(...args) { + return (0, _builder.default)("TSInterfaceBody", ...args); +} + +function TSTypeAliasDeclaration(...args) { + return (0, _builder.default)("TSTypeAliasDeclaration", ...args); +} + +function TSAsExpression(...args) { + return (0, _builder.default)("TSAsExpression", ...args); +} + +function TSTypeAssertion(...args) { + return (0, _builder.default)("TSTypeAssertion", ...args); +} + +function TSEnumDeclaration(...args) { + return (0, _builder.default)("TSEnumDeclaration", ...args); +} + +function TSEnumMember(...args) { + return (0, _builder.default)("TSEnumMember", ...args); +} + +function TSModuleDeclaration(...args) { + return (0, _builder.default)("TSModuleDeclaration", ...args); +} + +function TSModuleBlock(...args) { + return (0, _builder.default)("TSModuleBlock", ...args); +} + +function TSImportType(...args) { + return (0, _builder.default)("TSImportType", ...args); +} + +function TSImportEqualsDeclaration(...args) { + return (0, _builder.default)("TSImportEqualsDeclaration", ...args); +} + +function TSExternalModuleReference(...args) { + return (0, _builder.default)("TSExternalModuleReference", ...args); +} + +function TSNonNullExpression(...args) { + return (0, _builder.default)("TSNonNullExpression", ...args); +} + +function TSExportAssignment(...args) { + return (0, _builder.default)("TSExportAssignment", ...args); +} + +function TSNamespaceExportDeclaration(...args) { + return (0, _builder.default)("TSNamespaceExportDeclaration", ...args); +} + +function TSTypeAnnotation(...args) { + return (0, _builder.default)("TSTypeAnnotation", ...args); +} + +function TSTypeParameterInstantiation(...args) { + return (0, _builder.default)("TSTypeParameterInstantiation", ...args); +} + +function TSTypeParameterDeclaration(...args) { + return (0, _builder.default)("TSTypeParameterDeclaration", ...args); +} + +function TSTypeParameter(...args) { + return (0, _builder.default)("TSTypeParameter", ...args); +} + +function NumberLiteral(...args) { + console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); + return NumberLiteral("NumberLiteral", ...args); +} + +function RegexLiteral(...args) { + console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); + return RegexLiteral("RegexLiteral", ...args); +} + +function RestProperty(...args) { + console.trace("The node type RestProperty has been renamed to RestElement"); + return RestProperty("RestProperty", ...args); +} + +function SpreadProperty(...args) { + console.trace("The node type SpreadProperty has been renamed to SpreadElement"); + return SpreadProperty("SpreadProperty", ...args); +} + +/***/ }), +/* 14 */ +/***/ (function(module, exports) { + +module.exports = require("path"); + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.validate = validate; +exports.typeIs = typeIs; +exports.validateType = validateType; +exports.validateOptional = validateOptional; +exports.validateOptionalType = validateOptionalType; +exports.arrayOf = arrayOf; +exports.arrayOfType = arrayOfType; +exports.validateArrayOfType = validateArrayOfType; +exports.assertEach = assertEach; +exports.assertOneOf = assertOneOf; +exports.assertNodeType = assertNodeType; +exports.assertNodeOrValueType = assertNodeOrValueType; +exports.assertValueType = assertValueType; +exports.chain = chain; +exports.default = defineType; +exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.ALIAS_KEYS = exports.VISITOR_KEYS = void 0; + +var _is = _interopRequireDefault(__webpack_require__(33)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const VISITOR_KEYS = {}; +exports.VISITOR_KEYS = VISITOR_KEYS; +const ALIAS_KEYS = {}; +exports.ALIAS_KEYS = ALIAS_KEYS; +const FLIPPED_ALIAS_KEYS = {}; +exports.FLIPPED_ALIAS_KEYS = FLIPPED_ALIAS_KEYS; +const NODE_FIELDS = {}; +exports.NODE_FIELDS = NODE_FIELDS; +const BUILDER_KEYS = {}; +exports.BUILDER_KEYS = BUILDER_KEYS; +const DEPRECATED_KEYS = {}; +exports.DEPRECATED_KEYS = DEPRECATED_KEYS; + +function getType(val) { + if (Array.isArray(val)) { + return "array"; + } else if (val === null) { + return "null"; + } else if (val === undefined) { + return "undefined"; + } else { + return typeof val; + } +} + +function validate(validate) { + return { + validate + }; +} + +function typeIs(typeName) { + return typeof typeName === "string" ? assertNodeType(typeName) : assertNodeType(...typeName); +} + +function validateType(typeName) { + return validate(typeIs(typeName)); +} + +function validateOptional(validate) { + return { + validate, + optional: true + }; +} + +function validateOptionalType(typeName) { + return { + validate: typeIs(typeName), + optional: true + }; +} + +function arrayOf(elementType) { + return chain(assertValueType("array"), assertEach(elementType)); +} + +function arrayOfType(typeName) { + return arrayOf(typeIs(typeName)); +} + +function validateArrayOfType(typeName) { + return validate(arrayOfType(typeName)); +} + +function assertEach(callback) { + function validator(node, key, val) { + if (!Array.isArray(val)) return; + + for (let i = 0; i < val.length; i++) { + callback(node, `${key}[${i}]`, val[i]); + } + } + + validator.each = callback; + return validator; +} + +function assertOneOf(...values) { + function validate(node, key, val) { + if (values.indexOf(val) < 0) { + throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`); + } + } + + validate.oneOf = values; + return validate; +} + +function assertNodeType(...types) { + function validate(node, key, val) { + let valid = false; + + for (const type of types) { + if ((0, _is.default)(type, val)) { + valid = true; + break; + } + } + + if (!valid) { + throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} ` + `but instead got ${JSON.stringify(val && val.type)}`); + } + } + + validate.oneOfNodeTypes = types; + return validate; +} + +function assertNodeOrValueType(...types) { + function validate(node, key, val) { + let valid = false; + + for (const type of types) { + if (getType(val) === type || (0, _is.default)(type, val)) { + valid = true; + break; + } + } + + if (!valid) { + throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} ` + `but instead got ${JSON.stringify(val && val.type)}`); + } + } + + validate.oneOfNodeOrValueTypes = types; + return validate; +} + +function assertValueType(type) { + function validate(node, key, val) { + const valid = getType(val) === type; + + if (!valid) { + throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`); + } + } + + validate.type = type; + return validate; +} + +function chain(...fns) { + function validate(...args) { + for (const fn of fns) { + fn(...args); + } + } + + validate.chainOf = fns; + return validate; +} + +function defineType(type, opts = {}) { + const inherits = opts.inherits && store[opts.inherits] || {}; + const fields = opts.fields || inherits.fields || {}; + const visitor = opts.visitor || inherits.visitor || []; + const aliases = opts.aliases || inherits.aliases || []; + const builder = opts.builder || inherits.builder || opts.visitor || []; + + if (opts.deprecatedAlias) { + DEPRECATED_KEYS[opts.deprecatedAlias] = type; + } + + for (const key of visitor.concat(builder)) { + fields[key] = fields[key] || {}; + } + + for (const key of Object.keys(fields)) { + const field = fields[key]; + + if (builder.indexOf(key) === -1) { + field.optional = true; + } + + if (field.default === undefined) { + field.default = null; + } else if (!field.validate) { + field.validate = assertValueType(getType(field.default)); + } + } + + VISITOR_KEYS[type] = opts.visitor = visitor; + BUILDER_KEYS[type] = opts.builder = builder; + NODE_FIELDS[type] = opts.fields = fields; + ALIAS_KEYS[type] = opts.aliases = aliases; + aliases.forEach(alias => { + FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || []; + FLIPPED_ALIAS_KEYS[alias].push(type); + }); + store[type] = opts; +} + +const store = {}; + +/***/ }), +/* 16 */ +/***/ (function(module, exports) { + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} + +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + + _next(undefined); + }); + }; +} + +module.exports = _asyncToGenerator; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NOT_LOCAL_BINDING = exports.BLOCK_SCOPED_SYMBOL = exports.INHERIT_KEYS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = exports.BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.UPDATE_OPERATORS = exports.LOGICAL_OPERATORS = exports.COMMENT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = void 0; +const STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"]; +exports.STATEMENT_OR_BLOCK_KEYS = STATEMENT_OR_BLOCK_KEYS; +const FLATTENABLE_KEYS = ["body", "expressions"]; +exports.FLATTENABLE_KEYS = FLATTENABLE_KEYS; +const FOR_INIT_KEYS = ["left", "init"]; +exports.FOR_INIT_KEYS = FOR_INIT_KEYS; +const COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"]; +exports.COMMENT_KEYS = COMMENT_KEYS; +const LOGICAL_OPERATORS = ["||", "&&", "??"]; +exports.LOGICAL_OPERATORS = LOGICAL_OPERATORS; +const UPDATE_OPERATORS = ["++", "--"]; +exports.UPDATE_OPERATORS = UPDATE_OPERATORS; +const BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="]; +exports.BOOLEAN_NUMBER_BINARY_OPERATORS = BOOLEAN_NUMBER_BINARY_OPERATORS; +const EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="]; +exports.EQUALITY_BINARY_OPERATORS = EQUALITY_BINARY_OPERATORS; +const COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"]; +exports.COMPARISON_BINARY_OPERATORS = COMPARISON_BINARY_OPERATORS; +const BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS]; +exports.BOOLEAN_BINARY_OPERATORS = BOOLEAN_BINARY_OPERATORS; +const NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"]; +exports.NUMBER_BINARY_OPERATORS = NUMBER_BINARY_OPERATORS; +const BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS]; +exports.BINARY_OPERATORS = BINARY_OPERATORS; +const BOOLEAN_UNARY_OPERATORS = ["delete", "!"]; +exports.BOOLEAN_UNARY_OPERATORS = BOOLEAN_UNARY_OPERATORS; +const NUMBER_UNARY_OPERATORS = ["+", "-", "~"]; +exports.NUMBER_UNARY_OPERATORS = NUMBER_UNARY_OPERATORS; +const STRING_UNARY_OPERATORS = ["typeof"]; +exports.STRING_UNARY_OPERATORS = STRING_UNARY_OPERATORS; +const UNARY_OPERATORS = ["void", "throw", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS]; +exports.UNARY_OPERATORS = UNARY_OPERATORS; +const INHERIT_KEYS = { + optional: ["typeAnnotation", "typeParameters", "returnType"], + force: ["start", "loc", "end"] +}; +exports.INHERIT_KEYS = INHERIT_KEYS; +const BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped"); +exports.BLOCK_SCOPED_SYMBOL = BLOCK_SCOPED_SYMBOL; +const NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding"); +exports.NOT_LOCAL_BINDING = NOT_LOCAL_BINDING; + +/***/ }), +/* 18 */ +/***/ (function(module, exports) { + +module.exports = require("fs"); + +/***/ }), +/* 19 */ +/***/ (function(module, exports) { + +module.exports = require("relay-runtime"); + +/***/ }), +/* 20 */ +/***/ (function(module, exports) { + +module.exports = require("crypto"); + +/***/ }), +/* 21 */ +/***/ (function(module, exports) { + +module.exports = require("immutable"); + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isValidIdentifier; + +function _esutils() { + const data = _interopRequireDefault(__webpack_require__(157)); + + _esutils = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isValidIdentifier(name) { + if (typeof name !== "string" || _esutils().default.keyword.isReservedWordES6(name, true)) { + return false; + } else if (name === "await") { + return false; + } else { + return _esutils().default.keyword.isIdentifierNameES6(name); + } +} + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cloneNode; + +var _definitions = __webpack_require__(12); + +const has = Function.call.bind(Object.prototype.hasOwnProperty); + +function cloneIfNode(obj, deep) { + if (obj && typeof obj.type === "string" && obj.type !== "CommentLine" && obj.type !== "CommentBlock") { + return cloneNode(obj, deep); + } + + return obj; +} + +function cloneIfNodeOrArray(obj, deep) { + if (Array.isArray(obj)) { + return obj.map(node => cloneIfNode(node, deep)); + } + + return cloneIfNode(obj, deep); +} + +function cloneNode(node, deep = true) { + if (!node) return node; + const { + type + } = node; + const newNode = { + type + }; + + if (type === "Identifier") { + newNode.name = node.name; + + if (has(node, "optional") && typeof node.optional === "boolean") { + newNode.optional = node.optional; + } + + if (has(node, "typeAnnotation")) { + newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true) : node.typeAnnotation; + } + } else if (!has(_definitions.NODE_FIELDS, type)) { + throw new Error(`Unknown node type: "${type}"`); + } else { + for (const field of Object.keys(_definitions.NODE_FIELDS[type])) { + if (has(node, field)) { + newNode[field] = deep ? cloneIfNodeOrArray(node[field], true) : node[field]; + } + } + } + + if (has(node, "loc")) { + newNode.loc = node.loc; + } + + if (has(node, "leadingComments")) { + newNode.leadingComments = node.leadingComments; + } + + if (has(node, "innerComments")) { + newNode.innerComments = node.innerComments; + } + + if (has(node, "trailingComments")) { + newNode.trailingComments = node.trailingComments; + } + + if (has(node, "extra")) { + newNode.extra = Object.assign({}, node.extra); + } + + return newNode; +} + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var visit = __webpack_require__(1).visit; + +var NodeKeys = { + Argument: ['value'], + ClientExtension: ['selections'], + Condition: ['condition', 'selections'], + Defer: ['selections', 'if'], + Directive: ['args'], + Fragment: ['argumentDefinitions', 'directives', 'selections'], + FragmentSpread: ['args', 'directives'], + InlineFragment: ['directives', 'selections'], + LinkedField: ['args', 'directives', 'selections'], + Literal: [], + LocalArgumentDefinition: [], + ModuleImport: ['selections'], + Request: ['fragment', 'root'], + Root: ['argumentDefinitions', 'directives', 'selections'], + RootArgumentDefinition: [], + ScalarField: ['args', 'directives'], + SplitOperation: ['selections'], + Stream: ['selections', 'if', 'initialCount'], + Variable: [] +}; + +function visitIR(root, visitor) { + return visit(root, visitor, NodeKeys); +} + +module.exports = { + visit: visitIR +}; + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +// Copy of Variables type from '../../../react-relay/classic/tools/RelayTypes' +// Duplicating here rather than importing it since we can't take on a dependency +// outside of relay-compiler. +function getLiteralArgumentValues(args) { + var values = {}; + args.forEach(function (arg) { + if (arg.value.kind === 'Literal') { + values[arg.name] = arg.value.value; + } + }); + return values; +} + +module.exports = getLiteralArgumentValues; + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = getBindingIdentifiers; + +var _generated = __webpack_require__(7); + +function getBindingIdentifiers(node, duplicates, outerOnly) { + let search = [].concat(node); + const ids = Object.create(null); + + while (search.length) { + const id = search.shift(); + if (!id) continue; + const keys = getBindingIdentifiers.keys[id.type]; + + if ((0, _generated.isIdentifier)(id)) { + if (duplicates) { + const _ids = ids[id.name] = ids[id.name] || []; + + _ids.push(id); + } else { + ids[id.name] = id; + } + + continue; + } + + if ((0, _generated.isExportDeclaration)(id)) { + if ((0, _generated.isDeclaration)(id.declaration)) { + search.push(id.declaration); + } + + continue; + } + + if (outerOnly) { + if ((0, _generated.isFunctionDeclaration)(id)) { + search.push(id.id); + continue; + } + + if ((0, _generated.isFunctionExpression)(id)) { + continue; + } + } + + if (keys) { + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + + if (id[key]) { + search = search.concat(id[key]); + } + } + } + } + + return ids; +} + +getBindingIdentifiers.keys = { + DeclareClass: ["id"], + DeclareFunction: ["id"], + DeclareModule: ["id"], + DeclareVariable: ["id"], + DeclareInterface: ["id"], + DeclareTypeAlias: ["id"], + DeclareOpaqueType: ["id"], + InterfaceDeclaration: ["id"], + TypeAlias: ["id"], + OpaqueType: ["id"], + CatchClause: ["param"], + LabeledStatement: ["label"], + UnaryExpression: ["argument"], + AssignmentExpression: ["left"], + ImportSpecifier: ["local"], + ImportNamespaceSpecifier: ["local"], + ImportDefaultSpecifier: ["local"], + ImportDeclaration: ["specifiers"], + ExportSpecifier: ["exported"], + ExportNamespaceSpecifier: ["exported"], + ExportDefaultSpecifier: ["exported"], + FunctionDeclaration: ["id", "params"], + FunctionExpression: ["id", "params"], + ArrowFunctionExpression: ["params"], + ObjectMethod: ["params"], + ClassMethod: ["params"], + ForInStatement: ["left"], + ForOfStatement: ["left"], + ClassDeclaration: ["id"], + ClassExpression: ["id"], + RestElement: ["argument"], + UpdateExpression: ["argument"], + ObjectProperty: ["value"], + AssignmentPattern: ["left"], + ArrayPattern: ["elements"], + ObjectPattern: ["properties"], + VariableDeclaration: ["declarations"], + VariableDeclarator: ["id"] +}; + +/***/ }), +/* 27 */ +/***/ (function(module, exports) { + +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; +} + +module.exports = _defineProperty; + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + * @emails oncall+relay + */ + + +var _asyncToGenerator = __webpack_require__(16); + +var childProcess = __webpack_require__(101); + +var watchman = __webpack_require__(102); + +var MAX_ATTEMPT_LIMIT = 5; + +function delay(delayMs) { + return new Promise(function (resolve) { + return setTimeout(resolve, delayMs); + }); +} + +var GraphQLWatchmanClient = +/*#__PURE__*/ +function () { + GraphQLWatchmanClient.isAvailable = function isAvailable() { + return new Promise(function (resolve) { + // This command not only will verify that watchman CLI is available + // More than that `watchman version` is a command that runs on the server. + // And it can tell us that watchman is up and running + // Also `watchman version` check ``relative_root`` capability + // under the covers + var proc = childProcess.spawn('watchman', ['version']); + proc.on('error', function () { + resolve(false); + }); + proc.on('close', function (code) { + resolve(code === 0); + }); + }); + }; + + function GraphQLWatchmanClient() { + var attemptLimit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + this._client = new watchman.Client(); + this._attemptLimit = Math.max(Math.min(MAX_ATTEMPT_LIMIT, attemptLimit), 0); + } + + var _proto = GraphQLWatchmanClient.prototype; + + _proto._command = function _command() { + var _this = this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return new Promise(function (resolve, reject) { + _this._client.command(args, function (error, response) { + if (error) { + reject(error); + } else { + resolve(response); + } + }); + }); + }; + + _proto.command = + /*#__PURE__*/ + function () { + var _command2 = _asyncToGenerator(function* () { + var attempt = 0; + + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + while (true) { + try { + attempt++; + return yield this._command.apply(this, args); + } catch (error) { + if (attempt > this._attemptLimit) { + throw error; + } + + yield delay(Math.pow(2, attempt) * 500); + + this._client.end(); + + this._client = new watchman.Client(); + } + } + }); + + function command() { + return _command2.apply(this, arguments); + } + + return command; + }(); + + _proto.hasCapability = + /*#__PURE__*/ + function () { + var _hasCapability = _asyncToGenerator(function* (capability) { + var resp = yield this.command('list-capabilities'); + return resp.capabilities.includes(capability); + }); + + function hasCapability(_x) { + return _hasCapability.apply(this, arguments); + } + + return hasCapability; + }(); + + _proto.watchProject = + /*#__PURE__*/ + function () { + var _watchProject = _asyncToGenerator(function* (baseDir) { + var resp = yield this.command('watch-project', baseDir); + + if ('warning' in resp) { + console.error('Warning:', resp.warning); + } + + return { + root: resp.watch, + relativePath: resp.relative_path + }; + }); + + function watchProject(_x2) { + return _watchProject.apply(this, arguments); + } + + return watchProject; + }(); + + _proto.on = function on(event, callback) { + this._client.on(event, callback); + }; + + _proto.end = function end() { + this._client.end(); + }; + + return GraphQLWatchmanClient; +}(); + +module.exports = GraphQLWatchmanClient; + +/***/ }), +/* 29 */ +/***/ (function(module, exports) { + +module.exports = require("util"); + +/***/ }), +/* 30 */ +/***/ (function(module, exports) { + +module.exports = require("nullthrows"); + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = shallowEqual; + +function shallowEqual(actual, expected) { + const keys = Object.keys(expected); + + for (const key of keys) { + if (actual[key] !== expected[key]) { + return false; + } + } + + return true; +} + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.patternLikeCommon = exports.functionDeclarationCommon = exports.functionTypeAnnotationCommon = exports.functionCommon = void 0; + +var _isValidIdentifier = _interopRequireDefault(__webpack_require__(22)); + +var _constants = __webpack_require__(17); + +var _utils = _interopRequireWildcard(__webpack_require__(15)); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _utils.default)("ArrayExpression", { + fields: { + elements: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "Expression", "SpreadElement"))), + default: [] + } + }, + visitor: ["elements"], + aliases: ["Expression"] +}); +(0, _utils.default)("AssignmentExpression", { + fields: { + operator: { + validate: (0, _utils.assertValueType)("string") + }, + left: { + validate: (0, _utils.assertNodeType)("LVal") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + builder: ["operator", "left", "right"], + visitor: ["left", "right"], + aliases: ["Expression"] +}); +(0, _utils.default)("BinaryExpression", { + builder: ["operator", "left", "right"], + fields: { + operator: { + validate: (0, _utils.assertOneOf)(..._constants.BINARY_OPERATORS) + }, + left: { + validate: (0, _utils.assertNodeType)("Expression") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + visitor: ["left", "right"], + aliases: ["Binary", "Expression"] +}); +(0, _utils.default)("InterpreterDirective", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +(0, _utils.default)("Directive", { + visitor: ["value"], + fields: { + value: { + validate: (0, _utils.assertNodeType)("DirectiveLiteral") + } + } +}); +(0, _utils.default)("DirectiveLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +(0, _utils.default)("BlockStatement", { + builder: ["body", "directives"], + visitor: ["directives", "body"], + fields: { + directives: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Directive"))), + default: [] + }, + body: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) + } + }, + aliases: ["Scopable", "BlockParent", "Block", "Statement"] +}); +(0, _utils.default)("BreakStatement", { + visitor: ["label"], + fields: { + label: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + } + }, + aliases: ["Statement", "Terminatorless", "CompletionStatement"] +}); +(0, _utils.default)("CallExpression", { + visitor: ["callee", "arguments", "typeParameters", "typeArguments"], + builder: ["callee", "arguments"], + aliases: ["Expression"], + fields: { + callee: { + validate: (0, _utils.assertNodeType)("Expression") + }, + arguments: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement", "JSXNamespacedName", "ArgumentPlaceholder"))) + }, + optional: { + validate: (0, _utils.assertOneOf)(true, false), + optional: true + }, + typeArguments: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"), + optional: true + } + } +}); +(0, _utils.default)("CatchClause", { + visitor: ["param", "body"], + fields: { + param: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }, + aliases: ["Scopable", "BlockParent"] +}); +(0, _utils.default)("ConditionalExpression", { + visitor: ["test", "consequent", "alternate"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + consequent: { + validate: (0, _utils.assertNodeType)("Expression") + }, + alternate: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Expression", "Conditional"] +}); +(0, _utils.default)("ContinueStatement", { + visitor: ["label"], + fields: { + label: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + } + }, + aliases: ["Statement", "Terminatorless", "CompletionStatement"] +}); +(0, _utils.default)("DebuggerStatement", { + aliases: ["Statement"] +}); +(0, _utils.default)("DoWhileStatement", { + visitor: ["test", "body"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + }, + aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"] +}); +(0, _utils.default)("EmptyStatement", { + aliases: ["Statement"] +}); +(0, _utils.default)("ExpressionStatement", { + visitor: ["expression"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Statement", "ExpressionWrapper"] +}); +(0, _utils.default)("File", { + builder: ["program", "comments", "tokens"], + visitor: ["program"], + fields: { + program: { + validate: (0, _utils.assertNodeType)("Program") + } + } +}); +(0, _utils.default)("ForInStatement", { + visitor: ["left", "right", "body"], + aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], + fields: { + left: { + validate: (0, _utils.assertNodeType)("VariableDeclaration", "LVal") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +(0, _utils.default)("ForStatement", { + visitor: ["init", "test", "update", "body"], + aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"], + fields: { + init: { + validate: (0, _utils.assertNodeType)("VariableDeclaration", "Expression"), + optional: true + }, + test: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + update: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +const functionCommon = { + params: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Identifier", "Pattern", "RestElement", "TSParameterProperty"))) + }, + generator: { + default: false, + validate: (0, _utils.assertValueType)("boolean") + }, + async: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + } +}; +exports.functionCommon = functionCommon; +const functionTypeAnnotationCommon = { + returnType: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), + optional: true + } +}; +exports.functionTypeAnnotationCommon = functionTypeAnnotationCommon; +const functionDeclarationCommon = Object.assign({}, functionCommon, { + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + } +}); +exports.functionDeclarationCommon = functionDeclarationCommon; +(0, _utils.default)("FunctionDeclaration", { + builder: ["id", "params", "body", "generator", "async"], + visitor: ["id", "params", "body", "returnType", "typeParameters"], + fields: Object.assign({}, functionDeclarationCommon, functionTypeAnnotationCommon, { + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }), + aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"] +}); +(0, _utils.default)("FunctionExpression", { + inherits: "FunctionDeclaration", + aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], + fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }) +}); +const patternLikeCommon = { + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))) + } +}; +exports.patternLikeCommon = patternLikeCommon; +(0, _utils.default)("Identifier", { + builder: ["name"], + visitor: ["typeAnnotation", "decorators"], + aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"], + fields: Object.assign({}, patternLikeCommon, { + name: { + validate: (0, _utils.chain)(function (node, key, val) { + if (!(0, _isValidIdentifier.default)(val)) {} + }, (0, _utils.assertValueType)("string")) + }, + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + }) +}); +(0, _utils.default)("IfStatement", { + visitor: ["test", "consequent", "alternate"], + aliases: ["Statement", "Conditional"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + consequent: { + validate: (0, _utils.assertNodeType)("Statement") + }, + alternate: { + optional: true, + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +(0, _utils.default)("LabeledStatement", { + visitor: ["label", "body"], + aliases: ["Statement"], + fields: { + label: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +(0, _utils.default)("StringLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("NumericLiteral", { + builder: ["value"], + deprecatedAlias: "NumberLiteral", + fields: { + value: { + validate: (0, _utils.assertValueType)("number") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("NullLiteral", { + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("BooleanLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("boolean") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("RegExpLiteral", { + builder: ["pattern", "flags"], + deprecatedAlias: "RegexLiteral", + aliases: ["Expression", "Literal"], + fields: { + pattern: { + validate: (0, _utils.assertValueType)("string") + }, + flags: { + validate: (0, _utils.assertValueType)("string"), + default: "" + } + } +}); +(0, _utils.default)("LogicalExpression", { + builder: ["operator", "left", "right"], + visitor: ["left", "right"], + aliases: ["Binary", "Expression"], + fields: { + operator: { + validate: (0, _utils.assertOneOf)(..._constants.LOGICAL_OPERATORS) + }, + left: { + validate: (0, _utils.assertNodeType)("Expression") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("MemberExpression", { + builder: ["object", "property", "computed", "optional"], + visitor: ["object", "property"], + aliases: ["Expression", "LVal"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + property: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier", "PrivateName"); + const computed = (0, _utils.assertNodeType)("Expression"); + return function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + }() + }, + computed: { + default: false + }, + optional: { + validate: (0, _utils.assertOneOf)(true, false), + optional: true + } + } +}); +(0, _utils.default)("NewExpression", { + inherits: "CallExpression" +}); +(0, _utils.default)("Program", { + visitor: ["directives", "body"], + builder: ["body", "directives", "sourceType", "interpreter"], + fields: { + sourceFile: { + validate: (0, _utils.assertValueType)("string") + }, + sourceType: { + validate: (0, _utils.assertOneOf)("script", "module"), + default: "script" + }, + interpreter: { + validate: (0, _utils.assertNodeType)("InterpreterDirective"), + default: null, + optional: true + }, + directives: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Directive"))), + default: [] + }, + body: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) + } + }, + aliases: ["Scopable", "BlockParent", "Block"] +}); +(0, _utils.default)("ObjectExpression", { + visitor: ["properties"], + aliases: ["Expression"], + fields: { + properties: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ObjectMethod", "ObjectProperty", "SpreadElement"))) + } + } +}); +(0, _utils.default)("ObjectMethod", { + builder: ["kind", "key", "params", "body", "computed"], + fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { + kind: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("method", "get", "set")), + default: "method" + }, + computed: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + }, + key: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); + const computed = (0, _utils.assertNodeType)("Expression"); + return function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + }() + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))) + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }), + visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], + aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"] +}); +(0, _utils.default)("ObjectProperty", { + builder: ["key", "value", "computed", "shorthand", "decorators"], + fields: { + computed: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + }, + key: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); + const computed = (0, _utils.assertNodeType)("Expression"); + return function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + }() + }, + value: { + validate: (0, _utils.assertNodeType)("Expression", "PatternLike") + }, + shorthand: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + } + }, + visitor: ["key", "value", "decorators"], + aliases: ["UserWhitespacable", "Property", "ObjectMember"] +}); +(0, _utils.default)("RestElement", { + visitor: ["argument", "typeAnnotation"], + builder: ["argument"], + aliases: ["LVal", "PatternLike"], + deprecatedAlias: "RestProperty", + fields: Object.assign({}, patternLikeCommon, { + argument: { + validate: (0, _utils.assertNodeType)("LVal") + } + }) +}); +(0, _utils.default)("ReturnStatement", { + visitor: ["argument"], + aliases: ["Statement", "Terminatorless", "CompletionStatement"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + } + } +}); +(0, _utils.default)("SequenceExpression", { + visitor: ["expressions"], + fields: { + expressions: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression"))) + } + }, + aliases: ["Expression"] +}); +(0, _utils.default)("ParenthesizedExpression", { + visitor: ["expression"], + aliases: ["Expression", "ExpressionWrapper"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("SwitchCase", { + visitor: ["test", "consequent"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + consequent: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) + } + } +}); +(0, _utils.default)("SwitchStatement", { + visitor: ["discriminant", "cases"], + aliases: ["Statement", "BlockParent", "Scopable"], + fields: { + discriminant: { + validate: (0, _utils.assertNodeType)("Expression") + }, + cases: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("SwitchCase"))) + } + } +}); +(0, _utils.default)("ThisExpression", { + aliases: ["Expression"] +}); +(0, _utils.default)("ThrowStatement", { + visitor: ["argument"], + aliases: ["Statement", "Terminatorless", "CompletionStatement"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("TryStatement", { + visitor: ["block", "handler", "finalizer"], + aliases: ["Statement"], + fields: { + block: { + validate: (0, _utils.assertNodeType)("BlockStatement") + }, + handler: { + optional: true, + validate: (0, _utils.assertNodeType)("CatchClause") + }, + finalizer: { + optional: true, + validate: (0, _utils.assertNodeType)("BlockStatement") + } + } +}); +(0, _utils.default)("UnaryExpression", { + builder: ["operator", "argument", "prefix"], + fields: { + prefix: { + default: true + }, + argument: { + validate: (0, _utils.assertNodeType)("Expression") + }, + operator: { + validate: (0, _utils.assertOneOf)(..._constants.UNARY_OPERATORS) + } + }, + visitor: ["argument"], + aliases: ["UnaryLike", "Expression"] +}); +(0, _utils.default)("UpdateExpression", { + builder: ["operator", "argument", "prefix"], + fields: { + prefix: { + default: false + }, + argument: { + validate: (0, _utils.assertNodeType)("Expression") + }, + operator: { + validate: (0, _utils.assertOneOf)(..._constants.UPDATE_OPERATORS) + } + }, + visitor: ["argument"], + aliases: ["Expression"] +}); +(0, _utils.default)("VariableDeclaration", { + builder: ["kind", "declarations"], + visitor: ["declarations"], + aliases: ["Statement", "Declaration"], + fields: { + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + kind: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("var", "let", "const")) + }, + declarations: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("VariableDeclarator"))) + } + } +}); +(0, _utils.default)("VariableDeclarator", { + visitor: ["id", "init"], + fields: { + id: { + validate: (0, _utils.assertNodeType)("LVal") + }, + definite: { + optional: true, + validate: (0, _utils.assertValueType)("boolean") + }, + init: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("WhileStatement", { + visitor: ["test", "body"], + aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement", "Statement") + } + } +}); +(0, _utils.default)("WithStatement", { + visitor: ["object", "body"], + aliases: ["Statement"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement", "Statement") + } + } +}); + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = is; + +var _shallowEqual = _interopRequireDefault(__webpack_require__(31)); + +var _isType = _interopRequireDefault(__webpack_require__(34)); + +var _isPlaceholderType = _interopRequireDefault(__webpack_require__(58)); + +var _definitions = __webpack_require__(12); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function is(type, node, opts) { + if (!node) return false; + const matches = (0, _isType.default)(node.type, type); + + if (!matches) { + if (!opts && node.type === "Placeholder" && type in _definitions.FLIPPED_ALIAS_KEYS) { + return (0, _isPlaceholderType.default)(node.expectedNode, type); + } + + return false; + } + + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } +} + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isType; + +var _definitions = __webpack_require__(12); + +function isType(nodeType, targetType) { + if (nodeType === targetType) return true; + if (_definitions.ALIAS_KEYS[targetType]) return false; + const aliases = _definitions.FLIPPED_ALIAS_KEYS[targetType]; + + if (aliases) { + if (aliases[0] === nodeType) return true; + + for (const alias of aliases) { + if (nodeType === alias) return true; + } + } + + return false; +} + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.classMethodOrDeclareMethodCommon = exports.classMethodOrPropertyCommon = void 0; + +var _utils = _interopRequireWildcard(__webpack_require__(15)); + +var _core = __webpack_require__(32); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +(0, _utils.default)("AssignmentPattern", { + visitor: ["left", "right", "decorators"], + builder: ["left", "right"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: Object.assign({}, _core.patternLikeCommon, { + left: { + validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))) + } + }) +}); +(0, _utils.default)("ArrayPattern", { + visitor: ["elements", "typeAnnotation"], + builder: ["elements"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: Object.assign({}, _core.patternLikeCommon, { + elements: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("PatternLike"))) + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))) + } + }) +}); +(0, _utils.default)("ArrowFunctionExpression", { + builder: ["params", "body", "async"], + visitor: ["params", "body", "returnType", "typeParameters"], + aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], + fields: Object.assign({}, _core.functionCommon, _core.functionTypeAnnotationCommon, { + expression: { + validate: (0, _utils.assertValueType)("boolean") + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement", "Expression") + } + }) +}); +(0, _utils.default)("ClassBody", { + visitor: ["body"], + fields: { + body: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "TSDeclareMethod", "TSIndexSignature"))) + } + } +}); +const classCommon = { + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("ClassBody") + }, + superClass: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + }, + superTypeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + }, + implements: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSExpressionWithTypeArguments", "ClassImplements"))), + optional: true + } +}; +(0, _utils.default)("ClassDeclaration", { + builder: ["id", "superClass", "body", "decorators"], + visitor: ["id", "body", "superClass", "mixins", "typeParameters", "superTypeParameters", "implements", "decorators"], + aliases: ["Scopable", "Class", "Statement", "Declaration", "Pureish"], + fields: Object.assign({}, classCommon, { + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + abstract: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + } + }) +}); +(0, _utils.default)("ClassExpression", { + inherits: "ClassDeclaration", + aliases: ["Scopable", "Class", "Expression", "Pureish"], + fields: Object.assign({}, classCommon, { + id: { + optional: true, + validate: (0, _utils.assertNodeType)("Identifier") + }, + body: { + validate: (0, _utils.assertNodeType)("ClassBody") + }, + superClass: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + } + }) +}); +(0, _utils.default)("ExportAllDeclaration", { + visitor: ["source"], + aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], + fields: { + source: { + validate: (0, _utils.assertNodeType)("StringLiteral") + } + } +}); +(0, _utils.default)("ExportDefaultDeclaration", { + visitor: ["declaration"], + aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], + fields: { + declaration: { + validate: (0, _utils.assertNodeType)("FunctionDeclaration", "TSDeclareFunction", "ClassDeclaration", "Expression") + } + } +}); +(0, _utils.default)("ExportNamedDeclaration", { + visitor: ["declaration", "specifiers", "source"], + aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], + fields: { + declaration: { + validate: (0, _utils.assertNodeType)("Declaration"), + optional: true + }, + specifiers: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"))) + }, + source: { + validate: (0, _utils.assertNodeType)("StringLiteral"), + optional: true + } + } +}); +(0, _utils.default)("ExportSpecifier", { + visitor: ["local", "exported"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + exported: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("ForOfStatement", { + visitor: ["left", "right", "body"], + aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], + fields: { + left: { + validate: (0, _utils.assertNodeType)("VariableDeclaration", "LVal") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + }, + await: { + default: false, + validate: (0, _utils.assertValueType)("boolean") + } + } +}); +(0, _utils.default)("ImportDeclaration", { + visitor: ["specifiers", "source"], + aliases: ["Statement", "Declaration", "ModuleDeclaration"], + fields: { + specifiers: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier"))) + }, + source: { + validate: (0, _utils.assertNodeType)("StringLiteral") + }, + importKind: { + validate: (0, _utils.assertOneOf)("type", "typeof", "value"), + optional: true + } + } +}); +(0, _utils.default)("ImportDefaultSpecifier", { + visitor: ["local"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("ImportNamespaceSpecifier", { + visitor: ["local"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("ImportSpecifier", { + visitor: ["local", "imported"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + imported: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + importKind: { + validate: (0, _utils.assertOneOf)("type", "typeof"), + optional: true + } + } +}); +(0, _utils.default)("MetaProperty", { + visitor: ["meta", "property"], + aliases: ["Expression"], + fields: { + meta: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + property: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +const classMethodOrPropertyCommon = { + abstract: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + accessibility: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("public", "private", "protected")), + optional: true + }, + static: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + computed: { + default: false, + validate: (0, _utils.assertValueType)("boolean") + }, + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + key: { + validate: (0, _utils.chain)(function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); + const computed = (0, _utils.assertNodeType)("Expression"); + return function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "Expression")) + } +}; +exports.classMethodOrPropertyCommon = classMethodOrPropertyCommon; +const classMethodOrDeclareMethodCommon = Object.assign({}, _core.functionCommon, classMethodOrPropertyCommon, { + kind: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("get", "set", "method", "constructor")), + default: "method" + }, + access: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("public", "private", "protected")), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + } +}); +exports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon; +(0, _utils.default)("ClassMethod", { + aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"], + builder: ["kind", "key", "params", "body", "computed", "static"], + visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], + fields: Object.assign({}, classMethodOrDeclareMethodCommon, _core.functionTypeAnnotationCommon, { + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }) +}); +(0, _utils.default)("ObjectPattern", { + visitor: ["properties", "typeAnnotation", "decorators"], + builder: ["properties"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: Object.assign({}, _core.patternLikeCommon, { + properties: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("RestElement", "ObjectProperty"))) + } + }) +}); +(0, _utils.default)("SpreadElement", { + visitor: ["argument"], + aliases: ["UnaryLike"], + deprecatedAlias: "SpreadProperty", + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("Super", { + aliases: ["Expression"] +}); +(0, _utils.default)("TaggedTemplateExpression", { + visitor: ["tag", "quasi"], + aliases: ["Expression"], + fields: { + tag: { + validate: (0, _utils.assertNodeType)("Expression") + }, + quasi: { + validate: (0, _utils.assertNodeType)("TemplateLiteral") + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + } + } +}); +(0, _utils.default)("TemplateElement", { + builder: ["value", "tail"], + fields: { + value: {}, + tail: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + } + } +}); +(0, _utils.default)("TemplateLiteral", { + visitor: ["quasis", "expressions"], + aliases: ["Expression", "Literal"], + fields: { + quasis: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TemplateElement"))) + }, + expressions: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression"))) + } + } +}); +(0, _utils.default)("YieldExpression", { + builder: ["argument", "delegate"], + visitor: ["argument"], + aliases: ["Expression", "Terminatorless"], + fields: { + delegate: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + }, + argument: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = inherit; + +function _uniq() { + const data = _interopRequireDefault(__webpack_require__(170)); + + _uniq = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function inherit(key, child, parent) { + if (child && parent) { + child[key] = (0, _uniq().default)([].concat(child[key], parent[key]).filter(Boolean)); + } +} + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(79); + +var _global = _interopRequireDefault(__webpack_require__(94)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +if (_global.default._babelPolyfill && typeof console !== "undefined" && console.warn) { + console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended " + "and may have consequences if different versions of the polyfills are applied sequentially. " + "If you do need to load the polyfill more than once, use @babel/polyfill/noConflict " + "instead to bypass the warning."); +} + +_global.default._babelPolyfill = true; + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _asyncToGenerator = __webpack_require__(16); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var Profiler = __webpack_require__(10); + +var invariant = __webpack_require__(4); + +var path = __webpack_require__(14); + +/** + * CodegenDirectory is a helper class for scripts that generate code into one + * output directory. The purpose is to make it easy to only write files that + * have changed and delete files that are no longer generated. + * It gives statistics about added/removed/updated/unchanged in the end. + * The class also has an option to "validate" which means that no file + * operations are performed and only the statistics are created for what would + * have happened. If there's anything but "unchanged", someone probably forgot + * to run the codegen script. + * + * Example: + * + * const dir = new CodegenDirectory('/some/path/generated', {filesystem: require('fs')}); + * // write files in case content changed (less watchman/mtime changes) + * dir.writeFile('OneFile.js', contents); + * dir.writeFile('OtherFile.js', contents); + * + * // delete files that are not generated + * dir.deleteExtraFiles(); + * + * // arrays of file names to print or whatever + * dir.changes.created + * dir.changes.updated + * dir.changes.deleted + * dir.changes.unchanged + */ +var CodegenDirectory = +/*#__PURE__*/ +function () { + function CodegenDirectory(dir, _ref) { + var _this = this; + + var filesystem = _ref.filesystem, + onlyValidate = _ref.onlyValidate; + this._filesystem = filesystem || __webpack_require__(18); + this.onlyValidate = onlyValidate; + + if (this._filesystem.existsSync(dir)) { + !this._filesystem.statSync(dir).isDirectory() ? true ? invariant(false, 'Expected `%s` to be a directory.', dir) : undefined : void 0; + } else if (!this.onlyValidate) { + var dirs = [dir]; + var parent = path.dirname(dir); + + while (!this._filesystem.existsSync(parent)) { + dirs.unshift(parent); + parent = path.dirname(parent); + } + + dirs.forEach(function (d) { + return _this._filesystem.mkdirSync(d); + }); + } + + this._files = new Set(); + this.changes = { + deleted: [], + updated: [], + created: [], + unchanged: [] + }; + this._dir = dir; + } + + CodegenDirectory.combineChanges = function combineChanges(dirs) { + var changes = { + deleted: [], + updated: [], + created: [], + unchanged: [] + }; + dirs.forEach(function (dir) { + var _changes$deleted, _changes$updated, _changes$created, _changes$unchanged; + + (_changes$deleted = changes.deleted).push.apply(_changes$deleted, (0, _toConsumableArray2["default"])(dir.changes.deleted)); + + (_changes$updated = changes.updated).push.apply(_changes$updated, (0, _toConsumableArray2["default"])(dir.changes.updated)); + + (_changes$created = changes.created).push.apply(_changes$created, (0, _toConsumableArray2["default"])(dir.changes.created)); + + (_changes$unchanged = changes.unchanged).push.apply(_changes$unchanged, (0, _toConsumableArray2["default"])(dir.changes.unchanged)); + }); + return changes; + }; + + CodegenDirectory.hasChanges = function hasChanges(changes) { + return changes.created.length > 0 || changes.updated.length > 0 || changes.deleted.length > 0; + }; + + CodegenDirectory.printChanges = function printChanges(changes, options) { + Profiler.run('CodegenDirectory.printChanges', function () { + var output = []; + + function printFiles(label, files) { + if (files.length > 0) { + output.push(label + ':'); + files.forEach(function (file) { + output.push(' - ' + file); + }); + } + } + + if (options.onlyValidate) { + printFiles('Missing', changes.created); + printFiles('Out of date', changes.updated); + printFiles('Extra', changes.deleted); + } else { + printFiles('Created', changes.created); + printFiles('Updated', changes.updated); + printFiles('Deleted', changes.deleted); + output.push("Unchanged: ".concat(changes.unchanged.length, " files")); + } // eslint-disable-next-line no-console + + + console.log(output.join('\n')); + }); + }; + + CodegenDirectory.getAddedRemovedFiles = function getAddedRemovedFiles(dirs) { + var added = []; + var removed = []; + dirs.forEach(function (dir) { + dir.changes.created.forEach(function (name) { + added.push(dir.getPath(name)); + }); + dir.changes.deleted.forEach(function (name) { + removed.push(dir.getPath(name)); + }); + }); + return { + added: added, + removed: removed + }; + }; + + CodegenDirectory.sourceControlAddRemove = + /*#__PURE__*/ + function () { + var _sourceControlAddRemove = _asyncToGenerator(function* (sourceControl, dirs) { + var _CodegenDirectory$get = CodegenDirectory.getAddedRemovedFiles(dirs), + added = _CodegenDirectory$get.added, + removed = _CodegenDirectory$get.removed; + + sourceControl.addRemove(added, removed); + }); + + function sourceControlAddRemove(_x, _x2) { + return _sourceControlAddRemove.apply(this, arguments); + } + + return sourceControlAddRemove; + }(); + + var _proto = CodegenDirectory.prototype; + + _proto.printChanges = function printChanges() { + CodegenDirectory.printChanges(this.changes, { + onlyValidate: this.onlyValidate + }); + }; + + _proto.read = function read(filename) { + var filePath = path.join(this._dir, filename); + + if (this._filesystem.existsSync(filePath)) { + return this._filesystem.readFileSync(filePath, 'utf8'); + } + + return null; + }; + + _proto.markUnchanged = function markUnchanged(filename) { + this._addGenerated(filename); + + this.changes.unchanged.push(filename); + } + /** + * Marks a files as updated or out of date without actually writing the file. + * This is probably only be useful when doing validation without intention to + * actually write to disk. + */ + ; + + _proto.markUpdated = function markUpdated(filename) { + this._addGenerated(filename); + + this.changes.updated.push(filename); + }; + + _proto.writeFile = function writeFile(filename, content) { + var _this2 = this; + + Profiler.run('CodegenDirectory.writeFile', function () { + _this2._addGenerated(filename); + + var filePath = path.join(_this2._dir, filename); + + if (_this2._filesystem.existsSync(filePath)) { + var existingContent = _this2._filesystem.readFileSync(filePath, 'utf8'); + + if (existingContent === content) { + _this2.changes.unchanged.push(filename); + } else { + _this2._writeFile(filePath, content); + + _this2.changes.updated.push(filename); + } + } else { + _this2._writeFile(filePath, content); + + _this2.changes.created.push(filename); + } + }); + }; + + _proto._writeFile = function _writeFile(filePath, content) { + if (!this.onlyValidate) { + this._filesystem.writeFileSync(filePath, content, 'utf8'); + } + } + /** + * Deletes all non-generated files, except for invisible "dot" files (ie. + * files with names starting with ".") and any files matching the supplied + * filePatternToKeep. + */ + ; + + _proto.deleteExtraFiles = function deleteExtraFiles(filePatternToKeep) { + var _this3 = this; + + Profiler.run('CodegenDirectory.deleteExtraFiles', function () { + _this3._filesystem.readdirSync(_this3._dir).forEach(function (actualFile) { + var shouldFileExist = _this3._files.has(actualFile) || /^\./.test(actualFile) || filePatternToKeep != null && filePatternToKeep.test(actualFile); + + if (shouldFileExist) { + return; + } + + if (!_this3.onlyValidate) { + try { + _this3._filesystem.unlinkSync(path.join(_this3._dir, actualFile)); + } catch (_unused) { + throw new Error('CodegenDirectory: Failed to delete `' + actualFile + '` in `' + _this3._dir + '`.'); + } + } + + _this3.changes.deleted.push(actualFile); + }); + }); + }; + + _proto.getPath = function getPath(filename) { + return path.join(this._dir, filename); + }; + + _proto._addGenerated = function _addGenerated(filename) { + !!this._files.has(filename) ? true ? invariant(false, 'CodegenDirectory: Tried to generate `%s` twice in `%s`.', filename, this._dir) : undefined : void 0; + + this._files.add(filename); + }; + + return CodegenDirectory; +}(); + +module.exports = CodegenDirectory; + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var Profiler = __webpack_require__(10); + +var _require = __webpack_require__(21), + ImmutableMap = _require.Map; + +var ASTCache = +/*#__PURE__*/ +function () { + function ASTCache(config) { + this._documents = new Map(); + this._baseDir = config.baseDir; + this._parse = Profiler.instrument(config.parse, 'ASTCache.parseFn'); + } // Short-term: we don't do subscriptions/delta updates, instead always use all definitions + + + var _proto = ASTCache.prototype; + + _proto.documents = function documents() { + return ImmutableMap(this._documents); + } // parse should return the set of changes + ; + + _proto.parseFiles = function parseFiles(files) { + var _this = this; + + var documents = ImmutableMap(); + files.forEach(function (file) { + if (!file.exists) { + _this._documents["delete"](file.relPath); + + return; + } + + var doc = function () { + try { + return _this._parse(_this._baseDir, file); + } catch (error) { + throw new Error("Parse error: ".concat(error, " in \"").concat(file.relPath, "\"")); + } + }(); + + if (!doc) { + _this._documents["delete"](file.relPath); + + return; + } + + documents = documents.set(file.relPath, doc); + + _this._documents.set(file.relPath, doc); + }); + return documents; + }; + + return ASTCache; +}(); + +module.exports = ASTCache; + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var Profiler = __webpack_require__(10); + +var _require = __webpack_require__(1), + FragmentsOnCompositeTypesRule = _require.FragmentsOnCompositeTypesRule, + KnownArgumentNamesRule = _require.KnownArgumentNamesRule, + KnownTypeNamesRule = _require.KnownTypeNamesRule, + LoneAnonymousOperationRule = _require.LoneAnonymousOperationRule, + NoUnusedVariablesRule = _require.NoUnusedVariablesRule, + PossibleFragmentSpreadsRule = _require.PossibleFragmentSpreadsRule, + UniqueArgumentNamesRule = _require.UniqueArgumentNamesRule, + UniqueFragmentNamesRule = _require.UniqueFragmentNamesRule, + UniqueInputFieldNamesRule = _require.UniqueInputFieldNamesRule, + UniqueOperationNamesRule = _require.UniqueOperationNamesRule, + UniqueVariableNamesRule = _require.UniqueVariableNamesRule, + ValuesOfCorrectTypeRule = _require.ValuesOfCorrectTypeRule, + VariablesAreInputTypesRule = _require.VariablesAreInputTypesRule, + formatError = _require.formatError, + validate = _require.validate; + +var util = __webpack_require__(29); + +function validateOrThrow(document, schema, rules) { + var validationErrors = validate(schema, document, rules); + + if (validationErrors && validationErrors.length > 0) { + var formattedErrors = validationErrors.map(formatError); + var errorMessages = validationErrors.map(function (e) { + return e.toString(); + }); + var error = new Error(util.format('You supplied a GraphQL document with validation errors:\n%s', errorMessages.join('\n'))); + error.validationErrors = formattedErrors; + throw error; + } +} + +function DisallowIdAsAliasValidationRule(context) { + return { + Field: function Field(field) { + if (field.alias && field.alias.value === 'id' && field.name.value !== 'id') { + throw new Error('RelayValidator: Relay does not allow aliasing fields to `id`. ' + 'This name is reserved for the globally unique `id` field on ' + '`Node`.'); + } + } + }; +} + +module.exports = { + GLOBAL_RULES: [KnownArgumentNamesRule, + /* Some rules are not enabled (potentially non-exhaustive) + * + * - KnownFragmentNamesRule: RelayClassic generates fragments at runtime, + * so RelayCompat queries might reference fragments unknown in build time. + * - NoFragmentCyclesRule: Because of @argumentDefinitions, this validation + * incorrectly flags a subset of fragments using @include/@skip as + * recursive. + * - NoUndefinedVariablesRule: Because of @argumentDefinitions, this + * validation incorrectly marks some fragment variables as undefined. + * - NoUnusedFragmentsRule: Queries generated dynamically with RelayCompat + * might use unused fragments. + * - OverlappingFieldsCanBeMergedRule: RelayClassic auto-resolves + * overlapping fields by generating aliases. + */ + NoUnusedVariablesRule, UniqueArgumentNamesRule, UniqueFragmentNamesRule, UniqueInputFieldNamesRule, UniqueOperationNamesRule, UniqueVariableNamesRule], + LOCAL_RULES: [ + /* + * GraphQL built-in rules: a subset of these rules are enabled, some of the + * default rules conflict with Relays-specific features: + * - FieldsOnCorrectTypeRule: is not aware of @fixme_fat_interface. + * - KnownDirectivesRule: doesn't pass with @arguments and other Relay + * directives. + * - ScalarLeafsRule: is violated by the @match directive since these rules + * run before any transform steps. + * - VariablesInAllowedPositionRule: violated by the @arguments directive, + * since @arguments is not defined in the schema. relay-compiler does its + * own type-checking for variable/argument usage that is aware of fragment + * variables. + */ + FragmentsOnCompositeTypesRule, KnownTypeNamesRule, LoneAnonymousOperationRule, PossibleFragmentSpreadsRule, ValuesOfCorrectTypeRule, VariablesAreInputTypesRule, // Relay-specific validation + DisallowIdAsAliasValidationRule], + validate: Profiler.instrument(validateOrThrow, 'GraphQLValidator.validate') +}; + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var Profiler = __webpack_require__(10); + +var partitionArray = __webpack_require__(42); + +var _require = __webpack_require__(43), + DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY; + +var _require2 = __webpack_require__(8), + getNullableType = _require2.getNullableType, + isExecutableDefinitionAST = _require2.isExecutableDefinitionAST; + +var _require3 = __webpack_require__(9), + createCombinedError = _require3.createCombinedError, + createCompilerError = _require3.createCompilerError, + createUserError = _require3.createUserError, + eachWithErrors = _require3.eachWithErrors; + +var _require4 = __webpack_require__(115), + getFieldDefinitionLegacy = _require4.getFieldDefinitionLegacy; + +var _require5 = __webpack_require__(1), + assertCompositeType = _require5.assertCompositeType, + assertInputType = _require5.assertInputType, + assertOutputType = _require5.assertOutputType, + extendSchema = _require5.extendSchema, + getNamedType = _require5.getNamedType, + GraphQLEnumType = _require5.GraphQLEnumType, + GraphQLID = _require5.GraphQLID, + GraphQLInputObjectType = _require5.GraphQLInputObjectType, + GraphQLInt = _require5.GraphQLInt, + GraphQLList = _require5.GraphQLList, + GraphQLNonNull = _require5.GraphQLNonNull, + GraphQLScalarType = _require5.GraphQLScalarType, + isLeafType = _require5.isLeafType, + isType = _require5.isType, + typeFromAST = _require5.typeFromAST, + isTypeSubTypeOf = _require5.isTypeSubTypeOf, + parseGraphQL = _require5.parse, + parseType = _require5.parseType, + print = _require5.print, + Source = _require5.Source; + +var ARGUMENT_DEFINITIONS = 'argumentDefinitions'; +var ARGUMENTS = 'arguments'; +var DEPRECATED_UNCHECKED_ARGUMENTS = 'uncheckedArguments_DEPRECATED'; +var DIRECTIVE_WHITELIST = new Set([ARGUMENT_DEFINITIONS, DEPRECATED_UNCHECKED_ARGUMENTS, ARGUMENTS]); +/** + * @internal + * + * This directive is not intended for use by developers directly. To set a field + * handle in product code use a compiler plugin. + */ + +var CLIENT_FIELD = '__clientField'; +var CLIENT_FIELD_HANDLE = 'handle'; +var CLIENT_FIELD_KEY = 'key'; +var CLIENT_FIELD_FILTERS = 'filters'; +var INCLUDE = 'include'; +var SKIP = 'skip'; +var IF = 'if'; +/** + * Transforms GraphQL text into Relay Compiler's internal, strongly-typed + * intermediate representation (IR). + */ + +function parse(schema, text, filename) { + var ast = parseGraphQL(new Source(text, filename)); // TODO T24511737 figure out if this is dangerous + + schema = extendSchema(schema, ast, { + assumeValid: true + }); + var parser = new RelayParser(schema, ast.definitions); + return parser.transform(); +} +/** + * Transforms untyped GraphQL parse trees (ASTs) into Relay Compiler's + * internal, strongly-typed intermediate representation (IR). + */ + + +function transform(schema, definitions) { + return Profiler.run('RelayParser.transform', function () { + var parser = new RelayParser(schema, definitions); + return parser.transform(); + }); +} +/** + * Helper for calling `typeFromAST()` with a clear warning when the type does + * not exist. This enables the pattern `assertXXXType(getTypeFromAST(...))`, + * emitting distinct errors for unknown types vs types of the wrong category. + */ + + +function getTypeFromAST(schema, ast) { + var type = typeFromAST(schema, ast); + + if (!isType(type)) { + throw createUserError("Unknown type: '".concat(print(ast), "'."), null, [ast]); + } + + return type; +} +/** + * @private + */ + + +var RelayParser = +/*#__PURE__*/ +function () { + function RelayParser(schema, definitions) { + var _this = this; + + this._definitions = new Map(); // leaving this configurable to make it easy to experiment w changing later + + this._getFieldDefinition = getFieldDefinitionLegacy; + this._schema = schema; + var duplicated = new Set(); + definitions.forEach(function (def) { + if (isExecutableDefinitionAST(def)) { + var name = getName(def); + + if (_this._definitions.has(name)) { + duplicated.add(name); + return; + } + + _this._definitions.set(name, def); + } + }); + + if (duplicated.size) { + throw new Error('RelayParser: Encountered duplicate definitions for one or more ' + 'documents: each document must have a unique name. Duplicated documents:\n' + Array.from(duplicated, function (name) { + return "- ".concat(name); + }).join('\n')); + } + } + + var _proto = RelayParser.prototype; + + _proto.transform = function transform() { + var _this2 = this; + + var errors; + var nodes = []; + var entries = new Map(); // Construct a mapping of name to definition ast + variable definitions. + // This allows the subsequent AST -> IR tranformation to reference the + // defined arguments of referenced fragments. + + errors = eachWithErrors(this._definitions, function (_ref3) { + var name = _ref3[0], + definition = _ref3[1]; + + var variableDefinitions = _this2._buildArgumentDefinitions(definition); + + entries.set(name, { + definition: definition, + variableDefinitions: variableDefinitions + }); + }); // Convert the ASTs to IR. + + if (errors == null) { + errors = eachWithErrors(entries.values(), function (_ref4) { + var definition = _ref4.definition, + variableDefinitions = _ref4.variableDefinitions; + var node = parseDefinition(_this2._schema, _this2._getFieldDefinition, entries, definition, variableDefinitions); + nodes.push(node); + }); + } + + if (errors != null && errors.length !== 0) { + throw createCombinedError(errors, 'RelayParser'); + } + + return nodes; + } + /** + * Constructs a mapping of variable names to definitions for the given + * operation/fragment definition. + */ + ; + + _proto._buildArgumentDefinitions = function _buildArgumentDefinitions(definition) { + switch (definition.kind) { + case 'OperationDefinition': + return this._buildOperationArgumentDefinitions(definition); + + case 'FragmentDefinition': + return this._buildFragmentArgumentDefinitions(definition); + + default: + definition; + throw createCompilerError("Unexpected ast kind '".concat(definition.kind, "'."), [definition]); + } + } + /** + * Constructs a mapping of variable names to definitions using the + * variables defined in `@argumentDefinitions`. + */ + ; + + _proto._buildFragmentArgumentDefinitions = function _buildFragmentArgumentDefinitions(fragment) { + var _this3 = this; + + var variableDirectives = (fragment.directives || []).filter(function (directive) { + return getName(directive) === ARGUMENT_DEFINITIONS; + }); + + if (!variableDirectives.length) { + return new Map(); + } + + if (variableDirectives.length !== 1) { + throw createUserError("Directive @".concat(ARGUMENT_DEFINITIONS, " may be defined at most once per ") + 'fragment.', null, variableDirectives); + } + + var variableDirective = variableDirectives[0]; // $FlowIssue: refining directly on `variableDirective.arguments` doesn't + // work, below accesses all report arguments could still be null/undefined. + + var args = variableDirective.arguments; + + if (variableDirective == null || !Array.isArray(args)) { + return new Map(); + } + + if (!args.length) { + throw createUserError("Directive @".concat(ARGUMENT_DEFINITIONS, " requires arguments: remove the ") + 'directive to skip defining local variables for this fragment.', null, [variableDirective]); + } + + var variables = new Map(); + args.forEach(function (arg) { + var _ref; + + var argName = getName(arg); + var previousVariable = variables.get(argName); + + if (previousVariable != null) { + throw createUserError("Duplicate definition for variable '$".concat(argName, "'."), null, [previousVariable.ast, arg]); + } + + if (arg.value.kind !== 'ObjectValue') { + throw createUserError("Expected definition for variable '$".concat(argName, "' to be an object ") + "with the shape: '{type: string, defaultValue?: mixed}.", null, [arg.value]); + } + + var defaultValueNode; + var typeString; + arg.value.fields.forEach(function (field) { + var name = getName(field); + + if (name === 'type') { + typeString = transformLiteralValue(field.value, field); + } else if (name === 'defaultValue') { + defaultValueNode = field.value; + } else { + throw createUserError("Expected definition for variable '$".concat(argName, "' to be an object ") + "with the shape: '{type: string, defaultValue?: mixed}.", null, [arg.value]); + } + }); + + if (typeof typeString !== 'string') { + throw createUserError("Expected definition for variable '$".concat(argName, "' to be an object ") + "with the shape: '{type: string, defaultValue?: mixed}.", null, [arg.value]); + } + + var typeAST = parseType(typeString); + var type = assertInputType(getTypeFromAST(_this3._schema, typeAST)); + var defaultValue = defaultValueNode != null ? transformValue(defaultValueNode, type, function (variableAst) { + throw createUserError("Expected 'defaultValue' to be a literal, got a variable.", null, [variableAst]); + }, { + nonStrictEnums: true + }) : null; + + if (defaultValue != null && defaultValue.kind !== 'Literal') { + throw createUserError("Expected 'defaultValue' to be a literal, got a variable.", [defaultValue.loc]); + } + + variables.set(argName, { + ast: arg, + defaultValue: (_ref = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.value) !== null && _ref !== void 0 ? _ref : null, + defined: true, + name: argName, + type: type + }); + }); + return variables; + } + /** + * Constructs a mapping of variable names to definitions using the + * standard GraphQL syntax for variable definitions. + */ + ; + + _proto._buildOperationArgumentDefinitions = function _buildOperationArgumentDefinitions(operation) { + var _this4 = this; + + var variableDefinitions = new Map(); + (operation.variableDefinitions || []).forEach(function (def) { + var name = getName(def.variable); + var type = assertInputType(getTypeFromAST(_this4._schema, def.type)); + var defaultValue = def.defaultValue ? transformLiteralValue(def.defaultValue, def) : null; + var previousDefinition = variableDefinitions.get(name); + + if (previousDefinition != null) { + throw createUserError("Duplicate definition for variable '$".concat(name, "'."), null, [previousDefinition.ast, def]); + } + + variableDefinitions.set(name, { + ast: def, + defaultValue: defaultValue, + defined: true, + name: name, + type: type + }); + }); + return variableDefinitions; + }; + + return RelayParser; +}(); +/** + * @private + */ + + +function parseDefinition(schema, getFieldDefinition, entries, definition, variableDefinitions) { + var parser = new GraphQLDefinitionParser(schema, getFieldDefinition, entries, definition, variableDefinitions); + return parser.transform(); +} +/** + * @private + */ + + +var GraphQLDefinitionParser = +/*#__PURE__*/ +function () { + function GraphQLDefinitionParser(schema, getFieldDefinition, entries, definition, variableDefinitions) { + this._definition = definition; + this._entries = entries; + this._getFieldDefinition = getFieldDefinition; + this._schema = schema; + this._variableDefinitions = variableDefinitions; + this._unknownVariables = new Map(); + } + + var _proto2 = GraphQLDefinitionParser.prototype; + + _proto2.transform = function transform() { + var definition = this._definition; + + switch (definition.kind) { + case 'OperationDefinition': + return this._transformOperation(definition); + + case 'FragmentDefinition': + return this._transformFragment(definition); + + default: + definition; + throw createCompilerError("Unsupported definition type ".concat(definition.kind), [definition]); + } + }; + + _proto2._getErrorContext = function _getErrorContext() { + var message = "document `".concat(getName(this._definition), "`"); + + if (this._definition.loc && this._definition.loc.source) { + message += " file: `".concat(this._definition.loc.source.name, "`"); + } + + return message; + }; + + _proto2._recordAndVerifyVariableReference = function _recordAndVerifyVariableReference(variable, name, usedAsType) { + // Special case for variables used in @arguments where we currently + // aren't guaranteed to be able to resolve the type. + if (usedAsType == null) { + if (!this._variableDefinitions.has(name) && !this._unknownVariables.has(name)) { + this._unknownVariables.set(name, { + ast: variable, + type: null + }); + } + + return; + } + + var variableDefinition = this._variableDefinitions.get(name); + + if (variableDefinition != null) { + // If the variable is defined, all usages must be compatible + var effectiveType = variableDefinition.type; + + if (variableDefinition.defaultValue != null) { + // If a default value is defined then it is guaranteed to be used + // at runtime such that the effective type of the variable is non-null + effectiveType = new GraphQLNonNull(getNullableType(effectiveType)); + } + + if (!isTypeSubTypeOf(this._schema, effectiveType, usedAsType)) { + throw createUserError("Variable '$".concat(name, "' was defined as type '").concat(String(variableDefinition.type), "' but used in a location expecting the type '").concat(String(usedAsType), "'"), null, [variableDefinition.ast, variable]); + } + } else { + var previous = this._unknownVariables.get(name); + + if (!previous || !previous.type) { + // No previous usage, current type is strongest + this._unknownVariables.set(name, { + ast: variable, + type: usedAsType + }); + } else { + var previousType = previous.type, + previousVariable = previous.ast; + + if (!(isTypeSubTypeOf(this._schema, usedAsType, previousType) || isTypeSubTypeOf(this._schema, previousType, usedAsType))) { + throw createUserError("Variable '$".concat(name, "' was used in locations expecting the conflicting types '").concat(String(previousType), "' and '").concat(String(usedAsType), "'. Source: ").concat(this._getErrorContext()), null, [previousVariable, variable]); + } // If the new used type has stronger requirements, use that type as reference, + // otherwise keep referencing the previous type + + + if (isTypeSubTypeOf(this._schema, usedAsType, previousType)) { + this._unknownVariables.set(name, { + ast: variable, + type: usedAsType + }); + } + } + } + }; + + _proto2._getDirectiveLocations = function _getDirectiveLocations() { + if (!this._directiveLocations) { + var directiveDefs = this._schema.getDirectives(); + + this._directiveLocations = new Map(); + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = directiveDefs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var def = _step.value; + + this._directiveLocations.set(def.name, def.locations); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + } + + return this._directiveLocations; + }; + + _proto2._validateDirectivesLocation = function _validateDirectivesLocation(directives, allowedLocaction) { + var _this5 = this; + + if (!directives || !directives.length) { + return; + } + + var directiveLocs = this._getDirectiveLocations(); + + var mismatches = directives.filter(function (directive) { + var name = getName(directive); + + if (DIRECTIVE_WHITELIST.has(name)) { + return false; + } + + var locs = directiveLocs.get(name); + + if (locs == null) { + throw createUserError("Unknown directive '".concat(name, "'. Source: ").concat(_this5._getErrorContext()), null, [directive]); + } + + return !locs.some(function (loc) { + return loc === allowedLocaction; + }); + }); + + if (mismatches.length) { + var invalidDirectives = mismatches.map(function (directive) { + return '@' + getName(directive); + }).join(', '); + throw createUserError("Invalid directives ".concat(invalidDirectives, " found on ").concat(allowedLocaction, ". Source: ").concat(this._getErrorContext()), null, mismatches); + } + }; + + _proto2._transformFragment = function _transformFragment(fragment) { + var directives = this._transformDirectives((fragment.directives || []).filter(function (directive) { + return getName(directive) !== ARGUMENT_DEFINITIONS; + }), 'FRAGMENT_DEFINITION'); + + var type = assertCompositeType(getTypeFromAST(this._schema, fragment.typeCondition)); + + var selections = this._transformSelections(fragment.selectionSet, type); + + var argumentDefinitions = (0, _toConsumableArray2["default"])(buildArgumentDefinitions(this._variableDefinitions)); + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = this._unknownVariables[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var _step2$value = _step2.value, + name = _step2$value[0], + variableReference = _step2$value[1]; + argumentDefinitions.push({ + kind: 'RootArgumentDefinition', + loc: buildLocation(variableReference.ast.loc), + metadata: null, + name: name, + // $FlowFixMe - could be null + type: variableReference.type + }); + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + return { + kind: 'Fragment', + directives: directives, + loc: buildLocation(fragment.loc), + metadata: null, + name: getName(fragment), + selections: selections, + type: type, + argumentDefinitions: argumentDefinitions + }; + }; + + _proto2._getLocationFromOperation = function _getLocationFromOperation(definition) { + switch (definition.operation) { + case 'query': + return 'QUERY'; + + case 'mutation': + return 'MUTATION'; + + case 'subscription': + return 'SUBSCRIPTION'; + + default: + definition.operation; + throw createCompilerError("Unknown operation type '".concat(definition.operation, "'. Source: ").concat(this._getErrorContext(), "."), null, [definition]); + } + }; + + _proto2._transformOperation = function _transformOperation(definition) { + var name = getName(definition); + + var directives = this._transformDirectives(definition.directives || [], this._getLocationFromOperation(definition)); + + var type; + var operation; + + switch (definition.operation) { + case 'query': + operation = 'query'; + type = assertCompositeType(this._schema.getQueryType()); + break; + + case 'mutation': + operation = 'mutation'; + type = assertCompositeType(this._schema.getMutationType()); + break; + + case 'subscription': + operation = 'subscription'; + type = assertCompositeType(this._schema.getSubscriptionType()); + break; + + default: + definition.operation; + throw createCompilerError("Unknown operation type '".concat(definition.operation, "'. Source: ").concat(this._getErrorContext(), "."), null, [definition]); + } + + if (!definition.selectionSet) { + throw createUserError("Expected operation to have selections. Source: ".concat(this._getErrorContext()), null, [definition]); + } + + var selections = this._transformSelections(definition.selectionSet, type); + + var argumentDefinitions = buildArgumentDefinitions(this._variableDefinitions); + + if (this._unknownVariables.size !== 0) { + throw createUserError("Query '".concat(name, "' references undefined variables."), null, Array.from(this._unknownVariables.values(), function (variableReference) { + return variableReference.ast; + })); + } + + return { + kind: 'Root', + operation: operation, + loc: buildLocation(definition.loc), + metadata: null, + name: name, + argumentDefinitions: argumentDefinitions, + directives: directives, + selections: selections, + type: type + }; + }; + + _proto2._transformSelections = function _transformSelections(selectionSet, parentType) { + var _this6 = this; + + return selectionSet.selections.map(function (selection) { + var node; + + if (selection.kind === 'Field') { + node = _this6._transformField(selection, parentType); + } else if (selection.kind === 'FragmentSpread') { + node = _this6._transformFragmentSpread(selection, parentType); + } else if (selection.kind === 'InlineFragment') { + node = _this6._transformInlineFragment(selection, parentType); + } else { + selection.kind; + throw createCompilerError("Unknown ast kind '".concat(selection.kind, "'. Source: ").concat(_this6._getErrorContext(), "."), [selection]); + } + + var _this6$_splitConditio = _this6._splitConditions(node.directives), + conditions = _this6$_splitConditio[0], + directives = _this6$_splitConditio[1]; + + var conditionalNodes = applyConditions(conditions, // $FlowFixMe(>=0.28.0) + [(0, _objectSpread2["default"])({}, node, { + directives: directives + })]); + + if (conditionalNodes.length !== 1) { + throw createCompilerError("Expected exactly one condition node. Source: ".concat(_this6._getErrorContext()), null, selection.directives); + } + + return conditionalNodes[0]; + }); + }; + + _proto2._transformInlineFragment = function _transformInlineFragment(fragment, parentType) { + var typeCondition = assertCompositeType(fragment.typeCondition ? getTypeFromAST(this._schema, fragment.typeCondition) : parentType); + + var directives = this._transformDirectives(fragment.directives || [], 'INLINE_FRAGMENT'); + + var selections = this._transformSelections(fragment.selectionSet, typeCondition); + + return { + kind: 'InlineFragment', + directives: directives, + loc: buildLocation(fragment.loc), + metadata: null, + selections: selections, + typeCondition: typeCondition + }; + }; + + _proto2._transformFragmentSpread = function _transformFragmentSpread(fragmentSpread, parentType) { + var _this7 = this; + + var fragmentName = getName(fragmentSpread); + + var _partitionArray = partitionArray(fragmentSpread.directives || [], function (directive) { + var name = getName(directive); + return name === ARGUMENTS || name === DEPRECATED_UNCHECKED_ARGUMENTS; + }), + argumentDirectives = _partitionArray[0], + otherDirectives = _partitionArray[1]; + + if (argumentDirectives.length > 1) { + throw createUserError("Directive @".concat(ARGUMENTS, " may be used at most once per a fragment spread. ") + "Source: ".concat(this._getErrorContext()), null, argumentDirectives); + } + + var fragmentDefinition = this._entries.get(fragmentName); + + var fragmentArgumentDefinitions = fragmentDefinition === null || fragmentDefinition === void 0 ? void 0 : fragmentDefinition.variableDefinitions; + var argumentsDirective = argumentDirectives[0]; + var args; + + if (argumentsDirective != null) { + var isDeprecatedUncheckedArguments = getName(argumentsDirective) === DEPRECATED_UNCHECKED_ARGUMENTS; + var hasInvalidArgument = false; + args = (argumentsDirective.arguments || []).map(function (arg) { + var _ref2; + + var argName = getName(arg); + var argValue = arg.value; + var argumentDefinition = fragmentArgumentDefinitions != null ? fragmentArgumentDefinitions.get(argName) : null; + var argumentType = (_ref2 = argumentDefinition === null || argumentDefinition === void 0 ? void 0 : argumentDefinition.type) !== null && _ref2 !== void 0 ? _ref2 : null; + + if (argValue.kind === 'Variable') { + if (argumentDefinition == null && !isDeprecatedUncheckedArguments) { + var _this$_entries$get; + + throw createUserError("Variable @".concat(ARGUMENTS, " values are only supported when the ") + "argument is defined with @".concat(ARGUMENT_DEFINITIONS, ". Check ") + "the definition of fragment '".concat(fragmentName, "'."), null, [arg.value, (_this$_entries$get = _this7._entries.get(fragmentName)) === null || _this$_entries$get === void 0 ? void 0 : _this$_entries$get.definition].filter(Boolean)); + } + + hasInvalidArgument = hasInvalidArgument || argumentDefinition == null; // TODO: check the type of the variable and use the type + + return { + kind: 'Argument', + loc: buildLocation(arg.loc), + metadata: null, + name: argName, + value: _this7._transformVariable(argValue, null), + type: null + }; + } else { + if (argumentType == null) { + var _this$_entries$get2; + + throw createUserError("Literal @".concat(ARGUMENTS, " values are only supported when the ") + "argument is defined with @".concat(ARGUMENT_DEFINITIONS, ". Check ") + "the definition of fragment '".concat(fragmentName, "'."), null, [arg.value, (_this$_entries$get2 = _this7._entries.get(fragmentName)) === null || _this$_entries$get2 === void 0 ? void 0 : _this$_entries$get2.definition].filter(Boolean)); + } + + var value = _this7._transformValue(argValue, argumentType); + + return { + kind: 'Argument', + loc: buildLocation(arg.loc), + metadata: null, + name: argName, + value: value, + type: argumentType + }; + } + }); + + if (isDeprecatedUncheckedArguments && !hasInvalidArgument) { + throw createUserError("Invalid use of @".concat(DEPRECATED_UNCHECKED_ARGUMENTS, ": all arguments ") + "are defined, use @".concat(ARGUMENTS, " instead."), null, [argumentsDirective]); + } + } + + var directives = this._transformDirectives(otherDirectives, 'FRAGMENT_SPREAD'); + + return { + kind: 'FragmentSpread', + args: args || [], + metadata: null, + loc: buildLocation(fragmentSpread.loc), + name: fragmentName, + directives: directives + }; + }; + + _proto2._transformField = function _transformField(field, parentType) { + var name = getName(field); + + var fieldDef = this._getFieldDefinition(this._schema, parentType, name, field); + + if (fieldDef == null) { + throw createUserError("Unknown field '".concat(name, "' on type '").concat(String(parentType), "'. Source: ").concat(this._getErrorContext()), null, [field]); + } + + var alias = field.alias ? field.alias.value : null; + + var args = this._transformArguments(field.arguments || [], fieldDef.args); + + var _partitionArray2 = partitionArray(field.directives || [], function (directive) { + return getName(directive) !== CLIENT_FIELD; + }), + otherDirectives = _partitionArray2[0], + clientFieldDirectives = _partitionArray2[1]; + + var directives = this._transformDirectives(otherDirectives, 'FIELD'); + + var type = assertOutputType(fieldDef.type); + + var handles = this._transformHandle(name, args, clientFieldDirectives); + + if (isLeafType(getNamedType(type))) { + if (field.selectionSet && field.selectionSet.selections && field.selectionSet.selections.length) { + throw createUserError("Expected no selections for scalar field '".concat(name, "'. Source: ").concat(this._getErrorContext()), null, [field]); + } + + return { + kind: 'ScalarField', + alias: alias, + args: args, + directives: directives, + handles: handles, + loc: buildLocation(field.loc), + metadata: null, + name: name, + type: assertScalarFieldType(type) + }; + } else { + var selections = field.selectionSet ? this._transformSelections(field.selectionSet, type) : null; + + if (selections == null || selections.length === 0) { + throw createUserError("Expected at least one selection for non-scalar field '".concat(name, "' on type '").concat(String(type), "'. Source: ").concat(this._getErrorContext(), "."), null, [field]); + } + + return { + kind: 'LinkedField', + alias: alias, + args: args, + directives: directives, + handles: handles, + loc: buildLocation(field.loc), + metadata: null, + name: name, + selections: selections, + type: type + }; + } + }; + + _proto2._transformHandle = function _transformHandle(fieldName, fieldArgs, clientFieldDirectives) { + var _this8 = this; + + var handles; + clientFieldDirectives.forEach(function (clientFieldDirective) { + var handleArgument = (clientFieldDirective.arguments || []).find(function (arg) { + return getName(arg) === CLIENT_FIELD_HANDLE; + }); + + if (handleArgument) { + var name = null; + var key = DEFAULT_HANDLE_KEY; + var filters = null; + var maybeHandle = transformLiteralValue(handleArgument.value, handleArgument); + + if (typeof maybeHandle !== 'string') { + throw createUserError("Expected a string literal argument for the @".concat(CLIENT_FIELD, " directive. ") + "Source: ".concat(_this8._getErrorContext()), null, [handleArgument.value]); + } + + name = maybeHandle; + var keyArgument = (clientFieldDirective.arguments || []).find(function (arg) { + return getName(arg) === CLIENT_FIELD_KEY; + }); + + if (keyArgument) { + var maybeKey = transformLiteralValue(keyArgument.value, keyArgument); + + if (typeof maybeKey !== 'string') { + throw createUserError("Expected a string literal argument for the @".concat(CLIENT_FIELD, " directive. ") + "Source: ".concat(_this8._getErrorContext()), null, [keyArgument.value]); + } + + key = maybeKey; + } + + var filtersArgument = (clientFieldDirective.arguments || []).find(function (arg) { + return getName(arg) === CLIENT_FIELD_FILTERS; + }); + + if (filtersArgument) { + var maybeFilters = transformLiteralValue(filtersArgument.value, filtersArgument); + + if (!(Array.isArray(maybeFilters) && maybeFilters.every(function (filter) { + return typeof filter === 'string' && fieldArgs.some(function (fieldArg) { + return fieldArg.name === filter; + }); + }))) { + throw createUserError("Expected an array of argument names on field '".concat(fieldName, "'. ") + "Source: ".concat(_this8._getErrorContext()), null, [filtersArgument.value]); + } // $FlowFixMe + + + filters = maybeFilters; + } + + var dynamicKeyArgument = (clientFieldDirective.arguments || []).find(function (arg) { + return getName(arg) === 'dynamicKey_UNSTABLE'; + }); + + if (dynamicKeyArgument != null) { + throw createUserError('Dynamic keys are only supported with @connection.', null, [dynamicKeyArgument.value]); + } + + handles = handles || []; + handles.push({ + name: name, + key: key, + filters: filters, + dynamicKey: null + }); + } + }); + return handles; + }; + + _proto2._transformDirectives = function _transformDirectives(directives, location) { + var _this9 = this; + + this._validateDirectivesLocation(directives, location); + + return directives.map(function (directive) { + var name = getName(directive); + + var directiveDef = _this9._schema.getDirective(name); + + if (directiveDef == null) { + throw createUserError("Unknown directive '".concat(name, "'. Source: ").concat(_this9._getErrorContext()), null, [directive]); + } + + var args = _this9._transformArguments(directive.arguments || [], directiveDef.args); + + return { + kind: 'Directive', + loc: buildLocation(directive.loc), + metadata: null, + name: name, + args: args + }; + }); + }; + + _proto2._transformArguments = function _transformArguments(args, argumentDefinitions) { + var _this10 = this; + + return args.map(function (arg) { + var argName = getName(arg); + var argDef = argumentDefinitions.find(function (def) { + return def.name === argName; + }); + + if (argDef == null) { + throw createUserError("Unknown argument '".concat(argName, "'. Source: ").concat(_this10._getErrorContext()), null, [arg]); + } + + var value = _this10._transformValue(arg.value, argDef.type); + + return { + kind: 'Argument', + loc: buildLocation(arg.loc), + metadata: null, + name: argName, + value: value, + type: argDef.type + }; + }); + }; + + _proto2._splitConditions = function _splitConditions(mixedDirectives) { + var _this11 = this; + + var _partitionArray3 = partitionArray(mixedDirectives, function (directive) { + return directive.name === INCLUDE || directive.name === SKIP; + }), + conditionDirectives = _partitionArray3[0], + otherDirectives = _partitionArray3[1]; + + var conditions = conditionDirectives.map(function (directive) { + var passingValue = directive.name === INCLUDE; + var arg = directive.args[0]; + + if (arg == null || arg.name !== IF) { + throw createUserError("Expected an 'if' argument to @".concat(directive.name, ". Source: ").concat(_this11._getErrorContext()), [directive.loc]); + } + + if (!(arg.value.kind === 'Variable' || arg.value.kind === 'Literal')) { + throw createUserError("Expected the 'if' argument to @".concat(directive.name, " to be a variable or literal. Source: ").concat(_this11._getErrorContext()), [directive.loc]); + } + + return { + kind: 'Condition', + condition: arg.value, + loc: directive.loc, + metadata: null, + passingValue: passingValue, + selections: [] + }; + }); + var sortedConditions = conditions.sort(function (a, b) { + if (a.condition.kind === 'Variable' && b.condition.kind === 'Variable') { + return a.condition.variableName < b.condition.variableName ? -1 : a.condition.variableName > b.condition.variableName ? 1 : 0; + } else { + // sort literals earlier, variables later + return a.condition.kind === 'Variable' ? 1 : b.condition.kind === 'Variable' ? -1 : 0; + } + }); + return [sortedConditions, otherDirectives]; + }; + + _proto2._transformVariable = function _transformVariable(ast, usedAsType) { + var variableName = getName(ast); + + this._recordAndVerifyVariableReference(ast, variableName, usedAsType); + + return { + kind: 'Variable', + loc: buildLocation(ast.loc), + metadata: null, + variableName: variableName, + type: usedAsType + }; + }; + + _proto2._transformValue = function _transformValue(ast, type) { + var _this12 = this; + + return transformValue(ast, type, function (variableAst, variableType) { + return _this12._transformVariable(variableAst, variableType); + }); + }; + + return GraphQLDefinitionParser; +}(); +/** + * Transforms and validates argument values according to the expected + * type. + */ + + +function transformValue(ast, type, transformVariable) { + var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { + nonStrictEnums: false + }; + + if (ast.kind === 'Variable') { + // Special case variables since there is no value to parse + return transformVariable(ast, type); + } else if (ast.kind === 'NullValue') { + // Special case null literals since there is no value to parse + if (type instanceof GraphQLNonNull) { + throw createUserError("Expected a value matching type '".concat(String(type), "'."), null, [ast]); + } + + return { + kind: 'Literal', + loc: buildLocation(ast.loc), + metadata: null, + value: null + }; + } else { + return transformNonNullLiteral(ast, type, transformVariable, options); + } +} +/** + * Transforms and validates non-null literal (non-variable) values + * according to the expected type. + */ + + +function transformNonNullLiteral(ast, type, transformVariable, options) { + // Transform the value based on the type without a non-null wrapper. + // Note that error messages should still use the original `type` + // since that accurately describes to the user what the expected + // type is (using nullableType would suggest that `null` is legal + // even when it may not be, for example). + var nullableType = getNullableType(type); + + if (nullableType instanceof GraphQLList) { + if (ast.kind !== 'ListValue') { + // Parse singular (non-list) values flowing into a list type + // as scalars, ie without wrapping them in an array. + return transformValue(ast, nullableType.ofType, transformVariable, options); + } + + var itemType = assertInputType(nullableType.ofType); + var literalList = []; + var items = []; + var areAllItemsScalar = true; + ast.values.forEach(function (item) { + var itemValue = transformValue(item, itemType, transformVariable, options); + + if (itemValue.kind === 'Literal') { + literalList.push(itemValue.value); + } + + items.push(itemValue); + areAllItemsScalar = areAllItemsScalar && itemValue.kind === 'Literal'; + }); + + if (areAllItemsScalar) { + return { + kind: 'Literal', + loc: buildLocation(ast.loc), + metadata: null, + value: literalList + }; + } else { + return { + kind: 'ListValue', + loc: buildLocation(ast.loc), + metadata: null, + items: items + }; + } + } else if (nullableType instanceof GraphQLInputObjectType) { + var objectType = nullableType; + + if (ast.kind !== 'ObjectValue') { + throw createUserError("Expected a value matching type '".concat(String(type), "'."), null, [ast]); + } + + var literalObject = {}; + var fields = []; + var areAllFieldsScalar = true; + ast.fields.forEach(function (field) { + var fieldName = getName(field); + var fieldConfig = objectType.getFields()[fieldName]; + + if (fieldConfig == null) { + throw createUserError("Uknown field '".concat(fieldName, "' on type '").concat(String(type), "'."), null, [field]); + } + + var fieldType = assertInputType(fieldConfig.type); + var fieldValue = transformValue(field.value, fieldType, transformVariable, options); + + if (fieldValue.kind === 'Literal') { + literalObject[field.name.value] = fieldValue.value; + } + + fields.push({ + kind: 'ObjectFieldValue', + loc: buildLocation(field.loc), + metadata: null, + name: fieldName, + value: fieldValue + }); + areAllFieldsScalar = areAllFieldsScalar && fieldValue.kind === 'Literal'; + }); + + if (areAllFieldsScalar) { + return { + kind: 'Literal', + loc: buildLocation(ast.loc), + metadata: null, + value: literalObject + }; + } else { + return { + kind: 'ObjectValue', + loc: buildLocation(ast.loc), + metadata: null, + fields: fields + }; + } + } else if (nullableType === GraphQLID) { + // GraphQLID's parseLiteral() always returns the string value. However + // the int/string distinction may be important at runtime, so this + // transform parses int/string literals into the corresponding JS types. + if (ast.kind === 'IntValue') { + return { + kind: 'Literal', + loc: buildLocation(ast.loc), + metadata: null, + value: parseInt(ast.value, 10) + }; + } else if (ast.kind === 'StringValue') { + return { + kind: 'Literal', + loc: buildLocation(ast.loc), + metadata: null, + value: ast.value + }; + } else { + throw createUserError("Invalid value, expected a value matching type '".concat(String(type), "'."), null, [ast]); + } + } else if (nullableType === GraphQLInt) { + // Allow out-of-bounds integers + if (ast.kind === 'IntValue') { + return { + kind: 'Literal', + loc: buildLocation(ast.loc), + metadata: null, + value: parseInt(ast.value, 10) + }; + } else { + throw createUserError("Invalid value, expected a value matching type '".concat(String(type), "'."), null, [ast]); + } + } else if (nullableType instanceof GraphQLEnumType) { + var value = nullableType.parseLiteral(ast); + + if (value == null) { + if (options.nonStrictEnums) { + if (ast.kind === 'StringValue' || ast.kind === 'EnumValue') { + var _nullableType$parseVa; + + var alternateValue = (_nullableType$parseVa = nullableType.parseValue(ast.value.toUpperCase())) !== null && _nullableType$parseVa !== void 0 ? _nullableType$parseVa : nullableType.parseValue(ast.value.toLowerCase()); + + if (alternateValue != null) { + // Use the original raw value + return { + kind: 'Literal', + loc: buildLocation(ast.loc), + metadata: null, + value: ast.value + }; + } + } + } // parseLiteral() should return a non-null JavaScript value + // if the ast value is valid for the type. + + + throw createUserError("Expected a value matching type '".concat(String(type), "'."), null, [ast]); + } + + return { + kind: 'Literal', + loc: buildLocation(ast.loc), + metadata: null, + value: value + }; + } else if (nullableType instanceof GraphQLScalarType) { + var _value = nullableType.parseLiteral(ast); + + if (_value == null) { + // parseLiteral() should return a non-null JavaScript value + // if the ast value is valid for the type. + throw createUserError("Expected a value matching type '".concat(String(type), "'."), null, [ast]); + } + + return { + kind: 'Literal', + loc: buildLocation(ast.loc), + metadata: null, + value: _value + }; + } else { + nullableType; + throw createCompilerError("Unsupported type '".concat(String(type), "' for input value, expected a GraphQLList, ") + 'GraphQLInputObjectType, GraphQLEnumType, or GraphQLScalarType.', null, [ast]); + } +} +/** + * @private + */ + + +function transformLiteralValue(ast, context) { + switch (ast.kind) { + case 'IntValue': + return parseInt(ast.value, 10); + + case 'FloatValue': + return parseFloat(ast.value); + + case 'StringValue': + return ast.value; + + case 'BooleanValue': + // Note: duplicated because Flow does not understand fall-through cases + return ast.value; + + case 'EnumValue': + // Note: duplicated because Flow does not understand fall-through cases + return ast.value; + + case 'ListValue': + return ast.values.map(function (item) { + return transformLiteralValue(item, context); + }); + + case 'NullValue': + return null; + + case 'ObjectValue': + { + var objectValue = {}; + ast.fields.forEach(function (field) { + var fieldName = getName(field); + var value = transformLiteralValue(field.value, context); + objectValue[fieldName] = value; + }); + return objectValue; + } + + case 'Variable': + throw createUserError('Unexpected variable where a literal (static) value is required.', null, [ast, context]); + + default: + ast.kind; + throw createCompilerError("Unknown ast kind '".concat(ast.kind, "'."), [ast]); + } +} +/** + * @private + */ + + +function buildArgumentDefinitions(variables) { + return Array.from(variables.values(), function (_ref5) { + var ast = _ref5.ast, + name = _ref5.name, + type = _ref5.type, + defaultValue = _ref5.defaultValue; + return { + kind: 'LocalArgumentDefinition', + loc: buildLocation(ast.loc), + metadata: null, + name: name, + type: type, + defaultValue: defaultValue + }; + }); +} +/** + * @private + */ + + +function buildLocation(loc) { + if (loc == null) { + return { + kind: 'Unknown' + }; + } + + return { + kind: 'Source', + start: loc.start, + end: loc.end, + source: loc.source + }; +} +/** + * @private + */ + + +function isScalarFieldType(type) { + var namedType = getNamedType(type); + return namedType instanceof GraphQLScalarType || namedType instanceof GraphQLEnumType; +} +/** + * @private + */ + + +function assertScalarFieldType(type) { + if (!isScalarFieldType(type)) { + throw createUserError("Expected a scalar field type, got type '".concat(String(type), "'.")); + } + + return type; +} +/** + * @private + */ + + +function applyConditions(conditions, selections) { + var nextSelections = selections; + conditions.forEach(function (condition) { + nextSelections = [(0, _objectSpread2["default"])({}, condition, { + selections: nextSelections + })]; + }); + return nextSelections; +} +/** + * @private + */ + + +function getName(ast) { + var _ast$name; + + var name = (_ast$name = ast.name) === null || _ast$name === void 0 ? void 0 : _ast$name.value; + + if (typeof name !== 'string') { + throw createCompilerError("Expected ast node to have a 'name'.", null, [ast]); + } + + return name; +} + +module.exports = { + parse: parse, + transform: transform +}; + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + +/** + * Partitions an array given a predicate. All elements satisfying the predicate + * are part of the first returned array, and all elements that don't are in the + * second. + */ + +function partitionArray(array, predicate) { + var first = []; + var second = []; + + for (var i = 0; i < array.length; i++) { + var item = array[i]; + + if (predicate(item)) { + first.push(item); + } else { + second.push(item); + } + } + + return [first, second]; +} + +module.exports = partitionArray; + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +module.exports = { + DEFAULT_HANDLE_KEY: '' +}; + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var invariant = __webpack_require__(4); + +var _require = __webpack_require__(43), + DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY; + +var _require2 = __webpack_require__(1), + GraphQLEnumType = _require2.GraphQLEnumType, + GraphQLID = _require2.GraphQLID, + GraphQLInt = _require2.GraphQLInt, + GraphQLInputObjectType = _require2.GraphQLInputObjectType, + GraphQLList = _require2.GraphQLList, + GraphQLNonNull = _require2.GraphQLNonNull, + GraphQLScalarType = _require2.GraphQLScalarType; + +var INDENT = ' '; +/** + * Converts a GraphQLIR node into a GraphQL string. Custom Relay + * extensions (directives) are not supported; to print fragments with + * variables or fragment spreads with arguments, transform the node + * prior to printing. + */ + +function print(node) { + switch (node.kind) { + case 'Fragment': + return "fragment ".concat(node.name, " on ").concat(String(node.type)) + printFragmentArgumentDefinitions(node.argumentDefinitions) + printDirectives(node.directives) + printSelections(node, '') + '\n'; + + case 'Root': + return "".concat(node.operation, " ").concat(node.name) + printArgumentDefinitions(node.argumentDefinitions) + printDirectives(node.directives) + printSelections(node, '') + '\n'; + + case 'SplitOperation': + return "SplitOperation ".concat(node.name, " on ").concat(String(node.type)) + printSelections(node, '') + '\n'; + + default: + node; + true ? true ? invariant(false, 'GraphQLIRPrinter: Unsupported IR node `%s`.', node.kind) : undefined : undefined; + } +} + +function printSelections(node, indent, options) { + var selections = node.selections; + + if (selections == null) { + return ''; + } + + var printed = selections.map(function (selection) { + return printSelection(selection, indent, options); + }); + return printed.length ? " {\n".concat(indent + INDENT).concat(printed.join('\n' + indent + INDENT), "\n").concat(indent).concat((options === null || options === void 0 ? void 0 : options.isClientExtension) === true ? '# ' : '', "}") : ''; +} +/** + * Prints a field without subselections. + */ + + +function printField(field, options) { + var _ref; + + var parentDirectives = (_ref = options === null || options === void 0 ? void 0 : options.parentDirectives) !== null && _ref !== void 0 ? _ref : ''; + var isClientExtension = (options === null || options === void 0 ? void 0 : options.isClientExtension) === true; + return (isClientExtension ? '# ' : '') + (field.alias != null ? field.alias + ': ' + field.name : field.name) + printArguments(field.args) + parentDirectives + printDirectives(field.directives) + printHandles(field); +} + +function printSelection(selection, indent, options) { + var _ref2; + + var str; + var parentDirectives = (_ref2 = options === null || options === void 0 ? void 0 : options.parentDirectives) !== null && _ref2 !== void 0 ? _ref2 : ''; + var isClientExtension = (options === null || options === void 0 ? void 0 : options.isClientExtension) === true; + + if (selection.kind === 'LinkedField') { + str = printField(selection, { + parentDirectives: parentDirectives, + isClientExtension: isClientExtension + }); + str += printSelections(selection, indent + INDENT, { + isClientExtension: isClientExtension + }); + } else if (selection.kind === 'ModuleImport') { + str = selection.selections.map(function (matchSelection) { + return printSelection(matchSelection, indent, { + parentDirectives: parentDirectives, + isClientExtension: isClientExtension + }); + }).join('\n' + indent + INDENT); + } else if (selection.kind === 'ScalarField') { + str = printField(selection, { + parentDirectives: parentDirectives, + isClientExtension: isClientExtension + }); + } else if (selection.kind === 'InlineFragment') { + str = ''; + + if (isClientExtension) { + str += '# '; + } + + str += '... on ' + selection.typeCondition.toString(); + str += parentDirectives; + str += printDirectives(selection.directives); + str += printSelections(selection, indent + INDENT, { + isClientExtension: isClientExtension + }); + } else if (selection.kind === 'FragmentSpread') { + str = ''; + + if (isClientExtension) { + str += '# '; + } + + str += '...' + selection.name; + str += parentDirectives; + str += printFragmentArguments(selection.args); + str += printDirectives(selection.directives); + } else if (selection.kind === 'Condition') { + var value = printValue(selection.condition); // For Flow + + !(value != null) ? true ? invariant(false, 'GraphQLIRPrinter: Expected a variable for condition, got a literal `null`.') : undefined : void 0; + var condStr = selection.passingValue ? ' @include' : ' @skip'; + condStr += '(if: ' + value + ')'; + condStr += parentDirectives; // For multi-selection conditions, pushes the condition down to each + + var subSelections = selection.selections.map(function (sel) { + return printSelection(sel, indent, { + parentDirectives: condStr, + isClientExtension: isClientExtension + }); + }); + str = subSelections.join('\n' + INDENT); + } else if (selection.kind === 'Stream') { + var streamStr = " @stream(label: \"".concat(selection.label, "\""); + + if (selection["if"] !== null) { + var _printValue; + + streamStr += ", if: ".concat((_printValue = printValue(selection["if"])) !== null && _printValue !== void 0 ? _printValue : ''); + } + + if (selection.initialCount !== null) { + var _printValue2; + + streamStr += ", initial_count: ".concat((_printValue2 = printValue(selection.initialCount)) !== null && _printValue2 !== void 0 ? _printValue2 : ''); + } + + streamStr += ')'; + streamStr += parentDirectives; + + var _subSelections = selection.selections.map(function (sel) { + return printSelection(sel, indent, { + parentDirectives: streamStr, + isClientExtension: isClientExtension + }); + }); + + str = _subSelections.join('\n' + INDENT); + } else if (selection.kind === 'Defer') { + var deferStr = " @defer(label: \"".concat(selection.label, "\""); + + if (selection["if"] !== null) { + var _printValue3; + + deferStr += ", if: ".concat((_printValue3 = printValue(selection["if"])) !== null && _printValue3 !== void 0 ? _printValue3 : ''); + } + + deferStr += ')'; + deferStr += parentDirectives; + + var _subSelections2 = selection.selections.map(function (sel) { + return printSelection(sel, indent, { + parentDirectives: deferStr, + isClientExtension: isClientExtension + }); + }); + + str = _subSelections2.join('\n' + INDENT); + } else if (selection.kind === 'ClientExtension') { + !(isClientExtension === false) ? true ? invariant(false, 'GraphQLIRPrinter: Did not expect to encounter a ClientExtension node ' + 'as a descendant of another ClientExtension node.') : undefined : void 0; + str = '# Client-only selections:\n' + indent + INDENT + selection.selections.map(function (sel) { + return printSelection(sel, indent, { + parentDirectives: parentDirectives, + isClientExtension: true + }); + }).join('\n' + indent + INDENT); + } else { + selection; + true ? true ? invariant(false, 'GraphQLIRPrinter: Unknown selection kind `%s`.', selection.kind) : undefined : undefined; + } + + return str; +} + +function printArgumentDefinitions(argumentDefinitions) { + var printed = argumentDefinitions.map(function (def) { + var str = "$".concat(def.name, ": ").concat(def.type.toString()); + + if (def.defaultValue != null) { + str += ' = ' + printLiteral(def.defaultValue, def.type); + } + + return str; + }); + return printed.length ? "(\n".concat(INDENT).concat(printed.join('\n' + INDENT), "\n)") : ''; +} + +function printFragmentArgumentDefinitions(argumentDefinitions) { + var printed; + argumentDefinitions.forEach(function (def) { + if (def.kind !== 'LocalArgumentDefinition') { + return; + } + + printed = printed || []; + var str = "".concat(def.name, ": {type: \"").concat(def.type.toString(), "\""); + + if (def.defaultValue != null) { + str += ", defaultValue: ".concat(printLiteral(def.defaultValue, def.type)); + } + + str += '}'; + printed.push(str); + }); + return printed && printed.length ? " @argumentDefinitions(\n".concat(INDENT).concat(printed.join('\n' + INDENT), "\n)") : ''; +} + +function printHandles(field) { + if (!field.handles) { + return ''; + } + + var printed = field.handles.map(function (handle) { + // For backward compatibility and also because this module is shared by ComponentScript. + var key = handle.key === DEFAULT_HANDLE_KEY ? '' : ", key: \"".concat(handle.key, "\""); + var filters = handle.filters == null ? '' : ", filters: ".concat(JSON.stringify(Array.from(handle.filters).sort())); + return "@__clientField(handle: \"".concat(handle.name, "\"").concat(key).concat(filters, ")"); + }); + return printed.length ? ' ' + printed.join(' ') : ''; +} + +function printDirectives(directives) { + var printed = directives.map(function (directive) { + return '@' + directive.name + printArguments(directive.args); + }); + return printed.length ? ' ' + printed.join(' ') : ''; +} + +function printFragmentArguments(args) { + var printedArgs = printArguments(args); + + if (!printedArgs.length) { + return ''; + } + + return " @arguments".concat(printedArgs); +} + +function printArguments(args) { + var printed = []; + args.forEach(function (arg) { + var printedValue = printValue(arg.value, arg.type); + + if (printedValue != null) { + printed.push(arg.name + ': ' + printedValue); + } + }); + return printed.length ? '(' + printed.join(', ') + ')' : ''; +} + +function printValue(value, type) { + if (type instanceof GraphQLNonNull) { + type = type.ofType; + } + + if (value.kind === 'Variable') { + return '$' + value.variableName; + } else if (value.kind === 'ObjectValue') { + !(type instanceof GraphQLInputObjectType) ? true ? invariant(false, 'GraphQLIRPrinter: Need an InputObject type to print objects.') : undefined : void 0; + var typeFields = type.getFields(); + var pairs = value.fields.map(function (field) { + var innerValue = printValue(field.value, typeFields[field.name].type); + return innerValue == null ? null : field.name + ': ' + innerValue; + }).filter(Boolean); + return '{' + pairs.join(', ') + '}'; + } else if (value.kind === 'ListValue') { + !(type instanceof GraphQLList) ? true ? invariant(false, 'GraphQLIRPrinter: Need a type in order to print arrays.') : undefined : void 0; + var innerType = type.ofType; + return "[".concat(value.items.map(function (i) { + return printValue(i, innerType); + }).join(', '), "]"); + } else if (value.value != null) { + return printLiteral(value.value, type); + } else { + return null; + } +} + +function printLiteral(value, type) { + if (value == null) { + // $FlowFixMe(>=0.95.0) JSON.stringify can return undefined + return JSON.stringify(value); + } + + if (type instanceof GraphQLNonNull) { + type = type.ofType; + } + + if (type instanceof GraphQLEnumType) { + var result = type.serialize(value); + + if (result == null && typeof value === 'string') { + // For backwards compatibility, print invalid input values as-is. This + // can occur with literals defined as an @argumentDefinitions + // defaultValue. + result = value; + } + + !(typeof result === 'string') ? true ? invariant(false, 'GraphQLIRPrinter: Expected value of type %s to be a valid enum value, got `%s`.', type.name, JSON.stringify(value)) : undefined : void 0; + return result; + } else if (type === GraphQLID || type === GraphQLInt) { + // For backwards compatibility, print integer and ID values as-is + // $FlowFixMe(>=0.95.0) JSON.stringify can return undefined + return JSON.stringify(value); + } else if (type instanceof GraphQLScalarType) { + var _result = type.serialize(value); // $FlowFixMe(>=0.95.0) JSON.stringify can return undefined + + + return JSON.stringify(_result); + } else if (Array.isArray(value)) { + !(type instanceof GraphQLList) ? true ? invariant(false, 'GraphQLIRPrinter: Need a type in order to print arrays.') : undefined : void 0; + var itemType = type.ofType; + return '[' + value.map(function (item) { + return printLiteral(item, itemType); + }).join(', ') + ']'; + } else if (typeof value === 'object' && value != null) { + var fields = []; + !(type instanceof GraphQLInputObjectType) ? true ? invariant(false, 'GraphQLIRPrinter: Need an InputObject type to print objects.') : undefined : void 0; + var typeFields = type.getFields(); + + for (var key in value) { + if (value.hasOwnProperty(key)) { + fields.push(key + ': ' + printLiteral(value[key], typeFields[key].type)); + } + } + + return '{' + fields.join(', ') + '}'; + } else if (type instanceof GraphQLList && value != null) { + // Not an array, but still a list. Treat as list-of-one as per spec 3.1.7: + // http://facebook.github.io/graphql/October2016/#sec-Lists + return printLiteral(value, type.ofType); + } else { + // $FlowFixMe(>=0.95.0) JSON.stringify can return undefined + return JSON.stringify(value); + } +} + +module.exports = { + print: print, + printField: printField, + printArguments: printArguments, + printDirectives: printDirectives +}; + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + +/** + * Marks a string of code as code to be replaced later. + */ + +function moduleDependency(code) { + return "@@MODULE_START@@".concat(code, "@@MODULE_END@@"); +} +/** + * After JSON.stringify'ing some code that contained parts marked with `mark()`, + * this post-processes the JSON to convert the marked code strings to raw code. + * + * Example: + * CodeMarker.postProcess( + * JSON.stringify({code: CodeMarker.mark('alert(1)')}) + * ) + */ + + +function postProcess(json, printModule) { + return json.replace(/"@@MODULE_START@@(.*?)@@MODULE_END@@"/g, function (_, moduleName) { + return printModule(moduleName); + }); +} + +module.exports = { + moduleDependency: moduleDependency, + postProcess: postProcess +}; + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var getIdentifierForSelection = __webpack_require__(47); + +var GraphQLCompilerContext = __webpack_require__(3); + +var GraphQLIRTransformer = __webpack_require__(5); + +var GraphQLSchemaUtils = __webpack_require__(8); + +var _require = __webpack_require__(9), + createCompilerError = _require.createCompilerError, + createUserError = _require.createUserError; + +var areEqual = __webpack_require__(128); + +var getRawType = GraphQLSchemaUtils.getRawType, + isAbstractType = GraphQLSchemaUtils.isAbstractType; + +/** + * Transform that flattens inline fragments, fragment spreads, and conditionals. + * + * Inline fragments are inlined (replaced with their selections) when: + * - The fragment type matches the type of its parent. + * - The fragment has an abstract type and the `flattenAbstractTypes` option has + * been set. + */ +function flattenTransformImpl(context, options) { + var state = { + flattenAbstractTypes: !!(options && options.flattenAbstractTypes), + parentType: null + }; + var visitorFn = memoizedFlattenSelection(new Map()); + return GraphQLIRTransformer.transform(context, { + Root: visitorFn, + Fragment: visitorFn, + Condition: visitorFn, + InlineFragment: visitorFn, + LinkedField: visitorFn, + SplitOperation: visitorFn + }, function () { + return state; + }); +} + +function memoizedFlattenSelection(cache) { + return function flattenSelectionsFn(node, state) { + var nodeCache = cache.get(node); + + if (nodeCache == null) { + nodeCache = new Map(); + cache.set(node, nodeCache); + } // Determine the current type. + + + var parentType = state.parentType; + var result = nodeCache.get(parentType); + + if (result != null) { + return result; + } + + var type = node.kind === 'LinkedField' || node.kind === 'Fragment' || node.kind === 'Root' || node.kind === 'SplitOperation' ? node.type : node.kind === 'InlineFragment' ? node.typeCondition : parentType; + + if (type == null) { + throw createCompilerError('FlattenTransform: Expected a parent type.', [node.loc]); + } // Flatten the selections in this node, creating a new node with flattened + // selections if possible, then deeply traverse the flattened node, while + // keeping track of the parent type. + + + var nextSelections = new Map(); + var hasFlattened = flattenSelectionsInto(nextSelections, node, state, type); + var flattenedNode = hasFlattened ? (0, _objectSpread2["default"])({}, node, { + selections: Array.from(nextSelections.values()) + }) : node; + state.parentType = type; + var deeplyFlattenedNode = this.traverse(flattenedNode, state); + state.parentType = parentType; + nodeCache.set(parentType, deeplyFlattenedNode); + return deeplyFlattenedNode; + }; +} +/** + * @private + */ + + +function flattenSelectionsInto(flattenedSelections, node, state, type) { + var hasFlattened = false; + node.selections.forEach(function (selection) { + if (selection.kind === 'InlineFragment' && shouldFlattenInlineFragment(selection, state, type)) { + hasFlattened = true; + flattenSelectionsInto(flattenedSelections, selection, state, type); + return; + } + + var nodeIdentifier = getIdentifierForSelection(selection); + var flattenedSelection = flattenedSelections.get(nodeIdentifier); // If this selection hasn't been seen before, keep track of it. + + if (!flattenedSelection) { + flattenedSelections.set(nodeIdentifier, selection); + return; + } // Otherwise a similar selection exists which should be merged. + + + hasFlattened = true; + + if (flattenedSelection.kind === 'InlineFragment') { + if (selection.kind !== 'InlineFragment') { + throw createCompilerError("FlattenTransform: Expected an InlineFragment, got a '".concat(selection.kind, "'"), [selection.loc]); + } + + flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])({}, flattenedSelection, { + selections: mergeSelections(flattenedSelection, selection, state, selection.typeCondition) + })); + } else if (flattenedSelection.kind === 'Condition') { + if (selection.kind !== 'Condition') { + throw createCompilerError("FlattenTransform: Expected a Condition, got a '".concat(selection.kind, "'"), [selection.loc]); + } + + flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])({}, flattenedSelection, { + selections: mergeSelections(flattenedSelection, selection, state, type) + })); + } else if (flattenedSelection.kind === 'ClientExtension') { + if (selection.kind !== 'ClientExtension') { + throw createCompilerError("FlattenTransform: Expected a ClientExtension, got a '".concat(selection.kind, "'"), [selection.loc]); + } + + flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])({}, flattenedSelection, { + selections: mergeSelections(flattenedSelection, selection, state, type) + })); + } else if (flattenedSelection.kind === 'FragmentSpread') {// Ignore duplicate fragment spreads. + } else if (flattenedSelection.kind === 'ModuleImport') { + if (selection.kind !== 'ModuleImport') { + throw createCompilerError("FlattenTransform: Expected a ModuleImport, got a '".concat(selection.kind, "'"), [selection.loc]); + } + + if (selection.name !== flattenedSelection.name || selection.module !== flattenedSelection.module || selection.documentName !== flattenedSelection.documentName) { + throw createUserError('Found conflicting @module selections: use a unique alias on the ' + 'parent fields.', [selection.loc, flattenedSelection.loc]); + } + + flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])({}, flattenedSelection, { + selections: mergeSelections(flattenedSelection, selection, state, type) + })); + } else if (flattenedSelection.kind === 'Defer') { + if (selection.kind !== 'Defer') { + throw createCompilerError("FlattenTransform: Expected a Defer, got a '".concat(selection.kind, "'"), [selection.loc]); + } + + flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])({ + kind: 'Defer' + }, flattenedSelection, { + selections: mergeSelections(flattenedSelection, selection, state, type) + })); + } else if (flattenedSelection.kind === 'Stream') { + if (selection.kind !== 'Stream') { + throw createCompilerError("FlattenTransform: Expected a Stream, got a '".concat(selection.kind, "'"), [selection.loc]); + } + + flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])({ + kind: 'Stream' + }, flattenedSelection, { + selections: mergeSelections(flattenedSelection, selection, state, type) + })); + } else if (flattenedSelection.kind === 'LinkedField') { + if (selection.kind !== 'LinkedField') { + throw createCompilerError("FlattenTransform: Expected a LinkedField, got a '".concat(selection.kind, "'"), [selection.loc]); + } // Note: arguments are intentionally reversed to avoid rebuilds + + + assertUniqueArgsForAlias(selection, flattenedSelection); + flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])({ + kind: 'LinkedField' + }, flattenedSelection, { + handles: mergeHandles(flattenedSelection, selection), + selections: mergeSelections(flattenedSelection, selection, state, selection.type) + })); + } else if (flattenedSelection.kind === 'ScalarField') { + if (selection.kind !== 'ScalarField') { + throw createCompilerError("FlattenTransform: Expected a ScalarField, got a '".concat(selection.kind, "'"), [selection.loc]); + } // Note: arguments are intentionally reversed to avoid rebuilds + + + assertUniqueArgsForAlias(selection, flattenedSelection); + flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])({ + kind: 'ScalarField' + }, flattenedSelection, { + // Note: arguments are intentionally reversed to avoid rebuilds + handles: mergeHandles(selection, flattenedSelection) + })); + } else { + flattenedSelection.kind; + throw createCompilerError("FlattenTransform: Unknown kind '".concat(flattenedSelection.kind, "'")); + } + }); + return hasFlattened; +} +/** + * @private + */ + + +function mergeSelections(nodeA, nodeB, state, type) { + var flattenedSelections = new Map(); + flattenSelectionsInto(flattenedSelections, nodeA, state, type); + flattenSelectionsInto(flattenedSelections, nodeB, state, type); + return Array.from(flattenedSelections.values()); +} +/** + * @private + * TODO(T19327202) This is redundant with OverlappingFieldsCanBeMergedRule once + * it can be enabled. + */ + + +function assertUniqueArgsForAlias(field, otherField) { + if (!areEqualFields(field, otherField)) { + var _field$alias; + + throw createUserError('Expected all fields on the same parent with ' + "the name or alias '".concat((_field$alias = field.alias) !== null && _field$alias !== void 0 ? _field$alias : field.name, "' to have the same name and arguments."), [field.loc, otherField.loc]); + } +} +/** + * @private + */ + + +function shouldFlattenInlineFragment(fragment, state, type) { + return fragment.typeCondition.name === getRawType(type).name || state.flattenAbstractTypes && isAbstractType(fragment.typeCondition); +} +/** + * @private + * + * Verify that two fields are equal in all properties other than their + * selections. + */ + + +function areEqualFields(thisField, thatField) { + return thisField.kind === thatField.kind && thisField.name === thatField.name && thisField.alias === thatField.alias && areEqualArgs(thisField.args, thatField.args); +} +/** + * Verify that two sets of arguments are equivalent - same argument names + * and values. Notably this ignores the types of arguments and values, which + * may not always be inferred identically. + */ + + +function areEqualArgs(thisArgs, thatArgs) { + return thisArgs.length === thatArgs.length && thisArgs.every(function (thisArg, index) { + var thatArg = thatArgs[index]; + return thisArg.name === thatArg.name && thisArg.value.kind === thatArg.value.kind && thisArg.value.variableName === thatArg.value.variableName && areEqual(thisArg.value.value, thatArg.value.value); + }); +} +/** + * @private + */ + + +function mergeHandles(nodeA, nodeB) { + if (!nodeA.handles) { + return nodeB.handles; + } + + if (!nodeB.handles) { + return nodeA.handles; + } + + var uniqueItems = new Map(); + nodeA.handles.concat(nodeB.handles).forEach(function (item) { + return uniqueItems.set(item.name + item.key, item); + }); + return Array.from(uniqueItems.values()); +} + +function transformWithOptions(options) { + return function flattenTransform(context) { + return flattenTransformImpl(context, options); + }; +} + +module.exports = { + transformWithOptions: transformWithOptions +}; + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var invariant = __webpack_require__(4); + +var _require = __webpack_require__(44), + printArguments = _require.printArguments, + printDirectives = _require.printDirectives; + +/** + * Generates an identifier that is unique to a given selection: the alias for + * fields, the type for inline fragments, and a summary of the condition + * variable and passing value for conditions. + */ +function getIdentifierForSelection(node) { + if (node.kind === 'LinkedField' || node.kind === 'ScalarField') { + return 'Field: ' + node.directives.length === 0 ? node.alias || node.name : (node.alias || node.name) + printDirectives(node.directives); + } else if (node.kind === 'FragmentSpread') { + return 'FragmentSpread:' + node.args.length === 0 ? node.name : node.name + printArguments(node.args); + } else if (node.kind === 'ModuleImport') { + return 'ModuleImport:'; + } else if (node.kind === 'Defer') { + return 'Defer:' + node.label; + } else if (node.kind === 'Stream') { + return 'Stream:' + node.label; + } else if (node.kind === 'InlineFragment') { + return 'InlineFragment:' + node.typeCondition.name; + } else if (node.kind === 'ClientExtension') { + return 'ClientExtension:'; + } else if (node.kind === 'Condition') { + return 'Condition:' + (node.condition.kind === 'Variable' ? '$' + node.condition.variableName : String(node.condition.value)) + String(node.passingValue); + } else { + true ? true ? invariant(false, 'getIdentifierForSelection: Unexpected kind `%s`.', node.kind) : undefined : undefined; + } +} + +module.exports = getIdentifierForSelection; + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var GraphQLCompilerContext = __webpack_require__(3); + +var GraphQLIRVisitor = __webpack_require__(24); + +var _require = __webpack_require__(9), + createCompilerError = _require.createCompilerError; + +var _require2 = __webpack_require__(1), + GraphQLNonNull = _require2.GraphQLNonNull, + GraphQLBoolean = _require2.GraphQLBoolean, + GraphQLString = _require2.GraphQLString; + +/** + * Returns a transformed version of the input context where each document's + * argument definitions are updated to accurately describe the root variables + * used (or reachable) from that document: + * - Fragment argument definitions are updated to include local argument + * definitions and any root variables that are referenced + * by the fragment (or any fragments it transitively spreads). + * - Root argument definitions are updated to reflect the variables + * referenced locally and all root variables referenced by any + * fragments it (transitively) spreads. + */ +function inferRootArgumentDefinitions(context) { + // This transform does two main tasks: + // - Determine the set of root variables referenced locally in each + // fragment. Note that RootArgumentDefinitions in the fragment's + // argumentDefinitions can contain spurious entries for legacy + // reasons. Instead of using those the fragment is traversed + // to reanalyze variable usage. + // - Determine the set of root variables that are transitively referenced + // by each fragment, ie the union of all root variables used in the + // fragment and any fragments it transitively spreads. + // Cache fragments as they are transformed to avoid duplicate processing. + // Because @argument values don't matter (only variable names/types), + // each reachable fragment only has to be checked once. + var transformed = new Map(); + var nextContext = new GraphQLCompilerContext(context.serverSchema, context.clientSchema); + return nextContext.addAll(Array.from(context.documents(), function (node) { + switch (node.kind) { + case 'Fragment': + { + var argumentDefinitions = transformFragmentArguments(context, transformed, node); + return (0, _objectSpread2["default"])({}, node, { + argumentDefinitions: Array.from(argumentDefinitions.values()) + }); + } + + case 'Root': + { + return transformRoot(context, transformed, node); + } + + case 'SplitOperation': + { + return node; + } + + default: + { + node; + throw createCompilerError("inferRootArgumentDefinitions: Unsupported kind '".concat(node.kind, "'.")); + } + } + })); +} + +function transformRoot(context, transformed, root) { + // Ignore argument definitions, determine what root variables are + // transitively referenced + var argumentDefinitions = new Map(); + var localArgumentDefinitions = new Map(); + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = root.argumentDefinitions.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _step$value = _step.value, + name = _step$value[0], + argDef = _step$value[1]; + + if (argDef.kind === 'LocalArgumentDefinition') { + localArgumentDefinitions.set(name, argDef); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + visit(context, transformed, argumentDefinitions, root); + return (0, _objectSpread2["default"])({}, root, { + argumentDefinitions: Array.from(argumentDefinitions.values(), function (argDef) { + var _ref, _ref2; + + if (argDef.kind !== 'RootArgumentDefinition') { + throw createCompilerError("inferRootArgumentDefinitions: Expected inferred variable '$".concat(argDef.name, "' to be a root variables."), [argDef.loc]); + } + + var localDefinition = localArgumentDefinitions.get(argDef.name); + return { + defaultValue: (_ref = localDefinition === null || localDefinition === void 0 ? void 0 : localDefinition.defaultValue) !== null && _ref !== void 0 ? _ref : null, + kind: 'LocalArgumentDefinition', + loc: argDef.loc, + metadata: null, + name: argDef.name, + type: (_ref2 = localDefinition === null || localDefinition === void 0 ? void 0 : localDefinition.type) !== null && _ref2 !== void 0 ? _ref2 : argDef.type + }; + }) + }); +} + +function transformFragmentArguments(context, transformed, fragment) { + var name = fragment.name; + var transformedArguments = transformed.get(name); + + if (transformedArguments != null) { + return transformedArguments; + } // Start with only the explicitly defined local arguments, recover the + // correct set of root variables excluding invalid @arguments values. + + + var argumentDefinitions = new Map(); + fragment.argumentDefinitions.forEach(function (argDef) { + if (argDef.kind === 'LocalArgumentDefinition') { + argumentDefinitions.set(argDef.name, argDef); + } + }); // Break cycles by initially caching a version that only has local + // arguments. If the current fragment is reached again, it won't have + // any root variables to add to its parents. The traversal below will + // find any root variables and update the cached version of the + // fragment. + + transformed.set(name, argumentDefinitions); + visit(context, transformed, argumentDefinitions, fragment); + transformed.set(name, argumentDefinitions); + return argumentDefinitions; +} + +function visit(context, transformed, argumentDefinitions, node) { + GraphQLIRVisitor.visit(node, { + FragmentSpread: function FragmentSpread(fragmentSpread) { + var fragment; + + try { + fragment = context.getFragment(fragmentSpread.name); + } catch (_unused) { + // Handle cases where a compat fragment references a classic fragment + // that is not accessible to Relay compiler + // TODO: disallow unknown fragment references + // throw createCompilerError( + // `Document '${node.name}' referenced unknown fragment '${ + // fragmentSpread.name + // }'.`, + // [fragmentSpread.loc], + // ); + return false; + } + + var referencedFragmentArguments = transformFragmentArguments(context, transformed, fragment); // Detect root variables being passed as the value of @arguments; + // recover the expected type from the corresponding argument definitions. + + fragmentSpread.args.forEach(function (arg) { + var argDef = referencedFragmentArguments.get(arg.name); + + if (argDef != null && arg.value.kind === 'Variable' && !argumentDefinitions.has(arg.value.variableName)) { + argumentDefinitions.set(arg.value.variableName, { + kind: 'RootArgumentDefinition', + loc: { + kind: 'Derived', + source: arg.loc + }, + metadata: null, + name: arg.value.variableName, + type: argDef.type + }); + } + }); // Merge any root variables referenced by the spread fragment + // into this (parent) fragment's arguments. + + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = referencedFragmentArguments.values()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var argDef = _step2.value; + + if (argDef.kind === 'RootArgumentDefinition' && !argumentDefinitions.has(argDef.name)) { + argumentDefinitions.set(argDef.name, argDef); + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + return false; + }, + Argument: function Argument(argument) { + var _variable$type; + + if (argument.value.kind !== 'Variable') { + return false; + } + + var variable = argument.value; + var type = (_variable$type = variable.type) !== null && _variable$type !== void 0 ? _variable$type : argument.type; + + if (type == null) { + return; + } + + if (!argumentDefinitions.has(variable.variableName)) { + // root variable + argumentDefinitions.set(variable.variableName, { + kind: 'RootArgumentDefinition', + loc: { + kind: 'Derived', + source: argument.loc + }, + metadata: null, + name: variable.variableName, + type: type + }); + } + + return false; + }, + Condition: function Condition(condition) { + var _variable$type2; + + var variable = condition.condition; + + if (variable.kind !== 'Variable') { + return; + } + + var type = (_variable$type2 = variable.type) !== null && _variable$type2 !== void 0 ? _variable$type2 : new GraphQLNonNull(GraphQLBoolean); + + if (!argumentDefinitions.has(variable.variableName)) { + // root variable + argumentDefinitions.set(variable.variableName, { + kind: 'RootArgumentDefinition', + loc: { + kind: 'Derived', + source: variable.loc + }, + metadata: null, + name: variable.variableName, + type: type + }); + } + }, + Defer: function Defer(defer) { + var _variable$type3; + + var variable = defer["if"]; + + if (variable == null || variable.kind !== 'Variable') { + return; + } + + var type = (_variable$type3 = variable.type) !== null && _variable$type3 !== void 0 ? _variable$type3 : new GraphQLNonNull(GraphQLBoolean); + + if (!argumentDefinitions.has(variable.variableName)) { + // root variable + argumentDefinitions.set(variable.variableName, { + kind: 'RootArgumentDefinition', + loc: { + kind: 'Derived', + source: variable.loc + }, + metadata: null, + name: variable.variableName, + type: type + }); + } + }, + Stream: function Stream(stream) { + var _variable$type4; + + var variable = stream["if"]; + + if (variable == null || variable.kind !== 'Variable') { + return; + } + + var type = (_variable$type4 = variable.type) !== null && _variable$type4 !== void 0 ? _variable$type4 : new GraphQLNonNull(GraphQLBoolean); + + if (!argumentDefinitions.has(variable.variableName)) { + // root variable + argumentDefinitions.set(variable.variableName, { + kind: 'RootArgumentDefinition', + loc: { + kind: 'Derived', + source: variable.loc + }, + metadata: null, + name: variable.variableName, + type: type + }); + } + }, + LinkedField: function LinkedField(field) { + if (!field.handles) { + return; + } + + field.handles.forEach(function (handle) { + var _variable$type5; + + var variable = handle.dynamicKey; + + if (variable == null) { + return; + } + + var type = (_variable$type5 = variable.type) !== null && _variable$type5 !== void 0 ? _variable$type5 : GraphQLString; + + if (!argumentDefinitions.has(variable.variableName)) { + // root variable + argumentDefinitions.set(variable.variableName, { + kind: 'RootArgumentDefinition', + loc: { + kind: 'Derived', + source: variable.loc + }, + metadata: null, + name: variable.variableName, + type: type + }); + } + }); + } + }); +} + +module.exports = inferRootArgumentDefinitions; + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +function hasUnaliasedSelection(field, fieldName) { + return field.selections.some(function (selection) { + return selection.kind === 'ScalarField' && selection.alias == null && selection.name === fieldName; + }); +} + +module.exports = { + hasUnaliasedSelection: hasUnaliasedSelection +}; + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * All rights reserved. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +var invariant = __webpack_require__(4); + +var _require = __webpack_require__(1), + isTypeSubTypeOf = _require.isTypeSubTypeOf, + GraphQLSchema = _require.GraphQLSchema; + +/** + * A transform that inlines fragment spreads with the @relay(mask: false) + * directive. + */ +function relayMaskTransform(context) { + return IRTransformer.transform(context, { + FragmentSpread: visitFragmentSpread, + Fragment: visitFragment + }, function () { + return { + reachableArguments: [] + }; + }); +} + +function visitFragment(fragment, state) { + var result = this.traverse(fragment, state); + + if (state.reachableArguments.length === 0) { + return result; + } + + var schema = this.getContext().serverSchema; + var joinedArgumentDefinitions = joinFragmentArgumentDefinitions(schema, fragment, state.reachableArguments); + return (0, _objectSpread2["default"])({}, result, { + argumentDefinitions: joinedArgumentDefinitions + }); +} + +function visitFragmentSpread(fragmentSpread, state) { + if (!isUnmaskedSpread(fragmentSpread)) { + return fragmentSpread; + } + + !(fragmentSpread.args.length === 0) ? true ? invariant(false, 'RelayMaskTransform: Cannot unmask fragment spread `%s` with ' + 'arguments. Use the `ApplyFragmentArgumentTransform` before flattening', fragmentSpread.name) : undefined : void 0; + var context = this.getContext(); + var fragment = context.getFragment(fragmentSpread.name); + var result = { + kind: 'InlineFragment', + directives: fragmentSpread.directives, + loc: { + kind: 'Derived', + source: fragmentSpread.loc + }, + metadata: fragmentSpread.metadata, + selections: fragment.selections, + typeCondition: fragment.type + }; + !!fragment.argumentDefinitions.find(function (argDef) { + return argDef.kind === 'LocalArgumentDefinition'; + }) ? true ? invariant(false, 'RelayMaskTransform: Cannot unmask fragment spread `%s` because it has local ' + 'argument definition.', fragmentSpread.name) : undefined : void 0; // Note: defer validating arguments to the containing fragment in order + // to list all invalid variables/arguments instead of only one. + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = fragment.argumentDefinitions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var argDef = _step.value; + state.reachableArguments.push({ + argDef: argDef, + source: fragmentSpread.name + }); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return this.traverse(result, state); +} +/** + * @private + */ + + +function isUnmaskedSpread(spread) { + return Boolean(spread.metadata && spread.metadata.mask === false); +} +/** + * @private + * + * Attempts to join the argument definitions for a root fragment + * and any unmasked fragment spreads reachable from that root fragment, + * returning a combined list of arguments or throwing if the same + * variable(s) are used in incompatible ways in different fragments. + */ + + +function joinFragmentArgumentDefinitions(schema, fragment, reachableArguments) { + var joinedArgumentDefinitions = new Map(); + fragment.argumentDefinitions.forEach(function (prevArgDef) { + joinedArgumentDefinitions.set(prevArgDef.name, prevArgDef); + }); + var errors = []; + reachableArguments.forEach(function (nextArg) { + var nextArgDef = nextArg.argDef, + source = nextArg.source; + var prevArgDef = joinedArgumentDefinitions.get(nextArgDef.name); + + if (prevArgDef) { + var joinedArgDef = joinArgumentDefinition(schema, prevArgDef, nextArgDef); + + if (joinedArgDef === null) { + errors.push("Variable `$".concat(nextArgDef.name, "` in `").concat(source, "`")); + } else { + joinedArgumentDefinitions.set(joinedArgDef.name, joinedArgDef); + } + } else { + joinedArgumentDefinitions.set(nextArgDef.name, nextArgDef); + } + }); + + if (errors.length) { + throw new Error('RelayMaskTransform: Cannot unmask one or more fragments in ' + "`".concat(fragment.name, "`, the following variables are referenced more ") + 'than once with incompatible kinds/types:\n' + errors.map(function (msg) { + return "* ".concat(msg); + }).join('\n')); + } + + return Array.from(joinedArgumentDefinitions.values()); +} +/** + * @private + * + * Attempts to join two argument definitions, returning a single argument + * definition that is compatible with both of the inputs: + * - If the kind, name, or defaultValue is different then the arguments + * cannot be joined, indicated by returning null. + * - If either of next/prev is a subtype of the other, return the one + * that is the subtype: a more narrow type can flow into a more general + * type but not the inverse. + * - Otherwise there is no subtyping relation between prev/next, so return + * null to indicate they cannot be joined. + */ + + +function joinArgumentDefinition(schema, prevArgDef, nextArgDef) { + if (prevArgDef.kind !== nextArgDef.kind || prevArgDef.name !== nextArgDef.name || // Only LocalArgumentDefinition defines defaultValue + prevArgDef.defaultValue !== nextArgDef.defaultValue) { + return null; + } else if (isTypeSubTypeOf(schema, nextArgDef.type, prevArgDef.type)) { + // prevArgDef is less strict than nextArgDef + return nextArgDef; + } else if (isTypeSubTypeOf(schema, prevArgDef.type, nextArgDef.type)) { + return prevArgDef; + } else { + return null; + } +} + +module.exports = { + transform: relayMaskTransform +}; + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +var getLiteralArgumentValues = __webpack_require__(25); + +var getNormalizationOperationName = __webpack_require__(52); + +var _require = __webpack_require__(8), + getRawType = _require.getRawType; + +var _require2 = __webpack_require__(9), + createUserError = _require2.createUserError; + +var _require3 = __webpack_require__(1), + assertObjectType = _require3.assertObjectType, + isObjectType = _require3.isObjectType, + GraphQLObjectType = _require3.GraphQLObjectType, + GraphQLScalarType = _require3.GraphQLScalarType, + GraphQLInterfaceType = _require3.GraphQLInterfaceType, + GraphQLUnionType = _require3.GraphQLUnionType, + GraphQLList = _require3.GraphQLList, + GraphQLString = _require3.GraphQLString, + getNullableType = _require3.getNullableType; + +var _require4 = __webpack_require__(19), + getModuleComponentKey = _require4.getModuleComponentKey, + getModuleOperationKey = _require4.getModuleOperationKey; + +var SUPPORTED_ARGUMENT_NAME = 'supported'; +var JS_FIELD_TYPE = 'JSDependency'; +var JS_FIELD_ARG = 'module'; +var JS_FIELD_NAME = 'js'; +var SCHEMA_EXTENSION = "\n directive @match on FIELD\n\n directive @module(\n name: String!\n ) on FRAGMENT_SPREAD\n"; + +/** + * This transform rewrites LinkedField nodes with @match and rewrites them + * into `LinkedField` nodes with a `supported` argument. + */ +function relayMatchTransform(context) { + return IRTransformer.transform(context, { + // TODO: type IRTransformer to allow changing result type + FragmentSpread: visitFragmentSpread, + LinkedField: visitLinkedField, + InlineFragment: visitInlineFragment, + ScalarField: visitScalarField + }, function (node) { + return { + documentName: node.name, + parentType: node.type + }; + }); +} + +function visitInlineFragment(node, state) { + return this.traverse(node, (0, _objectSpread2["default"])({}, state, { + parentType: node.typeCondition + })); +} + +function visitScalarField(field) { + if (field.name === JS_FIELD_NAME) { + var context = this.getContext(); + var schema = context.serverSchema; + var jsModuleType = schema.getType(JS_FIELD_TYPE); + + if (jsModuleType != null && jsModuleType instanceof GraphQLScalarType && getRawType(field.type).name === jsModuleType.name) { + throw new createUserError("Direct use of the '".concat(JS_FIELD_NAME, "' field is not allowed, use ") + '@match/@module instead.', [field.loc]); + } + } + + return field; +} + +function visitLinkedField(node, state) { + var transformedNode = this.traverse(node, (0, _objectSpread2["default"])({}, state, { + parentType: node.type + })); + var matchDirective = transformedNode.directives.find(function (directive) { + return directive.name === 'match'; + }); + + if (matchDirective == null) { + return transformedNode; + } + + var parentType = state.parentType; + var rawType = getRawType(parentType); + + if (!(rawType instanceof GraphQLInterfaceType || rawType instanceof GraphQLObjectType)) { + throw createUserError("@match used on incompatible field '".concat(transformedNode.name, "'.") + '@match may only be used with fields whose parent type is an ' + "interface or object, got invalid type '".concat(String(parentType), "'."), [node.loc]); + } + + var context = this.getContext(); + var currentField = rawType.getFields()[transformedNode.name]; + var supportedArgumentDefinition = currentField.args.find(function (_ref2) { + var name = _ref2.name; + return name === SUPPORTED_ARGUMENT_NAME; + }); + var supportedArgType = supportedArgumentDefinition != null ? getNullableType(supportedArgumentDefinition.type) : null; + var supportedArgOfType = supportedArgType != null && supportedArgType instanceof GraphQLList ? supportedArgType.ofType : null; + + if (supportedArgumentDefinition == null || supportedArgType == null || supportedArgOfType == null || getNullableType(supportedArgOfType) !== GraphQLString) { + throw createUserError("@match used on incompatible field '".concat(transformedNode.name, "'. ") + '@match may only be used with fields that accept a ' + "'supported: [String!]!' argument.", [node.loc]); + } + + var rawFieldType = getRawType(transformedNode.type); + + if (!(rawFieldType instanceof GraphQLUnionType) && !(rawFieldType instanceof GraphQLInterfaceType)) { + throw createUserError("@match used on incompatible field '".concat(transformedNode.name, "'.") + '@match may only be used with fields that return a union or interface.', [node.loc]); + } + + var seenTypes = new Map(); + var selections = []; + transformedNode.selections.forEach(function (matchSelection) { + var moduleImport = matchSelection.kind === 'InlineFragment' ? matchSelection.selections[0] : null; + + if (matchSelection.kind !== 'InlineFragment' || moduleImport == null || moduleImport.kind !== 'ModuleImport') { + throw createUserError('Invalid @match selection: all selections should be ' + 'fragment spreads with @module.', [matchSelection.loc, moduleImport === null || moduleImport === void 0 ? void 0 : moduleImport.loc].filter(Boolean)); + } + + var matchedType = matchSelection.typeCondition; + var previousTypeUsage = seenTypes.get(matchedType); + + if (previousTypeUsage) { + throw createUserError('Invalid @match selection: each concrete variant/implementor of ' + "'".concat(String(rawFieldType), "' may be matched against at-most once, ") + "but '".concat(String(matchedType), "' was matched against multiple times."), [matchSelection.loc, previousTypeUsage.loc]); + } + + seenTypes.set(matchedType, matchSelection); + var possibleConcreteTypes = rawFieldType instanceof GraphQLUnionType ? rawFieldType.getTypes() : context.serverSchema.getPossibleTypes(rawFieldType); + var isPossibleConcreteType = possibleConcreteTypes.some(function (type) { + return type.name === matchedType.name; + }); + + if (!isPossibleConcreteType) { + var suggestedTypesMessage = 'but no concrete types are defined.'; + + if (possibleConcreteTypes.length !== 0) { + suggestedTypesMessage = "expected one of ".concat(possibleConcreteTypes.slice(0, 3).map(function (type) { + return "'".concat(String(type), "'"); + }).join(', '), ", etc."); + } + + throw createUserError('Invalid @match selection: selections must match against concrete ' + 'variants/implementors of type ' + "'".concat(String(transformedNode.type), "'. Got '").concat(String(matchedType), "', ") + suggestedTypesMessage, [matchSelection.loc, context.getFragment(moduleImport.name).loc]); + } + + selections.push(matchSelection); + }); + var supportedArg = transformedNode.args.find(function (arg) { + return arg.name === SUPPORTED_ARGUMENT_NAME; + }); + + if (supportedArg != null) { + throw createUserError("Invalid @match selection: the '".concat(SUPPORTED_ARGUMENT_NAME, "' argument ") + 'is automatically added and cannot be supplied explicitly.', [supportedArg.loc]); + } + + return { + kind: 'LinkedField', + alias: transformedNode.alias, + args: [].concat((0, _toConsumableArray2["default"])(transformedNode.args), [{ + kind: 'Argument', + name: SUPPORTED_ARGUMENT_NAME, + type: supportedArgumentDefinition.type, + value: { + kind: 'Literal', + loc: node.loc, + metadata: {}, + value: Array.from(seenTypes.keys()).map(function (type) { + return type.name; + }) + }, + loc: node.loc, + metadata: {} + }]), + directives: [], + handles: null, + loc: node.loc, + metadata: null, + name: transformedNode.name, + type: transformedNode.type, + selections: selections + }; +} // Transform @module + + +function visitFragmentSpread(spread, _ref3) { + var _ref, _moduleDirective$args2; + + var documentName = _ref3.documentName; + var transformedNode = this.traverse(spread); + var moduleDirective = transformedNode.directives.find(function (directive) { + return directive.name === 'module'; + }); + + if (moduleDirective == null) { + return transformedNode; + } + + if (spread.args.length !== 0) { + var _spread$args$; + + throw createUserError('@module does not support @arguments.', [(_spread$args$ = spread.args[0]) === null || _spread$args$ === void 0 ? void 0 : _spread$args$.loc].filter(Boolean)); + } + + var context = this.getContext(); + var schema = context.serverSchema; + var jsModuleType = schema.getType(JS_FIELD_TYPE); + + if (jsModuleType == null || !(jsModuleType instanceof GraphQLScalarType)) { + throw createUserError('Using @module requires the schema to define a scalar ' + "'".concat(JS_FIELD_TYPE, "' type.")); + } + + var fragment = context.getFragment(spread.name); + + if (!isObjectType(fragment.type)) { + throw createUserError("@module used on invalid fragment spread '...".concat(spread.name, "'. @module ") + 'may only be used with fragments on a concrete (object) type, ' + "but the fragment has abstract type '".concat(String(fragment.type), "'."), [spread.loc, fragment.loc]); + } + + var type = assertObjectType(fragment.type); + var jsField = type.getFields()[JS_FIELD_NAME]; + var jsFieldArg = jsField ? jsField.args.find(function (arg) { + return arg.name === JS_FIELD_ARG; + }) : null; + + if (jsField == null || jsFieldArg == null || getNullableType(jsFieldArg.type) !== GraphQLString || jsField.type.name !== jsModuleType.name // object identity fails in tests + ) { + throw createUserError("@module used on invalid fragment spread '...".concat(spread.name, "'. @module ") + "requires the fragment type '".concat(String(fragment.type), "' to have a ") + "'".concat(JS_FIELD_NAME, "(").concat(JS_FIELD_ARG, ": String!): ").concat(JS_FIELD_TYPE, "' field ."), [moduleDirective.loc]); + } + + if (spread.directives.length !== 1) { + throw createUserError("@module used on invalid fragment spread '...".concat(spread.name, "'. @module ") + 'may not have additional directives.', [spread.loc]); + } + + var _getLiteralArgumentVa = getLiteralArgumentValues(moduleDirective.args), + moduleName = _getLiteralArgumentVa.name; + + if (typeof moduleName !== 'string') { + var _moduleDirective$args; + + throw createUserError("Expected the 'name' argument of @module to be a literal string", [((_moduleDirective$args = moduleDirective.args.find(function (arg) { + return arg.name === 'name'; + })) !== null && _moduleDirective$args !== void 0 ? _moduleDirective$args : spread).loc]); + } + + var normalizationName = getNormalizationOperationName(spread.name) + '_graphql'; + var componentKey = getModuleComponentKey(documentName); + var componentField = { + alias: componentKey, + args: [{ + kind: 'Argument', + name: JS_FIELD_ARG, + type: jsFieldArg.type, + value: { + kind: 'Literal', + loc: (_ref = (_moduleDirective$args2 = moduleDirective.args[0]) === null || _moduleDirective$args2 === void 0 ? void 0 : _moduleDirective$args2.loc) !== null && _ref !== void 0 ? _ref : moduleDirective.loc, + metadata: {}, + value: moduleName + }, + loc: moduleDirective.loc, + metadata: {} + }], + directives: [], + handles: null, + kind: 'ScalarField', + loc: moduleDirective.loc, + metadata: { + skipNormalizationNode: true + }, + name: JS_FIELD_NAME, + type: jsModuleType + }; + var operationKey = getModuleOperationKey(documentName); + var operationField = { + alias: operationKey, + args: [{ + kind: 'Argument', + name: JS_FIELD_ARG, + type: jsFieldArg.type, + value: { + kind: 'Literal', + loc: moduleDirective.loc, + metadata: {}, + value: normalizationName + }, + loc: moduleDirective.loc, + metadata: {} + }], + directives: [], + handles: null, + kind: 'ScalarField', + loc: moduleDirective.loc, + metadata: { + skipNormalizationNode: true + }, + name: JS_FIELD_NAME, + type: jsModuleType + }; + return { + kind: 'InlineFragment', + directives: [], + loc: moduleDirective.loc, + metadata: null, + selections: [{ + kind: 'ModuleImport', + loc: moduleDirective.loc, + documentName: documentName, + module: moduleName, + name: spread.name, + selections: [(0, _objectSpread2["default"])({}, spread, { + directives: spread.directives.filter(function (directive) { + return directive !== moduleDirective; + }) + }), operationField, componentField] + }], + typeCondition: fragment.type + }; +} + +module.exports = { + SCHEMA_EXTENSION: SCHEMA_EXTENSION, + transform: relayMatchTransform +}; + +/***/ }), +/* 52 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +function getNormalizationOperationName(name) { + return "".concat(name, "$normalization"); +} + +module.exports = getNormalizationOperationName; + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var GraphQLCompilerContext = __webpack_require__(3); + +var GraphQLIRVisitor = __webpack_require__(24); + +var GraphQLSchemaUtils = __webpack_require__(8); + +var getLiteralArgumentValues = __webpack_require__(25); + +var inferRootArgumentDefinitions = __webpack_require__(48); + +var isEquivalentType = __webpack_require__(141); + +var nullthrows = __webpack_require__(30); + +var _require = __webpack_require__(9), + createCombinedError = _require.createCombinedError, + createCompilerError = _require.createCompilerError, + createUserError = _require.createUserError, + eachWithErrors = _require.eachWithErrors; + +var _require2 = __webpack_require__(1), + assertAbstractType = _require2.assertAbstractType, + assertCompositeType = _require2.assertCompositeType, + getNullableType = _require2.getNullableType, + GraphQLID = _require2.GraphQLID, + GraphQLInterfaceType = _require2.GraphQLInterfaceType, + GraphQLList = _require2.GraphQLList, + GraphQLNonNull = _require2.GraphQLNonNull, + GraphQLObjectType = _require2.GraphQLObjectType, + GraphQLSchema = _require2.GraphQLSchema; + +var isAbstractType = GraphQLSchemaUtils.isAbstractType, + implementsInterface = GraphQLSchemaUtils.implementsInterface, + generateIDField = GraphQLSchemaUtils.generateIDField; +var VIEWER_TYPE_NAME = 'Viewer'; +var VIEWER_FIELD_NAME = 'viewer'; +var NODE_TYPE_NAME = 'Node'; +var NODE_FIELD_NAME = 'node'; +var SCHEMA_EXTENSION = "\n directive @refetchable(\n queryName: String!\n ) on FRAGMENT_DEFINITION\n"; +/** + * This transform synthesizes "refetch" queries for fragments that + * are trivially refetchable. This is comprised of three main stages: + * + * 1. Validating that fragments marked with @refetchable qualify for + * refetch query generation; mainly this means that the fragment + * type is able to be refetched in some canonical way. + * 2. Determining the variable definitions to use for each generated + * query. GraphQL does not have a notion of fragment-local variables + * at all, and although Relay adds this concept developers are still + * allowed to reference global variables. This necessitates a + * visiting all reachable fragments for each @refetchable fragment, + * and finding the union of all global variables expceted to be defined. + * 3. Building the refetch queries, a straightforward copying transform from + * Fragment to Root IR nodes. + */ + +function relayRefetchableFragmentTransform(context) { + var schema = context.serverSchema; + var queryType = schema.getQueryType(); + + if (queryType == null) { + throw createUserError('Expected the schema to define a query type.'); + } + + var refetchOperations = buildRefetchMap(context); + var nextContext = context; + var errors = eachWithErrors(refetchOperations, function (_ref2) { + var refetchName = _ref2[0], + fragment = _ref2[1]; + // Build a refetch operation according to the fragment's type: + // the logic here is purely name-based, the actual transform + // functions provide detailed validation as well as case-specific + // error messages. + var refetchDescriptor; + + if (isEquivalentType(fragment.type, queryType)) { + refetchDescriptor = buildRefetchOperationOnQueryType(schema, fragment, refetchName); + } else if (String(fragment.type) === VIEWER_TYPE_NAME) { + // Validate that the schema conforms to the informal Viewer spec + // and build the refetch query accordingly. + refetchDescriptor = buildRefetchOperationOnViewerType(schema, fragment, refetchName); + } else if (String(fragment.type) === NODE_TYPE_NAME || fragment.type instanceof GraphQLObjectType && fragment.type.getInterfaces().some(function (interfaceType) { + return String(interfaceType) === NODE_TYPE_NAME; + }) || isAbstractType(fragment.type) && getImplementations(fragment.type, schema).every(function (possibleType) { + return implementsInterface(possibleType, NODE_TYPE_NAME); + })) { + // Validate that the schema conforms to the Object Identity (Node) spec + // and build the refetch query accordingly. + refetchDescriptor = buildRefetchOperationOnNodeType(schema, fragment, refetchName); + } else { + throw createUserError("Invalid use of @refetchable on fragment '".concat(fragment.name, "', only fragments on the Query type, Viewer type, Node type, or types implementing Node are supported."), [fragment.loc]); + } + + if (refetchDescriptor != null) { + var _connectionMetadata; + + var _refetchDescriptor = refetchDescriptor, + path = _refetchDescriptor.path, + node = _refetchDescriptor.node, + transformedFragment = _refetchDescriptor.transformedFragment; + var connectionMetadata = extractConnectionMetadata(transformedFragment); + nextContext = nextContext.replace((0, _objectSpread2["default"])({}, transformedFragment, { + metadata: (0, _objectSpread2["default"])({}, transformedFragment.metadata || {}, { + refetch: { + connection: (_connectionMetadata = connectionMetadata) !== null && _connectionMetadata !== void 0 ? _connectionMetadata : null, + operation: refetchName, + fragmentPathInResult: path + } + }) + })); + nextContext = nextContext.add((0, _objectSpread2["default"])({}, node, { + metadata: (0, _objectSpread2["default"])({}, node.metadata || {}, { + derivedFrom: transformedFragment.name + }) + })); + } + }); + + if (errors != null && errors.length) { + throw createCombinedError(errors, 'RelayRefetchableFragmentTransform'); + } + + return nextContext; +} + +function getImplementations(type, schema) { + var abstractType = assertAbstractType(assertCompositeType(type)); + return schema.getPossibleTypes(abstractType); +} +/** + * Walk the documents of a compiler context and create a mapping of + * refetch operation names to the source fragment from which the refetch + * operation should be derived. + */ + + +function buildRefetchMap(context) { + var refetchOperations = new Map(); + var errors = eachWithErrors(context.documents(), function (node) { + if (node.kind !== 'Fragment') { + return; + } + + var refetchName = getRefetchQueryName(node); + + if (refetchName === null) { + return; + } + + var previousOperation = refetchOperations.get(refetchName); + + if (previousOperation != null) { + throw createUserError("Duplicate definition for @refetchable operation '".concat(refetchName, "' from fragments '").concat(node.name, "' and '").concat(previousOperation.name, "'"), [node.loc, previousOperation.loc]); + } + + refetchOperations.set(refetchName, node); + }); + + if (errors != null && errors.length !== 0) { + throw createCombinedError(errors, 'RelayRefetchableFragmentTransform'); + } + + var transformed = inferRootArgumentDefinitions(context); + return new Map(Array.from(refetchOperations.entries(), function (_ref3) { + var name = _ref3[0], + fragment = _ref3[1]; + return [name, transformed.getFragment(fragment.name)]; + })); +} +/** + * Validate that any @connection usage is valid for refetching: + * - Variables are used for both the "count" and "cursor" arguments + * (after/first or before/last) + * - Exactly one connection + * - Has a stable path to the connection data + * + * Returns connection metadata to add to the transformed fragment or undefined + * if there is no connection. + */ + + +function extractConnectionMetadata(fragment) { + var fields = []; + var connectionField = null; + var path = null; + GraphQLIRVisitor.visit(fragment, { + LinkedField: { + enter: function enter(field) { + fields.push(field); + + if (field.handles && field.handles.some(function (handle) { + return handle.name === 'connection'; + }) || field.directives.some(function (directive) { + return directive.name === 'connection'; + })) { + // Disallow multiple @connections + if (connectionField != null) { + throw createUserError("Invalid use of @refetchable with @connection in fragment '".concat(fragment.name, "', at most once @connection can appear in a refetchable fragment."), [field.loc]); + } // Disallow connections within plurals + + + var pluralOnPath = fields.find(function (pathField) { + return getNullableType(pathField.type) instanceof GraphQLList; + }); + + if (pluralOnPath) { + throw createUserError("Invalid use of @refetchable with @connection in fragment '".concat(fragment.name, "', refetchable connections cannot appear inside plural fields."), [field.loc, pluralOnPath.loc]); + } + + connectionField = field; + path = fields.map(function (pathField) { + var _pathField$alias; + + return (_pathField$alias = pathField.alias) !== null && _pathField$alias !== void 0 ? _pathField$alias : pathField.name; + }); + } + }, + leave: function leave() { + fields.pop(); + } + } + }); + + if (connectionField == null || path == null) { + return; + } // Validate arguments: if either of before/last appear they must both appear + // and use variables (not scalar values) + + + var backward = null; + var before = findArgument(connectionField, 'before'); + var last = findArgument(connectionField, 'last'); + + if (before || last) { + if (!before || !last || before.value.kind !== 'Variable' || last.value.kind !== 'Variable') { + throw createUserError("Invalid use of @refetchable with @connection in fragment '".concat(fragment.name, "', refetchable connections must use variables for the before and last arguments."), [connectionField.loc, before && before.value.kind !== 'Variable' ? before.value.loc : null, last && last.value.kind !== 'Variable' ? last.value.loc : null].filter(Boolean)); + } + + backward = { + count: last.value.variableName, + cursor: before.value.variableName + }; + } // Validate arguments: if either of after/first appear they must both appear + // and use variables (not scalar values) + + + var forward = null; + var after = findArgument(connectionField, 'after'); + var first = findArgument(connectionField, 'first'); + + if (after || first) { + if (!after || !first || after.value.kind !== 'Variable' || first.value.kind !== 'Variable') { + throw createUserError("Invalid use of @refetchable with @connection in fragment '".concat(fragment.name, "', refetchable connections must use variables for the after and first arguments."), [connectionField.loc, after && after.value.kind !== 'Variable' ? after.value.loc : null, first && first.value.kind !== 'Variable' ? first.value.loc : null].filter(Boolean)); + } + + forward = { + count: first.value.variableName, + cursor: after.value.variableName + }; + } + + return { + forward: forward, + backward: backward, + path: path + }; +} + +function buildOperationArgumentDefinitions(argumentDefinitions) { + return argumentDefinitions.map(function (argDef) { + if (argDef.kind === 'LocalArgumentDefinition') { + return argDef; + } else { + return { + kind: 'LocalArgumentDefinition', + name: argDef.name, + type: argDef.type, + defaultValue: null, + loc: argDef.loc, + metadata: null + }; + } + }); +} + +function buildFragmentSpread(fragment) { + var args = []; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = fragment.argumentDefinitions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var argDef = _step.value; + + if (argDef.kind !== 'LocalArgumentDefinition') { + continue; + } + + args.push({ + kind: 'Argument', + loc: { + kind: 'Derived', + source: argDef.loc + }, + metadata: null, + name: argDef.name, + type: argDef.type, + value: { + kind: 'Variable', + loc: { + kind: 'Derived', + source: argDef.loc + }, + metadata: null, + variableName: argDef.name, + type: argDef.type + } + }); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return { + args: args, + directives: [], + kind: 'FragmentSpread', + loc: { + kind: 'Derived', + source: fragment.loc + }, + metadata: null, + name: fragment.name + }; +} + +function buildRefetchOperationOnQueryType(schema, fragment, queryName) { + var queryType = nullthrows(schema.getQueryType()); + return { + path: [], + node: { + argumentDefinitions: buildOperationArgumentDefinitions(fragment.argumentDefinitions), + directives: [], + kind: 'Root', + loc: { + kind: 'Derived', + source: fragment.loc + }, + metadata: null, + name: queryName, + operation: 'query', + selections: [buildFragmentSpread(fragment)], + type: queryType + }, + transformedFragment: fragment + }; +} + +function buildRefetchOperationOnViewerType(schema, fragment, queryName) { + // Handle fragments on viewer + var queryType = nullthrows(schema.getQueryType()); + var viewerType = schema.getType(VIEWER_TYPE_NAME); + var viewerField = queryType.getFields()[VIEWER_FIELD_NAME]; + + if (!(viewerType instanceof GraphQLObjectType && viewerField != null && viewerField.type instanceof GraphQLObjectType && isEquivalentType(viewerField.type, viewerType) && viewerField.args.length === 0 && isEquivalentType(fragment.type, viewerType))) { + throw createUserError("Invalid use of @refetchable on fragment '".concat(fragment.name, "', check that your schema defines a 'Viewer' object type and has a 'viewer: Viewer' field on the query type."), [fragment.loc]); + } + + return { + path: [VIEWER_FIELD_NAME], + node: { + argumentDefinitions: buildOperationArgumentDefinitions(fragment.argumentDefinitions), + directives: [], + kind: 'Root', + loc: { + kind: 'Derived', + source: fragment.loc + }, + metadata: null, + name: queryName, + operation: 'query', + selections: [{ + alias: null, + args: [], + directives: [], + handles: null, + kind: 'LinkedField', + loc: { + kind: 'Derived', + source: fragment.loc + }, + metadata: null, + name: VIEWER_FIELD_NAME, + selections: [buildFragmentSpread(fragment)], + type: viewerType + }], + type: queryType + }, + transformedFragment: fragment + }; +} + +function buildRefetchOperationOnNodeType(schema, fragment, queryName) { + var queryType = nullthrows(schema.getQueryType()); + var nodeType = schema.getType(NODE_TYPE_NAME); + var nodeField = queryType.getFields()[NODE_FIELD_NAME]; + + if (!(nodeType instanceof GraphQLInterfaceType && nodeField != null && nodeField.type instanceof GraphQLInterfaceType && isEquivalentType(nodeField.type, nodeType) && nodeField.args.length === 1 && nodeField.args[0].name === 'id' && isEquivalentType(getNullableType(nodeField.args[0].type), GraphQLID) && ( // the fragment must be on Node or on a type that implements Node + fragment.type instanceof GraphQLObjectType && fragment.type.getInterfaces().some(function (interfaceType) { + return isEquivalentType(interfaceType, nodeType); + }) || isAbstractType(fragment.type) && getImplementations(fragment.type, schema).every(function (possibleType) { + return possibleType.getInterfaces().some(function (interfaceType) { + return isEquivalentType(interfaceType, nodeType); + }); + })))) { + throw createUserError("Invalid use of @refetchable on fragment '".concat(fragment.name, "', check that your schema defines a 'Node { id: ID }' interface and has a 'node(id: ID): Node' field on the query type (the id argument may also be non-null)."), [fragment.loc]); + } + + var argumentDefinitions = buildOperationArgumentDefinitions(fragment.argumentDefinitions); + var idArgument = argumentDefinitions.find(function (argDef) { + return argDef.name === 'id'; + }); + + if (idArgument != null) { + throw createUserError("Invalid use of @refetchable on fragment '".concat(fragment.name, "', this fragment already has an '$id' variable in scope."), [idArgument.loc]); + } + + var idArgType = new GraphQLNonNull(GraphQLID); + var argumentDefinitionsWithId = [].concat((0, _toConsumableArray2["default"])(argumentDefinitions), [{ + defaultValue: null, + kind: 'LocalArgumentDefinition', + loc: { + kind: 'Derived', + source: fragment.loc + }, + metadata: null, + name: 'id', + type: idArgType + }]); + return { + path: [NODE_FIELD_NAME], + node: { + argumentDefinitions: argumentDefinitionsWithId, + directives: [], + kind: 'Root', + loc: { + kind: 'Derived', + source: fragment.loc + }, + metadata: null, + name: queryName, + operation: 'query', + selections: [{ + alias: null, + args: [{ + kind: 'Argument', + loc: { + kind: 'Derived', + source: fragment.loc + }, + metadata: null, + name: 'id', + type: idArgType, + value: { + kind: 'Variable', + loc: { + kind: 'Derived', + source: fragment.loc + }, + metadata: null, + variableName: 'id', + type: idArgType + } + }], + directives: [], + handles: null, + kind: 'LinkedField', + loc: { + kind: 'Derived', + source: fragment.loc + }, + metadata: null, + name: NODE_FIELD_NAME, + selections: [buildFragmentSpread(fragment)], + type: nodeType + }], + type: queryType + }, + transformedFragment: enforceIDField(fragment) + }; +} + +function enforceIDField(fragment) { + var idSelection = fragment.selections.find(function (selection) { + return selection.kind === 'ScalarField' && selection.name === 'id' && selection.alias == null && isEquivalentType(getNullableType(selection.type), GraphQLID); + }); + + if (idSelection) { + return fragment; + } + + return (0, _objectSpread2["default"])({}, fragment, { + selections: [].concat((0, _toConsumableArray2["default"])(fragment.selections), [generateIDField(GraphQLID)]) + }); +} + +function getRefetchQueryName(fragment) { + var refetchableDirective = fragment.directives.find(function (directive) { + return directive.name === 'refetchable'; + }); + + if (refetchableDirective == null) { + return null; + } + + var refetchArguments = getLiteralArgumentValues(refetchableDirective.args); + var queryName = refetchArguments.queryName; + + if (typeof queryName !== 'string') { + var _ref; + + var queryNameArg = refetchableDirective.args.find(function (arg) { + return arg.name === 'queryName'; + }); + throw createCompilerError("Expected the 'name' argument of @refetchable to be a string, got '".concat(String(queryName), "'."), [(_ref = queryNameArg === null || queryNameArg === void 0 ? void 0 : queryNameArg.loc) !== null && _ref !== void 0 ? _ref : refetchableDirective.loc]); + } + + return queryName; +} + +function findArgument(field, argumentName) { + var _field$args$find; + + return (_field$args$find = field.args.find(function (arg) { + return arg.name === argumentName; + })) !== null && _field$args$find !== void 0 ? _field$args$find : null; +} + +module.exports = { + SCHEMA_EXTENSION: SCHEMA_EXTENSION, + transform: relayRefetchableFragmentTransform +}; + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +var getLiteralArgumentValues = __webpack_require__(25); + +var invariant = __webpack_require__(4); + +var RELAY = 'relay'; +var SCHEMA_EXTENSION = "\ndirective @relay(\n # Marks a connection field as containing nodes without 'id' fields.\n # This is used to silence the warning when diffing connections.\n isConnectionWithoutNodeID: Boolean,\n\n # Marks a fragment as intended for pattern matching (as opposed to fetching).\n # Used in Classic only.\n pattern: Boolean,\n\n # Marks a fragment as being backed by a GraphQLList.\n plural: Boolean,\n\n # Marks a fragment spread which should be unmasked if provided false\n mask: Boolean = true,\n\n # Selectively pass variables down into a fragment. Only used in Classic.\n variables: [String!],\n) on FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | FIELD\n"; +/** + * A transform that extracts `@relay(plural: Boolean)` directives and converts + * them to metadata that can be accessed at runtime. + */ + +function relayRelayDirectiveTransform(context) { + return IRTransformer.transform(context, { + Fragment: visitRelayMetadata(fragmentMetadata), + FragmentSpread: visitRelayMetadata(fragmentSpreadMetadata) + }); +} + +function visitRelayMetadata(metadataFn) { + return function (node) { + var relayDirective = node.directives.find(function (_ref) { + var name = _ref.name; + return name === RELAY; + }); + + if (!relayDirective) { + return this.traverse(node); + } + + var argValues = getLiteralArgumentValues(relayDirective.args); + var metadata = metadataFn(argValues); + return this.traverse((0, _objectSpread2["default"])({}, node, { + directives: node.directives.filter(function (directive) { + return directive !== relayDirective; + }), + metadata: (0, _objectSpread2["default"])({}, node.metadata || {}, metadata) + })); + }; +} + +function fragmentMetadata(_ref2) { + var mask = _ref2.mask, + plural = _ref2.plural; + !(plural === undefined || typeof plural === 'boolean') ? true ? invariant(false, 'RelayRelayDirectiveTransform: Expected the "plural" argument to @relay ' + 'to be a boolean literal if specified.') : undefined : void 0; + !(mask === undefined || typeof mask === 'boolean') ? true ? invariant(false, 'RelayRelayDirectiveTransform: Expected the "mask" argument to @relay ' + 'to be a boolean literal if specified.') : undefined : void 0; + return { + mask: mask, + plural: plural + }; +} + +function fragmentSpreadMetadata(_ref3) { + var mask = _ref3.mask; + !(mask === undefined || typeof mask === 'boolean') ? true ? invariant(false, 'RelayRelayDirectiveTransform: Expected the "mask" argument to @relay ' + 'to be a boolean literal if specified.') : undefined : void 0; + return { + mask: mask + }; +} + +module.exports = { + RELAY: RELAY, + SCHEMA_EXTENSION: SCHEMA_EXTENSION, + transform: relayRelayDirectiveTransform +}; + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var t = __webpack_require__(11); + +var invariant = __webpack_require__(4); + +/** + * type NAME = any; + */ +function anyTypeAlias(name) { + return t.typeAlias(t.identifier(name), null, t.anyTypeAnnotation()); +} +/** + * {| + * PROPS + * |} + */ + + +function exactObjectTypeAnnotation(props) { + var typeAnnotation = t.objectTypeAnnotation(props); + typeAnnotation.exact = true; + return typeAnnotation; +} +/** + * export type NAME = TYPE + */ + + +function exportType(name, type) { + return t.exportNamedDeclaration(t.typeAlias(t.identifier(name), null, type), [], null); +} +/** + * import type {NAMES[0], NAMES[1], ...} from 'MODULE'; + */ + + +function importTypes(names, module) { + var importDeclaration = t.importDeclaration(names.map(function (name) { + return t.importSpecifier(t.identifier(name), t.identifier(name)); + }), t.stringLiteral(module)); + importDeclaration.importKind = 'type'; + return importDeclaration; +} +/** + * Create an intersection type if needed. + * + * TYPES[0] & TYPES[1] & ... + */ + + +function intersectionTypeAnnotation(types) { + !(types.length > 0) ? true ? invariant(false, 'RelayFlowBabelFactories: cannot create an intersection of 0 types') : undefined : void 0; + return types.length === 1 ? types[0] : t.intersectionTypeAnnotation(types); +} + +function lineComments() { + for (var _len = arguments.length, lines = new Array(_len), _key = 0; _key < _len; _key++) { + lines[_key] = arguments[_key]; + } + + return lines.map(function (line) { + return { + type: 'CommentLine', + value: ' ' + line + }; + }); +} +/** + * $ReadOnlyArray + */ + + +function readOnlyArrayOfType(thing) { + return t.genericTypeAnnotation(t.identifier('$ReadOnlyArray'), t.typeParameterInstantiation([thing])); +} +/** + * +KEY: VALUE + */ + + +function readOnlyObjectTypeProperty(key, value) { + var prop = t.objectTypeProperty(t.identifier(key), value); + prop.variance = t.variance('plus'); + return prop; +} + +function stringLiteralTypeAnnotation(value) { + return t.stringLiteralTypeAnnotation(value); +} +/** + * Create a union type if needed. + * + * TYPES[0] | TYPES[1] | ... + */ + + +function unionTypeAnnotation(types) { + !(types.length > 0) ? true ? invariant(false, 'RelayFlowBabelFactories: cannot create a union of 0 types') : undefined : void 0; + return types.length === 1 ? types[0] : t.unionTypeAnnotation(types); +} + +module.exports = { + anyTypeAlias: anyTypeAlias, + exactObjectTypeAnnotation: exactObjectTypeAnnotation, + exportType: exportType, + importTypes: importTypes, + intersectionTypeAnnotation: intersectionTypeAnnotation, + lineComments: lineComments, + readOnlyArrayOfType: readOnlyArrayOfType, + readOnlyObjectTypeProperty: readOnlyObjectTypeProperty, + stringLiteralTypeAnnotation: stringLiteralTypeAnnotation, + unionTypeAnnotation: unionTypeAnnotation +}; + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = buildMatchMemberExpression; + +var _matchesPattern = _interopRequireDefault(__webpack_require__(57)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function buildMatchMemberExpression(match, allowPartial) { + const parts = match.split("."); + return member => (0, _matchesPattern.default)(member, parts, allowPartial); +} + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = matchesPattern; + +var _generated = __webpack_require__(7); + +function matchesPattern(member, match, allowPartial) { + if (!(0, _generated.isMemberExpression)(member)) return false; + const parts = Array.isArray(match) ? match : match.split("."); + const nodes = []; + let node; + + for (node = member; (0, _generated.isMemberExpression)(node); node = node.object) { + nodes.push(node.property); + } + + nodes.push(node); + if (nodes.length < parts.length) return false; + if (!allowPartial && nodes.length > parts.length) return false; + + for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) { + const node = nodes[j]; + let value; + + if ((0, _generated.isIdentifier)(node)) { + value = node.name; + } else if ((0, _generated.isStringLiteral)(node)) { + value = node.value; + } else { + return false; + } + + if (parts[i] !== value) return false; + } + + return true; +} + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isPlaceholderType; + +var _definitions = __webpack_require__(12); + +function isPlaceholderType(placeholderType, targetType) { + if (placeholderType === targetType) return true; + const aliases = _definitions.PLACEHOLDERS_ALIAS[placeholderType]; + + if (aliases) { + for (const alias of aliases) { + if (targetType === alias) return true; + } + } + + return false; +} + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS = void 0; + +var _utils = __webpack_require__(15); + +const PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"]; +exports.PLACEHOLDERS = PLACEHOLDERS; +const PLACEHOLDERS_ALIAS = { + Declaration: ["Statement"], + Pattern: ["PatternLike", "LVal"] +}; +exports.PLACEHOLDERS_ALIAS = PLACEHOLDERS_ALIAS; + +for (const type of PLACEHOLDERS) { + const alias = _utils.ALIAS_KEYS[type]; + if (alias && alias.length) PLACEHOLDERS_ALIAS[type] = alias; +} + +const PLACEHOLDERS_FLIPPED_ALIAS = {}; +exports.PLACEHOLDERS_FLIPPED_ALIAS = PLACEHOLDERS_FLIPPED_ALIAS; +Object.keys(PLACEHOLDERS_ALIAS).forEach(type => { + PLACEHOLDERS_ALIAS[type].forEach(alias => { + if (!Object.hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) { + PLACEHOLDERS_FLIPPED_ALIAS[alias] = []; + } + + PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type); + }); +}); + +/***/ }), +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = validate; + +var _definitions = __webpack_require__(12); + +function validate(node, key, val) { + if (!node) return; + const fields = _definitions.NODE_FIELDS[node.type]; + if (!fields) return; + const field = fields[key]; + if (!field || !field.validate) return; + if (field.optional && val == null) return; + field.validate(node, key, val); +} + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isNode; + +var _definitions = __webpack_require__(12); + +function isNode(node) { + return !!(node && _definitions.VISITOR_KEYS[node.type]); +} + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = removeTypeDuplicates; + +var _generated = __webpack_require__(7); + +function removeTypeDuplicates(nodes) { + const generics = {}; + const bases = {}; + const typeGroups = []; + const types = []; + + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (!node) continue; + + if (types.indexOf(node) >= 0) { + continue; + } + + if ((0, _generated.isAnyTypeAnnotation)(node)) { + return [node]; + } + + if ((0, _generated.isFlowBaseAnnotation)(node)) { + bases[node.type] = node; + continue; + } + + if ((0, _generated.isUnionTypeAnnotation)(node)) { + if (typeGroups.indexOf(node.types) < 0) { + nodes = nodes.concat(node.types); + typeGroups.push(node.types); + } + + continue; + } + + if ((0, _generated.isGenericTypeAnnotation)(node)) { + const name = node.id.name; + + if (generics[name]) { + let existing = generics[name]; + + if (existing.typeParameters) { + if (node.typeParameters) { + existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params.concat(node.typeParameters.params)); + } + } else { + existing = node.typeParameters; + } + } else { + generics[name] = node; + } + + continue; + } + + types.push(node); + } + + for (const type of Object.keys(bases)) { + types.push(bases[type]); + } + + for (const name of Object.keys(generics)) { + types.push(generics[name]); + } + + return types; +} + +/***/ }), +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = clone; + +var _cloneNode = _interopRequireDefault(__webpack_require__(23)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function clone(node) { + return (0, _cloneNode.default)(node, false); +} + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = addComments; + +function addComments(node, type, comments) { + if (!comments || !node) return node; + const key = `${type}Comments`; + + if (node[key]) { + if (type === "leading") { + node[key] = comments.concat(node[key]); + } else { + node[key] = node[key].concat(comments); + } + } else { + node[key] = comments; + } + + return node; +} + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = inheritInnerComments; + +var _inherit = _interopRequireDefault(__webpack_require__(36)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function inheritInnerComments(child, parent) { + (0, _inherit.default)("innerComments", child, parent); +} + +/***/ }), +/* 66 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = inheritLeadingComments; + +var _inherit = _interopRequireDefault(__webpack_require__(36)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function inheritLeadingComments(child, parent) { + (0, _inherit.default)("leadingComments", child, parent); +} + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = inheritsComments; + +var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(68)); + +var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(66)); + +var _inheritInnerComments = _interopRequireDefault(__webpack_require__(65)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function inheritsComments(child, parent) { + (0, _inheritTrailingComments.default)(child, parent); + (0, _inheritLeadingComments.default)(child, parent); + (0, _inheritInnerComments.default)(child, parent); + return child; +} + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = inheritTrailingComments; + +var _inherit = _interopRequireDefault(__webpack_require__(36)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function inheritTrailingComments(child, parent) { + (0, _inherit.default)("trailingComments", child, parent); +} + +/***/ }), +/* 69 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toBlock; + +var _generated = __webpack_require__(7); + +var _generated2 = __webpack_require__(13); + +function toBlock(node, parent) { + if ((0, _generated.isBlockStatement)(node)) { + return node; + } + + let blockNodes = []; + + if ((0, _generated.isEmptyStatement)(node)) { + blockNodes = []; + } else { + if (!(0, _generated.isStatement)(node)) { + if ((0, _generated.isFunction)(parent)) { + node = (0, _generated2.returnStatement)(node); + } else { + node = (0, _generated2.expressionStatement)(node); + } + } + + blockNodes = [node]; + } + + return (0, _generated2.blockStatement)(blockNodes); +} + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toIdentifier; + +var _isValidIdentifier = _interopRequireDefault(__webpack_require__(22)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function toIdentifier(name) { + name = name + ""; + name = name.replace(/[^a-zA-Z0-9$_]/g, "-"); + name = name.replace(/^[-0-9]+/, ""); + name = name.replace(/[-\s]+(.)?/g, function (match, c) { + return c ? c.toUpperCase() : ""; + }); + + if (!(0, _isValidIdentifier.default)(name)) { + name = `_${name}`; + } + + return name || "_"; +} + +/***/ }), +/* 71 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = removePropertiesDeep; + +var _traverseFast = _interopRequireDefault(__webpack_require__(72)); + +var _removeProperties = _interopRequireDefault(__webpack_require__(73)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function removePropertiesDeep(tree, opts) { + (0, _traverseFast.default)(tree, _removeProperties.default, opts); + return tree; +} + +/***/ }), +/* 72 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = traverseFast; + +var _definitions = __webpack_require__(12); + +function traverseFast(node, enter, opts) { + if (!node) return; + const keys = _definitions.VISITOR_KEYS[node.type]; + if (!keys) return; + opts = opts || {}; + enter(node, opts); + + for (const key of keys) { + const subNode = node[key]; + + if (Array.isArray(subNode)) { + for (const node of subNode) { + traverseFast(node, enter, opts); + } + } else { + traverseFast(subNode, enter, opts); + } + } +} + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = removeProperties; + +var _constants = __webpack_require__(17); + +const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"]; + +const CLEAR_KEYS_PLUS_COMMENTS = _constants.COMMENT_KEYS.concat(["comments"]).concat(CLEAR_KEYS); + +function removeProperties(node, opts = {}) { + const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS; + + for (const key of map) { + if (node[key] != null) node[key] = undefined; + } + + for (const key of Object.keys(node)) { + if (key[0] === "_" && node[key] != null) node[key] = undefined; + } + + const symbols = Object.getOwnPropertySymbols(node); + + for (const sym of symbols) { + node[sym] = null; + } +} + +/***/ }), +/* 74 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isLet; + +var _generated = __webpack_require__(7); + +var _constants = __webpack_require__(17); + +function isLet(node) { + return (0, _generated.isVariableDeclaration)(node) && (node.kind !== "var" || node[_constants.BLOCK_SCOPED_SYMBOL]); +} + +/***/ }), +/* 75 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.needsWhitespace = needsWhitespace; +exports.needsWhitespaceBefore = needsWhitespaceBefore; +exports.needsWhitespaceAfter = needsWhitespaceAfter; +exports.needsParens = needsParens; + +var whitespace = _interopRequireWildcard(__webpack_require__(207)); + +var parens = _interopRequireWildcard(__webpack_require__(208)); + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function expandAliases(obj) { + const newObj = {}; + + function add(type, func) { + const fn = newObj[type]; + newObj[type] = fn ? function (node, parent, stack) { + const result = fn(node, parent, stack); + return result == null ? func(node, parent, stack) : result; + } : func; + } + + for (const type of Object.keys(obj)) { + const aliases = t().FLIPPED_ALIAS_KEYS[type]; + + if (aliases) { + for (const alias of aliases) { + add(alias, obj[type]); + } + } else { + add(type, obj[type]); + } + } + + return newObj; +} + +const expandedParens = expandAliases(parens); +const expandedWhitespaceNodes = expandAliases(whitespace.nodes); +const expandedWhitespaceList = expandAliases(whitespace.list); + +function find(obj, node, parent, printStack) { + const fn = obj[node.type]; + return fn ? fn(node, parent, printStack) : null; +} + +function isOrHasCallExpression(node) { + if (t().isCallExpression(node)) { + return true; + } + + if (t().isMemberExpression(node)) { + return isOrHasCallExpression(node.object) || !node.computed && isOrHasCallExpression(node.property); + } else { + return false; + } +} + +function needsWhitespace(node, parent, type) { + if (!node) return 0; + + if (t().isExpressionStatement(node)) { + node = node.expression; + } + + let linesInfo = find(expandedWhitespaceNodes, node, parent); + + if (!linesInfo) { + const items = find(expandedWhitespaceList, node, parent); + + if (items) { + for (let i = 0; i < items.length; i++) { + linesInfo = needsWhitespace(items[i], node, type); + if (linesInfo) break; + } + } + } + + if (typeof linesInfo === "object" && linesInfo !== null) { + return linesInfo[type] || 0; + } + + return 0; +} + +function needsWhitespaceBefore(node, parent) { + return needsWhitespace(node, parent, "before"); +} + +function needsWhitespaceAfter(node, parent) { + return needsWhitespace(node, parent, "after"); +} + +function needsParens(node, parent, printStack) { + if (!parent) return false; + + if (t().isNewExpression(parent) && parent.callee === node) { + if (isOrHasCallExpression(node)) return true; + } + + return find(expandedParens, node, parent, printStack); +} + +/***/ }), +/* 76 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ImportSpecifier = ImportSpecifier; +exports.ImportDefaultSpecifier = ImportDefaultSpecifier; +exports.ExportDefaultSpecifier = ExportDefaultSpecifier; +exports.ExportSpecifier = ExportSpecifier; +exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier; +exports.ExportAllDeclaration = ExportAllDeclaration; +exports.ExportNamedDeclaration = ExportNamedDeclaration; +exports.ExportDefaultDeclaration = ExportDefaultDeclaration; +exports.ImportDeclaration = ImportDeclaration; +exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier; + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function ImportSpecifier(node) { + if (node.importKind === "type" || node.importKind === "typeof") { + this.word(node.importKind); + this.space(); + } + + this.print(node.imported, node); + + if (node.local && node.local.name !== node.imported.name) { + this.space(); + this.word("as"); + this.space(); + this.print(node.local, node); + } +} + +function ImportDefaultSpecifier(node) { + this.print(node.local, node); +} + +function ExportDefaultSpecifier(node) { + this.print(node.exported, node); +} + +function ExportSpecifier(node) { + this.print(node.local, node); + + if (node.exported && node.local.name !== node.exported.name) { + this.space(); + this.word("as"); + this.space(); + this.print(node.exported, node); + } +} + +function ExportNamespaceSpecifier(node) { + this.token("*"); + this.space(); + this.word("as"); + this.space(); + this.print(node.exported, node); +} + +function ExportAllDeclaration(node) { + this.word("export"); + this.space(); + + if (node.exportKind === "type") { + this.word("type"); + this.space(); + } + + this.token("*"); + this.space(); + this.word("from"); + this.space(); + this.print(node.source, node); + this.semicolon(); +} + +function ExportNamedDeclaration(node) { + if (this.format.decoratorsBeforeExport && t().isClassDeclaration(node.declaration)) { + this.printJoin(node.declaration.decorators, node); + } + + this.word("export"); + this.space(); + ExportDeclaration.apply(this, arguments); +} + +function ExportDefaultDeclaration(node) { + if (this.format.decoratorsBeforeExport && t().isClassDeclaration(node.declaration)) { + this.printJoin(node.declaration.decorators, node); + } + + this.word("export"); + this.space(); + this.word("default"); + this.space(); + ExportDeclaration.apply(this, arguments); +} + +function ExportDeclaration(node) { + if (node.declaration) { + const declar = node.declaration; + this.print(declar, node); + if (!t().isStatement(declar)) this.semicolon(); + } else { + if (node.exportKind === "type") { + this.word("type"); + this.space(); + } + + const specifiers = node.specifiers.slice(0); + let hasSpecial = false; + + while (true) { + const first = specifiers[0]; + + if (t().isExportDefaultSpecifier(first) || t().isExportNamespaceSpecifier(first)) { + hasSpecial = true; + this.print(specifiers.shift(), node); + + if (specifiers.length) { + this.token(","); + this.space(); + } + } else { + break; + } + } + + if (specifiers.length || !specifiers.length && !hasSpecial) { + this.token("{"); + + if (specifiers.length) { + this.space(); + this.printList(specifiers, node); + this.space(); + } + + this.token("}"); + } + + if (node.source) { + this.space(); + this.word("from"); + this.space(); + this.print(node.source, node); + } + + this.semicolon(); + } +} + +function ImportDeclaration(node) { + this.word("import"); + this.space(); + + if (node.importKind === "type" || node.importKind === "typeof") { + this.word(node.importKind); + this.space(); + } + + const specifiers = node.specifiers.slice(0); + + if (specifiers && specifiers.length) { + while (true) { + const first = specifiers[0]; + + if (t().isImportDefaultSpecifier(first) || t().isImportNamespaceSpecifier(first)) { + this.print(specifiers.shift(), node); + + if (specifiers.length) { + this.token(","); + this.space(); + } + } else { + break; + } + } + + if (specifiers.length) { + this.token("{"); + this.space(); + this.printList(specifiers, node); + this.space(); + this.token("}"); + } + + this.space(); + this.word("from"); + this.space(); + } + + this.print(node.source, node); + this.semicolon(); +} + +function ImportNamespaceSpecifier(node) { + this.token("*"); + this.space(); + this.word("as"); + this.space(); + this.print(node.local, node); +} + +/***/ }), +/* 77 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Identifier = Identifier; +exports.ArgumentPlaceholder = ArgumentPlaceholder; +exports.SpreadElement = exports.RestElement = RestElement; +exports.ObjectPattern = exports.ObjectExpression = ObjectExpression; +exports.ObjectMethod = ObjectMethod; +exports.ObjectProperty = ObjectProperty; +exports.ArrayPattern = exports.ArrayExpression = ArrayExpression; +exports.RegExpLiteral = RegExpLiteral; +exports.BooleanLiteral = BooleanLiteral; +exports.NullLiteral = NullLiteral; +exports.NumericLiteral = NumericLiteral; +exports.StringLiteral = StringLiteral; +exports.BigIntLiteral = BigIntLiteral; +exports.PipelineTopicExpression = PipelineTopicExpression; +exports.PipelineBareFunction = PipelineBareFunction; +exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference; + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +function _jsesc() { + const data = _interopRequireDefault(__webpack_require__(215)); + + _jsesc = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function Identifier(node) { + this.exactSource(node.loc, () => { + this.word(node.name); + }); +} + +function ArgumentPlaceholder() { + this.token("?"); +} + +function RestElement(node) { + this.token("..."); + this.print(node.argument, node); +} + +function ObjectExpression(node) { + const props = node.properties; + this.token("{"); + this.printInnerComments(node); + + if (props.length) { + this.space(); + this.printList(props, node, { + indent: true, + statement: true + }); + this.space(); + } + + this.token("}"); +} + +function ObjectMethod(node) { + this.printJoin(node.decorators, node); + + this._methodHead(node); + + this.space(); + this.print(node.body, node); +} + +function ObjectProperty(node) { + this.printJoin(node.decorators, node); + + if (node.computed) { + this.token("["); + this.print(node.key, node); + this.token("]"); + } else { + if (t().isAssignmentPattern(node.value) && t().isIdentifier(node.key) && node.key.name === node.value.left.name) { + this.print(node.value, node); + return; + } + + this.print(node.key, node); + + if (node.shorthand && t().isIdentifier(node.key) && t().isIdentifier(node.value) && node.key.name === node.value.name) { + return; + } + } + + this.token(":"); + this.space(); + this.print(node.value, node); +} + +function ArrayExpression(node) { + const elems = node.elements; + const len = elems.length; + this.token("["); + this.printInnerComments(node); + + for (let i = 0; i < elems.length; i++) { + const elem = elems[i]; + + if (elem) { + if (i > 0) this.space(); + this.print(elem, node); + if (i < len - 1) this.token(","); + } else { + this.token(","); + } + } + + this.token("]"); +} + +function RegExpLiteral(node) { + this.word(`/${node.pattern}/${node.flags}`); +} + +function BooleanLiteral(node) { + this.word(node.value ? "true" : "false"); +} + +function NullLiteral() { + this.word("null"); +} + +function NumericLiteral(node) { + const raw = this.getPossibleRaw(node); + const value = node.value + ""; + + if (raw == null) { + this.number(value); + } else if (this.format.minified) { + this.number(raw.length < value.length ? raw : value); + } else { + this.number(raw); + } +} + +function StringLiteral(node) { + const raw = this.getPossibleRaw(node); + + if (!this.format.minified && raw != null) { + this.token(raw); + return; + } + + const opts = this.format.jsescOption; + + if (this.format.jsonCompatibleStrings) { + opts.json = true; + } + + const val = (0, _jsesc().default)(node.value, opts); + return this.token(val); +} + +function BigIntLiteral(node) { + const raw = this.getPossibleRaw(node); + + if (!this.format.minified && raw != null) { + this.token(raw); + return; + } + + this.token(node.value); +} + +function PipelineTopicExpression(node) { + this.print(node.expression, node); +} + +function PipelineBareFunction(node) { + this.print(node.callee, node); +} + +function PipelinePrimaryTopicReference() { + this.token("#"); +} + +/***/ }), +/* 78 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +__webpack_require__(37); + +var _require = __webpack_require__(95), + main = _require.main; + +var yargs = __webpack_require__(224); + +var RelayConfig; + +try { + // eslint-disable-next-line no-eval + RelayConfig = eval('require')('relay-config'); // eslint-disable-next-line lint/no-unused-catch-bindings +} catch (_) {} + +var options = { + schema: { + describe: 'Path to schema.graphql or schema.json', + demandOption: true, + type: 'string', + array: false + }, + src: { + describe: 'Root directory of application code', + demandOption: true, + type: 'string', + array: false + }, + include: { + describe: 'Directories to include under src', + type: 'string', + array: true, + "default": ['**'] + }, + exclude: { + describe: 'Directories to ignore under src', + type: 'string', + array: true, + "default": ['**/node_modules/**', '**/__mocks__/**', '**/__generated__/**'] + }, + extensions: { + array: true, + describe: 'File extensions to compile (defaults to extensions provided by the ' + 'language plugin)', + type: 'string' + }, + verbose: { + describe: 'More verbose logging', + type: 'boolean', + "default": false + }, + quiet: { + describe: 'No output to stdout', + type: 'boolean', + "default": false + }, + watchman: { + describe: 'Use watchman when not in watch mode', + type: 'boolean', + "default": true + }, + watch: { + describe: 'If specified, watches files and regenerates on changes', + type: 'boolean', + "default": false + }, + validate: { + describe: 'Looks for pending changes and exits with non-zero code instead of ' + 'writing to disk', + type: 'boolean', + "default": false + }, + persistOutput: { + describe: 'A path to a .json file where persisted query metadata should be saved', + demandOption: false, + type: 'string', + array: false + }, + noFutureProofEnums: { + describe: 'This option controls whether or not a catch-all entry is added to enum type definitions ' + 'for values that may be added in the future. Enabling this means you will have to update ' + 'your application whenever the GraphQL server schema adds new enum values to prevent it ' + 'from breaking.', + type: 'boolean', + "default": false + }, + language: { + describe: 'The name of the language plugin used for input files and artifacts', + demandOption: false, + type: 'string', + array: false, + "default": 'javascript' + }, + artifactDirectory: { + describe: 'A specific directory to output all artifacts to. When enabling this ' + 'the babel plugin needs `artifactDirectory` set as well.', + demandOption: false, + type: 'string', + array: false + }, + customScalars: { + describe: 'Mappings from custom scalars in your schema to built-in GraphQL ' + 'types, for type emission purposes. (Uses yargs dot-notation, e.g. ' + '--customScalars.URL=String)', + type: 'object' + } +}; // Load external config + +var config = RelayConfig && RelayConfig.loadConfig(); // Parse CLI args + +var argv = yargs.usage('Create Relay generated files\n\n' + '$0 --schema --src [--watch]') // $FlowFixMe - TODO @alloy (OSS): Fix non-existent 'object' type for parsing customScalars config +.options(options) // Apply externally loaded config through the yargs API so that we can leverage yargs' defaults and have them show up +// in the help banner. +.config(config).help().argv; // Start the application + +main(argv)["catch"](function (error) { + console.error(String(error.stack || error)); + process.exit(1); +}); + +/***/ }), +/* 79 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(80); + +__webpack_require__(81); + +__webpack_require__(82); + +__webpack_require__(83); + +__webpack_require__(84); + +__webpack_require__(85); + +__webpack_require__(86); + +__webpack_require__(87); + +__webpack_require__(88); + +__webpack_require__(89); + +__webpack_require__(90); + +__webpack_require__(91); + +__webpack_require__(92); + +__webpack_require__(93); + +/***/ }), +/* 80 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/es6"); + +/***/ }), +/* 81 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/array/includes"); + +/***/ }), +/* 82 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/array/flat-map"); + +/***/ }), +/* 83 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/string/pad-start"); + +/***/ }), +/* 84 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/string/pad-end"); + +/***/ }), +/* 85 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/string/trim-start"); + +/***/ }), +/* 86 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/string/trim-end"); + +/***/ }), +/* 87 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/symbol/async-iterator"); + +/***/ }), +/* 88 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/object/get-own-property-descriptors"); + +/***/ }), +/* 89 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/object/values"); + +/***/ }), +/* 90 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/object/entries"); + +/***/ }), +/* 91 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/fn/promise/finally"); + +/***/ }), +/* 92 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/web"); + +/***/ }), +/* 93 */ +/***/ (function(module, exports) { + +module.exports = require("regenerator-runtime/runtime"); + +/***/ }), +/* 94 */ +/***/ (function(module, exports) { + +module.exports = require("core-js/library/fn/global"); + +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _asyncToGenerator = __webpack_require__(16); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(27)); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +__webpack_require__(37); + +var CodegenRunner = __webpack_require__(99); + +var ConsoleReporter = __webpack_require__(103); + +var DotGraphQLParser = __webpack_require__(105); + +var WatchmanClient = __webpack_require__(28); + +var RelaySourceModuleParser = __webpack_require__(106); + +var RelayFileWriter = __webpack_require__(111); + +var RelayIRTransforms = __webpack_require__(125); + +var RelayLanguagePluginJavaScript = __webpack_require__(148); + +var crypto = __webpack_require__(20); + +var fs = __webpack_require__(18); + +var path = __webpack_require__(14); + +var _require = __webpack_require__(1), + buildASTSchema = _require.buildASTSchema, + buildClientSchema = _require.buildClientSchema, + parse = _require.parse, + printSchema = _require.printSchema; + +var commonTransforms = RelayIRTransforms.commonTransforms, + codegenTransforms = RelayIRTransforms.codegenTransforms, + fragmentTransforms = RelayIRTransforms.fragmentTransforms, + printTransforms = RelayIRTransforms.printTransforms, + queryTransforms = RelayIRTransforms.queryTransforms, + schemaExtensions = RelayIRTransforms.schemaExtensions; + +function buildWatchExpression(config) { + return ['allof', ['type', 'f'], ['anyof'].concat((0, _toConsumableArray2["default"])(config.extensions.map(function (ext) { + return ['suffix', ext]; + }))), ['anyof'].concat((0, _toConsumableArray2["default"])(config.include.map(function (include) { + return ['match', include, 'wholename']; + })))].concat((0, _toConsumableArray2["default"])(config.exclude.map(function (exclude) { + return ['not', ['match', exclude, 'wholename']]; + }))); +} + +function getFilepathsFromGlob(baseDir, config) { + var extensions = config.extensions, + include = config.include, + exclude = config.exclude; + var patterns = include.map(function (inc) { + return "".concat(inc, "/*.+(").concat(extensions.join('|'), ")"); + }); + + var glob = __webpack_require__(223); + + return glob.sync(patterns, { + cwd: baseDir, + ignore: exclude + }); +} + +/** + * Unless the requested plugin is the builtin `javascript` one, import a + * language plugin as either a CommonJS or ES2015 module. + * + * When importing, first check if it’s a path to an existing file, otherwise + * assume it’s a package and prepend the plugin namespace prefix. + * + * Make sure to always use Node's `require` function, which otherwise would get + * replaced with `__webpack_require__` when bundled using webpack, by using + * `eval` to get it at runtime. + */ +function getLanguagePlugin(language) { + if (language === 'javascript') { + return RelayLanguagePluginJavaScript(); + } else { + var languagePlugin; + + if (typeof language === 'string') { + var pluginPath = path.resolve(process.cwd(), language); + var requirePath = fs.existsSync(pluginPath) ? pluginPath : "relay-compiler-language-".concat(language); + + try { + // eslint-disable-next-line no-eval + languagePlugin = eval('require')(requirePath); + + if (languagePlugin["default"]) { + languagePlugin = languagePlugin["default"]; + } + } catch (err) { + var e = new Error("Unable to load language plugin ".concat(requirePath, ": ").concat(err.message)); + e.stack = err.stack; + throw e; + } + } else { + languagePlugin = language; + } + + if (languagePlugin["default"]) { + // $FlowFixMe - Flow no longer considers statics of functions as any + languagePlugin = languagePlugin["default"]; + } + + if (typeof languagePlugin === 'function') { + // $FlowFixMe + return languagePlugin(); + } else { + throw new Error('Expected plugin to be a initializer function.'); + } + } +} + +function main(_x) { + return _main.apply(this, arguments); +} + +function _main() { + _main = _asyncToGenerator(function* (config) { + if (config.verbose && config.quiet) { + throw new Error("I can't be quiet and verbose at the same time"); + } + + config = getPathBasedConfig(config); + config = yield getWatchConfig(config); // Use function from module.exports to be able to mock it for tests + + var codegenRunner = module.exports.getCodegenRunner(config); + var result = config.watch ? yield codegenRunner.watchAll() : yield codegenRunner.compileAll(); + + if (result === 'ERROR') { + process.exit(100); + } + + if (config.validate && result !== 'NO_CHANGES') { + process.exit(101); + } + }); + return _main.apply(this, arguments); +} + +function getPathBasedConfig(config) { + var schema = path.resolve(process.cwd(), config.schema); + + if (!fs.existsSync(schema)) { + throw new Error("--schema path does not exist: ".concat(schema)); + } + + var src = path.resolve(process.cwd(), config.src); + + if (!fs.existsSync(src)) { + throw new Error("--src path does not exist: ".concat(src)); + } + + var persistOutput = config.persistOutput; + + if (typeof persistOutput === 'string') { + persistOutput = path.resolve(process.cwd(), persistOutput); + var persistOutputDir = path.dirname(persistOutput); + + if (!fs.existsSync(persistOutputDir)) { + throw new Error("--persistOutput path does not exist: ".concat(persistOutput)); + } + } + + return (0, _objectSpread2["default"])({}, config, { + schema: schema, + src: src, + persistOutput: persistOutput + }); +} + +function getWatchConfig(_x2) { + return _getWatchConfig.apply(this, arguments); +} + +function _getWatchConfig() { + _getWatchConfig = _asyncToGenerator(function* (config) { + var watchman = config.watchman && (yield WatchmanClient.isAvailable()); + + if (config.watch) { + if (!watchman) { + throw new Error('Watchman is required to watch for changes.'); + } + + if (!module.exports.hasWatchmanRootFile(config.src)) { + throw new Error("\n--watch requires that the src directory have a valid watchman \"root\" file.\n\nRoot files can include:\n- A .git/ Git folder\n- A .hg/ Mercurial folder\n- A .watchmanconfig file\n\nEnsure that one such file exists in ".concat(config.src, " or its parents.\n ").trim()); + } + } else if (watchman && !config.validate) { + // eslint-disable-next-line no-console + console.log('HINT: pass --watch to keep watching for changes.'); + } + + return (0, _objectSpread2["default"])({}, config, { + watchman: watchman + }); + }); + return _getWatchConfig.apply(this, arguments); +} + +function getCodegenRunner(config) { + var _parserConfigs; + + var reporter = new ConsoleReporter({ + verbose: config.verbose, + quiet: config.quiet + }); + var schema = getSchema(config.schema); + var languagePlugin = getLanguagePlugin(config.language); + var inputExtensions = config.extensions || languagePlugin.inputExtensions; + var outputExtension = languagePlugin.outputExtension; + var sourceParserName = inputExtensions.join('/'); + var sourceWriterName = outputExtension; + var sourceModuleParser = RelaySourceModuleParser(languagePlugin.findGraphQLTags); + var providedArtifactDirectory = config.artifactDirectory; + var artifactDirectory = providedArtifactDirectory != null ? path.resolve(process.cwd(), providedArtifactDirectory) : null; + var generatedDirectoryName = artifactDirectory || '__generated__'; + var sourceSearchOptions = { + extensions: inputExtensions, + include: config.include, + exclude: ['**/*_graphql.*'].concat((0, _toConsumableArray2["default"])(config.exclude)) + }; + var graphqlSearchOptions = { + extensions: ['graphql'], + include: config.include, + exclude: [path.relative(config.src, config.schema)].concat(config.exclude) + }; + var parserConfigs = (_parserConfigs = {}, (0, _defineProperty2["default"])(_parserConfigs, sourceParserName, { + baseDir: config.src, + getFileFilter: sourceModuleParser.getFileFilter, + getParser: sourceModuleParser.getParser, + getSchema: function getSchema() { + return schema; + }, + watchmanExpression: config.watchman ? buildWatchExpression(sourceSearchOptions) : null, + filepaths: config.watchman ? null : getFilepathsFromGlob(config.src, sourceSearchOptions) + }), (0, _defineProperty2["default"])(_parserConfigs, "graphql", { + baseDir: config.src, + getParser: DotGraphQLParser.getParser, + getSchema: function getSchema() { + return schema; + }, + watchmanExpression: config.watchman ? buildWatchExpression(graphqlSearchOptions) : null, + filepaths: config.watchman ? null : getFilepathsFromGlob(config.src, graphqlSearchOptions) + }), _parserConfigs); + var writerConfigs = (0, _defineProperty2["default"])({}, sourceWriterName, { + writeFiles: getRelayFileWriter(config.src, languagePlugin, config.noFutureProofEnums, artifactDirectory, config.persistOutput, config.customScalars), + isGeneratedFile: function isGeneratedFile(filePath) { + return filePath.includes(generatedDirectoryName); + }, + parser: sourceParserName, + baseParsers: ['graphql'] + }); + var codegenRunner = new CodegenRunner({ + reporter: reporter, + parserConfigs: parserConfigs, + writerConfigs: writerConfigs, + onlyValidate: config.validate, + // TODO: allow passing in a flag or detect? + sourceControl: null + }); + return codegenRunner; +} + +function getRelayFileWriter(baseDir, languagePlugin, noFutureProofEnums, outputDir, persistedQueryPath, customScalars) { + return function (_ref) { + var onlyValidate = _ref.onlyValidate, + schema = _ref.schema, + documents = _ref.documents, + baseDocuments = _ref.baseDocuments, + sourceControl = _ref.sourceControl, + reporter = _ref.reporter; + var persistQuery; + var queryMap; + + if (persistedQueryPath != null) { + queryMap = new Map(); + + persistQuery = function persistQuery(text) { + var hasher = crypto.createHash('md5'); + hasher.update(text); + var id = hasher.digest('hex'); + queryMap.set(id, text); + return Promise.resolve(id); + }; + } + + var results = RelayFileWriter.writeAll({ + config: { + baseDir: baseDir, + compilerTransforms: { + commonTransforms: commonTransforms, + codegenTransforms: codegenTransforms, + fragmentTransforms: fragmentTransforms, + printTransforms: printTransforms, + queryTransforms: queryTransforms + }, + customScalars: customScalars || {}, + formatModule: languagePlugin.formatModule, + optionalInputFieldsForFlow: [], + schemaExtensions: schemaExtensions, + useHaste: false, + noFutureProofEnums: noFutureProofEnums, + extension: languagePlugin.outputExtension, + typeGenerator: languagePlugin.typeGenerator, + outputDir: outputDir, + persistQuery: persistQuery + }, + onlyValidate: onlyValidate, + schema: schema, + baseDocuments: baseDocuments, + documents: documents, + reporter: reporter, + sourceControl: sourceControl + }); + + if (queryMap != null && persistedQueryPath != null) { + var object = {}; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = queryMap.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _step$value = _step.value, + key = _step$value[0], + value = _step$value[1]; + object[key] = value; + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + var data = JSON.stringify(object, null, 2); + fs.writeFileSync(persistedQueryPath, data, 'utf8'); + } + + return results; + }; +} + +function getSchema(schemaPath) { + try { + var source = fs.readFileSync(schemaPath, 'utf8'); + + if (path.extname(schemaPath) === '.json') { + source = printSchema(buildClientSchema(JSON.parse(source).data)); + } + + source = "\n directive @include(if: Boolean) on FRAGMENT_SPREAD | FIELD | INLINE_FRAGMENT\n directive @skip(if: Boolean) on FRAGMENT_SPREAD | FIELD | INLINE_FRAGMENT\n\n ".concat(source, "\n "); + return buildASTSchema(parse(source), { + assumeValid: true + }); + } catch (error) { + throw new Error("\nError loading schema. Expected the schema to be a .graphql or a .json\nfile, describing your GraphQL server's API. Error detail:\n\n".concat(error.stack, "\n ").trim()); + } +} // Ensure that a watchman "root" file exists in the given directory +// or a parent so that it can be watched + + +var WATCHMAN_ROOT_FILES = ['.git', '.hg', '.watchmanconfig']; + +function hasWatchmanRootFile(testPath) { + while (path.dirname(testPath) !== testPath) { + if (WATCHMAN_ROOT_FILES.some(function (file) { + return fs.existsSync(path.join(testPath, file)); + })) { + return true; + } + + testPath = path.dirname(testPath); + } + + return false; +} + +module.exports = { + getCodegenRunner: getCodegenRunner, + getLanguagePlugin: getLanguagePlugin, + getWatchConfig: getWatchConfig, + hasWatchmanRootFile: hasWatchmanRootFile, + main: main +}; + +/***/ }), +/* 96 */ +/***/ (function(module, exports) { + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } +} + +module.exports = _arrayWithoutHoles; + +/***/ }), +/* 97 */ +/***/ (function(module, exports) { + +function _iterableToArray(iter) { + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); +} + +module.exports = _iterableToArray; + +/***/ }), +/* 98 */ +/***/ (function(module, exports) { + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance"); +} + +module.exports = _nonIterableSpread; + +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _asyncToGenerator = __webpack_require__(16); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var CodegenDirectory = __webpack_require__(38); + +var CodegenWatcher = __webpack_require__(100); + +var GraphQLWatchmanClient = __webpack_require__(28); + +var Profiler = __webpack_require__(10); + +var invariant = __webpack_require__(4); + +var path = __webpack_require__(14); + +var _require = __webpack_require__(21), + ImmutableMap = _require.Map; + +var CodegenRunner = +/*#__PURE__*/ +function () { + // parser => writers that are affected by it + function CodegenRunner(options) { + var _this = this; + + this.parsers = {}; + this.parserConfigs = options.parserConfigs; + this.writerConfigs = options.writerConfigs; + this.onlyValidate = options.onlyValidate; + this.onComplete = options.onComplete; + this._reporter = options.reporter; + this._sourceControl = options.sourceControl; + this.parserWriters = {}; + + for (var _parser in options.parserConfigs) { + this.parserWriters[_parser] = new Set(); + } + + var _loop = function _loop(_writer) { + var config = options.writerConfigs[_writer]; + config.baseParsers && config.baseParsers.forEach(function (parser) { + return _this.parserWriters[parser].add(_writer); + }); + + _this.parserWriters[config.parser].add(_writer); + }; + + for (var _writer in options.writerConfigs) { + _loop(_writer); + } + } + + var _proto = CodegenRunner.prototype; + + _proto.compileAll = + /*#__PURE__*/ + function () { + var _compileAll = _asyncToGenerator(function* () { + // reset the parsers + this.parsers = {}; + + for (var parserName in this.parserConfigs) { + try { + yield this.parseEverything(parserName); + } catch (e) { + this._reporter.reportError('CodegenRunner.compileAll', e); + + return 'ERROR'; + } + } + + var hasChanges = false; + + for (var writerName in this.writerConfigs) { + var result = yield this.write(writerName); + + if (result === 'ERROR') { + return 'ERROR'; + } + + if (result === 'HAS_CHANGES') { + hasChanges = true; + } + } + + return hasChanges ? 'HAS_CHANGES' : 'NO_CHANGES'; + }); + + function compileAll() { + return _compileAll.apply(this, arguments); + } + + return compileAll; + }(); + + _proto.compile = + /*#__PURE__*/ + function () { + var _compile = _asyncToGenerator(function* (writerName) { + var _this2 = this; + + var writerConfig = this.writerConfigs[writerName]; + var parsers = [writerConfig.parser]; + + if (writerConfig.baseParsers) { + writerConfig.baseParsers.forEach(function (parser) { + return parsers.push(parser); + }); + } // Don't bother resetting the parsers + + + yield Profiler.asyncContext('CodegenRunner:parseEverything', function () { + return Promise.all(parsers.map(function (parser) { + return _this2.parseEverything(parser); + })); + }); + return yield this.write(writerName); + }); + + function compile(_x) { + return _compile.apply(this, arguments); + } + + return compile; + }(); + + _proto.getDirtyWriters = function getDirtyWriters(filePaths) { + var _this3 = this; + + return Profiler.asyncContext('CodegenRunner:getDirtyWriters', + /*#__PURE__*/ + _asyncToGenerator(function* () { + var dirtyWriters = new Set(); // Check if any files are in the output + + for (var configName in _this3.writerConfigs) { + var config = _this3.writerConfigs[configName]; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = filePaths[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _filePath = _step.value; + + if (config.isGeneratedFile(_filePath)) { + dirtyWriters.add(configName); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + } // Check for files in the input + + + yield Promise.all(Object.keys(_this3.parserConfigs).map(function (parserConfigName) { + return Profiler.waitFor('Watchman:query', + /*#__PURE__*/ + _asyncToGenerator(function* () { + var client = new GraphQLWatchmanClient(); + var config = _this3.parserConfigs[parserConfigName]; + var dirs = yield client.watchProject(config.baseDir); + var relativeFilePaths = filePaths.map(function (filePath) { + return path.relative(config.baseDir, filePath); + }); + var query = { + expression: ['allof', config.watchmanExpression, ['name', relativeFilePaths, 'wholename']], + fields: ['exists'], + relative_root: dirs.relativePath + }; + var result = yield client.command('query', dirs.root, query); + client.end(); + + if (result.files.length > 0) { + _this3.parserWriters[parserConfigName].forEach(function (writerName) { + return dirtyWriters.add(writerName); + }); + } + })); + })); + return dirtyWriters; + })); + }; + + _proto.parseEverything = + /*#__PURE__*/ + function () { + var _parseEverything = _asyncToGenerator(function* (parserName) { + if (this.parsers[parserName]) { + // no need to parse + return; + } + + var parserConfig = this.parserConfigs[parserName]; + this.parsers[parserName] = parserConfig.getParser(parserConfig.baseDir); + var filter = parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter; + + if (parserConfig.filepaths && parserConfig.watchmanExpression) { + throw new Error('Provide either `watchmanExpression` or `filepaths` but not both.'); + } + + var files; + + if (parserConfig.watchmanExpression) { + files = yield CodegenWatcher.queryFiles(parserConfig.baseDir, parserConfig.watchmanExpression, filter); + } else if (parserConfig.filepaths) { + files = yield CodegenWatcher.queryFilepaths(parserConfig.baseDir, parserConfig.filepaths, filter); + } else { + throw new Error('Either `watchmanExpression` or `filepaths` is required to query files'); + } + + this.parseFileChanges(parserName, files); + }); + + function parseEverything(_x2) { + return _parseEverything.apply(this, arguments); + } + + return parseEverything; + }(); + + _proto.parseFileChanges = function parseFileChanges(parserName, files) { + var _this4 = this; + + return Profiler.run('CodegenRunner.parseFileChanges', function () { + var parser = _this4.parsers[parserName]; // this maybe should be await parser.parseFiles(files); + + parser.parseFiles(files); + }); + } // We cannot do incremental writes right now. + // When we can, this could be writeChanges(writerName, parserName, parsedDefinitions) + ; + + _proto.write = function write(writerName) { + var _this5 = this; + + return Profiler.asyncContext('CodegenRunner.write', + /*#__PURE__*/ + _asyncToGenerator(function* () { + try { + _this5._reporter.reportMessage("\nWriting ".concat(writerName)); + + var _this5$writerConfigs$ = _this5.writerConfigs[writerName], + writeFiles = _this5$writerConfigs$.writeFiles, + _parser2 = _this5$writerConfigs$.parser, + baseParsers = _this5$writerConfigs$.baseParsers, + isGeneratedFile = _this5$writerConfigs$.isGeneratedFile; + var baseDocuments = ImmutableMap(); + + if (baseParsers) { + baseParsers.forEach(function (baseParserName) { + !_this5.parsers[baseParserName] ? true ? invariant(false, 'Trying to access an uncompiled base parser config: %s', baseParserName) : undefined : void 0; + baseDocuments = baseDocuments.merge(_this5.parsers[baseParserName].documents()); + }); + } + + var _this5$parserConfigs$ = _this5.parserConfigs[_parser2], + _baseDir = _this5$parserConfigs$.baseDir, + generatedDirectoriesWatchmanExpression = _this5$parserConfigs$.generatedDirectoriesWatchmanExpression; + var generatedDirectories = []; + + if (generatedDirectoriesWatchmanExpression) { + var relativePaths = yield CodegenWatcher.queryDirectories(_baseDir, generatedDirectoriesWatchmanExpression); + generatedDirectories = relativePaths.map(function (x) { + return path.join(_baseDir, x); + }); + } // always create a new writer: we have to write everything anyways + + + var documents = _this5.parsers[_parser2].documents(); + + var schema = Profiler.run('getSchema', function () { + return _this5.parserConfigs[_parser2].getSchema(); + }); + var outputDirectories = yield writeFiles({ + onlyValidate: _this5.onlyValidate, + schema: schema, + documents: documents, + baseDocuments: baseDocuments, + generatedDirectories: generatedDirectories, + sourceControl: _this5._sourceControl, + reporter: _this5._reporter + }); + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = outputDirectories.values()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var dir = _step2.value; + var all = [].concat((0, _toConsumableArray2["default"])(dir.changes.created), (0, _toConsumableArray2["default"])(dir.changes.updated), (0, _toConsumableArray2["default"])(dir.changes.deleted), (0, _toConsumableArray2["default"])(dir.changes.unchanged)); + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = all[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var filename = _step3.value; + + var _filePath2 = dir.getPath(filename); + + !isGeneratedFile(_filePath2) ? true ? invariant(false, 'CodegenRunner: %s returned false for isGeneratedFile, ' + 'but was in generated directory', _filePath2) : undefined : void 0; + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { + _iterator3["return"](); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + var onCompleteCallback = _this5.onComplete; + + if (onCompleteCallback != null) { + onCompleteCallback(Array.from(outputDirectories.values())); + } + + var combinedChanges = CodegenDirectory.combineChanges(Array.from(outputDirectories.values())); + CodegenDirectory.printChanges(combinedChanges, { + onlyValidate: _this5.onlyValidate + }); + return CodegenDirectory.hasChanges(combinedChanges) ? 'HAS_CHANGES' : 'NO_CHANGES'; + } catch (e) { + _this5._reporter.reportError('CodegenRunner.write', e); + + return 'ERROR'; + } + })); + }; + + _proto.watchAll = + /*#__PURE__*/ + function () { + var _watchAll = _asyncToGenerator(function* () { + // get everything set up for watching + yield this.compileAll(); + + for (var parserName in this.parserConfigs) { + yield this.watch(parserName); + } + }); + + function watchAll() { + return _watchAll.apply(this, arguments); + } + + return watchAll; + }(); + + _proto.watch = + /*#__PURE__*/ + function () { + var _watch = _asyncToGenerator(function* (parserName) { + var _this6 = this; + + var parserConfig = this.parserConfigs[parserName]; + + if (!parserConfig.watchmanExpression) { + throw new Error('`watchmanExpression` is required to watch files'); + } // watchCompile starts with a full set of files as the changes + // But as we need to set everything up due to potential parser dependencies, + // we should prevent the first watch callback from doing anything. + + + var firstChange = true; + yield CodegenWatcher.watchCompile(parserConfig.baseDir, parserConfig.watchmanExpression, parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter, + /*#__PURE__*/ + function () { + var _ref4 = _asyncToGenerator(function* (files) { + !_this6.parsers[parserName] ? true ? invariant(false, 'Trying to watch an uncompiled parser config: %s', parserName) : undefined : void 0; + + if (firstChange) { + firstChange = false; + return; + } + + var dependentWriters = []; + + _this6.parserWriters[parserName].forEach(function (writer) { + return dependentWriters.push(writer); + }); + + try { + if (!_this6.parsers[parserName]) { + // have to load the parser and make sure all of its dependents are set + yield _this6.parseEverything(parserName); + } else { + _this6.parseFileChanges(parserName, files); + } + + yield Promise.all(dependentWriters.map(function (writer) { + return _this6.write(writer); + })); + } catch (error) { + _this6._reporter.reportError('CodegenRunner.watch', error); + } + + _this6._reporter.reportMessage("Watching for changes to ".concat(parserName, "...")); + }); + + return function (_x4) { + return _ref4.apply(this, arguments); + }; + }()); + + this._reporter.reportMessage("Watching for changes to ".concat(parserName, "...")); + }); + + function watch(_x3) { + return _watch.apply(this, arguments); + } + + return watch; + }(); + + return CodegenRunner; +}(); + +function anyFileFilter(file) { + return true; +} + +module.exports = CodegenRunner; + +/***/ }), +/* 100 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _asyncToGenerator = __webpack_require__(16); + +var GraphQLWatchmanClient = __webpack_require__(28); + +var Profiler = __webpack_require__(10); + +var crypto = __webpack_require__(20); + +var fs = __webpack_require__(18); + +var path = __webpack_require__(14); + +var SUBSCRIPTION_NAME = 'graphql-codegen'; +var QUERY_RETRIES = 3; + +function queryFiles(_x, _x2, _x3) { + return _queryFiles.apply(this, arguments); +} + +function _queryFiles() { + _queryFiles = _asyncToGenerator(function* (baseDir, expression, filter) { + return yield Profiler.waitFor('Watchman:query', + /*#__PURE__*/ + _asyncToGenerator(function* () { + var client = new GraphQLWatchmanClient(QUERY_RETRIES); + + var _ref = yield Promise.all([client.watchProject(baseDir), getFields(client)]), + watchResp = _ref[0], + fields = _ref[1]; + + var resp = yield client.command('query', watchResp.root, { + expression: expression, + fields: fields, + relative_root: watchResp.relativePath + }); + client.end(); + return updateFiles(new Set(), baseDir, filter, resp.files); + })); + }); + return _queryFiles.apply(this, arguments); +} + +function queryDirectories(_x4, _x5) { + return _queryDirectories.apply(this, arguments); +} + +function _queryDirectories() { + _queryDirectories = _asyncToGenerator(function* (baseDir, expression) { + return yield Profiler.waitFor('Watchman:query', + /*#__PURE__*/ + _asyncToGenerator(function* () { + var client = new GraphQLWatchmanClient(); + var watchResp = yield client.watchProject(baseDir); + var resp = yield client.command('query', watchResp.root, { + expression: expression, + fields: ['name'], + relative_root: watchResp.relativePath + }); + client.end(); + return resp.files; + })); + }); + return _queryDirectories.apply(this, arguments); +} + +function getFields(_x6) { + return _getFields.apply(this, arguments); +} // For use when not using Watchman. + + +function _getFields() { + _getFields = _asyncToGenerator(function* (client) { + var fields = ['name', 'exists']; + + if (yield client.hasCapability('field-content.sha1hex')) { + fields.push('content.sha1hex'); + } + + return fields; + }); + return _getFields.apply(this, arguments); +} + +function queryFilepaths(_x7, _x8, _x9) { + return _queryFilepaths.apply(this, arguments); +} +/** + * Provides a simplified API to the watchman API. + * Given some base directory and a list of subdirectories it calls the callback + * with watchman change events on file changes. + */ + + +function _queryFilepaths() { + _queryFilepaths = _asyncToGenerator(function* (baseDir, filepaths, filter) { + // Construct WatchmanChange objects as an intermediate step before + // calling updateFiles to produce file content. + var files = filepaths.map(function (filepath) { + return { + name: filepath, + exists: true, + 'content.sha1hex': null + }; + }); + return updateFiles(new Set(), baseDir, filter, files); + }); + return _queryFilepaths.apply(this, arguments); +} + +function watch(_x10, _x11, _x12) { + return _watch.apply(this, arguments); +} + +function _watch() { + _watch = _asyncToGenerator(function* (baseDir, expression, callback) { + return yield Profiler.waitFor('Watchman:subscribe', + /*#__PURE__*/ + _asyncToGenerator(function* () { + var client = new GraphQLWatchmanClient(); + var watchResp = yield client.watchProject(baseDir); + yield makeSubscription(client, watchResp.root, watchResp.relativePath, expression, callback); + })); + }); + return _watch.apply(this, arguments); +} + +function makeSubscription(_x13, _x14, _x15, _x16, _x17) { + return _makeSubscription.apply(this, arguments); +} +/** + * Further simplifies `watch` and calls the callback on every change with a + * full list of files that match the conditions. + */ + + +function _makeSubscription() { + _makeSubscription = _asyncToGenerator(function* (client, root, relativePath, expression, callback) { + client.on('subscription', function (resp) { + if (resp.subscription === SUBSCRIPTION_NAME) { + callback(resp); + } + }); + var fields = yield getFields(client); + yield client.command('subscribe', root, SUBSCRIPTION_NAME, { + expression: expression, + fields: fields, + relative_root: relativePath + }); + }); + return _makeSubscription.apply(this, arguments); +} + +function watchFiles(_x18, _x19, _x20, _x21) { + return _watchFiles.apply(this, arguments); +} +/** + * Similar to watchFiles, but takes an async function. The `compile` function + * is awaited and not called in parallel. If multiple changes are triggered + * before a compile finishes, the latest version is called after the compile + * finished. + * + * TODO: Consider changing from a Promise to abortable, so we can abort mid + * compilation. + */ + + +function _watchFiles() { + _watchFiles = _asyncToGenerator(function* (baseDir, expression, filter, callback) { + var files = new Set(); + yield watch(baseDir, expression, function (changes) { + if (!changes.files) { + // Watchmen fires a change without files when a watchman state changes, + // for example during an hg update. + return; + } + + files = updateFiles(files, baseDir, filter, changes.files); + callback(files); + }); + }); + return _watchFiles.apply(this, arguments); +} + +function watchCompile(_x22, _x23, _x24, _x25) { + return _watchCompile.apply(this, arguments); +} + +function _watchCompile() { + _watchCompile = _asyncToGenerator(function* (baseDir, expression, filter, compile) { + var compiling = false; + var needsCompiling = false; + var latestFiles = null; + watchFiles(baseDir, expression, filter, + /*#__PURE__*/ + function () { + var _ref6 = _asyncToGenerator(function* (files) { + needsCompiling = true; + latestFiles = files; + + if (compiling) { + return; + } + + compiling = true; + + while (needsCompiling) { + needsCompiling = false; + yield compile(latestFiles); + } + + compiling = false; + }); + + return function (_x26) { + return _ref6.apply(this, arguments); + }; + }()); + }); + return _watchCompile.apply(this, arguments); +} + +function updateFiles(files, baseDir, filter, fileChanges) { + var fileMap = new Map(); + files.forEach(function (file) { + file.exists && fileMap.set(file.relPath, file); + }); + fileChanges.forEach(function (_ref2) { + var name = _ref2.name, + exists = _ref2.exists, + hash = _ref2['content.sha1hex']; + var shouldRemove = !exists; + + if (!shouldRemove) { + var _file = { + exists: true, + relPath: name, + hash: hash || hashFile(path.join(baseDir, name)) + }; + + if (filter(_file)) { + fileMap.set(name, _file); + } else { + shouldRemove = true; + } + } + + shouldRemove && fileMap.set(name, { + exists: false, + relPath: name + }); + }); + return new Set(fileMap.values()); +} + +function hashFile(filename) { + var content = fs.readFileSync(filename); + return crypto.createHash('sha1').update(content).digest('hex'); +} + +module.exports = { + queryDirectories: queryDirectories, + queryFiles: queryFiles, + queryFilepaths: queryFilepaths, + watch: watch, + watchFiles: watchFiles, + watchCompile: watchCompile +}; + +/***/ }), +/* 101 */ +/***/ (function(module, exports) { + +module.exports = require("child_process"); + +/***/ }), +/* 102 */ +/***/ (function(module, exports) { + +module.exports = require("fb-watchman"); + +/***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var chalk = __webpack_require__(104); + +function getMemoryUsageString() { + return chalk.blue(Math.round(process.memoryUsage().heapUsed / 1024 / 1024) + 'Mb'); +} + +var GraphQLConsoleReporter = +/*#__PURE__*/ +function () { + function GraphQLConsoleReporter(options) { + this._verbose = options.verbose; + this._quiet = options.quiet; + } + + var _proto = GraphQLConsoleReporter.prototype; + + _proto.reportMessage = function reportMessage(message) { + if (!this._quiet) { + process.stdout.write(message + '\n'); + } + }; + + _proto.reportTime = function reportTime(name, ms) { + /* $FlowFixMe(>=0.68.0 site=react_native_fb,react_native_oss) This comment + * suppresses an error found when Flow v0.68 was deployed. To see the error + * delete this comment and run Flow. */ + if (this._verbose && !this.quiet) { + var time = ms === 0 ? chalk.gray(' <1ms') : ms < 1000 ? chalk.blue(leftPad(5, ms + 'ms')) : chalk.red(Math.floor(ms / 10) / 100 + 's'); + process.stdout.write(' ' + time + ' ' + chalk.gray(name) + ' [' + getMemoryUsageString() + ']\n'); + } + }; + + _proto.reportError = function reportError(caughtLocation, error) { + if (!this._quiet) { + process.stdout.write(chalk.red('ERROR:\n' + error.message + '\n')); + + if (this._verbose) { + var frames = error.stack.match(/^ {4}at .*$/gm); + + if (frames) { + process.stdout.write(chalk.gray('From: ' + caughtLocation + '\n' + frames.join('\n') + '\n')); + } + } + } + }; + + return GraphQLConsoleReporter; +}(); + +function leftPad(len, str) { + return new Array(len - str.length + 1).join(' ') + str; +} + +module.exports = GraphQLConsoleReporter; + +/***/ }), +/* 104 */ +/***/ (function(module, exports) { + +module.exports = require("chalk"); + +/***/ }), +/* 105 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var ASTCache = __webpack_require__(39); + +var fs = __webpack_require__(18); + +var path = __webpack_require__(14); + +var _require = __webpack_require__(1), + parse = _require.parse, + Source = _require.Source; + +function parseFile(baseDir, file) { + var text = fs.readFileSync(path.join(baseDir, file.relPath), 'utf8'); + return parse(new Source(text, file.relPath), { + experimentalFragmentVariables: true + }); +} + +function getParser(baseDir) { + return new ASTCache({ + baseDir: baseDir, + parse: parseFile + }); +} + +module.exports = { + parseFile: parseFile, + getParser: getParser +}; + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var ASTCache = __webpack_require__(39); + +var Profiler = __webpack_require__(10); + +var _require = __webpack_require__(107), + memoizedFind = _require.memoizedFind; + +var fs = __webpack_require__(18); + +var GraphQL = __webpack_require__(1); + +var invariant = __webpack_require__(4); + +var path = __webpack_require__(14); + +var parseGraphQL = Profiler.instrument(GraphQL.parse, 'GraphQL.parse'); + +module.exports = function (tagFinder) { + var memoizedTagFinder = memoizedFind.bind(null, tagFinder); + + function parseFile(baseDir, file) { + var result = parseFileWithSources(baseDir, file); + + if (result) { + return result.document; + } + } // Throws an error if parsing the file fails + + + function parseFileWithSources(baseDir, file) { + var text = fs.readFileSync(path.join(baseDir, file.relPath), 'utf8'); + var astDefinitions = []; + var sources = []; + memoizedTagFinder(text, baseDir, file).forEach(function (template) { + var source = new GraphQL.Source(template, file.relPath); + var ast = parseGraphQL(source); + !ast.definitions.length ? true ? invariant(false, 'RelaySourceModuleParser: Expected GraphQL text to contain at least one ' + 'definition (fragment, mutation, query, subscription), got `%s`.', template) : undefined : void 0; + sources.push(source.body); + astDefinitions.push.apply(astDefinitions, (0, _toConsumableArray2["default"])(ast.definitions)); + }); + return { + document: { + kind: 'Document', + definitions: astDefinitions + }, + sources: sources + }; + } + + function getParser(baseDir) { + return new ASTCache({ + baseDir: baseDir, + parse: parseFile + }); + } + + function getFileFilter(baseDir) { + return function (file) { + return true; + }; + } + + return { + getParser: getParser, + getFileFilter: getFileFilter, + parseFile: parseFile, + parseFileWithSources: parseFileWithSources + }; +}; + +/***/ }), +/* 107 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var RelayCompilerCache = __webpack_require__(108); + +var getModuleName = __webpack_require__(110); + +var graphql = __webpack_require__(1); + +var path = __webpack_require__(14); + +var util = __webpack_require__(29); + +var cache = new RelayCompilerCache('RelayFindGraphQLTags', 'v1'); + +function memoizedFind(tagFinder, text, baseDir, file) { + !file.exists ? true ? invariant(false, 'RelayFindGraphQLTags: Called with non-existent file `%s`', file.relPath) : undefined : void 0; + return cache.getOrCompute(file.hash, find.bind(null, tagFinder, text, path.join(baseDir, file.relPath))); +} + +function find(tagFinder, text, absPath) { + var tags = tagFinder(text, absPath); + var moduleName = getModuleName(absPath); + tags.forEach(function (tag) { + return validateTemplate(tag, moduleName, absPath); + }); + return tags.map(function (tag) { + return tag.template; + }); +} + +function validateTemplate(_ref, moduleName, filePath) { + var template = _ref.template, + keyName = _ref.keyName, + sourceLocationOffset = _ref.sourceLocationOffset; + var ast = graphql.parse(new graphql.Source(template, filePath, sourceLocationOffset)); + ast.definitions.forEach(function (def) { + if (def.kind === 'OperationDefinition') { + !(def.name != null) ? true ? invariant(false, 'RelayFindGraphQLTags: In module `%s`, an operation requires a name.', moduleName, def.kind) : undefined : void 0; + var definitionName = def.name.value; + var operationNameParts = definitionName.match(/^(.*)(Mutation|Query|Subscription)$/); + !(operationNameParts && definitionName.startsWith(moduleName)) ? true ? invariant(false, 'RelayFindGraphQLTags: Operation names in graphql tags must be prefixed ' + 'with the module name and end in "Mutation", "Query", or ' + '"Subscription". Got `%s` in module `%s`.', definitionName, moduleName) : undefined : void 0; + } else if (def.kind === 'FragmentDefinition') { + var _definitionName = def.name.value; + + if (keyName != null) { + !(_definitionName === moduleName + '_' + keyName) ? true ? invariant(false, 'RelayFindGraphQLTags: Container fragment names must be ' + '`_`. Got `%s`, expected `%s`.', _definitionName, moduleName + '_' + keyName) : undefined : void 0; + } else { + !_definitionName.startsWith(moduleName) ? true ? invariant(false, 'RelayFindGraphQLTags: Fragment names in graphql tags must be prefixed ' + 'with the module name. Got `%s` in module `%s`.', _definitionName, moduleName) : undefined : void 0; + } + } + }); +} // TODO: Not sure why this is defined here rather than imported, is it so that it doesn’t get stripped in prod? + + +function invariant(condition, msg) { + if (!condition) { + for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + + throw new Error(util.format.apply(util, [msg].concat(args))); + } +} + +module.exports = { + find: find, + // Exported for testing only. + memoizedFind: memoizedFind +}; + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(27)); + +var Profiler = __webpack_require__(10); + +var crypto = __webpack_require__(20); + +var fs = __webpack_require__(18); + +var os = __webpack_require__(109); + +var path = __webpack_require__(14); +/** + * A file backed cache. Values are JSON encoded on disk, so only JSON + * serializable values should be used. + */ + + +var RelayCompilerCache = +/*#__PURE__*/ +function () { + /** + * @param name Human readable identifier for the cache + * @param cacheBreaker This should be changed in order to invalidate existing + * caches. + */ + function RelayCompilerCache(name, cacheBreaker) { + (0, _defineProperty2["default"])(this, "_dir", null); + this._name = name; + this._cacheBreaker = cacheBreaker; + } + + var _proto = RelayCompilerCache.prototype; + + _proto._getFile = function _getFile(key) { + if (this._dir == null) { + // Include username in the cache dir to avoid issues with directories being + // owned by a different user. + var username = os.userInfo().username; + var cacheID = crypto.createHash('md5').update(this._cacheBreaker).update(username).digest('hex'); + var dir = path.join(os.tmpdir(), "".concat(this._name, "-").concat(cacheID)); + + if (!fs.existsSync(dir)) { + try { + fs.mkdirSync(dir); + } catch (error) { + if (error.code !== 'EEXIST') { + throw error; + } + } + } + + this._dir = dir; + } + + return path.join(this._dir, key); + }; + + _proto.getOrCompute = function getOrCompute(key, compute) { + var _this = this; + + return Profiler.run('RelayCompilerCache.getOrCompute', function () { + var cacheFile = _this._getFile(key); + + if (fs.existsSync(cacheFile)) { + try { + return JSON.parse(fs.readFileSync(cacheFile, 'utf8')); + } catch (_unused) {// ignore + } + } + + var value = compute(); + + try { + // $FlowFixMe(>=0.95.0) JSON.stringify can return undefined + fs.writeFileSync(cacheFile, JSON.stringify(value), 'utf8'); + } catch (_unused2) {// ignore + } + + return value; + }); + }; + + return RelayCompilerCache; +}(); + +module.exports = RelayCompilerCache; + +/***/ }), +/* 109 */ +/***/ (function(module, exports) { + +module.exports = require("os"); + +/***/ }), +/* 110 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var path = __webpack_require__(14); + +function getModuleName(filePath) { + // index.js -> index + // index.js.flow -> index.js + var filename = path.basename(filePath, path.extname(filePath)); // index.js -> index (when extension has multiple segments) + + filename = filename.replace(/(?:\.\w+)+/, ''); // /path/to/button/index.js -> button + + var moduleName = filename === 'index' ? path.basename(path.dirname(filePath)) : filename; // Example.ios -> Example + // Example.product.android -> Example + + moduleName = moduleName.replace(/(?:\.\w+)+/, ''); // foo-bar -> fooBar + // Relay compatibility mode splits on _, so we can't use that here. + + moduleName = moduleName.replace(/[^a-zA-Z0-9]+(\w?)/g, function (match, next) { + return next.toUpperCase(); + }); + return moduleName; +} + +module.exports = getModuleName; + +/***/ }), +/* 111 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _asyncToGenerator = __webpack_require__(16); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var ASTConvert = __webpack_require__(112); + +var CodegenDirectory = __webpack_require__(38); + +var CompilerContext = __webpack_require__(3); + +var Profiler = __webpack_require__(10); + +var RelayParser = __webpack_require__(41); + +var RelayValidator = __webpack_require__(40); + +var SchemaUtils = __webpack_require__(8); + +var compileRelayArtifacts = __webpack_require__(116); + +var crypto = __webpack_require__(20); + +var graphql = __webpack_require__(1); + +var invariant = __webpack_require__(4); + +var nullthrows = __webpack_require__(30); + +var path = __webpack_require__(14); + +var writeRelayGeneratedFile = __webpack_require__(121); + +var _require = __webpack_require__(124), + getReaderSourceDefinitionName = _require.getReaderSourceDefinitionName; + +var _require2 = __webpack_require__(21), + ImmutableMap = _require2.Map; + +var isExecutableDefinitionAST = SchemaUtils.isExecutableDefinitionAST; + +function compileAll(_ref) { + var baseDir = _ref.baseDir, + baseDocuments = _ref.baseDocuments, + baseSchema = _ref.baseSchema, + compilerTransforms = _ref.compilerTransforms, + documents = _ref.documents, + extraValidationRules = _ref.extraValidationRules, + reporter = _ref.reporter, + schemaExtensions = _ref.schemaExtensions, + typeGenerator = _ref.typeGenerator; + // Can't convert to IR unless the schema already has Relay-local extensions + var transformedSchema = ASTConvert.transformASTSchema(baseSchema, schemaExtensions); + var extendedSchema = ASTConvert.extendASTSchema(transformedSchema, [].concat((0, _toConsumableArray2["default"])(baseDocuments), (0, _toConsumableArray2["default"])(documents))); // Verify using local and global rules, can run global verifications here + // because all files are processed together + + var validationRules = [].concat((0, _toConsumableArray2["default"])(RelayValidator.LOCAL_RULES), (0, _toConsumableArray2["default"])(RelayValidator.GLOBAL_RULES)); + + if (extraValidationRules) { + validationRules = [].concat((0, _toConsumableArray2["default"])(validationRules), (0, _toConsumableArray2["default"])(extraValidationRules.LOCAL_RULES || []), (0, _toConsumableArray2["default"])(extraValidationRules.GLOBAL_RULES || [])); + } + + var definitions = ASTConvert.convertASTDocumentsWithBase(extendedSchema, baseDocuments, documents, validationRules, RelayParser.transform); + var compilerContext = new CompilerContext(baseSchema, extendedSchema).addAll(definitions); + var transformedTypeContext = compilerContext.applyTransforms(typeGenerator.transforms, reporter); + var transformedQueryContext = compilerContext.applyTransforms([].concat((0, _toConsumableArray2["default"])(compilerTransforms.commonTransforms), (0, _toConsumableArray2["default"])(compilerTransforms.queryTransforms)), reporter); + var artifacts = compileRelayArtifacts(compilerContext, compilerTransforms, reporter); + return { + artifacts: artifacts, + definitions: definitions, + transformedQueryContext: transformedQueryContext, + transformedTypeContext: transformedTypeContext + }; +} + +function writeAll(_ref2) { + var writerConfig = _ref2.config, + onlyValidate = _ref2.onlyValidate, + baseDocuments = _ref2.baseDocuments, + documents = _ref2.documents, + baseSchema = _ref2.schema, + reporter = _ref2.reporter, + sourceControl = _ref2.sourceControl; + return Profiler.asyncContext('RelayFileWriter.writeAll', + /*#__PURE__*/ + _asyncToGenerator(function* () { + var _compileAll = compileAll({ + baseDir: writerConfig.baseDir, + baseDocuments: baseDocuments.valueSeq().toArray(), + baseSchema: baseSchema, + compilerTransforms: writerConfig.compilerTransforms, + documents: documents.valueSeq().toArray(), + extraValidationRules: writerConfig.validationRules, + reporter: reporter, + schemaExtensions: writerConfig.schemaExtensions, + typeGenerator: writerConfig.typeGenerator + }), + artifactsWithBase = _compileAll.artifacts, + definitions = _compileAll.definitions, + transformedTypeContext = _compileAll.transformedTypeContext, + transformedQueryContext = _compileAll.transformedQueryContext; // Build a context from all the documents + + + var baseDefinitionNames = new Set(); + baseDocuments.forEach(function (doc) { + doc.definitions.forEach(function (def) { + if (isExecutableDefinitionAST(def) && def.name) { + baseDefinitionNames.add(def.name.value); + } + }); + }); // remove nodes that are present in the base or that derive from nodes + // in the base + + var artifacts = artifactsWithBase.filter(function (_ref3) { + var _definition = _ref3[0], + node = _ref3[1]; + var sourceName = getReaderSourceDefinitionName(node); + return !baseDefinitionNames.has(sourceName); + }); + var artifactMap = new Map(artifacts.map(function (_ref4) { + var _definition = _ref4[0], + node = _ref4[1]; + return [node.kind === 'Request' ? node.params.name : node.name, node]; + })); + var existingFragmentNames = new Set(definitions.map(function (definition) { + return definition.name; + })); + var definitionsMeta = new Map(); + + var getDefinitionMeta = function getDefinitionMeta(definitionName) { + var artifact = nullthrows(artifactMap.get(definitionName)); + var sourceName = getReaderSourceDefinitionName(artifact); + var definitionMeta = definitionsMeta.get(sourceName); + !definitionMeta ? true ? invariant(false, 'RelayFileWriter: Could not determine source for definition: `%s`.', definitionName) : undefined : void 0; + return definitionMeta; + }; + + documents.forEach(function (doc, filePath) { + doc.definitions.forEach(function (def) { + if (def.name) { + definitionsMeta.set(def.name.value, { + dir: path.join(writerConfig.baseDir, path.dirname(filePath)), + ast: def + }); + } + }); + }); // TODO(T22651734): improve this to correctly account for fragments that + // have generated flow types. + + baseDefinitionNames.forEach(function (baseDefinitionName) { + existingFragmentNames["delete"](baseDefinitionName); + }); + var allOutputDirectories = new Map(); + + var addCodegenDir = function addCodegenDir(dirPath) { + var codegenDir = new CodegenDirectory(dirPath, { + onlyValidate: onlyValidate + }); + allOutputDirectories.set(dirPath, codegenDir); + return codegenDir; + }; + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = (writerConfig.generatedDirectories || [])[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var existingDirectory = _step.value; + addCodegenDir(existingDirectory); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + var configOutputDirectory; + + if (writerConfig.outputDir) { + configOutputDirectory = addCodegenDir(writerConfig.outputDir); + } + + var getGeneratedDirectory = function getGeneratedDirectory(definitionName) { + if (configOutputDirectory) { + return configOutputDirectory; + } + + var generatedPath = path.join(getDefinitionMeta(definitionName).dir, '__generated__'); + var cachedDir = allOutputDirectories.get(generatedPath); + + if (!cachedDir) { + cachedDir = addCodegenDir(generatedPath); + } + + return cachedDir; + }; + + var formatModule = Profiler.instrument(writerConfig.formatModule, 'RelayFileWriter:formatModule'); + var persistQuery = writerConfig.persistQuery ? Profiler.instrumentWait(writerConfig.persistQuery, 'RelayFileWriter:persistQuery') : null; + + try { + yield Promise.all(artifacts.map( + /*#__PURE__*/ + function () { + var _ref7 = _asyncToGenerator(function* (_ref5) { + var _writerConfig$repersi; + + var definition = _ref5[0], + node = _ref5[1]; + var nodeName = node.kind === 'Request' ? node.params.name : node.name; + + if (baseDefinitionNames.has(nodeName)) { + // don't add definitions that were part of base context + return; + } + + var typeNode = transformedTypeContext.get(nodeName); + var typeText = typeNode ? + /* $FlowFixMe(>=0.98.0 site=react_native_fb,oss) This comment + * suppresses an error found when Flow v0.98 was deployed. To see + * the error delete this comment and run Flow. */ + writerConfig.typeGenerator.generate(typeNode, { + customScalars: writerConfig.customScalars, + enumsHasteModule: writerConfig.enumsHasteModule, + existingFragmentNames: existingFragmentNames, + optionalInputFields: writerConfig.optionalInputFieldsForFlow, + useHaste: writerConfig.useHaste, + useSingleArtifactDirectory: !!writerConfig.outputDir, + noFutureProofEnums: writerConfig.noFutureProofEnums + }) : ''; + var sourceHash = Profiler.run('hashGraphQL', function () { + return md5(graphql.print(getDefinitionMeta(nodeName).ast)); + }); + yield writeRelayGeneratedFile(getGeneratedDirectory(nodeName), definition, node, formatModule, typeText, persistQuery, writerConfig.platform, sourceHash, writerConfig.extension, writerConfig.printModuleDependency, (_writerConfig$repersi = writerConfig.repersist) !== null && _writerConfig$repersi !== void 0 ? _writerConfig$repersi : false); + }); + + return function (_x) { + return _ref7.apply(this, arguments); + }; + }())); + var generateExtraFiles = writerConfig.generateExtraFiles; + + if (generateExtraFiles) { + Profiler.run('RelayFileWriter:generateExtraFiles', function () { + var configDirectory = writerConfig.outputDir; + generateExtraFiles(function (dir) { + var outputDirectory = dir || configDirectory; + !outputDirectory ? true ? invariant(false, 'RelayFileWriter: cannot generate extra files without specifying ' + 'an outputDir in the config or passing it in.') : undefined : void 0; + var outputDir = allOutputDirectories.get(outputDirectory); + + if (!outputDir) { + outputDir = addCodegenDir(outputDirectory); + } + + return outputDir; + }, transformedQueryContext, getGeneratedDirectory); + }); + } // clean output directories + + + if (writerConfig.experimental_noDeleteExtraFiles !== true) { + allOutputDirectories.forEach(function (dir) { + dir.deleteExtraFiles(new RegExp(/([a-zA-Z0-9\s_\\.\-\(\):])+(.bs.js)/g)); + }); + } + + if (sourceControl && !onlyValidate) { + yield CodegenDirectory.sourceControlAddRemove(sourceControl, Array.from(allOutputDirectories.values())); + } + } catch (error) { + var details; + + try { + details = JSON.parse(error.message); + } catch (_) {} // eslint-disable-line lint/no-unused-catch-bindings + + + if (details && details.name === 'GraphQL2Exception' && details.message) { + throw new Error('GraphQL error writing modules:\n' + details.message); + } + + throw new Error('Error writing modules:\n' + String(error.stack || error)); + } + + return allOutputDirectories; + })); +} + +function md5(x) { + return crypto.createHash('md5').update(x, 'utf8').digest('hex'); +} + +module.exports = { + writeAll: writeAll +}; + +/***/ }), +/* 112 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var Profiler = __webpack_require__(10); + +var RelayValidator = __webpack_require__(40); + +var _require = __webpack_require__(8), + isExecutableDefinitionAST = _require.isExecutableDefinitionAST, + isSchemaDefinitionAST = _require.isSchemaDefinitionAST; + +var _require2 = __webpack_require__(1), + extendSchema = _require2.extendSchema, + parse = _require2.parse, + print = _require2.print, + visit = _require2.visit; + +function convertASTDocuments(schema, documents, validationRules, transform) { + return Profiler.run('ASTConvert.convertASTDocuments', function () { + var definitions = definitionsFromDocuments(documents); + var astDefinitions = []; + documents.forEach(function (doc) { + doc.definitions.forEach(function (definition) { + if (isExecutableDefinitionAST(definition)) { + astDefinitions.push(definition); + } + }); + }); + return convertASTDefinitions(schema, definitions, validationRules, transform); + }); +} + +function convertASTDocumentsWithBase(schema, baseDocuments, documents, validationRules, transform) { + return Profiler.run('ASTConvert.convertASTDocumentsWithBase', function () { + var baseDefinitions = definitionsFromDocuments(baseDocuments); + var definitions = definitionsFromDocuments(documents); + var requiredDefinitions = new Map(); + var baseMap = new Map(); + baseDefinitions.forEach(function (definition) { + if (isExecutableDefinitionAST(definition)) { + var definitionName = definition.name && definition.name.value; // If there's no name, no reason to put in the map + + if (definitionName) { + if (baseMap.has(definitionName)) { + throw new Error("Duplicate definition of '".concat(definitionName, "'.")); + } + + baseMap.set(definitionName, definition); + } + } + }); + var definitionsToVisit = []; + definitions.forEach(function (definition) { + if (isExecutableDefinitionAST(definition)) { + definitionsToVisit.push(definition); + } + }); + + while (definitionsToVisit.length > 0) { + var definition = definitionsToVisit.pop(); + var name = definition.name && definition.name.value; + + if (!name) { + continue; + } + + if (requiredDefinitions.has(name)) { + if (requiredDefinitions.get(name) !== definition) { + throw new Error("Duplicate definition of '".concat(name, "'.")); + } + + continue; + } + + requiredDefinitions.set(name, definition); + visit(definition, { + FragmentSpread: function FragmentSpread(spread) { + var baseDefinition = baseMap.get(spread.name.value); + + if (baseDefinition) { + // We only need to add those definitions not already included + // in definitions + definitionsToVisit.push(baseDefinition); + } + } + }); + } + + var definitionsToConvert = []; + requiredDefinitions.forEach(function (definition) { + return definitionsToConvert.push(definition); + }); + return convertASTDefinitions(schema, definitionsToConvert, validationRules, transform); + }); +} + +function convertASTDefinitions(schema, definitions, validationRules, transform) { + var operationDefinitions = []; + definitions.forEach(function (definition) { + if (isExecutableDefinitionAST(definition)) { + operationDefinitions.push(definition); + } + }); + var validationAST = { + kind: 'Document', + definitions: operationDefinitions + }; // Will throw an error if there are validation issues + + RelayValidator.validate(validationAST, schema, validationRules); + return transform(schema, operationDefinitions); +} + +function definitionsFromDocuments(documents) { + var definitions = []; + documents.forEach(function (doc) { + doc.definitions.forEach(function (definition) { + return definitions.push(definition); + }); + }); + return definitions; +} +/** + * Extends a GraphQLSchema with a list of schema extensions in string form. + */ + + +function transformASTSchema(schema, schemaExtensions) { + return Profiler.run('ASTConvert.transformASTSchema', function () { + if (schemaExtensions.length === 0) { + return schema; + } + + var extension = schemaExtensions.join('\n'); + return cachedExtend(schema, extension, function () { + return extendSchema(schema, parse(extension)); + }); + }); +} +/** + * Extends a GraphQLSchema with a list of schema extensions in AST form. + */ + + +function extendASTSchema(baseSchema, documents) { + return Profiler.run('ASTConvert.extendASTSchema', function () { + var schemaExtensions = []; + documents.forEach(function (doc) { + doc.definitions.forEach(function (definition) { + if (isSchemaDefinitionAST(definition)) { + schemaExtensions.push(definition); + } + }); + }); + + if (schemaExtensions.length === 0) { + return baseSchema; + } + + var key = schemaExtensions.map(print).join('\n'); + return cachedExtend(baseSchema, key, function () { + return extendSchema(baseSchema, { + kind: 'Document', + definitions: schemaExtensions + }, // TODO T24511737 figure out if this is dangerous + { + assumeValid: true + }); + }); + }); +} + +var extendedSchemas = new Map(); + +function cachedExtend(schema, key, compute) { + var cache = extendedSchemas.get(schema); + + if (!cache) { + cache = {}; + extendedSchemas.set(schema, cache); + } + + var extendedSchema = cache[key]; + + if (!extendedSchema) { + extendedSchema = compute(); + cache[key] = extendedSchema; + } + + return extendedSchema; +} + +module.exports = { + convertASTDocuments: convertASTDocuments, + convertASTDocumentsWithBase: convertASTDocumentsWithBase, + extendASTSchema: extendASTSchema, + transformASTSchema: transformASTSchema +}; + +/***/ }), +/* 113 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var nullthrows = function nullthrows(x) { + var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Got unexpected null or undefined'; + + if (x != null) { + return x; + } + + var error = new Error(message); + error.framesToPop = 1; // Skip nullthrows own stack frame. + + throw error; +}; + +module.exports = nullthrows; + +/***/ }), +/* 114 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var createUserError = function createUserError(format) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var index = 0; + var formatted = format.replace(/%s/g, function (match) { + return args[index++]; + }); + return new Error(formatted); +}; + +module.exports = { + createUserError: createUserError +}; + +/***/ }), +/* 115 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _require = __webpack_require__(8), + getRawType = _require.getRawType; + +var _require2 = __webpack_require__(9), + createCompilerError = _require2.createCompilerError; + +var _require3 = __webpack_require__(1), + assertAbstractType = _require3.assertAbstractType, + GraphQLInterfaceType = _require3.GraphQLInterfaceType, + GraphQLObjectType = _require3.GraphQLObjectType, + GraphQLUnionType = _require3.GraphQLUnionType, + isAbstractType = _require3.isAbstractType, + SchemaMetaFieldDef = _require3.SchemaMetaFieldDef, + TypeMetaFieldDef = _require3.TypeMetaFieldDef, + TypeNameMetaFieldDef = _require3.TypeNameMetaFieldDef; + +/** + * Find the definition of a field of the specified type using strict + * resolution rules per the GraphQL spec. + */ +function getFieldDefinitionStrict(schema, parentType, fieldName, fieldAST) { + var type = getRawType(parentType); + var isQueryType = type === schema.getQueryType(); + var hasTypeName = type instanceof GraphQLObjectType || type instanceof GraphQLInterfaceType || type instanceof GraphQLUnionType; + var schemaFieldDef; + + if (isQueryType && fieldName === SchemaMetaFieldDef.name) { + schemaFieldDef = SchemaMetaFieldDef; + } else if (isQueryType && fieldName === TypeMetaFieldDef.name) { + schemaFieldDef = TypeMetaFieldDef; + } else if (hasTypeName && fieldName === TypeNameMetaFieldDef.name) { + schemaFieldDef = TypeNameMetaFieldDef; + } else if (type instanceof GraphQLInterfaceType || type instanceof GraphQLObjectType) { + schemaFieldDef = type.getFields()[fieldName]; + } + + return schemaFieldDef; +} +/** + * Find the definition of a field of the specified type, first trying + * the standard spec-compliant resolution process and falling back + * to legacy mode that supports fat interfaces. + */ + + +function getFieldDefinitionLegacy(schema, parentType, fieldName, fieldAST) { + var schemaFieldDef = getFieldDefinitionStrict(schema, parentType, fieldName, fieldAST); + + if (!schemaFieldDef) { + var type = getRawType(parentType); + schemaFieldDef = getFieldDefinitionLegacyImpl(schema, type, fieldName, fieldAST); + } + + return schemaFieldDef || null; +} +/** + * @private + */ + + +function getFieldDefinitionLegacyImpl(schema, type, fieldName, fieldAST) { + if (isAbstractType(type) && fieldAST && fieldAST.directives && fieldAST.directives.some(function (directive) { + return getName(directive) === 'fixme_fat_interface'; + })) { + var possibleTypes = schema.getPossibleTypes(assertAbstractType(type)); + var schemaFieldDef; + + var _loop = function _loop(ii) { + var possibleField = possibleTypes[ii].getFields()[fieldName]; + + if (possibleField) { + // Fat interface fields can have differing arguments. Try to return + // a field with matching arguments, but still return a field if the + // arguments do not match. + schemaFieldDef = possibleField; + + if (fieldAST && fieldAST.arguments) { + var argumentsAllExist = fieldAST.arguments.every(function (argument) { + return possibleField.args.find(function (argDef) { + return argDef.name === getName(argument); + }); + }); + + if (argumentsAllExist) { + return "break"; + } + } + } + }; + + for (var ii = 0; ii < possibleTypes.length; ii++) { + var _ret = _loop(ii); + + if (_ret === "break") break; + } + + return schemaFieldDef; + } +} +/** + * @private + */ + + +function getName(ast) { + var name = ast.name ? ast.name.value : null; + + if (typeof name !== 'string') { + throw createCompilerError("Expected ast node to have a 'name'.", null, [ast]); + } + + return name; +} + +module.exports = { + getFieldDefinitionLegacy: getFieldDefinitionLegacy, + getFieldDefinitionStrict: getFieldDefinitionStrict +}; + +/***/ }), +/* 116 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var Printer = __webpack_require__(44); + +var Profiler = __webpack_require__(10); + +var RelayCodeGenerator = __webpack_require__(117); + +var filterContextForNode = __webpack_require__(120); + +/** + * Transforms the provided compiler context + * + * compileRelayArtifacts generates artifacts for Relay's runtime as a result of + * applying a series of transforms. Each kind of artifact is dependent on + * transforms being applied in the following order: + * + * - Fragment Readers: commonTransforms, fragmentTransforms + * - Operation Writers: commonTransforms, queryTransforms, codegenTransforms + * - GraphQL Text: commonTransforms, queryTransforms, printTransforms + * + * The order of the transforms applied for each artifact below is important. + * CompilerContext will memoize applying each transform, so while + * `commonTransforms` appears in each artifacts' application, it will not result + * in repeated work as long as the order remains consistent across each context. + */ +function compileRelayArtifacts(context, transforms, reporter) { + return Profiler.run('GraphQLCompiler.compile', function () { + // The fragment is used for reading data from the normalized store. + var fragmentContext = context.applyTransforms([].concat((0, _toConsumableArray2["default"])(transforms.commonTransforms), (0, _toConsumableArray2["default"])(transforms.fragmentTransforms)), reporter); // The unflattened query is used for printing, since flattening creates an + // invalid query. + + var printContext = context.applyTransforms([].concat((0, _toConsumableArray2["default"])(transforms.commonTransforms), (0, _toConsumableArray2["default"])(transforms.queryTransforms), (0, _toConsumableArray2["default"])(transforms.printTransforms)), reporter); // The flattened query is used for codegen in order to reduce the number of + // duplicate fields that must be processed during response normalization. + + var codeGenContext = context.applyTransforms([].concat((0, _toConsumableArray2["default"])(transforms.commonTransforms), (0, _toConsumableArray2["default"])(transforms.queryTransforms), (0, _toConsumableArray2["default"])(transforms.codegenTransforms)), reporter); + var results = []; // Add everything from codeGenContext, these are the operations as well as + // SplitOperations from @match. + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = codeGenContext.documents()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var node = _step.value; + + if (node.kind === 'Root') { + var fragment = fragmentContext.getRoot(node.name); + var request = { + kind: 'Request', + fragment: { + kind: 'Fragment', + argumentDefinitions: fragment.argumentDefinitions, + directives: fragment.directives, + loc: { + kind: 'Derived', + source: node.loc + }, + metadata: null, + name: fragment.name, + selections: fragment.selections, + type: fragment.type + }, + id: null, + loc: node.loc, + metadata: node.metadata || {}, + name: fragment.name, + root: node, + text: printOperation(printContext, fragment.name) + }; + results.push([request, RelayCodeGenerator.generate(request)]); + } else { + results.push([node, RelayCodeGenerator.generate(node)]); + } + } // Add all the Fragments from the fragmentContext for the reader ASTs. + + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = fragmentContext.documents()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var _node = _step2.value; + + if (_node.kind === 'Fragment') { + results.push([_node, RelayCodeGenerator.generate(_node)]); + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + return results; + }); +} + +function printOperation(printContext, name) { + var printableRoot = printContext.getRoot(name); + return filterContextForNode(printableRoot, printContext).documents().map(Printer.print).join('\n'); +} + +module.exports = compileRelayArtifacts; + +/***/ }), +/* 117 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _require = __webpack_require__(9), + createCompilerError = _require.createCompilerError; + +var NormalizationCodeGenerator = __webpack_require__(118); + +var ReaderCodeGenerator = __webpack_require__(119); +/** + * @public + * + * Converts a GraphQLIR node into a plain JS object representation that can be + * used at runtime. + */ + + +function generate(node) { + switch (node.kind) { + case 'Fragment': + return ReaderCodeGenerator.generate(node); + + case 'Request': + return { + kind: 'Request', + fragment: ReaderCodeGenerator.generate(node.fragment), + operation: NormalizationCodeGenerator.generate(node.root), + params: { + operationKind: node.root.operation, + name: node.name, + id: node.id, + text: node.text, + metadata: node.metadata + } + }; + + case 'SplitOperation': + return NormalizationCodeGenerator.generate(node); + } + + throw createCompilerError("RelayCodeGenerator: Unknown AST kind '".concat(node.kind, "'."), [node.loc]); +} + +module.exports = { + generate: generate +}; + +/***/ }), +/* 118 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var SchemaUtils = __webpack_require__(8); + +var _require = __webpack_require__(9), + createCompilerError = _require.createCompilerError, + createUserError = _require.createUserError; + +var _require2 = __webpack_require__(1), + GraphQLList = _require2.GraphQLList; + +var _require3 = __webpack_require__(19), + getStorageKey = _require3.getStorageKey, + stableCopy = _require3.stableCopy; + +var getRawType = SchemaUtils.getRawType, + isAbstractType = SchemaUtils.isAbstractType, + getNullableType = SchemaUtils.getNullableType; +/** + * @public + * + * Converts a GraphQLIR node into a plain JS object representation that can be + * used at runtime. + */ + +function generate(node) { + switch (node.kind) { + case 'Root': + return generateRoot(node); + + case 'SplitOperation': + return generateSplitOperation(node); + + default: + throw createCompilerError("NormalizationCodeGenerator: Unsupported AST kind '".concat(node.kind, "'."), [node.loc]); + } +} + +function generateRoot(node) { + return { + kind: 'Operation', + name: node.name, + argumentDefinitions: generateArgumentDefinitions(node.argumentDefinitions), + selections: generateSelections(node.selections) + }; +} + +function generateSplitOperation(node, key) { + return { + kind: 'SplitOperation', + name: node.name, + metadata: node.metadata, + selections: generateSelections(node.selections) + }; +} + +function generateSelections(selections) { + var normalizationSelections = []; + selections.forEach(function (selection) { + switch (selection.kind) { + case 'FragmentSpread': + // TODO(T37646905) enable this invariant after splitting the + // RelayCodeGenerator-test and running the InlineFragmentsTransform on + // normalization ASTs. + break; + + case 'Condition': + normalizationSelections.push(generateCondition(selection)); + break; + + case 'ClientExtension': + normalizationSelections.push(generateClientExtension(selection)); + break; + + case 'ScalarField': + normalizationSelections.push.apply(normalizationSelections, (0, _toConsumableArray2["default"])(generateScalarField(selection))); + break; + + case 'ModuleImport': + normalizationSelections.push(generateModuleImport(selection)); + break; + + case 'InlineFragment': + normalizationSelections.push(generateInlineFragment(selection)); + break; + + case 'LinkedField': + normalizationSelections.push.apply(normalizationSelections, (0, _toConsumableArray2["default"])(generateLinkedField(selection))); + break; + + case 'Defer': + normalizationSelections.push(generateDefer(selection)); + break; + + case 'Stream': + normalizationSelections.push(generateStream(selection)); + break; + + default: + selection; + throw new Error(); + } + }); + return normalizationSelections; +} + +function generateArgumentDefinitions(nodes) { + return nodes.map(function (node) { + return { + kind: 'LocalArgument', + name: node.name, + type: node.type.toString(), + defaultValue: node.defaultValue + }; + }); +} + +function generateClientExtension(node) { + return { + kind: 'ClientExtension', + selections: generateSelections(node.selections) + }; +} + +function generateCondition(node, key) { + if (node.condition.kind !== 'Variable') { + throw createCompilerError("NormalizationCodeGenerator: Expected 'Condition' with static " + 'value to be pruned or inlined', [node.condition.loc]); + } + + return { + kind: 'Condition', + passingValue: node.passingValue, + condition: node.condition.variableName, + selections: generateSelections(node.selections) + }; +} + +function generateDefer(node, key) { + if (!(node["if"] == null || node["if"].kind === 'Variable' || node["if"].kind === 'Literal' && node["if"].value === true)) { + var _ref, _node$if; + + throw createCompilerError('NormalizationCodeGenerator: Expected @defer `if` condition to be ' + 'a variable, unspecified, or the literal `true`.', [(_ref = (_node$if = node["if"]) === null || _node$if === void 0 ? void 0 : _node$if.loc) !== null && _ref !== void 0 ? _ref : node.loc]); + } + + return { + "if": node["if"] != null && node["if"].kind === 'Variable' ? node["if"].variableName : null, + kind: 'Defer', + label: node.label, + metadata: node.metadata, + selections: generateSelections(node.selections) + }; +} + +function generateInlineFragment(node) { + return { + kind: 'InlineFragment', + type: node.typeCondition.toString(), + selections: generateSelections(node.selections) + }; +} + +function generateLinkedField(node) { + // Note: it is important that the arguments of this field be sorted to + // ensure stable generation of storage keys for equivalent arguments + // which may have originally appeared in different orders across an app. + var handles = node.handles && node.handles.map(function (handle) { + var handleNode = { + kind: 'LinkedHandle', + alias: node.alias, + name: node.name, + args: generateArgs(node.args), + handle: handle.name, + key: handle.key, + filters: handle.filters + }; // T45504512: new connection model + // NOTE: this intentionally adds a dynamic key in order to avoid + // triggering updates to existing queries that do not use dynamic + // keys. + + if (handle.dynamicKey != null) { + var dynamicKeyArgName = '__dynamicKey'; + handleNode = (0, _objectSpread2["default"])({}, handleNode, { + dynamicKey: { + kind: 'Variable', + name: dynamicKeyArgName, + variableName: handle.dynamicKey.variableName + } + }); + } + + return handleNode; + }) || []; + var type = getRawType(node.type); + var field = { + kind: 'LinkedField', + alias: node.alias, + name: node.name, + storageKey: null, + args: generateArgs(node.args), + concreteType: !isAbstractType(type) ? type.toString() : null, + plural: isPlural(node.type), + selections: generateSelections(node.selections) + }; // Precompute storageKey if possible + + var storageKey = getStaticStorageKey(field, node.metadata); + + if (storageKey) { + field = (0, _objectSpread2["default"])({}, field, { + storageKey: storageKey + }); + } + + return [field].concat(handles); +} + +function generateModuleImport(node, key) { + var fragmentName = node.name; + var regExpMatch = fragmentName.match(/^([a-zA-Z][a-zA-Z0-9]*)(?:_([a-zA-Z][_a-zA-Z0-9]*))?$/); + + if (!regExpMatch) { + throw createCompilerError('NormalizationCodeGenerator: @module fragments should be named ' + "'FragmentName_propName', got '".concat(fragmentName, "'."), [node.loc]); + } + + var fragmentPropName = regExpMatch[2]; + + if (typeof fragmentPropName !== 'string') { + throw createCompilerError('NormalizationCodeGenerator: @module fragments should be named ' + "'FragmentName_propName', got '".concat(fragmentName, "'."), [node.loc]); + } + + return { + kind: 'ModuleImport', + documentName: node.documentName, + fragmentName: fragmentName, + fragmentPropName: fragmentPropName + }; +} + +function generateScalarField(node) { + var _node$metadata; + + if ((_node$metadata = node.metadata) === null || _node$metadata === void 0 ? void 0 : _node$metadata.skipNormalizationNode) { + return []; + } // Note: it is important that the arguments of this field be sorted to + // ensure stable generation of storage keys for equivalent arguments + // which may have originally appeared in different orders across an app. + + + var handles = node.handles && node.handles.map(function (handle) { + if (handle.dynamicKey != null) { + throw createUserError('Dynamic key values are not supported on scalar fields.', [handle.dynamicKey.loc]); + } + + return { + kind: 'ScalarHandle', + alias: node.alias, + name: node.name, + args: generateArgs(node.args), + handle: handle.name, + key: handle.key, + filters: handle.filters + }; + }) || []; + var field = { + kind: 'ScalarField', + alias: node.alias, + name: node.name, + args: generateArgs(node.args), + storageKey: null + }; // Precompute storageKey if possible + + var storageKey = getStaticStorageKey(field, node.metadata); + + if (storageKey) { + field = (0, _objectSpread2["default"])({}, field, { + storageKey: storageKey + }); + } + + return [field].concat(handles); +} + +function generateStream(node, key) { + if (!(node["if"] == null || node["if"].kind === 'Variable' || node["if"].kind === 'Literal' && node["if"].value === true)) { + var _ref2, _node$if2; + + throw createCompilerError('NormalizationCodeGenerator: Expected @stream `if` condition to be ' + 'a variable, unspecified, or the literal `true`.', [(_ref2 = (_node$if2 = node["if"]) === null || _node$if2 === void 0 ? void 0 : _node$if2.loc) !== null && _ref2 !== void 0 ? _ref2 : node.loc]); + } + + return { + "if": node["if"] != null && node["if"].kind === 'Variable' ? node["if"].variableName : null, + kind: 'Stream', + label: node.label, + metadata: node.metadata, + selections: generateSelections(node.selections) + }; +} + +function generateArgument(node) { + var value = node.value; + + switch (value.kind) { + case 'Variable': + return { + kind: 'Variable', + name: node.name, + variableName: value.variableName + }; + + case 'Literal': + return value.value === null ? null : { + kind: 'Literal', + name: node.name, + value: stableCopy(value.value) + }; + + default: + throw createUserError('NormalizationCodeGenerator: Complex argument values (Lists or ' + 'InputObjects with nested variables) are not supported.', [node.value.loc]); + } +} + +function isPlural(type) { + return getNullableType(type) instanceof GraphQLList; +} + +function generateArgs(args) { + var concreteArguments = []; + args.forEach(function (arg) { + var concreteArgument = generateArgument(arg); + + if (concreteArgument !== null) { + concreteArguments.push(concreteArgument); + } + }); + return concreteArguments.length === 0 ? null : concreteArguments.sort(nameComparator); +} + +function nameComparator(a, b) { + return a.name < b.name ? -1 : a.name > b.name ? 1 : 0; +} +/** + * Pre-computes storage key if possible and advantageous. Storage keys are + * generated for fields with supplied arguments that are all statically known + * (ie. literals, no variables) at build time. + */ + + +function getStaticStorageKey(field, metadata) { + var metadataStorageKey = metadata === null || metadata === void 0 ? void 0 : metadata.storageKey; + + if (typeof metadataStorageKey === 'string') { + return metadataStorageKey; + } + + if (!field.args || field.args.length === 0 || field.args.some(function (arg) { + return arg.kind !== 'Literal'; + })) { + return null; + } + + return getStorageKey(field, {}); +} + +module.exports = { + generate: generate +}; + +/***/ }), +/* 119 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var CodeMarker = __webpack_require__(45); + +var SchemaUtils = __webpack_require__(8); + +var _require = __webpack_require__(9), + createCompilerError = _require.createCompilerError, + createUserError = _require.createUserError; + +var _require2 = __webpack_require__(1), + GraphQLList = _require2.GraphQLList; + +var _require3 = __webpack_require__(19), + getStorageKey = _require3.getStorageKey, + stableCopy = _require3.stableCopy; + +var getRawType = SchemaUtils.getRawType, + isAbstractType = SchemaUtils.isAbstractType, + getNullableType = SchemaUtils.getNullableType; +/** + * @public + * + * Converts a GraphQLIR node into a plain JS object representation that can be + * used at runtime. + */ + +function generate(node) { + if (node == null) { + return node; + } + + var metadata = null; + + if (node.metadata != null) { + var _node$metadata = node.metadata, + mask = _node$metadata.mask, + plural = _node$metadata.plural, + connection = _node$metadata.connection, + refetch = _node$metadata.refetch; + + if (Array.isArray(connection)) { + var _metadata; + + metadata = (_metadata = metadata) !== null && _metadata !== void 0 ? _metadata : {}; + metadata.connection = connection; + } + + if (typeof mask === 'boolean') { + var _metadata2; + + metadata = (_metadata2 = metadata) !== null && _metadata2 !== void 0 ? _metadata2 : {}; + metadata.mask = mask; + } + + if (typeof plural === 'boolean') { + var _metadata3; + + metadata = (_metadata3 = metadata) !== null && _metadata3 !== void 0 ? _metadata3 : {}; + metadata.plural = plural; + } + + if (typeof refetch === 'object') { + var _metadata4; + + metadata = (_metadata4 = metadata) !== null && _metadata4 !== void 0 ? _metadata4 : {}; + metadata.refetch = { + // $FlowFixMe + connection: refetch.connection, + // $FlowFixMe + operation: CodeMarker.moduleDependency(refetch.operation + '_graphql'), + // $FlowFixMe + fragmentPathInResult: refetch.fragmentPathInResult + }; + } + } + + return { + kind: 'Fragment', + name: node.name, + type: node.type.toString(), + // $FlowFixMe + metadata: metadata, + argumentDefinitions: generateArgumentDefinitions(node.argumentDefinitions), + selections: generateSelections(node.selections) + }; +} + +function generateSelections(selections) { + return selections.map(function (selection) { + switch (selection.kind) { + case 'ClientExtension': + return generateClientExtension(selection); + + case 'FragmentSpread': + return generateFragmentSpread(selection); + + case 'Condition': + return generateCondition(selection); + + case 'ScalarField': + return generateScalarField(selection); + + case 'ModuleImport': + return generateModuleImport(selection); + + case 'InlineFragment': + return generateInlineFragment(selection); + + case 'LinkedField': + return generateLinkedField(selection); + + case 'Defer': + case 'Stream': + throw createCompilerError("Unexpected ".concat(selection.kind, " IR node in ReaderCodeGenerator."), [selection.loc]); + + default: + selection; + throw new Error(); + } + }).filter(Boolean); +} + +function generateArgumentDefinitions(nodes) { + return nodes.map(function (node) { + switch (node.kind) { + case 'LocalArgumentDefinition': + return { + kind: 'LocalArgument', + name: node.name, + type: node.type.toString(), + defaultValue: node.defaultValue + }; + + case 'RootArgumentDefinition': + return { + kind: 'RootArgument', + name: node.name, + type: node.type ? node.type.toString() : null + }; + + default: + node; + throw new Error(); + } + }); +} + +function generateClientExtension(node) { + return { + kind: 'ClientExtension', + selections: generateSelections(node.selections) + }; +} + +function generateCondition(node) { + if (node.condition.kind !== 'Variable') { + throw createCompilerError("ReaderCodeGenerator: Expected 'Condition' with static value to be " + 'pruned or inlined', [node.condition.loc]); + } + + return { + kind: 'Condition', + passingValue: node.passingValue, + condition: node.condition.variableName, + selections: generateSelections(node.selections) + }; +} + +function generateFragmentSpread(node) { + return { + kind: 'FragmentSpread', + name: node.name, + args: generateArgs(node.args) + }; +} + +function generateInlineFragment(node) { + return { + kind: 'InlineFragment', + type: node.typeCondition.toString(), + selections: generateSelections(node.selections) + }; +} + +function generateLinkedField(node) { + // Note: it is important that the arguments of this field be sorted to + // ensure stable generation of storage keys for equivalent arguments + // which may have originally appeared in different orders across an app. + // TODO(T37646905) enable this invariant after splitting the + // RelayCodeGenerator-test and running the RelayFieldHandleTransform on + // Reader ASTs. + // + // invariant( + // node.handles == null, + // 'ReaderCodeGenerator: unexpected handles', + // ); + var type = getRawType(node.type); + var field = { + kind: 'LinkedField', + alias: node.alias, + name: node.name, + storageKey: null, + args: generateArgs(node.args), + concreteType: !isAbstractType(type) ? type.toString() : null, + plural: isPlural(node.type), + selections: generateSelections(node.selections) + }; // Precompute storageKey if possible + + var storageKey = getStaticStorageKey(field, node.metadata); + + if (storageKey) { + field = (0, _objectSpread2["default"])({}, field, { + storageKey: storageKey + }); + } + + return field; +} + +function generateModuleImport(node) { + var fragmentName = node.name; + var regExpMatch = fragmentName.match(/^([a-zA-Z][a-zA-Z0-9]*)(?:_([a-zA-Z][_a-zA-Z0-9]*))?$/); + + if (!regExpMatch) { + throw createCompilerError('ReaderCodeGenerator: @match fragments should be named ' + "'FragmentName_propName', got '".concat(fragmentName, "'."), [node.loc]); + } + + var fragmentPropName = regExpMatch[2]; + + if (typeof fragmentPropName !== 'string') { + throw createCompilerError('ReaderCodeGenerator: @module fragments should be named ' + "'FragmentName_propName', got '".concat(fragmentName, "'."), [node.loc]); + } + + return { + kind: 'ModuleImport', + documentName: node.documentName, + fragmentName: fragmentName, + fragmentPropName: fragmentPropName + }; +} + +function generateScalarField(node) { + // Note: it is important that the arguments of this field be sorted to + // ensure stable generation of storage keys for equivalent arguments + // which may have originally appeared in different orders across an app. + // TODO(T37646905) enable this invariant after splitting the + // RelayCodeGenerator-test and running the RelayFieldHandleTransform on + // Reader ASTs. + // + // invariant( + // node.handles == null, + // 'ReaderCodeGenerator: unexpected handles', + // ); + var field = { + kind: 'ScalarField', + alias: node.alias, + name: node.name, + args: generateArgs(node.args), + storageKey: null + }; // Precompute storageKey if possible + + var storageKey = getStaticStorageKey(field, node.metadata); + + if (storageKey) { + field = (0, _objectSpread2["default"])({}, field, { + storageKey: storageKey + }); + } + + return field; +} + +function generateArgument(node) { + var value = node.value; + + switch (value.kind) { + case 'Variable': + return { + kind: 'Variable', + name: node.name, + variableName: value.variableName + }; + + case 'Literal': + return value.value === null ? null : { + kind: 'Literal', + name: node.name, + value: stableCopy(value.value) + }; + + default: + throw createUserError('ReaderCodeGenerator: Complex argument values (Lists or ' + 'InputObjects with nested variables) are not supported.', [node.value.loc]); + } +} + +function isPlural(type) { + return getNullableType(type) instanceof GraphQLList; +} + +function generateArgs(args) { + var concreteArguments = []; + args.forEach(function (arg) { + var concreteArgument = generateArgument(arg); + + if (concreteArgument !== null) { + concreteArguments.push(concreteArgument); + } + }); + return concreteArguments.length === 0 ? null : concreteArguments.sort(nameComparator); +} + +function nameComparator(a, b) { + return a.name < b.name ? -1 : a.name > b.name ? 1 : 0; +} +/** + * Pre-computes storage key if possible and advantageous. Storage keys are + * generated for fields with supplied arguments that are all statically known + * (ie. literals, no variables) at build time. + */ + + +function getStaticStorageKey(field, metadata) { + var metadataStorageKey = metadata === null || metadata === void 0 ? void 0 : metadata.storageKey; + + if (typeof metadataStorageKey === 'string') { + return metadataStorageKey; + } + + if (!field.args || field.args.length === 0 || field.args.some(function (arg) { + return arg.kind !== 'Literal'; + })) { + return null; + } + + return getStorageKey(field, {}); +} + +module.exports = { + generate: generate +}; + +/***/ }), +/* 120 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var GraphQLCompilerContext = __webpack_require__(3); + +var _require = __webpack_require__(24), + visit = _require.visit; + +/** + * Returns a GraphQLCompilerContext containing only the documents referenced + * by and including the provided node. + */ +function filterContextForNode(node, context) { + var queue = [node]; + var filteredContext = new GraphQLCompilerContext(context.serverSchema, context.clientSchema).add(node); + + var visitFragmentSpread = function visitFragmentSpread(fragmentSpread) { + var name = fragmentSpread.name; + + if (!filteredContext.get(name)) { + var fragment = context.getFragment(name); + filteredContext = filteredContext.add(fragment); + queue.push(fragment); + } + }; + + var visitorConfig = { + FragmentSpread: function FragmentSpread(fragmentSpread) { + visitFragmentSpread(fragmentSpread); + } + }; + + while (queue.length) { + visit(queue.pop(), visitorConfig); + } + + return filteredContext; +} + +module.exports = filterContextForNode; + +/***/ }), +/* 121 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _asyncToGenerator = __webpack_require__(16); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var CodeMarker = __webpack_require__(45); + +var Profiler = __webpack_require__(10); + +var crypto = __webpack_require__(20); + +var dedupeJSONStringify = __webpack_require__(122); + +var deepMergeAssignments = __webpack_require__(123); + +var invariant = __webpack_require__(4); + +var _require = __webpack_require__(19), + RelayConcreteNode = _require.RelayConcreteNode; + +function printRequireModuleDependency(moduleName) { + return "require('".concat(moduleName, "')"); +} + +function getConcreteType(node) { + switch (node.kind) { + case RelayConcreteNode.FRAGMENT: + return 'ReaderFragment'; + + case RelayConcreteNode.REQUEST: + return 'ConcreteRequest'; + + case RelayConcreteNode.SPLIT_OPERATION: + return 'NormalizationSplitOperation'; + + default: + node; + true ? true ? invariant(false, 'Unexpected GeneratedNode kind: `%s`.', node.kind) : undefined : undefined; + } +} + +function writeRelayGeneratedFile(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9) { + return _writeRelayGeneratedFile.apply(this, arguments); +} + +function _writeRelayGeneratedFile() { + _writeRelayGeneratedFile = _asyncToGenerator(function* (codegenDir, definition, _generatedNode, formatModule, typeText, _persistQuery, platform, sourceHash, extension) { + var printModuleDependency = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : printRequireModuleDependency; + var shouldRepersist = arguments.length > 10 ? arguments[10] : undefined; + var generatedNode = _generatedNode; // Copy to const so Flow can refine. + + var persistQuery = _persistQuery; + var moduleName = (generatedNode.kind === 'Request' ? generatedNode.params.name : generatedNode.name) + '_graphql'; + var platformName = platform != null && platform.length > 0 ? moduleName + '.' + platform : moduleName; + var filename = platformName + '.' + extension; + var typeName = getConcreteType(generatedNode); + var devOnlyProperties = {}; + var docText; + + if (generatedNode.kind === RelayConcreteNode.REQUEST) { + docText = generatedNode.params.text; + } + + var hash = null; + + if (generatedNode.kind === RelayConcreteNode.REQUEST) { + var oldHash = Profiler.run('RelayFileWriter:compareHash', function () { + var oldContent = codegenDir.read(filename); // Hash the concrete node including the query text. + + var hasher = crypto.createHash('md5'); + hasher.update('cache-breaker-9'); + hasher.update(JSON.stringify(generatedNode)); + hasher.update(sourceHash); + + if (typeText) { + hasher.update(typeText); + } + + if (persistQuery) { + hasher.update('persisted'); + } + + hash = hasher.digest('hex'); + return extractHash(oldContent); + }); + + if (!shouldRepersist && hash === oldHash) { + codegenDir.markUnchanged(filename); + return null; + } + + if (codegenDir.onlyValidate) { + codegenDir.markUpdated(filename); + return null; + } + + if (persistQuery) { + switch (generatedNode.kind) { + case RelayConcreteNode.REQUEST: + var _text = generatedNode.params.text; + !(_text != null) ? true ? invariant(false, 'writeRelayGeneratedFile: Expected `text` in order to persist query') : undefined : void 0; + devOnlyProperties.params = { + text: _text + }; + generatedNode = (0, _objectSpread2["default"])({}, generatedNode, { + params: { + operationKind: generatedNode.params.operationKind, + name: generatedNode.params.name, + id: yield persistQuery(_text), + text: null, + metadata: generatedNode.params.metadata + } + }); + break; + + case RelayConcreteNode.FRAGMENT: + // Do not persist fragments. + break; + + default: + generatedNode.kind; + } + } + } + + var devOnlyAssignments = deepMergeAssignments('(node/*: any*/)', devOnlyProperties); + var moduleText = formatModule({ + moduleName: moduleName, + documentType: typeName, + definition: definition, + kind: generatedNode.kind, + docText: docText, + typeText: typeText, + hash: hash ? "@relayHash ".concat(hash) : null, + concreteText: CodeMarker.postProcess(dedupeJSONStringify(generatedNode), printModuleDependency), + devOnlyAssignments: devOnlyAssignments, + sourceHash: sourceHash, + node: generatedNode + }); + codegenDir.writeFile(filename, moduleText); + return generatedNode; + }); + return _writeRelayGeneratedFile.apply(this, arguments); +} + +function extractHash(text) { + if (text == null || text.length === 0) { + return null; + } + + if (/<<<<<|>>>>>/.test(text)) { + // looks like a merge conflict + return null; + } + + var match = text.match(/@relayHash (\w{32})\b/m); + return match && match[1]; +} + +module.exports = writeRelayGeneratedFile; + +/***/ }), +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + +/** + * This function works similar to JSON.stringify except that for the case there + * are multiple common subtrees, it generates a string for a IIFE that re-uses + * the same objects for the duplicate subtrees. + */ + +function dedupeJSONStringify(jsonValue) { + // Clone the object to convert references to the same object instance into + // copies. This is needed for the WeakMap/Map to recognize them as duplicates. + // $FlowFixMe(>=0.95.0) JSON.stringify can return undefined + jsonValue = JSON.parse(JSON.stringify(jsonValue)); + var metadataForHash = new Map(); + var metadataForVal = new WeakMap(); + var varDefs = []; + collectMetadata(jsonValue); + collectDuplicates(jsonValue); + var code = printJSCode(false, '', jsonValue); + return varDefs.length === 0 ? code : "(function(){\nvar ".concat(varDefs.join(',\n'), ";\nreturn ").concat(code, ";\n})()"); // Collect common metadata for each object in the value tree, ensuring that + // equivalent values have the *same reference* to the same metadata. Note that + // the hashes generated are not exactly JSON, but still identify equivalent + // values. Runs in linear time due to hashing in a bottom-up recursion. + + function collectMetadata(value) { + if (value == null || typeof value !== 'object') { + return JSON.stringify(value); + } + + var hash; + + if (Array.isArray(value)) { + hash = '['; + + for (var i = 0; i < value.length; i++) { + hash += collectMetadata(value[i]) + ','; + } + } else { + hash = '{'; + + for (var k in value) { + if (value.hasOwnProperty(k) && value[k] !== undefined) { + hash += k + ':' + collectMetadata(value[k]) + ','; + } + } + } + + var metadata = metadataForHash.get(hash); + + if (!metadata) { + metadata = { + value: value, + hash: hash, + isDuplicate: false + }; + metadataForHash.set(hash, metadata); + } + + metadataForVal.set(value, metadata); + return hash; + } // Using top-down recursion, linearly scan the JSON tree to determine which + // values should be deduplicated. + + + function collectDuplicates(value) { + if (value == null || typeof value !== 'object') { + return; + } + + var metadata = metadataForVal.get(value); // Only consider duplicates with hashes longer than 2 (excludes [] and {}). + + if (metadata && metadata.value !== value && metadata.hash.length > 2) { + metadata.isDuplicate = true; + return; + } + + if (Array.isArray(value)) { + for (var i = 0; i < value.length; i++) { + collectDuplicates(value[i]); + } + } else { + for (var k in value) { + if (value.hasOwnProperty(k) && value[k] !== undefined) { + collectDuplicates(value[k]); + } + } + } + } // Stringify JS, replacing duplicates with variable references. + + + function printJSCode(isDupedVar, depth, value) { + if (value == null || typeof value !== 'object') { + return JSON.stringify(value); + } // Only use variable references at depth beyond the top level. + + + if (depth !== '') { + var metadata = metadataForVal.get(value); + + if (metadata && metadata.isDuplicate) { + if (!metadata.varName) { + var refCode = printJSCode(true, '', value); + metadata.varName = 'v' + varDefs.length; + varDefs.push(metadata.varName + ' = ' + refCode); + } + + return '(' + metadata.varName + '/*: any*/)'; + } + } + + var str; + var isEmpty = true; + var depth2 = depth + ' '; + + if (Array.isArray(value)) { + // Empty arrays can only have one inferred flow type and then conflict if + // used in different places, this is unsound if we would write to them but + // this whole module is based on the idea of a read only JSON tree. + if (isDupedVar && value.length === 0) { + return '([]/*: any*/)'; + } + + str = '['; + + for (var i = 0; i < value.length; i++) { + str += (isEmpty ? '\n' : ',\n') + depth2 + printJSCode(isDupedVar, depth2, value[i]); + isEmpty = false; + } + + str += isEmpty ? ']' : "\n".concat(depth, "]"); + } else { + str = '{'; + + for (var k in value) { + if (value.hasOwnProperty(k) && value[k] !== undefined) { + str += (isEmpty ? '\n' : ',\n') + depth2 + JSON.stringify(k) + ': ' + printJSCode(isDupedVar, depth2, value[k]); + isEmpty = false; + } + } + + str += isEmpty ? '}' : "\n".concat(depth, "}"); + } + + return str; + } +} + +module.exports = dedupeJSONStringify; + +/***/ }), +/* 123 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + +/** + * Given a object of nested properties, return JavaScript text that would merge + * in an object named `objectName` by a series of individual assignments. + */ + +function deepMergeAssignments(objectName, properties) { + var assignments = []; + collectAssignmentsInto(assignments, [], properties); + var jsAssignments = assignments.map(function (_ref) { + var path = _ref.path, + value = _ref.value; + return formatJSAssignment(objectName, path, value); + }); + return jsAssignments.length === 0 ? '' : jsAssignments.join('\n'); +} // Recursively collect assignments + + +function collectAssignmentsInto(assignments, parentPath, parentValue) { + // Iterate over the entries in the array or object. + forEach(parentValue, function (value, key) { + // The "path" is the sequence of keys to arrive at this assignment. + var path = parentPath.concat(key); // For each entry, either add an assignment or recurse. + + if (typeof value === 'object' && value !== null) { + collectAssignmentsInto(assignments, path, value); + } else { + assignments.push({ + path: path, + value: value + }); + } + }); +} // Print a path/value pair as a JS assignment expression. + + +function formatJSAssignment(objectName, path, value) { + var assignmentPath = path.map(function (p) { + return typeof p === 'string' ? ".".concat(p) : "[".concat(p, "]"); + }).join(''); + var jsValue = value === undefined ? 'undefined' : JSON.stringify(value); // $FlowFixMe(>=0.95.0) JSON.stringify can return undefined + + return "".concat(objectName).concat(assignmentPath, " = ").concat(jsValue, ";"); +} // Utility for looping over entries in both Arrays and Objects. + + +function forEach(value, fn) { + if (Array.isArray(value)) { + for (var i = 0; i < value.length; i++) { + fn(value[i], i); + } + } else { + for (var k in value) { + if (value.hasOwnProperty(k)) { + fn(value[k], k); + } + } + } +} + +module.exports = deepMergeAssignments; + +/***/ }), +/* 124 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +/** + * Helpers to retieve the name of the document from which the input derives: + * this is either the name of the input itself (if it is not a derived node) + * or the metadata.derivedFrom property for derived nodes. + */ +// Version for generated nodes +function getReaderSourceDefinitionName(node) { + var _node$params$metadata, _node$metadata; + + var _ref = node.kind === 'Request' ? [node.params.name, (_node$params$metadata = node.params.metadata) === null || _node$params$metadata === void 0 ? void 0 : _node$params$metadata.derivedFrom] : node.kind === 'SplitOperation' ? [node.name, (_node$metadata = node.metadata) === null || _node$metadata === void 0 ? void 0 : _node$metadata.derivedFrom] : [node.name, null], + name = _ref[0], + derivedFrom = _ref[1]; + + return typeof derivedFrom === 'string' ? derivedFrom : name; +} // Version for IR + + +function getSourceDefinitionName(node) { + var _node$metadata2; + + var derivedFrom = node.kind === 'Request' || node.kind === 'Root' || node.kind === 'SplitOperation' ? (_node$metadata2 = node.metadata) === null || _node$metadata2 === void 0 ? void 0 : _node$metadata2.derivedFrom : null; + return typeof derivedFrom === 'string' ? derivedFrom : node.name; +} + +module.exports = { + getReaderSourceDefinitionName: getReaderSourceDefinitionName, + getSourceDefinitionName: getSourceDefinitionName +}; + +/***/ }), +/* 125 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var ClientExtensionsTransform = __webpack_require__(126); + +var FilterDirectivesTransform = __webpack_require__(127); + +var FlattenTransform = __webpack_require__(46); + +var InlineFragmentsTransform = __webpack_require__(129); + +var RefineOperationVariablesTransform = __webpack_require__(130); + +var RelayApplyFragmentArgumentTransform = __webpack_require__(131); + +var RelayConnectionTransform = __webpack_require__(135); + +var RelayDeferStreamTransform = __webpack_require__(137); + +var RelayFieldHandleTransform = __webpack_require__(138); + +var RelayGenerateIDFieldTransform = __webpack_require__(139); + +var RelayGenerateTypeNameTransform = __webpack_require__(140); + +var RelayMaskTransform = __webpack_require__(50); + +var RelayMatchTransform = __webpack_require__(51); + +var RelayRefetchableFragmentTransform = __webpack_require__(53); + +var RelayRelayDirectiveTransform = __webpack_require__(54); + +var RelaySkipHandleFieldTransform = __webpack_require__(142); + +var RelaySplitModuleImportTransform = __webpack_require__(143); + +var RelayTestOperationTransform = __webpack_require__(144); + +var SkipClientExtensionsTransform = __webpack_require__(145); + +var SkipRedundantNodesTransform = __webpack_require__(146); + +var SkipUnreachableNodeTransform = __webpack_require__(147); + +// Transforms applied to the code used to process a query response. +var relaySchemaExtensions = [RelayConnectionTransform.SCHEMA_EXTENSION, RelayMatchTransform.SCHEMA_EXTENSION, RelayRelayDirectiveTransform.SCHEMA_EXTENSION, RelayRefetchableFragmentTransform.SCHEMA_EXTENSION, RelayTestOperationTransform.SCHEMA_EXTENSION]; // Transforms applied to both operations and fragments for both reading and +// writing from the store. + +var relayCommonTransforms = [RelayConnectionTransform.transform, RelayRelayDirectiveTransform.transform, RelayMaskTransform.transform, RelayMatchTransform.transform, RelayRefetchableFragmentTransform.transform]; // Transforms applied to fragments used for reading data from a store + +var relayFragmentTransforms = [ClientExtensionsTransform.transform, RelayFieldHandleTransform.transform, FlattenTransform.transformWithOptions({ + flattenAbstractTypes: true +}), SkipRedundantNodesTransform.transform]; // Transforms applied to queries/mutations/subscriptions that are used for +// fetching data from the server and parsing those responses. + +var relayQueryTransforms = [RelayApplyFragmentArgumentTransform.transform, RelayGenerateIDFieldTransform.transform, RelayDeferStreamTransform.transform, RelayTestOperationTransform.transform]; // Transforms applied to the code used to process a query response. + +var relayCodegenTransforms = [SkipUnreachableNodeTransform.transform, RelaySplitModuleImportTransform.transform, InlineFragmentsTransform.transform, // NOTE: For the codegen context, we make sure to run ClientExtensions +// transform after we've inlined fragment spreads (i.e. InlineFragmentsTransform) +// This will ensure that we don't generate nested ClientExtension nodes +ClientExtensionsTransform.transform, FlattenTransform.transformWithOptions({ + flattenAbstractTypes: true +}), SkipRedundantNodesTransform.transform, RelayGenerateTypeNameTransform.transform, FilterDirectivesTransform.transform, RefineOperationVariablesTransform.transformWithOptions({ + removeUnusedVariables: false +})]; // Transforms applied before printing the query sent to the server. + +var relayPrintTransforms = [// NOTE: Skipping client extensions might leave empty selections, which we +// skip by running SkipUnreachableNodeTransform immediately after. +ClientExtensionsTransform.transform, SkipClientExtensionsTransform.transform, SkipUnreachableNodeTransform.transform, FlattenTransform.transformWithOptions({}), RelayGenerateTypeNameTransform.transform, RelaySkipHandleFieldTransform.transform, FilterDirectivesTransform.transform, RefineOperationVariablesTransform.transformWithOptions({ + removeUnusedVariables: true +})]; +module.exports = { + commonTransforms: relayCommonTransforms, + codegenTransforms: relayCodegenTransforms, + fragmentTransforms: relayFragmentTransforms, + printTransforms: relayPrintTransforms, + queryTransforms: relayQueryTransforms, + schemaExtensions: relaySchemaExtensions +}; + +/***/ }), +/* 126 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var GraphQLIRTransformer = __webpack_require__(5); + +var _require = __webpack_require__(8), + getRawType = _require.getRawType, + isClientDefinedField = _require.isClientDefinedField; + +var _require2 = __webpack_require__(9), + createCompilerError = _require2.createCompilerError, + createUserError = _require2.createUserError; + +var cachesByNode = new Map(); + +function clientExtensionTransform(context) { + cachesByNode = new Map(); + return GraphQLIRTransformer.transform(context, { + Fragment: traverseDefinition, + Root: traverseDefinition, + SplitOperation: traverseDefinition + }); +} + +function traverseDefinition(node) { + var _serverSchema$getType; + + var compilerContext = this.getContext(); + var serverSchema = compilerContext.serverSchema, + clientSchema = compilerContext.clientSchema; + var rootType; + + switch (node.kind) { + case 'Root': + switch (node.operation) { + case 'query': + rootType = serverSchema.getQueryType(); + break; + + case 'mutation': + rootType = serverSchema.getMutationType(); + break; + + case 'subscription': + rootType = serverSchema.getSubscriptionType(); + break; + + default: + node.operation; + } + + break; + + case 'SplitOperation': + rootType = serverSchema.getType(node.type.name); + break; + + case 'Fragment': + rootType = (_serverSchema$getType = serverSchema.getType(node.type.name)) !== null && _serverSchema$getType !== void 0 ? _serverSchema$getType : clientSchema.getType(node.type.name); + break; + + default: + node; + } + + if (rootType == null) { + throw createUserError("ClientExtensionTransform: Expected the type of `".concat(node.name, "` to have been defined in the schema. Make sure both server and ") + 'client schema are up to date.', [node.loc]); + } + + return traverseSelections(node, compilerContext, rootType); +} + +function traverseSelections(node, compilerContext, parentType) { + var nodeCache = cachesByNode.get(node); + + if (nodeCache == null) { + nodeCache = new Map(); + cachesByNode.set(node, nodeCache); + } + + var result = nodeCache.get(parentType); + + if (result != null) { + // $FlowFixMe - TODO: type IRTransformer to allow changing result type + return result; + } + + var serverSchema = compilerContext.serverSchema, + clientSchema = compilerContext.clientSchema; + var clientSelections = []; + var serverSelections = []; + node.selections.forEach(function (selection) { + switch (selection.kind) { + case 'ClientExtension': + { + serverSelections.push(selection); + break; + } + + case 'Condition': + case 'Defer': + case 'ModuleImport': + case 'Stream': + { + var transformed = traverseSelections(selection, compilerContext, parentType); + serverSelections.push(transformed); + break; + } + + case 'ScalarField': + case 'LinkedField': + { + var isClientField = isClientDefinedField(selection, compilerContext, parentType); + + if (isClientField) { + clientSelections.push(selection); + break; + } + + if (selection.kind === 'ScalarField') { + serverSelections.push(selection); + } else { + var _serverSchema$getType2; + + var rawType = getRawType(selection.type); + var fieldType = (_serverSchema$getType2 = serverSchema.getType(rawType.name)) !== null && _serverSchema$getType2 !== void 0 ? _serverSchema$getType2 : clientSchema.getType(rawType.name); + + if (fieldType == null) { + throw createCompilerError('ClientExtensionTransform: Expected to be able to determine ' + "type of field `".concat(selection.name, "`."), [selection.loc]); + } + + var _transformed = traverseSelections(selection, compilerContext, fieldType); + + serverSelections.push(_transformed); + } + + break; + } + + case 'InlineFragment': + { + var typeName = selection.typeCondition.name; + var serverType = serverSchema.getType(typeName); + var clientType = clientSchema.getType(typeName); + var isClientType = serverType == null && clientType != null; + + if (isClientType) { + clientSelections.push(selection); + } else { + var _serverType; + + var type = (_serverType = serverType) !== null && _serverType !== void 0 ? _serverType : clientType; + + if (type == null) { + throw createCompilerError('ClientExtensionTransform: Expected to be able to determine ' + "type of inline fragment on `".concat(typeName, "`."), [selection.loc]); + } + + var _transformed2 = traverseSelections(selection, compilerContext, type); + + serverSelections.push(_transformed2); + } + + break; + } + + case 'FragmentSpread': + { + if (!compilerContext.get(selection.name)) { + // NOTE: Calling `get` will check if the fragment definition for this + // fragment spread exists. If it doesn't, which can happen if the + // fragment spread is referencing a fragment defined with Relay Classic, + // we will treat this selection as a client-only selection + // This will ensure that it is properly skipped for the print context. + clientSelections.push(selection); + break; + } + + var fragment = compilerContext.getFragment(selection.name); + var _typeName = fragment.type.name; + + var _serverType2 = serverSchema.getType(_typeName); + + var _clientType = clientSchema.getType(_typeName); + + var _isClientType = _serverType2 == null && _clientType != null; + + if (_isClientType) { + clientSelections.push(selection); + } else { + serverSelections.push(selection); + } + + break; + } + + default: + selection; + throw createCompilerError("ClientExtensionTransform: Unexpected selection of kind `".concat(selection.kind, "`."), [selection.loc]); + } + }); + result = clientSelections.length === 0 ? (0, _objectSpread2["default"])({}, node, { + selections: [].concat(serverSelections) + }) : (0, _objectSpread2["default"])({}, node, { + selections: [].concat(serverSelections, [// Group client fields under a single ClientExtension node + { + kind: 'ClientExtension', + loc: node.loc, + metadata: null, + selections: [].concat(clientSelections) + }]) + }); + nodeCache.set(parentType, result); // $FlowFixMe - TODO: type IRTransformer to allow changing result type + + return result; +} + +module.exports = { + transform: clientExtensionTransform +}; + +/***/ }), +/* 127 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var GraphQLCompilerContext = __webpack_require__(3); + +var GraphQLIRTransformer = __webpack_require__(5); + +/** + * A transform that removes any directives that were not present in the + * server schema. + */ +function filterDirectivesTransform(context) { + return GraphQLIRTransformer.transform(context, { + Directive: visitDirective + }); +} +/** + * @internal + * + * Skip directives not defined in the original schema. + */ + + +function visitDirective(directive) { + if (this.getContext().serverSchema.getDirectives().some(function (schemaDirective) { + return schemaDirective.name === directive.name; + })) { + return directive; + } + + return null; +} + +module.exports = { + transform: filterDirectivesTransform +}; + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var aStackPool = []; +var bStackPool = []; +/** + * Checks if two values are equal. Values may be primitives, arrays, or objects. + * Returns true if both arguments have the same keys and values. + * + * @see http://underscorejs.org + * @copyright 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. + * @license MIT + */ + +function areEqual(a, b) { + var aStack = aStackPool.length ? aStackPool.pop() : []; + var bStack = bStackPool.length ? bStackPool.pop() : []; + var result = eq(a, b, aStack, bStack); + aStack.length = 0; + bStack.length = 0; + aStackPool.push(aStack); + bStackPool.push(bStack); + return result; +} + +function eq(a, b, aStack, bStack) { + if (a === b) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + return a !== 0 || 1 / a === 1 / b; + } + + if (a == null || b == null) { + // a or b can be `null` or `undefined` + return false; + } + + if (typeof a !== 'object' || typeof b !== 'object') { + return false; + } + + var objToStr = Object.prototype.toString; + var className = objToStr.call(a); + + if (className !== objToStr.call(b)) { + return false; + } + + switch (className) { + case '[object String]': + return a === String(b); + + case '[object Number]': + return isNaN(a) || isNaN(b) ? false : a === Number(b); + + case '[object Date]': + case '[object Boolean]': + return +a === +b; + + case '[object RegExp]': + return a.source === b.source && a.global === b.global && a.multiline === b.multiline && a.ignoreCase === b.ignoreCase; + } // Assume equality for cyclic structures. + + + var length = aStack.length; + + while (length--) { + if (aStack[length] === a) { + return bStack[length] === b; + } + } + + aStack.push(a); + bStack.push(b); + var size = 0; // Recursively compare objects and arrays. + + if (className === '[object Array]') { + size = a.length; + + if (size !== b.length) { + return false; + } // Deep compare the contents, ignoring non-numeric properties. + + + while (size--) { + if (!eq(a[size], b[size], aStack, bStack)) { + return false; + } + } + } else { + if (a.constructor !== b.constructor) { + return false; + } + + if (a.hasOwnProperty('valueOf') && b.hasOwnProperty('valueOf')) { + return a.valueOf() === b.valueOf(); + } + + var keys = Object.keys(a); + + if (keys.length !== Object.keys(b).length) { + return false; + } + + for (var i = 0; i < keys.length; i++) { + if (keys[i] === '_owner') { + // HACK: Comparing deeply nested React trees is slow since you end up + // comparing the entire tree (all ancestors and all children) and + // likely not what you want if you're comparing two elements with + // areEqual. We bail out here for now. + continue; + } + + if (!b.hasOwnProperty(keys[i]) || !eq(a[keys[i]], b[keys[i]], aStack, bStack)) { + return false; + } + } + } + + aStack.pop(); + bStack.pop(); + return true; +} + +module.exports = areEqual; + +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var GraphQLCompilerContext = __webpack_require__(3); + +var GraphQLIRTransformer = __webpack_require__(5); + +var invariant = __webpack_require__(4); + +/** + * A transform that inlines all fragments and removes them. + */ +function inlineFragmentsTransform(context) { + var visitFragmentSpread = fragmentSpreadVisitor(new Map()); + return GraphQLIRTransformer.transform(context, { + Fragment: visitFragment, + FragmentSpread: visitFragmentSpread + }); +} + +function visitFragment(fragment) { + return null; +} + +function fragmentSpreadVisitor(cache) { + return function visitFragmentSpread(fragmentSpread) { + var traverseResult = cache.get(fragmentSpread); + + if (traverseResult != null) { + return traverseResult; + } + + !(fragmentSpread.args.length === 0) ? true ? invariant(false, 'InlineFragmentsTransform: Cannot flatten fragment spread `%s` with ' + 'arguments. Use the `ApplyFragmentArgumentTransform` before flattening', fragmentSpread.name) : undefined : void 0; + var fragment = this.getContext().getFragment(fragmentSpread.name); + var result = { + kind: 'InlineFragment', + directives: fragmentSpread.directives, + loc: { + kind: 'Derived', + source: fragmentSpread.loc + }, + metadata: fragmentSpread.metadata, + selections: fragment.selections, + typeCondition: fragment.type + }; + traverseResult = this.traverse(result); + cache.set(fragmentSpread, traverseResult); + return traverseResult; + }; +} + +module.exports = { + transform: inlineFragmentsTransform +}; + +/***/ }), +/* 130 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var GraphQLCompilerContext = __webpack_require__(3); + +var inferRootArgumentDefinitions = __webpack_require__(48); + +var _require = __webpack_require__(9), + createCombinedError = _require.createCombinedError, + createUserError = _require.createUserError, + eachWithErrors = _require.eachWithErrors; + +/** + * Refines the argument definitions for operations to remove unused arguments + * due to statically pruned conditional branches (e.g. because of overriding + * a variable used in `@include()` to be false) and checks that all variables + * referenced in each operation are defined. Reports aggregated errors for all + * operations. + */ +function refineOperationVariablesTransformImpl(context, _ref) { + var removeUnusedVariables = _ref.removeUnusedVariables; + var contextWithUsedArguments = inferRootArgumentDefinitions(context); + var nextContext = context; + var errors = eachWithErrors(context.documents(), function (node) { + if (node.kind !== 'Root') { + return; + } + + var nodeWithUsedArguments = contextWithUsedArguments.getRoot(node.name); + var definedArguments = argumentDefinitionsToMap(node.argumentDefinitions); + var usedArguments = argumentDefinitionsToMap(nodeWithUsedArguments.argumentDefinitions); // All used arguments must be defined + + var undefinedVariables = []; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = usedArguments.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var argDef = _step.value; + + if (!definedArguments.has(argDef.name)) { + undefinedVariables.push(argDef); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + if (undefinedVariables.length !== 0) { + throw createUserError("Operation '".concat(node.name, "' references undefined variable(s):\n").concat(undefinedVariables.map(function (argDef) { + return "- $".concat(argDef.name, ": ").concat(String(argDef.type)); + }).join('\n'), "."), undefinedVariables.map(function (argDef) { + return argDef.loc; + })); + } + + if (removeUnusedVariables) { + // Remove unused argument definitions + var usedArgumentDefinitions = node.argumentDefinitions.filter(function (argDef) { + return usedArguments.has(argDef.name); + }); + nextContext = nextContext.replace((0, _objectSpread2["default"])({}, node, { + argumentDefinitions: usedArgumentDefinitions + })); + } + }); + + if (errors != null && errors.length !== 0) { + throw createCombinedError(errors); + } + + return nextContext; +} + +function argumentDefinitionsToMap(argDefs) { + var map = new Map(); + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = argDefs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var argDef = _step2.value; + map.set(argDef.name, argDef); + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + return map; +} + +function transformWithOptions(options) { + return function refineOperationVariablesTransform(context) { + return refineOperationVariablesTransformImpl(context, options); + }; +} + +module.exports = { + transformWithOptions: transformWithOptions +}; + +/***/ }), +/* 131 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var IRTransformer = __webpack_require__(5); + +var RelayCompilerScope = __webpack_require__(132); + +var getIdentifierForArgumentValue = __webpack_require__(133); + +var murmurHash = __webpack_require__(134); + +var _require = __webpack_require__(9), + createCompilerError = _require.createCompilerError, + createNonRecoverableUserError = _require.createNonRecoverableUserError; + +var getFragmentScope = RelayCompilerScope.getFragmentScope, + getRootScope = RelayCompilerScope.getRootScope; +/** + * A tranform that converts a set of documents containing fragments/fragment + * spreads *with* arguments to one where all arguments have been inlined. This + * is effectively static currying of functions. Nodes are changed as follows: + * - Fragment spreads with arguments are replaced with references to an inlined + * version of the referenced fragment. + * - Fragments with argument definitions are cloned once per unique set of + * arguments, with the name changed to original name + hash and all nested + * variable references changed to the value of that variable given its + * arguments. + * - Field & directive argument variables are replaced with the value of those + * variables in context. + * - All nodes are cloned with updated children. + * + * The transform also handles statically passing/failing Condition nodes: + * - Literal Conditions with a passing value are elided and their selections + * inlined in their parent. + * - Literal Conditions with a failing value are removed. + * - Nodes that would become empty as a result of the above are removed. + * + * Note that unreferenced fragments are not added to the output. + */ + +function relayApplyFragmentArgumentTransform(context) { + var fragments = new Map(); + var nextContext = IRTransformer.transform(context, { + Root: function Root(node) { + var scope = getRootScope(node.argumentDefinitions); + return transformNode(context, fragments, scope, node, [node]); + }, + // Fragments are included below where referenced. + // Unreferenced fragments are not included. + Fragment: function Fragment() { + return null; + } + }); + return Array.from(fragments.values()).reduce(function (ctx, fragment) { + return fragment ? ctx.add(fragment) : ctx; + }, nextContext); +} + +function transformNode(context, fragments, scope, node, errorContext) { + var selections = transformSelections(context, fragments, scope, node.selections, errorContext); + + if (!selections) { + return null; + } + + if (node.hasOwnProperty('directives')) { + var directives = transformDirectives(scope, node.directives, errorContext); // $FlowIssue: this is a valid `Node`: + + return (0, _objectSpread2["default"])({}, node, { + directives: directives, + selections: selections + }); + } + + return (0, _objectSpread2["default"])({}, node, { + selections: selections + }); +} + +function transformFragmentSpread(context, fragments, scope, spread, errorContext) { + var directives = transformDirectives(scope, spread.directives, errorContext); + var appliedFragment = transformFragment(context, fragments, scope, spread, spread.args, [].concat((0, _toConsumableArray2["default"])(errorContext), [spread])); + + if (!appliedFragment) { + return null; + } + + var transformed = (0, _objectSpread2["default"])({}, spread, { + kind: 'FragmentSpread', + args: [], + directives: directives, + name: appliedFragment.name + }); + return transformed; +} + +function transformField(context, fragments, scope, field, errorContext) { + var args = transformArguments(scope, field.args, errorContext); + var directives = transformDirectives(scope, field.directives, errorContext); + + if (field.kind === 'LinkedField') { + var selections = transformSelections(context, fragments, scope, field.selections, errorContext); + + if (!selections) { + return null; + } + + return (0, _objectSpread2["default"])({}, field, { + args: args, + directives: directives, + selections: selections + }); + } else { + return (0, _objectSpread2["default"])({}, field, { + args: args, + directives: directives + }); + } +} + +function transformCondition(context, fragments, scope, node, errorContext) { + var condition = transformValue(scope, node.condition, errorContext); + + if (!(condition.kind === 'Literal' || condition.kind === 'Variable')) { + // This transform does whole-program optimization, errors in + // a single document could break invariants and/or cause + // additional spurious errors. + throw createNonRecoverableUserError('A non-scalar value was applied to an @include or @skip directive, ' + 'the `if` argument value must be a ' + 'variable or a literal Boolean.', [condition.loc]); + } + + if (condition.kind === 'Literal' && condition.value !== node.passingValue) { + // Dead code, no need to traverse further. + return null; + } + + var selections = transformSelections(context, fragments, scope, node.selections, errorContext); + + if (!selections) { + return null; + } + + if (condition.kind === 'Literal' && condition.value === node.passingValue) { + // Always passes, return inlined selections + return selections; + } + + return [(0, _objectSpread2["default"])({}, node, { + condition: condition, + selections: selections + })]; +} + +function transformSelections(context, fragments, scope, selections, errorContext) { + var nextSelections = null; + selections.forEach(function (selection) { + var nextSelection; + + if (selection.kind === 'ClientExtension' || selection.kind === 'InlineFragment' || selection.kind === 'ModuleImport') { + nextSelection = transformNode(context, fragments, scope, selection, errorContext); + } else if (selection.kind === 'FragmentSpread') { + nextSelection = transformFragmentSpread(context, fragments, scope, selection, errorContext); + } else if (selection.kind === 'Condition') { + var conditionSelections = transformCondition(context, fragments, scope, selection, errorContext); + + if (conditionSelections) { + var _nextSelections; + + nextSelections = nextSelections || []; + + (_nextSelections = nextSelections).push.apply(_nextSelections, (0, _toConsumableArray2["default"])(conditionSelections)); + } + } else if (selection.kind === 'LinkedField' || selection.kind === 'ScalarField') { + nextSelection = transformField(context, fragments, scope, selection, errorContext); + } else if (selection.kind === 'Defer' || selection.kind === 'Stream') { + throw createCompilerError('RelayApplyFragmentArgumentTransform: Expected to be applied before processing @defer/@stream.', [selection.loc]); + } else { + selection; + throw createCompilerError("RelayApplyFragmentArgumentTransform: Unsupported kind '".concat(selection.kind, "'."), [selection.loc]); + } + + if (nextSelection) { + nextSelections = nextSelections || []; + nextSelections.push(nextSelection); + } + }); + return nextSelections; +} + +function transformDirectives(scope, directives, errorContext) { + return directives.map(function (directive) { + var args = transformArguments(scope, directive.args, errorContext); + return (0, _objectSpread2["default"])({}, directive, { + args: args + }); + }); +} + +function transformArguments(scope, args, errorContext) { + return args.map(function (arg) { + var value = transformValue(scope, arg.value, errorContext); + return value === arg.value ? arg : (0, _objectSpread2["default"])({}, arg, { + value: value + }); + }); +} + +function transformValue(scope, value, errorContext) { + if (value.kind === 'Variable') { + var scopeValue = scope[value.variableName]; + + if (scopeValue == null) { + // This transform does whole-program optimization, errors in + // a single document could break invariants and/or cause + // additional spurious errors. + throw createNonRecoverableUserError("Variable '$".concat(value.variableName, "' is not in scope."), [value.loc]); + } + + return scopeValue; + } else if (value.kind === 'ListValue') { + return (0, _objectSpread2["default"])({}, value, { + items: value.items.map(function (item) { + return transformValue(scope, item, errorContext); + }) + }); + } else if (value.kind === 'ObjectValue') { + return (0, _objectSpread2["default"])({}, value, { + fields: value.fields.map(function (field) { + return (0, _objectSpread2["default"])({}, field, { + value: transformValue(scope, field.value, errorContext) + }); + }) + }); + } + + return value; +} +/** + * Apply arguments to a fragment, creating a new fragment (with the given name) + * with all values recursively applied. + */ + + +function transformFragment(context, fragments, parentScope, spread, args, errorContext) { + var fragment = context.getFragment(spread.name); + var argumentsHash = hashArguments(args, parentScope, errorContext); + var fragmentName = argumentsHash ? "".concat(fragment.name, "_").concat(argumentsHash) : fragment.name; + var appliedFragment = fragments.get(fragmentName); + + if (appliedFragment) { + return appliedFragment; + } + + var fragmentScope = getFragmentScope(fragment.argumentDefinitions, args, parentScope, spread); + + if (fragments.get(fragmentName) === null) { + // This transform does whole-program optimization, errors in + // a single document could break invariants and/or cause + // additional spurious errors. + throw createNonRecoverableUserError("Found a circular reference from fragment '".concat(fragment.name, "'."), errorContext.map(function (node) { + return node.loc; + })); + } + + fragments.set(fragmentName, null); // to detect circular references + + var transformedFragment = null; + var selections = transformSelections(context, fragments, fragmentScope, fragment.selections, errorContext); + + if (selections) { + transformedFragment = (0, _objectSpread2["default"])({}, fragment, { + selections: selections, + name: fragmentName, + argumentDefinitions: [] + }); + } + + fragments.set(fragmentName, transformedFragment); + return transformedFragment; +} + +function hashArguments(args, scope, errorContext) { + if (!args.length) { + return null; + } + + var sortedArgs = (0, _toConsumableArray2["default"])(args).sort(function (a, b) { + return a.name < b.name ? -1 : a.name > b.name ? 1 : 0; + }); + var printedArgs = JSON.stringify(sortedArgs.map(function (arg) { + var value; + + if (arg.value.kind === 'Variable') { + value = scope[arg.value.variableName]; + + if (value == null) { + // This transform does whole-program optimization, errors in + // a single document could break invariants and/or cause + // additional spurious errors. + throw createNonRecoverableUserError("Variable '$".concat(arg.value.variableName, "' is not in scope."), [arg.value.loc]); + } + } else { + value = arg.value; + } + + return { + name: arg.name, + value: getIdentifierForArgumentValue(value) + }; + })); + return murmurHash(printedArgs); +} + +module.exports = { + transform: relayApplyFragmentArgumentTransform +}; + +/***/ }), +/* 132 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _require = __webpack_require__(9), + createCombinedError = _require.createCombinedError, + createUserError = _require.createUserError, + eachWithErrors = _require.eachWithErrors; + +var _require2 = __webpack_require__(1), + GraphQLNonNull = _require2.GraphQLNonNull; + +/** + * Creates a scope for a `Root`, with each argument mapped to a variable of the + * same name. Example: + * + * Query: + * query Foo($id: ID, $size: Int = 42) { ... } + * + * Scope: + * { + * id: $id, + * size: $size, + * } + * + * Note that even though a default value is defined for $size, the scope must + * assume that this could be overridden at runtime. The value cannot be decided + * statically and therefore is set to a variable. + */ +function getRootScope(definitions) { + var scope = {}; + definitions.forEach(function (definition) { + scope[definition.name] = { + kind: 'Variable', + loc: definition.loc, + metadata: null, + variableName: definition.name, + type: definition.type + }; + }); + return scope; +} +/** + * Creates a scope for a `Fragment` by translating fragment spread arguments in + * the context of a parent scope into a new scope and validating them against + * the argument definitions. + * + * + * Parent Scope: + * { + * active: $parentActive + * } + * + * Fragment Spread: + * ...Bar(size: 42, enabled: $active) + * + * Fragment: + * fragment Bar on Foo @argumentDefinitions( + * id: {type: "ID"} + * size: {type: "Int"} + * enabled: {type: "Boolean} + * scale: {type: "Int", imports: "pixelRatio"} + * ) + * + * Scope: + * { + * // No argument is provided for $id, it gets the default value which in this + * // case is `null`: + * id: null, + * + * // The parent passes 42 as a literal value for $size: + * size: 42, + * + * // The parent passes a variable as the value of $enabled. This variable is + * // resolved in the parent scope to the value $parentActive, which becomes + * // the value of $enabled: + * $enabled: $parentActive, + * + * // $scale imports pixelRatio from the root scope. Since any argument in a + * // root scope maps to a variable of the same name, that means the value of + * // pixelRatio in the root is $pixelRatio: + * $scale: $pixelRatio, + * } + */ + + +function getFragmentScope(definitions, args, parentScope, spread) { + var argMap = new Map(); + args.forEach(function (arg) { + if (arg.value.kind === 'Literal') { + argMap.set(arg.name, arg.value); + } else if (arg.value.kind === 'Variable') { + argMap.set(arg.name, parentScope[arg.value.variableName]); + } + }); + var fragmentScope = {}; + var errors = eachWithErrors(definitions, function (definition) { + if (definition.kind === 'RootArgumentDefinition') { + if (argMap.has(definition.name)) { + var _ref; + + var argNode = args.find(function (a) { + return a.name === definition.name; + }); + throw createUserError("Unexpected argument '".concat(definition.name, "' supplied to fragment '").concat(spread.name, "'. @arguments may only be provided for variables defined in the fragment's @argumentDefinitions."), [(_ref = argNode === null || argNode === void 0 ? void 0 : argNode.loc) !== null && _ref !== void 0 ? _ref : spread.loc]); + } + + fragmentScope[definition.name] = { + kind: 'Variable', + loc: definition.loc, + metadata: null, + variableName: definition.name, + type: definition.type + }; + } else { + var arg = argMap.get(definition.name); + + if (arg == null || arg.kind === 'Literal' && arg.value == null) { + // No variable or literal null was passed, fall back to default + // value. + if (definition.defaultValue == null && definition.type instanceof GraphQLNonNull) { + var _ref2; + + var _argNode = args.find(function (a) { + return a.name === definition.name; + }); + + throw createUserError("No value found for required argument '".concat(definition.name, ": ").concat(String(definition.type), "' on fragment '").concat(spread.name, "'."), [(_ref2 = _argNode === null || _argNode === void 0 ? void 0 : _argNode.loc) !== null && _ref2 !== void 0 ? _ref2 : spread.loc]); + } + + fragmentScope[definition.name] = { + kind: 'Literal', + value: definition.defaultValue + }; + } else { + // Variable or non-null literal. + fragmentScope[definition.name] = arg; + } + } + }); + + if (errors != null && errors.length) { + throw createCombinedError(errors); + } + + return fragmentScope; +} + +module.exports = { + getFragmentScope: getFragmentScope, + getRootScope: getRootScope +}; + +/***/ }), +/* 133 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var invariant = __webpack_require__(4); + +/** + * Generates an identifier for an argument value. The identifier is based on the + * structure/order of items and keys in the value. + */ +function getIdentifierForArgumentValue(value) { + switch (value.kind) { + case 'Variable': + return { + variable: value.variableName + }; + + case 'Literal': + return { + value: value.value + }; + + case 'ListValue': + return { + list: value.items.map(function (item) { + return getIdentifierForArgumentValue(item); + }) + }; + + case 'ObjectValue': + return { + object: value.fields.map(function (field) { + return { + name: field.name, + value: getIdentifierForArgumentValue(field.value) + }; + }) + }; + + default: + true ? true ? invariant(false, 'getIdentifierForArgumentValue(): Unsupported AST kind `%s`.', value.kind) : undefined : undefined; + } +} + +module.exports = getIdentifierForArgumentValue; + +/***/ }), +/* 134 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * Based on implementations by Gary Court and Austin Appleby, 2011, MIT. + * + * + * @format + */ + + +var BASE62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; +/** + * @param {string} key A UTF-16 or ASCII string + * @return {string} a base62 murmur hash + */ + +function murmurHash(str) { + /* eslint-disable no-bitwise */ + var length = str.length; + var rem = length & 3; + var len = length ^ rem; + var h = 0; + var i = 0; + var k; + + while (i !== len) { + var ch4 = str.charCodeAt(i + 3); + k = str.charCodeAt(i) ^ str.charCodeAt(i + 1) << 8 ^ str.charCodeAt(i + 2) << 16 ^ (ch4 & 0xff) << 24 ^ (ch4 & 0xff00) >> 8; + i += 4; + k = k * 0x2d51 + (k & 0xffff) * 0xcc9e0000 >>> 0; + k = k << 15 | k >>> 17; + k = k * 0x3593 + (k & 0xffff) * 0x1b870000 >>> 0; + h ^= k; + h = h << 13 | h >>> 19; + h = h * 5 + 0xe6546b64 >>> 0; + } + + k = 0; + + switch (rem) { + /* eslint-disable no-fallthrough */ + case 3: + k ^= str.charCodeAt(len + 2) << 16; + + case 2: + k ^= str.charCodeAt(len + 1) << 8; + + case 1: + k ^= str.charCodeAt(len); + k = k * 0x2d51 + (k & 0xffff) * 0xcc9e0000 >>> 0; + k = k << 15 | k >>> 17; + k = k * 0x3593 + (k & 0xffff) * 0x1b870000 >>> 0; + h ^= k; + } + + h ^= length; + h ^= h >>> 16; + h = h * 0xca6b + (h & 0xffff) * 0x85eb0000 >>> 0; + h ^= h >>> 13; + h = h * 0xae35 + (h & 0xffff) * 0xc2b20000 >>> 0; + h ^= h >>> 16; + h >>>= 0; + + if (!h) { + return '0'; + } + + var s = ''; + + while (h) { + var d = h % 62; + s = BASE62[d] + s; + h = (h - d) / 62; + } + + return s; +} + +module.exports = murmurHash; + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var IRTransformer = __webpack_require__(5); + +var RelayParser = __webpack_require__(41); + +var SchemaUtils = __webpack_require__(8); + +var getLiteralArgumentValues = __webpack_require__(25); + +var _require = __webpack_require__(9), + createCompilerError = _require.createCompilerError, + createUserError = _require.createUserError; + +var _require2 = __webpack_require__(136), + AFTER = _require2.AFTER, + BEFORE = _require2.BEFORE, + FIRST = _require2.FIRST, + KEY = _require2.KEY, + LAST = _require2.LAST; + +var _require3 = __webpack_require__(1), + GraphQLInterfaceType = _require3.GraphQLInterfaceType, + GraphQLList = _require3.GraphQLList, + GraphQLObjectType = _require3.GraphQLObjectType, + GraphQLScalarType = _require3.GraphQLScalarType, + GraphQLString = _require3.GraphQLString, + GraphQLUnionType = _require3.GraphQLUnionType, + parse = _require3.parse; + +var _require4 = __webpack_require__(19), + ConnectionInterface = _require4.ConnectionInterface, + RelayFeatureFlags = _require4.RelayFeatureFlags; + +var CONNECTION = 'connection'; +var STREAM_CONNECTION = 'stream_connection'; +var HANDLER = 'handler'; +/** + * @public + * + * Transforms fields with the `@connection` directive: + * - Verifies that the field type is connection-like. + * - Adds a `handle` property to the field, either the user-provided `handle` + * argument or the default value "connection". + * - Inserts a sub-fragment on the field to ensure that standard connection + * fields are fetched (e.g. cursors, node ids, page info). + */ + +function relayConnectionTransform(context) { + return IRTransformer.transform(context, { + Fragment: visitFragmentOrRoot, + LinkedField: visitLinkedField, + Root: visitFragmentOrRoot + }, function (node) { + return { + path: [], + connectionMetadata: [] + }; + }); +} + +var SCHEMA_EXTENSION = "\n directive @connection(\n key: String!\n filters: [String]\n handler: String\n dynamicKey_UNSTABLE: String\n ) on FIELD\n\n directive @stream_connection(\n key: String!\n filters: [String]\n handler: String\n label: String!\n initial_count: Int!\n if: Boolean = true\n dynamicKey_UNSTABLE: String\n ) on FIELD\n"; +/** + * @internal + */ + +function visitFragmentOrRoot(node, options) { + var transformedNode = this.traverse(node, options); + var connectionMetadata = options.connectionMetadata; + + if (connectionMetadata.length) { + return (0, _objectSpread2["default"])({}, transformedNode, { + metadata: (0, _objectSpread2["default"])({}, transformedNode.metadata, { + connection: connectionMetadata + }) + }); + } + + return transformedNode; +} +/** + * @internal + */ + + +function visitLinkedField(field, options) { + var _connectionArguments$; + + var nullableType = SchemaUtils.getNullableType(field.type); + var isPlural = nullableType instanceof GraphQLList; + var path = options.path.concat(isPlural ? null : field.alias || field.name); + var transformedField = this.traverse(field, (0, _objectSpread2["default"])({}, options, { + path: path + })); + var connectionDirective = field.directives.find(function (directive) { + return directive.name === CONNECTION || directive.name === STREAM_CONNECTION; + }); + + if (!connectionDirective) { + return transformedField; + } + + if (!(nullableType instanceof GraphQLObjectType) && !(nullableType instanceof GraphQLInterfaceType)) { + throw new createUserError("@".concat(connectionDirective.name, " used on invalid field '").concat(field.name, "'. ") + 'Expected the return type to be a non-plural interface or object, ' + "got '".concat(String(field.type), "'."), [transformedField.loc]); + } + + validateConnectionSelection(transformedField); + validateConnectionType(transformedField, nullableType, connectionDirective); + var connectionMetadata = buildConnectionMetadata(transformedField, path); + options.connectionMetadata.push(connectionMetadata); + var connectionArguments = buildConnectionArguments(transformedField, connectionDirective); + var handle = { + name: (_connectionArguments$ = connectionArguments.handler) !== null && _connectionArguments$ !== void 0 ? _connectionArguments$ : CONNECTION, + key: connectionArguments.key, + dynamicKey: connectionArguments.dynamicKey, + filters: connectionArguments.filters + }; + var direction = connectionMetadata.direction; + + if (direction != null) { + var selections = transformConnectionSelections(this.getContext(), transformedField, nullableType, direction, connectionArguments); + transformedField = (0, _objectSpread2["default"])({}, transformedField, { + selections: selections + }); + } + + return (0, _objectSpread2["default"])({}, transformedField, { + directives: transformedField.directives.filter(function (directive) { + return directive !== connectionDirective; + }), + handles: transformedField.handles ? [].concat((0, _toConsumableArray2["default"])(transformedField.handles), [handle]) : [handle] + }); +} + +function buildConnectionArguments(field, connectionDirective) { + var _getLiteralArgumentVa = getLiteralArgumentValues(connectionDirective.args), + handler = _getLiteralArgumentVa.handler, + key = _getLiteralArgumentVa.key, + label = _getLiteralArgumentVa.label, + literalFilters = _getLiteralArgumentVa.filters; + + if (handler != null && typeof handler !== 'string') { + var _ref, _handleArg$value; + + var handleArg = connectionDirective.args.find(function (arg) { + return arg.name === 'key'; + }); + throw createUserError("Expected the ".concat(HANDLER, " argument to @").concat(connectionDirective.name, " to ") + "be a string literal for field ".concat(field.name, "."), [(_ref = handleArg === null || handleArg === void 0 ? void 0 : (_handleArg$value = handleArg.value) === null || _handleArg$value === void 0 ? void 0 : _handleArg$value.loc) !== null && _ref !== void 0 ? _ref : connectionDirective.loc]); + } + + if (typeof key !== 'string') { + var _ref2, _keyArg$value; + + var keyArg = connectionDirective.args.find(function (arg) { + return arg.name === 'key'; + }); + throw createUserError("Expected the ".concat(KEY, " argument to @").concat(connectionDirective.name, " to be a ") + "string literal for field ".concat(field.name, "."), [(_ref2 = keyArg === null || keyArg === void 0 ? void 0 : (_keyArg$value = keyArg.value) === null || _keyArg$value === void 0 ? void 0 : _keyArg$value.loc) !== null && _ref2 !== void 0 ? _ref2 : connectionDirective.loc]); + } + + var postfix = field.alias || field.name; + + if (!key.endsWith('_' + postfix)) { + var _ref3, _keyArg$value2; + + var _keyArg = connectionDirective.args.find(function (arg) { + return arg.name === 'key'; + }); + + throw createUserError("Expected the ".concat(KEY, " argument to @").concat(connectionDirective.name, " to be of ") + "form _".concat(postfix, ", got '").concat(key, "'. ") + 'For a detailed explanation, check out ' + 'https://relay.dev/docs/en/pagination-container#connection', [(_ref3 = _keyArg === null || _keyArg === void 0 ? void 0 : (_keyArg$value2 = _keyArg.value) === null || _keyArg$value2 === void 0 ? void 0 : _keyArg$value2.loc) !== null && _ref3 !== void 0 ? _ref3 : connectionDirective.loc]); + } + + if (literalFilters != null && (!Array.isArray(literalFilters) || literalFilters.some(function (filter) { + return typeof filter !== 'string'; + }))) { + var _ref4, _filtersArg$value; + + var filtersArg = connectionDirective.args.find(function (arg) { + return arg.name === 'filters'; + }); + throw createUserError("Expected the 'filters' argument to @".concat(connectionDirective.name, " to be ") + 'a string literal.', [(_ref4 = filtersArg === null || filtersArg === void 0 ? void 0 : (_filtersArg$value = filtersArg.value) === null || _filtersArg$value === void 0 ? void 0 : _filtersArg$value.loc) !== null && _ref4 !== void 0 ? _ref4 : connectionDirective.loc]); + } + + var filters = literalFilters; + + if (filters == null) { + var generatedFilters = field.args.filter(function (arg) { + return !ConnectionInterface.isConnectionCall({ + name: arg.name, + value: null + }); + }).map(function (arg) { + return arg.name; + }); + filters = generatedFilters.length !== 0 ? generatedFilters : null; + } + + var stream = null; + + if (connectionDirective.name === STREAM_CONNECTION) { + var _label; + + var initialCountArg = connectionDirective.args.find(function (arg) { + return arg.name === 'initial_count'; + }); + var ifArg = connectionDirective.args.find(function (arg) { + return arg.name === 'if'; + }); + + if (label != null && typeof label !== 'string') { + var _ref5, _labelArg$value; + + var labelArg = connectionDirective.args.find(function (arg) { + return arg.name === 'label'; + }); + throw createUserError("Expected the 'label' argument to @".concat(connectionDirective.name, " to be a string literal for field ").concat(field.name, "."), [(_ref5 = labelArg === null || labelArg === void 0 ? void 0 : (_labelArg$value = labelArg.value) === null || _labelArg$value === void 0 ? void 0 : _labelArg$value.loc) !== null && _ref5 !== void 0 ? _ref5 : connectionDirective.loc]); + } + + stream = { + "if": ifArg, + initialCount: initialCountArg, + label: (_label = label) !== null && _label !== void 0 ? _label : key + }; + } // T45504512: new connection model + + + var dynamicKeyArg = connectionDirective.args.find(function (arg) { + return arg.name === 'dynamicKey_UNSTABLE'; + }); + var dynamicKey = null; + + if (dynamicKeyArg != null) { + if (RelayFeatureFlags.ENABLE_VARIABLE_CONNECTION_KEY && dynamicKeyArg.value.kind === 'Variable') { + dynamicKey = dynamicKeyArg.value; + } else { + throw createUserError("Unsupported 'dynamicKey_UNSTABLE' argument to @".concat(connectionDirective.name, ". This argument is only valid when the feature flag is enabled and ") + 'the variable must be a variable', [connectionDirective.loc]); + } + } + + return { + handler: handler, + key: key, + dynamicKey: dynamicKey, + filters: filters, + stream: stream + }; +} + +function buildConnectionMetadata(field, path) { + var pathHasPlural = path.includes(null); + var firstArg = findArg(field, FIRST); + var lastArg = findArg(field, LAST); + var direction = null; + var countArg = null; + var cursorArg = null; + + if (firstArg && !lastArg) { + direction = 'forward'; + countArg = firstArg; + cursorArg = findArg(field, AFTER); + } else if (lastArg && !firstArg) { + direction = 'backward'; + countArg = lastArg; + cursorArg = findArg(field, BEFORE); + } else if (lastArg && firstArg) { + direction = 'bidirectional'; // TODO(T26511885) Maybe add connection metadata to this case + } + + var countVariable = countArg && countArg.value.kind === 'Variable' ? countArg.value.variableName : null; + var cursorVariable = cursorArg && cursorArg.value.kind === 'Variable' ? cursorArg.value.variableName : null; + return { + count: countVariable, + cursor: cursorVariable, + direction: direction, + path: pathHasPlural ? null : path + }; +} +/** + * @internal + * + * Transforms the selections on a connection field, generating fields necessary + * for pagination (edges.cursor, pageInfo, etc) and adding/merging them with + * existing selections. + */ + + +function transformConnectionSelections(context, field, nullableType, direction, connectionArguments) { + var derivedLocation = { + kind: 'Derived', + source: field.loc + }; + + var _ConnectionInterface$ = ConnectionInterface.get(), + CURSOR = _ConnectionInterface$.CURSOR, + EDGES = _ConnectionInterface$.EDGES, + END_CURSOR = _ConnectionInterface$.END_CURSOR, + HAS_NEXT_PAGE = _ConnectionInterface$.HAS_NEXT_PAGE, + HAS_PREV_PAGE = _ConnectionInterface$.HAS_PREV_PAGE, + NODE = _ConnectionInterface$.NODE, + PAGE_INFO = _ConnectionInterface$.PAGE_INFO, + START_CURSOR = _ConnectionInterface$.START_CURSOR; // Find existing edges/pageInfo selections + + + var edgesSelection; + var pageInfoSelection; + field.selections.forEach(function (selection) { + if (selection.kind === 'LinkedField') { + if (selection.name === EDGES) { + if (edgesSelection != null) { + throw createCompilerError("RelayConnectionTransform: Unexpected duplicate field '".concat(EDGES, "'."), [edgesSelection.loc, selection.loc]); + } + + edgesSelection = selection; + return; + } else if (selection.name === PAGE_INFO) { + if (pageInfoSelection != null) { + throw createCompilerError("RelayConnectionTransform: Unexpected duplicate field '".concat(PAGE_INFO, "'."), [pageInfoSelection.loc, selection.loc]); + } + + pageInfoSelection = selection; + return; + } + } + }); // If streaming is enabled, construct directives to apply to the edges/ + // pageInfo fields + + var streamDirective; + var deferDirective; + var stream = connectionArguments.stream; + + if (stream != null) { + streamDirective = { + args: [stream["if"], stream.initialCount, { + kind: 'Argument', + loc: derivedLocation, + metadata: null, + name: 'label', + type: GraphQLString, + value: { + kind: 'Literal', + loc: derivedLocation, + metadata: null, + value: stream.label + } + }].filter(Boolean), + kind: 'Directive', + loc: derivedLocation, + metadata: null, + name: 'stream' + }; + deferDirective = { + args: [stream["if"], { + kind: 'Argument', + loc: derivedLocation, + metadata: null, + name: 'label', + type: GraphQLString, + value: { + kind: 'Literal', + loc: derivedLocation, + metadata: null, + value: stream.label + '$' + PAGE_INFO + } + }].filter(Boolean), + kind: 'Directive', + loc: derivedLocation, + metadata: null, + name: 'defer' + }; + } // For backwards compatibility with earlier versions of this transform, + // edges/pageInfo have to be generated as non-aliased fields (since product + // code may be accessing the non-aliased response keys). But for streaming + // mode we need to generate @stream/@defer directives on these fields *and* + // we prefer to avoid generating extra selections (we want one payload per + // item, not two as could happen with separate @stream directives on the + // aliased and non-aliased edges fields). So we keep things simple by + // disallowing aliases on edges/pageInfo in streaming mode. + + + if (edgesSelection && edgesSelection.alias != null) { + if (stream) { + throw createUserError("@stream_connection does not support aliasing the '".concat(EDGES, "' field."), [edgesSelection.loc]); + } + + edgesSelection = null; + } + + if (pageInfoSelection && pageInfoSelection.alias != null) { + if (stream) { + throw createUserError("@stream_connection does not support aliasing the '".concat(PAGE_INFO, "' field."), [pageInfoSelection.loc]); + } + + pageInfoSelection = null; + } // Separately create transformed versions of edges/pageInfo so that we can + // later replace the originals at the same point within the selection array + + + var transformedEdgesSelection = edgesSelection; + var transformedPageInfoSelection = pageInfoSelection; + var edgesType = nullableType.getFields()[EDGES].type; + var pageInfoType = nullableType.getFields()[PAGE_INFO].type; + + if (transformedEdgesSelection == null) { + transformedEdgesSelection = { + alias: null, + args: [], + directives: [], + handles: null, + kind: 'LinkedField', + loc: derivedLocation, + metadata: null, + name: EDGES, + selections: [], + type: edgesType + }; + } + + if (transformedPageInfoSelection == null) { + transformedPageInfoSelection = { + alias: null, + args: [], + directives: [], + handles: null, + kind: 'LinkedField', + loc: derivedLocation, + metadata: null, + name: PAGE_INFO, + selections: [], + type: pageInfoType + }; + } // Generate (additional) fields on pageInfo and add to the transformed + // pageInfo field + + + var pageInfoRawType = SchemaUtils.getRawType(pageInfoType); + var pageInfoText; + + if (direction === 'forward') { + pageInfoText = "fragment PageInfo on ".concat(String(pageInfoRawType), " {\n ").concat(END_CURSOR, "\n ").concat(HAS_NEXT_PAGE, "\n }"); + } else if (direction === 'backward') { + pageInfoText = "fragment PageInfo on ".concat(String(pageInfoRawType), " {\n ").concat(HAS_PREV_PAGE, "\n ").concat(START_CURSOR, "\n }"); + } else { + pageInfoText = "fragment PageInfo on ".concat(String(pageInfoRawType), " {\n ").concat(END_CURSOR, "\n ").concat(HAS_NEXT_PAGE, "\n ").concat(HAS_PREV_PAGE, "\n ").concat(START_CURSOR, "\n }"); + } + + var pageInfoAst = parse(pageInfoText); + var pageInfoFragment = RelayParser.transform(context.clientSchema, [pageInfoAst.definitions[0]])[0]; + + if (transformedPageInfoSelection.kind !== 'LinkedField') { + throw createCompilerError('RelayConnectionTransform: Expected generated pageInfo selection to be ' + 'a LinkedField', [field.loc]); + } + + transformedPageInfoSelection = (0, _objectSpread2["default"])({}, transformedPageInfoSelection, { + selections: [].concat((0, _toConsumableArray2["default"])(transformedPageInfoSelection.selections), [{ + directives: [], + kind: 'InlineFragment', + loc: derivedLocation, + metadata: null, + typeCondition: pageInfoFragment.type, + selections: pageInfoFragment.selections + }]) + }); // When streaming the pageInfo field has to be deferred + + if (deferDirective != null) { + transformedPageInfoSelection = { + directives: [deferDirective], + kind: 'InlineFragment', + loc: derivedLocation, + metadata: null, + typeCondition: nullableType, + selections: [transformedPageInfoSelection] + }; + } // Generate additional fields on edges and append to the transformed edges + // selection + + + var edgeText = "\n fragment Edges on ".concat(String(SchemaUtils.getRawType(edgesType)), " {\n ").concat(CURSOR, "\n ").concat(NODE, " {\n __typename # rely on GenerateRequisiteFieldTransform to add \"id\"\n }\n }\n "); + var edgeAst = parse(edgeText); + var edgeFragment = RelayParser.transform(context.clientSchema, [edgeAst.definitions[0]])[0]; // When streaming the edges field needs @stream + + transformedEdgesSelection = (0, _objectSpread2["default"])({}, transformedEdgesSelection, { + directives: streamDirective != null ? [].concat((0, _toConsumableArray2["default"])(transformedEdgesSelection.directives), [streamDirective]) : transformedEdgesSelection.directives, + selections: [].concat((0, _toConsumableArray2["default"])(transformedEdgesSelection.selections), [{ + directives: [], + kind: 'InlineFragment', + loc: derivedLocation, + metadata: null, + typeCondition: edgeFragment.type, + selections: edgeFragment.selections + }]) + }); // Copy the original selections, replacing edges/pageInfo (if present) + // with the generated locations. This is to maintain the original field + // ordering. + + var selections = field.selections.map(function (selection) { + if (transformedEdgesSelection != null && edgesSelection != null && selection === edgesSelection) { + return transformedEdgesSelection; + } else if (transformedPageInfoSelection != null && pageInfoSelection != null && selection === pageInfoSelection) { + return transformedPageInfoSelection; + } else { + return selection; + } + }); // If edges/pageInfo were missing, append the generated versions instead. + + if (edgesSelection == null && transformedEdgesSelection != null) { + selections.push(transformedEdgesSelection); + } + + if (pageInfoSelection == null && transformedPageInfoSelection != null) { + selections.push(transformedPageInfoSelection); + } + + return selections; +} + +function findArg(field, argName) { + return field.args && field.args.find(function (arg) { + return arg.name === argName; + }); +} +/** + * @internal + * + * Validates that the selection is a valid connection: + * - Specifies a first or last argument to prevent accidental, unconstrained + * data access. + * - Has an `edges` selection, otherwise there is nothing to paginate. + * + * TODO: This implementation requires the edges field to be a direct selection + * and not contained within an inline fragment or fragment spread. It's + * technically possible to remove this restriction if this pattern becomes + * common/necessary. + */ + + +function validateConnectionSelection(field) { + var _ConnectionInterface$2 = ConnectionInterface.get(), + EDGES = _ConnectionInterface$2.EDGES; + + if (!findArg(field, FIRST) && !findArg(field, LAST)) { + throw createUserError("Expected field '".concat(field.name, "' to have a '").concat(FIRST, "' or '").concat(LAST, "' ") + 'argument.', [field.loc]); + } + + if (!field.selections.some(function (selection) { + return selection.kind === 'LinkedField' && selection.name === EDGES; + })) { + throw createUserError("Expected field '".concat(field.name, "' to have an '").concat(EDGES, "' selection."), [field.loc]); + } +} +/** + * @internal + * + * Validates that the type satisfies the Connection specification: + * - The type has an edges field, and edges have scalar `cursor` and object + * `node` fields. + * - The type has a page info field which is an object with the correct + * subfields. + */ + + +function validateConnectionType(field, nullableType, connectionDirective) { + var directiveName = connectionDirective.name; + + var _ConnectionInterface$3 = ConnectionInterface.get(), + CURSOR = _ConnectionInterface$3.CURSOR, + EDGES = _ConnectionInterface$3.EDGES, + END_CURSOR = _ConnectionInterface$3.END_CURSOR, + HAS_NEXT_PAGE = _ConnectionInterface$3.HAS_NEXT_PAGE, + HAS_PREV_PAGE = _ConnectionInterface$3.HAS_PREV_PAGE, + NODE = _ConnectionInterface$3.NODE, + PAGE_INFO = _ConnectionInterface$3.PAGE_INFO, + START_CURSOR = _ConnectionInterface$3.START_CURSOR; + + var typeName = String(nullableType); + var typeFields = nullableType.getFields(); + var edges = typeFields[EDGES]; + + if (edges == null) { + throw createUserError("@".concat(directiveName, " used on invalid field '").concat(field.name, "'. Expected the ") + "field type '".concat(typeName, "' to have an '").concat(EDGES, "' field"), [field.loc]); + } + + var edgesType = SchemaUtils.getNullableType(edges.type); + + if (!(edgesType instanceof GraphQLList)) { + throw createUserError("@".concat(directiveName, " used on invalid field '").concat(field.name, "'. Expected the ") + "field type '".concat(typeName, "' to have an '").concat(EDGES, "' field that returns ") + 'a list of objects.', [field.loc]); + } + + var edgeType = SchemaUtils.getNullableType(edgesType.ofType); + + if (!(edgeType instanceof GraphQLObjectType) && !(edgeType instanceof GraphQLInterfaceType)) { + throw createUserError("@".concat(directiveName, " used on invalid field '").concat(field.name, "'. Expected the ") + "field type '".concat(typeName, "' to have an '").concat(EDGES, "' field that returns ") + 'a list of objects.', [field.loc]); + } + + var node = edgeType.getFields()[NODE]; + + if (node == null) { + throw createUserError("@".concat(directiveName, " used on invalid field '").concat(field.name, "'. Expected the ") + "field type '".concat(typeName, "' to have an '").concat(EDGES, " { ").concat(NODE, " }' field ") + 'that returns an object, interface, or union.', [field.loc]); + } + + var nodeType = SchemaUtils.getNullableType(node.type); + + if (!(nodeType instanceof GraphQLInterfaceType || nodeType instanceof GraphQLUnionType || nodeType instanceof GraphQLObjectType)) { + throw createUserError("@".concat(directiveName, " used on invalid field '").concat(field.name, "'. Expected the ") + "field type '".concat(typeName, "' to have an '").concat(EDGES, " { ").concat(NODE, " }' field ") + 'that returns an object, interface, or union.', [field.loc]); + } + + var cursor = edgeType.getFields()[CURSOR]; + + if (cursor == null || !(SchemaUtils.getNullableType(cursor.type) instanceof GraphQLScalarType)) { + throw createUserError("@".concat(directiveName, " used on invalid field '").concat(field.name, "'. Expected the ") + "field type '".concat(typeName, "' to have an '").concat(EDGES, " { ").concat(CURSOR, " }' field ") + 'that returns a scalar value.', [field.loc]); + } + + var pageInfo = typeFields[PAGE_INFO]; + + if (pageInfo == null) { + throw createUserError("@".concat(directiveName, " used on invalid field '").concat(field.name, "'. Expected the ") + "field type '".concat(typeName, "' to have a '").concat(PAGE_INFO, "' field that returns ") + 'an object.', [field.loc]); + } + + var pageInfoType = SchemaUtils.getNullableType(pageInfo.type); + + if (!(pageInfoType instanceof GraphQLObjectType)) { + throw createUserError("@".concat(directiveName, " used on invalid field '").concat(field.name, "'. Expected the ") + "field type '".concat(typeName, "' to have a '").concat(PAGE_INFO, "' field that ") + 'returns an object.', [field.loc]); + } + + [END_CURSOR, HAS_NEXT_PAGE, HAS_PREV_PAGE, START_CURSOR].forEach(function (fieldName) { + var pageInfoField = pageInfoType.getFields()[fieldName]; + + if (pageInfoField == null || !(SchemaUtils.getNullableType(pageInfoField.type) instanceof GraphQLScalarType)) { + throw createUserError("@".concat(directiveName, " used on invalid field '").concat(field.name, "'. Expected ") + "the field type '".concat(typeName, "' to have a '").concat(PAGE_INFO, " { ").concat(fieldName, " }' ") + 'field returns a scalar.', [field.loc]); + } + }); +} + +module.exports = { + CONNECTION: CONNECTION, + SCHEMA_EXTENSION: SCHEMA_EXTENSION, + transform: relayConnectionTransform +}; + +/***/ }), +/* 136 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var AFTER = 'after'; +var BEFORE = 'before'; +var FIRST = 'first'; +var KEY = 'key'; +var LAST = 'last'; +module.exports = { + AFTER: AFTER, + BEFORE: BEFORE, + FIRST: FIRST, + KEY: KEY, + LAST: LAST +}; + +/***/ }), +/* 137 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +var _require = __webpack_require__(8), + getNullableType = _require.getNullableType; + +var _require2 = __webpack_require__(9), + createUserError = _require2.createUserError; + +var _require3 = __webpack_require__(1), + GraphQLList = _require3.GraphQLList; + +/** + * This transform finds usages of @defer and @stream, validates them, and + * converts the using node to specialized IR nodes (Defer/Stream). + */ +function relayDeferStreamTransform(context) { + return IRTransformer.transform(context, { + // TODO: type IRTransformer to allow changing result type + FragmentSpread: visitFragmentSpread, + // TODO: type IRTransformer to allow changing result type + InlineFragment: visitInlineFragment, + // TODO: type IRTransformer to allow changing result type + LinkedField: visitLinkedField, + ScalarField: visitScalarField + }, function (sourceNode) { + var labels = new Map(); + return { + documentName: sourceNode.name, + recordLabel: function recordLabel(label, directive) { + var prevDirective = labels.get(label); + + if (prevDirective) { + var _ref; + + var labelArg = directive.args.find(function (_ref6) { + var name = _ref6.name; + return name === 'label'; + }); + var prevLabelArg = prevDirective.args.find(function (_ref7) { + var name = _ref7.name; + return name === 'label'; + }); + var previousLocation = (_ref = prevLabelArg === null || prevLabelArg === void 0 ? void 0 : prevLabelArg.loc) !== null && _ref !== void 0 ? _ref : prevDirective.loc; + + if (labelArg) { + throw createUserError("Invalid use of @".concat(directive.name, ", the provided label is ") + "not unique. Specify a unique 'label' as a literal string.", [labelArg === null || labelArg === void 0 ? void 0 : labelArg.loc, previousLocation]); + } else { + throw createUserError("Invalid use of @".concat(directive.name, ", could not generate a ") + "default label that is unique. Specify a unique 'label' " + 'as a literal string.', [directive.loc, previousLocation]); + } + } + + labels.set(label, directive); + } + }; + }); +} + +function visitLinkedField(field, state) { + var _ref2, _getLiteralStringArgu, _ref3; + + var transformedField = this.traverse(field, state); + var streamDirective = transformedField.directives.find(function (directive) { + return directive.name === 'stream'; + }); + + if (streamDirective == null) { + return transformedField; + } + + var type = getNullableType(field.type); + + if (!(type instanceof GraphQLList)) { + throw createUserError("Invalid use of @stream on non-plural field '".concat(field.name, "'"), [streamDirective.loc]); + } + + transformedField = (0, _objectSpread2["default"])({}, transformedField, { + directives: transformedField.directives.filter(function (directive) { + return directive.name !== 'stream'; + }) + }); + var ifArg = streamDirective.args.find(function (arg) { + return arg.name === 'if'; + }); + + if (isLiteralFalse(ifArg)) { + return transformedField; + } + + var initialCount = streamDirective.args.find(function (arg) { + return arg.name === 'initial_count'; + }); + + if (initialCount == null) { + throw createUserError("Invalid use of @stream, the 'initial_count' argument is required.", [streamDirective.loc]); + } + + var label = (_ref2 = (_getLiteralStringArgu = getLiteralStringArgument(streamDirective, 'label')) !== null && _getLiteralStringArgu !== void 0 ? _getLiteralStringArgu : field.alias) !== null && _ref2 !== void 0 ? _ref2 : field.name; + var transformedLabel = transformLabel(state.documentName, 'stream', label); + state.recordLabel(transformedLabel, streamDirective); + return { + "if": (_ref3 = ifArg === null || ifArg === void 0 ? void 0 : ifArg.value) !== null && _ref3 !== void 0 ? _ref3 : null, + initialCount: initialCount.value, + kind: 'Stream', + label: transformedLabel, + loc: { + kind: 'Derived', + source: streamDirective.loc + }, + metadata: null, + selections: [transformedField] + }; +} + +function visitScalarField(field, state) { + var streamDirective = field.directives.find(function (directive) { + return directive.name === 'stream'; + }); + + if (streamDirective != null) { + throw createUserError("Invalid use of @stream on scalar field '".concat(field.name, "'"), [streamDirective.loc]); + } + + return this.traverse(field, state); +} + +function visitInlineFragment(fragment, state) { + var _getLiteralStringArgu2, _ref4; + + var transformedFragment = this.traverse(fragment, state); + var deferDirective = transformedFragment.directives.find(function (directive) { + return directive.name === 'defer'; + }); + + if (deferDirective == null) { + return transformedFragment; + } + + transformedFragment = (0, _objectSpread2["default"])({}, transformedFragment, { + directives: transformedFragment.directives.filter(function (directive) { + return directive.name !== 'defer'; + }) + }); + var ifArg = deferDirective.args.find(function (arg) { + return arg.name === 'if'; + }); + + if (isLiteralFalse(ifArg)) { + return transformedFragment; + } + + var label = (_getLiteralStringArgu2 = getLiteralStringArgument(deferDirective, 'label')) !== null && _getLiteralStringArgu2 !== void 0 ? _getLiteralStringArgu2 : fragment.typeCondition.name; + var transformedLabel = transformLabel(state.documentName, 'defer', label); + state.recordLabel(transformedLabel, deferDirective); + return { + "if": (_ref4 = ifArg === null || ifArg === void 0 ? void 0 : ifArg.value) !== null && _ref4 !== void 0 ? _ref4 : null, + kind: 'Defer', + label: transformedLabel, + loc: { + kind: 'Derived', + source: deferDirective.loc + }, + metadata: null, + selections: [transformedFragment] + }; +} + +function visitFragmentSpread(spread, state) { + var _getLiteralStringArgu3, _ref5; + + var transformedSpread = this.traverse(spread, state); + var deferDirective = transformedSpread.directives.find(function (directive) { + return directive.name === 'defer'; + }); + + if (deferDirective == null) { + return transformedSpread; + } + + transformedSpread = (0, _objectSpread2["default"])({}, transformedSpread, { + directives: transformedSpread.directives.filter(function (directive) { + return directive.name !== 'defer'; + }) + }); + var ifArg = deferDirective.args.find(function (arg) { + return arg.name === 'if'; + }); + + if (isLiteralFalse(ifArg)) { + return transformedSpread; + } + + var label = (_getLiteralStringArgu3 = getLiteralStringArgument(deferDirective, 'label')) !== null && _getLiteralStringArgu3 !== void 0 ? _getLiteralStringArgu3 : spread.name; + var transformedLabel = transformLabel(state.documentName, 'defer', label); + state.recordLabel(transformedLabel, deferDirective); + return { + "if": (_ref5 = ifArg === null || ifArg === void 0 ? void 0 : ifArg.value) !== null && _ref5 !== void 0 ? _ref5 : null, + kind: 'Defer', + label: transformedLabel, + loc: { + kind: 'Derived', + source: deferDirective.loc + }, + metadata: null, + selections: [transformedSpread] + }; +} + +function getLiteralStringArgument(directive, argName) { + var arg = directive.args.find(function (_ref8) { + var name = _ref8.name; + return name === argName; + }); + + if (arg == null) { + return null; + } + + var value = arg.value.kind === 'Literal' ? arg.value.value : null; + + if (value == null || typeof value !== 'string') { + throw createUserError("Expected the '".concat(argName, "' value to @").concat(directive.name, " to be a string literal if provided."), [arg.value.loc]); + } + + return value; +} + +function transformLabel(parentName, directive, label) { + return "".concat(parentName, "$").concat(directive, "$").concat(label); +} + +function isLiteralFalse(arg) { + return arg != null && arg.value.kind === 'Literal' && arg.value.value === false; +} + +module.exports = { + transform: relayDeferStreamTransform +}; + +/***/ }), +/* 138 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +var invariant = __webpack_require__(4); + +var _require = __webpack_require__(1), + GraphQLString = _require.GraphQLString; + +var _require2 = __webpack_require__(19), + getRelayHandleKey = _require2.getRelayHandleKey; + +function relayFieldHandleTransform(context) { + return IRTransformer.transform(context, { + LinkedField: visitField, + ScalarField: visitField + }); +} +/** + * @internal + */ + + +function visitField(field) { + if (field.kind === 'LinkedField') { + field = this.traverse(field); + } + + var handles = field.handles; + + if (!handles || !handles.length) { + return field; + } // ensure exactly one handle + + + !(handles.length === 1) ? true ? invariant(false, 'RelayFieldHandleTransform: Expected fields to have at most one ' + '"handle" property, got `%s`.', handles.join(', ')) : undefined : void 0; + var alias = field.alias || field.name; + var handle = handles[0]; + var name = getRelayHandleKey(handle.name, handle.key, field.name); + var filters = handle.filters; + var args = filters ? field.args.filter(function (arg) { + return filters.indexOf(arg.name) !== -1; + }) : []; // T45504512: new connection model + + if (handle.dynamicKey != null) { + args.push({ + kind: 'Argument', + loc: handle.dynamicKey.loc, + metadata: null, + name: '__dynamicKey', + type: GraphQLString, + value: handle.dynamicKey + }); + } + + return (0, _objectSpread2["default"])({}, field, { + args: args, + alias: alias, + name: name, + handles: null + }); +} + +module.exports = { + transform: relayFieldHandleTransform +}; + +/***/ }), +/* 139 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +var SchemaUtils = __webpack_require__(8); + +var _require = __webpack_require__(49), + hasUnaliasedSelection = _require.hasUnaliasedSelection; + +var _require2 = __webpack_require__(1), + assertAbstractType = _require2.assertAbstractType, + assertCompositeType = _require2.assertCompositeType, + assertLeafType = _require2.assertLeafType; + +var canHaveSelections = SchemaUtils.canHaveSelections, + getRawType = SchemaUtils.getRawType, + generateIDField = SchemaUtils.generateIDField, + hasID = SchemaUtils.hasID, + implementsInterface = SchemaUtils.implementsInterface, + isAbstractType = SchemaUtils.isAbstractType, + mayImplement = SchemaUtils.mayImplement; +var ID = 'id'; +var ID_TYPE = 'ID'; +var NODE_TYPE = 'Node'; + +/** + * A transform that adds an `id` field on any type that has an id field but + * where there is no unaliased `id` selection. + */ +function relayGenerateIDFieldTransform(context) { + var idType = assertLeafType(context.serverSchema.getType(ID_TYPE)); + var idField = generateIDField(idType); + var state = { + idField: idField + }; + return IRTransformer.transform(context, { + LinkedField: visitLinkedField + }, function () { + return state; + }); +} + +function visitLinkedField(field, state) { + var transformedNode = this.traverse(field, state); // If the field already has an unaliased `id` field, do nothing + + if (hasUnaliasedSelection(field, ID)) { + return transformedNode; + } + + var context = this.getContext(); + var schema = context.serverSchema; + var unmodifiedType = assertCompositeType(getRawType(field.type)); // If the field type has an `id` subfield add an `id` selection + + if (canHaveSelections(unmodifiedType) && hasID(schema, unmodifiedType)) { + return (0, _objectSpread2["default"])({}, transformedNode, { + selections: [].concat((0, _toConsumableArray2["default"])(transformedNode.selections), [state.idField]) + }); + } // If the field type is abstract, then generate a `... on Node { id }` + // fragment if *any* concrete type implements Node. Then generate a + // `... on PossibleType { id }` for every concrete type that does *not* + // implement `Node` + + + if (isAbstractType(unmodifiedType)) { + var selections = (0, _toConsumableArray2["default"])(transformedNode.selections); + + if (mayImplement(schema, unmodifiedType, NODE_TYPE)) { + var nodeType = assertCompositeType(schema.getType(NODE_TYPE)); + selections.push(buildIDFragment(nodeType, state.idField)); + } + + var abstractType = assertAbstractType(unmodifiedType); + schema.getPossibleTypes(abstractType).forEach(function (possibleType) { + if (!implementsInterface(possibleType, NODE_TYPE) && hasID(schema, possibleType)) { + selections.push(buildIDFragment(possibleType, state.idField)); + } + }); + return (0, _objectSpread2["default"])({}, transformedNode, { + selections: selections + }); + } + + return transformedNode; +} +/** + * @internal + * + * Returns IR for `... on FRAGMENT_TYPE { id }` + */ + + +function buildIDFragment(fragmentType, idField) { + return { + kind: 'InlineFragment', + directives: [], + loc: { + kind: 'Generated' + }, + metadata: null, + typeCondition: fragmentType, + selections: [idField] + }; +} + +module.exports = { + transform: relayGenerateIDFieldTransform +}; + +/***/ }), +/* 140 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +var SchemaUtils = __webpack_require__(8); + +var _require = __webpack_require__(49), + hasUnaliasedSelection = _require.hasUnaliasedSelection; + +var _require2 = __webpack_require__(1), + assertLeafType = _require2.assertLeafType; + +var isAbstractType = SchemaUtils.isAbstractType; +var TYPENAME_KEY = '__typename'; +var STRING_TYPE = 'String'; +var cache = new Map(); +/** + * A transform that adds `__typename` field on any `LinkedField` of a union or + * interface type where there is no unaliased `__typename` selection. + */ + +function relayGenerateTypeNameTransform(context) { + cache = new Map(); + var stringType = assertLeafType(context.serverSchema.getType(STRING_TYPE)); + var typenameField = { + kind: 'ScalarField', + alias: null, + args: [], + directives: [], + handles: null, + loc: { + kind: 'Generated' + }, + metadata: null, + name: TYPENAME_KEY, + type: stringType + }; + var state = { + typenameField: typenameField + }; + return IRTransformer.transform(context, { + LinkedField: visitLinkedField + }, function () { + return state; + }); +} + +function visitLinkedField(field, state) { + var transformedNode = cache.get(field); + + if (transformedNode != null) { + return transformedNode; + } + + transformedNode = this.traverse(field, state); + + if (isAbstractType(transformedNode.type) && !hasUnaliasedSelection(transformedNode, TYPENAME_KEY)) { + transformedNode = (0, _objectSpread2["default"])({}, transformedNode, { + selections: [state.typenameField].concat((0, _toConsumableArray2["default"])(transformedNode.selections)) + }); + } + + cache.set(field, transformedNode); + return transformedNode; +} + +module.exports = { + transform: relayGenerateTypeNameTransform +}; + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _require = __webpack_require__(8), + getRawType = _require.getRawType; + +var _require2 = __webpack_require__(1), + GraphQLNonNull = _require2.GraphQLNonNull, + GraphQLList = _require2.GraphQLList; + +/** + * Determine if a type is the same type (same name and class) as another type. + * Needed if we're comparing IRs created at different times: we don't yet have + * an IR schema, so the type we assign to an IR field could be !== than + * what we assign to it after adding some schema definitions or extensions. + */ +function isEquivalentType(typeA, typeB) { + // Easy short-circuit: equal types are equal. + if (typeA === typeB) { + return true; + } // If either type is non-null, the other must also be non-null. + + + if (typeA instanceof GraphQLNonNull && typeB instanceof GraphQLNonNull) { + return isEquivalentType(typeA.ofType, typeB.ofType); + } // If either type is a list, the other must also be a list. + + + if (typeA instanceof GraphQLList && typeB instanceof GraphQLList) { + return isEquivalentType(typeA.ofType, typeB.ofType); + } // Make sure the two types are of the same class + + + if (typeA.constructor.name === typeB.constructor.name) { + var rawA = getRawType(typeA); + var rawB = getRawType(typeB); // And they must have the exact same name + + return rawA.name === rawB.name; + } // Otherwise the types are not equal. + + + return false; +} + +module.exports = isEquivalentType; + +/***/ }), +/* 142 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +/** + * A transform that removes field `handles`. Intended for use when e.g. + * printing queries to send to a GraphQL server. + */ +function relaySkipHandleFieldTransform(context) { + return IRTransformer.transform(context, { + LinkedField: visitField, + ScalarField: visitField + }); +} + +function visitField(field) { + var transformedNode = this.traverse(field); + + if (transformedNode.handles) { + return (0, _objectSpread2["default"])({}, transformedNode, { + handles: null + }); + } + + return transformedNode; +} + +module.exports = { + transform: relaySkipHandleFieldTransform +}; + +/***/ }), +/* 143 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +var getNormalizationOperationName = __webpack_require__(52); + +/** + * This transform creates a SplitOperation root for every ModuleImport. + */ +function relaySplitMatchTransform(context) { + var splitOperations = new Map(); + var transformedContext = IRTransformer.transform(context, { + LinkedField: visitLinkedField, + InlineFragment: visitInlineFragment, + ModuleImport: visitModuleImport + }, function (node) { + return { + parentType: node.type, + splitOperations: splitOperations + }; + }); + return transformedContext.addAll(Array.from(splitOperations.values())); +} + +function visitLinkedField(field, state) { + return this.traverse(field, { + parentType: field.type, + splitOperations: state.splitOperations + }); +} + +function visitInlineFragment(fragment, state) { + return this.traverse(fragment, { + parentType: fragment.typeCondition, + splitOperations: state.splitOperations + }); +} + +function visitModuleImport(node, state) { + // It's possible for the same fragment to be selected in multiple usages + // of @module: skip processing a node if its SplitOperation has already + // been generated + var normalizationName = getNormalizationOperationName(node.name); + + if (state.splitOperations.has(normalizationName)) { + return node; + } + + var transformedNode = this.traverse(node, state); + var splitOperation = { + kind: 'SplitOperation', + name: normalizationName, + selections: transformedNode.selections, + loc: { + kind: 'Derived', + source: node.loc + }, + metadata: { + derivedFrom: transformedNode.name + }, + type: state.parentType + }; + state.splitOperations.set(normalizationName, splitOperation); + return transformedNode; +} + +module.exports = { + transform: relaySplitMatchTransform +}; + +/***/ }), +/* 144 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2004-present Facebook. All Rights Reserved. + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + * @emails oncall+relay + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var CompilerContext = __webpack_require__(3); + +var IRTransformer = __webpack_require__(5); + +var _require = __webpack_require__(1), + getNullableType = _require.getNullableType, + isEnumType = _require.isEnumType, + isNullableType = _require.isNullableType, + isListType = _require.isListType; + +// The purpose of this directive is to add GraphQL type inform for fields in +// the operation selection in order to use in in RelayMockPayloadGenerator +// to generate better mock values, and expand the API of MockResolvers +var SCHEMA_EXTENSION = 'directive @relay_test_operation on QUERY | MUTATION | SUBSCRIPTION'; + +function testOperationDirective(context) { + return IRTransformer.transform(context, { + Fragment: function Fragment(node) { + return node; + }, + Root: visitRoot, + SplitOperation: function SplitOperation(node) { + return node; + } + }); +} + +function getTypeDetails(fieldType) { + var nullableType = getNullableType(fieldType); + var isNullable = isNullableType(fieldType); + var isPlural = isListType(nullableType); + var type = isListType(nullableType) ? getNullableType(nullableType.ofType) : nullableType; + return { + type: isListType(type) ? String(type) : type != null ? type.name : 'String', + enumValues: isEnumType(type) ? type.getValues().map(function (val) { + return val.value; + }) : null, + plural: isPlural, + nullable: isNullable + }; +} + +function visitRoot(node) { + var testDirective = node.directives.find(function (directive) { + return directive.name === 'relay_test_operation'; + }); + + if (testDirective == null) { + return node; + } + + var context = this.getContext(); + var queue = [{ + selections: node.selections, + path: [] + }]; + var selectionsTypeInfo = {}; + + var _loop = function _loop() { + var _queue$pop = queue.pop(), + currentSelections = _queue$pop.selections, + path = _queue$pop.path; + + currentSelections.forEach(function (selection) { + switch (selection.kind) { + case 'FragmentSpread': + var fragment = context.get(selection.name); + + if (fragment != null) { + queue.unshift({ + selections: fragment.selections, + path: path + }); + } + + break; + + case 'ScalarField': + { + var _selection$alias; + + var nextPath = [].concat((0, _toConsumableArray2["default"])(path), [(_selection$alias = selection.alias) !== null && _selection$alias !== void 0 ? _selection$alias : selection.name]); + selectionsTypeInfo[nextPath.join('.')] = getTypeDetails(selection.type); + break; + } + + case 'LinkedField': + { + var _selection$alias2; + + var _nextPath = [].concat((0, _toConsumableArray2["default"])(path), [(_selection$alias2 = selection.alias) !== null && _selection$alias2 !== void 0 ? _selection$alias2 : selection.name]); + + selectionsTypeInfo[_nextPath.join('.')] = getTypeDetails(selection.type); + queue.unshift({ + selections: selection.selections, + path: _nextPath + }); + break; + } + + case 'Condition': + case 'ClientExtension': + case 'Defer': + case 'InlineFragment': + case 'ModuleImport': + case 'Stream': + queue.unshift({ + selections: selection.selections, + path: path + }); + break; + + default: + selection; + break; + } + }); + }; + + while (queue.length > 0) { + _loop(); + } + + return (0, _objectSpread2["default"])({}, node, { + directives: node.directives.filter(function (directive) { + return directive !== testDirective; + }), + metadata: (0, _objectSpread2["default"])({}, node.metadata || {}, { + relayTestingSelectionTypeInfo: selectionsTypeInfo + }) + }); +} + +module.exports = { + SCHEMA_EXTENSION: SCHEMA_EXTENSION, + transform: testOperationDirective +}; + +/***/ }), +/* 145 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var GraphQLCompilerContext = __webpack_require__(3); + +var GraphQLIRTransformer = __webpack_require__(5); + +function skipClientExtensionTransform(context) { + return GraphQLIRTransformer.transform(context, { + Fragment: visitFragment, + ClientExtension: visitClientExtension + }); +} + +function visitFragment(node) { + var _this$getContext = this.getContext(), + serverSchema = _this$getContext.serverSchema; + + if (serverSchema.getType(node.type.name)) { + return this.traverse(node); + } + + return null; +} + +function visitClientExtension(node, state) { + return null; +} + +module.exports = { + transform: skipClientExtensionTransform +}; + +/***/ }), +/* 146 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var GraphQLCompilerContext = __webpack_require__(3); + +var GraphQLIRTransformer = __webpack_require__(5); + +var IMap = __webpack_require__(21).Map; + +var partitionArray = __webpack_require__(42); + +var getIdentifierForSelection = __webpack_require__(47); + +var invariant = __webpack_require__(4); + +/** + * A transform that removes redundant fields and fragment spreads. Redundancy is + * defined in this context as any selection that is guaranteed to already be + * fetched by an ancestor selection. This can occur in two cases: + * + * 1. Simple duplicates at the same level of the document can always be skipped: + * + * ``` + * fragment Foo on FooType { + * id + * id + * ...Bar + * ...Bar + * } + * ``` + * + * Becomes + * + * ``` + * fragment Foo on FooType { + * id + * ...Bar + * } + * ``` + * + * 2. Inline fragments and conditions introduce the possibility for duplication + * at different levels of the tree. Whenever a selection is fetched in a parent, + * it is redundant to also fetch it in a child: + * + * ``` + * fragment Foo on FooType { + * id + * ... on OtherType { + * id # 1 + * } + * ... on FooType @include(if: $cond) { + * id # 2 + * } + * } + * ``` + * + * Becomes: + * + * ``` + * fragment Foo on FooType { + * id + * } + * ``` + * + * In this example: + * - 1 can be skipped because `id` is already fetched by the parent. Even + * though the type is different (FooType/OtherType), the inline fragment + * cannot match without the outer fragment matching so the outer `id` is + * guaranteed to already be fetched. + * - 2 can be skipped for similar reasons: it doesn't matter if the condition + * holds, `id` is already fetched by the parent regardless. + * + * This transform also handles more complicated cases in which selections are + * nested: + * + * ``` + * fragment Foo on FooType { + * a { + * bb + * } + * ... on OtherType { + * a { + * bb # 1 + * cc + * } + * } + * } + * ``` + * + * Becomes + * + * ``` + * fragment Foo on FooType { + * a { + * bb + * } + * ... on OtherType { + * a { + * cc + * } + * } + * } + * ``` + * + * 1 can be skipped because it is already fetched at the outer level. + */ +function skipRedundantNodesTransform(context) { + return GraphQLIRTransformer.transform(context, { + Root: visitNode, + Fragment: visitNode + }); +} + +var cache = new Map(); + +function visitNode(node) { + cache = new Map(); + return transformNode(node, new IMap()).node; +} +/** + * The most straightforward approach would be two passes: one to record the + * structure of the document, one to prune duplicates. This implementation uses + * a single pass. Selections are sorted with fields first, "conditionals" + * (inline fragments & conditions) last. This means that all fields that are + * guaranteed to be fetched are encountered prior to any duplicates that may be + * fetched within a conditional. + * + * Because selections fetched within a conditional are not guaranteed to be + * fetched in the parent, a fork of the selection map is created when entering a + * conditional. The sort ensures that guaranteed fields have already been seen + * prior to the clone. + */ + + +function transformNode(node, selectionMap) { + // This will optimize a traversal of the same subselections. + // If it's the same node, and selectionMap is empty + // result of transformNode has to be the same. + var isEmptySelectionMap = selectionMap.size === 0; + var result; + + if (isEmptySelectionMap) { + result = cache.get(node); + + if (result != null) { + return result; + } + } + + var selections = []; + sortSelections(node.selections).forEach(function (selection) { + var identifier = getIdentifierForSelection(selection); + + switch (selection.kind) { + case 'ScalarField': + case 'FragmentSpread': + { + if (!selectionMap.has(identifier)) { + selections.push(selection); + selectionMap = selectionMap.set(identifier, null); + } + + break; + } + + case 'Defer': + case 'Stream': + case 'ModuleImport': + case 'ClientExtension': + case 'LinkedField': + { + var transformed = transformNode(selection, selectionMap.get(identifier) || new IMap()); + + if (transformed.node) { + selections.push(transformed.node); + selectionMap = selectionMap.set(identifier, transformed.selectionMap); + } + + break; + } + + case 'InlineFragment': + case 'Condition': + { + // Fork the selection map to prevent conditional selections from + // affecting the outer "guaranteed" selections. + var _transformed = transformNode(selection, selectionMap.get(identifier) || selectionMap); + + if (_transformed.node) { + selections.push(_transformed.node); + selectionMap = selectionMap.set(identifier, _transformed.selectionMap); + } + + break; + } + + default: + selection; + true ? true ? invariant(false, 'SkipRedundantNodesTransform: Unexpected node kind `%s`.', selection.kind) : undefined : undefined; + } + }); + var nextNode = selections.length ? (0, _objectSpread2["default"])({}, node, { + selections: selections + }) : null; + result = { + selectionMap: selectionMap, + node: nextNode + }; + + if (isEmptySelectionMap) { + cache.set(node, result); + } + + return result; +} +/** + * Sort inline fragments and conditions after other selections. + */ + + +function sortSelections(selections) { + var isScalarOrLinkedField = function isScalarOrLinkedField(selection) { + return selection.kind === 'ScalarField' || selection.kind === 'LinkedField'; + }; + + var _partitionArray = partitionArray(selections, isScalarOrLinkedField), + scalarsAndLinkedFields = _partitionArray[0], + rest = _partitionArray[1]; + + return [].concat((0, _toConsumableArray2["default"])(scalarsAndLinkedFields), (0, _toConsumableArray2["default"])(rest)); +} + +module.exports = { + transform: skipRedundantNodesTransform +}; + +/***/ }), +/* 147 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var GraphQLCompilerContext = __webpack_require__(3); + +var GraphQLIRTransformer = __webpack_require__(5); + +var invariant = __webpack_require__(4); + +var FAIL = 'fail'; +var PASS = 'pass'; +var VARIABLE = 'variable'; +/** + * A tranform that removes unreachable IR nodes from all documents in a corpus. + * The following nodes are removed: + * - Any node with `@include(if: false)` + * - Any node with `@skip(if: true)` + * - Any node with empty `selections` + */ + +function skipUnreachableNodeTransform(context) { + var fragments = new Map(); + var nextContext = GraphQLIRTransformer.transform(context, { + Root: function Root(node) { + return transformNode(context, fragments, node); + }, + // Fragments are included below where referenced. + // Unreferenced fragments are not included. + Fragment: function Fragment(id) { + return null; + } + }); + return Array.from(fragments.values()).reduce(function (ctx, fragment) { + return fragment ? ctx.add(fragment) : ctx; + }, nextContext); +} + +function transformNode(context, fragments, node) { + var queue = (0, _toConsumableArray2["default"])(node.selections); + var selections; + + while (queue.length) { + var selection = queue.shift(); + var nextSelection = void 0; + + switch (selection.kind) { + case 'Condition': + var match = testCondition(selection); + + if (match === PASS) { + queue.unshift.apply(queue, (0, _toConsumableArray2["default"])(selection.selections)); + } else if (match === VARIABLE) { + nextSelection = transformNode(context, fragments, selection); + } + + break; + + case 'FragmentSpread': + { + // Skip fragment spreads if the referenced fragment is empty + if (!fragments.has(selection.name)) { + var fragment = context.getFragment(selection.name); + var nextFragment = transformNode(context, fragments, fragment); + fragments.set(selection.name, nextFragment); + } + + if (fragments.get(selection.name)) { + nextSelection = selection; + } + + break; + } + + case 'ClientExtension': + nextSelection = transformNode(context, fragments, selection); + break; + + case 'ModuleImport': + nextSelection = transformNode(context, fragments, selection); + break; + + case 'LinkedField': + nextSelection = transformNode(context, fragments, selection); + break; + + case 'InlineFragment': + // TODO combine with the LinkedField case when flow supports this + nextSelection = transformNode(context, fragments, selection); + break; + + case 'Defer': + nextSelection = transformNode(context, fragments, selection); + break; + + case 'Stream': + nextSelection = transformNode(context, fragments, selection); + break; + + case 'ScalarField': + nextSelection = selection; + break; + + default: + selection.kind; + true ? true ? invariant(false, 'SkipUnreachableNodeTransform: Unexpected selection kind `%s`.', selection.kind) : undefined : undefined; + } + + if (nextSelection) { + selections = selections || []; + selections.push(nextSelection); + } + } + + if (selections) { + return (0, _objectSpread2["default"])({}, node, { + selections: selections + }); + } + + return null; +} +/** + * Determines whether a condition statically passes/fails or is unknown + * (variable). + */ + + +function testCondition(condition) { + if (condition.condition.kind === 'Variable') { + return VARIABLE; + } + + return condition.condition.value === condition.passingValue ? PASS : FAIL; +} + +module.exports = { + transform: skipUnreachableNodeTransform +}; + +/***/ }), +/* 148 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var RelayFlowGenerator = __webpack_require__(149); + +var formatGeneratedModule = __webpack_require__(220); + +var _require = __webpack_require__(221), + find = _require.find; + +module.exports = function () { + return { + inputExtensions: ['js', 'jsx'], + outputExtension: 'js', + typeGenerator: RelayFlowGenerator, + formatModule: formatGeneratedModule, + findGraphQLTags: find + }; +}; + +/***/ }), +/* 149 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _interopRequireDefault = __webpack_require__(0); + +var _objectSpread2 = _interopRequireDefault(__webpack_require__(2)); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(6)); + +var FlattenTransform = __webpack_require__(46); + +var IRVisitor = __webpack_require__(24); + +var Profiler = __webpack_require__(10); + +var RelayMaskTransform = __webpack_require__(50); + +var RelayMatchTransform = __webpack_require__(51); + +var RelayRefetchableFragmentTransform = __webpack_require__(53); + +var RelayRelayDirectiveTransform = __webpack_require__(54); + +var _require = __webpack_require__(8), + isAbstractType = _require.isAbstractType; + +var _require2 = __webpack_require__(55), + anyTypeAlias = _require2.anyTypeAlias, + exactObjectTypeAnnotation = _require2.exactObjectTypeAnnotation, + exportType = _require2.exportType, + importTypes = _require2.importTypes, + intersectionTypeAnnotation = _require2.intersectionTypeAnnotation, + lineComments = _require2.lineComments, + readOnlyArrayOfType = _require2.readOnlyArrayOfType, + readOnlyObjectTypeProperty = _require2.readOnlyObjectTypeProperty, + unionTypeAnnotation = _require2.unionTypeAnnotation; + +var _require3 = __webpack_require__(198), + transformInputType = _require3.transformInputType, + transformScalarType = _require3.transformScalarType; + +var babelGenerator = __webpack_require__(199)["default"]; + +var t = __webpack_require__(11); + +var _require4 = __webpack_require__(1), + GraphQLInputObjectType = _require4.GraphQLInputObjectType, + GraphQLNonNull = _require4.GraphQLNonNull, + GraphQLString = _require4.GraphQLString; + +var invariant = __webpack_require__(4); + +var nullthrows = __webpack_require__(30); + +function generate(node, options) { + var ast = IRVisitor.visit(node, createVisitor(options)); + return babelGenerator(ast).code; +} + +function makeProp(_ref, state, unmasked, concreteType) { + var key = _ref.key, + schemaName = _ref.schemaName, + value = _ref.value, + conditional = _ref.conditional, + nodeType = _ref.nodeType, + nodeSelections = _ref.nodeSelections; + + if (nodeType) { + value = transformScalarType(nodeType, state, selectionsToBabel([Array.from(nullthrows(nodeSelections).values())], state, unmasked)); + } + + if (schemaName === '__typename' && concreteType) { + value = t.stringLiteralTypeAnnotation(concreteType); + } + + var typeProperty = readOnlyObjectTypeProperty(key, value); + + if (conditional) { + typeProperty.optional = true; + } + + return typeProperty; +} + +var isTypenameSelection = function isTypenameSelection(selection) { + return selection.schemaName === '__typename'; +}; + +var hasTypenameSelection = function hasTypenameSelection(selections) { + return selections.some(isTypenameSelection); +}; + +var onlySelectsTypename = function onlySelectsTypename(selections) { + return selections.every(isTypenameSelection); +}; + +function selectionsToBabel(selections, state, unmasked, fragmentTypeName) { + var baseFields = new Map(); + var byConcreteType = {}; + flattenArray( // $FlowFixMe + selections).forEach(function (selection) { + var concreteType = selection.concreteType; + + if (concreteType) { + var _byConcreteType$concr; + + byConcreteType[concreteType] = (_byConcreteType$concr = byConcreteType[concreteType]) !== null && _byConcreteType$concr !== void 0 ? _byConcreteType$concr : []; + byConcreteType[concreteType].push(selection); + } else { + var previousSel = baseFields.get(selection.key); + baseFields.set(selection.key, previousSel ? mergeSelection(selection, previousSel) : selection); + } + }); + var types = []; + + if (Object.keys(byConcreteType).length && onlySelectsTypename(Array.from(baseFields.values())) && (hasTypenameSelection(Array.from(baseFields.values())) || Object.keys(byConcreteType).every(function (type) { + return hasTypenameSelection(byConcreteType[type]); + }))) { + (function () { + var typenameAliases = new Set(); + + var _loop = function _loop(concreteType) { + types.push(groupRefs([].concat((0, _toConsumableArray2["default"])(Array.from(baseFields.values())), (0, _toConsumableArray2["default"])(byConcreteType[concreteType]))).map(function (selection) { + if (selection.schemaName === '__typename') { + typenameAliases.add(selection.key); + } + + return makeProp(selection, state, unmasked, concreteType); + })); + }; + + for (var concreteType in byConcreteType) { + _loop(concreteType); + } // It might be some other type then the listed concrete types. Ideally, we + // would set the type to diff(string, set of listed concrete types), but + // this doesn't exist in Flow at the time. + + + types.push(Array.from(typenameAliases).map(function (typenameAlias) { + var otherProp = readOnlyObjectTypeProperty(typenameAlias, t.stringLiteralTypeAnnotation('%other')); + otherProp.leadingComments = lineComments("This will never be '%other', but we need some", 'value in case none of the concrete values match.'); + return otherProp; + })); + })(); + } else { + var selectionMap = selectionsToMap(Array.from(baseFields.values())); + + for (var concreteType in byConcreteType) { + selectionMap = mergeSelections(selectionMap, selectionsToMap(byConcreteType[concreteType].map(function (sel) { + return (0, _objectSpread2["default"])({}, sel, { + conditional: true + }); + }))); + } + + var selectionMapValues = groupRefs(Array.from(selectionMap.values())).map(function (sel) { + return isTypenameSelection(sel) && sel.concreteType ? makeProp((0, _objectSpread2["default"])({}, sel, { + conditional: false + }), state, unmasked, sel.concreteType) : makeProp(sel, state, unmasked); + }); + types.push(selectionMapValues); + } + + return unionTypeAnnotation(types.map(function (props) { + if (fragmentTypeName) { + props.push(readOnlyObjectTypeProperty('$refType', t.genericTypeAnnotation(t.identifier(fragmentTypeName)))); + } + + return unmasked ? t.objectTypeAnnotation(props) : exactObjectTypeAnnotation(props); + })); +} + +function mergeSelection(a, b) { + if (!a) { + return (0, _objectSpread2["default"])({}, b, { + conditional: true + }); + } + + return (0, _objectSpread2["default"])({}, a, { + nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, nullthrows(b.nodeSelections)) : null, + conditional: a.conditional && b.conditional + }); +} + +function mergeSelections(a, b) { + var merged = new Map(); + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = a.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _step$value = _step.value, + key = _step$value[0], + value = _step$value[1]; + merged.set(key, value); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = b.entries()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var _step2$value = _step2.value, + key = _step2$value[0], + value = _step2$value[1]; + merged.set(key, mergeSelection(a.get(key), value)); + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + return merged; +} + +function isPlural(node) { + return Boolean(node.metadata && node.metadata.plural); +} + +function createVisitor(options) { + var state = { + customScalars: options.customScalars, + enumsHasteModule: options.enumsHasteModule, + existingFragmentNames: options.existingFragmentNames, + generatedFragments: new Set(), + generatedInputObjectTypes: {}, + optionalInputFields: options.optionalInputFields, + usedEnums: {}, + usedFragments: new Set(), + useHaste: options.useHaste, + useSingleArtifactDirectory: options.useSingleArtifactDirectory, + noFutureProofEnums: options.noFutureProofEnums + }; + return { + leave: { + Root: function Root(node) { + var inputVariablesType = generateInputVariablesType(node, state); + var inputObjectTypes = generateInputObjectTypes(state); + var responseType = exportType("".concat(node.name, "Response"), selectionsToBabel(node.selections, state, false)); + var operationType = exportType(node.name, exactObjectTypeAnnotation([t.objectTypeProperty(t.identifier('variables'), t.genericTypeAnnotation(t.identifier("".concat(node.name, "Variables")))), t.objectTypeProperty(t.identifier('response'), t.genericTypeAnnotation(t.identifier("".concat(node.name, "Response"))))])); + return t.program([].concat((0, _toConsumableArray2["default"])(getFragmentImports(state)), (0, _toConsumableArray2["default"])(getEnumDefinitions(state)), (0, _toConsumableArray2["default"])(inputObjectTypes), [inputVariablesType, responseType, operationType])); + }, + Fragment: function Fragment(node) { + var selections = flattenArray( // $FlowFixMe + node.selections); + var numConecreteSelections = selections.filter(function (s) { + return s.concreteType; + }).length; + selections = selections.map(function (selection) { + if (numConecreteSelections <= 1 && isTypenameSelection(selection) && !isAbstractType(node.type)) { + return [(0, _objectSpread2["default"])({}, selection, { + concreteType: node.type.toString() + })]; + } + + return [selection]; + }); + state.generatedFragments.add(node.name); + var fragmentTypes = getFragmentTypes(node.name); + var refTypeName = getRefTypeName(node.name); + var refTypeDataProperty = readOnlyObjectTypeProperty('$data', t.genericTypeAnnotation(t.identifier("".concat(node.name, "$data")))); + refTypeDataProperty.optional = true; + var refTypeFragmentRefProperty = readOnlyObjectTypeProperty('$fragmentRefs', t.genericTypeAnnotation(t.identifier(getOldFragmentTypeName(node.name)))); + var refType = t.objectTypeAnnotation([refTypeDataProperty, refTypeFragmentRefProperty]); + var dataTypeName = getDataTypeName(node.name); + var dataType = t.genericTypeAnnotation(t.identifier(node.name)); + var unmasked = node.metadata && node.metadata.mask === false; + var baseType = selectionsToBabel(selections, state, // $FlowFixMe + unmasked, unmasked ? undefined : getOldFragmentTypeName(node.name)); + var type = isPlural(node) ? readOnlyArrayOfType(baseType) : baseType; + var importedTypes = ['FragmentReference']; + return t.program([].concat((0, _toConsumableArray2["default"])(getFragmentImports(state)), (0, _toConsumableArray2["default"])(getEnumDefinitions(state)), [importTypes(importedTypes, 'relay-runtime')], (0, _toConsumableArray2["default"])(fragmentTypes), [exportType(node.name, type), exportType(dataTypeName, dataType), exportType(refTypeName, refType)])); + }, + InlineFragment: function InlineFragment(node) { + var typeCondition = node.typeCondition; + return flattenArray( // $FlowFixMe + node.selections).map(function (typeSelection) { + return isAbstractType(typeCondition) ? (0, _objectSpread2["default"])({}, typeSelection, { + conditional: true + }) : (0, _objectSpread2["default"])({}, typeSelection, { + concreteType: typeCondition.toString() + }); + }); + }, + Condition: function Condition(node) { + return flattenArray( // $FlowFixMe + node.selections).map(function (selection) { + return (0, _objectSpread2["default"])({}, selection, { + conditional: true + }); + }); + }, + ScalarField: function ScalarField(node) { + var _node$alias; + + return [{ + key: (_node$alias = node.alias) !== null && _node$alias !== void 0 ? _node$alias : node.name, + schemaName: node.name, + value: transformScalarType(node.type, state) + }]; + }, + LinkedField: function LinkedField(node) { + var _node$alias2; + + return [{ + key: (_node$alias2 = node.alias) !== null && _node$alias2 !== void 0 ? _node$alias2 : node.name, + schemaName: node.name, + nodeType: node.type, + nodeSelections: selectionsToMap(flattenArray( // $FlowFixMe + node.selections), + /* + * append concreteType to key so overlapping fields with different + * concreteTypes don't get overwritten by each other + */ + true) + }]; + }, + ModuleImport: function ModuleImport(node) { + return [{ + key: '__fragmentPropName', + conditional: true, + value: transformScalarType(GraphQLString, state) + }, { + key: '__module_component', + conditional: true, + value: transformScalarType(GraphQLString, state) + }, { + key: '__fragments_' + node.name, + ref: node.name + }]; + }, + FragmentSpread: function FragmentSpread(node) { + state.usedFragments.add(node.name); + return [{ + key: '__fragments_' + node.name, + ref: node.name + }]; + } + } + }; +} + +function selectionsToMap(selections, appendType) { + var map = new Map(); + selections.forEach(function (selection) { + var key = appendType && selection.concreteType ? "".concat(selection.key, "::").concat(selection.concreteType) : selection.key; + var previousSel = map.get(key); + map.set(key, previousSel ? mergeSelection(previousSel, selection) : selection); + }); + return map; +} + +function flattenArray(arrayOfArrays) { + var result = []; + arrayOfArrays.forEach(function (array) { + return result.push.apply(result, (0, _toConsumableArray2["default"])(array)); + }); + return result; +} + +function generateInputObjectTypes(state) { + return Object.keys(state.generatedInputObjectTypes).map(function (typeIdentifier) { + var inputObjectType = state.generatedInputObjectTypes[typeIdentifier]; + !(typeof inputObjectType !== 'string') ? true ? invariant(false, 'RelayCompilerFlowGenerator: Expected input object type to have been' + ' defined before calling `generateInputObjectTypes`') : undefined : void 0; + return exportType(typeIdentifier, inputObjectType); + }); +} + +function generateInputVariablesType(node, state) { + return exportType("".concat(node.name, "Variables"), exactObjectTypeAnnotation(node.argumentDefinitions.map(function (arg) { + var property = t.objectTypeProperty(t.identifier(arg.name), transformInputType(arg.type, state)); + + if (!(arg.type instanceof GraphQLNonNull)) { + property.optional = true; + } + + return property; + }))); +} + +function groupRefs(props) { + var result = []; + var refs = []; + props.forEach(function (prop) { + if (prop.ref) { + refs.push(prop.ref); + } else { + result.push(prop); + } + }); + + if (refs.length > 0) { + var value = intersectionTypeAnnotation(refs.map(function (ref) { + return t.genericTypeAnnotation(t.identifier(getOldFragmentTypeName(ref))); + })); + result.push({ + key: '$fragmentRefs', + conditional: false, + value: value + }); + } + + return result; +} + +function getFragmentImports(state) { + var imports = []; + + if (state.usedFragments.size > 0) { + var usedFragments = Array.from(state.usedFragments).sort(); + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = usedFragments[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var usedFragment = _step3.value; + var fragmentTypeName = getOldFragmentTypeName(usedFragment); + + if (!state.generatedFragments.has(usedFragment)) { + if (state.useHaste && state.existingFragmentNames.has(usedFragment)) { + // TODO(T22653277) support non-haste environments when importing + // fragments + imports.push(importTypes([fragmentTypeName], usedFragment + '_graphql')); + } else if (state.useSingleArtifactDirectory && state.existingFragmentNames.has(usedFragment)) { + imports.push(importTypes([fragmentTypeName], './' + usedFragment + '_graphql')); + } else { + imports.push(anyTypeAlias(fragmentTypeName)); + } + } + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { + _iterator3["return"](); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + } + + return imports; +} + +function getEnumDefinitions(_ref2) { + var enumsHasteModule = _ref2.enumsHasteModule, + usedEnums = _ref2.usedEnums, + noFutureProofEnums = _ref2.noFutureProofEnums; + var enumNames = Object.keys(usedEnums).sort(); + + if (enumNames.length === 0) { + return []; + } + + if (enumsHasteModule) { + return [importTypes(enumNames, enumsHasteModule)]; + } + + return enumNames.map(function (name) { + var values = usedEnums[name].getValues().map(function (_ref3) { + var value = _ref3.value; + return value; + }); + values.sort(); + + if (!noFutureProofEnums) { + values.push('%future added value'); + } + + return exportType(name, t.unionTypeAnnotation(values.map(function (value) { + return t.stringLiteralTypeAnnotation(value); + }))); + }); +} + +function getFragmentTypes(name) { + var oldFragmentTypeName = getOldFragmentTypeName(name); + var oldFragmentType = t.declareExportDeclaration(t.declareOpaqueType(t.identifier(oldFragmentTypeName), null, t.genericTypeAnnotation(t.identifier('FragmentReference')))); + var newFragmentTypeName = getNewFragmentTypeName(name); + var newFragmentType = t.declareExportDeclaration(t.declareOpaqueType(t.identifier(newFragmentTypeName), null, t.genericTypeAnnotation(t.identifier(oldFragmentTypeName)))); + return [oldFragmentType, newFragmentType]; +} + +function getOldFragmentTypeName(name) { + return "".concat(name, "$ref"); +} + +function getNewFragmentTypeName(name) { + return "".concat(name, "$fragmentType"); +} + +function getRefTypeName(name) { + return "".concat(name, "$key"); +} + +function getDataTypeName(name) { + return "".concat(name, "$data"); +} + +var FLOW_TRANSFORMS = [RelayRelayDirectiveTransform.transform, RelayMaskTransform.transform, RelayMatchTransform.transform, FlattenTransform.transformWithOptions({}), RelayRefetchableFragmentTransform.transform]; +module.exports = { + generate: Profiler.instrument(generate, 'RelayFlowGenerator.generate'), + transforms: FLOW_TRANSFORMS +}; + +/***/ }), +/* 150 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(56)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component"); +var _default = isReactComponent; +exports.default = _default; + +/***/ }), +/* 151 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isCompatTag; + +function isCompatTag(tagName) { + return !!tagName && /^[a-z]/.test(tagName); +} + +/***/ }), +/* 152 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = buildChildren; + +var _generated = __webpack_require__(7); + +var _cleanJSXElementLiteralChild = _interopRequireDefault(__webpack_require__(153)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function buildChildren(node) { + const elements = []; + + for (let i = 0; i < node.children.length; i++) { + let child = node.children[i]; + + if ((0, _generated.isJSXText)(child)) { + (0, _cleanJSXElementLiteralChild.default)(child, elements); + continue; + } + + if ((0, _generated.isJSXExpressionContainer)(child)) child = child.expression; + if ((0, _generated.isJSXEmptyExpression)(child)) continue; + elements.push(child); + } + + return elements; +} + +/***/ }), +/* 153 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cleanJSXElementLiteralChild; + +var _generated = __webpack_require__(13); + +function cleanJSXElementLiteralChild(child, args) { + const lines = child.value.split(/\r\n|\n|\r/); + let lastNonEmptyLine = 0; + + for (let i = 0; i < lines.length; i++) { + if (lines[i].match(/[^ \t]/)) { + lastNonEmptyLine = i; + } + } + + let str = ""; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + const isFirstLine = i === 0; + const isLastLine = i === lines.length - 1; + const isLastNonEmptyLine = i === lastNonEmptyLine; + let trimmedLine = line.replace(/\t/g, " "); + + if (!isFirstLine) { + trimmedLine = trimmedLine.replace(/^[ ]+/, ""); + } + + if (!isLastLine) { + trimmedLine = trimmedLine.replace(/[ ]+$/, ""); + } + + if (trimmedLine) { + if (!isLastNonEmptyLine) { + trimmedLine += " "; + } + + str += trimmedLine; + } + } + + if (str) args.push((0, _generated.stringLiteral)(str)); +} + +/***/ }), +/* 154 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = builder; + +function _clone() { + const data = _interopRequireDefault(__webpack_require__(155)); + + _clone = function () { + return data; + }; + + return data; +} + +var _definitions = __webpack_require__(12); + +var _validate = _interopRequireDefault(__webpack_require__(60)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function builder(type, ...args) { + const keys = _definitions.BUILDER_KEYS[type]; + const countArgs = args.length; + + if (countArgs > keys.length) { + throw new Error(`${type}: Too many arguments passed. Received ${countArgs} but can receive no more than ${keys.length}`); + } + + const node = { + type + }; + let i = 0; + keys.forEach(key => { + const field = _definitions.NODE_FIELDS[type][key]; + let arg; + if (i < countArgs) arg = args[i]; + if (arg === undefined) arg = (0, _clone().default)(field.default); + node[key] = arg; + i++; + }); + + for (const key of Object.keys(node)) { + (0, _validate.default)(node, key, node[key]); + } + + return node; +} + +/***/ }), +/* 155 */ +/***/ (function(module, exports) { + +module.exports = require("lodash/clone"); + +/***/ }), +/* 156 */ +/***/ (function(module, exports) { + +module.exports = require("to-fast-properties"); + +/***/ }), +/* 157 */ +/***/ (function(module, exports) { + +module.exports = require("esutils"); + +/***/ }), +/* 158 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utils = _interopRequireWildcard(__webpack_require__(15)); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +const defineInterfaceishType = (name, typeParameterType = "TypeParameterDeclaration") => { + (0, _utils.default)(name, { + builder: ["id", "typeParameters", "extends", "body"], + visitor: ["id", "typeParameters", "extends", "mixins", "implements", "body"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)(typeParameterType), + extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), + mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), + implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements")), + body: (0, _utils.validateType)("ObjectTypeAnnotation") + } + }); +}; + +(0, _utils.default)("AnyTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("ArrayTypeAnnotation", { + visitor: ["elementType"], + aliases: ["Flow", "FlowType"], + fields: { + elementType: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("BooleanTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("BooleanLiteralTypeAnnotation", { + builder: ["value"], + aliases: ["Flow", "FlowType"], + fields: { + value: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("NullLiteralTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("ClassImplements", { + visitor: ["id", "typeParameters"], + aliases: ["Flow"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") + } +}); +defineInterfaceishType("DeclareClass"); +(0, _utils.default)("DeclareFunction", { + visitor: ["id"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + predicate: (0, _utils.validateOptionalType)("DeclaredPredicate") + } +}); +defineInterfaceishType("DeclareInterface"); +(0, _utils.default)("DeclareModule", { + builder: ["id", "body", "kind"], + visitor: ["id", "body"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)(["Identifier", "StringLiteral"]), + body: (0, _utils.validateType)("BlockStatement"), + kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES")) + } +}); +(0, _utils.default)("DeclareModuleExports", { + visitor: ["typeAnnotation"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + typeAnnotation: (0, _utils.validateType)("TypeAnnotation") + } +}); +(0, _utils.default)("DeclareTypeAlias", { + visitor: ["id", "typeParameters", "right"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + right: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("DeclareOpaqueType", { + visitor: ["id", "typeParameters", "supertype"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + supertype: (0, _utils.validateOptionalType)("FlowType") + } +}); +(0, _utils.default)("DeclareVariable", { + visitor: ["id"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier") + } +}); +(0, _utils.default)("DeclareExportDeclaration", { + visitor: ["declaration", "specifiers", "source"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + declaration: (0, _utils.validateOptionalType)("Flow"), + specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)(["ExportSpecifier", "ExportNamespaceSpecifier"])), + source: (0, _utils.validateOptionalType)("StringLiteral"), + default: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("DeclareExportAllDeclaration", { + visitor: ["source"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + source: (0, _utils.validateType)("StringLiteral"), + exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)(["type", "value"])) + } +}); +(0, _utils.default)("DeclaredPredicate", { + visitor: ["value"], + aliases: ["Flow", "FlowPredicate"], + fields: { + value: (0, _utils.validateType)("Flow") + } +}); +(0, _utils.default)("ExistsTypeAnnotation", { + aliases: ["Flow", "FlowType"] +}); +(0, _utils.default)("FunctionTypeAnnotation", { + visitor: ["typeParameters", "params", "rest", "returnType"], + aliases: ["Flow", "FlowType"], + fields: { + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + params: (0, _utils.validate)((0, _utils.arrayOfType)("FunctionTypeParam")), + rest: (0, _utils.validateOptionalType)("FunctionTypeParam"), + returnType: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("FunctionTypeParam", { + visitor: ["name", "typeAnnotation"], + aliases: ["Flow"], + fields: { + name: (0, _utils.validateOptionalType)("Identifier"), + typeAnnotation: (0, _utils.validateType)("FlowType"), + optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("GenericTypeAnnotation", { + visitor: ["id", "typeParameters"], + aliases: ["Flow", "FlowType"], + fields: { + id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") + } +}); +(0, _utils.default)("InferredPredicate", { + aliases: ["Flow", "FlowPredicate"] +}); +(0, _utils.default)("InterfaceExtends", { + visitor: ["id", "typeParameters"], + aliases: ["Flow"], + fields: { + id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") + } +}); +defineInterfaceishType("InterfaceDeclaration"); +(0, _utils.default)("InterfaceTypeAnnotation", { + visitor: ["extends", "body"], + aliases: ["Flow", "FlowType"], + fields: { + extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), + body: (0, _utils.validateType)("ObjectTypeAnnotation") + } +}); +(0, _utils.default)("IntersectionTypeAnnotation", { + visitor: ["types"], + aliases: ["Flow", "FlowType"], + fields: { + types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +(0, _utils.default)("MixedTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("EmptyTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("NullableTypeAnnotation", { + visitor: ["typeAnnotation"], + aliases: ["Flow", "FlowType"], + fields: { + typeAnnotation: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("NumberLiteralTypeAnnotation", { + builder: ["value"], + aliases: ["Flow", "FlowType"], + fields: { + value: (0, _utils.validate)((0, _utils.assertValueType)("number")) + } +}); +(0, _utils.default)("NumberTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("ObjectTypeAnnotation", { + visitor: ["properties", "indexers", "callProperties", "internalSlots"], + aliases: ["Flow", "FlowType"], + builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"], + fields: { + properties: (0, _utils.validate)((0, _utils.arrayOfType)(["ObjectTypeProperty", "ObjectTypeSpreadProperty"])), + indexers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeIndexer")), + callProperties: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeCallProperty")), + internalSlots: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeInternalSlot")), + exact: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + }, + inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("ObjectTypeInternalSlot", { + visitor: ["id", "value", "optional", "static", "method"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + id: (0, _utils.validateType)("Identifier"), + value: (0, _utils.validateType)("FlowType"), + optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + method: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("ObjectTypeCallProperty", { + visitor: ["value"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + value: (0, _utils.validateType)("FlowType"), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("ObjectTypeIndexer", { + visitor: ["id", "key", "value", "variance"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + id: (0, _utils.validateOptionalType)("Identifier"), + key: (0, _utils.validateType)("FlowType"), + value: (0, _utils.validateType)("FlowType"), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + variance: (0, _utils.validateOptionalType)("Variance") + } +}); +(0, _utils.default)("ObjectTypeProperty", { + visitor: ["key", "value", "variance"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + key: (0, _utils.validateType)(["Identifier", "StringLiteral"]), + value: (0, _utils.validateType)("FlowType"), + kind: (0, _utils.validate)((0, _utils.assertOneOf)("init", "get", "set")), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + proto: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + variance: (0, _utils.validateOptionalType)("Variance") + } +}); +(0, _utils.default)("ObjectTypeSpreadProperty", { + visitor: ["argument"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + argument: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("OpaqueType", { + visitor: ["id", "typeParameters", "supertype", "impltype"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + supertype: (0, _utils.validateOptionalType)("FlowType"), + impltype: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("QualifiedTypeIdentifier", { + visitor: ["id", "qualification"], + aliases: ["Flow"], + fields: { + id: (0, _utils.validateType)("Identifier"), + qualification: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]) + } +}); +(0, _utils.default)("StringLiteralTypeAnnotation", { + builder: ["value"], + aliases: ["Flow", "FlowType"], + fields: { + value: (0, _utils.validate)((0, _utils.assertValueType)("string")) + } +}); +(0, _utils.default)("StringTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("ThisTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("TupleTypeAnnotation", { + visitor: ["types"], + aliases: ["Flow", "FlowType"], + fields: { + types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +(0, _utils.default)("TypeofTypeAnnotation", { + visitor: ["argument"], + aliases: ["Flow", "FlowType"], + fields: { + argument: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("TypeAlias", { + visitor: ["id", "typeParameters", "right"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + right: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("TypeAnnotation", { + aliases: ["Flow"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("TypeCastExpression", { + visitor: ["expression", "typeAnnotation"], + aliases: ["Flow", "ExpressionWrapper", "Expression"], + fields: { + expression: (0, _utils.validateType)("Expression"), + typeAnnotation: (0, _utils.validateType)("TypeAnnotation") + } +}); +(0, _utils.default)("TypeParameter", { + aliases: ["Flow"], + visitor: ["bound", "default", "variance"], + fields: { + name: (0, _utils.validate)((0, _utils.assertValueType)("string")), + bound: (0, _utils.validateOptionalType)("TypeAnnotation"), + default: (0, _utils.validateOptionalType)("FlowType"), + variance: (0, _utils.validateOptionalType)("Variance") + } +}); +(0, _utils.default)("TypeParameterDeclaration", { + aliases: ["Flow"], + visitor: ["params"], + fields: { + params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter")) + } +}); +(0, _utils.default)("TypeParameterInstantiation", { + aliases: ["Flow"], + visitor: ["params"], + fields: { + params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +(0, _utils.default)("UnionTypeAnnotation", { + visitor: ["types"], + aliases: ["Flow", "FlowType"], + fields: { + types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +(0, _utils.default)("Variance", { + aliases: ["Flow"], + builder: ["kind"], + fields: { + kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus")) + } +}); +(0, _utils.default)("VoidTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); + +/***/ }), +/* 159 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utils = _interopRequireWildcard(__webpack_require__(15)); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +(0, _utils.default)("JSXAttribute", { + visitor: ["name", "value"], + aliases: ["JSX", "Immutable"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName") + }, + value: { + optional: true, + validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer") + } + } +}); +(0, _utils.default)("JSXClosingElement", { + visitor: ["name"], + aliases: ["JSX", "Immutable"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression") + } + } +}); +(0, _utils.default)("JSXElement", { + builder: ["openingElement", "closingElement", "children", "selfClosing"], + visitor: ["openingElement", "children", "closingElement"], + aliases: ["JSX", "Immutable", "Expression"], + fields: { + openingElement: { + validate: (0, _utils.assertNodeType)("JSXOpeningElement") + }, + closingElement: { + optional: true, + validate: (0, _utils.assertNodeType)("JSXClosingElement") + }, + children: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment"))) + } + } +}); +(0, _utils.default)("JSXEmptyExpression", { + aliases: ["JSX"] +}); +(0, _utils.default)("JSXExpressionContainer", { + visitor: ["expression"], + aliases: ["JSX", "Immutable"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression") + } + } +}); +(0, _utils.default)("JSXSpreadChild", { + visitor: ["expression"], + aliases: ["JSX", "Immutable"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("JSXIdentifier", { + builder: ["name"], + aliases: ["JSX"], + fields: { + name: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +(0, _utils.default)("JSXMemberExpression", { + visitor: ["object", "property"], + aliases: ["JSX"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier") + }, + property: { + validate: (0, _utils.assertNodeType)("JSXIdentifier") + } + } +}); +(0, _utils.default)("JSXNamespacedName", { + visitor: ["namespace", "name"], + aliases: ["JSX"], + fields: { + namespace: { + validate: (0, _utils.assertNodeType)("JSXIdentifier") + }, + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier") + } + } +}); +(0, _utils.default)("JSXOpeningElement", { + builder: ["name", "attributes", "selfClosing"], + visitor: ["name", "attributes"], + aliases: ["JSX", "Immutable"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression") + }, + selfClosing: { + default: false, + validate: (0, _utils.assertValueType)("boolean") + }, + attributes: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXAttribute", "JSXSpreadAttribute"))) + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + } + } +}); +(0, _utils.default)("JSXSpreadAttribute", { + visitor: ["argument"], + aliases: ["JSX"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("JSXText", { + aliases: ["JSX", "Immutable"], + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +(0, _utils.default)("JSXFragment", { + builder: ["openingFragment", "closingFragment", "children"], + visitor: ["openingFragment", "children", "closingFragment"], + aliases: ["JSX", "Immutable", "Expression"], + fields: { + openingFragment: { + validate: (0, _utils.assertNodeType)("JSXOpeningFragment") + }, + closingFragment: { + validate: (0, _utils.assertNodeType)("JSXClosingFragment") + }, + children: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment"))) + } + } +}); +(0, _utils.default)("JSXOpeningFragment", { + aliases: ["JSX", "Immutable"] +}); +(0, _utils.default)("JSXClosingFragment", { + aliases: ["JSX", "Immutable"] +}); + +/***/ }), +/* 160 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utils = _interopRequireWildcard(__webpack_require__(15)); + +var _placeholders = __webpack_require__(59); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +(0, _utils.default)("Noop", { + visitor: [] +}); +(0, _utils.default)("Placeholder", { + visitor: [], + builder: ["expectedNode", "name"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + expectedNode: { + validate: (0, _utils.assertOneOf)(..._placeholders.PLACEHOLDERS) + } + } +}); + +/***/ }), +/* 161 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utils = _interopRequireWildcard(__webpack_require__(15)); + +var _es = __webpack_require__(35); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +(0, _utils.default)("ArgumentPlaceholder", {}); +(0, _utils.default)("AwaitExpression", { + builder: ["argument"], + visitor: ["argument"], + aliases: ["Expression", "Terminatorless"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("BindExpression", { + visitor: ["object", "callee"], + aliases: ["Expression"], + fields: {} +}); +(0, _utils.default)("ClassProperty", { + visitor: ["key", "value", "typeAnnotation", "decorators"], + builder: ["key", "value", "typeAnnotation", "decorators", "computed"], + aliases: ["Property"], + fields: Object.assign({}, _es.classMethodOrPropertyCommon, { + value: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + definite: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + }, + readonly: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + }) +}); +(0, _utils.default)("OptionalMemberExpression", { + builder: ["object", "property", "computed", "optional"], + visitor: ["object", "property"], + aliases: ["Expression"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + property: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier"); + const computed = (0, _utils.assertNodeType)("Expression"); + return function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + }() + }, + computed: { + default: false + }, + optional: { + validate: (0, _utils.assertValueType)("boolean") + } + } +}); +(0, _utils.default)("PipelineTopicExpression", { + builder: ["expression"], + visitor: ["expression"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("PipelineBareFunction", { + builder: ["callee"], + visitor: ["callee"], + fields: { + callee: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("PipelinePrimaryTopicReference", { + aliases: ["Expression"] +}); +(0, _utils.default)("OptionalCallExpression", { + visitor: ["callee", "arguments", "typeParameters", "typeArguments"], + builder: ["callee", "arguments", "optional"], + aliases: ["Expression"], + fields: { + callee: { + validate: (0, _utils.assertNodeType)("Expression") + }, + arguments: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement", "JSXNamespacedName"))) + }, + optional: { + validate: (0, _utils.assertValueType)("boolean") + }, + typeArguments: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"), + optional: true + } + } +}); +(0, _utils.default)("ClassPrivateProperty", { + visitor: ["key", "value"], + builder: ["key", "value"], + aliases: ["Property", "Private"], + fields: { + key: { + validate: (0, _utils.assertNodeType)("PrivateName") + }, + value: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + } + } +}); +(0, _utils.default)("ClassPrivateMethod", { + builder: ["kind", "key", "params", "body", "static"], + visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], + aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"], + fields: Object.assign({}, _es.classMethodOrDeclareMethodCommon, { + key: { + validate: (0, _utils.assertNodeType)("PrivateName") + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }) +}); +(0, _utils.default)("Import", { + aliases: ["Expression"] +}); +(0, _utils.default)("Decorator", { + visitor: ["expression"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("DoExpression", { + visitor: ["body"], + aliases: ["Expression"], + fields: { + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + } +}); +(0, _utils.default)("ExportDefaultSpecifier", { + visitor: ["exported"], + aliases: ["ModuleSpecifier"], + fields: { + exported: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("ExportNamespaceSpecifier", { + visitor: ["exported"], + aliases: ["ModuleSpecifier"], + fields: { + exported: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("PrivateName", { + visitor: ["id"], + aliases: ["Private"], + fields: { + id: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("BigIntLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); + +/***/ }), +/* 162 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utils = _interopRequireWildcard(__webpack_require__(15)); + +var _core = __webpack_require__(32); + +var _es = __webpack_require__(35); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +const bool = (0, _utils.assertValueType)("boolean"); +const tSFunctionTypeAnnotationCommon = { + returnType: { + validate: (0, _utils.assertNodeType)("TSTypeAnnotation", "Noop"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterDeclaration", "Noop"), + optional: true + } +}; +(0, _utils.default)("TSParameterProperty", { + aliases: ["LVal"], + visitor: ["parameter"], + fields: { + accessibility: { + validate: (0, _utils.assertOneOf)("public", "private", "protected"), + optional: true + }, + readonly: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + parameter: { + validate: (0, _utils.assertNodeType)("Identifier", "AssignmentPattern") + } + } +}); +(0, _utils.default)("TSDeclareFunction", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "typeParameters", "params", "returnType"], + fields: Object.assign({}, _core.functionDeclarationCommon, tSFunctionTypeAnnotationCommon) +}); +(0, _utils.default)("TSDeclareMethod", { + visitor: ["decorators", "key", "typeParameters", "params", "returnType"], + fields: Object.assign({}, _es.classMethodOrDeclareMethodCommon, tSFunctionTypeAnnotationCommon) +}); +(0, _utils.default)("TSQualifiedName", { + aliases: ["TSEntityName"], + visitor: ["left", "right"], + fields: { + left: (0, _utils.validateType)("TSEntityName"), + right: (0, _utils.validateType)("Identifier") + } +}); +const signatureDeclarationCommon = { + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), + parameters: (0, _utils.validateArrayOfType)(["Identifier", "RestElement"]), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation") +}; +const callConstructSignatureDeclaration = { + aliases: ["TSTypeElement"], + visitor: ["typeParameters", "parameters", "typeAnnotation"], + fields: signatureDeclarationCommon +}; +(0, _utils.default)("TSCallSignatureDeclaration", callConstructSignatureDeclaration); +(0, _utils.default)("TSConstructSignatureDeclaration", callConstructSignatureDeclaration); +const namedTypeElementCommon = { + key: (0, _utils.validateType)("Expression"), + computed: (0, _utils.validate)(bool), + optional: (0, _utils.validateOptional)(bool) +}; +(0, _utils.default)("TSPropertySignature", { + aliases: ["TSTypeElement"], + visitor: ["key", "typeAnnotation", "initializer"], + fields: Object.assign({}, namedTypeElementCommon, { + readonly: (0, _utils.validateOptional)(bool), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"), + initializer: (0, _utils.validateOptionalType)("Expression") + }) +}); +(0, _utils.default)("TSMethodSignature", { + aliases: ["TSTypeElement"], + visitor: ["key", "typeParameters", "parameters", "typeAnnotation"], + fields: Object.assign({}, signatureDeclarationCommon, namedTypeElementCommon) +}); +(0, _utils.default)("TSIndexSignature", { + aliases: ["TSTypeElement"], + visitor: ["parameters", "typeAnnotation"], + fields: { + readonly: (0, _utils.validateOptional)(bool), + parameters: (0, _utils.validateArrayOfType)("Identifier"), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation") + } +}); +const tsKeywordTypes = ["TSAnyKeyword", "TSUnknownKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSBooleanKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSVoidKeyword", "TSUndefinedKeyword", "TSNullKeyword", "TSNeverKeyword"]; + +for (const type of tsKeywordTypes) { + (0, _utils.default)(type, { + aliases: ["TSType"], + visitor: [], + fields: {} + }); +} + +(0, _utils.default)("TSThisType", { + aliases: ["TSType"], + visitor: [], + fields: {} +}); +const fnOrCtr = { + aliases: ["TSType"], + visitor: ["typeParameters", "parameters", "typeAnnotation"], + fields: signatureDeclarationCommon +}; +(0, _utils.default)("TSFunctionType", fnOrCtr); +(0, _utils.default)("TSConstructorType", fnOrCtr); +(0, _utils.default)("TSTypeReference", { + aliases: ["TSType"], + visitor: ["typeName", "typeParameters"], + fields: { + typeName: (0, _utils.validateType)("TSEntityName"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +(0, _utils.default)("TSTypePredicate", { + aliases: ["TSType"], + visitor: ["parameterName", "typeAnnotation"], + fields: { + parameterName: (0, _utils.validateType)(["Identifier", "TSThisType"]), + typeAnnotation: (0, _utils.validateType)("TSTypeAnnotation") + } +}); +(0, _utils.default)("TSTypeQuery", { + aliases: ["TSType"], + visitor: ["exprName"], + fields: { + exprName: (0, _utils.validateType)(["TSEntityName", "TSImportType"]) + } +}); +(0, _utils.default)("TSTypeLiteral", { + aliases: ["TSType"], + visitor: ["members"], + fields: { + members: (0, _utils.validateArrayOfType)("TSTypeElement") + } +}); +(0, _utils.default)("TSArrayType", { + aliases: ["TSType"], + visitor: ["elementType"], + fields: { + elementType: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSTupleType", { + aliases: ["TSType"], + visitor: ["elementTypes"], + fields: { + elementTypes: (0, _utils.validateArrayOfType)("TSType") + } +}); +(0, _utils.default)("TSOptionalType", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSRestType", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +const unionOrIntersection = { + aliases: ["TSType"], + visitor: ["types"], + fields: { + types: (0, _utils.validateArrayOfType)("TSType") + } +}; +(0, _utils.default)("TSUnionType", unionOrIntersection); +(0, _utils.default)("TSIntersectionType", unionOrIntersection); +(0, _utils.default)("TSConditionalType", { + aliases: ["TSType"], + visitor: ["checkType", "extendsType", "trueType", "falseType"], + fields: { + checkType: (0, _utils.validateType)("TSType"), + extendsType: (0, _utils.validateType)("TSType"), + trueType: (0, _utils.validateType)("TSType"), + falseType: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSInferType", { + aliases: ["TSType"], + visitor: ["typeParameter"], + fields: { + typeParameter: (0, _utils.validateType)("TSTypeParameter") + } +}); +(0, _utils.default)("TSParenthesizedType", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSTypeOperator", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + operator: (0, _utils.validate)((0, _utils.assertValueType)("string")), + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSIndexedAccessType", { + aliases: ["TSType"], + visitor: ["objectType", "indexType"], + fields: { + objectType: (0, _utils.validateType)("TSType"), + indexType: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSMappedType", { + aliases: ["TSType"], + visitor: ["typeParameter", "typeAnnotation"], + fields: { + readonly: (0, _utils.validateOptional)(bool), + typeParameter: (0, _utils.validateType)("TSTypeParameter"), + optional: (0, _utils.validateOptional)(bool), + typeAnnotation: (0, _utils.validateOptionalType)("TSType") + } +}); +(0, _utils.default)("TSLiteralType", { + aliases: ["TSType"], + visitor: ["literal"], + fields: { + literal: (0, _utils.validateType)(["NumericLiteral", "StringLiteral", "BooleanLiteral"]) + } +}); +(0, _utils.default)("TSExpressionWithTypeArguments", { + aliases: ["TSType"], + visitor: ["expression", "typeParameters"], + fields: { + expression: (0, _utils.validateType)("TSEntityName"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +(0, _utils.default)("TSInterfaceDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "typeParameters", "extends", "body"], + fields: { + declare: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), + extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("TSExpressionWithTypeArguments")), + body: (0, _utils.validateType)("TSInterfaceBody") + } +}); +(0, _utils.default)("TSInterfaceBody", { + visitor: ["body"], + fields: { + body: (0, _utils.validateArrayOfType)("TSTypeElement") + } +}); +(0, _utils.default)("TSTypeAliasDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "typeParameters", "typeAnnotation"], + fields: { + declare: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSAsExpression", { + aliases: ["Expression"], + visitor: ["expression", "typeAnnotation"], + fields: { + expression: (0, _utils.validateType)("Expression"), + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSTypeAssertion", { + aliases: ["Expression"], + visitor: ["typeAnnotation", "expression"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType"), + expression: (0, _utils.validateType)("Expression") + } +}); +(0, _utils.default)("TSEnumDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "members"], + fields: { + declare: (0, _utils.validateOptional)(bool), + const: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)("Identifier"), + members: (0, _utils.validateArrayOfType)("TSEnumMember"), + initializer: (0, _utils.validateOptionalType)("Expression") + } +}); +(0, _utils.default)("TSEnumMember", { + visitor: ["id", "initializer"], + fields: { + id: (0, _utils.validateType)(["Identifier", "StringLiteral"]), + initializer: (0, _utils.validateOptionalType)("Expression") + } +}); +(0, _utils.default)("TSModuleDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "body"], + fields: { + declare: (0, _utils.validateOptional)(bool), + global: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)(["Identifier", "StringLiteral"]), + body: (0, _utils.validateType)(["TSModuleBlock", "TSModuleDeclaration"]) + } +}); +(0, _utils.default)("TSModuleBlock", { + visitor: ["body"], + fields: { + body: (0, _utils.validateArrayOfType)("Statement") + } +}); +(0, _utils.default)("TSImportType", { + aliases: ["TSType"], + visitor: ["argument", "qualifier", "typeParameters"], + fields: { + argument: (0, _utils.validateType)("StringLiteral"), + qualifier: (0, _utils.validateOptionalType)("TSEntityName"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +(0, _utils.default)("TSImportEqualsDeclaration", { + aliases: ["Statement"], + visitor: ["id", "moduleReference"], + fields: { + isExport: (0, _utils.validate)(bool), + id: (0, _utils.validateType)("Identifier"), + moduleReference: (0, _utils.validateType)(["TSEntityName", "TSExternalModuleReference"]) + } +}); +(0, _utils.default)("TSExternalModuleReference", { + visitor: ["expression"], + fields: { + expression: (0, _utils.validateType)("StringLiteral") + } +}); +(0, _utils.default)("TSNonNullExpression", { + aliases: ["Expression"], + visitor: ["expression"], + fields: { + expression: (0, _utils.validateType)("Expression") + } +}); +(0, _utils.default)("TSExportAssignment", { + aliases: ["Statement"], + visitor: ["expression"], + fields: { + expression: (0, _utils.validateType)("Expression") + } +}); +(0, _utils.default)("TSNamespaceExportDeclaration", { + aliases: ["Statement"], + visitor: ["id"], + fields: { + id: (0, _utils.validateType)("Identifier") + } +}); +(0, _utils.default)("TSTypeAnnotation", { + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TSType") + } + } +}); +(0, _utils.default)("TSTypeParameterInstantiation", { + visitor: ["params"], + fields: { + params: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSType"))) + } + } +}); +(0, _utils.default)("TSTypeParameterDeclaration", { + visitor: ["params"], + fields: { + params: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSTypeParameter"))) + } + } +}); +(0, _utils.default)("TSTypeParameter", { + visitor: ["constraint", "default"], + fields: { + name: { + validate: (0, _utils.assertValueType)("string") + }, + constraint: { + validate: (0, _utils.assertNodeType)("TSType"), + optional: true + }, + default: { + validate: (0, _utils.assertNodeType)("TSType"), + optional: true + } + } +}); + +/***/ }), +/* 163 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = assertNode; + +var _isNode = _interopRequireDefault(__webpack_require__(61)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function assertNode(node) { + if (!(0, _isNode.default)(node)) { + const type = node && node.type || JSON.stringify(node); + throw new TypeError(`Not a valid node of type "${type}"`); + } +} + +/***/ }), +/* 164 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.assertArrayExpression = assertArrayExpression; +exports.assertAssignmentExpression = assertAssignmentExpression; +exports.assertBinaryExpression = assertBinaryExpression; +exports.assertInterpreterDirective = assertInterpreterDirective; +exports.assertDirective = assertDirective; +exports.assertDirectiveLiteral = assertDirectiveLiteral; +exports.assertBlockStatement = assertBlockStatement; +exports.assertBreakStatement = assertBreakStatement; +exports.assertCallExpression = assertCallExpression; +exports.assertCatchClause = assertCatchClause; +exports.assertConditionalExpression = assertConditionalExpression; +exports.assertContinueStatement = assertContinueStatement; +exports.assertDebuggerStatement = assertDebuggerStatement; +exports.assertDoWhileStatement = assertDoWhileStatement; +exports.assertEmptyStatement = assertEmptyStatement; +exports.assertExpressionStatement = assertExpressionStatement; +exports.assertFile = assertFile; +exports.assertForInStatement = assertForInStatement; +exports.assertForStatement = assertForStatement; +exports.assertFunctionDeclaration = assertFunctionDeclaration; +exports.assertFunctionExpression = assertFunctionExpression; +exports.assertIdentifier = assertIdentifier; +exports.assertIfStatement = assertIfStatement; +exports.assertLabeledStatement = assertLabeledStatement; +exports.assertStringLiteral = assertStringLiteral; +exports.assertNumericLiteral = assertNumericLiteral; +exports.assertNullLiteral = assertNullLiteral; +exports.assertBooleanLiteral = assertBooleanLiteral; +exports.assertRegExpLiteral = assertRegExpLiteral; +exports.assertLogicalExpression = assertLogicalExpression; +exports.assertMemberExpression = assertMemberExpression; +exports.assertNewExpression = assertNewExpression; +exports.assertProgram = assertProgram; +exports.assertObjectExpression = assertObjectExpression; +exports.assertObjectMethod = assertObjectMethod; +exports.assertObjectProperty = assertObjectProperty; +exports.assertRestElement = assertRestElement; +exports.assertReturnStatement = assertReturnStatement; +exports.assertSequenceExpression = assertSequenceExpression; +exports.assertParenthesizedExpression = assertParenthesizedExpression; +exports.assertSwitchCase = assertSwitchCase; +exports.assertSwitchStatement = assertSwitchStatement; +exports.assertThisExpression = assertThisExpression; +exports.assertThrowStatement = assertThrowStatement; +exports.assertTryStatement = assertTryStatement; +exports.assertUnaryExpression = assertUnaryExpression; +exports.assertUpdateExpression = assertUpdateExpression; +exports.assertVariableDeclaration = assertVariableDeclaration; +exports.assertVariableDeclarator = assertVariableDeclarator; +exports.assertWhileStatement = assertWhileStatement; +exports.assertWithStatement = assertWithStatement; +exports.assertAssignmentPattern = assertAssignmentPattern; +exports.assertArrayPattern = assertArrayPattern; +exports.assertArrowFunctionExpression = assertArrowFunctionExpression; +exports.assertClassBody = assertClassBody; +exports.assertClassDeclaration = assertClassDeclaration; +exports.assertClassExpression = assertClassExpression; +exports.assertExportAllDeclaration = assertExportAllDeclaration; +exports.assertExportDefaultDeclaration = assertExportDefaultDeclaration; +exports.assertExportNamedDeclaration = assertExportNamedDeclaration; +exports.assertExportSpecifier = assertExportSpecifier; +exports.assertForOfStatement = assertForOfStatement; +exports.assertImportDeclaration = assertImportDeclaration; +exports.assertImportDefaultSpecifier = assertImportDefaultSpecifier; +exports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier; +exports.assertImportSpecifier = assertImportSpecifier; +exports.assertMetaProperty = assertMetaProperty; +exports.assertClassMethod = assertClassMethod; +exports.assertObjectPattern = assertObjectPattern; +exports.assertSpreadElement = assertSpreadElement; +exports.assertSuper = assertSuper; +exports.assertTaggedTemplateExpression = assertTaggedTemplateExpression; +exports.assertTemplateElement = assertTemplateElement; +exports.assertTemplateLiteral = assertTemplateLiteral; +exports.assertYieldExpression = assertYieldExpression; +exports.assertAnyTypeAnnotation = assertAnyTypeAnnotation; +exports.assertArrayTypeAnnotation = assertArrayTypeAnnotation; +exports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation; +exports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation; +exports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation; +exports.assertClassImplements = assertClassImplements; +exports.assertDeclareClass = assertDeclareClass; +exports.assertDeclareFunction = assertDeclareFunction; +exports.assertDeclareInterface = assertDeclareInterface; +exports.assertDeclareModule = assertDeclareModule; +exports.assertDeclareModuleExports = assertDeclareModuleExports; +exports.assertDeclareTypeAlias = assertDeclareTypeAlias; +exports.assertDeclareOpaqueType = assertDeclareOpaqueType; +exports.assertDeclareVariable = assertDeclareVariable; +exports.assertDeclareExportDeclaration = assertDeclareExportDeclaration; +exports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration; +exports.assertDeclaredPredicate = assertDeclaredPredicate; +exports.assertExistsTypeAnnotation = assertExistsTypeAnnotation; +exports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation; +exports.assertFunctionTypeParam = assertFunctionTypeParam; +exports.assertGenericTypeAnnotation = assertGenericTypeAnnotation; +exports.assertInferredPredicate = assertInferredPredicate; +exports.assertInterfaceExtends = assertInterfaceExtends; +exports.assertInterfaceDeclaration = assertInterfaceDeclaration; +exports.assertInterfaceTypeAnnotation = assertInterfaceTypeAnnotation; +exports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation; +exports.assertMixedTypeAnnotation = assertMixedTypeAnnotation; +exports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation; +exports.assertNullableTypeAnnotation = assertNullableTypeAnnotation; +exports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation; +exports.assertNumberTypeAnnotation = assertNumberTypeAnnotation; +exports.assertObjectTypeAnnotation = assertObjectTypeAnnotation; +exports.assertObjectTypeInternalSlot = assertObjectTypeInternalSlot; +exports.assertObjectTypeCallProperty = assertObjectTypeCallProperty; +exports.assertObjectTypeIndexer = assertObjectTypeIndexer; +exports.assertObjectTypeProperty = assertObjectTypeProperty; +exports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty; +exports.assertOpaqueType = assertOpaqueType; +exports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier; +exports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation; +exports.assertStringTypeAnnotation = assertStringTypeAnnotation; +exports.assertThisTypeAnnotation = assertThisTypeAnnotation; +exports.assertTupleTypeAnnotation = assertTupleTypeAnnotation; +exports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation; +exports.assertTypeAlias = assertTypeAlias; +exports.assertTypeAnnotation = assertTypeAnnotation; +exports.assertTypeCastExpression = assertTypeCastExpression; +exports.assertTypeParameter = assertTypeParameter; +exports.assertTypeParameterDeclaration = assertTypeParameterDeclaration; +exports.assertTypeParameterInstantiation = assertTypeParameterInstantiation; +exports.assertUnionTypeAnnotation = assertUnionTypeAnnotation; +exports.assertVariance = assertVariance; +exports.assertVoidTypeAnnotation = assertVoidTypeAnnotation; +exports.assertJSXAttribute = assertJSXAttribute; +exports.assertJSXClosingElement = assertJSXClosingElement; +exports.assertJSXElement = assertJSXElement; +exports.assertJSXEmptyExpression = assertJSXEmptyExpression; +exports.assertJSXExpressionContainer = assertJSXExpressionContainer; +exports.assertJSXSpreadChild = assertJSXSpreadChild; +exports.assertJSXIdentifier = assertJSXIdentifier; +exports.assertJSXMemberExpression = assertJSXMemberExpression; +exports.assertJSXNamespacedName = assertJSXNamespacedName; +exports.assertJSXOpeningElement = assertJSXOpeningElement; +exports.assertJSXSpreadAttribute = assertJSXSpreadAttribute; +exports.assertJSXText = assertJSXText; +exports.assertJSXFragment = assertJSXFragment; +exports.assertJSXOpeningFragment = assertJSXOpeningFragment; +exports.assertJSXClosingFragment = assertJSXClosingFragment; +exports.assertNoop = assertNoop; +exports.assertPlaceholder = assertPlaceholder; +exports.assertArgumentPlaceholder = assertArgumentPlaceholder; +exports.assertAwaitExpression = assertAwaitExpression; +exports.assertBindExpression = assertBindExpression; +exports.assertClassProperty = assertClassProperty; +exports.assertOptionalMemberExpression = assertOptionalMemberExpression; +exports.assertPipelineTopicExpression = assertPipelineTopicExpression; +exports.assertPipelineBareFunction = assertPipelineBareFunction; +exports.assertPipelinePrimaryTopicReference = assertPipelinePrimaryTopicReference; +exports.assertOptionalCallExpression = assertOptionalCallExpression; +exports.assertClassPrivateProperty = assertClassPrivateProperty; +exports.assertClassPrivateMethod = assertClassPrivateMethod; +exports.assertImport = assertImport; +exports.assertDecorator = assertDecorator; +exports.assertDoExpression = assertDoExpression; +exports.assertExportDefaultSpecifier = assertExportDefaultSpecifier; +exports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier; +exports.assertPrivateName = assertPrivateName; +exports.assertBigIntLiteral = assertBigIntLiteral; +exports.assertTSParameterProperty = assertTSParameterProperty; +exports.assertTSDeclareFunction = assertTSDeclareFunction; +exports.assertTSDeclareMethod = assertTSDeclareMethod; +exports.assertTSQualifiedName = assertTSQualifiedName; +exports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration; +exports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration; +exports.assertTSPropertySignature = assertTSPropertySignature; +exports.assertTSMethodSignature = assertTSMethodSignature; +exports.assertTSIndexSignature = assertTSIndexSignature; +exports.assertTSAnyKeyword = assertTSAnyKeyword; +exports.assertTSUnknownKeyword = assertTSUnknownKeyword; +exports.assertTSNumberKeyword = assertTSNumberKeyword; +exports.assertTSObjectKeyword = assertTSObjectKeyword; +exports.assertTSBooleanKeyword = assertTSBooleanKeyword; +exports.assertTSStringKeyword = assertTSStringKeyword; +exports.assertTSSymbolKeyword = assertTSSymbolKeyword; +exports.assertTSVoidKeyword = assertTSVoidKeyword; +exports.assertTSUndefinedKeyword = assertTSUndefinedKeyword; +exports.assertTSNullKeyword = assertTSNullKeyword; +exports.assertTSNeverKeyword = assertTSNeverKeyword; +exports.assertTSThisType = assertTSThisType; +exports.assertTSFunctionType = assertTSFunctionType; +exports.assertTSConstructorType = assertTSConstructorType; +exports.assertTSTypeReference = assertTSTypeReference; +exports.assertTSTypePredicate = assertTSTypePredicate; +exports.assertTSTypeQuery = assertTSTypeQuery; +exports.assertTSTypeLiteral = assertTSTypeLiteral; +exports.assertTSArrayType = assertTSArrayType; +exports.assertTSTupleType = assertTSTupleType; +exports.assertTSOptionalType = assertTSOptionalType; +exports.assertTSRestType = assertTSRestType; +exports.assertTSUnionType = assertTSUnionType; +exports.assertTSIntersectionType = assertTSIntersectionType; +exports.assertTSConditionalType = assertTSConditionalType; +exports.assertTSInferType = assertTSInferType; +exports.assertTSParenthesizedType = assertTSParenthesizedType; +exports.assertTSTypeOperator = assertTSTypeOperator; +exports.assertTSIndexedAccessType = assertTSIndexedAccessType; +exports.assertTSMappedType = assertTSMappedType; +exports.assertTSLiteralType = assertTSLiteralType; +exports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments; +exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration; +exports.assertTSInterfaceBody = assertTSInterfaceBody; +exports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration; +exports.assertTSAsExpression = assertTSAsExpression; +exports.assertTSTypeAssertion = assertTSTypeAssertion; +exports.assertTSEnumDeclaration = assertTSEnumDeclaration; +exports.assertTSEnumMember = assertTSEnumMember; +exports.assertTSModuleDeclaration = assertTSModuleDeclaration; +exports.assertTSModuleBlock = assertTSModuleBlock; +exports.assertTSImportType = assertTSImportType; +exports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration; +exports.assertTSExternalModuleReference = assertTSExternalModuleReference; +exports.assertTSNonNullExpression = assertTSNonNullExpression; +exports.assertTSExportAssignment = assertTSExportAssignment; +exports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration; +exports.assertTSTypeAnnotation = assertTSTypeAnnotation; +exports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation; +exports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration; +exports.assertTSTypeParameter = assertTSTypeParameter; +exports.assertExpression = assertExpression; +exports.assertBinary = assertBinary; +exports.assertScopable = assertScopable; +exports.assertBlockParent = assertBlockParent; +exports.assertBlock = assertBlock; +exports.assertStatement = assertStatement; +exports.assertTerminatorless = assertTerminatorless; +exports.assertCompletionStatement = assertCompletionStatement; +exports.assertConditional = assertConditional; +exports.assertLoop = assertLoop; +exports.assertWhile = assertWhile; +exports.assertExpressionWrapper = assertExpressionWrapper; +exports.assertFor = assertFor; +exports.assertForXStatement = assertForXStatement; +exports.assertFunction = assertFunction; +exports.assertFunctionParent = assertFunctionParent; +exports.assertPureish = assertPureish; +exports.assertDeclaration = assertDeclaration; +exports.assertPatternLike = assertPatternLike; +exports.assertLVal = assertLVal; +exports.assertTSEntityName = assertTSEntityName; +exports.assertLiteral = assertLiteral; +exports.assertImmutable = assertImmutable; +exports.assertUserWhitespacable = assertUserWhitespacable; +exports.assertMethod = assertMethod; +exports.assertObjectMember = assertObjectMember; +exports.assertProperty = assertProperty; +exports.assertUnaryLike = assertUnaryLike; +exports.assertPattern = assertPattern; +exports.assertClass = assertClass; +exports.assertModuleDeclaration = assertModuleDeclaration; +exports.assertExportDeclaration = assertExportDeclaration; +exports.assertModuleSpecifier = assertModuleSpecifier; +exports.assertFlow = assertFlow; +exports.assertFlowType = assertFlowType; +exports.assertFlowBaseAnnotation = assertFlowBaseAnnotation; +exports.assertFlowDeclaration = assertFlowDeclaration; +exports.assertFlowPredicate = assertFlowPredicate; +exports.assertJSX = assertJSX; +exports.assertPrivate = assertPrivate; +exports.assertTSTypeElement = assertTSTypeElement; +exports.assertTSType = assertTSType; +exports.assertNumberLiteral = assertNumberLiteral; +exports.assertRegexLiteral = assertRegexLiteral; +exports.assertRestProperty = assertRestProperty; +exports.assertSpreadProperty = assertSpreadProperty; + +var _is = _interopRequireDefault(__webpack_require__(33)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function assert(type, node, opts) { + if (!(0, _is.default)(type, node, opts)) { + throw new Error(`Expected type "${type}" with option ${JSON.stringify(opts)}, but instead got "${node.type}".`); + } +} + +function assertArrayExpression(node, opts = {}) { + assert("ArrayExpression", node, opts); +} + +function assertAssignmentExpression(node, opts = {}) { + assert("AssignmentExpression", node, opts); +} + +function assertBinaryExpression(node, opts = {}) { + assert("BinaryExpression", node, opts); +} + +function assertInterpreterDirective(node, opts = {}) { + assert("InterpreterDirective", node, opts); +} + +function assertDirective(node, opts = {}) { + assert("Directive", node, opts); +} + +function assertDirectiveLiteral(node, opts = {}) { + assert("DirectiveLiteral", node, opts); +} + +function assertBlockStatement(node, opts = {}) { + assert("BlockStatement", node, opts); +} + +function assertBreakStatement(node, opts = {}) { + assert("BreakStatement", node, opts); +} + +function assertCallExpression(node, opts = {}) { + assert("CallExpression", node, opts); +} + +function assertCatchClause(node, opts = {}) { + assert("CatchClause", node, opts); +} + +function assertConditionalExpression(node, opts = {}) { + assert("ConditionalExpression", node, opts); +} + +function assertContinueStatement(node, opts = {}) { + assert("ContinueStatement", node, opts); +} + +function assertDebuggerStatement(node, opts = {}) { + assert("DebuggerStatement", node, opts); +} + +function assertDoWhileStatement(node, opts = {}) { + assert("DoWhileStatement", node, opts); +} + +function assertEmptyStatement(node, opts = {}) { + assert("EmptyStatement", node, opts); +} + +function assertExpressionStatement(node, opts = {}) { + assert("ExpressionStatement", node, opts); +} + +function assertFile(node, opts = {}) { + assert("File", node, opts); +} + +function assertForInStatement(node, opts = {}) { + assert("ForInStatement", node, opts); +} + +function assertForStatement(node, opts = {}) { + assert("ForStatement", node, opts); +} + +function assertFunctionDeclaration(node, opts = {}) { + assert("FunctionDeclaration", node, opts); +} + +function assertFunctionExpression(node, opts = {}) { + assert("FunctionExpression", node, opts); +} + +function assertIdentifier(node, opts = {}) { + assert("Identifier", node, opts); +} + +function assertIfStatement(node, opts = {}) { + assert("IfStatement", node, opts); +} + +function assertLabeledStatement(node, opts = {}) { + assert("LabeledStatement", node, opts); +} + +function assertStringLiteral(node, opts = {}) { + assert("StringLiteral", node, opts); +} + +function assertNumericLiteral(node, opts = {}) { + assert("NumericLiteral", node, opts); +} + +function assertNullLiteral(node, opts = {}) { + assert("NullLiteral", node, opts); +} + +function assertBooleanLiteral(node, opts = {}) { + assert("BooleanLiteral", node, opts); +} + +function assertRegExpLiteral(node, opts = {}) { + assert("RegExpLiteral", node, opts); +} + +function assertLogicalExpression(node, opts = {}) { + assert("LogicalExpression", node, opts); +} + +function assertMemberExpression(node, opts = {}) { + assert("MemberExpression", node, opts); +} + +function assertNewExpression(node, opts = {}) { + assert("NewExpression", node, opts); +} + +function assertProgram(node, opts = {}) { + assert("Program", node, opts); +} + +function assertObjectExpression(node, opts = {}) { + assert("ObjectExpression", node, opts); +} + +function assertObjectMethod(node, opts = {}) { + assert("ObjectMethod", node, opts); +} + +function assertObjectProperty(node, opts = {}) { + assert("ObjectProperty", node, opts); +} + +function assertRestElement(node, opts = {}) { + assert("RestElement", node, opts); +} + +function assertReturnStatement(node, opts = {}) { + assert("ReturnStatement", node, opts); +} + +function assertSequenceExpression(node, opts = {}) { + assert("SequenceExpression", node, opts); +} + +function assertParenthesizedExpression(node, opts = {}) { + assert("ParenthesizedExpression", node, opts); +} + +function assertSwitchCase(node, opts = {}) { + assert("SwitchCase", node, opts); +} + +function assertSwitchStatement(node, opts = {}) { + assert("SwitchStatement", node, opts); +} + +function assertThisExpression(node, opts = {}) { + assert("ThisExpression", node, opts); +} + +function assertThrowStatement(node, opts = {}) { + assert("ThrowStatement", node, opts); +} + +function assertTryStatement(node, opts = {}) { + assert("TryStatement", node, opts); +} + +function assertUnaryExpression(node, opts = {}) { + assert("UnaryExpression", node, opts); +} + +function assertUpdateExpression(node, opts = {}) { + assert("UpdateExpression", node, opts); +} + +function assertVariableDeclaration(node, opts = {}) { + assert("VariableDeclaration", node, opts); +} + +function assertVariableDeclarator(node, opts = {}) { + assert("VariableDeclarator", node, opts); +} + +function assertWhileStatement(node, opts = {}) { + assert("WhileStatement", node, opts); +} + +function assertWithStatement(node, opts = {}) { + assert("WithStatement", node, opts); +} + +function assertAssignmentPattern(node, opts = {}) { + assert("AssignmentPattern", node, opts); +} + +function assertArrayPattern(node, opts = {}) { + assert("ArrayPattern", node, opts); +} + +function assertArrowFunctionExpression(node, opts = {}) { + assert("ArrowFunctionExpression", node, opts); +} + +function assertClassBody(node, opts = {}) { + assert("ClassBody", node, opts); +} + +function assertClassDeclaration(node, opts = {}) { + assert("ClassDeclaration", node, opts); +} + +function assertClassExpression(node, opts = {}) { + assert("ClassExpression", node, opts); +} + +function assertExportAllDeclaration(node, opts = {}) { + assert("ExportAllDeclaration", node, opts); +} + +function assertExportDefaultDeclaration(node, opts = {}) { + assert("ExportDefaultDeclaration", node, opts); +} + +function assertExportNamedDeclaration(node, opts = {}) { + assert("ExportNamedDeclaration", node, opts); +} + +function assertExportSpecifier(node, opts = {}) { + assert("ExportSpecifier", node, opts); +} + +function assertForOfStatement(node, opts = {}) { + assert("ForOfStatement", node, opts); +} + +function assertImportDeclaration(node, opts = {}) { + assert("ImportDeclaration", node, opts); +} + +function assertImportDefaultSpecifier(node, opts = {}) { + assert("ImportDefaultSpecifier", node, opts); +} + +function assertImportNamespaceSpecifier(node, opts = {}) { + assert("ImportNamespaceSpecifier", node, opts); +} + +function assertImportSpecifier(node, opts = {}) { + assert("ImportSpecifier", node, opts); +} + +function assertMetaProperty(node, opts = {}) { + assert("MetaProperty", node, opts); +} + +function assertClassMethod(node, opts = {}) { + assert("ClassMethod", node, opts); +} + +function assertObjectPattern(node, opts = {}) { + assert("ObjectPattern", node, opts); +} + +function assertSpreadElement(node, opts = {}) { + assert("SpreadElement", node, opts); +} + +function assertSuper(node, opts = {}) { + assert("Super", node, opts); +} + +function assertTaggedTemplateExpression(node, opts = {}) { + assert("TaggedTemplateExpression", node, opts); +} + +function assertTemplateElement(node, opts = {}) { + assert("TemplateElement", node, opts); +} + +function assertTemplateLiteral(node, opts = {}) { + assert("TemplateLiteral", node, opts); +} + +function assertYieldExpression(node, opts = {}) { + assert("YieldExpression", node, opts); +} + +function assertAnyTypeAnnotation(node, opts = {}) { + assert("AnyTypeAnnotation", node, opts); +} + +function assertArrayTypeAnnotation(node, opts = {}) { + assert("ArrayTypeAnnotation", node, opts); +} + +function assertBooleanTypeAnnotation(node, opts = {}) { + assert("BooleanTypeAnnotation", node, opts); +} + +function assertBooleanLiteralTypeAnnotation(node, opts = {}) { + assert("BooleanLiteralTypeAnnotation", node, opts); +} + +function assertNullLiteralTypeAnnotation(node, opts = {}) { + assert("NullLiteralTypeAnnotation", node, opts); +} + +function assertClassImplements(node, opts = {}) { + assert("ClassImplements", node, opts); +} + +function assertDeclareClass(node, opts = {}) { + assert("DeclareClass", node, opts); +} + +function assertDeclareFunction(node, opts = {}) { + assert("DeclareFunction", node, opts); +} + +function assertDeclareInterface(node, opts = {}) { + assert("DeclareInterface", node, opts); +} + +function assertDeclareModule(node, opts = {}) { + assert("DeclareModule", node, opts); +} + +function assertDeclareModuleExports(node, opts = {}) { + assert("DeclareModuleExports", node, opts); +} + +function assertDeclareTypeAlias(node, opts = {}) { + assert("DeclareTypeAlias", node, opts); +} + +function assertDeclareOpaqueType(node, opts = {}) { + assert("DeclareOpaqueType", node, opts); +} + +function assertDeclareVariable(node, opts = {}) { + assert("DeclareVariable", node, opts); +} + +function assertDeclareExportDeclaration(node, opts = {}) { + assert("DeclareExportDeclaration", node, opts); +} + +function assertDeclareExportAllDeclaration(node, opts = {}) { + assert("DeclareExportAllDeclaration", node, opts); +} + +function assertDeclaredPredicate(node, opts = {}) { + assert("DeclaredPredicate", node, opts); +} + +function assertExistsTypeAnnotation(node, opts = {}) { + assert("ExistsTypeAnnotation", node, opts); +} + +function assertFunctionTypeAnnotation(node, opts = {}) { + assert("FunctionTypeAnnotation", node, opts); +} + +function assertFunctionTypeParam(node, opts = {}) { + assert("FunctionTypeParam", node, opts); +} + +function assertGenericTypeAnnotation(node, opts = {}) { + assert("GenericTypeAnnotation", node, opts); +} + +function assertInferredPredicate(node, opts = {}) { + assert("InferredPredicate", node, opts); +} + +function assertInterfaceExtends(node, opts = {}) { + assert("InterfaceExtends", node, opts); +} + +function assertInterfaceDeclaration(node, opts = {}) { + assert("InterfaceDeclaration", node, opts); +} + +function assertInterfaceTypeAnnotation(node, opts = {}) { + assert("InterfaceTypeAnnotation", node, opts); +} + +function assertIntersectionTypeAnnotation(node, opts = {}) { + assert("IntersectionTypeAnnotation", node, opts); +} + +function assertMixedTypeAnnotation(node, opts = {}) { + assert("MixedTypeAnnotation", node, opts); +} + +function assertEmptyTypeAnnotation(node, opts = {}) { + assert("EmptyTypeAnnotation", node, opts); +} + +function assertNullableTypeAnnotation(node, opts = {}) { + assert("NullableTypeAnnotation", node, opts); +} + +function assertNumberLiteralTypeAnnotation(node, opts = {}) { + assert("NumberLiteralTypeAnnotation", node, opts); +} + +function assertNumberTypeAnnotation(node, opts = {}) { + assert("NumberTypeAnnotation", node, opts); +} + +function assertObjectTypeAnnotation(node, opts = {}) { + assert("ObjectTypeAnnotation", node, opts); +} + +function assertObjectTypeInternalSlot(node, opts = {}) { + assert("ObjectTypeInternalSlot", node, opts); +} + +function assertObjectTypeCallProperty(node, opts = {}) { + assert("ObjectTypeCallProperty", node, opts); +} + +function assertObjectTypeIndexer(node, opts = {}) { + assert("ObjectTypeIndexer", node, opts); +} + +function assertObjectTypeProperty(node, opts = {}) { + assert("ObjectTypeProperty", node, opts); +} + +function assertObjectTypeSpreadProperty(node, opts = {}) { + assert("ObjectTypeSpreadProperty", node, opts); +} + +function assertOpaqueType(node, opts = {}) { + assert("OpaqueType", node, opts); +} + +function assertQualifiedTypeIdentifier(node, opts = {}) { + assert("QualifiedTypeIdentifier", node, opts); +} + +function assertStringLiteralTypeAnnotation(node, opts = {}) { + assert("StringLiteralTypeAnnotation", node, opts); +} + +function assertStringTypeAnnotation(node, opts = {}) { + assert("StringTypeAnnotation", node, opts); +} + +function assertThisTypeAnnotation(node, opts = {}) { + assert("ThisTypeAnnotation", node, opts); +} + +function assertTupleTypeAnnotation(node, opts = {}) { + assert("TupleTypeAnnotation", node, opts); +} + +function assertTypeofTypeAnnotation(node, opts = {}) { + assert("TypeofTypeAnnotation", node, opts); +} + +function assertTypeAlias(node, opts = {}) { + assert("TypeAlias", node, opts); +} + +function assertTypeAnnotation(node, opts = {}) { + assert("TypeAnnotation", node, opts); +} + +function assertTypeCastExpression(node, opts = {}) { + assert("TypeCastExpression", node, opts); +} + +function assertTypeParameter(node, opts = {}) { + assert("TypeParameter", node, opts); +} + +function assertTypeParameterDeclaration(node, opts = {}) { + assert("TypeParameterDeclaration", node, opts); +} + +function assertTypeParameterInstantiation(node, opts = {}) { + assert("TypeParameterInstantiation", node, opts); +} + +function assertUnionTypeAnnotation(node, opts = {}) { + assert("UnionTypeAnnotation", node, opts); +} + +function assertVariance(node, opts = {}) { + assert("Variance", node, opts); +} + +function assertVoidTypeAnnotation(node, opts = {}) { + assert("VoidTypeAnnotation", node, opts); +} + +function assertJSXAttribute(node, opts = {}) { + assert("JSXAttribute", node, opts); +} + +function assertJSXClosingElement(node, opts = {}) { + assert("JSXClosingElement", node, opts); +} + +function assertJSXElement(node, opts = {}) { + assert("JSXElement", node, opts); +} + +function assertJSXEmptyExpression(node, opts = {}) { + assert("JSXEmptyExpression", node, opts); +} + +function assertJSXExpressionContainer(node, opts = {}) { + assert("JSXExpressionContainer", node, opts); +} + +function assertJSXSpreadChild(node, opts = {}) { + assert("JSXSpreadChild", node, opts); +} + +function assertJSXIdentifier(node, opts = {}) { + assert("JSXIdentifier", node, opts); +} + +function assertJSXMemberExpression(node, opts = {}) { + assert("JSXMemberExpression", node, opts); +} + +function assertJSXNamespacedName(node, opts = {}) { + assert("JSXNamespacedName", node, opts); +} + +function assertJSXOpeningElement(node, opts = {}) { + assert("JSXOpeningElement", node, opts); +} + +function assertJSXSpreadAttribute(node, opts = {}) { + assert("JSXSpreadAttribute", node, opts); +} + +function assertJSXText(node, opts = {}) { + assert("JSXText", node, opts); +} + +function assertJSXFragment(node, opts = {}) { + assert("JSXFragment", node, opts); +} + +function assertJSXOpeningFragment(node, opts = {}) { + assert("JSXOpeningFragment", node, opts); +} + +function assertJSXClosingFragment(node, opts = {}) { + assert("JSXClosingFragment", node, opts); +} + +function assertNoop(node, opts = {}) { + assert("Noop", node, opts); +} + +function assertPlaceholder(node, opts = {}) { + assert("Placeholder", node, opts); +} + +function assertArgumentPlaceholder(node, opts = {}) { + assert("ArgumentPlaceholder", node, opts); +} + +function assertAwaitExpression(node, opts = {}) { + assert("AwaitExpression", node, opts); +} + +function assertBindExpression(node, opts = {}) { + assert("BindExpression", node, opts); +} + +function assertClassProperty(node, opts = {}) { + assert("ClassProperty", node, opts); +} + +function assertOptionalMemberExpression(node, opts = {}) { + assert("OptionalMemberExpression", node, opts); +} + +function assertPipelineTopicExpression(node, opts = {}) { + assert("PipelineTopicExpression", node, opts); +} + +function assertPipelineBareFunction(node, opts = {}) { + assert("PipelineBareFunction", node, opts); +} + +function assertPipelinePrimaryTopicReference(node, opts = {}) { + assert("PipelinePrimaryTopicReference", node, opts); +} + +function assertOptionalCallExpression(node, opts = {}) { + assert("OptionalCallExpression", node, opts); +} + +function assertClassPrivateProperty(node, opts = {}) { + assert("ClassPrivateProperty", node, opts); +} + +function assertClassPrivateMethod(node, opts = {}) { + assert("ClassPrivateMethod", node, opts); +} + +function assertImport(node, opts = {}) { + assert("Import", node, opts); +} + +function assertDecorator(node, opts = {}) { + assert("Decorator", node, opts); +} + +function assertDoExpression(node, opts = {}) { + assert("DoExpression", node, opts); +} + +function assertExportDefaultSpecifier(node, opts = {}) { + assert("ExportDefaultSpecifier", node, opts); +} + +function assertExportNamespaceSpecifier(node, opts = {}) { + assert("ExportNamespaceSpecifier", node, opts); +} + +function assertPrivateName(node, opts = {}) { + assert("PrivateName", node, opts); +} + +function assertBigIntLiteral(node, opts = {}) { + assert("BigIntLiteral", node, opts); +} + +function assertTSParameterProperty(node, opts = {}) { + assert("TSParameterProperty", node, opts); +} + +function assertTSDeclareFunction(node, opts = {}) { + assert("TSDeclareFunction", node, opts); +} + +function assertTSDeclareMethod(node, opts = {}) { + assert("TSDeclareMethod", node, opts); +} + +function assertTSQualifiedName(node, opts = {}) { + assert("TSQualifiedName", node, opts); +} + +function assertTSCallSignatureDeclaration(node, opts = {}) { + assert("TSCallSignatureDeclaration", node, opts); +} + +function assertTSConstructSignatureDeclaration(node, opts = {}) { + assert("TSConstructSignatureDeclaration", node, opts); +} + +function assertTSPropertySignature(node, opts = {}) { + assert("TSPropertySignature", node, opts); +} + +function assertTSMethodSignature(node, opts = {}) { + assert("TSMethodSignature", node, opts); +} + +function assertTSIndexSignature(node, opts = {}) { + assert("TSIndexSignature", node, opts); +} + +function assertTSAnyKeyword(node, opts = {}) { + assert("TSAnyKeyword", node, opts); +} + +function assertTSUnknownKeyword(node, opts = {}) { + assert("TSUnknownKeyword", node, opts); +} + +function assertTSNumberKeyword(node, opts = {}) { + assert("TSNumberKeyword", node, opts); +} + +function assertTSObjectKeyword(node, opts = {}) { + assert("TSObjectKeyword", node, opts); +} + +function assertTSBooleanKeyword(node, opts = {}) { + assert("TSBooleanKeyword", node, opts); +} + +function assertTSStringKeyword(node, opts = {}) { + assert("TSStringKeyword", node, opts); +} + +function assertTSSymbolKeyword(node, opts = {}) { + assert("TSSymbolKeyword", node, opts); +} + +function assertTSVoidKeyword(node, opts = {}) { + assert("TSVoidKeyword", node, opts); +} + +function assertTSUndefinedKeyword(node, opts = {}) { + assert("TSUndefinedKeyword", node, opts); +} + +function assertTSNullKeyword(node, opts = {}) { + assert("TSNullKeyword", node, opts); +} + +function assertTSNeverKeyword(node, opts = {}) { + assert("TSNeverKeyword", node, opts); +} + +function assertTSThisType(node, opts = {}) { + assert("TSThisType", node, opts); +} + +function assertTSFunctionType(node, opts = {}) { + assert("TSFunctionType", node, opts); +} + +function assertTSConstructorType(node, opts = {}) { + assert("TSConstructorType", node, opts); +} + +function assertTSTypeReference(node, opts = {}) { + assert("TSTypeReference", node, opts); +} + +function assertTSTypePredicate(node, opts = {}) { + assert("TSTypePredicate", node, opts); +} + +function assertTSTypeQuery(node, opts = {}) { + assert("TSTypeQuery", node, opts); +} + +function assertTSTypeLiteral(node, opts = {}) { + assert("TSTypeLiteral", node, opts); +} + +function assertTSArrayType(node, opts = {}) { + assert("TSArrayType", node, opts); +} + +function assertTSTupleType(node, opts = {}) { + assert("TSTupleType", node, opts); +} + +function assertTSOptionalType(node, opts = {}) { + assert("TSOptionalType", node, opts); +} + +function assertTSRestType(node, opts = {}) { + assert("TSRestType", node, opts); +} + +function assertTSUnionType(node, opts = {}) { + assert("TSUnionType", node, opts); +} + +function assertTSIntersectionType(node, opts = {}) { + assert("TSIntersectionType", node, opts); +} + +function assertTSConditionalType(node, opts = {}) { + assert("TSConditionalType", node, opts); +} + +function assertTSInferType(node, opts = {}) { + assert("TSInferType", node, opts); +} + +function assertTSParenthesizedType(node, opts = {}) { + assert("TSParenthesizedType", node, opts); +} + +function assertTSTypeOperator(node, opts = {}) { + assert("TSTypeOperator", node, opts); +} + +function assertTSIndexedAccessType(node, opts = {}) { + assert("TSIndexedAccessType", node, opts); +} + +function assertTSMappedType(node, opts = {}) { + assert("TSMappedType", node, opts); +} + +function assertTSLiteralType(node, opts = {}) { + assert("TSLiteralType", node, opts); +} + +function assertTSExpressionWithTypeArguments(node, opts = {}) { + assert("TSExpressionWithTypeArguments", node, opts); +} + +function assertTSInterfaceDeclaration(node, opts = {}) { + assert("TSInterfaceDeclaration", node, opts); +} + +function assertTSInterfaceBody(node, opts = {}) { + assert("TSInterfaceBody", node, opts); +} + +function assertTSTypeAliasDeclaration(node, opts = {}) { + assert("TSTypeAliasDeclaration", node, opts); +} + +function assertTSAsExpression(node, opts = {}) { + assert("TSAsExpression", node, opts); +} + +function assertTSTypeAssertion(node, opts = {}) { + assert("TSTypeAssertion", node, opts); +} + +function assertTSEnumDeclaration(node, opts = {}) { + assert("TSEnumDeclaration", node, opts); +} + +function assertTSEnumMember(node, opts = {}) { + assert("TSEnumMember", node, opts); +} + +function assertTSModuleDeclaration(node, opts = {}) { + assert("TSModuleDeclaration", node, opts); +} + +function assertTSModuleBlock(node, opts = {}) { + assert("TSModuleBlock", node, opts); +} + +function assertTSImportType(node, opts = {}) { + assert("TSImportType", node, opts); +} + +function assertTSImportEqualsDeclaration(node, opts = {}) { + assert("TSImportEqualsDeclaration", node, opts); +} + +function assertTSExternalModuleReference(node, opts = {}) { + assert("TSExternalModuleReference", node, opts); +} + +function assertTSNonNullExpression(node, opts = {}) { + assert("TSNonNullExpression", node, opts); +} + +function assertTSExportAssignment(node, opts = {}) { + assert("TSExportAssignment", node, opts); +} + +function assertTSNamespaceExportDeclaration(node, opts = {}) { + assert("TSNamespaceExportDeclaration", node, opts); +} + +function assertTSTypeAnnotation(node, opts = {}) { + assert("TSTypeAnnotation", node, opts); +} + +function assertTSTypeParameterInstantiation(node, opts = {}) { + assert("TSTypeParameterInstantiation", node, opts); +} + +function assertTSTypeParameterDeclaration(node, opts = {}) { + assert("TSTypeParameterDeclaration", node, opts); +} + +function assertTSTypeParameter(node, opts = {}) { + assert("TSTypeParameter", node, opts); +} + +function assertExpression(node, opts = {}) { + assert("Expression", node, opts); +} + +function assertBinary(node, opts = {}) { + assert("Binary", node, opts); +} + +function assertScopable(node, opts = {}) { + assert("Scopable", node, opts); +} + +function assertBlockParent(node, opts = {}) { + assert("BlockParent", node, opts); +} + +function assertBlock(node, opts = {}) { + assert("Block", node, opts); +} + +function assertStatement(node, opts = {}) { + assert("Statement", node, opts); +} + +function assertTerminatorless(node, opts = {}) { + assert("Terminatorless", node, opts); +} + +function assertCompletionStatement(node, opts = {}) { + assert("CompletionStatement", node, opts); +} + +function assertConditional(node, opts = {}) { + assert("Conditional", node, opts); +} + +function assertLoop(node, opts = {}) { + assert("Loop", node, opts); +} + +function assertWhile(node, opts = {}) { + assert("While", node, opts); +} + +function assertExpressionWrapper(node, opts = {}) { + assert("ExpressionWrapper", node, opts); +} + +function assertFor(node, opts = {}) { + assert("For", node, opts); +} + +function assertForXStatement(node, opts = {}) { + assert("ForXStatement", node, opts); +} + +function assertFunction(node, opts = {}) { + assert("Function", node, opts); +} + +function assertFunctionParent(node, opts = {}) { + assert("FunctionParent", node, opts); +} + +function assertPureish(node, opts = {}) { + assert("Pureish", node, opts); +} + +function assertDeclaration(node, opts = {}) { + assert("Declaration", node, opts); +} + +function assertPatternLike(node, opts = {}) { + assert("PatternLike", node, opts); +} + +function assertLVal(node, opts = {}) { + assert("LVal", node, opts); +} + +function assertTSEntityName(node, opts = {}) { + assert("TSEntityName", node, opts); +} + +function assertLiteral(node, opts = {}) { + assert("Literal", node, opts); +} + +function assertImmutable(node, opts = {}) { + assert("Immutable", node, opts); +} + +function assertUserWhitespacable(node, opts = {}) { + assert("UserWhitespacable", node, opts); +} + +function assertMethod(node, opts = {}) { + assert("Method", node, opts); +} + +function assertObjectMember(node, opts = {}) { + assert("ObjectMember", node, opts); +} + +function assertProperty(node, opts = {}) { + assert("Property", node, opts); +} + +function assertUnaryLike(node, opts = {}) { + assert("UnaryLike", node, opts); +} + +function assertPattern(node, opts = {}) { + assert("Pattern", node, opts); +} + +function assertClass(node, opts = {}) { + assert("Class", node, opts); +} + +function assertModuleDeclaration(node, opts = {}) { + assert("ModuleDeclaration", node, opts); +} + +function assertExportDeclaration(node, opts = {}) { + assert("ExportDeclaration", node, opts); +} + +function assertModuleSpecifier(node, opts = {}) { + assert("ModuleSpecifier", node, opts); +} + +function assertFlow(node, opts = {}) { + assert("Flow", node, opts); +} + +function assertFlowType(node, opts = {}) { + assert("FlowType", node, opts); +} + +function assertFlowBaseAnnotation(node, opts = {}) { + assert("FlowBaseAnnotation", node, opts); +} + +function assertFlowDeclaration(node, opts = {}) { + assert("FlowDeclaration", node, opts); +} + +function assertFlowPredicate(node, opts = {}) { + assert("FlowPredicate", node, opts); +} + +function assertJSX(node, opts = {}) { + assert("JSX", node, opts); +} + +function assertPrivate(node, opts = {}) { + assert("Private", node, opts); +} + +function assertTSTypeElement(node, opts = {}) { + assert("TSTypeElement", node, opts); +} + +function assertTSType(node, opts = {}) { + assert("TSType", node, opts); +} + +function assertNumberLiteral(node, opts) { + console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); + assert("NumberLiteral", node, opts); +} + +function assertRegexLiteral(node, opts) { + console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); + assert("RegexLiteral", node, opts); +} + +function assertRestProperty(node, opts) { + console.trace("The node type RestProperty has been renamed to RestElement"); + assert("RestProperty", node, opts); +} + +function assertSpreadProperty(node, opts) { + console.trace("The node type SpreadProperty has been renamed to SpreadElement"); + assert("SpreadProperty", node, opts); +} + +/***/ }), +/* 165 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createTypeAnnotationBasedOnTypeof; + +var _generated = __webpack_require__(13); + +function createTypeAnnotationBasedOnTypeof(type) { + if (type === "string") { + return (0, _generated.stringTypeAnnotation)(); + } else if (type === "number") { + return (0, _generated.numberTypeAnnotation)(); + } else if (type === "undefined") { + return (0, _generated.voidTypeAnnotation)(); + } else if (type === "boolean") { + return (0, _generated.booleanTypeAnnotation)(); + } else if (type === "function") { + return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Function")); + } else if (type === "object") { + return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Object")); + } else if (type === "symbol") { + return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Symbol")); + } else { + throw new Error("Invalid typeof value"); + } +} + +/***/ }), +/* 166 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createUnionTypeAnnotation; + +var _generated = __webpack_require__(13); + +var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(62)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function createUnionTypeAnnotation(types) { + const flattened = (0, _removeTypeDuplicates.default)(types); + + if (flattened.length === 1) { + return flattened[0]; + } else { + return (0, _generated.unionTypeAnnotation)(flattened); + } +} + +/***/ }), +/* 167 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cloneDeep; + +var _cloneNode = _interopRequireDefault(__webpack_require__(23)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function cloneDeep(node) { + return (0, _cloneNode.default)(node); +} + +/***/ }), +/* 168 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cloneWithoutLoc; + +var _clone = _interopRequireDefault(__webpack_require__(63)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function cloneWithoutLoc(node) { + const newNode = (0, _clone.default)(node); + newNode.loc = null; + return newNode; +} + +/***/ }), +/* 169 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = addComment; + +var _addComments = _interopRequireDefault(__webpack_require__(64)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function addComment(node, type, content, line) { + return (0, _addComments.default)(node, type, [{ + type: line ? "CommentLine" : "CommentBlock", + value: content + }]); +} + +/***/ }), +/* 170 */ +/***/ (function(module, exports) { + +module.exports = require("lodash/uniq"); + +/***/ }), +/* 171 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = removeComments; + +var _constants = __webpack_require__(17); + +function removeComments(node) { + _constants.COMMENT_KEYS.forEach(key => { + node[key] = null; + }); + + return node; +} + +/***/ }), +/* 172 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.PRIVATE_TYPES = exports.JSX_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.FLOWTYPE_TYPES = exports.FLOW_TYPES = exports.MODULESPECIFIER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = exports.CLASS_TYPES = exports.PATTERN_TYPES = exports.UNARYLIKE_TYPES = exports.PROPERTY_TYPES = exports.OBJECTMEMBER_TYPES = exports.METHOD_TYPES = exports.USERWHITESPACABLE_TYPES = exports.IMMUTABLE_TYPES = exports.LITERAL_TYPES = exports.TSENTITYNAME_TYPES = exports.LVAL_TYPES = exports.PATTERNLIKE_TYPES = exports.DECLARATION_TYPES = exports.PUREISH_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FUNCTION_TYPES = exports.FORXSTATEMENT_TYPES = exports.FOR_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.WHILE_TYPES = exports.LOOP_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.SCOPABLE_TYPES = exports.BINARY_TYPES = exports.EXPRESSION_TYPES = void 0; + +var _definitions = __webpack_require__(12); + +const EXPRESSION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Expression"]; +exports.EXPRESSION_TYPES = EXPRESSION_TYPES; +const BINARY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Binary"]; +exports.BINARY_TYPES = BINARY_TYPES; +const SCOPABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Scopable"]; +exports.SCOPABLE_TYPES = SCOPABLE_TYPES; +const BLOCKPARENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["BlockParent"]; +exports.BLOCKPARENT_TYPES = BLOCKPARENT_TYPES; +const BLOCK_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Block"]; +exports.BLOCK_TYPES = BLOCK_TYPES; +const STATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Statement"]; +exports.STATEMENT_TYPES = STATEMENT_TYPES; +const TERMINATORLESS_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Terminatorless"]; +exports.TERMINATORLESS_TYPES = TERMINATORLESS_TYPES; +const COMPLETIONSTATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["CompletionStatement"]; +exports.COMPLETIONSTATEMENT_TYPES = COMPLETIONSTATEMENT_TYPES; +const CONDITIONAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Conditional"]; +exports.CONDITIONAL_TYPES = CONDITIONAL_TYPES; +const LOOP_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Loop"]; +exports.LOOP_TYPES = LOOP_TYPES; +const WHILE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["While"]; +exports.WHILE_TYPES = WHILE_TYPES; +const EXPRESSIONWRAPPER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ExpressionWrapper"]; +exports.EXPRESSIONWRAPPER_TYPES = EXPRESSIONWRAPPER_TYPES; +const FOR_TYPES = _definitions.FLIPPED_ALIAS_KEYS["For"]; +exports.FOR_TYPES = FOR_TYPES; +const FORXSTATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ForXStatement"]; +exports.FORXSTATEMENT_TYPES = FORXSTATEMENT_TYPES; +const FUNCTION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Function"]; +exports.FUNCTION_TYPES = FUNCTION_TYPES; +const FUNCTIONPARENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FunctionParent"]; +exports.FUNCTIONPARENT_TYPES = FUNCTIONPARENT_TYPES; +const PUREISH_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Pureish"]; +exports.PUREISH_TYPES = PUREISH_TYPES; +const DECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Declaration"]; +exports.DECLARATION_TYPES = DECLARATION_TYPES; +const PATTERNLIKE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["PatternLike"]; +exports.PATTERNLIKE_TYPES = PATTERNLIKE_TYPES; +const LVAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["LVal"]; +exports.LVAL_TYPES = LVAL_TYPES; +const TSENTITYNAME_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSEntityName"]; +exports.TSENTITYNAME_TYPES = TSENTITYNAME_TYPES; +const LITERAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Literal"]; +exports.LITERAL_TYPES = LITERAL_TYPES; +const IMMUTABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Immutable"]; +exports.IMMUTABLE_TYPES = IMMUTABLE_TYPES; +const USERWHITESPACABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["UserWhitespacable"]; +exports.USERWHITESPACABLE_TYPES = USERWHITESPACABLE_TYPES; +const METHOD_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Method"]; +exports.METHOD_TYPES = METHOD_TYPES; +const OBJECTMEMBER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ObjectMember"]; +exports.OBJECTMEMBER_TYPES = OBJECTMEMBER_TYPES; +const PROPERTY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Property"]; +exports.PROPERTY_TYPES = PROPERTY_TYPES; +const UNARYLIKE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["UnaryLike"]; +exports.UNARYLIKE_TYPES = UNARYLIKE_TYPES; +const PATTERN_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Pattern"]; +exports.PATTERN_TYPES = PATTERN_TYPES; +const CLASS_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Class"]; +exports.CLASS_TYPES = CLASS_TYPES; +const MODULEDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ModuleDeclaration"]; +exports.MODULEDECLARATION_TYPES = MODULEDECLARATION_TYPES; +const EXPORTDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ExportDeclaration"]; +exports.EXPORTDECLARATION_TYPES = EXPORTDECLARATION_TYPES; +const MODULESPECIFIER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ModuleSpecifier"]; +exports.MODULESPECIFIER_TYPES = MODULESPECIFIER_TYPES; +const FLOW_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Flow"]; +exports.FLOW_TYPES = FLOW_TYPES; +const FLOWTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowType"]; +exports.FLOWTYPE_TYPES = FLOWTYPE_TYPES; +const FLOWBASEANNOTATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowBaseAnnotation"]; +exports.FLOWBASEANNOTATION_TYPES = FLOWBASEANNOTATION_TYPES; +const FLOWDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowDeclaration"]; +exports.FLOWDECLARATION_TYPES = FLOWDECLARATION_TYPES; +const FLOWPREDICATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowPredicate"]; +exports.FLOWPREDICATE_TYPES = FLOWPREDICATE_TYPES; +const JSX_TYPES = _definitions.FLIPPED_ALIAS_KEYS["JSX"]; +exports.JSX_TYPES = JSX_TYPES; +const PRIVATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Private"]; +exports.PRIVATE_TYPES = PRIVATE_TYPES; +const TSTYPEELEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSTypeElement"]; +exports.TSTYPEELEMENT_TYPES = TSTYPEELEMENT_TYPES; +const TSTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSType"]; +exports.TSTYPE_TYPES = TSTYPE_TYPES; + +/***/ }), +/* 173 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = ensureBlock; + +var _toBlock = _interopRequireDefault(__webpack_require__(69)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function ensureBlock(node, key = "body") { + return node[key] = (0, _toBlock.default)(node[key], node); +} + +/***/ }), +/* 174 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toBindingIdentifierName; + +var _toIdentifier = _interopRequireDefault(__webpack_require__(70)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function toBindingIdentifierName(name) { + name = (0, _toIdentifier.default)(name); + if (name === "eval" || name === "arguments") name = "_" + name; + return name; +} + +/***/ }), +/* 175 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toComputedKey; + +var _generated = __webpack_require__(7); + +var _generated2 = __webpack_require__(13); + +function toComputedKey(node, key = node.key || node.property) { + if (!node.computed && (0, _generated.isIdentifier)(key)) key = (0, _generated2.stringLiteral)(key.name); + return key; +} + +/***/ }), +/* 176 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toExpression; + +var _generated = __webpack_require__(7); + +function toExpression(node) { + if ((0, _generated.isExpressionStatement)(node)) { + node = node.expression; + } + + if ((0, _generated.isExpression)(node)) { + return node; + } + + if ((0, _generated.isClass)(node)) { + node.type = "ClassExpression"; + } else if ((0, _generated.isFunction)(node)) { + node.type = "FunctionExpression"; + } + + if (!(0, _generated.isExpression)(node)) { + throw new Error(`cannot turn ${node.type} to an expression`); + } + + return node; +} + +/***/ }), +/* 177 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toKeyAlias; + +var _generated = __webpack_require__(7); + +var _cloneNode = _interopRequireDefault(__webpack_require__(23)); + +var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(71)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function toKeyAlias(node, key = node.key) { + let alias; + + if (node.kind === "method") { + return toKeyAlias.increment() + ""; + } else if ((0, _generated.isIdentifier)(key)) { + alias = key.name; + } else if ((0, _generated.isStringLiteral)(key)) { + alias = JSON.stringify(key.value); + } else { + alias = JSON.stringify((0, _removePropertiesDeep.default)((0, _cloneNode.default)(key))); + } + + if (node.computed) { + alias = `[${alias}]`; + } + + if (node.static) { + alias = `static:${alias}`; + } + + return alias; +} + +toKeyAlias.uid = 0; + +toKeyAlias.increment = function () { + if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) { + return toKeyAlias.uid = 0; + } else { + return toKeyAlias.uid++; + } +}; + +/***/ }), +/* 178 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toSequenceExpression; + +var _gatherSequenceExpressions = _interopRequireDefault(__webpack_require__(179)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function toSequenceExpression(nodes, scope) { + if (!nodes || !nodes.length) return; + const declars = []; + const result = (0, _gatherSequenceExpressions.default)(nodes, scope, declars); + if (!result) return; + + for (const declar of declars) { + scope.push(declar); + } + + return result; +} + +/***/ }), +/* 179 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = gatherSequenceExpressions; + +var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(26)); + +var _generated = __webpack_require__(7); + +var _generated2 = __webpack_require__(13); + +var _cloneNode = _interopRequireDefault(__webpack_require__(23)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function gatherSequenceExpressions(nodes, scope, declars) { + const exprs = []; + let ensureLastUndefined = true; + + for (const node of nodes) { + ensureLastUndefined = false; + + if ((0, _generated.isExpression)(node)) { + exprs.push(node); + } else if ((0, _generated.isExpressionStatement)(node)) { + exprs.push(node.expression); + } else if ((0, _generated.isVariableDeclaration)(node)) { + if (node.kind !== "var") return; + + for (const declar of node.declarations) { + const bindings = (0, _getBindingIdentifiers.default)(declar); + + for (const key of Object.keys(bindings)) { + declars.push({ + kind: node.kind, + id: (0, _cloneNode.default)(bindings[key]) + }); + } + + if (declar.init) { + exprs.push((0, _generated2.assignmentExpression)("=", declar.id, declar.init)); + } + } + + ensureLastUndefined = true; + } else if ((0, _generated.isIfStatement)(node)) { + const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], scope, declars) : scope.buildUndefinedNode(); + const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], scope, declars) : scope.buildUndefinedNode(); + if (!consequent || !alternate) return; + exprs.push((0, _generated2.conditionalExpression)(node.test, consequent, alternate)); + } else if ((0, _generated.isBlockStatement)(node)) { + const body = gatherSequenceExpressions(node.body, scope, declars); + if (!body) return; + exprs.push(body); + } else if ((0, _generated.isEmptyStatement)(node)) { + ensureLastUndefined = true; + } else { + return; + } + } + + if (ensureLastUndefined) { + exprs.push(scope.buildUndefinedNode()); + } + + if (exprs.length === 1) { + return exprs[0]; + } else { + return (0, _generated2.sequenceExpression)(exprs); + } +} + +/***/ }), +/* 180 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toStatement; + +var _generated = __webpack_require__(7); + +var _generated2 = __webpack_require__(13); + +function toStatement(node, ignore) { + if ((0, _generated.isStatement)(node)) { + return node; + } + + let mustHaveId = false; + let newType; + + if ((0, _generated.isClass)(node)) { + mustHaveId = true; + newType = "ClassDeclaration"; + } else if ((0, _generated.isFunction)(node)) { + mustHaveId = true; + newType = "FunctionDeclaration"; + } else if ((0, _generated.isAssignmentExpression)(node)) { + return (0, _generated2.expressionStatement)(node); + } + + if (mustHaveId && !node.id) { + newType = false; + } + + if (!newType) { + if (ignore) { + return false; + } else { + throw new Error(`cannot turn ${node.type} to a statement`); + } + } + + node.type = newType; + return node; +} + +/***/ }), +/* 181 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = valueToNode; + +function _isPlainObject() { + const data = _interopRequireDefault(__webpack_require__(182)); + + _isPlainObject = function () { + return data; + }; + + return data; +} + +function _isRegExp() { + const data = _interopRequireDefault(__webpack_require__(183)); + + _isRegExp = function () { + return data; + }; + + return data; +} + +var _isValidIdentifier = _interopRequireDefault(__webpack_require__(22)); + +var _generated = __webpack_require__(13); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function valueToNode(value) { + if (value === undefined) { + return (0, _generated.identifier)("undefined"); + } + + if (value === true || value === false) { + return (0, _generated.booleanLiteral)(value); + } + + if (value === null) { + return (0, _generated.nullLiteral)(); + } + + if (typeof value === "string") { + return (0, _generated.stringLiteral)(value); + } + + if (typeof value === "number") { + let result; + + if (Number.isFinite(value)) { + result = (0, _generated.numericLiteral)(Math.abs(value)); + } else { + let numerator; + + if (Number.isNaN(value)) { + numerator = (0, _generated.numericLiteral)(0); + } else { + numerator = (0, _generated.numericLiteral)(1); + } + + result = (0, _generated.binaryExpression)("/", numerator, (0, _generated.numericLiteral)(0)); + } + + if (value < 0 || Object.is(value, -0)) { + result = (0, _generated.unaryExpression)("-", result); + } + + return result; + } + + if ((0, _isRegExp().default)(value)) { + const pattern = value.source; + const flags = value.toString().match(/\/([a-z]+|)$/)[1]; + return (0, _generated.regExpLiteral)(pattern, flags); + } + + if (Array.isArray(value)) { + return (0, _generated.arrayExpression)(value.map(valueToNode)); + } + + if ((0, _isPlainObject().default)(value)) { + const props = []; + + for (const key of Object.keys(value)) { + let nodeKey; + + if ((0, _isValidIdentifier.default)(key)) { + nodeKey = (0, _generated.identifier)(key); + } else { + nodeKey = (0, _generated.stringLiteral)(key); + } + + props.push((0, _generated.objectProperty)(nodeKey, valueToNode(value[key]))); + } + + return (0, _generated.objectExpression)(props); + } + + throw new Error("don't know how to turn this value into a node"); +} + +/***/ }), +/* 182 */ +/***/ (function(module, exports) { + +module.exports = require("lodash/isPlainObject"); + +/***/ }), +/* 183 */ +/***/ (function(module, exports) { + +module.exports = require("lodash/isRegExp"); + +/***/ }), +/* 184 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = appendToMemberExpression; + +var _generated = __webpack_require__(13); + +function appendToMemberExpression(member, append, computed = false) { + member.object = (0, _generated.memberExpression)(member.object, member.property, member.computed); + member.property = append; + member.computed = !!computed; + return member; +} + +/***/ }), +/* 185 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = inherits; + +var _constants = __webpack_require__(17); + +var _inheritsComments = _interopRequireDefault(__webpack_require__(67)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function inherits(child, parent) { + if (!child || !parent) return child; + + for (const key of _constants.INHERIT_KEYS.optional) { + if (child[key] == null) { + child[key] = parent[key]; + } + } + + for (const key of Object.keys(parent)) { + if (key[0] === "_" && key !== "__clone") child[key] = parent[key]; + } + + for (const key of _constants.INHERIT_KEYS.force) { + child[key] = parent[key]; + } + + (0, _inheritsComments.default)(child, parent); + return child; +} + +/***/ }), +/* 186 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = prependToMemberExpression; + +var _generated = __webpack_require__(13); + +function prependToMemberExpression(member, prepend) { + member.object = (0, _generated.memberExpression)(prepend, member.object); + return member; +} + +/***/ }), +/* 187 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = getOuterBindingIdentifiers; + +var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(26)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function getOuterBindingIdentifiers(node, duplicates) { + return (0, _getBindingIdentifiers.default)(node, duplicates, true); +} + +/***/ }), +/* 188 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = traverse; + +var _definitions = __webpack_require__(12); + +function traverse(node, handlers, state) { + if (typeof handlers === "function") { + handlers = { + enter: handlers + }; + } + + const { + enter, + exit + } = handlers; + traverseSimpleImpl(node, enter, exit, state, []); +} + +function traverseSimpleImpl(node, enter, exit, state, ancestors) { + const keys = _definitions.VISITOR_KEYS[node.type]; + if (!keys) return; + if (enter) enter(node, ancestors, state); + + for (const key of keys) { + const subNode = node[key]; + + if (Array.isArray(subNode)) { + for (let i = 0; i < subNode.length; i++) { + const child = subNode[i]; + if (!child) continue; + ancestors.push({ + node, + key, + index: i + }); + traverseSimpleImpl(child, enter, exit, state, ancestors); + ancestors.pop(); + } + } else if (subNode) { + ancestors.push({ + node, + key + }); + traverseSimpleImpl(subNode, enter, exit, state, ancestors); + ancestors.pop(); + } + } + + if (exit) exit(node, ancestors, state); +} + +/***/ }), +/* 189 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isBinding; + +var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(26)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isBinding(node, parent, grandparent) { + if (grandparent && node.type === "Identifier" && parent.type === "ObjectProperty" && grandparent.type === "ObjectExpression") { + return false; + } + + const keys = _getBindingIdentifiers.default.keys[parent.type]; + + if (keys) { + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const val = parent[key]; + + if (Array.isArray(val)) { + if (val.indexOf(node) >= 0) return true; + } else { + if (val === node) return true; + } + } + } + + return false; +} + +/***/ }), +/* 190 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isBlockScoped; + +var _generated = __webpack_require__(7); + +var _isLet = _interopRequireDefault(__webpack_require__(74)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isBlockScoped(node) { + return (0, _generated.isFunctionDeclaration)(node) || (0, _generated.isClassDeclaration)(node) || (0, _isLet.default)(node); +} + +/***/ }), +/* 191 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isImmutable; + +var _isType = _interopRequireDefault(__webpack_require__(34)); + +var _generated = __webpack_require__(7); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isImmutable(node) { + if ((0, _isType.default)(node.type, "Immutable")) return true; + + if ((0, _generated.isIdentifier)(node)) { + if (node.name === "undefined") { + return true; + } else { + return false; + } + } + + return false; +} + +/***/ }), +/* 192 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isNodesEquivalent; + +var _definitions = __webpack_require__(12); + +function isNodesEquivalent(a, b) { + if (typeof a !== "object" || typeof b !== "object" || a == null || b == null) { + return a === b; + } + + if (a.type !== b.type) { + return false; + } + + const fields = Object.keys(_definitions.NODE_FIELDS[a.type] || a.type); + const visitorKeys = _definitions.VISITOR_KEYS[a.type]; + + for (const field of fields) { + if (typeof a[field] !== typeof b[field]) { + return false; + } + + if (a[field] == null && b[field] == null) { + continue; + } else if (a[field] == null || b[field] == null) { + return false; + } + + if (Array.isArray(a[field])) { + if (!Array.isArray(b[field])) { + return false; + } + + if (a[field].length !== b[field].length) { + return false; + } + + for (let i = 0; i < a[field].length; i++) { + if (!isNodesEquivalent(a[field][i], b[field][i])) { + return false; + } + } + + continue; + } + + if (typeof a[field] === "object" && (!visitorKeys || !visitorKeys.includes(field))) { + for (const key of Object.keys(a[field])) { + if (a[field][key] !== b[field][key]) { + return false; + } + } + + continue; + } + + if (!isNodesEquivalent(a[field], b[field])) { + return false; + } + } + + return true; +} + +/***/ }), +/* 193 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isReferenced; + +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + case "MemberExpression": + case "JSXMemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + + return parent.object === node; + + case "VariableDeclarator": + return parent.init === node; + + case "ArrowFunctionExpression": + return parent.body === node; + + case "ExportSpecifier": + if (parent.source) { + return false; + } + + return parent.local === node; + + case "PrivateName": + return false; + + case "ObjectProperty": + case "ClassProperty": + case "ClassPrivateProperty": + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + + if (parent.value === node) { + return !grandparent || grandparent.type !== "ObjectPattern"; + } + + return true; + + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + + case "AssignmentExpression": + return parent.right === node; + + case "AssignmentPattern": + return parent.right === node; + + case "LabeledStatement": + return false; + + case "CatchClause": + return false; + + case "RestElement": + return false; + + case "BreakStatement": + case "ContinueStatement": + return false; + + case "FunctionDeclaration": + case "FunctionExpression": + return false; + + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + + case "JSXAttribute": + return false; + + case "ObjectPattern": + case "ArrayPattern": + return false; + + case "MetaProperty": + return false; + + case "ObjectTypeProperty": + return parent.key !== node; + + case "TSEnumMember": + return parent.id !== node; + + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + + return true; + } + + return true; +} + +/***/ }), +/* 194 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isScope; + +var _generated = __webpack_require__(7); + +function isScope(node, parent) { + if ((0, _generated.isBlockStatement)(node) && (0, _generated.isFunction)(parent, { + body: node + })) { + return false; + } + + if ((0, _generated.isBlockStatement)(node) && (0, _generated.isCatchClause)(parent, { + body: node + })) { + return false; + } + + return (0, _generated.isScopable)(node); +} + +/***/ }), +/* 195 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isSpecifierDefault; + +var _generated = __webpack_require__(7); + +function isSpecifierDefault(specifier) { + return (0, _generated.isImportDefaultSpecifier)(specifier) || (0, _generated.isIdentifier)(specifier.imported || specifier.exported, { + name: "default" + }); +} + +/***/ }), +/* 196 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isValidES3Identifier; + +var _isValidIdentifier = _interopRequireDefault(__webpack_require__(22)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]); + +function isValidES3Identifier(name) { + return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name); +} + +/***/ }), +/* 197 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isVar; + +var _generated = __webpack_require__(7); + +var _constants = __webpack_require__(17); + +function isVar(node) { + return (0, _generated.isVariableDeclaration)(node, { + kind: "var" + }) && !node[_constants.BLOCK_SCOPED_SYMBOL]; +} + +/***/ }), +/* 198 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var _require = __webpack_require__(55), + exactObjectTypeAnnotation = _require.exactObjectTypeAnnotation, + readOnlyArrayOfType = _require.readOnlyArrayOfType; + +var t = __webpack_require__(11); + +var _require2 = __webpack_require__(1), + GraphQLEnumType = _require2.GraphQLEnumType, + GraphQLInputObjectType = _require2.GraphQLInputObjectType, + GraphQLInterfaceType = _require2.GraphQLInterfaceType, + GraphQLList = _require2.GraphQLList, + GraphQLNonNull = _require2.GraphQLNonNull, + GraphQLObjectType = _require2.GraphQLObjectType, + GraphQLScalarType = _require2.GraphQLScalarType, + GraphQLUnionType = _require2.GraphQLUnionType; + +function getInputObjectTypeIdentifier(type) { + return type.name; +} + +function transformScalarType(type, state, objectProps) { + if (type instanceof GraphQLNonNull) { + return transformNonNullableScalarType(type.ofType, state, objectProps); + } else { + return t.nullableTypeAnnotation(transformNonNullableScalarType(type, state, objectProps)); + } +} + +function transformNonNullableScalarType(type, state, objectProps) { + if (type instanceof GraphQLList) { + return readOnlyArrayOfType(transformScalarType(type.ofType, state, objectProps)); + } else if (type instanceof GraphQLObjectType || type instanceof GraphQLUnionType || type instanceof GraphQLInterfaceType) { + return objectProps; + } else if (type instanceof GraphQLScalarType) { + return transformGraphQLScalarType(type, state); + } else if (type instanceof GraphQLEnumType) { + return transformGraphQLEnumType(type, state); + } else { + throw new Error("Could not convert from GraphQL type ".concat(type.toString())); + } +} + +function transformGraphQLScalarType(type, state) { + var customType = state.customScalars[type.name]; + + switch (customType || type.name) { + case 'ID': + case 'String': + return t.stringTypeAnnotation(); + + case 'Float': + case 'Int': + return t.numberTypeAnnotation(); + + case 'Boolean': + return t.booleanTypeAnnotation(); + + default: + return customType == null ? t.anyTypeAnnotation() : t.genericTypeAnnotation(t.identifier(customType)); + } +} + +function transformGraphQLEnumType(type, state) { + state.usedEnums[type.name] = type; + return t.genericTypeAnnotation(t.identifier(type.name)); +} + +function transformInputType(type, state) { + if (type instanceof GraphQLNonNull) { + return transformNonNullableInputType(type.ofType, state); + } else { + return t.nullableTypeAnnotation(transformNonNullableInputType(type, state)); + } +} + +function transformNonNullableInputType(type, state) { + if (type instanceof GraphQLList) { + return readOnlyArrayOfType(transformInputType(type.ofType, state)); + } else if (type instanceof GraphQLScalarType) { + return transformGraphQLScalarType(type, state); + } else if (type instanceof GraphQLEnumType) { + return transformGraphQLEnumType(type, state); + } else if (type instanceof GraphQLInputObjectType) { + var typeIdentifier = getInputObjectTypeIdentifier(type); + + if (state.generatedInputObjectTypes[typeIdentifier]) { + return t.genericTypeAnnotation(t.identifier(typeIdentifier)); + } + + state.generatedInputObjectTypes[typeIdentifier] = 'pending'; + var fields = type.getFields(); + var props = Object.keys(fields).map(function (key) { + return fields[key]; + }).map(function (field) { + var property = t.objectTypeProperty(t.identifier(field.name), transformInputType(field.type, state)); + + if (state.optionalInputFields.indexOf(field.name) >= 0 || !(field.type instanceof GraphQLNonNull)) { + property.optional = true; + } + + return property; + }); + state.generatedInputObjectTypes[typeIdentifier] = exactObjectTypeAnnotation(props); + return t.genericTypeAnnotation(t.identifier(typeIdentifier)); + } else { + throw new Error("Could not convert from GraphQL type ".concat(type.toString())); + } +} + +module.exports = { + transformInputType: transformInputType, + transformScalarType: transformScalarType +}; + +/***/ }), +/* 199 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.CodeGenerator = void 0; + +var _sourceMap = _interopRequireDefault(__webpack_require__(200)); + +var _printer = _interopRequireDefault(__webpack_require__(202)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class Generator extends _printer.default { + constructor(ast, opts = {}, code) { + const format = normalizeOptions(code, opts); + const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null; + super(format, map); + this.ast = ast; + } + + generate() { + return super.generate(this.ast); + } + +} + +function normalizeOptions(code, opts) { + const format = { + auxiliaryCommentBefore: opts.auxiliaryCommentBefore, + auxiliaryCommentAfter: opts.auxiliaryCommentAfter, + shouldPrintComment: opts.shouldPrintComment, + retainLines: opts.retainLines, + retainFunctionParens: opts.retainFunctionParens, + comments: opts.comments == null || opts.comments, + compact: opts.compact, + minified: opts.minified, + concise: opts.concise, + jsonCompatibleStrings: opts.jsonCompatibleStrings, + indent: { + adjustMultilineComment: true, + style: " ", + base: 0 + }, + decoratorsBeforeExport: !!opts.decoratorsBeforeExport, + jsescOption: Object.assign({ + quotes: "double", + wrap: true + }, opts.jsescOption) + }; + + if (format.minified) { + format.compact = true; + + format.shouldPrintComment = format.shouldPrintComment || (() => format.comments); + } else { + format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.indexOf("@license") >= 0 || value.indexOf("@preserve") >= 0); + } + + if (format.compact === "auto") { + format.compact = code.length > 500000; + + if (format.compact) { + console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`); + } + } + + if (format.compact) { + format.indent.adjustMultilineComment = false; + } + + return format; +} + +class CodeGenerator { + constructor(ast, opts, code) { + this._generator = new Generator(ast, opts, code); + } + + generate() { + return this._generator.generate(); + } + +} + +exports.CodeGenerator = CodeGenerator; + +function _default(ast, opts, code) { + const gen = new Generator(ast, opts, code); + return gen.generate(); +} + +/***/ }), +/* 200 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +function _sourceMap() { + const data = _interopRequireDefault(__webpack_require__(201)); + + _sourceMap = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class SourceMap { + constructor(opts, code) { + this._cachedMap = null; + this._code = code; + this._opts = opts; + this._rawMappings = []; + } + + get() { + if (!this._cachedMap) { + const map = this._cachedMap = new (_sourceMap().default.SourceMapGenerator)({ + sourceRoot: this._opts.sourceRoot + }); + const code = this._code; + + if (typeof code === "string") { + map.setSourceContent(this._opts.sourceFileName, code); + } else if (typeof code === "object") { + Object.keys(code).forEach(sourceFileName => { + map.setSourceContent(sourceFileName, code[sourceFileName]); + }); + } + + this._rawMappings.forEach(map.addMapping, map); + } + + return this._cachedMap.toJSON(); + } + + getRawMappings() { + return this._rawMappings.slice(); + } + + mark(generatedLine, generatedColumn, line, column, identifierName, filename, force) { + if (this._lastGenLine !== generatedLine && line === null) return; + + if (!force && this._lastGenLine === generatedLine && this._lastSourceLine === line && this._lastSourceColumn === column) { + return; + } + + this._cachedMap = null; + this._lastGenLine = generatedLine; + this._lastSourceLine = line; + this._lastSourceColumn = column; + + this._rawMappings.push({ + name: identifierName || undefined, + generated: { + line: generatedLine, + column: generatedColumn + }, + source: line == null ? undefined : filename || this._opts.sourceFileName, + original: line == null ? undefined : { + line: line, + column: column + } + }); + } + +} + +exports.default = SourceMap; + +/***/ }), +/* 201 */ +/***/ (function(module, exports) { + +module.exports = require("source-map"); + +/***/ }), +/* 202 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +function _isInteger() { + const data = _interopRequireDefault(__webpack_require__(203)); + + _isInteger = function () { + return data; + }; + + return data; +} + +function _repeat() { + const data = _interopRequireDefault(__webpack_require__(204)); + + _repeat = function () { + return data; + }; + + return data; +} + +var _buffer = _interopRequireDefault(__webpack_require__(205)); + +var n = _interopRequireWildcard(__webpack_require__(75)); + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +var generatorFunctions = _interopRequireWildcard(__webpack_require__(209)); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const SCIENTIFIC_NOTATION = /e/i; +const ZERO_DECIMAL_INTEGER = /\.0+$/; +const NON_DECIMAL_LITERAL = /^0[box]/; + +class Printer { + constructor(format, map) { + this.inForStatementInitCounter = 0; + this._printStack = []; + this._indent = 0; + this._insideAux = false; + this._printedCommentStarts = {}; + this._parenPushNewlineState = null; + this._noLineTerminator = false; + this._printAuxAfterOnNextUserNode = false; + this._printedComments = new WeakSet(); + this._endsWithInteger = false; + this._endsWithWord = false; + this.format = format || {}; + this._buf = new _buffer.default(map); + } + + generate(ast) { + this.print(ast); + + this._maybeAddAuxComment(); + + return this._buf.get(); + } + + indent() { + if (this.format.compact || this.format.concise) return; + this._indent++; + } + + dedent() { + if (this.format.compact || this.format.concise) return; + this._indent--; + } + + semicolon(force = false) { + this._maybeAddAuxComment(); + + this._append(";", !force); + } + + rightBrace() { + if (this.format.minified) { + this._buf.removeLastSemicolon(); + } + + this.token("}"); + } + + space(force = false) { + if (this.format.compact) return; + + if (this._buf.hasContent() && !this.endsWith(" ") && !this.endsWith("\n") || force) { + this._space(); + } + } + + word(str) { + if (this._endsWithWord || this.endsWith("/") && str.indexOf("/") === 0) { + this._space(); + } + + this._maybeAddAuxComment(); + + this._append(str); + + this._endsWithWord = true; + } + + number(str) { + this.word(str); + this._endsWithInteger = (0, _isInteger().default)(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str[str.length - 1] !== "."; + } + + token(str) { + if (str === "--" && this.endsWith("!") || str[0] === "+" && this.endsWith("+") || str[0] === "-" && this.endsWith("-") || str[0] === "." && this._endsWithInteger) { + this._space(); + } + + this._maybeAddAuxComment(); + + this._append(str); + } + + newline(i) { + if (this.format.retainLines || this.format.compact) return; + + if (this.format.concise) { + this.space(); + return; + } + + if (this.endsWith("\n\n")) return; + if (typeof i !== "number") i = 1; + i = Math.min(2, i); + if (this.endsWith("{\n") || this.endsWith(":\n")) i--; + if (i <= 0) return; + + for (let j = 0; j < i; j++) { + this._newline(); + } + } + + endsWith(str) { + return this._buf.endsWith(str); + } + + removeTrailingNewline() { + this._buf.removeTrailingNewline(); + } + + exactSource(loc, cb) { + this._catchUp("start", loc); + + this._buf.exactSource(loc, cb); + } + + source(prop, loc) { + this._catchUp(prop, loc); + + this._buf.source(prop, loc); + } + + withSource(prop, loc, cb) { + this._catchUp(prop, loc); + + this._buf.withSource(prop, loc, cb); + } + + _space() { + this._append(" ", true); + } + + _newline() { + this._append("\n", true); + } + + _append(str, queue = false) { + this._maybeAddParen(str); + + this._maybeIndent(str); + + if (queue) this._buf.queue(str);else this._buf.append(str); + this._endsWithWord = false; + this._endsWithInteger = false; + } + + _maybeIndent(str) { + if (this._indent && this.endsWith("\n") && str[0] !== "\n") { + this._buf.queue(this._getIndent()); + } + } + + _maybeAddParen(str) { + const parenPushNewlineState = this._parenPushNewlineState; + if (!parenPushNewlineState) return; + this._parenPushNewlineState = null; + let i; + + for (i = 0; i < str.length && str[i] === " "; i++) continue; + + if (i === str.length) return; + const cha = str[i]; + + if (cha !== "\n") { + if (cha !== "/") return; + if (i + 1 === str.length) return; + const chaPost = str[i + 1]; + if (chaPost !== "/" && chaPost !== "*") return; + } + + this.token("("); + this.indent(); + parenPushNewlineState.printed = true; + } + + _catchUp(prop, loc) { + if (!this.format.retainLines) return; + const pos = loc ? loc[prop] : null; + + if (pos && pos.line !== null) { + const count = pos.line - this._buf.getCurrentLine(); + + for (let i = 0; i < count; i++) { + this._newline(); + } + } + } + + _getIndent() { + return (0, _repeat().default)(this.format.indent.style, this._indent); + } + + startTerminatorless(isLabel = false) { + if (isLabel) { + this._noLineTerminator = true; + return null; + } else { + return this._parenPushNewlineState = { + printed: false + }; + } + } + + endTerminatorless(state) { + this._noLineTerminator = false; + + if (state && state.printed) { + this.dedent(); + this.newline(); + this.token(")"); + } + } + + print(node, parent) { + if (!node) return; + const oldConcise = this.format.concise; + + if (node._compact) { + this.format.concise = true; + } + + const printMethod = this[node.type]; + + if (!printMethod) { + throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node && node.constructor.name)}`); + } + + this._printStack.push(node); + + const oldInAux = this._insideAux; + this._insideAux = !node.loc; + + this._maybeAddAuxComment(this._insideAux && !oldInAux); + + let needsParens = n.needsParens(node, parent, this._printStack); + + if (this.format.retainFunctionParens && node.type === "FunctionExpression" && node.extra && node.extra.parenthesized) { + needsParens = true; + } + + if (needsParens) this.token("("); + + this._printLeadingComments(node); + + const loc = t().isProgram(node) || t().isFile(node) ? null : node.loc; + this.withSource("start", loc, () => { + printMethod.call(this, node, parent); + }); + + this._printTrailingComments(node); + + if (needsParens) this.token(")"); + + this._printStack.pop(); + + this.format.concise = oldConcise; + this._insideAux = oldInAux; + } + + _maybeAddAuxComment(enteredPositionlessNode) { + if (enteredPositionlessNode) this._printAuxBeforeComment(); + if (!this._insideAux) this._printAuxAfterComment(); + } + + _printAuxBeforeComment() { + if (this._printAuxAfterOnNextUserNode) return; + this._printAuxAfterOnNextUserNode = true; + const comment = this.format.auxiliaryCommentBefore; + + if (comment) { + this._printComment({ + type: "CommentBlock", + value: comment + }); + } + } + + _printAuxAfterComment() { + if (!this._printAuxAfterOnNextUserNode) return; + this._printAuxAfterOnNextUserNode = false; + const comment = this.format.auxiliaryCommentAfter; + + if (comment) { + this._printComment({ + type: "CommentBlock", + value: comment + }); + } + } + + getPossibleRaw(node) { + const extra = node.extra; + + if (extra && extra.raw != null && extra.rawValue != null && node.value === extra.rawValue) { + return extra.raw; + } + } + + printJoin(nodes, parent, opts = {}) { + if (!nodes || !nodes.length) return; + if (opts.indent) this.indent(); + const newlineOpts = { + addNewlines: opts.addNewlines + }; + + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (!node) continue; + if (opts.statement) this._printNewline(true, node, parent, newlineOpts); + this.print(node, parent); + + if (opts.iterator) { + opts.iterator(node, i); + } + + if (opts.separator && i < nodes.length - 1) { + opts.separator.call(this); + } + + if (opts.statement) this._printNewline(false, node, parent, newlineOpts); + } + + if (opts.indent) this.dedent(); + } + + printAndIndentOnComments(node, parent) { + const indent = node.leadingComments && node.leadingComments.length > 0; + if (indent) this.indent(); + this.print(node, parent); + if (indent) this.dedent(); + } + + printBlock(parent) { + const node = parent.body; + + if (!t().isEmptyStatement(node)) { + this.space(); + } + + this.print(node, parent); + } + + _printTrailingComments(node) { + this._printComments(this._getComments(false, node)); + } + + _printLeadingComments(node) { + this._printComments(this._getComments(true, node)); + } + + printInnerComments(node, indent = true) { + if (!node.innerComments || !node.innerComments.length) return; + if (indent) this.indent(); + + this._printComments(node.innerComments); + + if (indent) this.dedent(); + } + + printSequence(nodes, parent, opts = {}) { + opts.statement = true; + return this.printJoin(nodes, parent, opts); + } + + printList(items, parent, opts = {}) { + if (opts.separator == null) { + opts.separator = commaSeparator; + } + + return this.printJoin(items, parent, opts); + } + + _printNewline(leading, node, parent, opts) { + if (this.format.retainLines || this.format.compact) return; + + if (this.format.concise) { + this.space(); + return; + } + + let lines = 0; + + if (this._buf.hasContent()) { + if (!leading) lines++; + if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0; + const needs = leading ? n.needsWhitespaceBefore : n.needsWhitespaceAfter; + if (needs(node, parent)) lines++; + } + + this.newline(lines); + } + + _getComments(leading, node) { + return node && (leading ? node.leadingComments : node.trailingComments) || []; + } + + _printComment(comment) { + if (!this.format.shouldPrintComment(comment.value)) return; + if (comment.ignore) return; + if (this._printedComments.has(comment)) return; + + this._printedComments.add(comment); + + if (comment.start != null) { + if (this._printedCommentStarts[comment.start]) return; + this._printedCommentStarts[comment.start] = true; + } + + const isBlockComment = comment.type === "CommentBlock"; + this.newline(this._buf.hasContent() && !this._noLineTerminator && isBlockComment ? 1 : 0); + if (!this.endsWith("[") && !this.endsWith("{")) this.space(); + let val = !isBlockComment && !this._noLineTerminator ? `//${comment.value}\n` : `/*${comment.value}*/`; + + if (isBlockComment && this.format.indent.adjustMultilineComment) { + const offset = comment.loc && comment.loc.start.column; + + if (offset) { + const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g"); + val = val.replace(newlineRegex, "\n"); + } + + const indentSize = Math.max(this._getIndent().length, this._buf.getCurrentColumn()); + val = val.replace(/\n(?!$)/g, `\n${(0, _repeat().default)(" ", indentSize)}`); + } + + if (this.endsWith("/")) this._space(); + this.withSource("start", comment.loc, () => { + this._append(val); + }); + this.newline(isBlockComment && !this._noLineTerminator ? 1 : 0); + } + + _printComments(comments) { + if (!comments || !comments.length) return; + + for (const comment of comments) { + this._printComment(comment); + } + } + +} + +exports.default = Printer; +Object.assign(Printer.prototype, generatorFunctions); + +function commaSeparator() { + this.token(","); + this.space(); +} + +/***/ }), +/* 203 */ +/***/ (function(module, exports) { + +module.exports = require("lodash/isInteger"); + +/***/ }), +/* 204 */ +/***/ (function(module, exports) { + +module.exports = require("lodash/repeat"); + +/***/ }), +/* 205 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +function _trimRight() { + const data = _interopRequireDefault(__webpack_require__(206)); + + _trimRight = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const SPACES_RE = /^[ \t]+$/; + +class Buffer { + constructor(map) { + this._map = null; + this._buf = []; + this._last = ""; + this._queue = []; + this._position = { + line: 1, + column: 0 + }; + this._sourcePosition = { + identifierName: null, + line: null, + column: null, + filename: null + }; + this._disallowedPop = null; + this._map = map; + } + + get() { + this._flush(); + + const map = this._map; + const result = { + code: (0, _trimRight().default)(this._buf.join("")), + map: null, + rawMappings: map && map.getRawMappings() + }; + + if (map) { + Object.defineProperty(result, "map", { + configurable: true, + enumerable: true, + + get() { + return this.map = map.get(); + }, + + set(value) { + Object.defineProperty(this, "map", { + value, + writable: true + }); + } + + }); + } + + return result; + } + + append(str) { + this._flush(); + + const { + line, + column, + filename, + identifierName, + force + } = this._sourcePosition; + + this._append(str, line, column, identifierName, filename, force); + } + + queue(str) { + if (str === "\n") { + while (this._queue.length > 0 && SPACES_RE.test(this._queue[0][0])) { + this._queue.shift(); + } + } + + const { + line, + column, + filename, + identifierName, + force + } = this._sourcePosition; + + this._queue.unshift([str, line, column, identifierName, filename, force]); + } + + _flush() { + let item; + + while (item = this._queue.pop()) this._append(...item); + } + + _append(str, line, column, identifierName, filename, force) { + if (this._map && str[0] !== "\n") { + this._map.mark(this._position.line, this._position.column, line, column, identifierName, filename, force); + } + + this._buf.push(str); + + this._last = str[str.length - 1]; + + for (let i = 0; i < str.length; i++) { + if (str[i] === "\n") { + this._position.line++; + this._position.column = 0; + } else { + this._position.column++; + } + } + } + + removeTrailingNewline() { + if (this._queue.length > 0 && this._queue[0][0] === "\n") { + this._queue.shift(); + } + } + + removeLastSemicolon() { + if (this._queue.length > 0 && this._queue[0][0] === ";") { + this._queue.shift(); + } + } + + endsWith(suffix) { + if (suffix.length === 1) { + let last; + + if (this._queue.length > 0) { + const str = this._queue[0][0]; + last = str[str.length - 1]; + } else { + last = this._last; + } + + return last === suffix; + } + + const end = this._last + this._queue.reduce((acc, item) => item[0] + acc, ""); + + if (suffix.length <= end.length) { + return end.slice(-suffix.length) === suffix; + } + + return false; + } + + hasContent() { + return this._queue.length > 0 || !!this._last; + } + + exactSource(loc, cb) { + this.source("start", loc, true); + cb(); + this.source("end", loc); + + this._disallowPop("start", loc); + } + + source(prop, loc, force) { + if (prop && !loc) return; + + this._normalizePosition(prop, loc, this._sourcePosition, force); + } + + withSource(prop, loc, cb) { + if (!this._map) return cb(); + const originalLine = this._sourcePosition.line; + const originalColumn = this._sourcePosition.column; + const originalFilename = this._sourcePosition.filename; + const originalIdentifierName = this._sourcePosition.identifierName; + this.source(prop, loc); + cb(); + + if ((!this._sourcePosition.force || this._sourcePosition.line !== originalLine || this._sourcePosition.column !== originalColumn || this._sourcePosition.filename !== originalFilename) && (!this._disallowedPop || this._disallowedPop.line !== originalLine || this._disallowedPop.column !== originalColumn || this._disallowedPop.filename !== originalFilename)) { + this._sourcePosition.line = originalLine; + this._sourcePosition.column = originalColumn; + this._sourcePosition.filename = originalFilename; + this._sourcePosition.identifierName = originalIdentifierName; + this._sourcePosition.force = false; + this._disallowedPop = null; + } + } + + _disallowPop(prop, loc) { + if (prop && !loc) return; + this._disallowedPop = this._normalizePosition(prop, loc); + } + + _normalizePosition(prop, loc, targetObj, force) { + const pos = loc ? loc[prop] : null; + + if (targetObj === undefined) { + targetObj = { + identifierName: null, + line: null, + column: null, + filename: null, + force: false + }; + } + + const origLine = targetObj.line; + const origColumn = targetObj.column; + const origFilename = targetObj.filename; + targetObj.identifierName = prop === "start" && loc && loc.identifierName || null; + targetObj.line = pos ? pos.line : null; + targetObj.column = pos ? pos.column : null; + targetObj.filename = loc && loc.filename || null; + + if (force || targetObj.line !== origLine || targetObj.column !== origColumn || targetObj.filename !== origFilename) { + targetObj.force = force; + } + + return targetObj; + } + + getCurrentColumn() { + const extra = this._queue.reduce((acc, item) => item[0] + acc, ""); + + const lastIndex = extra.lastIndexOf("\n"); + return lastIndex === -1 ? this._position.column + extra.length : extra.length - 1 - lastIndex; + } + + getCurrentLine() { + const extra = this._queue.reduce((acc, item) => item[0] + acc, ""); + + let count = 0; + + for (let i = 0; i < extra.length; i++) { + if (extra[i] === "\n") count++; + } + + return this._position.line + count; + } + +} + +exports.default = Buffer; + +/***/ }), +/* 206 */ +/***/ (function(module, exports) { + +module.exports = require("trim-right"); + +/***/ }), +/* 207 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.list = exports.nodes = void 0; + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function crawl(node, state = {}) { + if (t().isMemberExpression(node)) { + crawl(node.object, state); + if (node.computed) crawl(node.property, state); + } else if (t().isBinary(node) || t().isAssignmentExpression(node)) { + crawl(node.left, state); + crawl(node.right, state); + } else if (t().isCallExpression(node)) { + state.hasCall = true; + crawl(node.callee, state); + } else if (t().isFunction(node)) { + state.hasFunction = true; + } else if (t().isIdentifier(node)) { + state.hasHelper = state.hasHelper || isHelper(node.callee); + } + + return state; +} + +function isHelper(node) { + if (t().isMemberExpression(node)) { + return isHelper(node.object) || isHelper(node.property); + } else if (t().isIdentifier(node)) { + return node.name === "require" || node.name[0] === "_"; + } else if (t().isCallExpression(node)) { + return isHelper(node.callee); + } else if (t().isBinary(node) || t().isAssignmentExpression(node)) { + return t().isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right); + } else { + return false; + } +} + +function isType(node) { + return t().isLiteral(node) || t().isObjectExpression(node) || t().isArrayExpression(node) || t().isIdentifier(node) || t().isMemberExpression(node); +} + +const nodes = { + AssignmentExpression(node) { + const state = crawl(node.right); + + if (state.hasCall && state.hasHelper || state.hasFunction) { + return { + before: state.hasFunction, + after: true + }; + } + }, + + SwitchCase(node, parent) { + return { + before: node.consequent.length || parent.cases[0] === node, + after: !node.consequent.length && parent.cases[parent.cases.length - 1] === node + }; + }, + + LogicalExpression(node) { + if (t().isFunction(node.left) || t().isFunction(node.right)) { + return { + after: true + }; + } + }, + + Literal(node) { + if (node.value === "use strict") { + return { + after: true + }; + } + }, + + CallExpression(node) { + if (t().isFunction(node.callee) || isHelper(node)) { + return { + before: true, + after: true + }; + } + }, + + VariableDeclaration(node) { + for (let i = 0; i < node.declarations.length; i++) { + const declar = node.declarations[i]; + let enabled = isHelper(declar.id) && !isType(declar.init); + + if (!enabled) { + const state = crawl(declar.init); + enabled = isHelper(declar.init) && state.hasCall || state.hasFunction; + } + + if (enabled) { + return { + before: true, + after: true + }; + } + } + }, + + IfStatement(node) { + if (t().isBlockStatement(node.consequent)) { + return { + before: true, + after: true + }; + } + } + +}; +exports.nodes = nodes; + +nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) { + if (parent.properties[0] === node) { + return { + before: true + }; + } +}; + +nodes.ObjectTypeCallProperty = function (node, parent) { + if (parent.callProperties[0] === node && (!parent.properties || !parent.properties.length)) { + return { + before: true + }; + } +}; + +nodes.ObjectTypeIndexer = function (node, parent) { + if (parent.indexers[0] === node && (!parent.properties || !parent.properties.length) && (!parent.callProperties || !parent.callProperties.length)) { + return { + before: true + }; + } +}; + +nodes.ObjectTypeInternalSlot = function (node, parent) { + if (parent.internalSlots[0] === node && (!parent.properties || !parent.properties.length) && (!parent.callProperties || !parent.callProperties.length) && (!parent.indexers || !parent.indexers.length)) { + return { + before: true + }; + } +}; + +const list = { + VariableDeclaration(node) { + return node.declarations.map(decl => decl.init); + }, + + ArrayExpression(node) { + return node.elements; + }, + + ObjectExpression(node) { + return node.properties; + } + +}; +exports.list = list; +[["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) { + if (typeof amounts === "boolean") { + amounts = { + after: amounts, + before: amounts + }; + } + + [type].concat(t().FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) { + nodes[type] = function () { + return amounts; + }; + }); +}); + +/***/ }), +/* 208 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NullableTypeAnnotation = NullableTypeAnnotation; +exports.FunctionTypeAnnotation = FunctionTypeAnnotation; +exports.UpdateExpression = UpdateExpression; +exports.ObjectExpression = ObjectExpression; +exports.DoExpression = DoExpression; +exports.Binary = Binary; +exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation; +exports.TSAsExpression = TSAsExpression; +exports.TSTypeAssertion = TSTypeAssertion; +exports.TSIntersectionType = exports.TSUnionType = TSUnionType; +exports.BinaryExpression = BinaryExpression; +exports.SequenceExpression = SequenceExpression; +exports.AwaitExpression = exports.YieldExpression = YieldExpression; +exports.ClassExpression = ClassExpression; +exports.UnaryLike = UnaryLike; +exports.FunctionExpression = FunctionExpression; +exports.ArrowFunctionExpression = ArrowFunctionExpression; +exports.ConditionalExpression = ConditionalExpression; +exports.OptionalMemberExpression = OptionalMemberExpression; +exports.AssignmentExpression = AssignmentExpression; +exports.NewExpression = NewExpression; + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +const PRECEDENCE = { + "||": 0, + "&&": 1, + "|": 2, + "^": 3, + "&": 4, + "==": 5, + "===": 5, + "!=": 5, + "!==": 5, + "<": 6, + ">": 6, + "<=": 6, + ">=": 6, + in: 6, + instanceof: 6, + ">>": 7, + "<<": 7, + ">>>": 7, + "+": 8, + "-": 8, + "*": 9, + "/": 9, + "%": 9, + "**": 10 +}; + +const isClassExtendsClause = (node, parent) => (t().isClassDeclaration(parent) || t().isClassExpression(parent)) && parent.superClass === node; + +function NullableTypeAnnotation(node, parent) { + return t().isArrayTypeAnnotation(parent); +} + +function FunctionTypeAnnotation(node, parent) { + return t().isUnionTypeAnnotation(parent) || t().isIntersectionTypeAnnotation(parent) || t().isArrayTypeAnnotation(parent); +} + +function UpdateExpression(node, parent) { + return t().isMemberExpression(parent, { + object: node + }) || t().isCallExpression(parent, { + callee: node + }) || t().isNewExpression(parent, { + callee: node + }) || isClassExtendsClause(node, parent); +} + +function ObjectExpression(node, parent, printStack) { + return isFirstInStatement(printStack, { + considerArrow: true + }); +} + +function DoExpression(node, parent, printStack) { + return isFirstInStatement(printStack); +} + +function Binary(node, parent) { + if (node.operator === "**" && t().isBinaryExpression(parent, { + operator: "**" + })) { + return parent.left === node; + } + + if (isClassExtendsClause(node, parent)) { + return true; + } + + if ((t().isCallExpression(parent) || t().isNewExpression(parent)) && parent.callee === node || t().isUnaryLike(parent) || t().isMemberExpression(parent) && parent.object === node || t().isAwaitExpression(parent)) { + return true; + } + + if (t().isBinary(parent)) { + const parentOp = parent.operator; + const parentPos = PRECEDENCE[parentOp]; + const nodeOp = node.operator; + const nodePos = PRECEDENCE[nodeOp]; + + if (parentPos === nodePos && parent.right === node && !t().isLogicalExpression(parent) || parentPos > nodePos) { + return true; + } + } + + return false; +} + +function UnionTypeAnnotation(node, parent) { + return t().isArrayTypeAnnotation(parent) || t().isNullableTypeAnnotation(parent) || t().isIntersectionTypeAnnotation(parent) || t().isUnionTypeAnnotation(parent); +} + +function TSAsExpression() { + return true; +} + +function TSTypeAssertion() { + return true; +} + +function TSUnionType(node, parent) { + return t().isTSArrayType(parent) || t().isTSOptionalType(parent) || t().isTSIntersectionType(parent) || t().isTSUnionType(parent) || t().isTSRestType(parent); +} + +function BinaryExpression(node, parent) { + return node.operator === "in" && (t().isVariableDeclarator(parent) || t().isFor(parent)); +} + +function SequenceExpression(node, parent) { + if (t().isForStatement(parent) || t().isThrowStatement(parent) || t().isReturnStatement(parent) || t().isIfStatement(parent) && parent.test === node || t().isWhileStatement(parent) && parent.test === node || t().isForInStatement(parent) && parent.right === node || t().isSwitchStatement(parent) && parent.discriminant === node || t().isExpressionStatement(parent) && parent.expression === node) { + return false; + } + + return true; +} + +function YieldExpression(node, parent) { + return t().isBinary(parent) || t().isUnaryLike(parent) || t().isCallExpression(parent) || t().isMemberExpression(parent) || t().isNewExpression(parent) || t().isAwaitExpression(parent) && t().isYieldExpression(node) || t().isConditionalExpression(parent) && node === parent.test || isClassExtendsClause(node, parent); +} + +function ClassExpression(node, parent, printStack) { + return isFirstInStatement(printStack, { + considerDefaultExports: true + }); +} + +function UnaryLike(node, parent) { + return t().isMemberExpression(parent, { + object: node + }) || t().isCallExpression(parent, { + callee: node + }) || t().isNewExpression(parent, { + callee: node + }) || t().isBinaryExpression(parent, { + operator: "**", + left: node + }) || isClassExtendsClause(node, parent); +} + +function FunctionExpression(node, parent, printStack) { + return isFirstInStatement(printStack, { + considerDefaultExports: true + }); +} + +function ArrowFunctionExpression(node, parent) { + return t().isExportDeclaration(parent) || ConditionalExpression(node, parent); +} + +function ConditionalExpression(node, parent) { + if (t().isUnaryLike(parent) || t().isBinary(parent) || t().isConditionalExpression(parent, { + test: node + }) || t().isAwaitExpression(parent) || t().isOptionalMemberExpression(parent) || t().isTaggedTemplateExpression(parent) || t().isTSTypeAssertion(parent) || t().isTSAsExpression(parent)) { + return true; + } + + return UnaryLike(node, parent); +} + +function OptionalMemberExpression(node, parent) { + return t().isCallExpression(parent) || t().isMemberExpression(parent); +} + +function AssignmentExpression(node) { + if (t().isObjectPattern(node.left)) { + return true; + } else { + return ConditionalExpression(...arguments); + } +} + +function NewExpression(node, parent) { + return isClassExtendsClause(node, parent); +} + +function isFirstInStatement(printStack, { + considerArrow = false, + considerDefaultExports = false +} = {}) { + let i = printStack.length - 1; + let node = printStack[i]; + i--; + let parent = printStack[i]; + + while (i > 0) { + if (t().isExpressionStatement(parent, { + expression: node + }) || t().isTaggedTemplateExpression(parent) || considerDefaultExports && t().isExportDefaultDeclaration(parent, { + declaration: node + }) || considerArrow && t().isArrowFunctionExpression(parent, { + body: node + })) { + return true; + } + + if (t().isCallExpression(parent, { + callee: node + }) || t().isSequenceExpression(parent) && parent.expressions[0] === node || t().isMemberExpression(parent, { + object: node + }) || t().isConditional(parent, { + test: node + }) || t().isBinary(parent, { + left: node + }) || t().isAssignmentExpression(parent, { + left: node + })) { + node = parent; + i--; + parent = printStack[i]; + } else { + return false; + } + } + + return false; +} + +/***/ }), +/* 209 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _templateLiterals = __webpack_require__(210); + +Object.keys(_templateLiterals).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _templateLiterals[key]; + } + }); +}); + +var _expressions = __webpack_require__(211); + +Object.keys(_expressions).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _expressions[key]; + } + }); +}); + +var _statements = __webpack_require__(212); + +Object.keys(_statements).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _statements[key]; + } + }); +}); + +var _classes = __webpack_require__(213); + +Object.keys(_classes).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _classes[key]; + } + }); +}); + +var _methods = __webpack_require__(214); + +Object.keys(_methods).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _methods[key]; + } + }); +}); + +var _modules = __webpack_require__(76); + +Object.keys(_modules).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _modules[key]; + } + }); +}); + +var _types = __webpack_require__(77); + +Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _types[key]; + } + }); +}); + +var _flow = __webpack_require__(216); + +Object.keys(_flow).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _flow[key]; + } + }); +}); + +var _base = __webpack_require__(217); + +Object.keys(_base).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _base[key]; + } + }); +}); + +var _jsx = __webpack_require__(218); + +Object.keys(_jsx).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _jsx[key]; + } + }); +}); + +var _typescript = __webpack_require__(219); + +Object.keys(_typescript).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _typescript[key]; + } + }); +}); + +/***/ }), +/* 210 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TaggedTemplateExpression = TaggedTemplateExpression; +exports.TemplateElement = TemplateElement; +exports.TemplateLiteral = TemplateLiteral; + +function TaggedTemplateExpression(node) { + this.print(node.tag, node); + this.print(node.typeParameters, node); + this.print(node.quasi, node); +} + +function TemplateElement(node, parent) { + const isFirst = parent.quasis[0] === node; + const isLast = parent.quasis[parent.quasis.length - 1] === node; + const value = (isFirst ? "`" : "}") + node.value.raw + (isLast ? "`" : "${"); + this.token(value); +} + +function TemplateLiteral(node) { + const quasis = node.quasis; + + for (let i = 0; i < quasis.length; i++) { + this.print(quasis[i], node); + + if (i + 1 < quasis.length) { + this.print(node.expressions[i], node); + } + } +} + +/***/ }), +/* 211 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.UnaryExpression = UnaryExpression; +exports.DoExpression = DoExpression; +exports.ParenthesizedExpression = ParenthesizedExpression; +exports.UpdateExpression = UpdateExpression; +exports.ConditionalExpression = ConditionalExpression; +exports.NewExpression = NewExpression; +exports.SequenceExpression = SequenceExpression; +exports.ThisExpression = ThisExpression; +exports.Super = Super; +exports.Decorator = Decorator; +exports.OptionalMemberExpression = OptionalMemberExpression; +exports.OptionalCallExpression = OptionalCallExpression; +exports.CallExpression = CallExpression; +exports.Import = Import; +exports.EmptyStatement = EmptyStatement; +exports.ExpressionStatement = ExpressionStatement; +exports.AssignmentPattern = AssignmentPattern; +exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; +exports.BindExpression = BindExpression; +exports.MemberExpression = MemberExpression; +exports.MetaProperty = MetaProperty; +exports.PrivateName = PrivateName; +exports.AwaitExpression = exports.YieldExpression = void 0; + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +var n = _interopRequireWildcard(__webpack_require__(75)); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function UnaryExpression(node) { + if (node.operator === "void" || node.operator === "delete" || node.operator === "typeof" || node.operator === "throw") { + this.word(node.operator); + this.space(); + } else { + this.token(node.operator); + } + + this.print(node.argument, node); +} + +function DoExpression(node) { + this.word("do"); + this.space(); + this.print(node.body, node); +} + +function ParenthesizedExpression(node) { + this.token("("); + this.print(node.expression, node); + this.token(")"); +} + +function UpdateExpression(node) { + if (node.prefix) { + this.token(node.operator); + this.print(node.argument, node); + } else { + this.startTerminatorless(true); + this.print(node.argument, node); + this.endTerminatorless(); + this.token(node.operator); + } +} + +function ConditionalExpression(node) { + this.print(node.test, node); + this.space(); + this.token("?"); + this.space(); + this.print(node.consequent, node); + this.space(); + this.token(":"); + this.space(); + this.print(node.alternate, node); +} + +function NewExpression(node, parent) { + this.word("new"); + this.space(); + this.print(node.callee, node); + + if (this.format.minified && node.arguments.length === 0 && !node.optional && !t().isCallExpression(parent, { + callee: node + }) && !t().isMemberExpression(parent) && !t().isNewExpression(parent)) { + return; + } + + this.print(node.typeArguments, node); + this.print(node.typeParameters, node); + + if (node.optional) { + this.token("?."); + } + + this.token("("); + this.printList(node.arguments, node); + this.token(")"); +} + +function SequenceExpression(node) { + this.printList(node.expressions, node); +} + +function ThisExpression() { + this.word("this"); +} + +function Super() { + this.word("super"); +} + +function Decorator(node) { + this.token("@"); + this.print(node.expression, node); + this.newline(); +} + +function OptionalMemberExpression(node) { + this.print(node.object, node); + + if (!node.computed && t().isMemberExpression(node.property)) { + throw new TypeError("Got a MemberExpression for MemberExpression property"); + } + + let computed = node.computed; + + if (t().isLiteral(node.property) && typeof node.property.value === "number") { + computed = true; + } + + if (node.optional) { + this.token("?."); + } + + if (computed) { + this.token("["); + this.print(node.property, node); + this.token("]"); + } else { + if (!node.optional) { + this.token("."); + } + + this.print(node.property, node); + } +} + +function OptionalCallExpression(node) { + this.print(node.callee, node); + this.print(node.typeArguments, node); + this.print(node.typeParameters, node); + + if (node.optional) { + this.token("?."); + } + + this.token("("); + this.printList(node.arguments, node); + this.token(")"); +} + +function CallExpression(node) { + this.print(node.callee, node); + this.print(node.typeArguments, node); + this.print(node.typeParameters, node); + this.token("("); + this.printList(node.arguments, node); + this.token(")"); +} + +function Import() { + this.word("import"); +} + +function buildYieldAwait(keyword) { + return function (node) { + this.word(keyword); + + if (node.delegate) { + this.token("*"); + } + + if (node.argument) { + this.space(); + const terminatorState = this.startTerminatorless(); + this.print(node.argument, node); + this.endTerminatorless(terminatorState); + } + }; +} + +const YieldExpression = buildYieldAwait("yield"); +exports.YieldExpression = YieldExpression; +const AwaitExpression = buildYieldAwait("await"); +exports.AwaitExpression = AwaitExpression; + +function EmptyStatement() { + this.semicolon(true); +} + +function ExpressionStatement(node) { + this.print(node.expression, node); + this.semicolon(); +} + +function AssignmentPattern(node) { + this.print(node.left, node); + if (node.left.optional) this.token("?"); + this.print(node.left.typeAnnotation, node); + this.space(); + this.token("="); + this.space(); + this.print(node.right, node); +} + +function AssignmentExpression(node, parent) { + const parens = this.inForStatementInitCounter && node.operator === "in" && !n.needsParens(node, parent); + + if (parens) { + this.token("("); + } + + this.print(node.left, node); + this.space(); + + if (node.operator === "in" || node.operator === "instanceof") { + this.word(node.operator); + } else { + this.token(node.operator); + } + + this.space(); + this.print(node.right, node); + + if (parens) { + this.token(")"); + } +} + +function BindExpression(node) { + this.print(node.object, node); + this.token("::"); + this.print(node.callee, node); +} + +function MemberExpression(node) { + this.print(node.object, node); + + if (!node.computed && t().isMemberExpression(node.property)) { + throw new TypeError("Got a MemberExpression for MemberExpression property"); + } + + let computed = node.computed; + + if (t().isLiteral(node.property) && typeof node.property.value === "number") { + computed = true; + } + + if (computed) { + this.token("["); + this.print(node.property, node); + this.token("]"); + } else { + this.token("."); + this.print(node.property, node); + } +} + +function MetaProperty(node) { + this.print(node.meta, node); + this.token("."); + this.print(node.property, node); +} + +function PrivateName(node) { + this.token("#"); + this.print(node.id, node); +} + +/***/ }), +/* 212 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.WithStatement = WithStatement; +exports.IfStatement = IfStatement; +exports.ForStatement = ForStatement; +exports.WhileStatement = WhileStatement; +exports.DoWhileStatement = DoWhileStatement; +exports.LabeledStatement = LabeledStatement; +exports.TryStatement = TryStatement; +exports.CatchClause = CatchClause; +exports.SwitchStatement = SwitchStatement; +exports.SwitchCase = SwitchCase; +exports.DebuggerStatement = DebuggerStatement; +exports.VariableDeclaration = VariableDeclaration; +exports.VariableDeclarator = VariableDeclarator; +exports.ThrowStatement = exports.BreakStatement = exports.ReturnStatement = exports.ContinueStatement = exports.ForOfStatement = exports.ForInStatement = void 0; + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function WithStatement(node) { + this.word("with"); + this.space(); + this.token("("); + this.print(node.object, node); + this.token(")"); + this.printBlock(node); +} + +function IfStatement(node) { + this.word("if"); + this.space(); + this.token("("); + this.print(node.test, node); + this.token(")"); + this.space(); + const needsBlock = node.alternate && t().isIfStatement(getLastStatement(node.consequent)); + + if (needsBlock) { + this.token("{"); + this.newline(); + this.indent(); + } + + this.printAndIndentOnComments(node.consequent, node); + + if (needsBlock) { + this.dedent(); + this.newline(); + this.token("}"); + } + + if (node.alternate) { + if (this.endsWith("}")) this.space(); + this.word("else"); + this.space(); + this.printAndIndentOnComments(node.alternate, node); + } +} + +function getLastStatement(statement) { + if (!t().isStatement(statement.body)) return statement; + return getLastStatement(statement.body); +} + +function ForStatement(node) { + this.word("for"); + this.space(); + this.token("("); + this.inForStatementInitCounter++; + this.print(node.init, node); + this.inForStatementInitCounter--; + this.token(";"); + + if (node.test) { + this.space(); + this.print(node.test, node); + } + + this.token(";"); + + if (node.update) { + this.space(); + this.print(node.update, node); + } + + this.token(")"); + this.printBlock(node); +} + +function WhileStatement(node) { + this.word("while"); + this.space(); + this.token("("); + this.print(node.test, node); + this.token(")"); + this.printBlock(node); +} + +const buildForXStatement = function (op) { + return function (node) { + this.word("for"); + this.space(); + + if (op === "of" && node.await) { + this.word("await"); + this.space(); + } + + this.token("("); + this.print(node.left, node); + this.space(); + this.word(op); + this.space(); + this.print(node.right, node); + this.token(")"); + this.printBlock(node); + }; +}; + +const ForInStatement = buildForXStatement("in"); +exports.ForInStatement = ForInStatement; +const ForOfStatement = buildForXStatement("of"); +exports.ForOfStatement = ForOfStatement; + +function DoWhileStatement(node) { + this.word("do"); + this.space(); + this.print(node.body, node); + this.space(); + this.word("while"); + this.space(); + this.token("("); + this.print(node.test, node); + this.token(")"); + this.semicolon(); +} + +function buildLabelStatement(prefix, key = "label") { + return function (node) { + this.word(prefix); + const label = node[key]; + + if (label) { + this.space(); + const isLabel = key == "label"; + const terminatorState = this.startTerminatorless(isLabel); + this.print(label, node); + this.endTerminatorless(terminatorState); + } + + this.semicolon(); + }; +} + +const ContinueStatement = buildLabelStatement("continue"); +exports.ContinueStatement = ContinueStatement; +const ReturnStatement = buildLabelStatement("return", "argument"); +exports.ReturnStatement = ReturnStatement; +const BreakStatement = buildLabelStatement("break"); +exports.BreakStatement = BreakStatement; +const ThrowStatement = buildLabelStatement("throw", "argument"); +exports.ThrowStatement = ThrowStatement; + +function LabeledStatement(node) { + this.print(node.label, node); + this.token(":"); + this.space(); + this.print(node.body, node); +} + +function TryStatement(node) { + this.word("try"); + this.space(); + this.print(node.block, node); + this.space(); + + if (node.handlers) { + this.print(node.handlers[0], node); + } else { + this.print(node.handler, node); + } + + if (node.finalizer) { + this.space(); + this.word("finally"); + this.space(); + this.print(node.finalizer, node); + } +} + +function CatchClause(node) { + this.word("catch"); + this.space(); + + if (node.param) { + this.token("("); + this.print(node.param, node); + this.token(")"); + this.space(); + } + + this.print(node.body, node); +} + +function SwitchStatement(node) { + this.word("switch"); + this.space(); + this.token("("); + this.print(node.discriminant, node); + this.token(")"); + this.space(); + this.token("{"); + this.printSequence(node.cases, node, { + indent: true, + + addNewlines(leading, cas) { + if (!leading && node.cases[node.cases.length - 1] === cas) return -1; + } + + }); + this.token("}"); +} + +function SwitchCase(node) { + if (node.test) { + this.word("case"); + this.space(); + this.print(node.test, node); + this.token(":"); + } else { + this.word("default"); + this.token(":"); + } + + if (node.consequent.length) { + this.newline(); + this.printSequence(node.consequent, node, { + indent: true + }); + } +} + +function DebuggerStatement() { + this.word("debugger"); + this.semicolon(); +} + +function variableDeclarationIndent() { + this.token(","); + this.newline(); + if (this.endsWith("\n")) for (let i = 0; i < 4; i++) this.space(true); +} + +function constDeclarationIndent() { + this.token(","); + this.newline(); + if (this.endsWith("\n")) for (let i = 0; i < 6; i++) this.space(true); +} + +function VariableDeclaration(node, parent) { + if (node.declare) { + this.word("declare"); + this.space(); + } + + this.word(node.kind); + this.space(); + let hasInits = false; + + if (!t().isFor(parent)) { + for (const declar of node.declarations) { + if (declar.init) { + hasInits = true; + } + } + } + + let separator; + + if (hasInits) { + separator = node.kind === "const" ? constDeclarationIndent : variableDeclarationIndent; + } + + this.printList(node.declarations, node, { + separator + }); + + if (t().isFor(parent)) { + if (parent.left === node || parent.init === node) return; + } + + this.semicolon(); +} + +function VariableDeclarator(node) { + this.print(node.id, node); + if (node.definite) this.token("!"); + this.print(node.id.typeAnnotation, node); + + if (node.init) { + this.space(); + this.token("="); + this.space(); + this.print(node.init, node); + } +} + +/***/ }), +/* 213 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ClassExpression = exports.ClassDeclaration = ClassDeclaration; +exports.ClassBody = ClassBody; +exports.ClassProperty = ClassProperty; +exports.ClassPrivateProperty = ClassPrivateProperty; +exports.ClassMethod = ClassMethod; +exports.ClassPrivateMethod = ClassPrivateMethod; +exports._classMethodHead = _classMethodHead; + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function ClassDeclaration(node, parent) { + if (!this.format.decoratorsBeforeExport || !t().isExportDefaultDeclaration(parent) && !t().isExportNamedDeclaration(parent)) { + this.printJoin(node.decorators, node); + } + + if (node.declare) { + this.word("declare"); + this.space(); + } + + if (node.abstract) { + this.word("abstract"); + this.space(); + } + + this.word("class"); + + if (node.id) { + this.space(); + this.print(node.id, node); + } + + this.print(node.typeParameters, node); + + if (node.superClass) { + this.space(); + this.word("extends"); + this.space(); + this.print(node.superClass, node); + this.print(node.superTypeParameters, node); + } + + if (node.implements) { + this.space(); + this.word("implements"); + this.space(); + this.printList(node.implements, node); + } + + this.space(); + this.print(node.body, node); +} + +function ClassBody(node) { + this.token("{"); + this.printInnerComments(node); + + if (node.body.length === 0) { + this.token("}"); + } else { + this.newline(); + this.indent(); + this.printSequence(node.body, node); + this.dedent(); + if (!this.endsWith("\n")) this.newline(); + this.rightBrace(); + } +} + +function ClassProperty(node) { + this.printJoin(node.decorators, node); + + if (node.accessibility) { + this.word(node.accessibility); + this.space(); + } + + if (node.static) { + this.word("static"); + this.space(); + } + + if (node.abstract) { + this.word("abstract"); + this.space(); + } + + if (node.readonly) { + this.word("readonly"); + this.space(); + } + + if (node.computed) { + this.token("["); + this.print(node.key, node); + this.token("]"); + } else { + this._variance(node); + + this.print(node.key, node); + } + + if (node.optional) { + this.token("?"); + } + + if (node.definite) { + this.token("!"); + } + + this.print(node.typeAnnotation, node); + + if (node.value) { + this.space(); + this.token("="); + this.space(); + this.print(node.value, node); + } + + this.semicolon(); +} + +function ClassPrivateProperty(node) { + if (node.static) { + this.word("static"); + this.space(); + } + + this.print(node.key, node); + this.print(node.typeAnnotation, node); + + if (node.value) { + this.space(); + this.token("="); + this.space(); + this.print(node.value, node); + } + + this.semicolon(); +} + +function ClassMethod(node) { + this._classMethodHead(node); + + this.space(); + this.print(node.body, node); +} + +function ClassPrivateMethod(node) { + this._classMethodHead(node); + + this.space(); + this.print(node.body, node); +} + +function _classMethodHead(node) { + this.printJoin(node.decorators, node); + + if (node.accessibility) { + this.word(node.accessibility); + this.space(); + } + + if (node.abstract) { + this.word("abstract"); + this.space(); + } + + if (node.static) { + this.word("static"); + this.space(); + } + + this._methodHead(node); +} + +/***/ }), +/* 214 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports._params = _params; +exports._parameters = _parameters; +exports._param = _param; +exports._methodHead = _methodHead; +exports._predicate = _predicate; +exports._functionHead = _functionHead; +exports.FunctionDeclaration = exports.FunctionExpression = FunctionExpression; +exports.ArrowFunctionExpression = ArrowFunctionExpression; + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function _params(node) { + this.print(node.typeParameters, node); + this.token("("); + + this._parameters(node.params, node); + + this.token(")"); + this.print(node.returnType, node); +} + +function _parameters(parameters, parent) { + for (let i = 0; i < parameters.length; i++) { + this._param(parameters[i], parent); + + if (i < parameters.length - 1) { + this.token(","); + this.space(); + } + } +} + +function _param(parameter, parent) { + this.printJoin(parameter.decorators, parameter); + this.print(parameter, parent); + if (parameter.optional) this.token("?"); + this.print(parameter.typeAnnotation, parameter); +} + +function _methodHead(node) { + const kind = node.kind; + const key = node.key; + + if (kind === "get" || kind === "set") { + this.word(kind); + this.space(); + } + + if (node.async) { + this.word("async"); + this.space(); + } + + if (kind === "method" || kind === "init") { + if (node.generator) { + this.token("*"); + } + } + + if (node.computed) { + this.token("["); + this.print(key, node); + this.token("]"); + } else { + this.print(key, node); + } + + if (node.optional) { + this.token("?"); + } + + this._params(node); +} + +function _predicate(node) { + if (node.predicate) { + if (!node.returnType) { + this.token(":"); + } + + this.space(); + this.print(node.predicate, node); + } +} + +function _functionHead(node) { + if (node.async) { + this.word("async"); + this.space(); + } + + this.word("function"); + if (node.generator) this.token("*"); + this.space(); + + if (node.id) { + this.print(node.id, node); + } + + this._params(node); + + this._predicate(node); +} + +function FunctionExpression(node) { + this._functionHead(node); + + this.space(); + this.print(node.body, node); +} + +function ArrowFunctionExpression(node) { + if (node.async) { + this.word("async"); + this.space(); + } + + const firstParam = node.params[0]; + + if (node.params.length === 1 && t().isIdentifier(firstParam) && !hasTypes(node, firstParam)) { + if (this.format.retainLines && node.loc && node.body.loc && node.loc.start.line < node.body.loc.start.line) { + this.token("("); + + if (firstParam.loc && firstParam.loc.start.line > node.loc.start.line) { + this.indent(); + this.print(firstParam, node); + this.dedent(); + + this._catchUp("start", node.body.loc); + } else { + this.print(firstParam, node); + } + + this.token(")"); + } else { + this.print(firstParam, node); + } + } else { + this._params(node); + } + + this._predicate(node); + + this.space(); + this.token("=>"); + this.space(); + this.print(node.body, node); +} + +function hasTypes(node, param) { + return node.typeParameters || node.returnType || param.typeAnnotation || param.optional || param.trailingComments; +} + +/***/ }), +/* 215 */ +/***/ (function(module, exports) { + +module.exports = require("jsesc"); + +/***/ }), +/* 216 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AnyTypeAnnotation = AnyTypeAnnotation; +exports.ArrayTypeAnnotation = ArrayTypeAnnotation; +exports.BooleanTypeAnnotation = BooleanTypeAnnotation; +exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation; +exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation; +exports.DeclareClass = DeclareClass; +exports.DeclareFunction = DeclareFunction; +exports.InferredPredicate = InferredPredicate; +exports.DeclaredPredicate = DeclaredPredicate; +exports.DeclareInterface = DeclareInterface; +exports.DeclareModule = DeclareModule; +exports.DeclareModuleExports = DeclareModuleExports; +exports.DeclareTypeAlias = DeclareTypeAlias; +exports.DeclareOpaqueType = DeclareOpaqueType; +exports.DeclareVariable = DeclareVariable; +exports.DeclareExportDeclaration = DeclareExportDeclaration; +exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration; +exports.ExistsTypeAnnotation = ExistsTypeAnnotation; +exports.FunctionTypeAnnotation = FunctionTypeAnnotation; +exports.FunctionTypeParam = FunctionTypeParam; +exports.GenericTypeAnnotation = exports.ClassImplements = exports.InterfaceExtends = InterfaceExtends; +exports._interfaceish = _interfaceish; +exports._variance = _variance; +exports.InterfaceDeclaration = InterfaceDeclaration; +exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation; +exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation; +exports.MixedTypeAnnotation = MixedTypeAnnotation; +exports.EmptyTypeAnnotation = EmptyTypeAnnotation; +exports.NullableTypeAnnotation = NullableTypeAnnotation; +exports.NumberTypeAnnotation = NumberTypeAnnotation; +exports.StringTypeAnnotation = StringTypeAnnotation; +exports.ThisTypeAnnotation = ThisTypeAnnotation; +exports.TupleTypeAnnotation = TupleTypeAnnotation; +exports.TypeofTypeAnnotation = TypeofTypeAnnotation; +exports.TypeAlias = TypeAlias; +exports.TypeAnnotation = TypeAnnotation; +exports.TypeParameterDeclaration = exports.TypeParameterInstantiation = TypeParameterInstantiation; +exports.TypeParameter = TypeParameter; +exports.OpaqueType = OpaqueType; +exports.ObjectTypeAnnotation = ObjectTypeAnnotation; +exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot; +exports.ObjectTypeCallProperty = ObjectTypeCallProperty; +exports.ObjectTypeIndexer = ObjectTypeIndexer; +exports.ObjectTypeProperty = ObjectTypeProperty; +exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty; +exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier; +exports.UnionTypeAnnotation = UnionTypeAnnotation; +exports.TypeCastExpression = TypeCastExpression; +exports.Variance = Variance; +exports.VoidTypeAnnotation = VoidTypeAnnotation; +Object.defineProperty(exports, "NumberLiteralTypeAnnotation", { + enumerable: true, + get: function () { + return _types2.NumericLiteral; + } +}); +Object.defineProperty(exports, "StringLiteralTypeAnnotation", { + enumerable: true, + get: function () { + return _types2.StringLiteral; + } +}); + +function t() { + const data = _interopRequireWildcard(__webpack_require__(11)); + + t = function () { + return data; + }; + + return data; +} + +var _modules = __webpack_require__(76); + +var _types2 = __webpack_require__(77); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } + +function AnyTypeAnnotation() { + this.word("any"); +} + +function ArrayTypeAnnotation(node) { + this.print(node.elementType, node); + this.token("["); + this.token("]"); +} + +function BooleanTypeAnnotation() { + this.word("boolean"); +} + +function BooleanLiteralTypeAnnotation(node) { + this.word(node.value ? "true" : "false"); +} + +function NullLiteralTypeAnnotation() { + this.word("null"); +} + +function DeclareClass(node, parent) { + if (!t().isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + + this.word("class"); + this.space(); + + this._interfaceish(node); +} + +function DeclareFunction(node, parent) { + if (!t().isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + + this.word("function"); + this.space(); + this.print(node.id, node); + this.print(node.id.typeAnnotation.typeAnnotation, node); + + if (node.predicate) { + this.space(); + this.print(node.predicate, node); + } + + this.semicolon(); +} + +function InferredPredicate() { + this.token("%"); + this.word("checks"); +} + +function DeclaredPredicate(node) { + this.token("%"); + this.word("checks"); + this.token("("); + this.print(node.value, node); + this.token(")"); +} + +function DeclareInterface(node) { + this.word("declare"); + this.space(); + this.InterfaceDeclaration(node); +} + +function DeclareModule(node) { + this.word("declare"); + this.space(); + this.word("module"); + this.space(); + this.print(node.id, node); + this.space(); + this.print(node.body, node); +} + +function DeclareModuleExports(node) { + this.word("declare"); + this.space(); + this.word("module"); + this.token("."); + this.word("exports"); + this.print(node.typeAnnotation, node); +} + +function DeclareTypeAlias(node) { + this.word("declare"); + this.space(); + this.TypeAlias(node); +} + +function DeclareOpaqueType(node, parent) { + if (!t().isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + + this.OpaqueType(node); +} + +function DeclareVariable(node, parent) { + if (!t().isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + + this.word("var"); + this.space(); + this.print(node.id, node); + this.print(node.id.typeAnnotation, node); + this.semicolon(); +} + +function DeclareExportDeclaration(node) { + this.word("declare"); + this.space(); + this.word("export"); + this.space(); + + if (node.default) { + this.word("default"); + this.space(); + } + + FlowExportDeclaration.apply(this, arguments); +} + +function DeclareExportAllDeclaration() { + this.word("declare"); + this.space(); + + _modules.ExportAllDeclaration.apply(this, arguments); +} + +function FlowExportDeclaration(node) { + if (node.declaration) { + const declar = node.declaration; + this.print(declar, node); + if (!t().isStatement(declar)) this.semicolon(); + } else { + this.token("{"); + + if (node.specifiers.length) { + this.space(); + this.printList(node.specifiers, node); + this.space(); + } + + this.token("}"); + + if (node.source) { + this.space(); + this.word("from"); + this.space(); + this.print(node.source, node); + } + + this.semicolon(); + } +} + +function ExistsTypeAnnotation() { + this.token("*"); +} + +function FunctionTypeAnnotation(node, parent) { + this.print(node.typeParameters, node); + this.token("("); + this.printList(node.params, node); + + if (node.rest) { + if (node.params.length) { + this.token(","); + this.space(); + } + + this.token("..."); + this.print(node.rest, node); + } + + this.token(")"); + + if (parent.type === "ObjectTypeCallProperty" || parent.type === "DeclareFunction" || parent.type === "ObjectTypeProperty" && parent.method) { + this.token(":"); + } else { + this.space(); + this.token("=>"); + } + + this.space(); + this.print(node.returnType, node); +} + +function FunctionTypeParam(node) { + this.print(node.name, node); + if (node.optional) this.token("?"); + + if (node.name) { + this.token(":"); + this.space(); + } + + this.print(node.typeAnnotation, node); +} + +function InterfaceExtends(node) { + this.print(node.id, node); + this.print(node.typeParameters, node); +} + +function _interfaceish(node) { + this.print(node.id, node); + this.print(node.typeParameters, node); + + if (node.extends.length) { + this.space(); + this.word("extends"); + this.space(); + this.printList(node.extends, node); + } + + if (node.mixins && node.mixins.length) { + this.space(); + this.word("mixins"); + this.space(); + this.printList(node.mixins, node); + } + + if (node.implements && node.implements.length) { + this.space(); + this.word("implements"); + this.space(); + this.printList(node.implements, node); + } + + this.space(); + this.print(node.body, node); +} + +function _variance(node) { + if (node.variance) { + if (node.variance.kind === "plus") { + this.token("+"); + } else if (node.variance.kind === "minus") { + this.token("-"); + } + } +} + +function InterfaceDeclaration(node) { + this.word("interface"); + this.space(); + + this._interfaceish(node); +} + +function andSeparator() { + this.space(); + this.token("&"); + this.space(); +} + +function InterfaceTypeAnnotation(node) { + this.word("interface"); + + if (node.extends && node.extends.length) { + this.space(); + this.word("extends"); + this.space(); + this.printList(node.extends, node); + } + + this.space(); + this.print(node.body, node); +} + +function IntersectionTypeAnnotation(node) { + this.printJoin(node.types, node, { + separator: andSeparator + }); +} + +function MixedTypeAnnotation() { + this.word("mixed"); +} + +function EmptyTypeAnnotation() { + this.word("empty"); +} + +function NullableTypeAnnotation(node) { + this.token("?"); + this.print(node.typeAnnotation, node); +} + +function NumberTypeAnnotation() { + this.word("number"); +} + +function StringTypeAnnotation() { + this.word("string"); +} + +function ThisTypeAnnotation() { + this.word("this"); +} + +function TupleTypeAnnotation(node) { + this.token("["); + this.printList(node.types, node); + this.token("]"); +} + +function TypeofTypeAnnotation(node) { + this.word("typeof"); + this.space(); + this.print(node.argument, node); +} + +function TypeAlias(node) { + this.word("type"); + this.space(); + this.print(node.id, node); + this.print(node.typeParameters, node); + this.space(); + this.token("="); + this.space(); + this.print(node.right, node); + this.semicolon(); +} + +function TypeAnnotation(node) { + this.token(":"); + this.space(); + if (node.optional) this.token("?"); + this.print(node.typeAnnotation, node); +} + +function TypeParameterInstantiation(node) { + this.token("<"); + this.printList(node.params, node, {}); + this.token(">"); +} + +function TypeParameter(node) { + this._variance(node); + + this.word(node.name); + + if (node.bound) { + this.print(node.bound, node); + } + + if (node.default) { + this.space(); + this.token("="); + this.space(); + this.print(node.default, node); + } +} + +function OpaqueType(node) { + this.word("opaque"); + this.space(); + this.word("type"); + this.space(); + this.print(node.id, node); + this.print(node.typeParameters, node); + + if (node.supertype) { + this.token(":"); + this.space(); + this.print(node.supertype, node); + } + + if (node.impltype) { + this.space(); + this.token("="); + this.space(); + this.print(node.impltype, node); + } + + this.semicolon(); +} + +function ObjectTypeAnnotation(node) { + if (node.exact) { + this.token("{|"); + } else { + this.token("{"); + } + + const props = node.properties.concat(node.callProperties || [], node.indexers || [], node.internalSlots || []); + + if (props.length) { + this.space(); + this.printJoin(props, node, { + addNewlines(leading) { + if (leading && !props[0]) return 1; + }, + + indent: true, + statement: true, + iterator: () => { + if (props.length !== 1) { + this.token(","); + this.space(); + } + } + }); + this.space(); + } + + if (node.exact) { + this.token("|}"); + } else { + this.token("}"); + } +} + +function ObjectTypeInternalSlot(node) { + if (node.static) { + this.word("static"); + this.space(); + } + + this.token("["); + this.token("["); + this.print(node.id, node); + this.token("]"); + this.token("]"); + if (node.optional) this.token("?"); + + if (!node.method) { + this.token(":"); + this.space(); + } + + this.print(node.value, node); +} + +function ObjectTypeCallProperty(node) { + if (node.static) { + this.word("static"); + this.space(); + } + + this.print(node.value, node); +} + +function ObjectTypeIndexer(node) { + if (node.static) { + this.word("static"); + this.space(); + } + + this._variance(node); + + this.token("["); + + if (node.id) { + this.print(node.id, node); + this.token(":"); + this.space(); + } + + this.print(node.key, node); + this.token("]"); + this.token(":"); + this.space(); + this.print(node.value, node); +} + +function ObjectTypeProperty(node) { + if (node.proto) { + this.word("proto"); + this.space(); + } + + if (node.static) { + this.word("static"); + this.space(); + } + + this._variance(node); + + this.print(node.key, node); + if (node.optional) this.token("?"); + + if (!node.method) { + this.token(":"); + this.space(); + } + + this.print(node.value, node); +} + +function ObjectTypeSpreadProperty(node) { + this.token("..."); + this.print(node.argument, node); +} + +function QualifiedTypeIdentifier(node) { + this.print(node.qualification, node); + this.token("."); + this.print(node.id, node); +} + +function orSeparator() { + this.space(); + this.token("|"); + this.space(); +} + +function UnionTypeAnnotation(node) { + this.printJoin(node.types, node, { + separator: orSeparator + }); +} + +function TypeCastExpression(node) { + this.token("("); + this.print(node.expression, node); + this.print(node.typeAnnotation, node); + this.token(")"); +} + +function Variance(node) { + if (node.kind === "plus") { + this.token("+"); + } else { + this.token("-"); + } +} + +function VoidTypeAnnotation() { + this.word("void"); +} + +/***/ }), +/* 217 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.File = File; +exports.Program = Program; +exports.BlockStatement = BlockStatement; +exports.Noop = Noop; +exports.Directive = Directive; +exports.DirectiveLiteral = DirectiveLiteral; +exports.InterpreterDirective = InterpreterDirective; +exports.Placeholder = Placeholder; + +function File(node) { + if (node.program) { + this.print(node.program.interpreter, node); + } + + this.print(node.program, node); +} + +function Program(node) { + this.printInnerComments(node, false); + this.printSequence(node.directives, node); + if (node.directives && node.directives.length) this.newline(); + this.printSequence(node.body, node); +} + +function BlockStatement(node) { + this.token("{"); + this.printInnerComments(node); + const hasDirectives = node.directives && node.directives.length; + + if (node.body.length || hasDirectives) { + this.newline(); + this.printSequence(node.directives, node, { + indent: true + }); + if (hasDirectives) this.newline(); + this.printSequence(node.body, node, { + indent: true + }); + this.removeTrailingNewline(); + this.source("end", node.loc); + if (!this.endsWith("\n")) this.newline(); + this.rightBrace(); + } else { + this.source("end", node.loc); + this.token("}"); + } +} + +function Noop() {} + +function Directive(node) { + this.print(node.value, node); + this.semicolon(); +} + +const unescapedSingleQuoteRE = /(?:^|[^\\])(?:\\\\)*'/; +const unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/; + +function DirectiveLiteral(node) { + const raw = this.getPossibleRaw(node); + + if (raw != null) { + this.token(raw); + return; + } + + const { + value + } = node; + + if (!unescapedDoubleQuoteRE.test(value)) { + this.token(`"${value}"`); + } else if (!unescapedSingleQuoteRE.test(value)) { + this.token(`'${value}'`); + } else { + throw new Error("Malformed AST: it is not possible to print a directive containing" + " both unescaped single and double quotes."); + } +} + +function InterpreterDirective(node) { + this.token(`#!${node.value}\n`); +} + +function Placeholder(node) { + this.token("%%"); + this.print(node.name); + this.token("%%"); + + if (node.expectedNode === "Statement") { + this.semicolon(); + } +} + +/***/ }), +/* 218 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.JSXAttribute = JSXAttribute; +exports.JSXIdentifier = JSXIdentifier; +exports.JSXNamespacedName = JSXNamespacedName; +exports.JSXMemberExpression = JSXMemberExpression; +exports.JSXSpreadAttribute = JSXSpreadAttribute; +exports.JSXExpressionContainer = JSXExpressionContainer; +exports.JSXSpreadChild = JSXSpreadChild; +exports.JSXText = JSXText; +exports.JSXElement = JSXElement; +exports.JSXOpeningElement = JSXOpeningElement; +exports.JSXClosingElement = JSXClosingElement; +exports.JSXEmptyExpression = JSXEmptyExpression; +exports.JSXFragment = JSXFragment; +exports.JSXOpeningFragment = JSXOpeningFragment; +exports.JSXClosingFragment = JSXClosingFragment; + +function JSXAttribute(node) { + this.print(node.name, node); + + if (node.value) { + this.token("="); + this.print(node.value, node); + } +} + +function JSXIdentifier(node) { + this.word(node.name); +} + +function JSXNamespacedName(node) { + this.print(node.namespace, node); + this.token(":"); + this.print(node.name, node); +} + +function JSXMemberExpression(node) { + this.print(node.object, node); + this.token("."); + this.print(node.property, node); +} + +function JSXSpreadAttribute(node) { + this.token("{"); + this.token("..."); + this.print(node.argument, node); + this.token("}"); +} + +function JSXExpressionContainer(node) { + this.token("{"); + this.print(node.expression, node); + this.token("}"); +} + +function JSXSpreadChild(node) { + this.token("{"); + this.token("..."); + this.print(node.expression, node); + this.token("}"); +} + +function JSXText(node) { + const raw = this.getPossibleRaw(node); + + if (raw != null) { + this.token(raw); + } else { + this.token(node.value); + } +} + +function JSXElement(node) { + const open = node.openingElement; + this.print(open, node); + if (open.selfClosing) return; + this.indent(); + + for (const child of node.children) { + this.print(child, node); + } + + this.dedent(); + this.print(node.closingElement, node); +} + +function spaceSeparator() { + this.space(); +} + +function JSXOpeningElement(node) { + this.token("<"); + this.print(node.name, node); + this.print(node.typeParameters, node); + + if (node.attributes.length > 0) { + this.space(); + this.printJoin(node.attributes, node, { + separator: spaceSeparator + }); + } + + if (node.selfClosing) { + this.space(); + this.token("/>"); + } else { + this.token(">"); + } +} + +function JSXClosingElement(node) { + this.token(""); +} + +function JSXEmptyExpression(node) { + this.printInnerComments(node); +} + +function JSXFragment(node) { + this.print(node.openingFragment, node); + this.indent(); + + for (const child of node.children) { + this.print(child, node); + } + + this.dedent(); + this.print(node.closingFragment, node); +} + +function JSXOpeningFragment() { + this.token("<"); + this.token(">"); +} + +function JSXClosingFragment() { + this.token(""); +} + +/***/ }), +/* 219 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TSTypeAnnotation = TSTypeAnnotation; +exports.TSTypeParameterDeclaration = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation; +exports.TSTypeParameter = TSTypeParameter; +exports.TSParameterProperty = TSParameterProperty; +exports.TSDeclareFunction = TSDeclareFunction; +exports.TSDeclareMethod = TSDeclareMethod; +exports.TSQualifiedName = TSQualifiedName; +exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration; +exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration; +exports.TSPropertySignature = TSPropertySignature; +exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName; +exports.TSMethodSignature = TSMethodSignature; +exports.TSIndexSignature = TSIndexSignature; +exports.TSAnyKeyword = TSAnyKeyword; +exports.TSUnknownKeyword = TSUnknownKeyword; +exports.TSNumberKeyword = TSNumberKeyword; +exports.TSObjectKeyword = TSObjectKeyword; +exports.TSBooleanKeyword = TSBooleanKeyword; +exports.TSStringKeyword = TSStringKeyword; +exports.TSSymbolKeyword = TSSymbolKeyword; +exports.TSVoidKeyword = TSVoidKeyword; +exports.TSUndefinedKeyword = TSUndefinedKeyword; +exports.TSNullKeyword = TSNullKeyword; +exports.TSNeverKeyword = TSNeverKeyword; +exports.TSThisType = TSThisType; +exports.TSFunctionType = TSFunctionType; +exports.TSConstructorType = TSConstructorType; +exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType; +exports.TSTypeReference = TSTypeReference; +exports.TSTypePredicate = TSTypePredicate; +exports.TSTypeQuery = TSTypeQuery; +exports.TSTypeLiteral = TSTypeLiteral; +exports.tsPrintTypeLiteralOrInterfaceBody = tsPrintTypeLiteralOrInterfaceBody; +exports.tsPrintBraced = tsPrintBraced; +exports.TSArrayType = TSArrayType; +exports.TSTupleType = TSTupleType; +exports.TSOptionalType = TSOptionalType; +exports.TSRestType = TSRestType; +exports.TSUnionType = TSUnionType; +exports.TSIntersectionType = TSIntersectionType; +exports.tsPrintUnionOrIntersectionType = tsPrintUnionOrIntersectionType; +exports.TSConditionalType = TSConditionalType; +exports.TSInferType = TSInferType; +exports.TSParenthesizedType = TSParenthesizedType; +exports.TSTypeOperator = TSTypeOperator; +exports.TSIndexedAccessType = TSIndexedAccessType; +exports.TSMappedType = TSMappedType; +exports.TSLiteralType = TSLiteralType; +exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments; +exports.TSInterfaceDeclaration = TSInterfaceDeclaration; +exports.TSInterfaceBody = TSInterfaceBody; +exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration; +exports.TSAsExpression = TSAsExpression; +exports.TSTypeAssertion = TSTypeAssertion; +exports.TSEnumDeclaration = TSEnumDeclaration; +exports.TSEnumMember = TSEnumMember; +exports.TSModuleDeclaration = TSModuleDeclaration; +exports.TSModuleBlock = TSModuleBlock; +exports.TSImportType = TSImportType; +exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration; +exports.TSExternalModuleReference = TSExternalModuleReference; +exports.TSNonNullExpression = TSNonNullExpression; +exports.TSExportAssignment = TSExportAssignment; +exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration; +exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase; + +function TSTypeAnnotation(node) { + this.token(":"); + this.space(); + if (node.optional) this.token("?"); + this.print(node.typeAnnotation, node); +} + +function TSTypeParameterInstantiation(node) { + this.token("<"); + this.printList(node.params, node, {}); + this.token(">"); +} + +function TSTypeParameter(node) { + this.word(node.name); + + if (node.constraint) { + this.space(); + this.word("extends"); + this.space(); + this.print(node.constraint, node); + } + + if (node.default) { + this.space(); + this.token("="); + this.space(); + this.print(node.default, node); + } +} + +function TSParameterProperty(node) { + if (node.accessibility) { + this.word(node.accessibility); + this.space(); + } + + if (node.readonly) { + this.word("readonly"); + this.space(); + } + + this._param(node.parameter); +} + +function TSDeclareFunction(node) { + if (node.declare) { + this.word("declare"); + this.space(); + } + + this._functionHead(node); + + this.token(";"); +} + +function TSDeclareMethod(node) { + this._classMethodHead(node); + + this.token(";"); +} + +function TSQualifiedName(node) { + this.print(node.left, node); + this.token("."); + this.print(node.right, node); +} + +function TSCallSignatureDeclaration(node) { + this.tsPrintSignatureDeclarationBase(node); +} + +function TSConstructSignatureDeclaration(node) { + this.word("new"); + this.space(); + this.tsPrintSignatureDeclarationBase(node); +} + +function TSPropertySignature(node) { + const { + readonly, + initializer + } = node; + + if (readonly) { + this.word("readonly"); + this.space(); + } + + this.tsPrintPropertyOrMethodName(node); + this.print(node.typeAnnotation, node); + + if (initializer) { + this.space(); + this.token("="); + this.space(); + this.print(initializer, node); + } + + this.token(";"); +} + +function tsPrintPropertyOrMethodName(node) { + if (node.computed) { + this.token("["); + } + + this.print(node.key, node); + + if (node.computed) { + this.token("]"); + } + + if (node.optional) { + this.token("?"); + } +} + +function TSMethodSignature(node) { + this.tsPrintPropertyOrMethodName(node); + this.tsPrintSignatureDeclarationBase(node); + this.token(";"); +} + +function TSIndexSignature(node) { + const { + readonly + } = node; + + if (readonly) { + this.word("readonly"); + this.space(); + } + + this.token("["); + + this._parameters(node.parameters, node); + + this.token("]"); + this.print(node.typeAnnotation, node); + this.token(";"); +} + +function TSAnyKeyword() { + this.word("any"); +} + +function TSUnknownKeyword() { + this.word("unknown"); +} + +function TSNumberKeyword() { + this.word("number"); +} + +function TSObjectKeyword() { + this.word("object"); +} + +function TSBooleanKeyword() { + this.word("boolean"); +} + +function TSStringKeyword() { + this.word("string"); +} + +function TSSymbolKeyword() { + this.word("symbol"); +} + +function TSVoidKeyword() { + this.word("void"); +} + +function TSUndefinedKeyword() { + this.word("undefined"); +} + +function TSNullKeyword() { + this.word("null"); +} + +function TSNeverKeyword() { + this.word("never"); +} + +function TSThisType() { + this.word("this"); +} + +function TSFunctionType(node) { + this.tsPrintFunctionOrConstructorType(node); +} + +function TSConstructorType(node) { + this.word("new"); + this.space(); + this.tsPrintFunctionOrConstructorType(node); +} + +function tsPrintFunctionOrConstructorType(node) { + const { + typeParameters, + parameters + } = node; + this.print(typeParameters, node); + this.token("("); + + this._parameters(parameters, node); + + this.token(")"); + this.space(); + this.token("=>"); + this.space(); + this.print(node.typeAnnotation.typeAnnotation, node); +} + +function TSTypeReference(node) { + this.print(node.typeName, node); + this.print(node.typeParameters, node); +} + +function TSTypePredicate(node) { + this.print(node.parameterName); + this.space(); + this.word("is"); + this.space(); + this.print(node.typeAnnotation.typeAnnotation); +} + +function TSTypeQuery(node) { + this.word("typeof"); + this.space(); + this.print(node.exprName); +} + +function TSTypeLiteral(node) { + this.tsPrintTypeLiteralOrInterfaceBody(node.members, node); +} + +function tsPrintTypeLiteralOrInterfaceBody(members, node) { + this.tsPrintBraced(members, node); +} + +function tsPrintBraced(members, node) { + this.token("{"); + + if (members.length) { + this.indent(); + this.newline(); + + for (const member of members) { + this.print(member, node); + this.newline(); + } + + this.dedent(); + this.rightBrace(); + } else { + this.token("}"); + } +} + +function TSArrayType(node) { + this.print(node.elementType, node); + this.token("[]"); +} + +function TSTupleType(node) { + this.token("["); + this.printList(node.elementTypes, node); + this.token("]"); +} + +function TSOptionalType(node) { + this.print(node.typeAnnotation, node); + this.token("?"); +} + +function TSRestType(node) { + this.token("..."); + this.print(node.typeAnnotation, node); +} + +function TSUnionType(node) { + this.tsPrintUnionOrIntersectionType(node, "|"); +} + +function TSIntersectionType(node) { + this.tsPrintUnionOrIntersectionType(node, "&"); +} + +function tsPrintUnionOrIntersectionType(node, sep) { + this.printJoin(node.types, node, { + separator() { + this.space(); + this.token(sep); + this.space(); + } + + }); +} + +function TSConditionalType(node) { + this.print(node.checkType); + this.space(); + this.word("extends"); + this.space(); + this.print(node.extendsType); + this.space(); + this.token("?"); + this.space(); + this.print(node.trueType); + this.space(); + this.token(":"); + this.space(); + this.print(node.falseType); +} + +function TSInferType(node) { + this.token("infer"); + this.space(); + this.print(node.typeParameter); +} + +function TSParenthesizedType(node) { + this.token("("); + this.print(node.typeAnnotation, node); + this.token(")"); +} + +function TSTypeOperator(node) { + this.token(node.operator); + this.space(); + this.print(node.typeAnnotation, node); +} + +function TSIndexedAccessType(node) { + this.print(node.objectType, node); + this.token("["); + this.print(node.indexType, node); + this.token("]"); +} + +function TSMappedType(node) { + const { + readonly, + typeParameter, + optional + } = node; + this.token("{"); + this.space(); + + if (readonly) { + tokenIfPlusMinus(this, readonly); + this.word("readonly"); + this.space(); + } + + this.token("["); + this.word(typeParameter.name); + this.space(); + this.word("in"); + this.space(); + this.print(typeParameter.constraint, typeParameter); + this.token("]"); + + if (optional) { + tokenIfPlusMinus(this, optional); + this.token("?"); + } + + this.token(":"); + this.space(); + this.print(node.typeAnnotation, node); + this.space(); + this.token("}"); +} + +function tokenIfPlusMinus(self, tok) { + if (tok !== true) { + self.token(tok); + } +} + +function TSLiteralType(node) { + this.print(node.literal, node); +} + +function TSExpressionWithTypeArguments(node) { + this.print(node.expression, node); + this.print(node.typeParameters, node); +} + +function TSInterfaceDeclaration(node) { + const { + declare, + id, + typeParameters, + extends: extendz, + body + } = node; + + if (declare) { + this.word("declare"); + this.space(); + } + + this.word("interface"); + this.space(); + this.print(id, node); + this.print(typeParameters, node); + + if (extendz) { + this.space(); + this.word("extends"); + this.space(); + this.printList(extendz, node); + } + + this.space(); + this.print(body, node); +} + +function TSInterfaceBody(node) { + this.tsPrintTypeLiteralOrInterfaceBody(node.body, node); +} + +function TSTypeAliasDeclaration(node) { + const { + declare, + id, + typeParameters, + typeAnnotation + } = node; + + if (declare) { + this.word("declare"); + this.space(); + } + + this.word("type"); + this.space(); + this.print(id, node); + this.print(typeParameters, node); + this.space(); + this.token("="); + this.space(); + this.print(typeAnnotation, node); + this.token(";"); +} + +function TSAsExpression(node) { + const { + expression, + typeAnnotation + } = node; + this.print(expression, node); + this.space(); + this.word("as"); + this.space(); + this.print(typeAnnotation, node); +} + +function TSTypeAssertion(node) { + const { + typeAnnotation, + expression + } = node; + this.token("<"); + this.print(typeAnnotation, node); + this.token(">"); + this.space(); + this.print(expression, node); +} + +function TSEnumDeclaration(node) { + const { + declare, + const: isConst, + id, + members + } = node; + + if (declare) { + this.word("declare"); + this.space(); + } + + if (isConst) { + this.word("const"); + this.space(); + } + + this.word("enum"); + this.space(); + this.print(id, node); + this.space(); + this.tsPrintBraced(members, node); +} + +function TSEnumMember(node) { + const { + id, + initializer + } = node; + this.print(id, node); + + if (initializer) { + this.space(); + this.token("="); + this.space(); + this.print(initializer, node); + } + + this.token(","); +} + +function TSModuleDeclaration(node) { + const { + declare, + id + } = node; + + if (declare) { + this.word("declare"); + this.space(); + } + + if (!node.global) { + this.word(id.type === "Identifier" ? "namespace" : "module"); + this.space(); + } + + this.print(id, node); + + if (!node.body) { + this.token(";"); + return; + } + + let body = node.body; + + while (body.type === "TSModuleDeclaration") { + this.token("."); + this.print(body.id, body); + body = body.body; + } + + this.space(); + this.print(body, node); +} + +function TSModuleBlock(node) { + this.tsPrintBraced(node.body, node); +} + +function TSImportType(node) { + const { + argument, + qualifier, + typeParameters + } = node; + this.word("import"); + this.token("("); + this.print(argument, node); + this.token(")"); + + if (qualifier) { + this.token("."); + this.print(qualifier, node); + } + + if (typeParameters) { + this.print(typeParameters, node); + } +} + +function TSImportEqualsDeclaration(node) { + const { + isExport, + id, + moduleReference + } = node; + + if (isExport) { + this.word("export"); + this.space(); + } + + this.word("import"); + this.space(); + this.print(id, node); + this.space(); + this.token("="); + this.space(); + this.print(moduleReference, node); + this.token(";"); +} + +function TSExternalModuleReference(node) { + this.token("require("); + this.print(node.expression, node); + this.token(")"); +} + +function TSNonNullExpression(node) { + this.print(node.expression, node); + this.token("!"); +} + +function TSExportAssignment(node) { + this.word("export"); + this.space(); + this.token("="); + this.space(); + this.print(node.expression, node); + this.token(";"); +} + +function TSNamespaceExportDeclaration(node) { + this.word("export"); + this.space(); + this.word("as"); + this.space(); + this.word("namespace"); + this.space(); + this.print(node.id, node); +} + +function tsPrintSignatureDeclarationBase(node) { + const { + typeParameters, + parameters + } = node; + this.print(typeParameters, node); + this.token("("); + + this._parameters(parameters, node); + + this.token(")"); + this.print(node.typeAnnotation, node); +} + +/***/ }), +/* 220 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var formatGeneratedModule = function formatGeneratedModule(_ref) { + var moduleName = _ref.moduleName, + documentType = _ref.documentType, + docText = _ref.docText, + concreteText = _ref.concreteText, + typeText = _ref.typeText, + hash = _ref.hash, + sourceHash = _ref.sourceHash; + var documentTypeImport = documentType ? "import type { ".concat(documentType, " } from 'relay-runtime';") : ''; + var docTextComment = docText ? '\n/*\n' + docText.trim() + '\n*/\n' : ''; + var hashText = hash ? "\n * ".concat(hash) : ''; + return "/**\n * ".concat('@', "flow", hashText, "\n */\n\n/* eslint-disable */\n\n'use strict';\n\n/*::\n").concat(documentTypeImport, "\n").concat(typeText || '', "\n*/\n\n").concat(docTextComment, "\nconst node/*: ").concat(documentType || 'empty', "*/ = ").concat(concreteText, ";\n// prettier-ignore\n(node/*: any*/).hash = '").concat(sourceHash, "';\nmodule.exports = node;\n"); +}; + +module.exports = formatGeneratedModule; + +/***/ }), +/* 221 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + * @format + */ + + +var Profiler = __webpack_require__(10); + +var babylon = __webpack_require__(222); + +var util = __webpack_require__(29); // Attempt to be as inclusive as possible of source text. + + +var BABYLON_OPTIONS = { + allowImportExportEverywhere: true, + allowReturnOutsideFunction: true, + allowSuperOutsideMethod: true, + sourceType: 'module', + plugins: [// Previously "*" + 'asyncGenerators', 'classProperties', ['decorators', { + decoratorsBeforeExport: true + }], 'doExpressions', 'dynamicImport', 'exportExtensions', 'flow', 'functionBind', 'functionSent', 'jsx', 'nullishCoalescingOperator', 'objectRestSpread', 'optionalChaining', 'optionalCatchBinding'], + strictMode: false +}; + +function find(text) { + var result = []; + var ast = babylon.parse(text, BABYLON_OPTIONS); + var visitors = { + CallExpression: function CallExpression(node) { + var callee = node.callee; + + if (!(callee.type === 'Identifier' && CREATE_CONTAINER_FUNCTIONS[callee.name] || callee.kind === 'MemberExpression' && callee.object.type === 'Identifier' && callee.object.value === 'Relay' && callee.property.type === 'Identifier' && CREATE_CONTAINER_FUNCTIONS[callee.property.name])) { + traverse(node, visitors); + return; + } + + var fragments = node.arguments[1]; + + if (fragments.type === 'ObjectExpression') { + fragments.properties.forEach(function (property) { + !(property.type === 'ObjectProperty' && property.key.type === 'Identifier' && property.value.type === 'TaggedTemplateExpression') ? true ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be ' + '`key: graphql`.', node.callee.name) : undefined : void 0; + !isGraphQLTag(property.value.tag) ? true ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be tagged ' + 'with `graphql`, got `%s`.', node.callee.name, getSourceTextForLocation(text, property.value.tag.loc)) : undefined : void 0; + result.push({ + keyName: property.key.name, + template: getGraphQLText(property.value.quasi), + sourceLocationOffset: getSourceLocationOffset(property.value.quasi) + }); + }); + } else { + !(fragments && fragments.type === 'TaggedTemplateExpression') ? true ? invariant(false, 'FindGraphQLTags: `%s` expects a second argument of fragment ' + 'definitions.', node.callee.name) : undefined : void 0; + !isGraphQLTag(fragments.tag) ? true ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be tagged ' + 'with `graphql`, got `%s`.', node.callee.name, getSourceTextForLocation(text, fragments.tag.loc)) : undefined : void 0; + result.push({ + keyName: null, + template: getGraphQLText(fragments.quasi), + sourceLocationOffset: getSourceLocationOffset(fragments.quasi) + }); + } // Visit remaining arguments + + + for (var ii = 2; ii < node.arguments.length; ii++) { + visit(node.arguments[ii], visitors); + } + }, + TaggedTemplateExpression: function TaggedTemplateExpression(node) { + if (isGraphQLTag(node.tag)) { + result.push({ + keyName: null, + template: node.quasi.quasis[0].value.raw, + sourceLocationOffset: getSourceLocationOffset(node.quasi) + }); + } + } + }; + visit(ast, visitors); + return result; +} + +var CREATE_CONTAINER_FUNCTIONS = Object.create(null, { + createFragmentContainer: { + value: true + }, + createPaginationContainer: { + value: true + }, + createRefetchContainer: { + value: true + } +}); +var IGNORED_KEYS = { + comments: true, + end: true, + leadingComments: true, + loc: true, + name: true, + start: true, + trailingComments: true, + type: true +}; + +function isGraphQLTag(tag) { + return tag.type === 'Identifier' && tag.name === 'graphql'; +} + +function getTemplateNode(quasi) { + var quasis = quasi.quasis; + !(quasis && quasis.length === 1) ? true ? invariant(false, 'FindGraphQLTags: Substitutions are not allowed in graphql tags.') : undefined : void 0; + return quasis[0]; +} + +function getGraphQLText(quasi) { + return getTemplateNode(quasi).value.raw; +} + +function getSourceLocationOffset(quasi) { + var loc = getTemplateNode(quasi).loc.start; + return { + line: loc.line, + column: loc.column + 1 // babylon is 0-indexed, graphql expects 1-indexed + + }; +} + +function getSourceTextForLocation(text, loc) { + if (loc == null) { + return '(source unavailable)'; + } + + var lines = text.split('\n').slice(loc.start.line - 1, loc.end.line); + lines[0] = lines[0].slice(loc.start.column); + lines[lines.length - 1] = lines[lines.length - 1].slice(0, loc.end.column); + return lines.join('\n'); +} + +function invariant(condition, msg) { + if (!condition) { + for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + + throw new Error(util.format.apply(util, [msg].concat(args))); + } +} + +function visit(node, visitors) { + var fn = visitors[node.type]; + + if (fn != null) { + fn(node); + return; + } + + traverse(node, visitors); +} + +function traverse(node, visitors) { + for (var key in node) { + if (IGNORED_KEYS[key]) { + continue; + } + + var prop = node[key]; + + if (prop && typeof prop === 'object' && typeof prop.type === 'string') { + visit(prop, visitors); + } else if (Array.isArray(prop)) { + prop.forEach(function (item) { + if (item && typeof item === 'object' && typeof item.type === 'string') { + visit(item, visitors); + } + }); + } + } +} + +module.exports = { + find: Profiler.instrument(find, 'FindGraphQLTags.find') +}; + +/***/ }), +/* 222 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +const beforeExpr = true; +const startsExpr = true; +const isLoop = true; +const isAssign = true; +const prefix = true; +const postfix = true; +class TokenType { + constructor(label, conf = {}) { + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop != null ? conf.binop : null; + this.updateContext = null; + } + +} +const keywords = new Map(); + +function createKeyword(name, options = {}) { + options.keyword = name; + const token = new TokenType(name, options); + keywords.set(name, token); + return token; +} + +function createBinop(name, binop) { + return new TokenType(name, { + beforeExpr, + binop + }); +} + +const types = { + num: new TokenType("num", { + startsExpr + }), + bigint: new TokenType("bigint", { + startsExpr + }), + regexp: new TokenType("regexp", { + startsExpr + }), + string: new TokenType("string", { + startsExpr + }), + name: new TokenType("name", { + startsExpr + }), + eof: new TokenType("eof"), + bracketL: new TokenType("[", { + beforeExpr, + startsExpr + }), + bracketR: new TokenType("]"), + braceL: new TokenType("{", { + beforeExpr, + startsExpr + }), + braceBarL: new TokenType("{|", { + beforeExpr, + startsExpr + }), + braceR: new TokenType("}"), + braceBarR: new TokenType("|}"), + parenL: new TokenType("(", { + beforeExpr, + startsExpr + }), + parenR: new TokenType(")"), + comma: new TokenType(",", { + beforeExpr + }), + semi: new TokenType(";", { + beforeExpr + }), + colon: new TokenType(":", { + beforeExpr + }), + doubleColon: new TokenType("::", { + beforeExpr + }), + dot: new TokenType("."), + question: new TokenType("?", { + beforeExpr + }), + questionDot: new TokenType("?."), + arrow: new TokenType("=>", { + beforeExpr + }), + template: new TokenType("template"), + ellipsis: new TokenType("...", { + beforeExpr + }), + backQuote: new TokenType("`", { + startsExpr + }), + dollarBraceL: new TokenType("${", { + beforeExpr, + startsExpr + }), + at: new TokenType("@"), + hash: new TokenType("#", { + startsExpr + }), + interpreterDirective: new TokenType("#!..."), + eq: new TokenType("=", { + beforeExpr, + isAssign + }), + assign: new TokenType("_=", { + beforeExpr, + isAssign + }), + incDec: new TokenType("++/--", { + prefix, + postfix, + startsExpr + }), + bang: new TokenType("!", { + beforeExpr, + prefix, + startsExpr + }), + tilde: new TokenType("~", { + beforeExpr, + prefix, + startsExpr + }), + pipeline: createBinop("|>", 0), + nullishCoalescing: createBinop("??", 1), + logicalOR: createBinop("||", 1), + logicalAND: createBinop("&&", 2), + bitwiseOR: createBinop("|", 3), + bitwiseXOR: createBinop("^", 4), + bitwiseAND: createBinop("&", 5), + equality: createBinop("==/!=/===/!==", 6), + relational: createBinop("/<=/>=", 7), + bitShift: createBinop("<>/>>>", 8), + plusMin: new TokenType("+/-", { + beforeExpr, + binop: 9, + prefix, + startsExpr + }), + modulo: createBinop("%", 10), + star: createBinop("*", 10), + slash: createBinop("/", 10), + exponent: new TokenType("**", { + beforeExpr, + binop: 11, + rightAssociative: true + }), + _break: createKeyword("break"), + _case: createKeyword("case", { + beforeExpr + }), + _catch: createKeyword("catch"), + _continue: createKeyword("continue"), + _debugger: createKeyword("debugger"), + _default: createKeyword("default", { + beforeExpr + }), + _do: createKeyword("do", { + isLoop, + beforeExpr + }), + _else: createKeyword("else", { + beforeExpr + }), + _finally: createKeyword("finally"), + _for: createKeyword("for", { + isLoop + }), + _function: createKeyword("function", { + startsExpr + }), + _if: createKeyword("if"), + _return: createKeyword("return", { + beforeExpr + }), + _switch: createKeyword("switch"), + _throw: createKeyword("throw", { + beforeExpr, + prefix, + startsExpr + }), + _try: createKeyword("try"), + _var: createKeyword("var"), + _const: createKeyword("const"), + _while: createKeyword("while", { + isLoop + }), + _with: createKeyword("with"), + _new: createKeyword("new", { + beforeExpr, + startsExpr + }), + _this: createKeyword("this", { + startsExpr + }), + _super: createKeyword("super", { + startsExpr + }), + _class: createKeyword("class", { + startsExpr + }), + _extends: createKeyword("extends", { + beforeExpr + }), + _export: createKeyword("export"), + _import: createKeyword("import", { + startsExpr + }), + _null: createKeyword("null", { + startsExpr + }), + _true: createKeyword("true", { + startsExpr + }), + _false: createKeyword("false", { + startsExpr + }), + _in: createKeyword("in", { + beforeExpr, + binop: 7 + }), + _instanceof: createKeyword("instanceof", { + beforeExpr, + binop: 7 + }), + _typeof: createKeyword("typeof", { + beforeExpr, + prefix, + startsExpr + }), + _void: createKeyword("void", { + beforeExpr, + prefix, + startsExpr + }), + _delete: createKeyword("delete", { + beforeExpr, + prefix, + startsExpr + }) +}; + +const SCOPE_OTHER = 0b000000000, + SCOPE_PROGRAM = 0b000000001, + SCOPE_FUNCTION = 0b000000010, + SCOPE_ASYNC = 0b000000100, + SCOPE_GENERATOR = 0b000001000, + SCOPE_ARROW = 0b000010000, + SCOPE_SIMPLE_CATCH = 0b000100000, + SCOPE_SUPER = 0b001000000, + SCOPE_DIRECT_SUPER = 0b010000000, + SCOPE_CLASS = 0b100000000, + SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION; +function functionFlags(isAsync, isGenerator) { + return SCOPE_FUNCTION | (isAsync ? SCOPE_ASYNC : 0) | (isGenerator ? SCOPE_GENERATOR : 0); +} +const BIND_KIND_VALUE = 0b00000000001, + BIND_KIND_TYPE = 0b00000000010, + BIND_SCOPE_VAR = 0b00000000100, + BIND_SCOPE_LEXICAL = 0b00000001000, + BIND_SCOPE_FUNCTION = 0b00000010000, + BIND_FLAGS_NONE = 0b00001000000, + BIND_FLAGS_CLASS = 0b00010000000, + BIND_FLAGS_TS_ENUM = 0b00100000000, + BIND_FLAGS_TS_CONST_ENUM = 0b01000000000, + BIND_FLAGS_TS_EXPORT_ONLY = 0b10000000000; +const BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS, + BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0, + BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0, + BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0, + BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS, + BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0, + BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM, + BIND_TS_FN_TYPE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY, + BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE, + BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE, + BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM, + BIND_TS_NAMESPACE = BIND_TS_FN_TYPE; + +function isSimpleProperty(node) { + return node != null && node.type === "Property" && node.kind === "init" && node.method === false; +} + +var estree = (superClass => class extends superClass { + estreeParseRegExpLiteral({ + pattern, + flags + }) { + let regex = null; + + try { + regex = new RegExp(pattern, flags); + } catch (e) {} + + const node = this.estreeParseLiteral(regex); + node.regex = { + pattern, + flags + }; + return node; + } + + estreeParseLiteral(value) { + return this.parseLiteral(value, "Literal"); + } + + directiveToStmt(directive) { + const directiveLiteral = directive.value; + const stmt = this.startNodeAt(directive.start, directive.loc.start); + const expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start); + expression.value = directiveLiteral.value; + expression.raw = directiveLiteral.extra.raw; + stmt.expression = this.finishNodeAt(expression, "Literal", directiveLiteral.end, directiveLiteral.loc.end); + stmt.directive = directiveLiteral.extra.raw.slice(1, -1); + return this.finishNodeAt(stmt, "ExpressionStatement", directive.end, directive.loc.end); + } + + initFunction(node, isAsync) { + super.initFunction(node, isAsync); + node.expression = false; + } + + checkDeclaration(node) { + if (isSimpleProperty(node)) { + this.checkDeclaration(node.value); + } else { + super.checkDeclaration(node); + } + } + + checkGetterSetterParams(method) { + const prop = method; + const paramCount = prop.kind === "get" ? 0 : 1; + const start = prop.start; + + if (prop.value.params.length !== paramCount) { + if (prop.kind === "get") { + this.raise(start, "getter must not have any formal parameters"); + } else { + this.raise(start, "setter must have exactly one formal parameter"); + } + } + + if (prop.kind === "set" && prop.value.params[0].type === "RestElement") { + this.raise(start, "setter function argument must not be a rest parameter"); + } + } + + checkLVal(expr, bindingType = BIND_NONE, checkClashes, contextDescription) { + switch (expr.type) { + case "ObjectPattern": + expr.properties.forEach(prop => { + this.checkLVal(prop.type === "Property" ? prop.value : prop, bindingType, checkClashes, "object destructuring pattern"); + }); + break; + + default: + super.checkLVal(expr, bindingType, checkClashes, contextDescription); + } + } + + checkPropClash(prop, propHash) { + if (prop.type === "SpreadElement" || prop.computed || prop.method || prop.shorthand) { + return; + } + + const key = prop.key; + const name = key.type === "Identifier" ? key.name : String(key.value); + + if (name === "__proto__" && prop.kind === "init") { + if (propHash.proto) { + this.raise(key.start, "Redefinition of __proto__ property"); + } + + propHash.proto = true; + } + } + + isStrictBody(node) { + const isBlockStatement = node.body.type === "BlockStatement"; + + if (isBlockStatement && node.body.body.length > 0) { + for (let _i = 0, _node$body$body = node.body.body; _i < _node$body$body.length; _i++) { + const directive = _node$body$body[_i]; + + if (directive.type === "ExpressionStatement" && directive.expression.type === "Literal") { + if (directive.expression.value === "use strict") return true; + } else { + break; + } + } + } + + return false; + } + + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && (!stmt.expression.extra || !stmt.expression.extra.parenthesized); + } + + stmtToDirective(stmt) { + const directive = super.stmtToDirective(stmt); + const value = stmt.expression.value; + directive.value.value = value; + return directive; + } + + parseBlockBody(node, allowDirectives, topLevel, end) { + super.parseBlockBody(node, allowDirectives, topLevel, end); + const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); + node.body = directiveStatements.concat(node.body); + delete node.directives; + } + + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true); + + if (method.typeParameters) { + method.value.typeParameters = method.typeParameters; + delete method.typeParameters; + } + + classBody.body.push(method); + } + + parseExprAtom(refShorthandDefaultPos) { + switch (this.state.type) { + case types.regexp: + return this.estreeParseRegExpLiteral(this.state.value); + + case types.num: + case types.string: + return this.estreeParseLiteral(this.state.value); + + case types._null: + return this.estreeParseLiteral(null); + + case types._true: + return this.estreeParseLiteral(true); + + case types._false: + return this.estreeParseLiteral(false); + + default: + return super.parseExprAtom(refShorthandDefaultPos); + } + } + + parseLiteral(value, type, startPos, startLoc) { + const node = super.parseLiteral(value, type, startPos, startLoc); + node.raw = node.extra.raw; + delete node.extra; + return node; + } + + parseFunctionBody(node, allowExpression, isMethod = false) { + super.parseFunctionBody(node, allowExpression, isMethod); + node.expression = node.body.type !== "BlockStatement"; + } + + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + let funcNode = this.startNode(); + funcNode.kind = node.kind; + funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + funcNode.type = "FunctionExpression"; + delete funcNode.kind; + node.value = funcNode; + type = type === "ClassMethod" ? "MethodDefinition" : type; + return this.finishNode(node, type); + } + + parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) { + const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc); + + if (node) { + node.type = "Property"; + if (node.kind === "method") node.kind = "init"; + node.shorthand = false; + } + + return node; + } + + parseObjectProperty(prop, startPos, startLoc, isPattern, refShorthandDefaultPos) { + const node = super.parseObjectProperty(prop, startPos, startLoc, isPattern, refShorthandDefaultPos); + + if (node) { + node.kind = "init"; + node.type = "Property"; + } + + return node; + } + + toAssignable(node, isBinding, contextDescription) { + if (isSimpleProperty(node)) { + this.toAssignable(node.value, isBinding, contextDescription); + return node; + } + + return super.toAssignable(node, isBinding, contextDescription); + } + + toAssignableObjectExpressionProp(prop, isBinding, isLast) { + if (prop.kind === "get" || prop.kind === "set") { + this.raise(prop.key.start, "Object pattern can't contain getter or setter"); + } else if (prop.method) { + this.raise(prop.key.start, "Object pattern can't contain methods"); + } else { + super.toAssignableObjectExpressionProp(prop, isBinding, isLast); + } + } + +}); + +const lineBreak = /\r\n?|[\n\u2028\u2029]/; +const lineBreakG = new RegExp(lineBreak.source, "g"); +function isNewLine(code) { + switch (code) { + case 10: + case 13: + case 8232: + case 8233: + return true; + + default: + return false; + } +} +const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +function isWhitespace(code) { + switch (code) { + case 0x0009: + case 0x000b: + case 0x000c: + case 32: + case 160: + case 5760: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200a: + case 0x202f: + case 0x205f: + case 0x3000: + case 0xfeff: + return true; + + default: + return false; + } +} + +class TokContext { + constructor(token, isExpr, preserveSpace, override) { + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; + } + +} +const types$1 = { + braceStatement: new TokContext("{", false), + braceExpression: new TokContext("{", true), + templateQuasi: new TokContext("${", false), + parenStatement: new TokContext("(", false), + parenExpression: new TokContext("(", true), + template: new TokContext("`", true, true, p => p.readTmplToken()), + functionExpression: new TokContext("function", true), + functionStatement: new TokContext("function", false) +}; + +types.parenR.updateContext = types.braceR.updateContext = function () { + if (this.state.context.length === 1) { + this.state.exprAllowed = true; + return; + } + + let out = this.state.context.pop(); + + if (out === types$1.braceStatement && this.curContext().token === "function") { + out = this.state.context.pop(); + } + + this.state.exprAllowed = !out.isExpr; +}; + +types.name.updateContext = function (prevType) { + let allowed = false; + + if (prevType !== types.dot) { + if (this.state.value === "of" && !this.state.exprAllowed || this.state.value === "yield" && this.scope.inGenerator) { + allowed = true; + } + } + + this.state.exprAllowed = allowed; + + if (this.state.isIterator) { + this.state.isIterator = false; + } +}; + +types.braceL.updateContext = function (prevType) { + this.state.context.push(this.braceIsBlock(prevType) ? types$1.braceStatement : types$1.braceExpression); + this.state.exprAllowed = true; +}; + +types.dollarBraceL.updateContext = function () { + this.state.context.push(types$1.templateQuasi); + this.state.exprAllowed = true; +}; + +types.parenL.updateContext = function (prevType) { + const statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; + this.state.context.push(statementParens ? types$1.parenStatement : types$1.parenExpression); + this.state.exprAllowed = true; +}; + +types.incDec.updateContext = function () {}; + +types._function.updateContext = types._class.updateContext = function (prevType) { + if (prevType.beforeExpr && prevType !== types.semi && prevType !== types._else && !(prevType === types._return && lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) && !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) { + this.state.context.push(types$1.functionExpression); + } else { + this.state.context.push(types$1.functionStatement); + } + + this.state.exprAllowed = false; +}; + +types.backQuote.updateContext = function () { + if (this.curContext() === types$1.template) { + this.state.context.pop(); + } else { + this.state.context.push(types$1.template); + } + + this.state.exprAllowed = false; +}; + +const reservedWords = { + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strict.concat(reservedWords.strictBind)); +const isReservedWord = (word, inModule) => { + return inModule && word === "await" || word === "enum"; +}; +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictBindSet.has(word); +} +function isKeyword(word) { + return keywords.has(word); +} +const keywordRelationalOperator = /^in(stanceof)?$/; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 477, 28, 11, 0, 9, 21, 155, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 12, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 0, 33, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 0, 161, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 270, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 754, 9486, 286, 50, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42710, 42, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 525, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 4, 9, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 232, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 19723, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 419, 13, 1495, 6, 110, 6, 6, 9, 792487, 239]; + +function isInAstralSet(code, set) { + let pos = 0x10000; + + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + + return false; +} + +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIteratorStart(current, next) { + return current === 64 && next === 64; +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} + +const reservedTypes = ["any", "bool", "boolean", "empty", "false", "mixed", "null", "number", "static", "string", "true", "typeof", "void", "interface", "extends", "_"]; + +function isEsModuleType(bodyElement) { + return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); +} + +function hasTypeImportKind(node) { + return node.importKind === "type" || node.importKind === "typeof"; +} + +function isMaybeDefaultImport(state) { + return (state.type === types.name || !!state.type.keyword) && state.value !== "from"; +} + +const exportSuggestions = { + const: "declare export var", + let: "declare export var", + type: "export type", + interface: "export interface" +}; + +function partition(list, test) { + const list1 = []; + const list2 = []; + + for (let i = 0; i < list.length; i++) { + (test(list[i], i, list) ? list1 : list2).push(list[i]); + } + + return [list1, list2]; +} + +const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; +var flow = (superClass => class extends superClass { + constructor(options, input) { + super(options, input); + this.flowPragma = undefined; + } + + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + + finishToken(type, val) { + if (type !== types.string && type !== types.semi && type !== types.interpreterDirective) { + if (this.flowPragma === undefined) { + this.flowPragma = null; + } + } + + return super.finishToken(type, val); + } + + addComment(comment) { + if (this.flowPragma === undefined) { + const matches = FLOW_PRAGMA_REGEX.exec(comment.value); + + if (!matches) ; else if (matches[1] === "flow") { + this.flowPragma = "flow"; + } else if (matches[1] === "noflow") { + this.flowPragma = "noflow"; + } else { + throw new Error("Unexpected flow pragma"); + } + } + + return super.addComment(comment); + } + + flowParseTypeInitialiser(tok) { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || types.colon); + const type = this.flowParseType(); + this.state.inType = oldInType; + return type; + } + + flowParsePredicate() { + const node = this.startNode(); + const moduloLoc = this.state.startLoc; + const moduloPos = this.state.start; + this.expect(types.modulo); + const checksLoc = this.state.startLoc; + this.expectContextual("checks"); + + if (moduloLoc.line !== checksLoc.line || moduloLoc.column !== checksLoc.column - 1) { + this.raise(moduloPos, "Spaces between ´%´ and ´checks´ are not allowed here."); + } + + if (this.eat(types.parenL)) { + node.value = this.parseExpression(); + this.expect(types.parenR); + return this.finishNode(node, "DeclaredPredicate"); + } else { + return this.finishNode(node, "InferredPredicate"); + } + } + + flowParseTypeAndPredicateInitialiser() { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(types.colon); + let type = null; + let predicate = null; + + if (this.match(types.modulo)) { + this.state.inType = oldInType; + predicate = this.flowParsePredicate(); + } else { + type = this.flowParseType(); + this.state.inType = oldInType; + + if (this.match(types.modulo)) { + predicate = this.flowParsePredicate(); + } + } + + return [type, predicate]; + } + + flowParseDeclareClass(node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); + } + + flowParseDeclareFunction(node) { + this.next(); + const id = node.id = this.parseIdentifier(); + const typeNode = this.startNode(); + const typeContainer = this.startNode(); + + if (this.isRelational("<")) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + + this.expect(types.parenL); + const tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + this.expect(types.parenR); + [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + this.resetEndLocation(id); + this.semicolon(); + return this.finishNode(node, "DeclareFunction"); + } + + flowParseDeclare(node, insideModule) { + if (this.match(types._class)) { + return this.flowParseDeclareClass(node); + } else if (this.match(types._function)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(types._var)) { + return this.flowParseDeclareVariable(node); + } else if (this.eatContextual("module")) { + if (this.match(types.dot)) { + return this.flowParseDeclareModuleExports(node); + } else { + if (insideModule) { + this.unexpected(this.state.lastTokStart, "`declare module` cannot be used inside another `declare module`"); + } + + return this.flowParseDeclareModule(node); + } + } else if (this.isContextual("type")) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual("opaque")) { + return this.flowParseDeclareOpaqueType(node); + } else if (this.isContextual("interface")) { + return this.flowParseDeclareInterface(node); + } else if (this.match(types._export)) { + return this.flowParseDeclareExportDeclaration(node, insideModule); + } else { + throw this.unexpected(); + } + } + + flowParseDeclareVariable(node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(true); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); + } + + flowParseDeclareModule(node) { + this.scope.enter(SCOPE_OTHER); + + if (this.match(types.string)) { + node.id = this.parseExprAtom(); + } else { + node.id = this.parseIdentifier(); + } + + const bodyNode = node.body = this.startNode(); + const body = bodyNode.body = []; + this.expect(types.braceL); + + while (!this.match(types.braceR)) { + let bodyNode = this.startNode(); + + if (this.match(types._import)) { + this.next(); + + if (!this.isContextual("type") && !this.isContextual("typeof")) { + this.unexpected(this.state.lastTokStart, "Imports within a `declare module` body must always be `import type` or `import typeof`"); + } + + this.parseImport(bodyNode); + } else { + this.expectContextual("declare", "Only declares and type imports are allowed inside declare module"); + bodyNode = this.flowParseDeclare(bodyNode, true); + } + + body.push(bodyNode); + } + + this.scope.exit(); + this.expect(types.braceR); + this.finishNode(bodyNode, "BlockStatement"); + let kind = null; + let hasModuleExport = false; + const errorMessage = "Found both `declare module.exports` and `declare export` in the same module. " + "Modules can only have 1 since they are either an ES module or they are a CommonJS module"; + body.forEach(bodyElement => { + if (isEsModuleType(bodyElement)) { + if (kind === "CommonJS") { + this.unexpected(bodyElement.start, errorMessage); + } + + kind = "ES"; + } else if (bodyElement.type === "DeclareModuleExports") { + if (hasModuleExport) { + this.unexpected(bodyElement.start, "Duplicate `declare module.exports` statement"); + } + + if (kind === "ES") this.unexpected(bodyElement.start, errorMessage); + kind = "CommonJS"; + hasModuleExport = true; + } + }); + node.kind = kind || "CommonJS"; + return this.finishNode(node, "DeclareModule"); + } + + flowParseDeclareExportDeclaration(node, insideModule) { + this.expect(types._export); + + if (this.eat(types._default)) { + if (this.match(types._function) || this.match(types._class)) { + node.declaration = this.flowParseDeclare(this.startNode()); + } else { + node.declaration = this.flowParseType(); + this.semicolon(); + } + + node.default = true; + return this.finishNode(node, "DeclareExportDeclaration"); + } else { + if (this.match(types._const) || this.isLet() || (this.isContextual("type") || this.isContextual("interface")) && !insideModule) { + const label = this.state.value; + const suggestion = exportSuggestions[label]; + this.unexpected(this.state.start, `\`declare export ${label}\` is not supported. Use \`${suggestion}\` instead`); + } + + if (this.match(types._var) || this.match(types._function) || this.match(types._class) || this.isContextual("opaque")) { + node.declaration = this.flowParseDeclare(this.startNode()); + node.default = false; + return this.finishNode(node, "DeclareExportDeclaration"); + } else if (this.match(types.star) || this.match(types.braceL) || this.isContextual("interface") || this.isContextual("type") || this.isContextual("opaque")) { + node = this.parseExport(node); + + if (node.type === "ExportNamedDeclaration") { + node.type = "ExportDeclaration"; + node.default = false; + delete node.exportKind; + } + + node.type = "Declare" + node.type; + return node; + } + } + + throw this.unexpected(); + } + + flowParseDeclareModuleExports(node) { + this.next(); + this.expectContextual("exports"); + node.typeAnnotation = this.flowParseTypeAnnotation(); + this.semicolon(); + return this.finishNode(node, "DeclareModuleExports"); + } + + flowParseDeclareTypeAlias(node) { + this.next(); + this.flowParseTypeAlias(node); + node.type = "DeclareTypeAlias"; + return node; + } + + flowParseDeclareOpaqueType(node) { + this.next(); + this.flowParseOpaqueType(node, true); + node.type = "DeclareOpaqueType"; + return node; + } + + flowParseDeclareInterface(node) { + this.next(); + this.flowParseInterfaceish(node); + return this.finishNode(node, "DeclareInterface"); + } + + flowParseInterfaceish(node, isClass = false) { + node.id = this.flowParseRestrictedIdentifier(!isClass); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + + node.extends = []; + node.implements = []; + node.mixins = []; + + if (this.eat(types._extends)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (!isClass && this.eat(types.comma)); + } + + if (this.isContextual("mixins")) { + this.next(); + + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(types.comma)); + } + + if (this.isContextual("implements")) { + this.next(); + + do { + node.implements.push(this.flowParseInterfaceExtends()); + } while (this.eat(types.comma)); + } + + node.body = this.flowParseObjectType({ + allowStatic: isClass, + allowExact: false, + allowSpread: false, + allowProto: isClass, + allowInexact: false + }); + } + + flowParseInterfaceExtends() { + const node = this.startNode(); + node.id = this.flowParseQualifiedTypeIdentifier(); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + + return this.finishNode(node, "InterfaceExtends"); + } + + flowParseInterface(node) { + this.flowParseInterfaceish(node); + return this.finishNode(node, "InterfaceDeclaration"); + } + + checkNotUnderscore(word) { + if (word === "_") { + throw this.unexpected(null, "`_` is only allowed as a type argument to call or new"); + } + } + + checkReservedType(word, startLoc) { + if (reservedTypes.indexOf(word) > -1) { + this.raise(startLoc, `Cannot overwrite reserved type ${word}`); + } + } + + flowParseRestrictedIdentifier(liberal) { + this.checkReservedType(this.state.value, this.state.start); + return this.parseIdentifier(liberal); + } + + flowParseTypeAlias(node) { + node.id = this.flowParseRestrictedIdentifier(); + this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + + node.right = this.flowParseTypeInitialiser(types.eq); + this.semicolon(); + return this.finishNode(node, "TypeAlias"); + } + + flowParseOpaqueType(node, declare) { + this.expectContextual("type"); + node.id = this.flowParseRestrictedIdentifier(true); + this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + + node.supertype = null; + + if (this.match(types.colon)) { + node.supertype = this.flowParseTypeInitialiser(types.colon); + } + + node.impltype = null; + + if (!declare) { + node.impltype = this.flowParseTypeInitialiser(types.eq); + } + + this.semicolon(); + return this.finishNode(node, "OpaqueType"); + } + + flowParseTypeParameter(allowDefault = true, requireDefault = false) { + if (!allowDefault && requireDefault) { + throw new Error("Cannot disallow a default value (`allowDefault`) while also requiring it (`requireDefault`)."); + } + + const nodeStart = this.state.start; + const node = this.startNode(); + const variance = this.flowParseVariance(); + const ident = this.flowParseTypeAnnotatableIdentifier(); + node.name = ident.name; + node.variance = variance; + node.bound = ident.typeAnnotation; + + if (this.match(types.eq)) { + if (allowDefault) { + this.eat(types.eq); + node.default = this.flowParseType(); + } else { + this.unexpected(); + } + } else { + if (requireDefault) { + this.unexpected(nodeStart, "Type parameter declaration needs a default, since a preceding type parameter declaration has a default."); + } + } + + return this.finishNode(node, "TypeParameter"); + } + + flowParseTypeParameterDeclaration(allowDefault = true) { + const oldInType = this.state.inType; + const node = this.startNode(); + node.params = []; + this.state.inType = true; + + if (this.isRelational("<") || this.match(types.jsxTagStart)) { + this.next(); + } else { + this.unexpected(); + } + + let defaultRequired = false; + + do { + const typeParameter = this.flowParseTypeParameter(allowDefault, defaultRequired); + node.params.push(typeParameter); + + if (typeParameter.default) { + defaultRequired = true; + } + + if (!this.isRelational(">")) { + this.expect(types.comma); + } + } while (!this.isRelational(">")); + + this.expectRelational(">"); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterDeclaration"); + } + + flowParseTypeParameterInstantiation() { + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expectRelational("<"); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + + while (!this.isRelational(">")) { + node.params.push(this.flowParseType()); + + if (!this.isRelational(">")) { + this.expect(types.comma); + } + } + + this.state.noAnonFunctionType = oldNoAnonFunctionType; + this.expectRelational(">"); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + + flowParseTypeParameterInstantiationCallOrNew() { + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expectRelational("<"); + + while (!this.isRelational(">")) { + node.params.push(this.flowParseTypeOrImplicitInstantiation()); + + if (!this.isRelational(">")) { + this.expect(types.comma); + } + } + + this.expectRelational(">"); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + + flowParseInterfaceType() { + const node = this.startNode(); + this.expectContextual("interface"); + node.extends = []; + + if (this.eat(types._extends)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (this.eat(types.comma)); + } + + node.body = this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: false, + allowProto: false, + allowInexact: false + }); + return this.finishNode(node, "InterfaceTypeAnnotation"); + } + + flowParseObjectPropertyKey() { + return this.match(types.num) || this.match(types.string) ? this.parseExprAtom() : this.parseIdentifier(true); + } + + flowParseObjectTypeIndexer(node, isStatic, variance) { + node.static = isStatic; + + if (this.lookahead().type === types.colon) { + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + } else { + node.id = null; + node.key = this.flowParseType(); + } + + this.expect(types.bracketR); + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + return this.finishNode(node, "ObjectTypeIndexer"); + } + + flowParseObjectTypeInternalSlot(node, isStatic) { + node.static = isStatic; + node.id = this.flowParseObjectPropertyKey(); + this.expect(types.bracketR); + this.expect(types.bracketR); + + if (this.isRelational("<") || this.match(types.parenL)) { + node.method = true; + node.optional = false; + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start)); + } else { + node.method = false; + + if (this.eat(types.question)) { + node.optional = true; + } + + node.value = this.flowParseTypeInitialiser(); + } + + return this.finishNode(node, "ObjectTypeInternalSlot"); + } + + flowParseObjectTypeMethodish(node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(false); + } + + this.expect(types.parenL); + + while (!this.match(types.parenR) && !this.match(types.ellipsis)) { + node.params.push(this.flowParseFunctionTypeParam()); + + if (!this.match(types.parenR)) { + this.expect(types.comma); + } + } + + if (this.eat(types.ellipsis)) { + node.rest = this.flowParseFunctionTypeParam(); + } + + this.expect(types.parenR); + node.returnType = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + + flowParseObjectTypeCallProperty(node, isStatic) { + const valueNode = this.startNode(); + node.static = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + return this.finishNode(node, "ObjectTypeCallProperty"); + } + + flowParseObjectType({ + allowStatic, + allowExact, + allowSpread, + allowProto, + allowInexact + }) { + const oldInType = this.state.inType; + this.state.inType = true; + const nodeStart = this.startNode(); + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + nodeStart.internalSlots = []; + let endDelim; + let exact; + let inexact = false; + + if (allowExact && this.match(types.braceBarL)) { + this.expect(types.braceBarL); + endDelim = types.braceBarR; + exact = true; + } else { + this.expect(types.braceL); + endDelim = types.braceR; + exact = false; + } + + nodeStart.exact = exact; + + while (!this.match(endDelim)) { + let isStatic = false; + let protoStart = null; + const node = this.startNode(); + + if (allowProto && this.isContextual("proto")) { + const lookahead = this.lookahead(); + + if (lookahead.type !== types.colon && lookahead.type !== types.question) { + this.next(); + protoStart = this.state.start; + allowStatic = false; + } + } + + if (allowStatic && this.isContextual("static")) { + const lookahead = this.lookahead(); + + if (lookahead.type !== types.colon && lookahead.type !== types.question) { + this.next(); + isStatic = true; + } + } + + const variance = this.flowParseVariance(); + + if (this.eat(types.bracketL)) { + if (protoStart != null) { + this.unexpected(protoStart); + } + + if (this.eat(types.bracketL)) { + if (variance) { + this.unexpected(variance.start); + } + + nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); + } else { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); + } + } else if (this.match(types.parenL) || this.isRelational("<")) { + if (protoStart != null) { + this.unexpected(protoStart); + } + + if (variance) { + this.unexpected(variance.start); + } + + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); + } else { + let kind = "init"; + + if (this.isContextual("get") || this.isContextual("set")) { + const lookahead = this.lookahead(); + + if (lookahead.type === types.name || lookahead.type === types.string || lookahead.type === types.num) { + kind = this.state.value; + this.next(); + } + } + + const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact); + + if (propOrInexact === null) { + inexact = true; + } else { + nodeStart.properties.push(propOrInexact); + } + } + + this.flowObjectTypeSemicolon(); + } + + this.expect(endDelim); + + if (allowSpread) { + nodeStart.inexact = inexact; + } + + const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); + this.state.inType = oldInType; + return out; + } + + flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact) { + if (this.match(types.ellipsis)) { + if (!allowSpread) { + this.unexpected(null, "Spread operator cannot appear in class or interface definitions"); + } + + if (protoStart != null) { + this.unexpected(protoStart); + } + + if (variance) { + this.unexpected(variance.start, "Spread properties cannot have variance"); + } + + this.expect(types.ellipsis); + const isInexactToken = this.eat(types.comma) || this.eat(types.semi); + + if (this.match(types.braceR)) { + if (allowInexact) return null; + this.unexpected(null, "Explicit inexact syntax is only allowed inside inexact objects"); + } + + if (this.match(types.braceBarR)) { + this.unexpected(null, "Explicit inexact syntax cannot appear inside an explicit exact object type"); + } + + if (isInexactToken) { + this.unexpected(null, "Explicit inexact syntax must appear at the end of an inexact object"); + } + + node.argument = this.flowParseType(); + return this.finishNode(node, "ObjectTypeSpreadProperty"); + } else { + node.key = this.flowParseObjectPropertyKey(); + node.static = isStatic; + node.proto = protoStart != null; + node.kind = kind; + let optional = false; + + if (this.isRelational("<") || this.match(types.parenL)) { + node.method = true; + + if (protoStart != null) { + this.unexpected(protoStart); + } + + if (variance) { + this.unexpected(variance.start); + } + + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start)); + + if (kind === "get" || kind === "set") { + this.flowCheckGetterSetterParams(node); + } + } else { + if (kind !== "init") this.unexpected(); + node.method = false; + + if (this.eat(types.question)) { + optional = true; + } + + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + } + + node.optional = optional; + return this.finishNode(node, "ObjectTypeProperty"); + } + } + + flowCheckGetterSetterParams(property) { + const paramCount = property.kind === "get" ? 0 : 1; + const start = property.start; + const length = property.value.params.length + (property.value.rest ? 1 : 0); + + if (length !== paramCount) { + if (property.kind === "get") { + this.raise(start, "getter must not have any formal parameters"); + } else { + this.raise(start, "setter must have exactly one formal parameter"); + } + } + + if (property.kind === "set" && property.value.rest) { + this.raise(start, "setter function argument must not be a rest parameter"); + } + } + + flowObjectTypeSemicolon() { + if (!this.eat(types.semi) && !this.eat(types.comma) && !this.match(types.braceR) && !this.match(types.braceBarR)) { + this.unexpected(); + } + } + + flowParseQualifiedTypeIdentifier(startPos, startLoc, id) { + startPos = startPos || this.state.start; + startLoc = startLoc || this.state.startLoc; + let node = id || this.parseIdentifier(); + + while (this.eat(types.dot)) { + const node2 = this.startNodeAt(startPos, startLoc); + node2.qualification = node; + node2.id = this.parseIdentifier(); + node = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + + return node; + } + + flowParseGenericType(startPos, startLoc, id) { + const node = this.startNodeAt(startPos, startLoc); + node.typeParameters = null; + node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + + return this.finishNode(node, "GenericTypeAnnotation"); + } + + flowParseTypeofType() { + const node = this.startNode(); + this.expect(types._typeof); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); + } + + flowParseTupleType() { + const node = this.startNode(); + node.types = []; + this.expect(types.bracketL); + + while (this.state.pos < this.length && !this.match(types.bracketR)) { + node.types.push(this.flowParseType()); + if (this.match(types.bracketR)) break; + this.expect(types.comma); + } + + this.expect(types.bracketR); + return this.finishNode(node, "TupleTypeAnnotation"); + } + + flowParseFunctionTypeParam() { + let name = null; + let optional = false; + let typeAnnotation = null; + const node = this.startNode(); + const lh = this.lookahead(); + + if (lh.type === types.colon || lh.type === types.question) { + name = this.parseIdentifier(); + + if (this.eat(types.question)) { + optional = true; + } + + typeAnnotation = this.flowParseTypeInitialiser(); + } else { + typeAnnotation = this.flowParseType(); + } + + node.name = name; + node.optional = optional; + node.typeAnnotation = typeAnnotation; + return this.finishNode(node, "FunctionTypeParam"); + } + + reinterpretTypeAsFunctionTypeParam(type) { + const node = this.startNodeAt(type.start, type.loc.start); + node.name = null; + node.optional = false; + node.typeAnnotation = type; + return this.finishNode(node, "FunctionTypeParam"); + } + + flowParseFunctionTypeParams(params = []) { + let rest = null; + + while (!this.match(types.parenR) && !this.match(types.ellipsis)) { + params.push(this.flowParseFunctionTypeParam()); + + if (!this.match(types.parenR)) { + this.expect(types.comma); + } + } + + if (this.eat(types.ellipsis)) { + rest = this.flowParseFunctionTypeParam(); + } + + return { + params, + rest + }; + } + + flowIdentToTypeAnnotation(startPos, startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + + case "empty": + return this.finishNode(node, "EmptyTypeAnnotation"); + + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + + default: + this.checkNotUnderscore(id.name); + return this.flowParseGenericType(startPos, startLoc, id); + } + } + + flowParsePrimaryType() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const node = this.startNode(); + let tmp; + let type; + let isGroupedType = false; + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + + switch (this.state.type) { + case types.name: + if (this.isContextual("interface")) { + return this.flowParseInterfaceType(); + } + + return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier()); + + case types.braceL: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: true, + allowProto: false, + allowInexact: true + }); + + case types.braceBarL: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: true, + allowSpread: true, + allowProto: false, + allowInexact: false + }); + + case types.bracketL: + return this.flowParseTupleType(); + + case types.relational: + if (this.state.value === "<") { + node.typeParameters = this.flowParseTypeParameterDeclaration(false); + this.expect(types.parenL); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + this.expect(types.parenR); + this.expect(types.arrow); + node.returnType = this.flowParseType(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + + break; + + case types.parenL: + this.next(); + + if (!this.match(types.parenR) && !this.match(types.ellipsis)) { + if (this.match(types.name)) { + const token = this.lookahead().type; + isGroupedType = token !== types.question && token !== types.colon; + } else { + isGroupedType = true; + } + } + + if (isGroupedType) { + this.state.noAnonFunctionType = false; + type = this.flowParseType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + + if (this.state.noAnonFunctionType || !(this.match(types.comma) || this.match(types.parenR) && this.lookahead().type === types.arrow)) { + this.expect(types.parenR); + return type; + } else { + this.eat(types.comma); + } + } + + if (type) { + tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); + } else { + tmp = this.flowParseFunctionTypeParams(); + } + + node.params = tmp.params; + node.rest = tmp.rest; + this.expect(types.parenR); + this.expect(types.arrow); + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + + case types.string: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + + case types._true: + case types._false: + node.value = this.match(types._true); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + + case types.plusMin: + if (this.state.value === "-") { + this.next(); + + if (!this.match(types.num)) { + this.unexpected(null, `Unexpected token, expected "number"`); + } + + return this.parseLiteral(-this.state.value, "NumberLiteralTypeAnnotation", node.start, node.loc.start); + } + + this.unexpected(); + + case types.num: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + + case types._void: + this.next(); + return this.finishNode(node, "VoidTypeAnnotation"); + + case types._null: + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + + case types._this: + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + + case types.star: + this.next(); + return this.finishNode(node, "ExistsTypeAnnotation"); + + default: + if (this.state.type.keyword === "typeof") { + return this.flowParseTypeofType(); + } else if (this.state.type.keyword) { + const label = this.state.type.label; + this.next(); + return super.createIdentifier(node, label); + } + + } + + throw this.unexpected(); + } + + flowParsePostfixType() { + const startPos = this.state.start, + startLoc = this.state.startLoc; + let type = this.flowParsePrimaryType(); + + while (this.match(types.bracketL) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startPos, startLoc); + node.elementType = type; + this.expect(types.bracketL); + this.expect(types.bracketR); + type = this.finishNode(node, "ArrayTypeAnnotation"); + } + + return type; + } + + flowParsePrefixType() { + const node = this.startNode(); + + if (this.eat(types.question)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } + } + + flowParseAnonFunctionWithoutParens() { + const param = this.flowParsePrefixType(); + + if (!this.state.noAnonFunctionType && this.eat(types.arrow)) { + const node = this.startNodeAt(param.start, param.loc.start); + node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; + node.rest = null; + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + + return param; + } + + flowParseIntersectionType() { + const node = this.startNode(); + this.eat(types.bitwiseAND); + const type = this.flowParseAnonFunctionWithoutParens(); + node.types = [type]; + + while (this.eat(types.bitwiseAND)) { + node.types.push(this.flowParseAnonFunctionWithoutParens()); + } + + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); + } + + flowParseUnionType() { + const node = this.startNode(); + this.eat(types.bitwiseOR); + const type = this.flowParseIntersectionType(); + node.types = [type]; + + while (this.eat(types.bitwiseOR)) { + node.types.push(this.flowParseIntersectionType()); + } + + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); + } + + flowParseType() { + const oldInType = this.state.inType; + this.state.inType = true; + const type = this.flowParseUnionType(); + this.state.inType = oldInType; + this.state.exprAllowed = this.state.exprAllowed || this.state.noAnonFunctionType; + return type; + } + + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === types.name && this.state.value === "_") { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const node = this.parseIdentifier(); + return this.flowParseGenericType(startPos, startLoc, node); + } else { + return this.flowParseType(); + } + } + + flowParseTypeAnnotation() { + const node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); + } + + flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { + const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); + + if (this.match(types.colon)) { + ident.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(ident); + } + + return ident; + } + + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end); + return node.expression; + } + + flowParseVariance() { + let variance = null; + + if (this.match(types.plusMin)) { + variance = this.startNode(); + + if (this.state.value === "+") { + variance.kind = "plus"; + } else { + variance.kind = "minus"; + } + + this.next(); + this.finishNode(variance, "Variance"); + } + + return variance; + } + + parseFunctionBody(node, allowExpressionBody, isMethod = false) { + if (allowExpressionBody) { + return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); + } + + return super.parseFunctionBody(node, false, isMethod); + } + + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(types.colon)) { + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } + + super.parseFunctionBodyAndFinish(node, type, isMethod); + } + + parseStatement(context, topLevel) { + if (this.state.strict && this.match(types.name) && this.state.value === "interface") { + const node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } else { + const stmt = super.parseStatement(context, topLevel); + + if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { + this.flowPragma = null; + } + + return stmt; + } + } + + parseExpressionStatement(node, expr) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(types._class) || this.match(types.name) || this.match(types._function) || this.match(types._var) || this.match(types._export)) { + return this.flowParseDeclare(node); + } + } else if (this.match(types.name)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } else if (expr.name === "opaque") { + return this.flowParseOpaqueType(node, false); + } + } + } + + return super.parseExpressionStatement(node, expr); + } + + shouldParseExportDeclaration() { + return this.isContextual("type") || this.isContextual("interface") || this.isContextual("opaque") || super.shouldParseExportDeclaration(); + } + + isExportDefaultSpecifier() { + if (this.match(types.name) && (this.state.value === "type" || this.state.value === "interface" || this.state.value === "opaque")) { + return false; + } + + return super.isExportDefaultSpecifier(); + } + + parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos) { + if (!this.match(types.question)) return expr; + + if (refNeedsArrowPos) { + const state = this.state.clone(); + + try { + return super.parseConditional(expr, noIn, startPos, startLoc); + } catch (err) { + if (err instanceof SyntaxError) { + this.state = state; + refNeedsArrowPos.start = err.pos || this.state.start; + return expr; + } else { + throw err; + } + } + } + + this.expect(types.question); + const state = this.state.clone(); + const originalNoArrowAt = this.state.noArrowAt; + const node = this.startNodeAt(startPos, startLoc); + let { + consequent, + failed + } = this.tryParseConditionalConsequent(); + let [valid, invalid] = this.getArrowLikeExpressions(consequent); + + if (failed || invalid.length > 0) { + const noArrowAt = [...originalNoArrowAt]; + + if (invalid.length > 0) { + this.state = state; + this.state.noArrowAt = noArrowAt; + + for (let i = 0; i < invalid.length; i++) { + noArrowAt.push(invalid[i].start); + } + + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + [valid, invalid] = this.getArrowLikeExpressions(consequent); + } + + if (failed && valid.length > 1) { + this.raise(state.start, "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate."); + } + + if (failed && valid.length === 1) { + this.state = state; + this.state.noArrowAt = noArrowAt.concat(valid[0].start); + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + } + + this.getArrowLikeExpressions(consequent, true); + } + + this.state.noArrowAt = originalNoArrowAt; + this.expect(types.colon); + node.test = expr; + node.consequent = consequent; + node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(noIn, undefined, undefined, undefined)); + return this.finishNode(node, "ConditionalExpression"); + } + + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + const consequent = this.parseMaybeAssign(); + const failed = !this.match(types.colon); + this.state.noArrowParamsConversionAt.pop(); + return { + consequent, + failed + }; + } + + getArrowLikeExpressions(node, disallowInvalid) { + const stack = [node]; + const arrows = []; + + while (stack.length !== 0) { + const node = stack.pop(); + + if (node.type === "ArrowFunctionExpression") { + if (node.typeParameters || !node.returnType) { + this.toAssignableList(node.params, true, "arrow function parameters"); + this.scope.enter(functionFlags(false, false) | SCOPE_ARROW); + super.checkParams(node, false, true); + this.scope.exit(); + } else { + arrows.push(node); + } + + stack.push(node.body); + } else if (node.type === "ConditionalExpression") { + stack.push(node.consequent); + stack.push(node.alternate); + } + } + + if (disallowInvalid) { + for (let i = 0; i < arrows.length; i++) { + this.toAssignableList(node.params, true, "arrow function parameters"); + } + + return [arrows, []]; + } + + return partition(arrows, node => { + try { + this.toAssignableList(node.params, true, "arrow function parameters"); + return true; + } catch (err) { + return false; + } + }); + } + + forwardNoArrowParamsConversionAt(node, parse) { + let result; + + if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + this.state.noArrowParamsConversionAt.push(this.state.start); + result = parse(); + this.state.noArrowParamsConversionAt.pop(); + } else { + result = parse(); + } + + return result; + } + + parseParenItem(node, startPos, startLoc) { + node = super.parseParenItem(node, startPos, startLoc); + + if (this.eat(types.question)) { + node.optional = true; + this.resetEndLocation(node); + } + + if (this.match(types.colon)) { + const typeCastNode = this.startNodeAt(startPos, startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + + return node; + } + + assertModuleNodeAllowed(node) { + if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { + return; + } + + super.assertModuleNodeAllowed(node); + } + + parseExport(node) { + const decl = super.parseExport(node); + + if (decl.type === "ExportNamedDeclaration" || decl.type === "ExportAllDeclaration") { + decl.exportKind = decl.exportKind || "value"; + } + + return decl; + } + + parseExportDeclaration(node) { + if (this.isContextual("type")) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + + if (this.match(types.braceL)) { + node.specifiers = this.parseExportSpecifiers(); + this.parseExportFrom(node); + return null; + } else { + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual("opaque")) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseOpaqueType(declarationNode, false); + } else if (this.isContextual("interface")) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(declarationNode); + } else { + return super.parseExportDeclaration(node); + } + } + + eatExportStar(node) { + if (super.eatExportStar(...arguments)) return true; + + if (this.isContextual("type") && this.lookahead().type === types.star) { + node.exportKind = "type"; + this.next(); + this.next(); + return true; + } + + return false; + } + + maybeParseExportNamespaceSpecifier(node) { + const pos = this.state.start; + const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); + + if (hasNamespace && node.exportKind === "type") { + this.unexpected(pos); + } + + return hasNamespace; + } + + parseClassId(node, isStatement, optionalId) { + super.parseClassId(node, isStatement, optionalId); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + } + + getTokenFromCode(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (code === 123 && next === 124) { + return this.finishOp(types.braceBarL, 2); + } else if (this.state.inType && (code === 62 || code === 60)) { + return this.finishOp(types.relational, 1); + } else if (isIteratorStart(code, next)) { + this.state.isIterator = true; + return super.readWord(); + } else { + return super.getTokenFromCode(code); + } + } + + toAssignable(node, isBinding, contextDescription) { + if (node.type === "TypeCastExpression") { + return super.toAssignable(this.typeCastToParameter(node), isBinding, contextDescription); + } else { + return super.toAssignable(node, isBinding, contextDescription); + } + } + + toAssignableList(exprList, isBinding, contextDescription) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + + if (expr && expr.type === "TypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + + return super.toAssignableList(exprList, isBinding, contextDescription); + } + + toReferencedList(exprList, isParenthesizedExpr) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + + if (expr && expr.type === "TypeCastExpression" && (!expr.extra || !expr.extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { + this.raise(expr.typeAnnotation.start, "The type cast expression is expected to be wrapped with parenthesis"); + } + } + + return exprList; + } + + checkLVal(expr, bindingType = BIND_NONE, checkClashes, contextDescription) { + if (expr.type !== "TypeCastExpression") { + return super.checkLVal(expr, bindingType, checkClashes, contextDescription); + } + } + + parseClassProperty(node) { + if (this.match(types.colon)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + + return super.parseClassProperty(node); + } + + parseClassPrivateProperty(node) { + if (this.match(types.colon)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + + return super.parseClassPrivateProperty(node); + } + + isClassMethod() { + return this.isRelational("<") || super.isClassMethod(); + } + + isClassProperty() { + return this.match(types.colon) || super.isClassProperty(); + } + + isNonstaticConstructor(method) { + return !this.match(types.colon) && super.isNonstaticConstructor(method); + } + + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + if (method.variance) { + this.unexpected(method.variance.start); + } + + delete method.variance; + + if (this.isRelational("<")) { + method.typeParameters = this.flowParseTypeParameterDeclaration(false); + } + + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + if (method.variance) { + this.unexpected(method.variance.start); + } + + delete method.variance; + + if (this.isRelational("<")) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + + parseClassSuper(node) { + super.parseClassSuper(node); + + if (node.superClass && this.isRelational("<")) { + node.superTypeParameters = this.flowParseTypeParameterInstantiation(); + } + + if (this.isContextual("implements")) { + this.next(); + const implemented = node.implements = []; + + do { + const node = this.startNode(); + node.id = this.flowParseRestrictedIdentifier(true); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + + implemented.push(this.finishNode(node, "ClassImplements")); + } while (this.eat(types.comma)); + } + } + + parsePropertyName(node) { + const variance = this.flowParseVariance(); + const key = super.parsePropertyName(node); + node.variance = variance; + return key; + } + + parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos, containsEsc) { + if (prop.variance) { + this.unexpected(prop.variance.start); + } + + delete prop.variance; + let typeParameters; + + if (this.isRelational("<")) { + typeParameters = this.flowParseTypeParameterDeclaration(false); + if (!this.match(types.parenL)) this.unexpected(); + } + + super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos, containsEsc); + + if (typeParameters) { + (prop.value || prop).typeParameters = typeParameters; + } + } + + parseAssignableListItemTypes(param) { + if (this.eat(types.question)) { + if (param.type !== "Identifier") { + throw this.raise(param.start, "A binding pattern parameter cannot be optional in an implementation signature."); + } + + param.optional = true; + } + + if (this.match(types.colon)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } + + this.resetEndLocation(param); + return param; + } + + parseMaybeDefault(startPos, startLoc, left) { + const node = super.parseMaybeDefault(startPos, startLoc, left); + + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(node.typeAnnotation.start, "Type annotations must come before default assignments, " + "e.g. instead of `age = 25: number` use `age: number = 25`"); + } + + return node; + } + + shouldParseDefaultImport(node) { + if (!hasTypeImportKind(node)) { + return super.shouldParseDefaultImport(node); + } + + return isMaybeDefaultImport(this.state); + } + + parseImportSpecifierLocal(node, specifier, type, contextDescription) { + specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true) : this.parseIdentifier(); + this.checkLVal(specifier.local, BIND_LEXICAL, undefined, contextDescription); + node.specifiers.push(this.finishNode(specifier, type)); + } + + maybeParseDefaultImportSpecifier(node) { + node.importKind = "value"; + let kind = null; + + if (this.match(types._typeof)) { + kind = "typeof"; + } else if (this.isContextual("type")) { + kind = "type"; + } + + if (kind) { + const lh = this.lookahead(); + + if (kind === "type" && lh.type === types.star) { + this.unexpected(lh.start); + } + + if (isMaybeDefaultImport(lh) || lh.type === types.braceL || lh.type === types.star) { + this.next(); + node.importKind = kind; + } + } + + return super.maybeParseDefaultImportSpecifier(node); + } + + parseImportSpecifier(node) { + const specifier = this.startNode(); + const firstIdentLoc = this.state.start; + const firstIdent = this.parseIdentifier(true); + let specifierTypeKind = null; + + if (firstIdent.name === "type") { + specifierTypeKind = "type"; + } else if (firstIdent.name === "typeof") { + specifierTypeKind = "typeof"; + } + + let isBinding = false; + + if (this.isContextual("as") && !this.isLookaheadContextual("as")) { + const as_ident = this.parseIdentifier(true); + + if (specifierTypeKind !== null && !this.match(types.name) && !this.state.type.keyword) { + specifier.imported = as_ident; + specifier.importKind = specifierTypeKind; + specifier.local = as_ident.__clone(); + } else { + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = this.parseIdentifier(); + } + } else if (specifierTypeKind !== null && (this.match(types.name) || this.state.type.keyword)) { + specifier.imported = this.parseIdentifier(true); + specifier.importKind = specifierTypeKind; + + if (this.eatContextual("as")) { + specifier.local = this.parseIdentifier(); + } else { + isBinding = true; + specifier.local = specifier.imported.__clone(); + } + } else { + isBinding = true; + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = specifier.imported.__clone(); + } + + const nodeIsTypeImport = hasTypeImportKind(node); + const specifierIsTypeImport = hasTypeImportKind(specifier); + + if (nodeIsTypeImport && specifierIsTypeImport) { + this.raise(firstIdentLoc, "The `type` and `typeof` keywords on named imports can only be used on regular " + "`import` statements. It cannot be used with `import type` or `import typeof` statements"); + } + + if (nodeIsTypeImport || specifierIsTypeImport) { + this.checkReservedType(specifier.local.name, specifier.local.start); + } + + if (isBinding && !nodeIsTypeImport && !specifierIsTypeImport) { + this.checkReservedWord(specifier.local.name, specifier.start, true, true); + } + + this.checkLVal(specifier.local, BIND_LEXICAL, undefined, "import specifier"); + node.specifiers.push(this.finishNode(specifier, "ImportSpecifier")); + } + + parseFunctionParams(node, allowModifiers) { + const kind = node.kind; + + if (kind !== "get" && kind !== "set" && this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(false); + } + + super.parseFunctionParams(node, allowModifiers); + } + + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + + if (this.match(types.colon)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(decl.id); + } + } + + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(types.colon)) { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + node.returnType = this.flowParseTypeAnnotation(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + } + + return super.parseAsyncArrowFromCallExpression(node, call); + } + + shouldParseAsyncArrow() { + return this.match(types.colon) || super.shouldParseAsyncArrow(); + } + + parseMaybeAssign(noIn, refShorthandDefaultPos, afterLeftParse, refNeedsArrowPos) { + let jsxError = null; + + if (this.hasPlugin("jsx") && (this.match(types.jsxTagStart) || this.isRelational("<"))) { + const state = this.state.clone(); + + try { + return super.parseMaybeAssign(noIn, refShorthandDefaultPos, afterLeftParse, refNeedsArrowPos); + } catch (err) { + if (err instanceof SyntaxError) { + this.state = state; + const cLength = this.state.context.length; + + if (this.state.context[cLength - 1] === types$1.j_oTag) { + this.state.context.length -= 2; + } + + jsxError = err; + } else { + throw err; + } + } + } + + if (jsxError != null || this.isRelational("<")) { + let arrowExpression; + let typeParameters; + + try { + typeParameters = this.flowParseTypeParameterDeclaration(); + arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => super.parseMaybeAssign(noIn, refShorthandDefaultPos, afterLeftParse, refNeedsArrowPos)); + arrowExpression.typeParameters = typeParameters; + this.resetStartLocationFromNode(arrowExpression, typeParameters); + } catch (err) { + throw jsxError || err; + } + + if (arrowExpression.type === "ArrowFunctionExpression") { + return arrowExpression; + } else if (jsxError != null) { + throw jsxError; + } else { + this.raise(typeParameters.start, "Expected an arrow function after this type parameter declaration"); + } + } + + return super.parseMaybeAssign(noIn, refShorthandDefaultPos, afterLeftParse, refNeedsArrowPos); + } + + parseArrow(node) { + if (this.match(types.colon)) { + const state = this.state.clone(); + + try { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.canInsertSemicolon()) this.unexpected(); + if (!this.match(types.arrow)) this.unexpected(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } catch (err) { + if (err instanceof SyntaxError) { + this.state = state; + } else { + throw err; + } + } + } + + return super.parseArrow(node); + } + + shouldParseArrow() { + return this.match(types.colon) || super.shouldParseArrow(); + } + + setArrowFunctionParameters(node, params) { + if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + node.params = params; + } else { + super.setArrowFunctionParameters(node, params); + } + } + + checkParams(node, allowDuplicates, isArrowFunction) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + return; + } + + return super.checkParams(node, allowDuplicates, isArrowFunction); + } + + parseParenAndDistinguishExpression(canBeArrow) { + return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1); + } + + parseSubscripts(base, startPos, startLoc, noCalls) { + if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.indexOf(startPos) !== -1) { + this.next(); + const node = this.startNodeAt(startPos, startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(types.parenR, false); + base = this.finishNode(node, "CallExpression"); + } else if (base.type === "Identifier" && base.name === "async" && this.isRelational("<")) { + const state = this.state.clone(); + let error; + + try { + const node = this.parseAsyncArrowWithTypeParameters(startPos, startLoc); + if (node) return node; + } catch (e) { + error = e; + } + + this.state = state; + + try { + return super.parseSubscripts(base, startPos, startLoc, noCalls); + } catch (e) { + throw error || e; + } + } + + return super.parseSubscripts(base, startPos, startLoc, noCalls); + } + + parseSubscript(base, startPos, startLoc, noCalls, subscriptState, maybeAsyncArrow) { + if (this.match(types.questionDot) && this.isLookaheadRelational("<")) { + this.expectPlugin("optionalChaining"); + subscriptState.optionalChainMember = true; + + if (noCalls) { + subscriptState.stop = true; + return base; + } + + this.next(); + const node = this.startNodeAt(startPos, startLoc); + node.callee = base; + node.typeArguments = this.flowParseTypeParameterInstantiation(); + this.expect(types.parenL); + node.arguments = this.parseCallExpressionArguments(types.parenR, false); + node.optional = true; + return this.finishNode(node, "OptionalCallExpression"); + } else if (!noCalls && this.shouldParseTypes() && this.isRelational("<")) { + const node = this.startNodeAt(startPos, startLoc); + node.callee = base; + const state = this.state.clone(); + + try { + node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); + this.expect(types.parenL); + node.arguments = this.parseCallExpressionArguments(types.parenR, false); + + if (subscriptState.optionalChainMember) { + node.optional = false; + return this.finishNode(node, "OptionalCallExpression"); + } + + return this.finishNode(node, "CallExpression"); + } catch (e) { + if (e instanceof SyntaxError) { + this.state = state; + } else { + throw e; + } + } + } + + return super.parseSubscript(base, startPos, startLoc, noCalls, subscriptState, maybeAsyncArrow); + } + + parseNewArguments(node) { + let targs = null; + + if (this.shouldParseTypes() && this.isRelational("<")) { + const state = this.state.clone(); + + try { + targs = this.flowParseTypeParameterInstantiationCallOrNew(); + } catch (e) { + if (e instanceof SyntaxError) { + this.state = state; + } else { + throw e; + } + } + } + + node.typeArguments = targs; + super.parseNewArguments(node); + } + + parseAsyncArrowWithTypeParameters(startPos, startLoc) { + const node = this.startNodeAt(startPos, startLoc); + this.parseFunctionParams(node); + if (!this.parseArrow(node)) return; + return this.parseArrowExpression(node, undefined, true); + } + + readToken_mult_modulo(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (code === 42 && next === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false; + this.state.pos += 2; + this.nextToken(); + return; + } + + super.readToken_mult_modulo(code); + } + + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (code === 124 && next === 125) { + this.finishOp(types.braceBarR, 2); + return; + } + + super.readToken_pipe_amp(code); + } + + parseTopLevel(file, program) { + const fileNode = super.parseTopLevel(file, program); + + if (this.state.hasFlowComment) { + this.unexpected(null, "Unterminated flow-comment"); + } + + return fileNode; + } + + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) { + this.unexpected(null, "Cannot have a flow comment inside another flow comment"); + } + + this.hasFlowCommentCompletion(); + this.state.pos += this.skipFlowComment(); + this.state.hasFlowComment = true; + return; + } + + if (this.state.hasFlowComment) { + const end = this.input.indexOf("*-/", this.state.pos += 2); + if (end === -1) this.raise(this.state.pos - 2, "Unterminated comment"); + this.state.pos = end + 3; + return; + } + + super.skipBlockComment(); + } + + skipFlowComment() { + const { + pos + } = this.state; + let shiftToFirstNonWhiteSpace = 2; + + while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { + shiftToFirstNonWhiteSpace++; + } + + const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); + const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); + + if (ch2 === 58 && ch3 === 58) { + return shiftToFirstNonWhiteSpace + 2; + } + + if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { + return shiftToFirstNonWhiteSpace + 12; + } + + if (ch2 === 58 && ch3 !== 58) { + return shiftToFirstNonWhiteSpace; + } + + return false; + } + + hasFlowCommentCompletion() { + const end = this.input.indexOf("*/", this.state.pos); + + if (end === -1) { + this.raise(this.state.pos, "Unterminated comment"); + } + } + +}); + +const entities = { + quot: "\u0022", + amp: "&", + apos: "\u0027", + lt: "<", + gt: ">", + nbsp: "\u00A0", + iexcl: "\u00A1", + cent: "\u00A2", + pound: "\u00A3", + curren: "\u00A4", + yen: "\u00A5", + brvbar: "\u00A6", + sect: "\u00A7", + uml: "\u00A8", + copy: "\u00A9", + ordf: "\u00AA", + laquo: "\u00AB", + not: "\u00AC", + shy: "\u00AD", + reg: "\u00AE", + macr: "\u00AF", + deg: "\u00B0", + plusmn: "\u00B1", + sup2: "\u00B2", + sup3: "\u00B3", + acute: "\u00B4", + micro: "\u00B5", + para: "\u00B6", + middot: "\u00B7", + cedil: "\u00B8", + sup1: "\u00B9", + ordm: "\u00BA", + raquo: "\u00BB", + frac14: "\u00BC", + frac12: "\u00BD", + frac34: "\u00BE", + iquest: "\u00BF", + Agrave: "\u00C0", + Aacute: "\u00C1", + Acirc: "\u00C2", + Atilde: "\u00C3", + Auml: "\u00C4", + Aring: "\u00C5", + AElig: "\u00C6", + Ccedil: "\u00C7", + Egrave: "\u00C8", + Eacute: "\u00C9", + Ecirc: "\u00CA", + Euml: "\u00CB", + Igrave: "\u00CC", + Iacute: "\u00CD", + Icirc: "\u00CE", + Iuml: "\u00CF", + ETH: "\u00D0", + Ntilde: "\u00D1", + Ograve: "\u00D2", + Oacute: "\u00D3", + Ocirc: "\u00D4", + Otilde: "\u00D5", + Ouml: "\u00D6", + times: "\u00D7", + Oslash: "\u00D8", + Ugrave: "\u00D9", + Uacute: "\u00DA", + Ucirc: "\u00DB", + Uuml: "\u00DC", + Yacute: "\u00DD", + THORN: "\u00DE", + szlig: "\u00DF", + agrave: "\u00E0", + aacute: "\u00E1", + acirc: "\u00E2", + atilde: "\u00E3", + auml: "\u00E4", + aring: "\u00E5", + aelig: "\u00E6", + ccedil: "\u00E7", + egrave: "\u00E8", + eacute: "\u00E9", + ecirc: "\u00EA", + euml: "\u00EB", + igrave: "\u00EC", + iacute: "\u00ED", + icirc: "\u00EE", + iuml: "\u00EF", + eth: "\u00F0", + ntilde: "\u00F1", + ograve: "\u00F2", + oacute: "\u00F3", + ocirc: "\u00F4", + otilde: "\u00F5", + ouml: "\u00F6", + divide: "\u00F7", + oslash: "\u00F8", + ugrave: "\u00F9", + uacute: "\u00FA", + ucirc: "\u00FB", + uuml: "\u00FC", + yacute: "\u00FD", + thorn: "\u00FE", + yuml: "\u00FF", + OElig: "\u0152", + oelig: "\u0153", + Scaron: "\u0160", + scaron: "\u0161", + Yuml: "\u0178", + fnof: "\u0192", + circ: "\u02C6", + tilde: "\u02DC", + Alpha: "\u0391", + Beta: "\u0392", + Gamma: "\u0393", + Delta: "\u0394", + Epsilon: "\u0395", + Zeta: "\u0396", + Eta: "\u0397", + Theta: "\u0398", + Iota: "\u0399", + Kappa: "\u039A", + Lambda: "\u039B", + Mu: "\u039C", + Nu: "\u039D", + Xi: "\u039E", + Omicron: "\u039F", + Pi: "\u03A0", + Rho: "\u03A1", + Sigma: "\u03A3", + Tau: "\u03A4", + Upsilon: "\u03A5", + Phi: "\u03A6", + Chi: "\u03A7", + Psi: "\u03A8", + Omega: "\u03A9", + alpha: "\u03B1", + beta: "\u03B2", + gamma: "\u03B3", + delta: "\u03B4", + epsilon: "\u03B5", + zeta: "\u03B6", + eta: "\u03B7", + theta: "\u03B8", + iota: "\u03B9", + kappa: "\u03BA", + lambda: "\u03BB", + mu: "\u03BC", + nu: "\u03BD", + xi: "\u03BE", + omicron: "\u03BF", + pi: "\u03C0", + rho: "\u03C1", + sigmaf: "\u03C2", + sigma: "\u03C3", + tau: "\u03C4", + upsilon: "\u03C5", + phi: "\u03C6", + chi: "\u03C7", + psi: "\u03C8", + omega: "\u03C9", + thetasym: "\u03D1", + upsih: "\u03D2", + piv: "\u03D6", + ensp: "\u2002", + emsp: "\u2003", + thinsp: "\u2009", + zwnj: "\u200C", + zwj: "\u200D", + lrm: "\u200E", + rlm: "\u200F", + ndash: "\u2013", + mdash: "\u2014", + lsquo: "\u2018", + rsquo: "\u2019", + sbquo: "\u201A", + ldquo: "\u201C", + rdquo: "\u201D", + bdquo: "\u201E", + dagger: "\u2020", + Dagger: "\u2021", + bull: "\u2022", + hellip: "\u2026", + permil: "\u2030", + prime: "\u2032", + Prime: "\u2033", + lsaquo: "\u2039", + rsaquo: "\u203A", + oline: "\u203E", + frasl: "\u2044", + euro: "\u20AC", + image: "\u2111", + weierp: "\u2118", + real: "\u211C", + trade: "\u2122", + alefsym: "\u2135", + larr: "\u2190", + uarr: "\u2191", + rarr: "\u2192", + darr: "\u2193", + harr: "\u2194", + crarr: "\u21B5", + lArr: "\u21D0", + uArr: "\u21D1", + rArr: "\u21D2", + dArr: "\u21D3", + hArr: "\u21D4", + forall: "\u2200", + part: "\u2202", + exist: "\u2203", + empty: "\u2205", + nabla: "\u2207", + isin: "\u2208", + notin: "\u2209", + ni: "\u220B", + prod: "\u220F", + sum: "\u2211", + minus: "\u2212", + lowast: "\u2217", + radic: "\u221A", + prop: "\u221D", + infin: "\u221E", + ang: "\u2220", + and: "\u2227", + or: "\u2228", + cap: "\u2229", + cup: "\u222A", + int: "\u222B", + there4: "\u2234", + sim: "\u223C", + cong: "\u2245", + asymp: "\u2248", + ne: "\u2260", + equiv: "\u2261", + le: "\u2264", + ge: "\u2265", + sub: "\u2282", + sup: "\u2283", + nsub: "\u2284", + sube: "\u2286", + supe: "\u2287", + oplus: "\u2295", + otimes: "\u2297", + perp: "\u22A5", + sdot: "\u22C5", + lceil: "\u2308", + rceil: "\u2309", + lfloor: "\u230A", + rfloor: "\u230B", + lang: "\u2329", + rang: "\u232A", + loz: "\u25CA", + spades: "\u2660", + clubs: "\u2663", + hearts: "\u2665", + diams: "\u2666" +}; + +const HEX_NUMBER = /^[\da-fA-F]+$/; +const DECIMAL_NUMBER = /^\d+$/; +types$1.j_oTag = new TokContext("...", true, true); +types.jsxName = new TokenType("jsxName"); +types.jsxText = new TokenType("jsxText", { + beforeExpr: true +}); +types.jsxTagStart = new TokenType("jsxTagStart", { + startsExpr: true +}); +types.jsxTagEnd = new TokenType("jsxTagEnd"); + +types.jsxTagStart.updateContext = function () { + this.state.context.push(types$1.j_expr); + this.state.context.push(types$1.j_oTag); + this.state.exprAllowed = false; +}; + +types.jsxTagEnd.updateContext = function (prevType) { + const out = this.state.context.pop(); + + if (out === types$1.j_oTag && prevType === types.slash || out === types$1.j_cTag) { + this.state.context.pop(); + this.state.exprAllowed = this.curContext() === types$1.j_expr; + } else { + this.state.exprAllowed = true; + } +}; + +function isFragment(object) { + return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; +} + +function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } + + throw new Error("Node had unexpected type: " + object.type); +} + +var jsx = (superClass => class extends superClass { + jsxReadToken() { + let out = ""; + let chunkStart = this.state.pos; + + for (;;) { + if (this.state.pos >= this.length) { + this.raise(this.state.start, "Unterminated JSX contents"); + } + + const ch = this.input.charCodeAt(this.state.pos); + + switch (ch) { + case 60: + case 123: + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.exprAllowed) { + ++this.state.pos; + return this.finishToken(types.jsxTagStart); + } + + return super.getTokenFromCode(ch); + } + + out += this.input.slice(chunkStart, this.state.pos); + return this.finishToken(types.jsxText, out); + + case 38: + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + + } + } + } + + jsxReadNewLine(normalizeCRLF) { + const ch = this.input.charCodeAt(this.state.pos); + let out; + ++this.state.pos; + + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + + ++this.state.curLine; + this.state.lineStart = this.state.pos; + return out; + } + + jsxReadString(quote) { + let out = ""; + let chunkStart = ++this.state.pos; + + for (;;) { + if (this.state.pos >= this.length) { + this.raise(this.state.start, "Unterminated string constant"); + } + + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + + if (ch === 38) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + + out += this.input.slice(chunkStart, this.state.pos++); + return this.finishToken(types.string, out); + } + + jsxReadEntity() { + let str = ""; + let count = 0; + let entity; + let ch = this.input[this.state.pos]; + const startPos = ++this.state.pos; + + while (this.state.pos < this.length && count++ < 10) { + ch = this.input[this.state.pos++]; + + if (ch === ";") { + if (str[0] === "#") { + if (str[1] === "x") { + str = str.substr(2); + + if (HEX_NUMBER.test(str)) { + entity = String.fromCodePoint(parseInt(str, 16)); + } + } else { + str = str.substr(1); + + if (DECIMAL_NUMBER.test(str)) { + entity = String.fromCodePoint(parseInt(str, 10)); + } + } + } else { + entity = entities[str]; + } + + break; + } + + str += ch; + } + + if (!entity) { + this.state.pos = startPos; + return "&"; + } + + return entity; + } + + jsxReadWord() { + let ch; + const start = this.state.pos; + + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (isIdentifierChar(ch) || ch === 45); + + return this.finishToken(types.jsxName, this.input.slice(start, this.state.pos)); + } + + jsxParseIdentifier() { + const node = this.startNode(); + + if (this.match(types.jsxName)) { + node.name = this.state.value; + } else if (this.state.type.keyword) { + node.name = this.state.type.keyword; + } else { + this.unexpected(); + } + + this.next(); + return this.finishNode(node, "JSXIdentifier"); + } + + jsxParseNamespacedName() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const name = this.jsxParseIdentifier(); + if (!this.eat(types.colon)) return name; + const node = this.startNodeAt(startPos, startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); + } + + jsxParseElementName() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let node = this.jsxParseNamespacedName(); + + while (this.eat(types.dot)) { + const newNode = this.startNodeAt(startPos, startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + + return node; + } + + jsxParseAttributeValue() { + let node; + + switch (this.state.type) { + case types.braceL: + node = this.startNode(); + this.next(); + node = this.jsxParseExpressionContainer(node); + + if (node.expression.type === "JSXEmptyExpression") { + throw this.raise(node.start, "JSX attributes must only be assigned a non-empty expression"); + } else { + return node; + } + + case types.jsxTagStart: + case types.string: + return this.parseExprAtom(); + + default: + throw this.raise(this.state.start, "JSX value should be either an expression or a quoted JSX text"); + } + } + + jsxParseEmptyExpression() { + const node = this.startNodeAt(this.state.lastTokEnd, this.state.lastTokEndLoc); + return this.finishNodeAt(node, "JSXEmptyExpression", this.state.start, this.state.startLoc); + } + + jsxParseSpreadChild(node) { + this.next(); + node.expression = this.parseExpression(); + this.expect(types.braceR); + return this.finishNode(node, "JSXSpreadChild"); + } + + jsxParseExpressionContainer(node) { + if (this.match(types.braceR)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + node.expression = this.parseExpression(); + } + + this.expect(types.braceR); + return this.finishNode(node, "JSXExpressionContainer"); + } + + jsxParseAttribute() { + const node = this.startNode(); + + if (this.eat(types.braceL)) { + this.expect(types.ellipsis); + node.argument = this.parseMaybeAssign(); + this.expect(types.braceR); + return this.finishNode(node, "JSXSpreadAttribute"); + } + + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(types.eq) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); + } + + jsxParseOpeningElementAt(startPos, startLoc) { + const node = this.startNodeAt(startPos, startLoc); + + if (this.match(types.jsxTagEnd)) { + this.expect(types.jsxTagEnd); + return this.finishNode(node, "JSXOpeningFragment"); + } + + node.name = this.jsxParseElementName(); + return this.jsxParseOpeningElementAfterName(node); + } + + jsxParseOpeningElementAfterName(node) { + const attributes = []; + + while (!this.match(types.slash) && !this.match(types.jsxTagEnd)) { + attributes.push(this.jsxParseAttribute()); + } + + node.attributes = attributes; + node.selfClosing = this.eat(types.slash); + this.expect(types.jsxTagEnd); + return this.finishNode(node, "JSXOpeningElement"); + } + + jsxParseClosingElementAt(startPos, startLoc) { + const node = this.startNodeAt(startPos, startLoc); + + if (this.match(types.jsxTagEnd)) { + this.expect(types.jsxTagEnd); + return this.finishNode(node, "JSXClosingFragment"); + } + + node.name = this.jsxParseElementName(); + this.expect(types.jsxTagEnd); + return this.finishNode(node, "JSXClosingElement"); + } + + jsxParseElementAt(startPos, startLoc) { + const node = this.startNodeAt(startPos, startLoc); + const children = []; + const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc); + let closingElement = null; + + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.state.type) { + case types.jsxTagStart: + startPos = this.state.start; + startLoc = this.state.startLoc; + this.next(); + + if (this.eat(types.slash)) { + closingElement = this.jsxParseClosingElementAt(startPos, startLoc); + break contents; + } + + children.push(this.jsxParseElementAt(startPos, startLoc)); + break; + + case types.jsxText: + children.push(this.parseExprAtom()); + break; + + case types.braceL: + { + const node = this.startNode(); + this.next(); + + if (this.match(types.ellipsis)) { + children.push(this.jsxParseSpreadChild(node)); + } else { + children.push(this.jsxParseExpressionContainer(node)); + } + + break; + } + + default: + throw this.unexpected(); + } + } + + if (isFragment(openingElement) && !isFragment(closingElement)) { + this.raise(closingElement.start, "Expected corresponding JSX closing tag for <>"); + } else if (!isFragment(openingElement) && isFragment(closingElement)) { + this.raise(closingElement.start, "Expected corresponding JSX closing tag for <" + getQualifiedJSXName(openingElement.name) + ">"); + } else if (!isFragment(openingElement) && !isFragment(closingElement)) { + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise(closingElement.start, "Expected corresponding JSX closing tag for <" + getQualifiedJSXName(openingElement.name) + ">"); + } + } + } + + if (isFragment(openingElement)) { + node.openingFragment = openingElement; + node.closingFragment = closingElement; + } else { + node.openingElement = openingElement; + node.closingElement = closingElement; + } + + node.children = children; + + if (this.match(types.relational) && this.state.value === "<") { + this.raise(this.state.start, "Adjacent JSX elements must be wrapped in an enclosing tag. " + "Did you want a JSX fragment <>...?"); + } + + return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); + } + + jsxParseElement() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startPos, startLoc); + } + + parseExprAtom(refShortHandDefaultPos) { + if (this.match(types.jsxText)) { + return this.parseLiteral(this.state.value, "JSXText"); + } else if (this.match(types.jsxTagStart)) { + return this.jsxParseElement(); + } else if (this.isRelational("<") && this.input.charCodeAt(this.state.pos) !== 33) { + this.finishToken(types.jsxTagStart); + return this.jsxParseElement(); + } else { + return super.parseExprAtom(refShortHandDefaultPos); + } + } + + getTokenFromCode(code) { + if (this.state.inPropertyName) return super.getTokenFromCode(code); + const context = this.curContext(); + + if (context === types$1.j_expr) { + return this.jsxReadToken(); + } + + if (context === types$1.j_oTag || context === types$1.j_cTag) { + if (isIdentifierStart(code)) { + return this.jsxReadWord(); + } + + if (code === 62) { + ++this.state.pos; + return this.finishToken(types.jsxTagEnd); + } + + if ((code === 34 || code === 39) && context === types$1.j_oTag) { + return this.jsxReadString(code); + } + } + + if (code === 60 && this.state.exprAllowed && this.input.charCodeAt(this.state.pos + 1) !== 33) { + ++this.state.pos; + return this.finishToken(types.jsxTagStart); + } + + return super.getTokenFromCode(code); + } + + updateContext(prevType) { + if (this.match(types.braceL)) { + const curContext = this.curContext(); + + if (curContext === types$1.j_oTag) { + this.state.context.push(types$1.braceExpression); + } else if (curContext === types$1.j_expr) { + this.state.context.push(types$1.templateQuasi); + } else { + super.updateContext(prevType); + } + + this.state.exprAllowed = true; + } else if (this.match(types.slash) && prevType === types.jsxTagStart) { + this.state.context.length -= 2; + this.state.context.push(types$1.j_cTag); + this.state.exprAllowed = false; + } else { + return super.updateContext(prevType); + } + } + +}); + +class Scope { + constructor(flags) { + this.var = []; + this.lexical = []; + this.functions = []; + this.flags = flags; + } + +} +class ScopeHandler { + constructor(raise, inModule) { + this.scopeStack = []; + this.undefinedExports = new Map(); + this.raise = raise; + this.inModule = inModule; + } + + get inFunction() { + return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0; + } + + get inGenerator() { + return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0; + } + + get inAsync() { + return (this.currentVarScope().flags & SCOPE_ASYNC) > 0; + } + + get allowSuper() { + return (this.currentThisScope().flags & SCOPE_SUPER) > 0; + } + + get allowDirectSuper() { + return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0; + } + + get inNonArrowFunction() { + return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0; + } + + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + + createScope(flags) { + return new Scope(flags); + } + + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } + + exit() { + this.scopeStack.pop(); + } + + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & SCOPE_FUNCTION || !this.inModule && scope.flags & SCOPE_PROGRAM); + } + + declareName(name, bindingType, pos) { + let scope = this.currentScope(); + + if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) { + this.checkRedeclarationInScope(scope, name, bindingType, pos); + + if (bindingType & BIND_SCOPE_FUNCTION) { + scope.functions.push(name); + } else { + scope.lexical.push(name); + } + + if (bindingType & BIND_SCOPE_LEXICAL) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & BIND_SCOPE_VAR) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, pos); + scope.var.push(name); + this.maybeExportDefined(scope, name); + if (scope.flags & SCOPE_VAR) break; + } + } + + if (this.inModule && scope.flags & SCOPE_PROGRAM) { + this.undefinedExports.delete(name); + } + } + + maybeExportDefined(scope, name) { + if (this.inModule && scope.flags & SCOPE_PROGRAM) { + this.undefinedExports.delete(name); + } + } + + checkRedeclarationInScope(scope, name, bindingType, pos) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.raise(pos, `Identifier '${name}' has already been declared`); + } + } + + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & BIND_KIND_VALUE)) return false; + + if (bindingType & BIND_SCOPE_LEXICAL) { + return scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1; + } + + if (bindingType & BIND_SCOPE_FUNCTION) { + return scope.lexical.indexOf(name) > -1 || !this.treatFunctionsAsVarInScope(scope) && scope.var.indexOf(name) > -1; + } + + return scope.lexical.indexOf(name) > -1 && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical[0] === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.indexOf(name) > -1; + } + + checkLocalExport(id) { + if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && this.scopeStack[0].var.indexOf(id.name) === -1 && this.scopeStack[0].functions.indexOf(id.name) === -1) { + this.undefinedExports.set(id.name, id.start); + } + } + + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + + currentVarScope() { + for (let i = this.scopeStack.length - 1;; i--) { + const scope = this.scopeStack[i]; + + if (scope.flags & SCOPE_VAR) { + return scope; + } + } + } + + currentThisScope() { + for (let i = this.scopeStack.length - 1;; i--) { + const scope = this.scopeStack[i]; + + if ((scope.flags & SCOPE_VAR || scope.flags & SCOPE_CLASS) && !(scope.flags & SCOPE_ARROW)) { + return scope; + } + } + } + +} + +class TypeScriptScope extends Scope { + constructor(...args) { + super(...args); + this.types = []; + this.enums = []; + this.constEnums = []; + this.classes = []; + this.exportOnlyBindings = []; + } + +} + +class TypeScriptScopeHandler extends ScopeHandler { + createScope(flags) { + return new TypeScriptScope(flags); + } + + declareName(name, bindingType, pos) { + const scope = this.currentScope(); + + if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) { + this.maybeExportDefined(scope, name); + scope.exportOnlyBindings.push(name); + return; + } + + super.declareName(...arguments); + + if (bindingType & BIND_KIND_TYPE) { + if (!(bindingType & BIND_KIND_VALUE)) { + this.checkRedeclarationInScope(scope, name, bindingType, pos); + this.maybeExportDefined(scope, name); + } + + scope.types.push(name); + } + + if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.push(name); + if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.push(name); + if (bindingType & BIND_FLAGS_CLASS) scope.classes.push(name); + } + + isRedeclaredInScope(scope, name, bindingType) { + if (scope.enums.indexOf(name) > -1) { + if (bindingType & BIND_FLAGS_TS_ENUM) { + const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM); + const wasConst = scope.constEnums.indexOf(name) > -1; + return isConst !== wasConst; + } + + return true; + } + + if (bindingType & BIND_FLAGS_CLASS && scope.classes.indexOf(name) > -1) { + if (scope.lexical.indexOf(name) > -1) { + return !!(bindingType & BIND_KIND_VALUE); + } else { + return false; + } + } + + if (bindingType & BIND_KIND_TYPE && scope.types.indexOf(name) > -1) { + return true; + } + + return super.isRedeclaredInScope(...arguments); + } + + checkLocalExport(id) { + if (this.scopeStack[0].types.indexOf(id.name) === -1 && this.scopeStack[0].exportOnlyBindings.indexOf(id.name) === -1) { + super.checkLocalExport(id); + } + } + +} + +function nonNull(x) { + if (x == null) { + throw new Error(`Unexpected ${x} value.`); + } + + return x; +} + +function assert(x) { + if (!x) { + throw new Error("Assert fail"); + } +} + +function keywordTypeFromName(value) { + switch (value) { + case "any": + return "TSAnyKeyword"; + + case "boolean": + return "TSBooleanKeyword"; + + case "bigint": + return "TSBigIntKeyword"; + + case "never": + return "TSNeverKeyword"; + + case "number": + return "TSNumberKeyword"; + + case "object": + return "TSObjectKeyword"; + + case "string": + return "TSStringKeyword"; + + case "symbol": + return "TSSymbolKeyword"; + + case "undefined": + return "TSUndefinedKeyword"; + + case "unknown": + return "TSUnknownKeyword"; + + default: + return undefined; + } +} + +var typescript = (superClass => class extends superClass { + getScopeHandler() { + return TypeScriptScopeHandler; + } + + tsIsIdentifier() { + return this.match(types.name); + } + + tsNextTokenCanFollowModifier() { + this.next(); + return !this.hasPrecedingLineBreak() && !this.match(types.parenL) && !this.match(types.parenR) && !this.match(types.colon) && !this.match(types.eq) && !this.match(types.question) && !this.match(types.bang); + } + + tsParseModifier(allowedModifiers) { + if (!this.match(types.name)) { + return undefined; + } + + const modifier = this.state.value; + + if (allowedModifiers.indexOf(modifier) !== -1 && this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } + + return undefined; + } + + tsIsListTerminator(kind) { + switch (kind) { + case "EnumMembers": + case "TypeMembers": + return this.match(types.braceR); + + case "HeritageClauseElement": + return this.match(types.braceL); + + case "TupleElementTypes": + return this.match(types.bracketR); + + case "TypeParametersOrArguments": + return this.isRelational(">"); + } + + throw new Error("Unreachable"); + } + + tsParseList(kind, parseElement) { + const result = []; + + while (!this.tsIsListTerminator(kind)) { + result.push(parseElement()); + } + + return result; + } + + tsParseDelimitedList(kind, parseElement) { + return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true)); + } + + tsTryParseDelimitedList(kind, parseElement) { + return this.tsParseDelimitedListWorker(kind, parseElement, false); + } + + tsParseDelimitedListWorker(kind, parseElement, expectSuccess) { + const result = []; + + while (true) { + if (this.tsIsListTerminator(kind)) { + break; + } + + const element = parseElement(); + + if (element == null) { + return undefined; + } + + result.push(element); + + if (this.eat(types.comma)) { + continue; + } + + if (this.tsIsListTerminator(kind)) { + break; + } + + if (expectSuccess) { + this.expect(types.comma); + } + + return undefined; + } + + return result; + } + + tsParseBracketedList(kind, parseElement, bracket, skipFirstToken) { + if (!skipFirstToken) { + if (bracket) { + this.expect(types.bracketL); + } else { + this.expectRelational("<"); + } + } + + const result = this.tsParseDelimitedList(kind, parseElement); + + if (bracket) { + this.expect(types.bracketR); + } else { + this.expectRelational(">"); + } + + return result; + } + + tsParseImportType() { + const node = this.startNode(); + this.expect(types._import); + this.expect(types.parenL); + + if (!this.match(types.string)) { + throw this.unexpected(null, "Argument in a type import must be a string literal"); + } + + node.argument = this.parseExprAtom(); + this.expect(types.parenR); + + if (this.eat(types.dot)) { + node.qualifier = this.tsParseEntityName(true); + } + + if (this.isRelational("<")) { + node.typeParameters = this.tsParseTypeArguments(); + } + + return this.finishNode(node, "TSImportType"); + } + + tsParseEntityName(allowReservedWords) { + let entity = this.parseIdentifier(); + + while (this.eat(types.dot)) { + const node = this.startNodeAtNode(entity); + node.left = entity; + node.right = this.parseIdentifier(allowReservedWords); + entity = this.finishNode(node, "TSQualifiedName"); + } + + return entity; + } + + tsParseTypeReference() { + const node = this.startNode(); + node.typeName = this.tsParseEntityName(false); + + if (!this.hasPrecedingLineBreak() && this.isRelational("<")) { + node.typeParameters = this.tsParseTypeArguments(); + } + + return this.finishNode(node, "TSTypeReference"); + } + + tsParseThisTypePredicate(lhs) { + this.next(); + const node = this.startNodeAtNode(lhs); + node.parameterName = lhs; + node.typeAnnotation = this.tsParseTypeAnnotation(false); + return this.finishNode(node, "TSTypePredicate"); + } + + tsParseThisTypeNode() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSThisType"); + } + + tsParseTypeQuery() { + const node = this.startNode(); + this.expect(types._typeof); + + if (this.match(types._import)) { + node.exprName = this.tsParseImportType(); + } else { + node.exprName = this.tsParseEntityName(true); + } + + return this.finishNode(node, "TSTypeQuery"); + } + + tsParseTypeParameter() { + const node = this.startNode(); + node.name = this.parseIdentifierName(node.start); + node.constraint = this.tsEatThenParseType(types._extends); + node.default = this.tsEatThenParseType(types.eq); + return this.finishNode(node, "TSTypeParameter"); + } + + tsTryParseTypeParameters() { + if (this.isRelational("<")) { + return this.tsParseTypeParameters(); + } + } + + tsParseTypeParameters() { + const node = this.startNode(); + + if (this.isRelational("<") || this.match(types.jsxTagStart)) { + this.next(); + } else { + this.unexpected(); + } + + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this), false, true); + return this.finishNode(node, "TSTypeParameterDeclaration"); + } + + tsTryNextParseConstantContext() { + if (this.lookahead().type === types._const) { + this.next(); + return this.tsParseTypeReference(); + } + + return null; + } + + tsFillSignature(returnToken, signature) { + const returnTokenRequired = returnToken === types.arrow; + signature.typeParameters = this.tsTryParseTypeParameters(); + this.expect(types.parenL); + signature.parameters = this.tsParseBindingListForSignature(); + + if (returnTokenRequired) { + signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } else if (this.match(returnToken)) { + signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } + } + + tsParseBindingListForSignature() { + return this.parseBindingList(types.parenR).map(pattern => { + if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") { + throw this.unexpected(pattern.start, `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${pattern.type}`); + } + + return pattern; + }); + } + + tsParseTypeMemberSemicolon() { + if (!this.eat(types.comma)) { + this.semicolon(); + } + } + + tsParseSignatureMember(kind, node) { + this.tsFillSignature(types.colon, node); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, kind); + } + + tsIsUnambiguouslyIndexSignature() { + this.next(); + return this.eat(types.name) && this.match(types.colon); + } + + tsTryParseIndexSignature(node) { + if (!(this.match(types.bracketL) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { + return undefined; + } + + this.expect(types.bracketL); + const id = this.parseIdentifier(); + id.typeAnnotation = this.tsParseTypeAnnotation(); + this.resetEndLocation(id); + this.expect(types.bracketR); + node.parameters = [id]; + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, "TSIndexSignature"); + } + + tsParsePropertyOrMethodSignature(node, readonly) { + if (this.eat(types.question)) node.optional = true; + const nodeAny = node; + + if (!readonly && (this.match(types.parenL) || this.isRelational("<"))) { + const method = nodeAny; + this.tsFillSignature(types.colon, method); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(method, "TSMethodSignature"); + } else { + const property = nodeAny; + if (readonly) property.readonly = true; + const type = this.tsTryParseTypeAnnotation(); + if (type) property.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(property, "TSPropertySignature"); + } + } + + tsParseTypeMember() { + const node = this.startNode(); + + if (this.match(types.parenL) || this.isRelational("<")) { + return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); + } + + if (this.match(types._new)) { + const id = this.startNode(); + this.next(); + + if (this.match(types.parenL) || this.isRelational("<")) { + return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); + } else { + node.key = this.createIdentifier(id, "new"); + return this.tsParsePropertyOrMethodSignature(node, false); + } + } + + const readonly = !!this.tsParseModifier(["readonly"]); + const idx = this.tsTryParseIndexSignature(node); + + if (idx) { + if (readonly) node.readonly = true; + return idx; + } + + this.parsePropertyName(node); + return this.tsParsePropertyOrMethodSignature(node, readonly); + } + + tsParseTypeLiteral() { + const node = this.startNode(); + node.members = this.tsParseObjectTypeMembers(); + return this.finishNode(node, "TSTypeLiteral"); + } + + tsParseObjectTypeMembers() { + this.expect(types.braceL); + const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + this.expect(types.braceR); + return members; + } + + tsIsStartOfMappedType() { + this.next(); + + if (this.eat(types.plusMin)) { + return this.isContextual("readonly"); + } + + if (this.isContextual("readonly")) { + this.next(); + } + + if (!this.match(types.bracketL)) { + return false; + } + + this.next(); + + if (!this.tsIsIdentifier()) { + return false; + } + + this.next(); + return this.match(types._in); + } + + tsParseMappedTypeParameter() { + const node = this.startNode(); + node.name = this.parseIdentifierName(node.start); + node.constraint = this.tsExpectThenParseType(types._in); + return this.finishNode(node, "TSTypeParameter"); + } + + tsParseMappedType() { + const node = this.startNode(); + this.expect(types.braceL); + + if (this.match(types.plusMin)) { + node.readonly = this.state.value; + this.next(); + this.expectContextual("readonly"); + } else if (this.eatContextual("readonly")) { + node.readonly = true; + } + + this.expect(types.bracketL); + node.typeParameter = this.tsParseMappedTypeParameter(); + this.expect(types.bracketR); + + if (this.match(types.plusMin)) { + node.optional = this.state.value; + this.next(); + this.expect(types.question); + } else if (this.eat(types.question)) { + node.optional = true; + } + + node.typeAnnotation = this.tsTryParseType(); + this.semicolon(); + this.expect(types.braceR); + return this.finishNode(node, "TSMappedType"); + } + + tsParseTupleType() { + const node = this.startNode(); + node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let seenOptionalElement = false; + node.elementTypes.forEach(elementNode => { + if (elementNode.type === "TSOptionalType") { + seenOptionalElement = true; + } else if (seenOptionalElement && elementNode.type !== "TSRestType") { + this.raise(elementNode.start, "A required element cannot follow an optional element."); + } + }); + return this.finishNode(node, "TSTupleType"); + } + + tsParseTupleElementType() { + if (this.match(types.ellipsis)) { + const restNode = this.startNode(); + this.next(); + restNode.typeAnnotation = this.tsParseType(); + this.checkCommaAfterRest(); + return this.finishNode(restNode, "TSRestType"); + } + + const type = this.tsParseType(); + + if (this.eat(types.question)) { + const optionalTypeNode = this.startNodeAtNode(type); + optionalTypeNode.typeAnnotation = type; + return this.finishNode(optionalTypeNode, "TSOptionalType"); + } + + return type; + } + + tsParseParenthesizedType() { + const node = this.startNode(); + this.expect(types.parenL); + node.typeAnnotation = this.tsParseType(); + this.expect(types.parenR); + return this.finishNode(node, "TSParenthesizedType"); + } + + tsParseFunctionOrConstructorType(type) { + const node = this.startNode(); + + if (type === "TSConstructorType") { + this.expect(types._new); + } + + this.tsFillSignature(types.arrow, node); + return this.finishNode(node, type); + } + + tsParseLiteralTypeNode() { + const node = this.startNode(); + + node.literal = (() => { + switch (this.state.type) { + case types.num: + case types.string: + case types._true: + case types._false: + return this.parseExprAtom(); + + default: + throw this.unexpected(); + } + })(); + + return this.finishNode(node, "TSLiteralType"); + } + + tsParseTemplateLiteralType() { + const node = this.startNode(); + const templateNode = this.parseTemplate(false); + + if (templateNode.expressions.length > 0) { + throw this.raise(templateNode.expressions[0].start, "Template literal types cannot have any substitution"); + } + + node.literal = templateNode; + return this.finishNode(node, "TSLiteralType"); + } + + tsParseNonArrayType() { + switch (this.state.type) { + case types.name: + case types._void: + case types._null: + { + const type = this.match(types._void) ? "TSVoidKeyword" : this.match(types._null) ? "TSNullKeyword" : keywordTypeFromName(this.state.value); + + if (type !== undefined && this.lookahead().type !== types.dot) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, type); + } + + return this.tsParseTypeReference(); + } + + case types.string: + case types.num: + case types._true: + case types._false: + return this.tsParseLiteralTypeNode(); + + case types.plusMin: + if (this.state.value === "-") { + const node = this.startNode(); + + if (this.lookahead().type !== types.num) { + throw this.unexpected(); + } + + node.literal = this.parseMaybeUnary(); + return this.finishNode(node, "TSLiteralType"); + } + + break; + + case types._this: + { + const thisKeyword = this.tsParseThisTypeNode(); + + if (this.isContextual("is") && !this.hasPrecedingLineBreak()) { + return this.tsParseThisTypePredicate(thisKeyword); + } else { + return thisKeyword; + } + } + + case types._typeof: + return this.tsParseTypeQuery(); + + case types._import: + return this.tsParseImportType(); + + case types.braceL: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + + case types.bracketL: + return this.tsParseTupleType(); + + case types.parenL: + return this.tsParseParenthesizedType(); + + case types.backQuote: + return this.tsParseTemplateLiteralType(); + } + + throw this.unexpected(); + } + + tsParseArrayTypeOrHigher() { + let type = this.tsParseNonArrayType(); + + while (!this.hasPrecedingLineBreak() && this.eat(types.bracketL)) { + if (this.match(types.bracketR)) { + const node = this.startNodeAtNode(type); + node.elementType = type; + this.expect(types.bracketR); + type = this.finishNode(node, "TSArrayType"); + } else { + const node = this.startNodeAtNode(type); + node.objectType = type; + node.indexType = this.tsParseType(); + this.expect(types.bracketR); + type = this.finishNode(node, "TSIndexedAccessType"); + } + } + + return type; + } + + tsParseTypeOperator(operator) { + const node = this.startNode(); + this.expectContextual(operator); + node.operator = operator; + node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); + + if (operator === "readonly") { + this.tsCheckTypeAnnotationForReadOnly(node); + } + + return this.finishNode(node, "TSTypeOperator"); + } + + tsCheckTypeAnnotationForReadOnly(node) { + switch (node.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + + default: + this.raise(node.start, "'readonly' type modifier is only permitted on array and tuple literal types."); + } + } + + tsParseInferType() { + const node = this.startNode(); + this.expectContextual("infer"); + const typeParameter = this.startNode(); + typeParameter.name = this.parseIdentifierName(typeParameter.start); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + return this.finishNode(node, "TSInferType"); + } + + tsParseTypeOperatorOrHigher() { + const operator = ["keyof", "unique", "readonly"].find(kw => this.isContextual(kw)); + return operator ? this.tsParseTypeOperator(operator) : this.isContextual("infer") ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher(); + } + + tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { + this.eat(operator); + let type = parseConstituentType(); + + if (this.match(operator)) { + const types = [type]; + + while (this.eat(operator)) { + types.push(parseConstituentType()); + } + + const node = this.startNodeAtNode(type); + node.types = types; + type = this.finishNode(node, kind); + } + + return type; + } + + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), types.bitwiseAND); + } + + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), types.bitwiseOR); + } + + tsIsStartOfFunctionType() { + if (this.isRelational("<")) { + return true; + } + + return this.match(types.parenL) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + + tsSkipParameterStart() { + if (this.match(types.name) || this.match(types._this)) { + this.next(); + return true; + } + + if (this.match(types.braceL)) { + let braceStackCounter = 1; + this.next(); + + while (braceStackCounter > 0) { + if (this.match(types.braceL)) { + ++braceStackCounter; + } else if (this.match(types.braceR)) { + --braceStackCounter; + } + + this.next(); + } + + return true; + } + + if (this.match(types.bracketL)) { + let braceStackCounter = 1; + this.next(); + + while (braceStackCounter > 0) { + if (this.match(types.bracketL)) { + ++braceStackCounter; + } else if (this.match(types.bracketR)) { + --braceStackCounter; + } + + this.next(); + } + + return true; + } + + return false; + } + + tsIsUnambiguouslyStartOfFunctionType() { + this.next(); + + if (this.match(types.parenR) || this.match(types.ellipsis)) { + return true; + } + + if (this.tsSkipParameterStart()) { + if (this.match(types.colon) || this.match(types.comma) || this.match(types.question) || this.match(types.eq)) { + return true; + } + + if (this.match(types.parenR)) { + this.next(); + + if (this.match(types.arrow)) { + return true; + } + } + } + + return false; + } + + tsParseTypeOrTypePredicateAnnotation(returnToken) { + return this.tsInType(() => { + const t = this.startNode(); + this.expect(returnToken); + const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + + if (!typePredicateVariable) { + return this.tsParseTypeAnnotation(false, t); + } + + const type = this.tsParseTypeAnnotation(false); + const node = this.startNodeAtNode(typePredicateVariable); + node.parameterName = typePredicateVariable; + node.typeAnnotation = type; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + }); + } + + tsTryParseTypeOrTypePredicateAnnotation() { + return this.match(types.colon) ? this.tsParseTypeOrTypePredicateAnnotation(types.colon) : undefined; + } + + tsTryParseTypeAnnotation() { + return this.match(types.colon) ? this.tsParseTypeAnnotation() : undefined; + } + + tsTryParseType() { + return this.tsEatThenParseType(types.colon); + } + + tsParseTypePredicatePrefix() { + const id = this.parseIdentifier(); + + if (this.isContextual("is") && !this.hasPrecedingLineBreak()) { + this.next(); + return id; + } + } + + tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { + this.tsInType(() => { + if (eatColon) this.expect(types.colon); + t.typeAnnotation = this.tsParseType(); + }); + return this.finishNode(t, "TSTypeAnnotation"); + } + + tsParseType() { + assert(this.state.inType); + const type = this.tsParseNonConditionalType(); + + if (this.hasPrecedingLineBreak() || !this.eat(types._extends)) { + return type; + } + + const node = this.startNodeAtNode(type); + node.checkType = type; + node.extendsType = this.tsParseNonConditionalType(); + this.expect(types.question); + node.trueType = this.tsParseType(); + this.expect(types.colon); + node.falseType = this.tsParseType(); + return this.finishNode(node, "TSConditionalType"); + } + + tsParseNonConditionalType() { + if (this.tsIsStartOfFunctionType()) { + return this.tsParseFunctionOrConstructorType("TSFunctionType"); + } + + if (this.match(types._new)) { + return this.tsParseFunctionOrConstructorType("TSConstructorType"); + } + + return this.tsParseUnionTypeOrHigher(); + } + + tsParseTypeAssertion() { + const node = this.startNode(); + + const _const = this.tsTryNextParseConstantContext(); + + node.typeAnnotation = _const || this.tsNextThenParseType(); + this.expectRelational(">"); + node.expression = this.parseMaybeUnary(); + return this.finishNode(node, "TSTypeAssertion"); + } + + tsParseHeritageClause(descriptor) { + const originalStart = this.state.start; + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", this.tsParseExpressionWithTypeArguments.bind(this)); + + if (!delimitedList.length) { + this.raise(originalStart, `'${descriptor}' list cannot be empty.`); + } + + return delimitedList; + } + + tsParseExpressionWithTypeArguments() { + const node = this.startNode(); + node.expression = this.tsParseEntityName(false); + + if (this.isRelational("<")) { + node.typeParameters = this.tsParseTypeArguments(); + } + + return this.finishNode(node, "TSExpressionWithTypeArguments"); + } + + tsParseInterfaceDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkLVal(node.id, BIND_TS_INTERFACE, undefined, "typescript interface declaration"); + node.typeParameters = this.tsTryParseTypeParameters(); + + if (this.eat(types._extends)) { + node.extends = this.tsParseHeritageClause("extends"); + } + + const body = this.startNode(); + body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); + node.body = this.finishNode(body, "TSInterfaceBody"); + return this.finishNode(node, "TSInterfaceDeclaration"); + } + + tsParseTypeAliasDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkLVal(node.id, BIND_TS_TYPE, undefined, "typescript type alias"); + node.typeParameters = this.tsTryParseTypeParameters(); + node.typeAnnotation = this.tsExpectThenParseType(types.eq); + this.semicolon(); + return this.finishNode(node, "TSTypeAliasDeclaration"); + } + + tsInNoContext(cb) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } + + tsInType(cb) { + const oldInType = this.state.inType; + this.state.inType = true; + + try { + return cb(); + } finally { + this.state.inType = oldInType; + } + } + + tsEatThenParseType(token) { + return !this.match(token) ? undefined : this.tsNextThenParseType(); + } + + tsExpectThenParseType(token) { + return this.tsDoThenParseType(() => this.expect(token)); + } + + tsNextThenParseType() { + return this.tsDoThenParseType(() => this.next()); + } + + tsDoThenParseType(cb) { + return this.tsInType(() => { + cb(); + return this.tsParseType(); + }); + } + + tsParseEnumMember() { + const node = this.startNode(); + node.id = this.match(types.string) ? this.parseExprAtom() : this.parseIdentifier(true); + + if (this.eat(types.eq)) { + node.initializer = this.parseMaybeAssign(); + } + + return this.finishNode(node, "TSEnumMember"); + } + + tsParseEnumDeclaration(node, isConst) { + if (isConst) node.const = true; + node.id = this.parseIdentifier(); + this.checkLVal(node.id, isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM, undefined, "typescript enum declaration"); + this.expect(types.braceL); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(types.braceR); + return this.finishNode(node, "TSEnumDeclaration"); + } + + tsParseModuleBlock() { + const node = this.startNode(); + this.scope.enter(SCOPE_OTHER); + this.expect(types.braceL); + this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, types.braceR); + this.scope.exit(); + return this.finishNode(node, "TSModuleBlock"); + } + + tsParseModuleOrNamespaceDeclaration(node, nested = false) { + node.id = this.parseIdentifier(); + + if (!nested) { + this.checkLVal(node.id, BIND_TS_NAMESPACE, null, "module or namespace declaration"); + } + + if (this.eat(types.dot)) { + const inner = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(inner, true); + node.body = inner; + } else { + node.body = this.tsParseModuleBlock(); + } + + return this.finishNode(node, "TSModuleDeclaration"); + } + + tsParseAmbientExternalModuleDeclaration(node) { + if (this.isContextual("global")) { + node.global = true; + node.id = this.parseIdentifier(); + } else if (this.match(types.string)) { + node.id = this.parseExprAtom(); + } else { + this.unexpected(); + } + + if (this.match(types.braceL)) { + node.body = this.tsParseModuleBlock(); + } else { + this.semicolon(); + } + + return this.finishNode(node, "TSModuleDeclaration"); + } + + tsParseImportEqualsDeclaration(node, isExport) { + node.isExport = isExport || false; + node.id = this.parseIdentifier(); + this.expect(types.eq); + node.moduleReference = this.tsParseModuleReference(); + this.semicolon(); + return this.finishNode(node, "TSImportEqualsDeclaration"); + } + + tsIsExternalModuleReference() { + return this.isContextual("require") && this.lookahead().type === types.parenL; + } + + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false); + } + + tsParseExternalModuleReference() { + const node = this.startNode(); + this.expectContextual("require"); + this.expect(types.parenL); + + if (!this.match(types.string)) { + throw this.unexpected(); + } + + node.expression = this.parseExprAtom(); + this.expect(types.parenR); + return this.finishNode(node, "TSExternalModuleReference"); + } + + tsLookAhead(f) { + const state = this.state.clone(); + const res = f(); + this.state = state; + return res; + } + + tsTryParseAndCatch(f) { + const state = this.state.clone(); + + try { + return f(); + } catch (e) { + if (e instanceof SyntaxError) { + this.state = state; + return undefined; + } + + throw e; + } + } + + tsTryParse(f) { + const state = this.state.clone(); + const result = f(); + + if (result !== undefined && result !== false) { + return result; + } else { + this.state = state; + return undefined; + } + } + + nodeWithSamePosition(original, type) { + const node = this.startNodeAtNode(original); + node.type = type; + node.end = original.end; + node.loc.end = original.loc.end; + + if (original.leadingComments) { + node.leadingComments = original.leadingComments; + } + + if (original.trailingComments) { + node.trailingComments = original.trailingComments; + } + + if (original.innerComments) node.innerComments = original.innerComments; + return node; + } + + tsTryParseDeclare(nany) { + if (this.isLineTerminator()) { + return; + } + + let starttype = this.state.type; + let kind; + + if (this.isContextual("let")) { + starttype = types._var; + kind = "let"; + } + + switch (starttype) { + case types._function: + return this.parseFunctionStatement(nany, false, true); + + case types._class: + return this.parseClass(nany, true, false); + + case types._const: + if (this.match(types._const) && this.isLookaheadContextual("enum")) { + this.expect(types._const); + this.expectContextual("enum"); + return this.tsParseEnumDeclaration(nany, true); + } + + case types._var: + kind = kind || this.state.value; + return this.parseVarStatement(nany, kind); + + case types.name: + { + const value = this.state.value; + + if (value === "global") { + return this.tsParseAmbientExternalModuleDeclaration(nany); + } else { + return this.tsParseDeclaration(nany, value, true); + } + } + } + } + + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.value, true); + } + + tsParseExpressionStatement(node, expr) { + switch (expr.name) { + case "declare": + { + const declaration = this.tsTryParseDeclare(node); + + if (declaration) { + declaration.declare = true; + return declaration; + } + + break; + } + + case "global": + if (this.match(types.braceL)) { + const mod = node; + mod.global = true; + mod.id = expr; + mod.body = this.tsParseModuleBlock(); + return this.finishNode(mod, "TSModuleDeclaration"); + } + + break; + + default: + return this.tsParseDeclaration(node, expr.name, false); + } + } + + tsParseDeclaration(node, value, next) { + switch (value) { + case "abstract": + if (this.tsCheckLineTerminatorAndMatch(types._class, next)) { + const cls = node; + cls.abstract = true; + + if (next) { + this.next(); + + if (!this.match(types._class)) { + this.unexpected(null, types._class); + } + } + + return this.parseClass(cls, true, false); + } + + break; + + case "enum": + if (next || this.match(types.name)) { + if (next) this.next(); + return this.tsParseEnumDeclaration(node, false); + } + + break; + + case "interface": + if (this.tsCheckLineTerminatorAndMatch(types.name, next)) { + if (next) this.next(); + return this.tsParseInterfaceDeclaration(node); + } + + break; + + case "module": + if (next) this.next(); + + if (this.match(types.string)) { + return this.tsParseAmbientExternalModuleDeclaration(node); + } else if (this.tsCheckLineTerminatorAndMatch(types.name, next)) { + return this.tsParseModuleOrNamespaceDeclaration(node); + } + + break; + + case "namespace": + if (this.tsCheckLineTerminatorAndMatch(types.name, next)) { + if (next) this.next(); + return this.tsParseModuleOrNamespaceDeclaration(node); + } + + break; + + case "type": + if (this.tsCheckLineTerminatorAndMatch(types.name, next)) { + if (next) this.next(); + return this.tsParseTypeAliasDeclaration(node); + } + + break; + } + } + + tsCheckLineTerminatorAndMatch(tokenType, next) { + return (next || this.match(tokenType)) && !this.isLineTerminator(); + } + + tsTryParseGenericAsyncArrowFunction(startPos, startLoc) { + if (!this.isRelational("<")) { + return undefined; + } + + const res = this.tsTryParseAndCatch(() => { + const node = this.startNodeAt(startPos, startLoc); + node.typeParameters = this.tsParseTypeParameters(); + super.parseFunctionParams(node); + node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); + this.expect(types.arrow); + return node; + }); + + if (!res) { + return undefined; + } + + return this.parseArrowExpression(res, null, true); + } + + tsParseTypeArguments() { + const node = this.startNode(); + node.params = this.tsInType(() => this.tsInNoContext(() => { + this.expectRelational("<"); + return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); + })); + this.state.exprAllowed = false; + this.expectRelational(">"); + return this.finishNode(node, "TSTypeParameterInstantiation"); + } + + tsIsDeclarationStart() { + if (this.match(types.name)) { + switch (this.state.value) { + case "abstract": + case "declare": + case "enum": + case "interface": + case "module": + case "namespace": + case "type": + return true; + } + } + + return false; + } + + isExportDefaultSpecifier() { + if (this.tsIsDeclarationStart()) return false; + return super.isExportDefaultSpecifier(); + } + + parseAssignableListItem(allowModifiers, decorators) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let accessibility; + let readonly = false; + + if (allowModifiers) { + accessibility = this.parseAccessModifier(); + readonly = !!this.tsParseModifier(["readonly"]); + } + + const left = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(left); + const elt = this.parseMaybeDefault(left.start, left.loc.start, left); + + if (accessibility || readonly) { + const pp = this.startNodeAt(startPos, startLoc); + + if (decorators.length) { + pp.decorators = decorators; + } + + if (accessibility) pp.accessibility = accessibility; + if (readonly) pp.readonly = readonly; + + if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { + throw this.raise(pp.start, "A parameter property may not be declared using a binding pattern."); + } + + pp.parameter = elt; + return this.finishNode(pp, "TSParameterProperty"); + } + + if (decorators.length) { + left.decorators = decorators; + } + + return elt; + } + + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(types.colon)) { + node.returnType = this.tsParseTypeOrTypePredicateAnnotation(types.colon); + } + + const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" ? "TSDeclareMethod" : undefined; + + if (bodilessType && !this.match(types.braceL) && this.isLineTerminator()) { + this.finishNode(node, bodilessType); + return; + } + + super.parseFunctionBodyAndFinish(node, type, isMethod); + } + + checkFunctionStatementId(node) { + if (!node.body && node.id) { + this.checkLVal(node.id, BIND_TS_FN_TYPE, null, "function name"); + } else { + super.checkFunctionStatementId(...arguments); + } + } + + parseSubscript(base, startPos, startLoc, noCalls, state, maybeAsyncArrow) { + if (!this.hasPrecedingLineBreak() && this.match(types.bang)) { + this.state.exprAllowed = false; + this.next(); + const nonNullExpression = this.startNodeAt(startPos, startLoc); + nonNullExpression.expression = base; + return this.finishNode(nonNullExpression, "TSNonNullExpression"); + } + + if (this.isRelational("<")) { + const result = this.tsTryParseAndCatch(() => { + if (!noCalls && this.atPossibleAsync(base)) { + const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startPos, startLoc); + + if (asyncArrowFn) { + return asyncArrowFn; + } + } + + const node = this.startNodeAt(startPos, startLoc); + node.callee = base; + const typeArguments = this.tsParseTypeArguments(); + + if (typeArguments) { + if (!noCalls && this.eat(types.parenL)) { + node.arguments = this.parseCallExpressionArguments(types.parenR, false); + node.typeParameters = typeArguments; + return this.finishCallExpression(node); + } else if (this.match(types.backQuote)) { + return this.parseTaggedTemplateExpression(startPos, startLoc, base, state, typeArguments); + } + } + + this.unexpected(); + }); + if (result) return result; + } + + return super.parseSubscript(base, startPos, startLoc, noCalls, state, maybeAsyncArrow); + } + + parseNewArguments(node) { + if (this.isRelational("<")) { + const typeParameters = this.tsTryParseAndCatch(() => { + const args = this.tsParseTypeArguments(); + if (!this.match(types.parenL)) this.unexpected(); + return args; + }); + + if (typeParameters) { + node.typeParameters = typeParameters; + } + } + + super.parseNewArguments(node); + } + + parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn) { + if (nonNull(types._in.binop) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual("as")) { + const node = this.startNodeAt(leftStartPos, leftStartLoc); + node.expression = left; + + const _const = this.tsTryNextParseConstantContext(); + + if (_const) { + node.typeAnnotation = _const; + } else { + node.typeAnnotation = this.tsNextThenParseType(); + } + + this.finishNode(node, "TSAsExpression"); + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn); + } + + return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn); + } + + checkReservedWord(word, startLoc, checkKeywords, isBinding) {} + + checkDuplicateExports() {} + + parseImport(node) { + if (this.match(types.name) && this.lookahead().type === types.eq) { + return this.tsParseImportEqualsDeclaration(node); + } + + return super.parseImport(node); + } + + parseExport(node) { + if (this.match(types._import)) { + this.expect(types._import); + return this.tsParseImportEqualsDeclaration(node, true); + } else if (this.eat(types.eq)) { + const assign = node; + assign.expression = this.parseExpression(); + this.semicolon(); + return this.finishNode(assign, "TSExportAssignment"); + } else if (this.eatContextual("as")) { + const decl = node; + this.expectContextual("namespace"); + decl.id = this.parseIdentifier(); + this.semicolon(); + return this.finishNode(decl, "TSNamespaceExportDeclaration"); + } else { + return super.parseExport(node); + } + } + + isAbstractClass() { + return this.isContextual("abstract") && this.lookahead().type === types._class; + } + + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + const cls = this.startNode(); + this.next(); + this.parseClass(cls, true, true); + cls.abstract = true; + return cls; + } + + if (this.state.value === "interface") { + const result = this.tsParseDeclaration(this.startNode(), this.state.value, true); + if (result) return result; + } + + return super.parseExportDefaultExpression(); + } + + parseStatementContent(context, topLevel) { + if (this.state.type === types._const) { + const ahead = this.lookahead(); + + if (ahead.type === types.name && ahead.value === "enum") { + const node = this.startNode(); + this.expect(types._const); + this.expectContextual("enum"); + return this.tsParseEnumDeclaration(node, true); + } + } + + return super.parseStatementContent(context, topLevel); + } + + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + + parseClassMember(classBody, member, state, constructorAllowsSuper) { + const accessibility = this.parseAccessModifier(); + if (accessibility) member.accessibility = accessibility; + super.parseClassMember(classBody, member, state, constructorAllowsSuper); + } + + parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper) { + const methodOrProp = member; + const prop = member; + const propOrIdx = member; + let abstract = false, + readonly = false; + const mod = this.tsParseModifier(["abstract", "readonly"]); + + switch (mod) { + case "readonly": + readonly = true; + abstract = !!this.tsParseModifier(["abstract"]); + break; + + case "abstract": + abstract = true; + readonly = !!this.tsParseModifier(["readonly"]); + break; + } + + if (abstract) methodOrProp.abstract = true; + if (readonly) propOrIdx.readonly = true; + + if (!abstract && !isStatic && !methodOrProp.accessibility) { + const idx = this.tsTryParseIndexSignature(member); + + if (idx) { + classBody.body.push(idx); + return; + } + } + + if (readonly) { + methodOrProp.static = isStatic; + this.parseClassPropertyName(prop); + this.parsePostMemberNameModifiers(methodOrProp); + this.pushClassProperty(classBody, prop); + return; + } + + super.parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper); + } + + parsePostMemberNameModifiers(methodOrProp) { + const optional = this.eat(types.question); + if (optional) methodOrProp.optional = true; + } + + parseExpressionStatement(node, expr) { + const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr) : undefined; + return decl || super.parseExpressionStatement(node, expr); + } + + shouldParseExportDeclaration() { + if (this.tsIsDeclarationStart()) return true; + return super.shouldParseExportDeclaration(); + } + + parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos) { + if (!refNeedsArrowPos || !this.match(types.question)) { + return super.parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos); + } + + const state = this.state.clone(); + + try { + return super.parseConditional(expr, noIn, startPos, startLoc); + } catch (err) { + if (!(err instanceof SyntaxError)) { + throw err; + } + + this.state = state; + refNeedsArrowPos.start = err.pos || this.state.start; + return expr; + } + } + + parseParenItem(node, startPos, startLoc) { + node = super.parseParenItem(node, startPos, startLoc); + + if (this.eat(types.question)) { + node.optional = true; + this.resetEndLocation(node); + } + + if (this.match(types.colon)) { + const typeCastNode = this.startNodeAt(startPos, startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TSTypeCastExpression"); + } + + return node; + } + + parseExportDeclaration(node) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const isDeclare = this.eatContextual("declare"); + let declaration; + + if (this.match(types.name)) { + declaration = this.tsTryParseExportDeclaration(); + } + + if (!declaration) { + declaration = super.parseExportDeclaration(node); + } + + if (declaration && isDeclare) { + this.resetStartLocation(declaration, startPos, startLoc); + declaration.declare = true; + } + + return declaration; + } + + parseClassId(node, isStatement, optionalId) { + if ((!isStatement || optionalId) && this.isContextual("implements")) { + return; + } + + super.parseClassId(...arguments); + const typeParameters = this.tsTryParseTypeParameters(); + if (typeParameters) node.typeParameters = typeParameters; + } + + parseClassProperty(node) { + if (!node.optional && this.eat(types.bang)) { + node.definite = true; + } + + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + return super.parseClassProperty(node); + } + + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + const typeParameters = this.tsTryParseTypeParameters(); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const typeParameters = this.tsTryParseTypeParameters(); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + + parseClassSuper(node) { + super.parseClassSuper(node); + + if (node.superClass && this.isRelational("<")) { + node.superTypeParameters = this.tsParseTypeArguments(); + } + + if (this.eatContextual("implements")) { + node.implements = this.tsParseHeritageClause("implements"); + } + } + + parseObjPropValue(prop, ...args) { + const typeParameters = this.tsTryParseTypeParameters(); + if (typeParameters) prop.typeParameters = typeParameters; + super.parseObjPropValue(prop, ...args); + } + + parseFunctionParams(node, allowModifiers) { + const typeParameters = this.tsTryParseTypeParameters(); + if (typeParameters) node.typeParameters = typeParameters; + super.parseFunctionParams(node, allowModifiers); + } + + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + + if (decl.id.type === "Identifier" && this.eat(types.bang)) { + decl.definite = true; + } + + const type = this.tsTryParseTypeAnnotation(); + + if (type) { + decl.id.typeAnnotation = type; + this.resetEndLocation(decl.id); + } + } + + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(types.colon)) { + node.returnType = this.tsParseTypeAnnotation(); + } + + return super.parseAsyncArrowFromCallExpression(node, call); + } + + parseMaybeAssign(...args) { + let jsxError; + + if (this.match(types.jsxTagStart)) { + const context = this.curContext(); + assert(context === types$1.j_oTag); + assert(this.state.context[this.state.context.length - 2] === types$1.j_expr); + const state = this.state.clone(); + + try { + return super.parseMaybeAssign(...args); + } catch (err) { + if (!(err instanceof SyntaxError)) { + throw err; + } + + this.state = state; + assert(this.curContext() === types$1.j_oTag); + this.state.context.pop(); + assert(this.curContext() === types$1.j_expr); + this.state.context.pop(); + jsxError = err; + } + } + + if (jsxError === undefined && !this.isRelational("<")) { + return super.parseMaybeAssign(...args); + } + + let arrowExpression; + let typeParameters; + const state = this.state.clone(); + + try { + typeParameters = this.tsParseTypeParameters(); + arrowExpression = super.parseMaybeAssign(...args); + + if (arrowExpression.type !== "ArrowFunctionExpression" || arrowExpression.extra && arrowExpression.extra.parenthesized) { + this.unexpected(); + } + } catch (err) { + if (!(err instanceof SyntaxError)) { + throw err; + } + + if (jsxError) { + throw jsxError; + } + + assert(!this.hasPlugin("jsx")); + this.state = state; + return super.parseMaybeAssign(...args); + } + + if (typeParameters && typeParameters.params.length !== 0) { + this.resetStartLocationFromNode(arrowExpression, typeParameters); + } + + arrowExpression.typeParameters = typeParameters; + return arrowExpression; + } + + parseMaybeUnary(refShorthandDefaultPos) { + if (!this.hasPlugin("jsx") && this.isRelational("<")) { + return this.tsParseTypeAssertion(); + } else { + return super.parseMaybeUnary(refShorthandDefaultPos); + } + } + + parseArrow(node) { + if (this.match(types.colon)) { + const state = this.state.clone(); + + try { + const returnType = this.tsParseTypeOrTypePredicateAnnotation(types.colon); + + if (this.canInsertSemicolon() || !this.match(types.arrow)) { + this.state = state; + return undefined; + } + + node.returnType = returnType; + } catch (err) { + if (err instanceof SyntaxError) { + this.state = state; + } else { + throw err; + } + } + } + + return super.parseArrow(node); + } + + parseAssignableListItemTypes(param) { + if (this.eat(types.question)) { + if (param.type !== "Identifier") { + throw this.raise(param.start, "A binding pattern parameter cannot be optional in an implementation signature."); + } + + param.optional = true; + } + + const type = this.tsTryParseTypeAnnotation(); + if (type) param.typeAnnotation = type; + this.resetEndLocation(param); + return param; + } + + toAssignable(node, isBinding, contextDescription) { + switch (node.type) { + case "TSTypeCastExpression": + return super.toAssignable(this.typeCastToParameter(node), isBinding, contextDescription); + + case "TSParameterProperty": + return super.toAssignable(node, isBinding, contextDescription); + + case "TSAsExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + node.expression = this.toAssignable(node.expression, isBinding, contextDescription); + return node; + + default: + return super.toAssignable(node, isBinding, contextDescription); + } + } + + checkLVal(expr, bindingType = BIND_NONE, checkClashes, contextDescription) { + switch (expr.type) { + case "TSTypeCastExpression": + return; + + case "TSParameterProperty": + this.checkLVal(expr.parameter, bindingType, checkClashes, "parameter property"); + return; + + case "TSAsExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + this.checkLVal(expr.expression, bindingType, checkClashes, contextDescription); + return; + + default: + super.checkLVal(expr, bindingType, checkClashes, contextDescription); + return; + } + } + + parseBindingAtom() { + switch (this.state.type) { + case types._this: + return this.parseIdentifier(true); + + default: + return super.parseBindingAtom(); + } + } + + parseMaybeDecoratorArguments(expr) { + if (this.isRelational("<")) { + const typeArguments = this.tsParseTypeArguments(); + + if (this.match(types.parenL)) { + const call = super.parseMaybeDecoratorArguments(expr); + call.typeParameters = typeArguments; + return call; + } + + this.unexpected(this.state.start, types.parenL); + } + + return super.parseMaybeDecoratorArguments(expr); + } + + isClassMethod() { + return this.isRelational("<") || super.isClassMethod(); + } + + isClassProperty() { + return this.match(types.bang) || this.match(types.colon) || super.isClassProperty(); + } + + parseMaybeDefault(...args) { + const node = super.parseMaybeDefault(...args); + + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(node.typeAnnotation.start, "Type annotations must come before default assignments, " + "e.g. instead of `age = 25: number` use `age: number = 25`"); + } + + return node; + } + + getTokenFromCode(code) { + if (this.state.inType && (code === 62 || code === 60)) { + return this.finishOp(types.relational, 1); + } else { + return super.getTokenFromCode(code); + } + } + + toAssignableList(exprList, isBinding, contextDescription) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if (!expr) continue; + + switch (expr.type) { + case "TSTypeCastExpression": + exprList[i] = this.typeCastToParameter(expr); + break; + + case "TSAsExpression": + case "TSTypeAssertion": + this.raise(expr.start, "Unexpected type cast in parameter position."); + break; + } + } + + return super.toAssignableList(exprList, isBinding, contextDescription); + } + + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end); + return node.expression; + } + + toReferencedList(exprList, isInParens) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + + if (expr && expr._exprListItem && expr.type === "TsTypeCastExpression") { + this.raise(expr.start, "Did not expect a type annotation here."); + } + } + + return exprList; + } + + shouldParseArrow() { + return this.match(types.colon) || super.shouldParseArrow(); + } + + shouldParseAsyncArrow() { + return this.match(types.colon) || super.shouldParseAsyncArrow(); + } + + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + + jsxParseOpeningElementAfterName(node) { + if (this.isRelational("<")) { + const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArguments()); + if (typeArguments) node.typeParameters = typeArguments; + } + + return super.jsxParseOpeningElementAfterName(node); + } + + getGetterSetterExpectedParamCount(method) { + const baseCount = super.getGetterSetterExpectedParamCount(method); + const firstParam = method.params[0]; + const hasContextParam = firstParam && firstParam.type === "Identifier" && firstParam.name === "this"; + return hasContextParam ? baseCount + 1 : baseCount; + } + +}); + +types.placeholder = new TokenType("%%", { + startsExpr: true +}); +var placeholders = (superClass => class extends superClass { + parsePlaceholder(expectedNode) { + if (this.match(types.placeholder)) { + const node = this.startNode(); + this.next(); + this.assertNoSpace("Unexpected space in placeholder."); + node.name = super.parseIdentifier(true); + this.assertNoSpace("Unexpected space in placeholder."); + this.expect(types.placeholder); + return this.finishPlaceholder(node, expectedNode); + } + } + + finishPlaceholder(node, expectedNode) { + const isFinished = !!(node.expectedNode && node.type === "Placeholder"); + node.expectedNode = expectedNode; + return isFinished ? node : this.finishNode(node, "Placeholder"); + } + + getTokenFromCode(code) { + if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { + return this.finishOp(types.placeholder, 2); + } + + return super.getTokenFromCode(...arguments); + } + + parseExprAtom() { + return this.parsePlaceholder("Expression") || super.parseExprAtom(...arguments); + } + + parseIdentifier() { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(...arguments); + } + + checkReservedWord(word) { + if (word !== undefined) super.checkReservedWord(...arguments); + } + + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(...arguments); + } + + checkLVal(expr) { + if (expr.type !== "Placeholder") super.checkLVal(...arguments); + } + + toAssignable(node) { + if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { + node.expectedNode = "Pattern"; + return node; + } + + return super.toAssignable(...arguments); + } + + verifyBreakContinue(node) { + if (node.label && node.label.type === "Placeholder") return; + super.verifyBreakContinue(...arguments); + } + + parseExpressionStatement(node, expr) { + if (expr.type !== "Placeholder" || expr.extra && expr.extra.parenthesized) { + return super.parseExpressionStatement(...arguments); + } + + if (this.match(types.colon)) { + const stmt = node; + stmt.label = this.finishPlaceholder(expr, "Identifier"); + this.next(); + stmt.body = this.parseStatement("label"); + return this.finishNode(stmt, "LabeledStatement"); + } + + this.semicolon(); + node.name = expr.name; + return this.finishPlaceholder(node, "Statement"); + } + + parseBlock() { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(...arguments); + } + + parseFunctionId() { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(...arguments); + } + + parseClass(node, isStatement, optionalId) { + const type = isStatement ? "ClassDeclaration" : "ClassExpression"; + this.next(); + this.takeDecorators(node); + const placeholder = this.parsePlaceholder("Identifier"); + + if (placeholder) { + if (this.match(types._extends) || this.match(types.placeholder) || this.match(types.braceL)) { + node.id = placeholder; + } else if (optionalId || !isStatement) { + node.id = null; + node.body = this.finishPlaceholder(placeholder, "ClassBody"); + return this.finishNode(node, type); + } else { + this.unexpected(null, "A class name is required"); + } + } else { + this.parseClassId(node, isStatement, optionalId); + } + + this.parseClassSuper(node); + node.body = this.parsePlaceholder("ClassBody") || this.parseClassBody(!!node.superClass); + return this.finishNode(node, type); + } + + parseExport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseExport(...arguments); + + if (!this.isContextual("from") && !this.match(types.comma)) { + node.specifiers = []; + node.source = null; + node.declaration = this.finishPlaceholder(placeholder, "Declaration"); + return this.finishNode(node, "ExportNamedDeclaration"); + } + + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = placeholder; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return super.parseExport(node); + } + + maybeParseExportDefaultSpecifier(node) { + if (node.specifiers && node.specifiers.length > 0) { + return true; + } + + return super.maybeParseExportDefaultSpecifier(...arguments); + } + + checkExport(node) { + const { + specifiers + } = node; + + if (specifiers && specifiers.length) { + node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); + } + + super.checkExport(node); + node.specifiers = specifiers; + } + + parseImport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseImport(...arguments); + node.specifiers = []; + + if (!this.isContextual("from") && !this.match(types.comma)) { + node.source = this.finishPlaceholder(placeholder, "StringLiteral"); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + + const specifier = this.startNodeAtNode(placeholder); + specifier.local = placeholder; + this.finishNode(specifier, "ImportDefaultSpecifier"); + node.specifiers.push(specifier); + + if (this.eat(types.comma)) { + const hasStarImport = this.maybeParseStarImportSpecifier(node); + if (!hasStarImport) this.parseNamedImportSpecifiers(node); + } + + this.expectContextual("from"); + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(...arguments); + } + +}); + +function hasPlugin(plugins, name) { + return plugins.some(plugin => { + if (Array.isArray(plugin)) { + return plugin[0] === name; + } else { + return plugin === name; + } + }); +} +function getPluginOption(plugins, name, option) { + const plugin = plugins.find(plugin => { + if (Array.isArray(plugin)) { + return plugin[0] === name; + } else { + return plugin === name; + } + }); + + if (plugin && Array.isArray(plugin)) { + return plugin[1][option]; + } + + return null; +} +const PIPELINE_PROPOSALS = ["minimal", "smart"]; +function validatePlugins(plugins) { + if (hasPlugin(plugins, "decorators")) { + if (hasPlugin(plugins, "decorators-legacy")) { + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + } + + const decoratorsBeforeExport = getPluginOption(plugins, "decorators", "decoratorsBeforeExport"); + + if (decoratorsBeforeExport == null) { + throw new Error("The 'decorators' plugin requires a 'decoratorsBeforeExport' option," + " whose value must be a boolean. If you are migrating from" + " Babylon/Babel 6 or want to use the old decorators proposal, you" + " should use the 'decorators-legacy' plugin instead of 'decorators'."); + } else if (typeof decoratorsBeforeExport !== "boolean") { + throw new Error("'decoratorsBeforeExport' must be a boolean."); + } + } + + if (hasPlugin(plugins, "flow") && hasPlugin(plugins, "typescript")) { + throw new Error("Cannot combine flow and typescript plugins."); + } + + if (hasPlugin(plugins, "pipelineOperator") && !PIPELINE_PROPOSALS.includes(getPluginOption(plugins, "pipelineOperator", "proposal"))) { + throw new Error("'pipelineOperator' requires 'proposal' option whose value should be one of: " + PIPELINE_PROPOSALS.map(p => `'${p}'`).join(", ")); + } +} +const mixinPlugins = { + estree, + jsx, + flow, + typescript, + placeholders +}; +const mixinPluginNames = Object.keys(mixinPlugins); + +const defaultOptions = { + sourceType: "script", + sourceFilename: undefined, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + plugins: [], + strictMode: null, + ranges: false, + tokens: false, + createParenthesizedExpressions: false +}; +function getOptions(opts) { + const options = {}; + + for (let _i = 0, _Object$keys = Object.keys(defaultOptions); _i < _Object$keys.length; _i++) { + const key = _Object$keys[_i]; + options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key]; + } + + return options; +} + +class Position { + constructor(line, col) { + this.line = line; + this.column = col; + } + +} +class SourceLocation { + constructor(start, end) { + this.start = start; + this.end = end; + } + +} +function getLineInfo(input, offset) { + let line = 1; + let lineStart = 0; + let match; + lineBreakG.lastIndex = 0; + + while ((match = lineBreakG.exec(input)) && match.index < offset) { + line++; + lineStart = lineBreakG.lastIndex; + } + + return new Position(line, offset - lineStart); +} + +class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + } + + hasPlugin(name) { + return this.plugins.has(name); + } + + getPluginOption(plugin, name) { + if (this.hasPlugin(plugin)) return this.plugins.get(plugin)[name]; + } + +} + +function last(stack) { + return stack[stack.length - 1]; +} + +class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + this.state.trailingComments.push(comment); + this.state.leadingComments.push(comment); + } + + processComment(node) { + if (node.type === "Program" && node.body.length > 0) return; + const stack = this.state.commentStack; + let firstChild, lastChild, trailingComments, i, j; + + if (this.state.trailingComments.length > 0) { + if (this.state.trailingComments[0].start >= node.end) { + trailingComments = this.state.trailingComments; + this.state.trailingComments = []; + } else { + this.state.trailingComments.length = 0; + } + } else if (stack.length > 0) { + const lastInStack = last(stack); + + if (lastInStack.trailingComments && lastInStack.trailingComments[0].start >= node.end) { + trailingComments = lastInStack.trailingComments; + delete lastInStack.trailingComments; + } + } + + if (stack.length > 0 && last(stack).start >= node.start) { + firstChild = stack.pop(); + } + + while (stack.length > 0 && last(stack).start >= node.start) { + lastChild = stack.pop(); + } + + if (!lastChild && firstChild) lastChild = firstChild; + + if (firstChild && this.state.leadingComments.length > 0) { + const lastComment = last(this.state.leadingComments); + + if (firstChild.type === "ObjectProperty") { + if (lastComment.start >= node.start) { + if (this.state.commentPreviousNode) { + for (j = 0; j < this.state.leadingComments.length; j++) { + if (this.state.leadingComments[j].end < this.state.commentPreviousNode.end) { + this.state.leadingComments.splice(j, 1); + j--; + } + } + + if (this.state.leadingComments.length > 0) { + firstChild.trailingComments = this.state.leadingComments; + this.state.leadingComments = []; + } + } + } + } else if (node.type === "CallExpression" && node.arguments && node.arguments.length) { + const lastArg = last(node.arguments); + + if (lastArg && lastComment.start >= lastArg.start && lastComment.end <= node.end) { + if (this.state.commentPreviousNode) { + for (j = 0; j < this.state.leadingComments.length; j++) { + if (this.state.leadingComments[j].end < this.state.commentPreviousNode.end) { + this.state.leadingComments.splice(j, 1); + j--; + } + } + + if (this.state.leadingComments.length > 0) { + lastArg.trailingComments = this.state.leadingComments; + this.state.leadingComments = []; + } + } + } + } + } + + if (lastChild) { + if (lastChild.leadingComments) { + if (lastChild !== node && lastChild.leadingComments.length > 0 && last(lastChild.leadingComments).end <= node.start) { + node.leadingComments = lastChild.leadingComments; + delete lastChild.leadingComments; + } else { + for (i = lastChild.leadingComments.length - 2; i >= 0; --i) { + if (lastChild.leadingComments[i].end <= node.start) { + node.leadingComments = lastChild.leadingComments.splice(0, i + 1); + break; + } + } + } + } + } else if (this.state.leadingComments.length > 0) { + if (last(this.state.leadingComments).end <= node.start) { + if (this.state.commentPreviousNode) { + for (j = 0; j < this.state.leadingComments.length; j++) { + if (this.state.leadingComments[j].end < this.state.commentPreviousNode.end) { + this.state.leadingComments.splice(j, 1); + j--; + } + } + } + + if (this.state.leadingComments.length > 0) { + node.leadingComments = this.state.leadingComments; + this.state.leadingComments = []; + } + } else { + for (i = 0; i < this.state.leadingComments.length; i++) { + if (this.state.leadingComments[i].end > node.start) { + break; + } + } + + const leadingComments = this.state.leadingComments.slice(0, i); + + if (leadingComments.length) { + node.leadingComments = leadingComments; + } + + trailingComments = this.state.leadingComments.slice(i); + + if (trailingComments.length === 0) { + trailingComments = null; + } + } + } + + this.state.commentPreviousNode = node; + + if (trailingComments) { + if (trailingComments.length && trailingComments[0].start >= node.start && last(trailingComments).end <= node.end) { + node.innerComments = trailingComments; + } else { + node.trailingComments = trailingComments; + } + } + + stack.push(node); + } + +} + +class LocationParser extends CommentsParser { + getLocationForPosition(pos) { + let loc; + if (pos === this.state.start) loc = this.state.startLoc;else if (pos === this.state.lastTokStart) loc = this.state.lastTokStartLoc;else if (pos === this.state.end) loc = this.state.endLoc;else if (pos === this.state.lastTokEnd) loc = this.state.lastTokEndLoc;else loc = getLineInfo(this.input, pos); + return loc; + } + + raise(pos, message, { + missingPluginNames, + code + } = {}) { + const loc = this.getLocationForPosition(pos); + message += ` (${loc.line}:${loc.column})`; + const err = new SyntaxError(message); + err.pos = pos; + err.loc = loc; + + if (missingPluginNames) { + err.missingPlugin = missingPluginNames; + } + + if (code !== undefined) { + err.code = code; + } + + throw err; + } + +} + +class State { + constructor() { + this.potentialArrowAt = -1; + this.noArrowAt = []; + this.noArrowParamsConversionAt = []; + this.commaAfterSpreadAt = -1; + this.inParameters = false; + this.maybeInArrowParameters = false; + this.inPipeline = false; + this.inType = false; + this.noAnonFunctionType = false; + this.inPropertyName = false; + this.inClassProperty = false; + this.hasFlowComment = false; + this.isIterator = false; + this.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + this.classLevel = 0; + this.labels = []; + this.decoratorStack = [[]]; + this.yieldPos = 0; + this.awaitPos = 0; + this.tokens = []; + this.comments = []; + this.trailingComments = []; + this.leadingComments = []; + this.commentStack = []; + this.commentPreviousNode = null; + this.pos = 0; + this.lineStart = 0; + this.type = types.eof; + this.value = null; + this.start = 0; + this.end = 0; + this.lastTokEndLoc = null; + this.lastTokStartLoc = null; + this.lastTokStart = 0; + this.lastTokEnd = 0; + this.context = [types$1.braceStatement]; + this.exprAllowed = true; + this.containsEsc = false; + this.containsOctal = false; + this.octalPosition = null; + this.exportedIdentifiers = []; + this.invalidTemplateEscapePosition = null; + } + + init(options) { + this.strict = options.strictMode === false ? false : options.sourceType === "module"; + this.curLine = options.startLine; + this.startLoc = this.endLoc = this.curPosition(); + } + + curPosition() { + return new Position(this.curLine, this.pos - this.lineStart); + } + + clone(skipArrays) { + const state = new State(); + const keys = Object.keys(this); + + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + let val = this[key]; + + if (!skipArrays && Array.isArray(val)) { + val = val.slice(); + } + + state[key] = val; + } + + return state; + } + +} + +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const VALID_REGEX_FLAGS = new Set(["g", "m", "s", "i", "y", "u"]); +const forbiddenNumericSeparatorSiblings = { + decBinOct: [46, 66, 69, 79, 95, 98, 101, 111], + hex: [46, 88, 95, 120] +}; +const allowedNumericSeparatorSiblings = {}; +allowedNumericSeparatorSiblings.bin = [48, 49]; +allowedNumericSeparatorSiblings.oct = [...allowedNumericSeparatorSiblings.bin, 50, 51, 52, 53, 54, 55]; +allowedNumericSeparatorSiblings.dec = [...allowedNumericSeparatorSiblings.oct, 56, 57]; +allowedNumericSeparatorSiblings.hex = [...allowedNumericSeparatorSiblings.dec, 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102]; +class Token { + constructor(state) { + this.type = state.type; + this.value = state.value; + this.start = state.start; + this.end = state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); + } + +} +class Tokenizer extends LocationParser { + constructor(options, input) { + super(); + this.state = new State(); + this.state.init(options); + this.input = input; + this.length = input.length; + this.isLookahead = false; + } + + next() { + if (this.options.tokens && !this.isLookahead) { + this.state.tokens.push(new Token(this.state)); + } + + this.state.lastTokEnd = this.state.end; + this.state.lastTokStart = this.state.start; + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + } + + eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + } + + match(type) { + return this.state.type === type; + } + + lookahead() { + const old = this.state; + this.state = old.clone(true); + this.isLookahead = true; + this.next(); + this.isLookahead = false; + const curr = this.state; + this.state = old; + return curr; + } + + setStrict(strict) { + this.state.strict = strict; + if (!this.match(types.num) && !this.match(types.string)) return; + this.state.pos = this.state.start; + + while (this.state.pos < this.state.lineStart) { + this.state.lineStart = this.input.lastIndexOf("\n", this.state.lineStart - 2) + 1; + --this.state.curLine; + } + + this.nextToken(); + } + + curContext() { + return this.state.context[this.state.context.length - 1]; + } + + nextToken() { + const curContext = this.curContext(); + if (!curContext || !curContext.preserveSpace) this.skipSpace(); + this.state.containsOctal = false; + this.state.octalPosition = null; + this.state.start = this.state.pos; + this.state.startLoc = this.state.curPosition(); + + if (this.state.pos >= this.length) { + this.finishToken(types.eof); + return; + } + + if (curContext.override) { + curContext.override(this); + } else { + this.getTokenFromCode(this.input.codePointAt(this.state.pos)); + } + } + + pushComment(block, text, start, end, startLoc, endLoc) { + const comment = { + type: block ? "CommentBlock" : "CommentLine", + value: text, + start: start, + end: end, + loc: new SourceLocation(startLoc, endLoc) + }; + if (this.options.tokens) this.state.tokens.push(comment); + this.state.comments.push(comment); + this.addComment(comment); + } + + skipBlockComment() { + const startLoc = this.state.curPosition(); + const start = this.state.pos; + const end = this.input.indexOf("*/", this.state.pos += 2); + if (end === -1) this.raise(this.state.pos - 2, "Unterminated comment"); + this.state.pos = end + 2; + lineBreakG.lastIndex = start; + let match; + + while ((match = lineBreakG.exec(this.input)) && match.index < this.state.pos) { + ++this.state.curLine; + this.state.lineStart = match.index + match[0].length; + } + + if (this.isLookahead) return; + this.pushComment(true, this.input.slice(start + 2, end), start, this.state.pos, startLoc, this.state.curPosition()); + } + + skipLineComment(startSkip) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let ch = this.input.charCodeAt(this.state.pos += startSkip); + + if (this.state.pos < this.length) { + while (ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233 && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + } + + if (this.isLookahead) return; + this.pushComment(false, this.input.slice(start + startSkip, this.state.pos), start, this.state.pos, startLoc, this.state.curPosition()); + } + + skipSpace() { + loop: while (this.state.pos < this.length) { + const ch = this.input.charCodeAt(this.state.pos); + + switch (ch) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + + case 10: + case 8232: + case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + this.skipBlockComment(); + break; + + case 47: + this.skipLineComment(2); + break; + + default: + break loop; + } + + break; + + default: + if (isWhitespace(ch)) { + ++this.state.pos; + } else { + break loop; + } + + } + } + } + + finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + const prevType = this.state.type; + this.state.type = type; + this.state.value = val; + if (!this.isLookahead) this.updateContext(prevType); + } + + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) { + return; + } + + const nextPos = this.state.pos + 1; + const next = this.input.charCodeAt(nextPos); + + if (next >= 48 && next <= 57) { + this.raise(this.state.pos, "Unexpected digit after hash token"); + } + + if ((this.hasPlugin("classPrivateProperties") || this.hasPlugin("classPrivateMethods")) && this.state.classLevel > 0) { + ++this.state.pos; + this.finishToken(types.hash); + return; + } else if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + this.finishOp(types.hash, 1); + } else { + this.raise(this.state.pos, "Unexpected character '#'"); + } + } + + readToken_dot() { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next >= 48 && next <= 57) { + this.readNumber(true); + return; + } + + const next2 = this.input.charCodeAt(this.state.pos + 2); + + if (next === 46 && next2 === 46) { + this.state.pos += 3; + this.finishToken(types.ellipsis); + } else { + ++this.state.pos; + this.finishToken(types.dot); + } + } + + readToken_slash() { + if (this.state.exprAllowed && !this.state.inType) { + ++this.state.pos; + this.readRegexp(); + return; + } + + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 61) { + this.finishOp(types.assign, 2); + } else { + this.finishOp(types.slash, 1); + } + } + + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) return false; + const start = this.state.pos; + this.state.pos += 1; + let ch = this.input.charCodeAt(this.state.pos); + if (ch !== 33) return false; + + while (ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233 && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + + const value = this.input.slice(start + 2, this.state.pos); + this.finishToken(types.interpreterDirective, value); + return true; + } + + readToken_mult_modulo(code) { + let type = code === 42 ? types.star : types.modulo; + let width = 1; + let next = this.input.charCodeAt(this.state.pos + 1); + const exprAllowed = this.state.exprAllowed; + + if (code === 42 && next === 42) { + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = types.exponent; + } + + if (next === 61 && !exprAllowed) { + width++; + type = types.assign; + } + + this.finishOp(type, width); + } + + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === code) { + if (this.input.charCodeAt(this.state.pos + 2) === 61) { + this.finishOp(types.assign, 3); + } else { + this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2); + } + + return; + } + + if (code === 124) { + if (next === 62) { + this.finishOp(types.pipeline, 2); + return; + } + } + + if (next === 61) { + this.finishOp(types.assign, 2); + return; + } + + this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1); + } + + readToken_caret() { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 61) { + this.finishOp(types.assign, 2); + } else { + this.finishOp(types.bitwiseXOR, 1); + } + } + + readToken_plus_min(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === code) { + if (next === 45 && !this.inModule && this.input.charCodeAt(this.state.pos + 2) === 62 && (this.state.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.pos)))) { + this.skipLineComment(3); + this.skipSpace(); + this.nextToken(); + return; + } + + this.finishOp(types.incDec, 2); + return; + } + + if (next === 61) { + this.finishOp(types.assign, 2); + } else { + this.finishOp(types.plusMin, 1); + } + } + + readToken_lt_gt(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + let size = 1; + + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.state.pos + 2) === 62 ? 3 : 2; + + if (this.input.charCodeAt(this.state.pos + size) === 61) { + this.finishOp(types.assign, size + 1); + return; + } + + this.finishOp(types.bitShift, size); + return; + } + + if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.state.pos + 2) === 45 && this.input.charCodeAt(this.state.pos + 3) === 45) { + this.skipLineComment(4); + this.skipSpace(); + this.nextToken(); + return; + } + + if (next === 61) { + size = 2; + } + + this.finishOp(types.relational, size); + } + + readToken_eq_excl(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 61) { + this.finishOp(types.equality, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + + if (code === 61 && next === 62) { + this.state.pos += 2; + this.finishToken(types.arrow); + return; + } + + this.finishOp(code === 61 ? types.eq : types.bang, 1); + } + + readToken_question() { + const next = this.input.charCodeAt(this.state.pos + 1); + const next2 = this.input.charCodeAt(this.state.pos + 2); + + if (next === 63 && !this.state.inType) { + if (next2 === 61) { + this.finishOp(types.assign, 3); + } else { + this.finishOp(types.nullishCoalescing, 2); + } + } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { + this.state.pos += 2; + this.finishToken(types.questionDot); + } else { + ++this.state.pos; + this.finishToken(types.question); + } + } + + getTokenFromCode(code) { + switch (code) { + case 46: + this.readToken_dot(); + return; + + case 40: + ++this.state.pos; + this.finishToken(types.parenL); + return; + + case 41: + ++this.state.pos; + this.finishToken(types.parenR); + return; + + case 59: + ++this.state.pos; + this.finishToken(types.semi); + return; + + case 44: + ++this.state.pos; + this.finishToken(types.comma); + return; + + case 91: + ++this.state.pos; + this.finishToken(types.bracketL); + return; + + case 93: + ++this.state.pos; + this.finishToken(types.bracketR); + return; + + case 123: + ++this.state.pos; + this.finishToken(types.braceL); + return; + + case 125: + ++this.state.pos; + this.finishToken(types.braceR); + return; + + case 58: + if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { + this.finishOp(types.doubleColon, 2); + } else { + ++this.state.pos; + this.finishToken(types.colon); + } + + return; + + case 63: + this.readToken_question(); + return; + + case 96: + ++this.state.pos; + this.finishToken(types.backQuote); + return; + + case 48: + { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 120 || next === 88) { + this.readRadixNumber(16); + return; + } + + if (next === 111 || next === 79) { + this.readRadixNumber(8); + return; + } + + if (next === 98 || next === 66) { + this.readRadixNumber(2); + return; + } + } + + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + + case 34: + case 39: + this.readString(code); + return; + + case 47: + this.readToken_slash(); + return; + + case 37: + case 42: + this.readToken_mult_modulo(code); + return; + + case 124: + case 38: + this.readToken_pipe_amp(code); + return; + + case 94: + this.readToken_caret(); + return; + + case 43: + case 45: + this.readToken_plus_min(code); + return; + + case 60: + case 62: + this.readToken_lt_gt(code); + return; + + case 61: + case 33: + this.readToken_eq_excl(code); + return; + + case 126: + this.finishOp(types.tilde, 1); + return; + + case 64: + ++this.state.pos; + this.finishToken(types.at); + return; + + case 35: + this.readToken_numberSign(); + return; + + case 92: + this.readWord(); + return; + + default: + if (isIdentifierStart(code)) { + this.readWord(); + return; + } + + } + + this.raise(this.state.pos, `Unexpected character '${String.fromCodePoint(code)}'`); + } + + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + + readRegexp() { + const start = this.state.pos; + let escaped, inClass; + + for (;;) { + if (this.state.pos >= this.length) { + this.raise(start, "Unterminated regular expression"); + } + + const ch = this.input.charAt(this.state.pos); + + if (lineBreak.test(ch)) { + this.raise(start, "Unterminated regular expression"); + } + + if (escaped) { + escaped = false; + } else { + if (ch === "[") { + inClass = true; + } else if (ch === "]" && inClass) { + inClass = false; + } else if (ch === "/" && !inClass) { + break; + } + + escaped = ch === "\\"; + } + + ++this.state.pos; + } + + const content = this.input.slice(start, this.state.pos); + ++this.state.pos; + let mods = ""; + + while (this.state.pos < this.length) { + const char = this.input[this.state.pos]; + const charCode = this.input.codePointAt(this.state.pos); + + if (VALID_REGEX_FLAGS.has(char)) { + if (mods.indexOf(char) > -1) { + this.raise(this.state.pos + 1, "Duplicate regular expression flag"); + } + + ++this.state.pos; + mods += char; + } else if (isIdentifierChar(charCode) || charCode === 92) { + this.raise(this.state.pos + 1, "Invalid regular expression flag"); + } else { + break; + } + } + + this.finishToken(types.regexp, { + pattern: content, + flags: mods + }); + } + + readInt(radix, len) { + const start = this.state.pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const allowedSiblings = radix === 16 ? allowedNumericSeparatorSiblings.hex : radix === 10 ? allowedNumericSeparatorSiblings.dec : radix === 8 ? allowedNumericSeparatorSiblings.oct : allowedNumericSeparatorSiblings.bin; + let total = 0; + + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = this.input.charCodeAt(this.state.pos); + let val; + + if (this.hasPlugin("numericSeparator")) { + const prev = this.input.charCodeAt(this.state.pos - 1); + const next = this.input.charCodeAt(this.state.pos + 1); + + if (code === 95) { + if (allowedSiblings.indexOf(next) === -1) { + this.raise(this.state.pos, "Invalid or unexpected token"); + } + + if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) { + this.raise(this.state.pos, "Invalid or unexpected token"); + } + + ++this.state.pos; + continue; + } + } + + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + + if (val >= radix) break; + ++this.state.pos; + total = total * radix + val; + } + + if (this.state.pos === start || len != null && this.state.pos - start !== len) { + return null; + } + + return total; + } + + readRadixNumber(radix) { + const start = this.state.pos; + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + + if (val == null) { + this.raise(this.state.start + 2, "Expected number in radix " + radix); + } + + if (this.hasPlugin("bigInt")) { + if (this.input.charCodeAt(this.state.pos) === 110) { + ++this.state.pos; + isBigInt = true; + } + } + + if (isIdentifierStart(this.input.codePointAt(this.state.pos))) { + this.raise(this.state.pos, "Identifier directly after number"); + } + + if (isBigInt) { + const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(types.bigint, str); + return; + } + + this.finishToken(types.num, val); + } + + readNumber(startsWithDot) { + const start = this.state.pos; + let isFloat = false; + let isBigInt = false; + + if (!startsWithDot && this.readInt(10) === null) { + this.raise(start, "Invalid number"); + } + + let octal = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + + if (octal) { + if (this.state.strict) { + this.raise(start, "Legacy octal literals are not allowed in strict mode"); + } + + if (/[89]/.test(this.input.slice(start, this.state.pos))) { + octal = false; + } + } + + let next = this.input.charCodeAt(this.state.pos); + + if (next === 46 && !octal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + + if ((next === 69 || next === 101) && !octal) { + next = this.input.charCodeAt(++this.state.pos); + + if (next === 43 || next === 45) { + ++this.state.pos; + } + + if (this.readInt(10) === null) this.raise(start, "Invalid number"); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + + if (this.hasPlugin("bigInt")) { + if (next === 110) { + if (isFloat || octal) this.raise(start, "Invalid BigIntLiteral"); + ++this.state.pos; + isBigInt = true; + } + } + + if (isIdentifierStart(this.input.codePointAt(this.state.pos))) { + this.raise(this.state.pos, "Identifier directly after number"); + } + + const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + + if (isBigInt) { + this.finishToken(types.bigint, str); + return; + } + + const val = octal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(types.num, val); + } + + readCodePoint(throwOnInvalid) { + const ch = this.input.charCodeAt(this.state.pos); + let code; + + if (ch === 123) { + const codePos = ++this.state.pos; + code = this.readHexChar(this.input.indexOf("}", this.state.pos) - this.state.pos, throwOnInvalid); + ++this.state.pos; + + if (code === null) { + --this.state.invalidTemplateEscapePosition; + } else if (code > 0x10ffff) { + if (throwOnInvalid) { + this.raise(codePos, "Code point out of bounds"); + } else { + this.state.invalidTemplateEscapePosition = codePos - 2; + return null; + } + } + } else { + code = this.readHexChar(4, throwOnInvalid); + } + + return code; + } + + readString(quote) { + let out = "", + chunkStart = ++this.state.pos; + + for (;;) { + if (this.state.pos >= this.length) { + this.raise(this.state.start, "Unterminated string constant"); + } + + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + + if (ch === 92) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.readEscapedChar(false); + chunkStart = this.state.pos; + } else if (ch === 8232 || ch === 8233) { + ++this.state.pos; + ++this.state.curLine; + } else if (isNewLine(ch)) { + this.raise(this.state.start, "Unterminated string constant"); + } else { + ++this.state.pos; + } + } + + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(types.string, out); + } + + readTmplToken() { + let out = "", + chunkStart = this.state.pos, + containsInvalid = false; + + for (;;) { + if (this.state.pos >= this.length) { + this.raise(this.state.start, "Unterminated template"); + } + + const ch = this.input.charCodeAt(this.state.pos); + + if (ch === 96 || ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) { + if (this.state.pos === this.state.start && this.match(types.template)) { + if (ch === 36) { + this.state.pos += 2; + this.finishToken(types.dollarBraceL); + return; + } else { + ++this.state.pos; + this.finishToken(types.backQuote); + return; + } + } + + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(types.template, containsInvalid ? null : out); + return; + } + + if (ch === 92) { + out += this.input.slice(chunkStart, this.state.pos); + const escaped = this.readEscapedChar(true); + + if (escaped === null) { + containsInvalid = true; + } else { + out += escaped; + } + + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + ++this.state.pos; + + switch (ch) { + case 13: + if (this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + } + + case 10: + out += "\n"; + break; + + default: + out += String.fromCharCode(ch); + break; + } + + ++this.state.curLine; + this.state.lineStart = this.state.pos; + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } + + readEscapedChar(inTemplate) { + const throwOnInvalid = !inTemplate; + const ch = this.input.charCodeAt(++this.state.pos); + ++this.state.pos; + + switch (ch) { + case 110: + return "\n"; + + case 114: + return "\r"; + + case 120: + { + const code = this.readHexChar(2, throwOnInvalid); + return code === null ? null : String.fromCharCode(code); + } + + case 117: + { + const code = this.readCodePoint(throwOnInvalid); + return code === null ? null : String.fromCodePoint(code); + } + + case 116: + return "\t"; + + case 98: + return "\b"; + + case 118: + return "\u000b"; + + case 102: + return "\f"; + + case 13: + if (this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + } + + case 10: + this.state.lineStart = this.state.pos; + ++this.state.curLine; + + case 8232: + case 8233: + return ""; + + default: + if (ch >= 48 && ch <= 55) { + const codePos = this.state.pos - 1; + let octalStr = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/)[0]; + let octal = parseInt(octalStr, 8); + + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + + this.state.pos += octalStr.length - 1; + const next = this.input.charCodeAt(this.state.pos); + + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + this.state.invalidTemplateEscapePosition = codePos; + return null; + } else if (this.state.strict) { + this.raise(codePos, "Octal literal in strict mode"); + } else if (!this.state.containsOctal) { + this.state.containsOctal = true; + this.state.octalPosition = codePos; + } + } + + return String.fromCharCode(octal); + } + + return String.fromCharCode(ch); + } + } + + readHexChar(len, throwOnInvalid) { + const codePos = this.state.pos; + const n = this.readInt(16, len); + + if (n === null) { + if (throwOnInvalid) { + this.raise(codePos, "Bad character escape sequence"); + } else { + this.state.pos = codePos - 1; + this.state.invalidTemplateEscapePosition = codePos - 1; + } + } + + return n; + } + + readWord1() { + let word = ""; + this.state.containsEsc = false; + const start = this.state.pos; + let chunkStart = this.state.pos; + + while (this.state.pos < this.length) { + const ch = this.input.codePointAt(this.state.pos); + + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (this.state.isIterator && ch === 64) { + ++this.state.pos; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.pos; + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(this.state.pos, "Expecting Unicode escape sequence \\uXXXX"); + } + + ++this.state.pos; + const esc = this.readCodePoint(true); + + if (!identifierCheck(esc, true)) { + this.raise(escStart, "Invalid Unicode escape"); + } + + word += String.fromCodePoint(esc); + chunkStart = this.state.pos; + } else { + break; + } + } + + return word + this.input.slice(chunkStart, this.state.pos); + } + + isIterator(word) { + return word === "@@iterator" || word === "@@asyncIterator"; + } + + readWord() { + const word = this.readWord1(); + const type = keywords.get(word) || types.name; + + if (type.keyword && this.state.containsEsc) { + this.raise(this.state.pos, `Escape sequence in keyword ${word}`); + } + + if (this.state.isIterator && (!this.isIterator(word) || !this.state.inType)) { + this.raise(this.state.pos, `Invalid identifier ${word}`); + } + + this.finishToken(type, word); + } + + braceIsBlock(prevType) { + const parent = this.curContext(); + + if (parent === types$1.functionExpression || parent === types$1.functionStatement) { + return true; + } + + if (prevType === types.colon && (parent === types$1.braceStatement || parent === types$1.braceExpression)) { + return !parent.isExpr; + } + + if (prevType === types._return || prevType === types.name && this.state.exprAllowed) { + return lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start)); + } + + if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) { + return true; + } + + if (prevType === types.braceL) { + return parent === types$1.braceStatement; + } + + if (prevType === types._var || prevType === types._const || prevType === types.name) { + return false; + } + + if (prevType === types.relational) { + return true; + } + + return !this.state.exprAllowed; + } + + updateContext(prevType) { + const type = this.state.type; + let update; + + if (type.keyword && (prevType === types.dot || prevType === types.questionDot)) { + this.state.exprAllowed = false; + } else if (update = type.updateContext) { + update.call(this, prevType); + } else { + this.state.exprAllowed = type.beforeExpr; + } + } + +} + +const literal = /^('|")((?:\\?.)*?)\1/; +class UtilParser extends Tokenizer { + addExtra(node, key, val) { + if (!node) return; + const extra = node.extra = node.extra || {}; + extra[key] = val; + } + + isRelational(op) { + return this.match(types.relational) && this.state.value === op; + } + + isLookaheadRelational(op) { + const l = this.lookahead(); + return l.type === types.relational && l.value === op; + } + + expectRelational(op) { + if (this.isRelational(op)) { + this.next(); + } else { + this.unexpected(null, types.relational); + } + } + + eatRelational(op) { + if (this.isRelational(op)) { + this.next(); + return true; + } + + return false; + } + + isContextual(name) { + return this.match(types.name) && this.state.value === name && !this.state.containsEsc; + } + + isLookaheadContextual(name) { + const l = this.lookahead(); + return l.type === types.name && l.value === name; + } + + eatContextual(name) { + return this.isContextual(name) && this.eat(types.name); + } + + expectContextual(name, message) { + if (!this.eatContextual(name)) this.unexpected(null, message); + } + + canInsertSemicolon() { + return this.match(types.eof) || this.match(types.braceR) || this.hasPrecedingLineBreak(); + } + + hasPrecedingLineBreak() { + return lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start)); + } + + isLineTerminator() { + return this.eat(types.semi) || this.canInsertSemicolon(); + } + + semicolon() { + if (!this.isLineTerminator()) this.unexpected(null, types.semi); + } + + expect(type, pos) { + this.eat(type) || this.unexpected(pos, type); + } + + assertNoSpace(message = "Unexpected space.") { + if (this.state.start > this.state.lastTokEnd) { + this.raise(this.state.lastTokEnd, message); + } + } + + unexpected(pos, messageOrType = "Unexpected token") { + if (typeof messageOrType !== "string") { + messageOrType = `Unexpected token, expected "${messageOrType.label}"`; + } + + throw this.raise(pos != null ? pos : this.state.start, messageOrType); + } + + expectPlugin(name, pos) { + if (!this.hasPlugin(name)) { + throw this.raise(pos != null ? pos : this.state.start, `This experimental syntax requires enabling the parser plugin: '${name}'`, { + missingPluginNames: [name] + }); + } + + return true; + } + + expectOnePlugin(names, pos) { + if (!names.some(n => this.hasPlugin(n))) { + throw this.raise(pos != null ? pos : this.state.start, `This experimental syntax requires enabling one of the following parser plugin(s): '${names.join(", ")}'`, { + missingPluginNames: names + }); + } + } + + checkYieldAwaitInDefaultParams() { + if (this.state.yieldPos && (!this.state.awaitPos || this.state.yieldPos < this.state.awaitPos)) { + this.raise(this.state.yieldPos, "Yield cannot be used as name inside a generator function"); + } + + if (this.state.awaitPos) { + this.raise(this.state.awaitPos, "Await cannot be used as name inside an async function"); + } + } + + strictDirective(start) { + for (;;) { + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + const match = literal.exec(this.input.slice(start)); + if (!match) break; + if (match[2] === "use strict") return true; + start += match[0].length; + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + + if (this.input[start] === ";") { + start++; + } + } + + return false; + } + +} + +class Node { + constructor(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new SourceLocation(loc); + if (parser && parser.options.ranges) this.range = [pos, 0]; + if (parser && parser.filename) this.loc.filename = parser.filename; + } + + __clone() { + const newNode = new Node(); + const keys = Object.keys(this); + + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + + if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { + newNode[key] = this[key]; + } + } + + return newNode; + } + +} + +class NodeUtils extends UtilParser { + startNode() { + return new Node(this, this.state.start, this.state.startLoc); + } + + startNodeAt(pos, loc) { + return new Node(this, pos, loc); + } + + startNodeAtNode(type) { + return this.startNodeAt(type.start, type.loc.start); + } + + finishNode(node, type) { + return this.finishNodeAt(node, type, this.state.lastTokEnd, this.state.lastTokEndLoc); + } + + finishNodeAt(node, type, pos, loc) { + + node.type = type; + node.end = pos; + node.loc.end = loc; + if (this.options.ranges) node.range[1] = pos; + this.processComment(node); + return node; + } + + resetStartLocation(node, start, startLoc) { + node.start = start; + node.loc.start = startLoc; + if (this.options.ranges) node.range[0] = start; + } + + resetEndLocation(node, end = this.state.lastTokEnd, endLoc = this.state.lastTokEndLoc) { + node.end = end; + node.loc.end = endLoc; + if (this.options.ranges) node.range[1] = end; + } + + resetStartLocationFromNode(node, locationNode) { + this.resetStartLocation(node, locationNode.start, locationNode.loc.start); + } + +} + +class LValParser extends NodeUtils { + toAssignable(node, isBinding, contextDescription) { + if (node) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + break; + + case "ObjectExpression": + node.type = "ObjectPattern"; + + for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { + const prop = node.properties[i]; + const isLast = i === last; + this.toAssignableObjectExpressionProp(prop, isBinding, isLast); + } + + break; + + case "ObjectProperty": + this.toAssignable(node.value, isBinding, contextDescription); + break; + + case "SpreadElement": + { + this.checkToRestConversion(node); + node.type = "RestElement"; + const arg = node.argument; + this.toAssignable(arg, isBinding, contextDescription); + break; + } + + case "ArrayExpression": + node.type = "ArrayPattern"; + this.toAssignableList(node.elements, isBinding, contextDescription); + break; + + case "AssignmentExpression": + if (node.operator === "=") { + node.type = "AssignmentPattern"; + delete node.operator; + } else { + this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); + } + + break; + + case "ParenthesizedExpression": + node.expression = this.toAssignable(node.expression, isBinding, contextDescription); + break; + + case "MemberExpression": + if (!isBinding) break; + + default: + { + const message = "Invalid left-hand side" + (contextDescription ? " in " + contextDescription : "expression"); + this.raise(node.start, message); + } + } + } + + return node; + } + + toAssignableObjectExpressionProp(prop, isBinding, isLast) { + if (prop.type === "ObjectMethod") { + const error = prop.kind === "get" || prop.kind === "set" ? "Object pattern can't contain getter or setter" : "Object pattern can't contain methods"; + this.raise(prop.key.start, error); + } else if (prop.type === "SpreadElement" && !isLast) { + this.raiseRestNotLast(prop.start); + } else { + this.toAssignable(prop, isBinding, "object destructuring pattern"); + } + } + + toAssignableList(exprList, isBinding, contextDescription) { + let end = exprList.length; + + if (end) { + const last = exprList[end - 1]; + + if (last && last.type === "RestElement") { + --end; + } else if (last && last.type === "SpreadElement") { + last.type = "RestElement"; + const arg = last.argument; + this.toAssignable(arg, isBinding, contextDescription); + + if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern" && arg.type !== "ObjectPattern") { + this.unexpected(arg.start); + } + + --end; + } + } + + for (let i = 0; i < end; i++) { + const elt = exprList[i]; + + if (elt) { + this.toAssignable(elt, isBinding, contextDescription); + + if (elt.type === "RestElement") { + this.raiseRestNotLast(elt.start); + } + } + } + + return exprList; + } + + toReferencedList(exprList, isParenthesizedExpr) { + return exprList; + } + + toReferencedListDeep(exprList, isParenthesizedExpr) { + this.toReferencedList(exprList, isParenthesizedExpr); + + for (let _i = 0; _i < exprList.length; _i++) { + const expr = exprList[_i]; + + if (expr && expr.type === "ArrayExpression") { + this.toReferencedListDeep(expr.elements); + } + } + + return exprList; + } + + parseSpread(refShorthandDefaultPos, refNeedsArrowPos) { + const node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssign(false, refShorthandDefaultPos, undefined, refNeedsArrowPos); + + if (this.state.commaAfterSpreadAt === -1 && this.match(types.comma)) { + this.state.commaAfterSpreadAt = this.state.start; + } + + return this.finishNode(node, "SpreadElement"); + } + + parseRestBinding() { + const node = this.startNode(); + this.next(); + node.argument = this.parseBindingAtom(); + return this.finishNode(node, "RestElement"); + } + + parseBindingAtom() { + switch (this.state.type) { + case types.bracketL: + { + const node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(types.bracketR, true); + return this.finishNode(node, "ArrayPattern"); + } + + case types.braceL: + return this.parseObj(true); + } + + return this.parseIdentifier(); + } + + parseBindingList(close, allowEmpty, allowModifiers) { + const elts = []; + let first = true; + + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(types.comma); + } + + if (allowEmpty && this.match(types.comma)) { + elts.push(null); + } else if (this.eat(close)) { + break; + } else if (this.match(types.ellipsis)) { + elts.push(this.parseAssignableListItemTypes(this.parseRestBinding())); + this.checkCommaAfterRest(); + this.expect(close); + break; + } else { + const decorators = []; + + if (this.match(types.at) && this.hasPlugin("decorators")) { + this.raise(this.state.start, "Stage 2 decorators cannot be used to decorate parameters"); + } + + while (this.match(types.at)) { + decorators.push(this.parseDecorator()); + } + + elts.push(this.parseAssignableListItem(allowModifiers, decorators)); + } + } + + return elts; + } + + parseAssignableListItem(allowModifiers, decorators) { + const left = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(left); + const elt = this.parseMaybeDefault(left.start, left.loc.start, left); + + if (decorators.length) { + left.decorators = decorators; + } + + return elt; + } + + parseAssignableListItemTypes(param) { + return param; + } + + parseMaybeDefault(startPos, startLoc, left) { + startLoc = startLoc || this.state.startLoc; + startPos = startPos || this.state.start; + left = left || this.parseBindingAtom(); + if (!this.eat(types.eq)) return left; + const node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.right = this.parseMaybeAssign(); + return this.finishNode(node, "AssignmentPattern"); + } + + checkLVal(expr, bindingType = BIND_NONE, checkClashes, contextDescription) { + switch (expr.type) { + case "Identifier": + if (this.state.strict && isStrictBindReservedWord(expr.name, this.inModule)) { + this.raise(expr.start, `${bindingType === BIND_NONE ? "Assigning to" : "Binding"} '${expr.name}' in strict mode`); + } + + if (checkClashes) { + const key = `_${expr.name}`; + + if (checkClashes[key]) { + this.raise(expr.start, "Argument name clash"); + } else { + checkClashes[key] = true; + } + } + + if (!(bindingType & BIND_NONE)) { + this.scope.declareName(expr.name, bindingType, expr.start); + } + + break; + + case "MemberExpression": + if (bindingType !== BIND_NONE) { + this.raise(expr.start, "Binding member expression"); + } + + break; + + case "ObjectPattern": + for (let _i2 = 0, _expr$properties = expr.properties; _i2 < _expr$properties.length; _i2++) { + let prop = _expr$properties[_i2]; + if (prop.type === "ObjectProperty") prop = prop.value; + this.checkLVal(prop, bindingType, checkClashes, "object destructuring pattern"); + } + + break; + + case "ArrayPattern": + for (let _i3 = 0, _expr$elements = expr.elements; _i3 < _expr$elements.length; _i3++) { + const elem = _expr$elements[_i3]; + + if (elem) { + this.checkLVal(elem, bindingType, checkClashes, "array destructuring pattern"); + } + } + + break; + + case "AssignmentPattern": + this.checkLVal(expr.left, bindingType, checkClashes, "assignment pattern"); + break; + + case "RestElement": + this.checkLVal(expr.argument, bindingType, checkClashes, "rest element"); + break; + + case "ParenthesizedExpression": + this.checkLVal(expr.expression, bindingType, checkClashes, "parenthesized expression"); + break; + + default: + { + const message = (bindingType === BIND_NONE ? "Invalid" : "Binding invalid") + " left-hand side" + (contextDescription ? " in " + contextDescription : "expression"); + this.raise(expr.start, message); + } + } + } + + checkToRestConversion(node) { + if (node.argument.type !== "Identifier" && node.argument.type !== "MemberExpression") { + this.raise(node.argument.start, "Invalid rest operator's argument"); + } + } + + checkCommaAfterRest() { + if (this.match(types.comma)) { + this.raiseRestNotLast(this.state.start); + } + } + + checkCommaAfterRestFromSpread() { + if (this.state.commaAfterSpreadAt > -1) { + this.raiseRestNotLast(this.state.commaAfterSpreadAt); + } + } + + raiseRestNotLast(pos) { + this.raise(pos, `Rest element must be last element`); + } + +} + +const unwrapParenthesizedExpression = node => { + return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; +}; + +class ExpressionParser extends LValParser { + checkPropClash(prop, propHash) { + if (prop.type === "SpreadElement" || prop.computed || prop.kind || prop.shorthand) { + return; + } + + const key = prop.key; + const name = key.type === "Identifier" ? key.name : String(key.value); + + if (name === "__proto__") { + if (propHash.proto) { + this.raise(key.start, "Redefinition of __proto__ property"); + } + + propHash.proto = true; + } + } + + getExpression() { + this.scope.enter(SCOPE_PROGRAM); + this.nextToken(); + const expr = this.parseExpression(); + + if (!this.match(types.eof)) { + this.unexpected(); + } + + expr.comments = this.state.comments; + return expr; + } + + parseExpression(noIn, refShorthandDefaultPos) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const expr = this.parseMaybeAssign(noIn, refShorthandDefaultPos); + + if (this.match(types.comma)) { + const node = this.startNodeAt(startPos, startLoc); + node.expressions = [expr]; + + while (this.eat(types.comma)) { + node.expressions.push(this.parseMaybeAssign(noIn, refShorthandDefaultPos)); + } + + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + + return expr; + } + + parseMaybeAssign(noIn, refShorthandDefaultPos, afterLeftParse, refNeedsArrowPos) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + + if (this.isContextual("yield")) { + if (this.scope.inGenerator) { + let left = this.parseYield(noIn); + + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startPos, startLoc); + } + + return left; + } else { + this.state.exprAllowed = false; + } + } + + const oldCommaAfterSpreadAt = this.state.commaAfterSpreadAt; + this.state.commaAfterSpreadAt = -1; + let failOnShorthandAssign; + + if (refShorthandDefaultPos) { + failOnShorthandAssign = false; + } else { + refShorthandDefaultPos = { + start: 0 + }; + failOnShorthandAssign = true; + } + + if (this.match(types.parenL) || this.match(types.name)) { + this.state.potentialArrowAt = this.state.start; + } + + let left = this.parseMaybeConditional(noIn, refShorthandDefaultPos, refNeedsArrowPos); + + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startPos, startLoc); + } + + if (this.state.type.isAssign) { + const node = this.startNodeAt(startPos, startLoc); + const operator = this.state.value; + node.operator = operator; + + if (operator === "??=") { + this.expectPlugin("nullishCoalescingOperator"); + this.expectPlugin("logicalAssignment"); + } + + if (operator === "||=" || operator === "&&=") { + this.expectPlugin("logicalAssignment"); + } + + node.left = this.match(types.eq) ? this.toAssignable(left, undefined, "assignment expression") : left; + refShorthandDefaultPos.start = 0; + this.checkLVal(left, undefined, undefined, "assignment expression"); + const maybePattern = unwrapParenthesizedExpression(left); + let patternErrorMsg; + + if (maybePattern.type === "ObjectPattern") { + patternErrorMsg = "`({a}) = 0` use `({a} = 0)`"; + } else if (maybePattern.type === "ArrayPattern") { + patternErrorMsg = "`([a]) = 0` use `([a] = 0)`"; + } + + if (patternErrorMsg && (left.extra && left.extra.parenthesized || left.type === "ParenthesizedExpression")) { + this.raise(maybePattern.start, `You're trying to assign to a parenthesized expression, eg. instead of ${patternErrorMsg}`); + } + + if (patternErrorMsg) this.checkCommaAfterRestFromSpread(); + this.state.commaAfterSpreadAt = oldCommaAfterSpreadAt; + this.next(); + node.right = this.parseMaybeAssign(noIn); + return this.finishNode(node, "AssignmentExpression"); + } else if (failOnShorthandAssign && refShorthandDefaultPos.start) { + this.unexpected(refShorthandDefaultPos.start); + } + + this.state.commaAfterSpreadAt = oldCommaAfterSpreadAt; + return left; + } + + parseMaybeConditional(noIn, refShorthandDefaultPos, refNeedsArrowPos) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprOps(noIn, refShorthandDefaultPos); + + if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) { + return expr; + } + + if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr; + return this.parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos); + } + + parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos) { + if (this.eat(types.question)) { + const node = this.startNodeAt(startPos, startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssign(); + this.expect(types.colon); + node.alternate = this.parseMaybeAssign(noIn); + return this.finishNode(node, "ConditionalExpression"); + } + + return expr; + } + + parseExprOps(noIn, refShorthandDefaultPos) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseMaybeUnary(refShorthandDefaultPos); + + if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) { + return expr; + } + + if (refShorthandDefaultPos && refShorthandDefaultPos.start) { + return expr; + } + + return this.parseExprOp(expr, startPos, startLoc, -1, noIn); + } + + parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn) { + const prec = this.state.type.binop; + + if (prec != null && (!noIn || !this.match(types._in))) { + if (prec > minPrec) { + const node = this.startNodeAt(leftStartPos, leftStartLoc); + const operator = this.state.value; + node.left = left; + node.operator = operator; + + if (operator === "**" && left.type === "UnaryExpression" && (this.options.createParenthesizedExpressions || !(left.extra && left.extra.parenthesized))) { + this.raise(left.argument.start, "Illegal expression. Wrap left hand side or entire exponentiation in parentheses."); + } + + const op = this.state.type; + + if (op === types.pipeline) { + this.expectPlugin("pipelineOperator"); + this.state.inPipeline = true; + this.checkPipelineAtInfixOperator(left, leftStartPos); + } else if (op === types.nullishCoalescing) { + this.expectPlugin("nullishCoalescingOperator"); + } + + this.next(); + + if (op === types.pipeline && this.getPluginOption("pipelineOperator", "proposal") === "minimal") { + if (this.match(types.name) && this.state.value === "await" && this.scope.inAsync) { + throw this.raise(this.state.start, `Unexpected "await" after pipeline body; await must have parentheses in minimal proposal`); + } + } + + node.right = this.parseExprOpRightExpr(op, prec, noIn); + this.finishNode(node, op === types.logicalOR || op === types.logicalAND || op === types.nullishCoalescing ? "LogicalExpression" : "BinaryExpression"); + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn); + } + } + + return left; + } + + parseExprOpRightExpr(op, prec, noIn) { + switch (op) { + case types.pipeline: + if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + return this.withTopicPermittingContext(() => { + return this.parseSmartPipelineBody(this.parseExprOpBaseRightExpr(op, prec, noIn), startPos, startLoc); + }); + } + + default: + return this.parseExprOpBaseRightExpr(op, prec, noIn); + } + } + + parseExprOpBaseRightExpr(op, prec, noIn) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, op.rightAssociative ? prec - 1 : prec, noIn); + } + + parseMaybeUnary(refShorthandDefaultPos) { + if (this.isContextual("await") && (this.scope.inAsync || !this.scope.inFunction && this.options.allowAwaitOutsideFunction)) { + return this.parseAwait(); + } else if (this.state.type.prefix) { + const node = this.startNode(); + const update = this.match(types.incDec); + node.operator = this.state.value; + node.prefix = true; + + if (node.operator === "throw") { + this.expectPlugin("throwExpressions"); + } + + this.next(); + node.argument = this.parseMaybeUnary(); + + if (refShorthandDefaultPos && refShorthandDefaultPos.start) { + this.unexpected(refShorthandDefaultPos.start); + } + + if (update) { + this.checkLVal(node.argument, undefined, undefined, "prefix operation"); + } else if (this.state.strict && node.operator === "delete") { + const arg = node.argument; + + if (arg.type === "Identifier") { + this.raise(node.start, "Deleting local variable in strict mode"); + } else if (arg.type === "MemberExpression" && arg.property.type === "PrivateName") { + this.raise(node.start, "Deleting a private field is not allowed"); + } + } + + return this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); + } + + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let expr = this.parseExprSubscripts(refShorthandDefaultPos); + if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr; + + while (this.state.type.postfix && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startPos, startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.checkLVal(expr, undefined, undefined, "postfix operation"); + this.next(); + expr = this.finishNode(node, "UpdateExpression"); + } + + return expr; + } + + parseExprSubscripts(refShorthandDefaultPos) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprAtom(refShorthandDefaultPos); + + if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) { + return expr; + } + + if (refShorthandDefaultPos && refShorthandDefaultPos.start) { + return expr; + } + + return this.parseSubscripts(expr, startPos, startLoc); + } + + parseSubscripts(base, startPos, startLoc, noCalls) { + const maybeAsyncArrow = this.atPossibleAsync(base); + const state = { + optionalChainMember: false, + stop: false + }; + + do { + base = this.parseSubscript(base, startPos, startLoc, noCalls, state, maybeAsyncArrow); + } while (!state.stop); + + return base; + } + + parseSubscript(base, startPos, startLoc, noCalls, state, maybeAsyncArrow) { + if (!noCalls && this.eat(types.doubleColon)) { + const node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.callee = this.parseNoCallExpr(); + state.stop = true; + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startPos, startLoc, noCalls); + } else if (this.match(types.questionDot)) { + this.expectPlugin("optionalChaining"); + state.optionalChainMember = true; + + if (noCalls && this.lookahead().type === types.parenL) { + state.stop = true; + return base; + } + + this.next(); + const node = this.startNodeAt(startPos, startLoc); + + if (this.eat(types.bracketL)) { + node.object = base; + node.property = this.parseExpression(); + node.computed = true; + node.optional = true; + this.expect(types.bracketR); + return this.finishNode(node, "OptionalMemberExpression"); + } else if (this.eat(types.parenL)) { + node.callee = base; + node.arguments = this.parseCallExpressionArguments(types.parenR, false); + node.optional = true; + return this.finishNode(node, "OptionalCallExpression"); + } else { + node.object = base; + node.property = this.parseIdentifier(true); + node.computed = false; + node.optional = true; + return this.finishNode(node, "OptionalMemberExpression"); + } + } else if (this.eat(types.dot)) { + const node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.property = this.parseMaybePrivateName(); + node.computed = false; + + if (state.optionalChainMember) { + node.optional = false; + return this.finishNode(node, "OptionalMemberExpression"); + } + + return this.finishNode(node, "MemberExpression"); + } else if (this.eat(types.bracketL)) { + const node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.property = this.parseExpression(); + node.computed = true; + this.expect(types.bracketR); + + if (state.optionalChainMember) { + node.optional = false; + return this.finishNode(node, "OptionalMemberExpression"); + } + + return this.finishNode(node, "MemberExpression"); + } else if (!noCalls && this.match(types.parenL)) { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldYieldPos = this.state.yieldPos; + const oldAwaitPos = this.state.awaitPos; + this.state.maybeInArrowParameters = true; + this.state.yieldPos = 0; + this.state.awaitPos = 0; + this.next(); + let node = this.startNodeAt(startPos, startLoc); + node.callee = base; + const oldCommaAfterSpreadAt = this.state.commaAfterSpreadAt; + this.state.commaAfterSpreadAt = -1; + node.arguments = this.parseCallExpressionArguments(types.parenR, maybeAsyncArrow, base.type === "Import", base.type !== "Super"); + + if (!state.optionalChainMember) { + this.finishCallExpression(node); + } else { + this.finishOptionalCallExpression(node); + } + + if (maybeAsyncArrow && this.shouldParseAsyncArrow()) { + state.stop = true; + this.checkCommaAfterRestFromSpread(); + node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node); + this.checkYieldAwaitInDefaultParams(); + this.state.yieldPos = oldYieldPos; + this.state.awaitPos = oldAwaitPos; + } else { + this.toReferencedListDeep(node.arguments); + this.state.yieldPos = oldYieldPos || this.state.yieldPos; + this.state.awaitPos = oldAwaitPos || this.state.awaitPos; + } + + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.commaAfterSpreadAt = oldCommaAfterSpreadAt; + return node; + } else if (this.match(types.backQuote)) { + return this.parseTaggedTemplateExpression(startPos, startLoc, base, state); + } else { + state.stop = true; + return base; + } + } + + parseTaggedTemplateExpression(startPos, startLoc, base, state, typeArguments) { + const node = this.startNodeAt(startPos, startLoc); + node.tag = base; + node.quasi = this.parseTemplate(true); + if (typeArguments) node.typeParameters = typeArguments; + + if (state.optionalChainMember) { + this.raise(startPos, "Tagged Template Literals are not allowed in optionalChain"); + } + + return this.finishNode(node, "TaggedTemplateExpression"); + } + + atPossibleAsync(base) { + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async"; + } + + finishCallExpression(node) { + if (node.callee.type === "Import") { + if (node.arguments.length !== 1) { + this.raise(node.start, "import() requires exactly one argument"); + } + + const importArg = node.arguments[0]; + + if (importArg && importArg.type === "SpreadElement") { + this.raise(importArg.start, "... is not allowed in import()"); + } + } + + return this.finishNode(node, "CallExpression"); + } + + finishOptionalCallExpression(node) { + if (node.callee.type === "Import") { + if (node.arguments.length !== 1) { + this.raise(node.start, "import() requires exactly one argument"); + } + + const importArg = node.arguments[0]; + + if (importArg && importArg.type === "SpreadElement") { + this.raise(importArg.start, "... is not allowed in import()"); + } + } + + return this.finishNode(node, "OptionalCallExpression"); + } + + parseCallExpressionArguments(close, possibleAsyncArrow, dynamicImport, allowPlaceholder) { + const elts = []; + let innerParenStart; + let first = true; + + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(types.comma); + + if (this.eat(close)) { + if (dynamicImport) { + this.raise(this.state.lastTokStart, "Trailing comma is disallowed inside import(...) arguments"); + } + + break; + } + } + + if (this.match(types.parenL) && !innerParenStart) { + innerParenStart = this.state.start; + } + + elts.push(this.parseExprListItem(false, possibleAsyncArrow ? { + start: 0 + } : undefined, possibleAsyncArrow ? { + start: 0 + } : undefined, allowPlaceholder)); + } + + if (possibleAsyncArrow && innerParenStart && this.shouldParseAsyncArrow()) { + this.unexpected(); + } + + return elts; + } + + shouldParseAsyncArrow() { + return this.match(types.arrow) && !this.canInsertSemicolon(); + } + + parseAsyncArrowFromCallExpression(node, call) { + this.expect(types.arrow); + this.parseArrowExpression(node, call.arguments, true); + return node; + } + + parseNoCallExpr() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); + } + + parseExprAtom(refShorthandDefaultPos) { + if (this.state.type === types.slash) this.readRegexp(); + const canBeArrow = this.state.potentialArrowAt === this.state.start; + let node; + + switch (this.state.type) { + case types._super: + if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) { + this.raise(this.state.start, "super is only allowed in object methods and classes"); + } + + node = this.startNode(); + this.next(); + + if (this.match(types.parenL) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) { + this.raise(node.start, "super() is only valid inside a class constructor of a subclass. " + "Maybe a typo in the method name ('constructor') or not extending another class?"); + } + + if (!this.match(types.parenL) && !this.match(types.bracketL) && !this.match(types.dot)) { + this.unexpected(); + } + + return this.finishNode(node, "Super"); + + case types._import: + node = this.startNode(); + this.next(); + + if (this.match(types.dot)) { + return this.parseImportMetaProperty(node); + } + + this.expectPlugin("dynamicImport", node.start); + + if (!this.match(types.parenL)) { + this.unexpected(null, types.parenL); + } + + return this.finishNode(node, "Import"); + + case types._this: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression"); + + case types.name: + { + node = this.startNode(); + const containsEsc = this.state.containsEsc; + const id = this.parseIdentifier(); + + if (!containsEsc && id.name === "async" && this.match(types._function) && !this.canInsertSemicolon()) { + this.next(); + return this.parseFunction(node, undefined, true); + } else if (canBeArrow && !containsEsc && id.name === "async" && this.match(types.name) && !this.canInsertSemicolon()) { + const params = [this.parseIdentifier()]; + this.expect(types.arrow); + this.parseArrowExpression(node, params, true); + return node; + } + + if (canBeArrow && this.match(types.arrow) && !this.canInsertSemicolon()) { + this.next(); + this.parseArrowExpression(node, [id], false); + return node; + } + + return id; + } + + case types._do: + { + this.expectPlugin("doExpressions"); + const node = this.startNode(); + this.next(); + const oldLabels = this.state.labels; + this.state.labels = []; + node.body = this.parseBlock(); + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + + case types.regexp: + { + const value = this.state.value; + node = this.parseLiteral(value.value, "RegExpLiteral"); + node.pattern = value.pattern; + node.flags = value.flags; + return node; + } + + case types.num: + return this.parseLiteral(this.state.value, "NumericLiteral"); + + case types.bigint: + return this.parseLiteral(this.state.value, "BigIntLiteral"); + + case types.string: + return this.parseLiteral(this.state.value, "StringLiteral"); + + case types._null: + node = this.startNode(); + this.next(); + return this.finishNode(node, "NullLiteral"); + + case types._true: + case types._false: + return this.parseBooleanLiteral(); + + case types.parenL: + return this.parseParenAndDistinguishExpression(canBeArrow); + + case types.bracketL: + node = this.startNode(); + this.next(); + node.elements = this.parseExprList(types.bracketR, true, refShorthandDefaultPos); + + if (!this.state.maybeInArrowParameters) { + this.toReferencedList(node.elements); + } + + return this.finishNode(node, "ArrayExpression"); + + case types.braceL: + return this.parseObj(false, refShorthandDefaultPos); + + case types._function: + return this.parseFunctionExpression(); + + case types.at: + this.parseDecorators(); + + case types._class: + node = this.startNode(); + this.takeDecorators(node); + return this.parseClass(node, false); + + case types._new: + return this.parseNew(); + + case types.backQuote: + return this.parseTemplate(false); + + case types.doubleColon: + { + node = this.startNode(); + this.next(); + node.object = null; + const callee = node.callee = this.parseNoCallExpr(); + + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + throw this.raise(callee.start, "Binding should be performed on object property."); + } + } + + case types.hash: + { + if (this.state.inPipeline) { + node = this.startNode(); + + if (this.getPluginOption("pipelineOperator", "proposal") !== "smart") { + this.raise(node.start, "Primary Topic Reference found but pipelineOperator not passed 'smart' for 'proposal' option."); + } + + this.next(); + + if (this.primaryTopicReferenceIsAllowedInCurrentTopicContext()) { + this.registerTopicReference(); + return this.finishNode(node, "PipelinePrimaryTopicReference"); + } else { + throw this.raise(node.start, `Topic reference was used in a lexical context without topic binding`); + } + } + } + + default: + throw this.unexpected(); + } + } + + parseBooleanLiteral() { + const node = this.startNode(); + node.value = this.match(types._true); + this.next(); + return this.finishNode(node, "BooleanLiteral"); + } + + parseMaybePrivateName() { + const isPrivate = this.match(types.hash); + + if (isPrivate) { + this.expectOnePlugin(["classPrivateProperties", "classPrivateMethods"]); + const node = this.startNode(); + this.next(); + this.assertNoSpace("Unexpected space between # and identifier"); + node.id = this.parseIdentifier(true); + return this.finishNode(node, "PrivateName"); + } else { + return this.parseIdentifier(true); + } + } + + parseFunctionExpression() { + const node = this.startNode(); + let meta = this.startNode(); + this.next(); + meta = this.createIdentifier(meta, "function"); + + if (this.scope.inGenerator && this.eat(types.dot)) { + return this.parseMetaProperty(node, meta, "sent"); + } + + return this.parseFunction(node); + } + + parseMetaProperty(node, meta, propertyName) { + node.meta = meta; + + if (meta.name === "function" && propertyName === "sent") { + if (this.isContextual(propertyName)) { + this.expectPlugin("functionSent"); + } else if (!this.hasPlugin("functionSent")) { + this.unexpected(); + } + } + + const containsEsc = this.state.containsEsc; + node.property = this.parseIdentifier(true); + + if (node.property.name !== propertyName || containsEsc) { + this.raise(node.property.start, `The only valid meta property for ${meta.name} is ${meta.name}.${propertyName}`); + } + + return this.finishNode(node, "MetaProperty"); + } + + parseImportMetaProperty(node) { + const id = this.createIdentifier(this.startNodeAtNode(node), "import"); + this.expect(types.dot); + + if (this.isContextual("meta")) { + this.expectPlugin("importMeta"); + } else if (!this.hasPlugin("importMeta")) { + this.raise(id.start, `Dynamic imports require a parameter: import('a.js')`); + } + + if (!this.inModule) { + this.raise(id.start, `import.meta may appear only with 'sourceType: "module"'`, { + code: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED" + }); + } + + this.sawUnambiguousESM = true; + return this.parseMetaProperty(node, id, "meta"); + } + + parseLiteral(value, type, startPos, startLoc) { + startPos = startPos || this.state.start; + startLoc = startLoc || this.state.startLoc; + const node = this.startNodeAt(startPos, startLoc); + this.addExtra(node, "rawValue", value); + this.addExtra(node, "raw", this.input.slice(startPos, this.state.end)); + node.value = value; + this.next(); + return this.finishNode(node, type); + } + + parseParenAndDistinguishExpression(canBeArrow) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let val; + this.expect(types.parenL); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldYieldPos = this.state.yieldPos; + const oldAwaitPos = this.state.awaitPos; + this.state.maybeInArrowParameters = true; + this.state.yieldPos = 0; + this.state.awaitPos = 0; + const innerStartPos = this.state.start; + const innerStartLoc = this.state.startLoc; + const exprList = []; + const refShorthandDefaultPos = { + start: 0 + }; + const refNeedsArrowPos = { + start: 0 + }; + let first = true; + let spreadStart; + let optionalCommaStart; + + while (!this.match(types.parenR)) { + if (first) { + first = false; + } else { + this.expect(types.comma, refNeedsArrowPos.start || null); + + if (this.match(types.parenR)) { + optionalCommaStart = this.state.start; + break; + } + } + + if (this.match(types.ellipsis)) { + const spreadNodeStartPos = this.state.start; + const spreadNodeStartLoc = this.state.startLoc; + spreadStart = this.state.start; + exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartPos, spreadNodeStartLoc)); + this.checkCommaAfterRest(); + break; + } else { + exprList.push(this.parseMaybeAssign(false, refShorthandDefaultPos, this.parseParenItem, refNeedsArrowPos)); + } + } + + const innerEndPos = this.state.start; + const innerEndLoc = this.state.startLoc; + this.expect(types.parenR); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + let arrowNode = this.startNodeAt(startPos, startLoc); + + if (canBeArrow && this.shouldParseArrow() && (arrowNode = this.parseArrow(arrowNode))) { + this.checkYieldAwaitInDefaultParams(); + this.state.yieldPos = oldYieldPos; + this.state.awaitPos = oldAwaitPos; + + for (let _i = 0; _i < exprList.length; _i++) { + const param = exprList[_i]; + + if (param.extra && param.extra.parenthesized) { + this.unexpected(param.extra.parenStart); + } + } + + this.parseArrowExpression(arrowNode, exprList, false); + return arrowNode; + } + + this.state.yieldPos = oldYieldPos || this.state.yieldPos; + this.state.awaitPos = oldAwaitPos || this.state.awaitPos; + + if (!exprList.length) { + this.unexpected(this.state.lastTokStart); + } + + if (optionalCommaStart) this.unexpected(optionalCommaStart); + if (spreadStart) this.unexpected(spreadStart); + + if (refShorthandDefaultPos.start) { + this.unexpected(refShorthandDefaultPos.start); + } + + if (refNeedsArrowPos.start) this.unexpected(refNeedsArrowPos.start); + this.toReferencedListDeep(exprList, true); + + if (exprList.length > 1) { + val = this.startNodeAt(innerStartPos, innerStartLoc); + val.expressions = exprList; + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); + } else { + val = exprList[0]; + } + + if (!this.options.createParenthesizedExpressions) { + this.addExtra(val, "parenthesized", true); + this.addExtra(val, "parenStart", startPos); + return val; + } + + const parenExpression = this.startNodeAt(startPos, startLoc); + parenExpression.expression = val; + this.finishNode(parenExpression, "ParenthesizedExpression"); + return parenExpression; + } + + shouldParseArrow() { + return !this.canInsertSemicolon(); + } + + parseArrow(node) { + if (this.eat(types.arrow)) { + return node; + } + } + + parseParenItem(node, startPos, startLoc) { + return node; + } + + parseNew() { + const node = this.startNode(); + const meta = this.parseIdentifier(true); + + if (this.eat(types.dot)) { + const metaProp = this.parseMetaProperty(node, meta, "target"); + + if (!this.scope.inNonArrowFunction && !this.state.inClassProperty) { + let error = "new.target can only be used in functions"; + + if (this.hasPlugin("classProperties")) { + error += " or class properties"; + } + + this.raise(metaProp.start, error); + } + + return metaProp; + } + + node.callee = this.parseNoCallExpr(); + + if (node.callee.type === "Import") { + this.raise(node.callee.start, "Cannot use new with import(...)"); + } else if (node.callee.type === "OptionalMemberExpression" || node.callee.type === "OptionalCallExpression") { + this.raise(this.state.lastTokEnd, "constructors in/after an Optional Chain are not allowed"); + } else if (this.eat(types.questionDot)) { + this.raise(this.state.start, "constructors in/after an Optional Chain are not allowed"); + } + + this.parseNewArguments(node); + return this.finishNode(node, "NewExpression"); + } + + parseNewArguments(node) { + if (this.eat(types.parenL)) { + const args = this.parseExprList(types.parenR); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + } + + parseTemplateElement(isTagged) { + const elem = this.startNode(); + + if (this.state.value === null) { + if (!isTagged) { + this.raise(this.state.invalidTemplateEscapePosition || 0, "Invalid escape sequence in template"); + } else { + this.state.invalidTemplateEscapePosition = null; + } + } + + elem.value = { + raw: this.input.slice(this.state.start, this.state.end).replace(/\r\n?/g, "\n"), + cooked: this.state.value + }; + this.next(); + elem.tail = this.match(types.backQuote); + return this.finishNode(elem, "TemplateElement"); + } + + parseTemplate(isTagged) { + const node = this.startNode(); + this.next(); + node.expressions = []; + let curElt = this.parseTemplateElement(isTagged); + node.quasis = [curElt]; + + while (!curElt.tail) { + this.expect(types.dollarBraceL); + node.expressions.push(this.parseExpression()); + this.expect(types.braceR); + node.quasis.push(curElt = this.parseTemplateElement(isTagged)); + } + + this.next(); + return this.finishNode(node, "TemplateLiteral"); + } + + parseObj(isPattern, refShorthandDefaultPos) { + const propHash = Object.create(null); + let first = true; + const node = this.startNode(); + node.properties = []; + this.next(); + + while (!this.eat(types.braceR)) { + if (first) { + first = false; + } else { + this.expect(types.comma); + if (this.eat(types.braceR)) break; + } + + const prop = this.parseObjectMember(isPattern, refShorthandDefaultPos); + if (!isPattern) this.checkPropClash(prop, propHash); + + if (prop.shorthand) { + this.addExtra(prop, "shorthand", true); + } + + node.properties.push(prop); + } + + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression"); + } + + isAsyncProp(prop) { + return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && (this.match(types.name) || this.match(types.num) || this.match(types.string) || this.match(types.bracketL) || this.state.type.keyword || this.match(types.star)) && !this.hasPrecedingLineBreak(); + } + + parseObjectMember(isPattern, refShorthandDefaultPos) { + let decorators = []; + + if (this.match(types.at)) { + if (this.hasPlugin("decorators")) { + this.raise(this.state.start, "Stage 2 decorators disallow object literal property decorators"); + } else { + while (this.match(types.at)) { + decorators.push(this.parseDecorator()); + } + } + } + + const prop = this.startNode(); + let isGenerator = false; + let isAsync = false; + let startPos; + let startLoc; + + if (this.match(types.ellipsis)) { + if (decorators.length) this.unexpected(); + + if (isPattern) { + this.next(); + prop.argument = this.parseIdentifier(); + this.checkCommaAfterRest(); + return this.finishNode(prop, "RestElement"); + } + + return this.parseSpread(); + } + + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + + prop.method = false; + + if (isPattern || refShorthandDefaultPos) { + startPos = this.state.start; + startLoc = this.state.startLoc; + } + + if (!isPattern) { + isGenerator = this.eat(types.star); + } + + const containsEsc = this.state.containsEsc; + this.parsePropertyName(prop); + + if (!isPattern && !containsEsc && !isGenerator && this.isAsyncProp(prop)) { + isAsync = true; + isGenerator = this.eat(types.star); + this.parsePropertyName(prop); + } else { + isAsync = false; + } + + this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos, containsEsc); + return prop; + } + + isGetterOrSetterMethod(prop, isPattern) { + return !isPattern && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && (this.match(types.string) || this.match(types.num) || this.match(types.bracketL) || this.match(types.name) || !!this.state.type.keyword); + } + + getGetterSetterExpectedParamCount(method) { + return method.kind === "get" ? 0 : 1; + } + + checkGetterSetterParams(method) { + const paramCount = this.getGetterSetterExpectedParamCount(method); + const start = method.start; + + if (method.params.length !== paramCount) { + if (method.kind === "get") { + this.raise(start, "getter must not have any formal parameters"); + } else { + this.raise(start, "setter must have exactly one formal parameter"); + } + } + + if (method.kind === "set" && method.params[method.params.length - 1].type === "RestElement") { + this.raise(start, "setter function argument must not be a rest parameter"); + } + } + + parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) { + if (isAsync || isGenerator || this.match(types.parenL)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); + } + + if (!containsEsc && this.isGetterOrSetterMethod(prop, isPattern)) { + if (isGenerator || isAsync) this.unexpected(); + prop.kind = prop.key.name; + this.parsePropertyName(prop); + this.parseMethod(prop, false, false, false, false, "ObjectMethod"); + this.checkGetterSetterParams(prop); + return prop; + } + } + + parseObjectProperty(prop, startPos, startLoc, isPattern, refShorthandDefaultPos) { + prop.shorthand = false; + + if (this.eat(types.colon)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssign(false, refShorthandDefaultPos); + return this.finishNode(prop, "ObjectProperty"); + } + + if (!prop.computed && prop.key.type === "Identifier") { + this.checkReservedWord(prop.key.name, prop.key.start, true, true); + + if (isPattern) { + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone()); + } else if (this.match(types.eq) && refShorthandDefaultPos) { + if (!refShorthandDefaultPos.start) { + refShorthandDefaultPos.start = this.state.start; + } + + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone()); + } else { + prop.value = prop.key.__clone(); + } + + prop.shorthand = true; + return this.finishNode(prop, "ObjectProperty"); + } + } + + parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos, containsEsc) { + const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refShorthandDefaultPos); + if (!node) this.unexpected(); + return node; + } + + parsePropertyName(prop) { + if (this.eat(types.bracketL)) { + prop.computed = true; + prop.key = this.parseMaybeAssign(); + this.expect(types.bracketR); + } else { + const oldInPropertyName = this.state.inPropertyName; + this.state.inPropertyName = true; + prop.key = this.match(types.num) || this.match(types.string) ? this.parseExprAtom() : this.parseMaybePrivateName(); + + if (prop.key.type !== "PrivateName") { + prop.computed = false; + } + + this.state.inPropertyName = oldInPropertyName; + } + + return prop.key; + } + + initFunction(node, isAsync) { + node.id = null; + node.generator = false; + node.async = !!isAsync; + } + + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + const oldYieldPos = this.state.yieldPos; + const oldAwaitPos = this.state.awaitPos; + this.state.yieldPos = 0; + this.state.awaitPos = 0; + this.initFunction(node, isAsync); + node.generator = !!isGenerator; + const allowModifiers = isConstructor; + this.scope.enter(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); + this.parseFunctionParams(node, allowModifiers); + this.checkYieldAwaitInDefaultParams(); + this.parseFunctionBodyAndFinish(node, type, true); + this.scope.exit(); + this.state.yieldPos = oldYieldPos; + this.state.awaitPos = oldAwaitPos; + return node; + } + + parseArrowExpression(node, params, isAsync) { + this.scope.enter(functionFlags(isAsync, false) | SCOPE_ARROW); + this.initFunction(node, isAsync); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldYieldPos = this.state.yieldPos; + const oldAwaitPos = this.state.awaitPos; + this.state.maybeInArrowParameters = false; + this.state.yieldPos = 0; + this.state.awaitPos = 0; + if (params) this.setArrowFunctionParameters(node, params); + this.parseFunctionBody(node, true); + this.scope.exit(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.yieldPos = oldYieldPos; + this.state.awaitPos = oldAwaitPos; + return this.finishNode(node, "ArrowFunctionExpression"); + } + + setArrowFunctionParameters(node, params) { + node.params = this.toAssignableList(params, true, "arrow function parameters"); + } + + isStrictBody(node) { + const isBlockStatement = node.body.type === "BlockStatement"; + + if (isBlockStatement && node.body.directives.length) { + for (let _i2 = 0, _node$body$directives = node.body.directives; _i2 < _node$body$directives.length; _i2++) { + const directive = _node$body$directives[_i2]; + + if (directive.value.value === "use strict") { + return true; + } + } + } + + return false; + } + + parseFunctionBodyAndFinish(node, type, isMethod = false) { + this.parseFunctionBody(node, false, isMethod); + this.finishNode(node, type); + } + + parseFunctionBody(node, allowExpression, isMethod = false) { + const isExpression = allowExpression && !this.match(types.braceL); + const oldStrict = this.state.strict; + let useStrict = false; + const oldInParameters = this.state.inParameters; + this.state.inParameters = false; + + if (isExpression) { + node.body = this.parseMaybeAssign(); + this.checkParams(node, false, allowExpression); + } else { + const nonSimple = !this.isSimpleParamList(node.params); + + if (!oldStrict || nonSimple) { + useStrict = this.strictDirective(this.state.end); + + if (useStrict && nonSimple) { + const errorPos = (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.end : node.start; + this.raise(errorPos, "Illegal 'use strict' directive in function with non-simple parameter list"); + } + } + + const oldLabels = this.state.labels; + this.state.labels = []; + if (useStrict) this.state.strict = true; + this.checkParams(node, !oldStrict && !useStrict && !allowExpression && !isMethod && !nonSimple, allowExpression); + node.body = this.parseBlock(true, false); + this.state.labels = oldLabels; + } + + this.state.inParameters = oldInParameters; + + if (this.state.strict && node.id) { + this.checkLVal(node.id, BIND_OUTSIDE, undefined, "function name"); + } + + this.state.strict = oldStrict; + } + + isSimpleParamList(params) { + for (let i = 0, len = params.length; i < len; i++) { + if (params[i].type !== "Identifier") return false; + } + + return true; + } + + checkParams(node, allowDuplicates, isArrowFunction) { + const nameHash = Object.create(null); + + for (let i = 0; i < node.params.length; i++) { + this.checkLVal(node.params[i], BIND_VAR, allowDuplicates ? null : nameHash, "function paramter list"); + } + } + + parseExprList(close, allowEmpty, refShorthandDefaultPos) { + const elts = []; + let first = true; + + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(types.comma); + if (this.eat(close)) break; + } + + elts.push(this.parseExprListItem(allowEmpty, refShorthandDefaultPos)); + } + + return elts; + } + + parseExprListItem(allowEmpty, refShorthandDefaultPos, refNeedsArrowPos, allowPlaceholder) { + let elt; + + if (allowEmpty && this.match(types.comma)) { + elt = null; + } else if (this.match(types.ellipsis)) { + const spreadNodeStartPos = this.state.start; + const spreadNodeStartLoc = this.state.startLoc; + elt = this.parseParenItem(this.parseSpread(refShorthandDefaultPos, refNeedsArrowPos), spreadNodeStartPos, spreadNodeStartLoc); + } else if (this.match(types.question)) { + this.expectPlugin("partialApplication"); + + if (!allowPlaceholder) { + this.raise(this.state.start, "Unexpected argument placeholder"); + } + + const node = this.startNode(); + this.next(); + elt = this.finishNode(node, "ArgumentPlaceholder"); + } else { + elt = this.parseMaybeAssign(false, refShorthandDefaultPos, this.parseParenItem, refNeedsArrowPos); + } + + return elt; + } + + parseIdentifier(liberal) { + const node = this.startNode(); + const name = this.parseIdentifierName(node.start, liberal); + return this.createIdentifier(node, name); + } + + createIdentifier(node, name) { + node.name = name; + node.loc.identifierName = name; + return this.finishNode(node, "Identifier"); + } + + parseIdentifierName(pos, liberal) { + let name; + + if (this.match(types.name)) { + name = this.state.value; + } else if (this.state.type.keyword) { + name = this.state.type.keyword; + + if ((name === "class" || name === "function") && (this.state.lastTokEnd !== this.state.lastTokStart + 1 || this.input.charCodeAt(this.state.lastTokStart) !== 46)) { + this.state.context.pop(); + } + } else { + throw this.unexpected(); + } + + if (!liberal) { + this.checkReservedWord(name, this.state.start, !!this.state.type.keyword, false); + } + + this.next(); + return name; + } + + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (this.scope.inGenerator && word === "yield") { + this.raise(startLoc, "Can not use 'yield' as identifier inside a generator"); + } + + if (this.scope.inAsync && word === "await") { + this.raise(startLoc, "Can not use 'await' as identifier inside an async function"); + } + + if (this.state.inClassProperty && word === "arguments") { + this.raise(startLoc, "'arguments' is not allowed in class field initializer"); + } + + if (checkKeywords && isKeyword(word)) { + this.raise(startLoc, `Unexpected keyword '${word}'`); + } + + const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; + + if (reservedTest(word, this.inModule)) { + if (!this.scope.inAsync && word === "await") { + this.raise(startLoc, "Can not use keyword 'await' outside an async function"); + } + + this.raise(startLoc, `Unexpected reserved word '${word}'`); + } + } + + parseAwait() { + if (!this.state.awaitPos) { + this.state.awaitPos = this.state.start; + } + + const node = this.startNode(); + this.next(); + + if (this.state.inParameters) { + this.raise(node.start, "await is not allowed in async function parameters"); + } + + if (this.match(types.star)) { + this.raise(node.start, "await* has been removed from the async functions proposal. Use Promise.all() instead."); + } + + node.argument = this.parseMaybeUnary(); + return this.finishNode(node, "AwaitExpression"); + } + + parseYield(noIn) { + if (!this.state.yieldPos) { + this.state.yieldPos = this.state.start; + } + + const node = this.startNode(); + + if (this.state.inParameters) { + this.raise(node.start, "yield is not allowed in generator parameters"); + } + + this.next(); + + if (this.match(types.semi) || !this.match(types.star) && !this.state.type.startsExpr || this.canInsertSemicolon()) { + node.delegate = false; + node.argument = null; + } else { + node.delegate = this.eat(types.star); + node.argument = this.parseMaybeAssign(noIn); + } + + return this.finishNode(node, "YieldExpression"); + } + + checkPipelineAtInfixOperator(left, leftStartPos) { + if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + if (left.type === "SequenceExpression") { + throw this.raise(leftStartPos, `Pipeline head should not be a comma-separated sequence expression`); + } + } + } + + parseSmartPipelineBody(childExpression, startPos, startLoc) { + const pipelineStyle = this.checkSmartPipelineBodyStyle(childExpression); + this.checkSmartPipelineBodyEarlyErrors(childExpression, pipelineStyle, startPos); + return this.parseSmartPipelineBodyInStyle(childExpression, pipelineStyle, startPos, startLoc); + } + + checkSmartPipelineBodyEarlyErrors(childExpression, pipelineStyle, startPos) { + if (this.match(types.arrow)) { + throw this.raise(this.state.start, `Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized`); + } else if (pipelineStyle === "PipelineTopicExpression" && childExpression.type === "SequenceExpression") { + throw this.raise(startPos, `Pipeline body may not be a comma-separated sequence expression`); + } + } + + parseSmartPipelineBodyInStyle(childExpression, pipelineStyle, startPos, startLoc) { + const bodyNode = this.startNodeAt(startPos, startLoc); + + switch (pipelineStyle) { + case "PipelineBareFunction": + bodyNode.callee = childExpression; + break; + + case "PipelineBareConstructor": + bodyNode.callee = childExpression.callee; + break; + + case "PipelineBareAwaitedFunction": + bodyNode.callee = childExpression.argument; + break; + + case "PipelineTopicExpression": + if (!this.topicReferenceWasUsedInCurrentTopicContext()) { + throw this.raise(startPos, `Pipeline is in topic style but does not use topic reference`); + } + + bodyNode.expression = childExpression; + break; + + default: + throw this.raise(startPos, `Unknown pipeline style ${pipelineStyle}`); + } + + return this.finishNode(bodyNode, pipelineStyle); + } + + checkSmartPipelineBodyStyle(expression) { + switch (expression.type) { + default: + return this.isSimpleReference(expression) ? "PipelineBareFunction" : "PipelineTopicExpression"; + } + } + + isSimpleReference(expression) { + switch (expression.type) { + case "MemberExpression": + return !expression.computed && this.isSimpleReference(expression.object); + + case "Identifier": + return true; + + default: + return false; + } + } + + withTopicPermittingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 1, + maxTopicIndex: null + }; + + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + + withTopicForbiddingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + + primaryTopicReferenceIsAllowedInCurrentTopicContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + + topicReferenceWasUsedInCurrentTopicContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + +} + +const loopLabel = { + kind: "loop" +}, + switchLabel = { + kind: "switch" +}; +const FUNC_NO_FLAGS = 0b000, + FUNC_STATEMENT = 0b001, + FUNC_HANGING_STATEMENT = 0b010, + FUNC_NULLABLE_ID = 0b100; +class StatementParser extends ExpressionParser { + parseTopLevel(file, program) { + program.sourceType = this.options.sourceType; + program.interpreter = this.parseInterpreterDirective(); + this.parseBlockBody(program, true, true, types.eof); + + if (this.inModule && this.scope.undefinedExports.size > 0) { + for (let _i = 0, _Array$from = Array.from(this.scope.undefinedExports); _i < _Array$from.length; _i++) { + const [name] = _Array$from[_i]; + const pos = this.scope.undefinedExports.get(name); + this.raise(pos, `Export '${name}' is not defined`); + } + } + + file.program = this.finishNode(program, "Program"); + file.comments = this.state.comments; + if (this.options.tokens) file.tokens = this.state.tokens; + return this.finishNode(file, "File"); + } + + stmtToDirective(stmt) { + const expr = stmt.expression; + const directiveLiteral = this.startNodeAt(expr.start, expr.loc.start); + const directive = this.startNodeAt(stmt.start, stmt.loc.start); + const raw = this.input.slice(expr.start, expr.end); + const val = directiveLiteral.value = raw.slice(1, -1); + this.addExtra(directiveLiteral, "raw", raw); + this.addExtra(directiveLiteral, "rawValue", val); + directive.value = this.finishNodeAt(directiveLiteral, "DirectiveLiteral", expr.end, expr.loc.end); + return this.finishNodeAt(directive, "Directive", stmt.end, stmt.loc.end); + } + + parseInterpreterDirective() { + if (!this.match(types.interpreterDirective)) { + return null; + } + + const node = this.startNode(); + node.value = this.state.value; + this.next(); + return this.finishNode(node, "InterpreterDirective"); + } + + isLet(context) { + if (!this.isContextual("let")) { + return false; + } + + skipWhiteSpace.lastIndex = this.state.pos; + const skip = skipWhiteSpace.exec(this.input); + const next = this.state.pos + skip[0].length; + const nextCh = this.input.charCodeAt(next); + if (nextCh === 91) return true; + if (context) return false; + if (nextCh === 123) return true; + + if (isIdentifierStart(nextCh)) { + let pos = next + 1; + + while (isIdentifierChar(this.input.charCodeAt(pos))) { + ++pos; + } + + const ident = this.input.slice(next, pos); + if (!keywordRelationalOperator.test(ident)) return true; + } + + return false; + } + + parseStatement(context, topLevel) { + if (this.match(types.at)) { + this.parseDecorators(true); + } + + return this.parseStatementContent(context, topLevel); + } + + parseStatementContent(context, topLevel) { + let starttype = this.state.type; + const node = this.startNode(); + let kind; + + if (this.isLet(context)) { + starttype = types._var; + kind = "let"; + } + + switch (starttype) { + case types._break: + case types._continue: + return this.parseBreakContinueStatement(node, starttype.keyword); + + case types._debugger: + return this.parseDebuggerStatement(node); + + case types._do: + return this.parseDoStatement(node); + + case types._for: + return this.parseForStatement(node); + + case types._function: + if (this.lookahead().type === types.dot) break; + + if (context) { + if (this.state.strict) { + this.raise(this.state.start, "In strict mode code, functions can only be declared at top level or inside a block"); + } else if (context !== "if" && context !== "label") { + this.raise(this.state.start, "In non-strict mode code, functions can only be declared at top level, " + "inside a block, or as the body of an if statement"); + } + } + + return this.parseFunctionStatement(node, false, !context); + + case types._class: + if (context) this.unexpected(); + return this.parseClass(node, true); + + case types._if: + return this.parseIfStatement(node); + + case types._return: + return this.parseReturnStatement(node); + + case types._switch: + return this.parseSwitchStatement(node); + + case types._throw: + return this.parseThrowStatement(node); + + case types._try: + return this.parseTryStatement(node); + + case types._const: + case types._var: + kind = kind || this.state.value; + + if (context && kind !== "var") { + this.unexpected(this.state.start, "Lexical declaration cannot appear in a single-statement context"); + } + + return this.parseVarStatement(node, kind); + + case types._while: + return this.parseWhileStatement(node); + + case types._with: + return this.parseWithStatement(node); + + case types.braceL: + return this.parseBlock(); + + case types.semi: + return this.parseEmptyStatement(node); + + case types._export: + case types._import: + { + const nextToken = this.lookahead(); + + if (nextToken.type === types.parenL || nextToken.type === types.dot) { + break; + } + + if (!this.options.allowImportExportEverywhere && !topLevel) { + this.raise(this.state.start, "'import' and 'export' may only appear at the top level"); + } + + this.next(); + let result; + + if (starttype === types._import) { + result = this.parseImport(node); + + if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) { + this.sawUnambiguousESM = true; + } + } else { + result = this.parseExport(node); + + if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") { + this.sawUnambiguousESM = true; + } + } + + this.assertModuleNodeAllowed(node); + return result; + } + + default: + { + if (this.isAsyncFunction()) { + if (context) { + this.unexpected(null, "Async functions can only be declared at the top level or inside a block"); + } + + this.next(); + return this.parseFunctionStatement(node, true, !context); + } + } + } + + const maybeName = this.state.value; + const expr = this.parseExpression(); + + if (starttype === types.name && expr.type === "Identifier" && this.eat(types.colon)) { + return this.parseLabeledStatement(node, maybeName, expr, context); + } else { + return this.parseExpressionStatement(node, expr); + } + } + + assertModuleNodeAllowed(node) { + if (!this.options.allowImportExportEverywhere && !this.inModule) { + this.raise(node.start, `'import' and 'export' may appear only with 'sourceType: "module"'`, { + code: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED" + }); + } + } + + takeDecorators(node) { + const decorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; + + if (decorators.length) { + node.decorators = decorators; + this.resetStartLocationFromNode(node, decorators[0]); + this.state.decoratorStack[this.state.decoratorStack.length - 1] = []; + } + } + + canHaveLeadingDecorator() { + return this.match(types._class); + } + + parseDecorators(allowExport) { + const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; + + while (this.match(types.at)) { + const decorator = this.parseDecorator(); + currentContextDecorators.push(decorator); + } + + if (this.match(types._export)) { + if (!allowExport) { + this.unexpected(); + } + + if (this.hasPlugin("decorators") && !this.getPluginOption("decorators", "decoratorsBeforeExport")) { + this.raise(this.state.start, "Using the export keyword between a decorator and a class is not allowed. " + "Please use `export @dec class` instead."); + } + } else if (!this.canHaveLeadingDecorator()) { + this.raise(this.state.start, "Leading decorators must be attached to a class declaration"); + } + } + + parseDecorator() { + this.expectOnePlugin(["decorators-legacy", "decorators"]); + const node = this.startNode(); + this.next(); + + if (this.hasPlugin("decorators")) { + this.state.decoratorStack.push([]); + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let expr; + + if (this.eat(types.parenL)) { + expr = this.parseExpression(); + this.expect(types.parenR); + } else { + expr = this.parseIdentifier(false); + + while (this.eat(types.dot)) { + const node = this.startNodeAt(startPos, startLoc); + node.object = expr; + node.property = this.parseIdentifier(true); + node.computed = false; + expr = this.finishNode(node, "MemberExpression"); + } + } + + node.expression = this.parseMaybeDecoratorArguments(expr); + this.state.decoratorStack.pop(); + } else { + node.expression = this.parseMaybeAssign(); + } + + return this.finishNode(node, "Decorator"); + } + + parseMaybeDecoratorArguments(expr) { + if (this.eat(types.parenL)) { + const node = this.startNodeAtNode(expr); + node.callee = expr; + node.arguments = this.parseCallExpressionArguments(types.parenR, false); + this.toReferencedList(node.arguments); + return this.finishNode(node, "CallExpression"); + } + + return expr; + } + + parseBreakContinueStatement(node, keyword) { + const isBreak = keyword === "break"; + this.next(); + + if (this.isLineTerminator()) { + node.label = null; + } else { + node.label = this.parseIdentifier(); + this.semicolon(); + } + + this.verifyBreakContinue(node, keyword); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); + } + + verifyBreakContinue(node, keyword) { + const isBreak = keyword === "break"; + let i; + + for (i = 0; i < this.state.labels.length; ++i) { + const lab = this.state.labels[i]; + + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) break; + if (node.label && isBreak) break; + } + } + + if (i === this.state.labels.length) { + this.raise(node.start, "Unsyntactic " + keyword); + } + } + + parseDebuggerStatement(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); + } + + parseHeaderExpression() { + this.expect(types.parenL); + const val = this.parseExpression(); + this.expect(types.parenR); + return val; + } + + parseDoStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.withTopicForbiddingContext(() => this.parseStatement("do")); + this.state.labels.pop(); + this.expect(types._while); + node.test = this.parseHeaderExpression(); + this.eat(types.semi); + return this.finishNode(node, "DoWhileStatement"); + } + + parseForStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + let awaitAt = -1; + + if ((this.scope.inAsync || !this.scope.inFunction && this.options.allowAwaitOutsideFunction) && this.eatContextual("await")) { + awaitAt = this.state.lastTokStart; + } + + this.scope.enter(SCOPE_OTHER); + this.expect(types.parenL); + + if (this.match(types.semi)) { + if (awaitAt > -1) { + this.unexpected(awaitAt); + } + + return this.parseFor(node, null); + } + + const isLet = this.isLet(); + + if (this.match(types._var) || this.match(types._const) || isLet) { + const init = this.startNode(); + const kind = isLet ? "let" : this.state.value; + this.next(); + this.parseVar(init, true, kind); + this.finishNode(init, "VariableDeclaration"); + + if ((this.match(types._in) || this.isContextual("of")) && init.declarations.length === 1) { + return this.parseForIn(node, init, awaitAt); + } + + if (awaitAt > -1) { + this.unexpected(awaitAt); + } + + return this.parseFor(node, init); + } + + const refShorthandDefaultPos = { + start: 0 + }; + const init = this.parseExpression(true, refShorthandDefaultPos); + + if (this.match(types._in) || this.isContextual("of")) { + const description = this.isContextual("of") ? "for-of statement" : "for-in statement"; + this.toAssignable(init, undefined, description); + this.checkLVal(init, undefined, undefined, description); + return this.parseForIn(node, init, awaitAt); + } else if (refShorthandDefaultPos.start) { + this.unexpected(refShorthandDefaultPos.start); + } + + if (awaitAt > -1) { + this.unexpected(awaitAt); + } + + return this.parseFor(node, init); + } + + parseFunctionStatement(node, isAsync, declarationPosition) { + this.next(); + return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), isAsync); + } + + parseIfStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + node.consequent = this.parseStatement("if"); + node.alternate = this.eat(types._else) ? this.parseStatement("if") : null; + return this.finishNode(node, "IfStatement"); + } + + parseReturnStatement(node) { + if (!this.scope.inFunction && !this.options.allowReturnOutsideFunction) { + this.raise(this.state.start, "'return' outside of function"); + } + + this.next(); + + if (this.isLineTerminator()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + + return this.finishNode(node, "ReturnStatement"); + } + + parseSwitchStatement(node) { + this.next(); + node.discriminant = this.parseHeaderExpression(); + const cases = node.cases = []; + this.expect(types.braceL); + this.state.labels.push(switchLabel); + this.scope.enter(SCOPE_OTHER); + let cur; + + for (let sawDefault; !this.match(types.braceR);) { + if (this.match(types._case) || this.match(types._default)) { + const isCase = this.match(types._case); + if (cur) this.finishNode(cur, "SwitchCase"); + cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { + this.raise(this.state.lastTokStart, "Multiple default clauses"); + } + + sawDefault = true; + cur.test = null; + } + + this.expect(types.colon); + } else { + if (cur) { + cur.consequent.push(this.parseStatement(null)); + } else { + this.unexpected(); + } + } + } + + this.scope.exit(); + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); + } + + parseThrowStatement(node) { + this.next(); + + if (lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) { + this.raise(this.state.lastTokEnd, "Illegal newline after throw"); + } + + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); + } + + parseTryStatement(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + + if (this.match(types._catch)) { + const clause = this.startNode(); + this.next(); + + if (this.match(types.parenL)) { + this.expect(types.parenL); + clause.param = this.parseBindingAtom(); + const simple = clause.param.type === "Identifier"; + this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0); + this.checkLVal(clause.param, BIND_LEXICAL, null, "catch clause"); + this.expect(types.parenR); + } else { + clause.param = null; + this.scope.enter(SCOPE_OTHER); + } + + clause.body = this.withTopicForbiddingContext(() => this.parseBlock(false, false)); + this.scope.exit(); + node.handler = this.finishNode(clause, "CatchClause"); + } + + node.finalizer = this.eat(types._finally) ? this.parseBlock() : null; + + if (!node.handler && !node.finalizer) { + this.raise(node.start, "Missing catch or finally clause"); + } + + return this.finishNode(node, "TryStatement"); + } + + parseVarStatement(node, kind) { + this.next(); + this.parseVar(node, false, kind); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); + } + + parseWhileStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + this.state.labels.push(loopLabel); + node.body = this.withTopicForbiddingContext(() => this.parseStatement("while")); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); + } + + parseWithStatement(node) { + if (this.state.strict) { + this.raise(this.state.start, "'with' in strict mode"); + } + + this.next(); + node.object = this.parseHeaderExpression(); + node.body = this.withTopicForbiddingContext(() => this.parseStatement("with")); + return this.finishNode(node, "WithStatement"); + } + + parseEmptyStatement(node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); + } + + parseLabeledStatement(node, maybeName, expr, context) { + for (let _i2 = 0, _this$state$labels = this.state.labels; _i2 < _this$state$labels.length; _i2++) { + const label = _this$state$labels[_i2]; + + if (label.name === maybeName) { + this.raise(expr.start, `Label '${maybeName}' is already declared`); + } + } + + const kind = this.state.type.isLoop ? "loop" : this.match(types._switch) ? "switch" : null; + + for (let i = this.state.labels.length - 1; i >= 0; i--) { + const label = this.state.labels[i]; + + if (label.statementStart === node.start) { + label.statementStart = this.state.start; + label.kind = kind; + } else { + break; + } + } + + this.state.labels.push({ + name: maybeName, + kind: kind, + statementStart: this.state.start + }); + node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); + } + + parseExpressionStatement(node, expr) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); + } + + parseBlock(allowDirectives = false, createNewLexicalScope = true) { + const node = this.startNode(); + this.expect(types.braceL); + + if (createNewLexicalScope) { + this.scope.enter(SCOPE_OTHER); + } + + this.parseBlockBody(node, allowDirectives, false, types.braceR); + + if (createNewLexicalScope) { + this.scope.exit(); + } + + return this.finishNode(node, "BlockStatement"); + } + + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; + } + + parseBlockBody(node, allowDirectives, topLevel, end) { + const body = node.body = []; + const directives = node.directives = []; + this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end); + } + + parseBlockOrModuleBlockBody(body, directives, topLevel, end) { + let parsedNonDirective = false; + let oldStrict; + let octalPosition; + + while (!this.eat(end)) { + if (!parsedNonDirective && this.state.containsOctal && !octalPosition) { + octalPosition = this.state.octalPosition; + } + + const stmt = this.parseStatement(null, topLevel); + + if (directives && !parsedNonDirective && this.isValidDirective(stmt)) { + const directive = this.stmtToDirective(stmt); + directives.push(directive); + + if (oldStrict === undefined && directive.value.value === "use strict") { + oldStrict = this.state.strict; + this.setStrict(true); + + if (octalPosition) { + this.raise(octalPosition, "Octal literal in strict mode"); + } + } + + continue; + } + + parsedNonDirective = true; + body.push(stmt); + } + + if (oldStrict === false) { + this.setStrict(false); + } + } + + parseFor(node, init) { + node.init = init; + this.expect(types.semi); + node.test = this.match(types.semi) ? null : this.parseExpression(); + this.expect(types.semi); + node.update = this.match(types.parenR) ? null : this.parseExpression(); + this.expect(types.parenR); + node.body = this.withTopicForbiddingContext(() => this.parseStatement("for")); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); + } + + parseForIn(node, init, awaitAt) { + const isForIn = this.match(types._in); + this.next(); + + if (isForIn) { + if (awaitAt > -1) this.unexpected(awaitAt); + } else { + node.await = awaitAt > -1; + } + + if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { + this.raise(init.start, `${isForIn ? "for-in" : "for-of"} loop variable declaration may not have an initializer`); + } else if (init.type === "AssignmentPattern") { + this.raise(init.start, "Invalid left-hand side in for-loop"); + } + + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); + this.expect(types.parenR); + node.body = this.withTopicForbiddingContext(() => this.parseStatement("for")); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); + } + + parseVar(node, isFor, kind) { + const declarations = node.declarations = []; + const isTypescript = this.hasPlugin("typescript"); + node.kind = kind; + + for (;;) { + const decl = this.startNode(); + this.parseVarId(decl, kind); + + if (this.eat(types.eq)) { + decl.init = this.parseMaybeAssign(isFor); + } else { + if (kind === "const" && !(this.match(types._in) || this.isContextual("of"))) { + if (!isTypescript) { + this.unexpected(); + } + } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(types._in) || this.isContextual("of")))) { + this.raise(this.state.lastTokEnd, "Complex binding patterns require an initialization value"); + } + + decl.init = null; + } + + declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(types.comma)) break; + } + + return node; + } + + parseVarId(decl, kind) { + if ((kind === "const" || kind === "let") && this.isContextual("let")) { + this.unexpected(null, "let is disallowed as a lexically bound name"); + } + + decl.id = this.parseBindingAtom(); + this.checkLVal(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, undefined, "variable declaration"); + } + + parseFunction(node, statement = FUNC_NO_FLAGS, isAsync = false) { + const isStatement = statement & FUNC_STATEMENT; + const isHangingStatement = statement & FUNC_HANGING_STATEMENT; + const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID); + this.initFunction(node, isAsync); + + if (this.match(types.star) && isHangingStatement) { + this.unexpected(this.state.start, "Generators can only be declared at the top level or inside a block"); + } + + node.generator = this.eat(types.star); + + if (isStatement) { + node.id = this.parseFunctionId(requireId); + } + + const oldInClassProperty = this.state.inClassProperty; + const oldYieldPos = this.state.yieldPos; + const oldAwaitPos = this.state.awaitPos; + this.state.inClassProperty = false; + this.state.yieldPos = 0; + this.state.awaitPos = 0; + this.scope.enter(functionFlags(node.async, node.generator)); + + if (!isStatement) { + node.id = this.parseFunctionId(); + } + + this.parseFunctionParams(node); + this.withTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(node, isStatement ? "FunctionDeclaration" : "FunctionExpression"); + }); + this.scope.exit(); + + if (isStatement && !isHangingStatement) { + this.checkFunctionStatementId(node); + } + + this.state.inClassProperty = oldInClassProperty; + this.state.yieldPos = oldYieldPos; + this.state.awaitPos = oldAwaitPos; + return node; + } + + parseFunctionId(requireId) { + return requireId || this.match(types.name) ? this.parseIdentifier() : null; + } + + parseFunctionParams(node, allowModifiers) { + const oldInParameters = this.state.inParameters; + this.state.inParameters = true; + this.expect(types.parenL); + node.params = this.parseBindingList(types.parenR, false, allowModifiers); + this.state.inParameters = oldInParameters; + this.checkYieldAwaitInDefaultParams(); + } + + checkFunctionStatementId(node) { + if (!node.id) return; + this.checkLVal(node.id, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, null, "function name"); + } + + parseClass(node, isStatement, optionalId) { + this.next(); + this.takeDecorators(node); + const oldStrict = this.state.strict; + this.state.strict = true; + this.parseClassId(node, isStatement, optionalId); + this.parseClassSuper(node); + node.body = this.parseClassBody(!!node.superClass); + this.state.strict = oldStrict; + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); + } + + isClassProperty() { + return this.match(types.eq) || this.match(types.semi) || this.match(types.braceR); + } + + isClassMethod() { + return this.match(types.parenL); + } + + isNonstaticConstructor(method) { + return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor"); + } + + parseClassBody(constructorAllowsSuper) { + this.state.classLevel++; + const state = { + hadConstructor: false + }; + let decorators = []; + const classBody = this.startNode(); + classBody.body = []; + this.expect(types.braceL); + this.withTopicForbiddingContext(() => { + while (!this.eat(types.braceR)) { + if (this.eat(types.semi)) { + if (decorators.length > 0) { + this.raise(this.state.lastTokEnd, "Decorators must not be followed by a semicolon"); + } + + continue; + } + + if (this.match(types.at)) { + decorators.push(this.parseDecorator()); + continue; + } + + const member = this.startNode(); + + if (decorators.length) { + member.decorators = decorators; + this.resetStartLocationFromNode(member, decorators[0]); + decorators = []; + } + + this.parseClassMember(classBody, member, state, constructorAllowsSuper); + + if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { + this.raise(member.start, "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?"); + } + } + }); + + if (decorators.length) { + this.raise(this.state.start, "You have trailing decorators with no method"); + } + + this.state.classLevel--; + return this.finishNode(classBody, "ClassBody"); + } + + parseClassMember(classBody, member, state, constructorAllowsSuper) { + let isStatic = false; + const containsEsc = this.state.containsEsc; + + if (this.match(types.name) && this.state.value === "static") { + const key = this.parseIdentifier(true); + + if (this.isClassMethod()) { + const method = member; + method.kind = "method"; + method.computed = false; + method.key = key; + method.static = false; + this.pushClassMethod(classBody, method, false, false, false, false); + return; + } else if (this.isClassProperty()) { + const prop = member; + prop.computed = false; + prop.key = key; + prop.static = false; + classBody.body.push(this.parseClassProperty(prop)); + return; + } else if (containsEsc) { + throw this.unexpected(); + } + + isStatic = true; + } + + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper); + } + + parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper) { + const publicMethod = member; + const privateMethod = member; + const publicProp = member; + const privateProp = member; + const method = publicMethod; + const publicMember = publicMethod; + member.static = isStatic; + + if (this.eat(types.star)) { + method.kind = "method"; + this.parseClassPropertyName(method); + + if (method.key.type === "PrivateName") { + this.pushClassPrivateMethod(classBody, privateMethod, true, false); + return; + } + + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(publicMethod.key.start, "Constructor can't be a generator"); + } + + this.pushClassMethod(classBody, publicMethod, true, false, false, false); + return; + } + + const containsEsc = this.state.containsEsc; + const key = this.parseClassPropertyName(member); + const isPrivate = key.type === "PrivateName"; + const isSimple = key.type === "Identifier"; + this.parsePostMemberNameModifiers(publicMember); + + if (this.isClassMethod()) { + method.kind = "method"; + + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + return; + } + + const isConstructor = this.isNonstaticConstructor(publicMethod); + let allowsDirectSuper = false; + + if (isConstructor) { + publicMethod.kind = "constructor"; + + if (publicMethod.decorators) { + this.raise(publicMethod.start, "You can't attach decorators to a class constructor"); + } + + if (state.hadConstructor && !this.hasPlugin("typescript")) { + this.raise(key.start, "Duplicate constructor in the same class"); + } + + state.hadConstructor = true; + allowsDirectSuper = constructorAllowsSuper; + } + + this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); + } else if (this.isClassProperty()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else if (isSimple && key.name === "async" && !containsEsc && !this.isLineTerminator()) { + const isGenerator = this.eat(types.star); + method.kind = "method"; + this.parseClassPropertyName(method); + + if (method.key.type === "PrivateName") { + this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(publicMethod.key.start, "Constructor can't be an async function"); + } + + this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); + } + } else if (isSimple && (key.name === "get" || key.name === "set") && !containsEsc && !(this.match(types.star) && this.isLineTerminator())) { + method.kind = key.name; + this.parseClassPropertyName(publicMethod); + + if (method.key.type === "PrivateName") { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(publicMethod.key.start, "Constructor can't have get/set modifier"); + } + + this.pushClassMethod(classBody, publicMethod, false, false, false, false); + } + + this.checkGetterSetterParams(publicMethod); + } else if (this.isLineTerminator()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else { + this.unexpected(); + } + } + + parseClassPropertyName(member) { + const key = this.parsePropertyName(member); + + if (!member.computed && member.static && (key.name === "prototype" || key.value === "prototype")) { + this.raise(key.start, "Classes may not have static property named prototype"); + } + + if (key.type === "PrivateName" && key.id.name === "constructor") { + this.raise(key.start, "Classes may not have a private field named '#constructor'"); + } + + return key; + } + + pushClassProperty(classBody, prop) { + if (this.isNonstaticConstructor(prop)) { + this.raise(prop.key.start, "Classes may not have a non-static field named 'constructor'"); + } + + classBody.body.push(this.parseClassProperty(prop)); + } + + pushClassPrivateProperty(classBody, prop) { + this.expectPlugin("classPrivateProperties", prop.key.start); + classBody.body.push(this.parseClassPrivateProperty(prop)); + } + + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); + } + + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + this.expectPlugin("classPrivateMethods", method.key.start); + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true)); + } + + parsePostMemberNameModifiers(methodOrProp) {} + + parseAccessModifier() { + return undefined; + } + + parseClassPrivateProperty(node) { + this.state.inClassProperty = true; + this.scope.enter(SCOPE_CLASS | SCOPE_SUPER); + node.value = this.eat(types.eq) ? this.parseMaybeAssign() : null; + this.semicolon(); + this.state.inClassProperty = false; + this.scope.exit(); + return this.finishNode(node, "ClassPrivateProperty"); + } + + parseClassProperty(node) { + if (!node.typeAnnotation) { + this.expectPlugin("classProperties"); + } + + this.state.inClassProperty = true; + this.scope.enter(SCOPE_CLASS | SCOPE_SUPER); + + if (this.match(types.eq)) { + this.expectPlugin("classProperties"); + this.next(); + node.value = this.parseMaybeAssign(); + } else { + node.value = null; + } + + this.semicolon(); + this.state.inClassProperty = false; + this.scope.exit(); + return this.finishNode(node, "ClassProperty"); + } + + parseClassId(node, isStatement, optionalId) { + if (this.match(types.name)) { + node.id = this.parseIdentifier(); + + if (isStatement) { + this.checkLVal(node.id, BIND_CLASS, undefined, "class name"); + } + } else { + if (optionalId || !isStatement) { + node.id = null; + } else { + this.unexpected(null, "A class name is required"); + } + } + } + + parseClassSuper(node) { + node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null; + } + + parseExport(node) { + const hasDefault = this.maybeParseExportDefaultSpecifier(node); + const parseAfterDefault = !hasDefault || this.eat(types.comma); + const hasStar = parseAfterDefault && this.eatExportStar(node); + const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); + const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(types.comma)); + const isFromRequired = hasDefault || hasStar; + + if (hasStar && !hasNamespace) { + if (hasDefault) this.unexpected(); + this.parseExportFrom(node, true); + return this.finishNode(node, "ExportAllDeclaration"); + } + + const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); + + if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers || hasNamespace && parseAfterNamespace && !hasSpecifiers) { + throw this.unexpected(null, types.braceL); + } + + let hasDeclaration; + + if (isFromRequired || hasSpecifiers) { + hasDeclaration = false; + this.parseExportFrom(node, isFromRequired); + } else { + hasDeclaration = this.maybeParseExportDeclaration(node); + } + + if (isFromRequired || hasSpecifiers || hasDeclaration) { + this.checkExport(node, true, false, !!node.source); + return this.finishNode(node, "ExportNamedDeclaration"); + } + + if (this.eat(types._default)) { + node.declaration = this.parseExportDefaultExpression(); + this.checkExport(node, true, true); + return this.finishNode(node, "ExportDefaultDeclaration"); + } + + throw this.unexpected(null, types.braceL); + } + + eatExportStar(node) { + return this.eat(types.star); + } + + maybeParseExportDefaultSpecifier(node) { + if (this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = this.parseIdentifier(true); + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return true; + } + + return false; + } + + maybeParseExportNamespaceSpecifier(node) { + if (this.isContextual("as")) { + if (!node.specifiers) node.specifiers = []; + this.expectPlugin("exportNamespaceFrom"); + const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc); + this.next(); + specifier.exported = this.parseIdentifier(true); + node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); + return true; + } + + return false; + } + + maybeParseExportNamedSpecifiers(node) { + if (this.match(types.braceL)) { + if (!node.specifiers) node.specifiers = []; + node.specifiers.push(...this.parseExportSpecifiers()); + node.source = null; + node.declaration = null; + return true; + } + + return false; + } + + maybeParseExportDeclaration(node) { + if (this.shouldParseExportDeclaration()) { + if (this.isContextual("async")) { + const next = this.lookahead(); + + if (next.type !== types._function) { + this.unexpected(next.start, `Unexpected token, expected "function"`); + } + } + + node.specifiers = []; + node.source = null; + node.declaration = this.parseExportDeclaration(node); + return true; + } + + return false; + } + + isAsyncFunction() { + if (!this.isContextual("async")) return false; + const { + pos + } = this.state; + skipWhiteSpace.lastIndex = pos; + const skip = skipWhiteSpace.exec(this.input); + if (!skip || !skip.length) return false; + const next = pos + skip[0].length; + return !lineBreak.test(this.input.slice(pos, next)) && this.input.slice(next, next + 8) === "function" && (next + 8 === this.length || !isIdentifierChar(this.input.charCodeAt(next + 8))); + } + + parseExportDefaultExpression() { + const expr = this.startNode(); + const isAsync = this.isAsyncFunction(); + + if (this.match(types._function) || isAsync) { + this.next(); + + if (isAsync) { + this.next(); + } + + return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync); + } else if (this.match(types._class)) { + return this.parseClass(expr, true, true); + } else if (this.match(types.at)) { + if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport")) { + this.unexpected(this.state.start, "Decorators must be placed *before* the 'export' keyword." + " You can set the 'decoratorsBeforeExport' option to false to use" + " the 'export @decorator class {}' syntax"); + } + + this.parseDecorators(false); + return this.parseClass(expr, true, true); + } else if (this.match(types._const) || this.match(types._var) || this.isLet()) { + return this.raise(this.state.start, "Only expressions, functions or classes are allowed as the `default` export."); + } else { + const res = this.parseMaybeAssign(); + this.semicolon(); + return res; + } + } + + parseExportDeclaration(node) { + return this.parseStatement(null); + } + + isExportDefaultSpecifier() { + if (this.match(types.name)) { + return this.state.value !== "async" && this.state.value !== "let"; + } + + if (!this.match(types._default)) { + return false; + } + + const lookahead = this.lookahead(); + return lookahead.type === types.comma || lookahead.type === types.name && lookahead.value === "from"; + } + + parseExportFrom(node, expect) { + if (this.eatContextual("from")) { + node.source = this.parseImportSource(); + this.checkExport(node); + } else { + if (expect) { + this.unexpected(); + } else { + node.source = null; + } + } + + this.semicolon(); + } + + shouldParseExportDeclaration() { + if (this.match(types.at)) { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + + if (this.hasPlugin("decorators")) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport")) { + this.unexpected(this.state.start, "Decorators must be placed *before* the 'export' keyword." + " You can set the 'decoratorsBeforeExport' option to false to use" + " the 'export @decorator class {}' syntax"); + } else { + return true; + } + } + } + + return this.state.type.keyword === "var" || this.state.type.keyword === "const" || this.state.type.keyword === "function" || this.state.type.keyword === "class" || this.isLet() || this.isAsyncFunction(); + } + + checkExport(node, checkNames, isDefault, isFrom) { + if (checkNames) { + if (isDefault) { + this.checkDuplicateExports(node, "default"); + } else if (node.specifiers && node.specifiers.length) { + for (let _i3 = 0, _node$specifiers = node.specifiers; _i3 < _node$specifiers.length; _i3++) { + const specifier = _node$specifiers[_i3]; + this.checkDuplicateExports(specifier, specifier.exported.name); + + if (!isFrom && specifier.local) { + this.checkReservedWord(specifier.local.name, specifier.local.start, true, false); + this.scope.checkLocalExport(specifier.local); + } + } + } else if (node.declaration) { + if (node.declaration.type === "FunctionDeclaration" || node.declaration.type === "ClassDeclaration") { + const id = node.declaration.id; + if (!id) throw new Error("Assertion failure"); + this.checkDuplicateExports(node, id.name); + } else if (node.declaration.type === "VariableDeclaration") { + for (let _i4 = 0, _node$declaration$dec = node.declaration.declarations; _i4 < _node$declaration$dec.length; _i4++) { + const declaration = _node$declaration$dec[_i4]; + this.checkDeclaration(declaration.id); + } + } + } + } + + const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; + + if (currentContextDecorators.length) { + const isClass = node.declaration && (node.declaration.type === "ClassDeclaration" || node.declaration.type === "ClassExpression"); + + if (!node.declaration || !isClass) { + throw this.raise(node.start, "You can only use decorators on an export when exporting a class"); + } + + this.takeDecorators(node.declaration); + } + } + + checkDeclaration(node) { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { + for (let _i5 = 0, _node$properties = node.properties; _i5 < _node$properties.length; _i5++) { + const prop = _node$properties[_i5]; + this.checkDeclaration(prop); + } + } else if (node.type === "ArrayPattern") { + for (let _i6 = 0, _node$elements = node.elements; _i6 < _node$elements.length; _i6++) { + const elem = _node$elements[_i6]; + + if (elem) { + this.checkDeclaration(elem); + } + } + } else if (node.type === "ObjectProperty") { + this.checkDeclaration(node.value); + } else if (node.type === "RestElement") { + this.checkDeclaration(node.argument); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); + } + } + + checkDuplicateExports(node, name) { + if (this.state.exportedIdentifiers.indexOf(name) > -1) { + throw this.raise(node.start, name === "default" ? "Only one default export allowed per module." : `\`${name}\` has already been exported. Exported identifiers must be unique.`); + } + + this.state.exportedIdentifiers.push(name); + } + + parseExportSpecifiers() { + const nodes = []; + let first = true; + this.expect(types.braceL); + + while (!this.eat(types.braceR)) { + if (first) { + first = false; + } else { + this.expect(types.comma); + if (this.eat(types.braceR)) break; + } + + const node = this.startNode(); + node.local = this.parseIdentifier(true); + node.exported = this.eatContextual("as") ? this.parseIdentifier(true) : node.local.__clone(); + nodes.push(this.finishNode(node, "ExportSpecifier")); + } + + return nodes; + } + + parseImport(node) { + node.specifiers = []; + + if (!this.match(types.string)) { + const hasDefault = this.maybeParseDefaultImportSpecifier(node); + const parseNext = !hasDefault || this.eat(types.comma); + const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); + if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); + this.expectContextual("from"); + } + + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + + parseImportSource() { + if (!this.match(types.string)) this.unexpected(); + return this.parseExprAtom(); + } + + shouldParseDefaultImport(node) { + return this.match(types.name); + } + + parseImportSpecifierLocal(node, specifier, type, contextDescription) { + specifier.local = this.parseIdentifier(); + this.checkLVal(specifier.local, BIND_LEXICAL, undefined, contextDescription); + node.specifiers.push(this.finishNode(specifier, type)); + } + + maybeParseDefaultImportSpecifier(node) { + if (this.shouldParseDefaultImport(node)) { + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier", "default import specifier"); + return true; + } + + return false; + } + + maybeParseStarImportSpecifier(node) { + if (this.match(types.star)) { + const specifier = this.startNode(); + this.next(); + this.expectContextual("as"); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier", "import namespace specifier"); + return true; + } + + return false; + } + + parseNamedImportSpecifiers(node) { + let first = true; + this.expect(types.braceL); + + while (!this.eat(types.braceR)) { + if (first) { + first = false; + } else { + if (this.eat(types.colon)) { + this.unexpected(null, "ES2015 named imports do not destructure. " + "Use another statement for destructuring after the import."); + } + + this.expect(types.comma); + if (this.eat(types.braceR)) break; + } + + this.parseImportSpecifier(node); + } + } + + parseImportSpecifier(node) { + const specifier = this.startNode(); + specifier.imported = this.parseIdentifier(true); + + if (this.eatContextual("as")) { + specifier.local = this.parseIdentifier(); + } else { + this.checkReservedWord(specifier.imported.name, specifier.start, true, true); + specifier.local = specifier.imported.__clone(); + } + + this.checkLVal(specifier.local, BIND_LEXICAL, undefined, "import specifier"); + node.specifiers.push(this.finishNode(specifier, "ImportSpecifier")); + } + +} + +class Parser extends StatementParser { + constructor(options, input) { + options = getOptions(options); + super(options, input); + const ScopeHandler = this.getScopeHandler(); + this.options = options; + this.inModule = this.options.sourceType === "module"; + this.scope = new ScopeHandler(this.raise.bind(this), this.inModule); + this.plugins = pluginsMap(this.options.plugins); + this.filename = options.sourceFilename; + } + + getScopeHandler() { + return ScopeHandler; + } + + parse() { + this.scope.enter(SCOPE_PROGRAM); + const file = this.startNode(); + const program = this.startNode(); + this.nextToken(); + return this.parseTopLevel(file, program); + } + +} + +function pluginsMap(plugins) { + const pluginMap = new Map(); + + for (let _i = 0; _i < plugins.length; _i++) { + const plugin = plugins[_i]; + const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}]; + if (!pluginMap.has(name)) pluginMap.set(name, options || {}); + } + + return pluginMap; +} + +function parse(input, options) { + if (options && options.sourceType === "unambiguous") { + options = Object.assign({}, options); + + try { + options.sourceType = "module"; + const parser = getParser(options, input); + const ast = parser.parse(); + if (!parser.sawUnambiguousESM) ast.program.sourceType = "script"; + return ast; + } catch (moduleError) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (scriptError) {} + + throw moduleError; + } + } else { + return getParser(options, input).parse(); + } +} +function parseExpression(input, options) { + const parser = getParser(options, input); + + if (parser.options.strictMode) { + parser.state.strict = true; + } + + return parser.getExpression(); +} + +function getParser(options, input) { + let cls = Parser; + + if (options && options.plugins) { + validatePlugins(options.plugins); + cls = getParserClass(options.plugins); + } + + return new cls(options, input); +} + +const parserClassCache = {}; + +function getParserClass(pluginsFromOptions) { + const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name)); + const key = pluginList.join("/"); + let cls = parserClassCache[key]; + + if (!cls) { + cls = Parser; + + for (let _i = 0; _i < pluginList.length; _i++) { + const plugin = pluginList[_i]; + cls = mixinPlugins[plugin](cls); + } + + parserClassCache[key] = cls; + } + + return cls; +} + +exports.parse = parse; +exports.parseExpression = parseExpression; +exports.tokTypes = types; + + +/***/ }), +/* 223 */ +/***/ (function(module, exports) { + +module.exports = require("fast-glob"); + +/***/ }), +/* 224 */ +/***/ (function(module, exports) { + +module.exports = require("yargs"); + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/packages/reason-relay/language-plugin/.flowconfig b/packages/reason-relay/language-plugin/.flowconfig new file mode 100755 index 00000000..7ea167d9 --- /dev/null +++ b/packages/reason-relay/language-plugin/.flowconfig @@ -0,0 +1,49 @@ +[ignore] +/dist/.* + +[libs] +flow-typed/ + +[options] +module.system=haste +module.system.haste.use_name_reducers=true +# get basename +module.system.haste.name_reducers='^.*/\([a-zA-Z0-9$_.-]+\.js\(\.flow\)?\)$' -> '\1' +# strip .js or .js.flow suffix +module.system.haste.name_reducers='^\(.*\)\.js\(\.flow\)?$' -> '\1' + +module.system.haste.paths.blacklist=.*/__tests__/.* +module.system.haste.paths.blacklist=.*/__mocks__/.* +module.system.haste.paths.whitelist=/node_modules/fbjs/lib/.* +module.system.haste.paths.blacklist=/node_modules/fbjs/lib/emptyFunction\\.js\\.flow + +esproposal.class_static_fields=enable +esproposal.class_instance_fields=enable +esproposal.optional_chaining=enable + +munge_underscores=true + +suppress_type=$FlowIssue +suppress_type=$FlowFixMe +suppress_type=$FlowFixMeProps +suppress_type=$FlowFixMeState + +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*oss[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*oss[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError + +[lints] +untyped-type-import=error +deprecated-utility=error + +[strict] +deprecated-type +nonstrict-import +sketchy-null +unclear-type +unsafe-getters-setters +untyped-import +untyped-type-import + +[version] +^0.101.0 diff --git a/packages/reason-relay/language-plugin/.gitignore b/packages/reason-relay/language-plugin/.gitignore new file mode 100755 index 00000000..3bb673a6 --- /dev/null +++ b/packages/reason-relay/language-plugin/.gitignore @@ -0,0 +1,30 @@ +*.exe +*.obj +*.out +*.compile +*.native +*.byte +*.cmo +*.annot +*.cmi +*.cmx +*.cmt +*.cmti +*.cma +*.a +*.cmxa +*.obj +*~ +*.annot +*.cmj +*.bak +lib/bs +*.mlast +*.mliast +.vscode +.merlin +.bsb.lock +lib +node_modules +*.log +dist \ No newline at end of file diff --git a/packages/reason-relay/language-plugin/.graphqlconfig b/packages/reason-relay/language-plugin/.graphqlconfig new file mode 100755 index 00000000..5c5a31ce --- /dev/null +++ b/packages/reason-relay/language-plugin/.graphqlconfig @@ -0,0 +1,3 @@ +{ + "schemaPath": "schema.graphql" +} diff --git a/packages/reason-relay/language-plugin/README.md b/packages/reason-relay/language-plugin/README.md new file mode 100755 index 00000000..1c02d2a0 --- /dev/null +++ b/packages/reason-relay/language-plugin/README.md @@ -0,0 +1,16 @@ + + +# Build +``` +npm run build +``` + +# Watch + +``` +npm run watch +``` + + +# Editor +If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/packages/reason-relay/language-plugin/babel.config.js b/packages/reason-relay/language-plugin/babel.config.js new file mode 100755 index 00000000..c6d384e7 --- /dev/null +++ b/packages/reason-relay/language-plugin/babel.config.js @@ -0,0 +1,18 @@ +module.exports = { + presets: [ + '@babel/flow', + [ + '@babel/preset-env', + { + targets: { + node: 'current' + } + } + ] + ], + plugins: ['@babel/plugin-proposal-nullish-coalescing-operator', ['module-resolver', { + alias: { + 'bs-platform/lib/es6': 'bs-platform/lib/js' + } + }]] +}; diff --git a/packages/reason-relay/language-plugin/bsconfig.json b/packages/reason-relay/language-plugin/bsconfig.json new file mode 100755 index 00000000..d1f85c9a --- /dev/null +++ b/packages/reason-relay/language-plugin/bsconfig.json @@ -0,0 +1,27 @@ +{ + "name": "relay-compiler-language-reason", + "version": "0.1.0", + "sources": { + "dir" : "src", + "subdirs" : true + }, + "package-specs": { + "module": "commonjs", + "in-source": true + }, + "suffix": ".bs.js", + "bs-dependencies": [ + ], + "warnings": { + "error" : "+101" + }, + "refmt": 3, + "gentypeconfig": { + "language": "flow", + "shims": {}, + "debug": { + "all": false, + "basic": false + } + } +} diff --git a/packages/reason-relay/language-plugin/flow-typed/global.js b/packages/reason-relay/language-plugin/flow-typed/global.js new file mode 100755 index 00000000..3bf0090a --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/global.js @@ -0,0 +1,2 @@ +// @flow +declare var __DEV__: boolean; diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/@babel/cli_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/cli_vx.x.x.js new file mode 100755 index 00000000..a81d56f3 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/cli_vx.x.x.js @@ -0,0 +1,87 @@ +// flow-typed signature: cc1d1a2ec09f3b899ef47a856742f08f +// flow-typed version: <>/@babel/cli_v^7.4.4/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/cli' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/cli' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/cli/bin/babel-external-helpers' { + declare module.exports: any; +} + +declare module '@babel/cli/bin/babel' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel-external-helpers' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/dir' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/file' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/index' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/options' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/util' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/cli/bin/babel-external-helpers.js' { + declare module.exports: $Exports<'@babel/cli/bin/babel-external-helpers'>; +} +declare module '@babel/cli/bin/babel.js' { + declare module.exports: $Exports<'@babel/cli/bin/babel'>; +} +declare module '@babel/cli/index' { + declare module.exports: $Exports<'@babel/cli'>; +} +declare module '@babel/cli/index.js' { + declare module.exports: $Exports<'@babel/cli'>; +} +declare module '@babel/cli/lib/babel-external-helpers.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel-external-helpers'>; +} +declare module '@babel/cli/lib/babel/dir.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/dir'>; +} +declare module '@babel/cli/lib/babel/file.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/file'>; +} +declare module '@babel/cli/lib/babel/index.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/index'>; +} +declare module '@babel/cli/lib/babel/options.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/options'>; +} +declare module '@babel/cli/lib/babel/util.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/util'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/@babel/core_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/core_vx.x.x.js new file mode 100755 index 00000000..7b41b6d2 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/core_vx.x.x.js @@ -0,0 +1,298 @@ +// flow-typed signature: 2b173c73804c7b43d7d6c738802c5ad0 +// flow-typed version: <>/@babel/core_v^7.4.5/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/core' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/core' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/core/lib/config/caching' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/config-chain' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/config-descriptors' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/configuration' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/index-browser' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/index' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/package' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/plugins' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/types' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/utils' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/full' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/helpers/config-api' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/helpers/environment' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/index' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/item' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/partial' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/pattern-to-regex' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/plugin' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/util' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/validation/option-assertions' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/validation/options' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/validation/plugins' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/validation/removed' { + declare module.exports: any; +} + +declare module '@babel/core/lib/index' { + declare module.exports: any; +} + +declare module '@babel/core/lib/parse' { + declare module.exports: any; +} + +declare module '@babel/core/lib/tools/build-external-helpers' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transform-ast' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transform-file-browser' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transform-file' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transform' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/block-hoist-plugin' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/file/file' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/file/generate' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/file/merge-map' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/index' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/normalize-file' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/normalize-opts' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/plugin-pass' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/util/missing-plugin-helper' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/core/lib/config/caching.js' { + declare module.exports: $Exports<'@babel/core/lib/config/caching'>; +} +declare module '@babel/core/lib/config/config-chain.js' { + declare module.exports: $Exports<'@babel/core/lib/config/config-chain'>; +} +declare module '@babel/core/lib/config/config-descriptors.js' { + declare module.exports: $Exports<'@babel/core/lib/config/config-descriptors'>; +} +declare module '@babel/core/lib/config/files/configuration.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/configuration'>; +} +declare module '@babel/core/lib/config/files/index-browser.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/index-browser'>; +} +declare module '@babel/core/lib/config/files/index.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/index'>; +} +declare module '@babel/core/lib/config/files/package.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/package'>; +} +declare module '@babel/core/lib/config/files/plugins.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/plugins'>; +} +declare module '@babel/core/lib/config/files/types.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/types'>; +} +declare module '@babel/core/lib/config/files/utils.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/utils'>; +} +declare module '@babel/core/lib/config/full.js' { + declare module.exports: $Exports<'@babel/core/lib/config/full'>; +} +declare module '@babel/core/lib/config/helpers/config-api.js' { + declare module.exports: $Exports<'@babel/core/lib/config/helpers/config-api'>; +} +declare module '@babel/core/lib/config/helpers/environment.js' { + declare module.exports: $Exports<'@babel/core/lib/config/helpers/environment'>; +} +declare module '@babel/core/lib/config/index.js' { + declare module.exports: $Exports<'@babel/core/lib/config/index'>; +} +declare module '@babel/core/lib/config/item.js' { + declare module.exports: $Exports<'@babel/core/lib/config/item'>; +} +declare module '@babel/core/lib/config/partial.js' { + declare module.exports: $Exports<'@babel/core/lib/config/partial'>; +} +declare module '@babel/core/lib/config/pattern-to-regex.js' { + declare module.exports: $Exports<'@babel/core/lib/config/pattern-to-regex'>; +} +declare module '@babel/core/lib/config/plugin.js' { + declare module.exports: $Exports<'@babel/core/lib/config/plugin'>; +} +declare module '@babel/core/lib/config/util.js' { + declare module.exports: $Exports<'@babel/core/lib/config/util'>; +} +declare module '@babel/core/lib/config/validation/option-assertions.js' { + declare module.exports: $Exports<'@babel/core/lib/config/validation/option-assertions'>; +} +declare module '@babel/core/lib/config/validation/options.js' { + declare module.exports: $Exports<'@babel/core/lib/config/validation/options'>; +} +declare module '@babel/core/lib/config/validation/plugins.js' { + declare module.exports: $Exports<'@babel/core/lib/config/validation/plugins'>; +} +declare module '@babel/core/lib/config/validation/removed.js' { + declare module.exports: $Exports<'@babel/core/lib/config/validation/removed'>; +} +declare module '@babel/core/lib/index.js' { + declare module.exports: $Exports<'@babel/core/lib/index'>; +} +declare module '@babel/core/lib/parse.js' { + declare module.exports: $Exports<'@babel/core/lib/parse'>; +} +declare module '@babel/core/lib/tools/build-external-helpers.js' { + declare module.exports: $Exports<'@babel/core/lib/tools/build-external-helpers'>; +} +declare module '@babel/core/lib/transform-ast.js' { + declare module.exports: $Exports<'@babel/core/lib/transform-ast'>; +} +declare module '@babel/core/lib/transform-file-browser.js' { + declare module.exports: $Exports<'@babel/core/lib/transform-file-browser'>; +} +declare module '@babel/core/lib/transform-file.js' { + declare module.exports: $Exports<'@babel/core/lib/transform-file'>; +} +declare module '@babel/core/lib/transform.js' { + declare module.exports: $Exports<'@babel/core/lib/transform'>; +} +declare module '@babel/core/lib/transformation/block-hoist-plugin.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/block-hoist-plugin'>; +} +declare module '@babel/core/lib/transformation/file/file.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/file/file'>; +} +declare module '@babel/core/lib/transformation/file/generate.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/file/generate'>; +} +declare module '@babel/core/lib/transformation/file/merge-map.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/file/merge-map'>; +} +declare module '@babel/core/lib/transformation/index.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/index'>; +} +declare module '@babel/core/lib/transformation/normalize-file.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/normalize-file'>; +} +declare module '@babel/core/lib/transformation/normalize-opts.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/normalize-opts'>; +} +declare module '@babel/core/lib/transformation/plugin-pass.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/plugin-pass'>; +} +declare module '@babel/core/lib/transformation/util/missing-plugin-helper.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/util/missing-plugin-helper'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/@babel/generator_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/generator_vx.x.x.js new file mode 100755 index 00000000..02c2ecf4 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/generator_vx.x.x.js @@ -0,0 +1,158 @@ +// flow-typed signature: 4561fa1ac07f356e724c34c23f649393 +// flow-typed version: <>/@babel/generator_v^7.4.4/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/generator' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/generator' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/generator/lib/buffer' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/base' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/classes' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/expressions' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/flow' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/index' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/jsx' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/methods' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/modules' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/statements' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/template-literals' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/types' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/generators/typescript' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/index' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/node/index' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/node/parentheses' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/node/whitespace' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/printer' { + declare module.exports: any; +} + +declare module '@babel/generator/lib/source-map' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/generator/lib/buffer.js' { + declare module.exports: $Exports<'@babel/generator/lib/buffer'>; +} +declare module '@babel/generator/lib/generators/base.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/base'>; +} +declare module '@babel/generator/lib/generators/classes.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/classes'>; +} +declare module '@babel/generator/lib/generators/expressions.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/expressions'>; +} +declare module '@babel/generator/lib/generators/flow.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/flow'>; +} +declare module '@babel/generator/lib/generators/index.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/index'>; +} +declare module '@babel/generator/lib/generators/jsx.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/jsx'>; +} +declare module '@babel/generator/lib/generators/methods.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/methods'>; +} +declare module '@babel/generator/lib/generators/modules.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/modules'>; +} +declare module '@babel/generator/lib/generators/statements.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/statements'>; +} +declare module '@babel/generator/lib/generators/template-literals.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/template-literals'>; +} +declare module '@babel/generator/lib/generators/types.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/types'>; +} +declare module '@babel/generator/lib/generators/typescript.js' { + declare module.exports: $Exports<'@babel/generator/lib/generators/typescript'>; +} +declare module '@babel/generator/lib/index.js' { + declare module.exports: $Exports<'@babel/generator/lib/index'>; +} +declare module '@babel/generator/lib/node/index.js' { + declare module.exports: $Exports<'@babel/generator/lib/node/index'>; +} +declare module '@babel/generator/lib/node/parentheses.js' { + declare module.exports: $Exports<'@babel/generator/lib/node/parentheses'>; +} +declare module '@babel/generator/lib/node/whitespace.js' { + declare module.exports: $Exports<'@babel/generator/lib/node/whitespace'>; +} +declare module '@babel/generator/lib/printer.js' { + declare module.exports: $Exports<'@babel/generator/lib/printer'>; +} +declare module '@babel/generator/lib/source-map.js' { + declare module.exports: $Exports<'@babel/generator/lib/source-map'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/@babel/parser_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/parser_vx.x.x.js new file mode 100755 index 00000000..963ab624 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/parser_vx.x.x.js @@ -0,0 +1,39 @@ +// flow-typed signature: 92f8378119a5fe1edc27b05a2d9d3586 +// flow-typed version: <>/@babel/parser_v^7.4.5/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/parser' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/parser' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/parser/bin/babel-parser' { + declare module.exports: any; +} + +declare module '@babel/parser/lib/index' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/parser/bin/babel-parser.js' { + declare module.exports: $Exports<'@babel/parser/bin/babel-parser'>; +} +declare module '@babel/parser/lib/index.js' { + declare module.exports: $Exports<'@babel/parser/lib/index'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/@babel/plugin-proposal-nullish-coalescing-operator_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/plugin-proposal-nullish-coalescing-operator_vx.x.x.js new file mode 100755 index 00000000..183c782f --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/plugin-proposal-nullish-coalescing-operator_vx.x.x.js @@ -0,0 +1,32 @@ +// flow-typed signature: 852649a1d2ca63617a10582c0944dec3 +// flow-typed version: <>/@babel/plugin-proposal-nullish-coalescing-operator_v^7.4.4/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/plugin-proposal-nullish-coalescing-operator' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/plugin-proposal-nullish-coalescing-operator' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/plugin-proposal-nullish-coalescing-operator/lib/index' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/plugin-proposal-nullish-coalescing-operator/lib/index.js' { + declare module.exports: $Exports<'@babel/plugin-proposal-nullish-coalescing-operator/lib/index'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/@babel/preset-env_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/preset-env_vx.x.x.js new file mode 100755 index 00000000..3fa2fd0f --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/preset-env_vx.x.x.js @@ -0,0 +1,200 @@ +// flow-typed signature: 24548170611add19813d134b566d66d1 +// flow-typed version: <>/@babel/preset-env_v^7.4.5/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/preset-env' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/preset-env' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/preset-env/data/built-ins.json' { + declare module.exports: any; +} + +declare module '@babel/preset-env/data/corejs2-built-in-features' { + declare module.exports: any; +} + +declare module '@babel/preset-env/data/plugin-features' { + declare module.exports: any; +} + +declare module '@babel/preset-env/data/shipped-proposals' { + declare module.exports: any; +} + +declare module '@babel/preset-env/data/unreleased-labels' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/available-plugins' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/debug' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/filter-items' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/get-option-specific-excludes' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/index' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/module-transformations' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/normalize-options' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/options' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/corejs2/built-in-definitions' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/corejs2/entry-plugin' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/corejs2/get-platform-specific-default' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/corejs2/usage-plugin' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/corejs3/built-in-definitions' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/corejs3/entry-plugin' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/corejs3/shipped-proposals' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/corejs3/usage-plugin' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/regenerator/entry-plugin' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/polyfills/regenerator/usage-plugin' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/targets-parser' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/utils' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/preset-env/data/built-ins.json.js' { + declare module.exports: $Exports<'@babel/preset-env/data/built-ins.json'>; +} +declare module '@babel/preset-env/data/corejs2-built-in-features.js' { + declare module.exports: $Exports<'@babel/preset-env/data/corejs2-built-in-features'>; +} +declare module '@babel/preset-env/data/plugin-features.js' { + declare module.exports: $Exports<'@babel/preset-env/data/plugin-features'>; +} +declare module '@babel/preset-env/data/shipped-proposals.js' { + declare module.exports: $Exports<'@babel/preset-env/data/shipped-proposals'>; +} +declare module '@babel/preset-env/data/unreleased-labels.js' { + declare module.exports: $Exports<'@babel/preset-env/data/unreleased-labels'>; +} +declare module '@babel/preset-env/lib/available-plugins.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/available-plugins'>; +} +declare module '@babel/preset-env/lib/debug.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/debug'>; +} +declare module '@babel/preset-env/lib/filter-items.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/filter-items'>; +} +declare module '@babel/preset-env/lib/get-option-specific-excludes.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/get-option-specific-excludes'>; +} +declare module '@babel/preset-env/lib/index.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/index'>; +} +declare module '@babel/preset-env/lib/module-transformations.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/module-transformations'>; +} +declare module '@babel/preset-env/lib/normalize-options.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/normalize-options'>; +} +declare module '@babel/preset-env/lib/options.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/options'>; +} +declare module '@babel/preset-env/lib/polyfills/corejs2/built-in-definitions.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/corejs2/built-in-definitions'>; +} +declare module '@babel/preset-env/lib/polyfills/corejs2/entry-plugin.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/corejs2/entry-plugin'>; +} +declare module '@babel/preset-env/lib/polyfills/corejs2/get-platform-specific-default.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/corejs2/get-platform-specific-default'>; +} +declare module '@babel/preset-env/lib/polyfills/corejs2/usage-plugin.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/corejs2/usage-plugin'>; +} +declare module '@babel/preset-env/lib/polyfills/corejs3/built-in-definitions.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/corejs3/built-in-definitions'>; +} +declare module '@babel/preset-env/lib/polyfills/corejs3/entry-plugin.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/corejs3/entry-plugin'>; +} +declare module '@babel/preset-env/lib/polyfills/corejs3/shipped-proposals.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/corejs3/shipped-proposals'>; +} +declare module '@babel/preset-env/lib/polyfills/corejs3/usage-plugin.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/corejs3/usage-plugin'>; +} +declare module '@babel/preset-env/lib/polyfills/regenerator/entry-plugin.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/regenerator/entry-plugin'>; +} +declare module '@babel/preset-env/lib/polyfills/regenerator/usage-plugin.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/polyfills/regenerator/usage-plugin'>; +} +declare module '@babel/preset-env/lib/targets-parser.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/targets-parser'>; +} +declare module '@babel/preset-env/lib/utils.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/utils'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/@babel/preset-flow_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/preset-flow_vx.x.x.js new file mode 100755 index 00000000..3648a8a3 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/@babel/preset-flow_vx.x.x.js @@ -0,0 +1,32 @@ +// flow-typed signature: 8f6e2f930870c67d675794ffc0d9b144 +// flow-typed version: <>/@babel/preset-flow_v^7.0.0/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/preset-flow' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/preset-flow' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/preset-flow/lib/index' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/preset-flow/lib/index.js' { + declare module.exports: $Exports<'@babel/preset-flow/lib/index'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/babel-plugin-module-resolver_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/babel-plugin-module-resolver_vx.x.x.js new file mode 100755 index 00000000..ddf95f62 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/babel-plugin-module-resolver_vx.x.x.js @@ -0,0 +1,81 @@ +// flow-typed signature: c2ab2dc564ac01cb2cd92c41bde539d6 +// flow-typed version: <>/babel-plugin-module-resolver_v^3.2.0/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'babel-plugin-module-resolver' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'babel-plugin-module-resolver' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'babel-plugin-module-resolver/lib/index' { + declare module.exports: any; +} + +declare module 'babel-plugin-module-resolver/lib/log' { + declare module.exports: any; +} + +declare module 'babel-plugin-module-resolver/lib/mapToRelative' { + declare module.exports: any; +} + +declare module 'babel-plugin-module-resolver/lib/normalizeOptions' { + declare module.exports: any; +} + +declare module 'babel-plugin-module-resolver/lib/resolvePath' { + declare module.exports: any; +} + +declare module 'babel-plugin-module-resolver/lib/transformers/call' { + declare module.exports: any; +} + +declare module 'babel-plugin-module-resolver/lib/transformers/import' { + declare module.exports: any; +} + +declare module 'babel-plugin-module-resolver/lib/utils' { + declare module.exports: any; +} + +// Filename aliases +declare module 'babel-plugin-module-resolver/lib/index.js' { + declare module.exports: $Exports<'babel-plugin-module-resolver/lib/index'>; +} +declare module 'babel-plugin-module-resolver/lib/log.js' { + declare module.exports: $Exports<'babel-plugin-module-resolver/lib/log'>; +} +declare module 'babel-plugin-module-resolver/lib/mapToRelative.js' { + declare module.exports: $Exports<'babel-plugin-module-resolver/lib/mapToRelative'>; +} +declare module 'babel-plugin-module-resolver/lib/normalizeOptions.js' { + declare module.exports: $Exports<'babel-plugin-module-resolver/lib/normalizeOptions'>; +} +declare module 'babel-plugin-module-resolver/lib/resolvePath.js' { + declare module.exports: $Exports<'babel-plugin-module-resolver/lib/resolvePath'>; +} +declare module 'babel-plugin-module-resolver/lib/transformers/call.js' { + declare module.exports: $Exports<'babel-plugin-module-resolver/lib/transformers/call'>; +} +declare module 'babel-plugin-module-resolver/lib/transformers/import.js' { + declare module.exports: $Exports<'babel-plugin-module-resolver/lib/transformers/import'>; +} +declare module 'babel-plugin-module-resolver/lib/utils.js' { + declare module.exports: $Exports<'babel-plugin-module-resolver/lib/utils'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/bs-platform_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/bs-platform_vx.x.x.js new file mode 100755 index 00000000..bde411c8 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/bs-platform_vx.x.x.js @@ -0,0 +1,2650 @@ +// flow-typed signature: ae3ebf8b42370395be0a6a70ea3cc68c +// flow-typed version: <>/bs-platform_v^5.0.5-beta.1/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'bs-platform' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'bs-platform' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'bs-platform/lib/es6/arg' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/arrayLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Debug' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Float' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_HashMap' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_HashMapInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_HashMapString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_HashSet' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_HashSetInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_HashSetString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Id' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Int' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_internalAVLset' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_internalAVLtree' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_internalBuckets' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_internalBucketsType' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_internalMapInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_internalMapString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_internalSetBuckets' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_internalSetInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_internalSetString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_List' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Map' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MapDict' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MapInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MapString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MutableMap' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MutableMapInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MutableMapString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MutableQueue' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MutableSet' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MutableSetInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MutableSetString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_MutableStack' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Option' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Range' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Result' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_Set' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_SetDict' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_SetInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_SetString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_SortArray' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_SortArrayInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt_SortArrayString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/belt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/bigarray' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/block' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/buffer' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/bytes' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/bytesLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/callback' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_array_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_builtin_exceptions' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_bytes_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_bytes' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_char' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_chrome_debugger' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_exceptions' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_float_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_float' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_format' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_gc' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_hash_primitive' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_hash' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_int32_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_int32' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_int64_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_int64' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_io' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_js_exceptions' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_lexer' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_md5' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_missing_polyfill' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_module' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_nativeint_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_obj_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_obj' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_oo_curry' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_oo' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_option' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_parser' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_primitive' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_splice_call' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_string_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_string' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_sys' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_undefined_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_utils' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/caml_weak' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/camlinternalFormat' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/camlinternalFormatBasics' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/camlinternalLazy' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/camlinternalMod' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/camlinternalOO' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/char' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/complex' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/curry' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/digest' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/dom_storage' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/dom_storage2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/dom' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/filename' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/format' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/gc' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/genlex' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/hashtbl' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/int32' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/int64' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_array2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_cast' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_console' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_date' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_dict' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_exn' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_float' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_global' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_int' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_json' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_list' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_mapperRt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_math' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_null_undefined' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_null' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_obj' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_option' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_promise' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_re' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_result' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_string' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_string2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_typed_array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_typed_array2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_types' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_undefined' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js_vector' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/js' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/lazy' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/lexing' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/list' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/listLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/map' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/marshal' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/moreLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/nativeint' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/node_buffer' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/node_child_process' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/node_fs' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/node_module' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/node_path' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/node_process' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/node' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/obj' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/oo' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/parsing' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/pervasives' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/printexc' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/printf' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/queue' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/random' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/scanf' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/set' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/sort' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/stack' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/std_exit' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/stdLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/stream' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/string' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/stringLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/sys' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/unix' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/unixLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/es6/weak' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/arg' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/arrayLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Debug' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Float' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_HashMap' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_HashMapInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_HashMapString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_HashSet' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_HashSetInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_HashSetString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Id' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Int' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_internalAVLset' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_internalAVLtree' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_internalBuckets' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_internalBucketsType' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_internalMapInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_internalMapString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_internalSetBuckets' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_internalSetInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_internalSetString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_List' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Map' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MapDict' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MapInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MapString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MutableMap' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MutableMapInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MutableMapString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MutableQueue' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MutableSet' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MutableSetInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MutableSetString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_MutableStack' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Option' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Range' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Result' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_Set' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_SetDict' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_SetInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_SetString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_SortArray' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_SortArrayInt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt_SortArrayString' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/belt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/bigarray' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/block' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/buffer' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/bytes' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/bytesLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/callback' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_array_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_builtin_exceptions' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_bytes_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_bytes' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_char' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_chrome_debugger' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_exceptions' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_float_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_float' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_format' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_gc' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_hash_primitive' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_hash' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_int32_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_int32' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_int64_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_int64' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_io' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_js_exceptions' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_lexer' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_md5' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_missing_polyfill' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_module' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_nativeint_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_obj_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_obj' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_oo_curry' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_oo' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_option' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_parser' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_primitive' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_splice_call' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_string_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_string' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_sys' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_undefined_extern' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_utils' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/caml_weak' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/camlinternalBigarray' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/camlinternalFormat' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/camlinternalFormatBasics' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/camlinternalLazy' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/camlinternalMod' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/camlinternalOO' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/char' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/complex' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/curry' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/digest' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/dom_storage' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/dom_storage2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/dom' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/ephemeron' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/filename' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/format' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/gc' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/genlex' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/hashtbl' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/int32' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/int64' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_array2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_cast' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_console' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_date' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_dict' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_exn' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_float' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_global' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_int' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_json' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_list' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_mapperRt' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_math' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_null_undefined' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_null' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_obj' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_option' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_promise' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_promise2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_re' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_result' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_string' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_string2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_typed_array' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_typed_array2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_types' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_undefined' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js_vector' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/js' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/lazy' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/lexing' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/list' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/listLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/map' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/marshal' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/moreLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/nativeint' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/node_buffer' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/node_child_process' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/node_fs' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/node_fs2' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/node_module' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/node_path' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/node_process' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/node' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/obj' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/oo' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/parsing' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/pervasives' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/printexc' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/printf' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/queue' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/random' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/scanf' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/set' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/sort' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/spacetime' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/stack' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/std_exit' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/stdLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/stream' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/string' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/stringLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/sys' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/uchar' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/unix' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/unixLabels' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/js/weak' { + declare module.exports: any; +} + +declare module 'bs-platform/lib/minisocket' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/buildocaml' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/ciTest' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/config' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/dedupe' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/doc_gen' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/install' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/js_internal_gen' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/ninja' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/ninjaFactory' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/prebuilt' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/prepublish' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/release' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/repl' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/tasks' { + declare module.exports: any; +} + +declare module 'bs-platform/scripts/tmp' { + declare module.exports: any; +} + +declare module 'bs-platform/vendor/rollup' { + declare module.exports: any; +} + +// Filename aliases +declare module 'bs-platform/lib/es6/arg.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/arg'>; +} +declare module 'bs-platform/lib/es6/array.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/array'>; +} +declare module 'bs-platform/lib/es6/arrayLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/arrayLabels'>; +} +declare module 'bs-platform/lib/es6/belt_Array.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Array'>; +} +declare module 'bs-platform/lib/es6/belt_Debug.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Debug'>; +} +declare module 'bs-platform/lib/es6/belt_Float.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Float'>; +} +declare module 'bs-platform/lib/es6/belt_HashMap.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_HashMap'>; +} +declare module 'bs-platform/lib/es6/belt_HashMapInt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_HashMapInt'>; +} +declare module 'bs-platform/lib/es6/belt_HashMapString.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_HashMapString'>; +} +declare module 'bs-platform/lib/es6/belt_HashSet.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_HashSet'>; +} +declare module 'bs-platform/lib/es6/belt_HashSetInt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_HashSetInt'>; +} +declare module 'bs-platform/lib/es6/belt_HashSetString.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_HashSetString'>; +} +declare module 'bs-platform/lib/es6/belt_Id.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Id'>; +} +declare module 'bs-platform/lib/es6/belt_Int.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Int'>; +} +declare module 'bs-platform/lib/es6/belt_internalAVLset.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_internalAVLset'>; +} +declare module 'bs-platform/lib/es6/belt_internalAVLtree.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_internalAVLtree'>; +} +declare module 'bs-platform/lib/es6/belt_internalBuckets.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_internalBuckets'>; +} +declare module 'bs-platform/lib/es6/belt_internalBucketsType.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_internalBucketsType'>; +} +declare module 'bs-platform/lib/es6/belt_internalMapInt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_internalMapInt'>; +} +declare module 'bs-platform/lib/es6/belt_internalMapString.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_internalMapString'>; +} +declare module 'bs-platform/lib/es6/belt_internalSetBuckets.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_internalSetBuckets'>; +} +declare module 'bs-platform/lib/es6/belt_internalSetInt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_internalSetInt'>; +} +declare module 'bs-platform/lib/es6/belt_internalSetString.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_internalSetString'>; +} +declare module 'bs-platform/lib/es6/belt_List.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_List'>; +} +declare module 'bs-platform/lib/es6/belt_Map.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Map'>; +} +declare module 'bs-platform/lib/es6/belt_MapDict.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MapDict'>; +} +declare module 'bs-platform/lib/es6/belt_MapInt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MapInt'>; +} +declare module 'bs-platform/lib/es6/belt_MapString.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MapString'>; +} +declare module 'bs-platform/lib/es6/belt_MutableMap.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MutableMap'>; +} +declare module 'bs-platform/lib/es6/belt_MutableMapInt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MutableMapInt'>; +} +declare module 'bs-platform/lib/es6/belt_MutableMapString.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MutableMapString'>; +} +declare module 'bs-platform/lib/es6/belt_MutableQueue.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MutableQueue'>; +} +declare module 'bs-platform/lib/es6/belt_MutableSet.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MutableSet'>; +} +declare module 'bs-platform/lib/es6/belt_MutableSetInt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MutableSetInt'>; +} +declare module 'bs-platform/lib/es6/belt_MutableSetString.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MutableSetString'>; +} +declare module 'bs-platform/lib/es6/belt_MutableStack.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_MutableStack'>; +} +declare module 'bs-platform/lib/es6/belt_Option.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Option'>; +} +declare module 'bs-platform/lib/es6/belt_Range.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Range'>; +} +declare module 'bs-platform/lib/es6/belt_Result.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Result'>; +} +declare module 'bs-platform/lib/es6/belt_Set.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_Set'>; +} +declare module 'bs-platform/lib/es6/belt_SetDict.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_SetDict'>; +} +declare module 'bs-platform/lib/es6/belt_SetInt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_SetInt'>; +} +declare module 'bs-platform/lib/es6/belt_SetString.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_SetString'>; +} +declare module 'bs-platform/lib/es6/belt_SortArray.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_SortArray'>; +} +declare module 'bs-platform/lib/es6/belt_SortArrayInt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_SortArrayInt'>; +} +declare module 'bs-platform/lib/es6/belt_SortArrayString.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt_SortArrayString'>; +} +declare module 'bs-platform/lib/es6/belt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/belt'>; +} +declare module 'bs-platform/lib/es6/bigarray.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/bigarray'>; +} +declare module 'bs-platform/lib/es6/block.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/block'>; +} +declare module 'bs-platform/lib/es6/buffer.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/buffer'>; +} +declare module 'bs-platform/lib/es6/bytes.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/bytes'>; +} +declare module 'bs-platform/lib/es6/bytesLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/bytesLabels'>; +} +declare module 'bs-platform/lib/es6/callback.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/callback'>; +} +declare module 'bs-platform/lib/es6/caml_array_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_array_extern'>; +} +declare module 'bs-platform/lib/es6/caml_array.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_array'>; +} +declare module 'bs-platform/lib/es6/caml_builtin_exceptions.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_builtin_exceptions'>; +} +declare module 'bs-platform/lib/es6/caml_bytes_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_bytes_extern'>; +} +declare module 'bs-platform/lib/es6/caml_bytes.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_bytes'>; +} +declare module 'bs-platform/lib/es6/caml_char.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_char'>; +} +declare module 'bs-platform/lib/es6/caml_chrome_debugger.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_chrome_debugger'>; +} +declare module 'bs-platform/lib/es6/caml_exceptions.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_exceptions'>; +} +declare module 'bs-platform/lib/es6/caml_float_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_float_extern'>; +} +declare module 'bs-platform/lib/es6/caml_float.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_float'>; +} +declare module 'bs-platform/lib/es6/caml_format.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_format'>; +} +declare module 'bs-platform/lib/es6/caml_gc.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_gc'>; +} +declare module 'bs-platform/lib/es6/caml_hash_primitive.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_hash_primitive'>; +} +declare module 'bs-platform/lib/es6/caml_hash.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_hash'>; +} +declare module 'bs-platform/lib/es6/caml_int32_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_int32_extern'>; +} +declare module 'bs-platform/lib/es6/caml_int32.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_int32'>; +} +declare module 'bs-platform/lib/es6/caml_int64_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_int64_extern'>; +} +declare module 'bs-platform/lib/es6/caml_int64.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_int64'>; +} +declare module 'bs-platform/lib/es6/caml_io.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_io'>; +} +declare module 'bs-platform/lib/es6/caml_js_exceptions.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_js_exceptions'>; +} +declare module 'bs-platform/lib/es6/caml_lexer.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_lexer'>; +} +declare module 'bs-platform/lib/es6/caml_md5.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_md5'>; +} +declare module 'bs-platform/lib/es6/caml_missing_polyfill.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_missing_polyfill'>; +} +declare module 'bs-platform/lib/es6/caml_module.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_module'>; +} +declare module 'bs-platform/lib/es6/caml_nativeint_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_nativeint_extern'>; +} +declare module 'bs-platform/lib/es6/caml_obj_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_obj_extern'>; +} +declare module 'bs-platform/lib/es6/caml_obj.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_obj'>; +} +declare module 'bs-platform/lib/es6/caml_oo_curry.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_oo_curry'>; +} +declare module 'bs-platform/lib/es6/caml_oo.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_oo'>; +} +declare module 'bs-platform/lib/es6/caml_option.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_option'>; +} +declare module 'bs-platform/lib/es6/caml_parser.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_parser'>; +} +declare module 'bs-platform/lib/es6/caml_primitive.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_primitive'>; +} +declare module 'bs-platform/lib/es6/caml_splice_call.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_splice_call'>; +} +declare module 'bs-platform/lib/es6/caml_string_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_string_extern'>; +} +declare module 'bs-platform/lib/es6/caml_string.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_string'>; +} +declare module 'bs-platform/lib/es6/caml_sys.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_sys'>; +} +declare module 'bs-platform/lib/es6/caml_undefined_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_undefined_extern'>; +} +declare module 'bs-platform/lib/es6/caml_utils.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_utils'>; +} +declare module 'bs-platform/lib/es6/caml_weak.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/caml_weak'>; +} +declare module 'bs-platform/lib/es6/camlinternalFormat.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/camlinternalFormat'>; +} +declare module 'bs-platform/lib/es6/camlinternalFormatBasics.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/camlinternalFormatBasics'>; +} +declare module 'bs-platform/lib/es6/camlinternalLazy.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/camlinternalLazy'>; +} +declare module 'bs-platform/lib/es6/camlinternalMod.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/camlinternalMod'>; +} +declare module 'bs-platform/lib/es6/camlinternalOO.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/camlinternalOO'>; +} +declare module 'bs-platform/lib/es6/char.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/char'>; +} +declare module 'bs-platform/lib/es6/complex.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/complex'>; +} +declare module 'bs-platform/lib/es6/curry.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/curry'>; +} +declare module 'bs-platform/lib/es6/digest.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/digest'>; +} +declare module 'bs-platform/lib/es6/dom_storage.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/dom_storage'>; +} +declare module 'bs-platform/lib/es6/dom_storage2.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/dom_storage2'>; +} +declare module 'bs-platform/lib/es6/dom.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/dom'>; +} +declare module 'bs-platform/lib/es6/filename.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/filename'>; +} +declare module 'bs-platform/lib/es6/format.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/format'>; +} +declare module 'bs-platform/lib/es6/gc.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/gc'>; +} +declare module 'bs-platform/lib/es6/genlex.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/genlex'>; +} +declare module 'bs-platform/lib/es6/hashtbl.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/hashtbl'>; +} +declare module 'bs-platform/lib/es6/int32.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/int32'>; +} +declare module 'bs-platform/lib/es6/int64.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/int64'>; +} +declare module 'bs-platform/lib/es6/js_array.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_array'>; +} +declare module 'bs-platform/lib/es6/js_array2.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_array2'>; +} +declare module 'bs-platform/lib/es6/js_cast.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_cast'>; +} +declare module 'bs-platform/lib/es6/js_console.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_console'>; +} +declare module 'bs-platform/lib/es6/js_date.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_date'>; +} +declare module 'bs-platform/lib/es6/js_dict.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_dict'>; +} +declare module 'bs-platform/lib/es6/js_exn.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_exn'>; +} +declare module 'bs-platform/lib/es6/js_float.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_float'>; +} +declare module 'bs-platform/lib/es6/js_global.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_global'>; +} +declare module 'bs-platform/lib/es6/js_int.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_int'>; +} +declare module 'bs-platform/lib/es6/js_json.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_json'>; +} +declare module 'bs-platform/lib/es6/js_list.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_list'>; +} +declare module 'bs-platform/lib/es6/js_mapperRt.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_mapperRt'>; +} +declare module 'bs-platform/lib/es6/js_math.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_math'>; +} +declare module 'bs-platform/lib/es6/js_null_undefined.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_null_undefined'>; +} +declare module 'bs-platform/lib/es6/js_null.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_null'>; +} +declare module 'bs-platform/lib/es6/js_obj.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_obj'>; +} +declare module 'bs-platform/lib/es6/js_option.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_option'>; +} +declare module 'bs-platform/lib/es6/js_promise.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_promise'>; +} +declare module 'bs-platform/lib/es6/js_re.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_re'>; +} +declare module 'bs-platform/lib/es6/js_result.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_result'>; +} +declare module 'bs-platform/lib/es6/js_string.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_string'>; +} +declare module 'bs-platform/lib/es6/js_string2.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_string2'>; +} +declare module 'bs-platform/lib/es6/js_typed_array.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_typed_array'>; +} +declare module 'bs-platform/lib/es6/js_typed_array2.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_typed_array2'>; +} +declare module 'bs-platform/lib/es6/js_types.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_types'>; +} +declare module 'bs-platform/lib/es6/js_undefined.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_undefined'>; +} +declare module 'bs-platform/lib/es6/js_vector.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js_vector'>; +} +declare module 'bs-platform/lib/es6/js.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/js'>; +} +declare module 'bs-platform/lib/es6/lazy.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/lazy'>; +} +declare module 'bs-platform/lib/es6/lexing.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/lexing'>; +} +declare module 'bs-platform/lib/es6/list.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/list'>; +} +declare module 'bs-platform/lib/es6/listLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/listLabels'>; +} +declare module 'bs-platform/lib/es6/map.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/map'>; +} +declare module 'bs-platform/lib/es6/marshal.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/marshal'>; +} +declare module 'bs-platform/lib/es6/moreLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/moreLabels'>; +} +declare module 'bs-platform/lib/es6/nativeint.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/nativeint'>; +} +declare module 'bs-platform/lib/es6/node_buffer.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/node_buffer'>; +} +declare module 'bs-platform/lib/es6/node_child_process.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/node_child_process'>; +} +declare module 'bs-platform/lib/es6/node_fs.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/node_fs'>; +} +declare module 'bs-platform/lib/es6/node_module.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/node_module'>; +} +declare module 'bs-platform/lib/es6/node_path.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/node_path'>; +} +declare module 'bs-platform/lib/es6/node_process.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/node_process'>; +} +declare module 'bs-platform/lib/es6/node.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/node'>; +} +declare module 'bs-platform/lib/es6/obj.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/obj'>; +} +declare module 'bs-platform/lib/es6/oo.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/oo'>; +} +declare module 'bs-platform/lib/es6/parsing.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/parsing'>; +} +declare module 'bs-platform/lib/es6/pervasives.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/pervasives'>; +} +declare module 'bs-platform/lib/es6/printexc.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/printexc'>; +} +declare module 'bs-platform/lib/es6/printf.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/printf'>; +} +declare module 'bs-platform/lib/es6/queue.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/queue'>; +} +declare module 'bs-platform/lib/es6/random.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/random'>; +} +declare module 'bs-platform/lib/es6/scanf.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/scanf'>; +} +declare module 'bs-platform/lib/es6/set.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/set'>; +} +declare module 'bs-platform/lib/es6/sort.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/sort'>; +} +declare module 'bs-platform/lib/es6/stack.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/stack'>; +} +declare module 'bs-platform/lib/es6/std_exit.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/std_exit'>; +} +declare module 'bs-platform/lib/es6/stdLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/stdLabels'>; +} +declare module 'bs-platform/lib/es6/stream.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/stream'>; +} +declare module 'bs-platform/lib/es6/string.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/string'>; +} +declare module 'bs-platform/lib/es6/stringLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/stringLabels'>; +} +declare module 'bs-platform/lib/es6/sys.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/sys'>; +} +declare module 'bs-platform/lib/es6/unix.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/unix'>; +} +declare module 'bs-platform/lib/es6/unixLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/unixLabels'>; +} +declare module 'bs-platform/lib/es6/weak.js' { + declare module.exports: $Exports<'bs-platform/lib/es6/weak'>; +} +declare module 'bs-platform/lib/js/arg.js' { + declare module.exports: $Exports<'bs-platform/lib/js/arg'>; +} +declare module 'bs-platform/lib/js/array.js' { + declare module.exports: $Exports<'bs-platform/lib/js/array'>; +} +declare module 'bs-platform/lib/js/arrayLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/js/arrayLabels'>; +} +declare module 'bs-platform/lib/js/belt_Array.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Array'>; +} +declare module 'bs-platform/lib/js/belt_Debug.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Debug'>; +} +declare module 'bs-platform/lib/js/belt_Float.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Float'>; +} +declare module 'bs-platform/lib/js/belt_HashMap.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_HashMap'>; +} +declare module 'bs-platform/lib/js/belt_HashMapInt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_HashMapInt'>; +} +declare module 'bs-platform/lib/js/belt_HashMapString.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_HashMapString'>; +} +declare module 'bs-platform/lib/js/belt_HashSet.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_HashSet'>; +} +declare module 'bs-platform/lib/js/belt_HashSetInt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_HashSetInt'>; +} +declare module 'bs-platform/lib/js/belt_HashSetString.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_HashSetString'>; +} +declare module 'bs-platform/lib/js/belt_Id.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Id'>; +} +declare module 'bs-platform/lib/js/belt_Int.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Int'>; +} +declare module 'bs-platform/lib/js/belt_internalAVLset.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_internalAVLset'>; +} +declare module 'bs-platform/lib/js/belt_internalAVLtree.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_internalAVLtree'>; +} +declare module 'bs-platform/lib/js/belt_internalBuckets.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_internalBuckets'>; +} +declare module 'bs-platform/lib/js/belt_internalBucketsType.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_internalBucketsType'>; +} +declare module 'bs-platform/lib/js/belt_internalMapInt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_internalMapInt'>; +} +declare module 'bs-platform/lib/js/belt_internalMapString.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_internalMapString'>; +} +declare module 'bs-platform/lib/js/belt_internalSetBuckets.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_internalSetBuckets'>; +} +declare module 'bs-platform/lib/js/belt_internalSetInt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_internalSetInt'>; +} +declare module 'bs-platform/lib/js/belt_internalSetString.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_internalSetString'>; +} +declare module 'bs-platform/lib/js/belt_List.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_List'>; +} +declare module 'bs-platform/lib/js/belt_Map.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Map'>; +} +declare module 'bs-platform/lib/js/belt_MapDict.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MapDict'>; +} +declare module 'bs-platform/lib/js/belt_MapInt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MapInt'>; +} +declare module 'bs-platform/lib/js/belt_MapString.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MapString'>; +} +declare module 'bs-platform/lib/js/belt_MutableMap.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MutableMap'>; +} +declare module 'bs-platform/lib/js/belt_MutableMapInt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MutableMapInt'>; +} +declare module 'bs-platform/lib/js/belt_MutableMapString.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MutableMapString'>; +} +declare module 'bs-platform/lib/js/belt_MutableQueue.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MutableQueue'>; +} +declare module 'bs-platform/lib/js/belt_MutableSet.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MutableSet'>; +} +declare module 'bs-platform/lib/js/belt_MutableSetInt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MutableSetInt'>; +} +declare module 'bs-platform/lib/js/belt_MutableSetString.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MutableSetString'>; +} +declare module 'bs-platform/lib/js/belt_MutableStack.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_MutableStack'>; +} +declare module 'bs-platform/lib/js/belt_Option.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Option'>; +} +declare module 'bs-platform/lib/js/belt_Range.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Range'>; +} +declare module 'bs-platform/lib/js/belt_Result.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Result'>; +} +declare module 'bs-platform/lib/js/belt_Set.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_Set'>; +} +declare module 'bs-platform/lib/js/belt_SetDict.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_SetDict'>; +} +declare module 'bs-platform/lib/js/belt_SetInt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_SetInt'>; +} +declare module 'bs-platform/lib/js/belt_SetString.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_SetString'>; +} +declare module 'bs-platform/lib/js/belt_SortArray.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_SortArray'>; +} +declare module 'bs-platform/lib/js/belt_SortArrayInt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_SortArrayInt'>; +} +declare module 'bs-platform/lib/js/belt_SortArrayString.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt_SortArrayString'>; +} +declare module 'bs-platform/lib/js/belt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/belt'>; +} +declare module 'bs-platform/lib/js/bigarray.js' { + declare module.exports: $Exports<'bs-platform/lib/js/bigarray'>; +} +declare module 'bs-platform/lib/js/block.js' { + declare module.exports: $Exports<'bs-platform/lib/js/block'>; +} +declare module 'bs-platform/lib/js/buffer.js' { + declare module.exports: $Exports<'bs-platform/lib/js/buffer'>; +} +declare module 'bs-platform/lib/js/bytes.js' { + declare module.exports: $Exports<'bs-platform/lib/js/bytes'>; +} +declare module 'bs-platform/lib/js/bytesLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/js/bytesLabels'>; +} +declare module 'bs-platform/lib/js/callback.js' { + declare module.exports: $Exports<'bs-platform/lib/js/callback'>; +} +declare module 'bs-platform/lib/js/caml_array_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_array_extern'>; +} +declare module 'bs-platform/lib/js/caml_array.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_array'>; +} +declare module 'bs-platform/lib/js/caml_builtin_exceptions.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_builtin_exceptions'>; +} +declare module 'bs-platform/lib/js/caml_bytes_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_bytes_extern'>; +} +declare module 'bs-platform/lib/js/caml_bytes.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_bytes'>; +} +declare module 'bs-platform/lib/js/caml_char.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_char'>; +} +declare module 'bs-platform/lib/js/caml_chrome_debugger.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_chrome_debugger'>; +} +declare module 'bs-platform/lib/js/caml_exceptions.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_exceptions'>; +} +declare module 'bs-platform/lib/js/caml_float_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_float_extern'>; +} +declare module 'bs-platform/lib/js/caml_float.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_float'>; +} +declare module 'bs-platform/lib/js/caml_format.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_format'>; +} +declare module 'bs-platform/lib/js/caml_gc.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_gc'>; +} +declare module 'bs-platform/lib/js/caml_hash_primitive.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_hash_primitive'>; +} +declare module 'bs-platform/lib/js/caml_hash.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_hash'>; +} +declare module 'bs-platform/lib/js/caml_int32_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_int32_extern'>; +} +declare module 'bs-platform/lib/js/caml_int32.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_int32'>; +} +declare module 'bs-platform/lib/js/caml_int64_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_int64_extern'>; +} +declare module 'bs-platform/lib/js/caml_int64.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_int64'>; +} +declare module 'bs-platform/lib/js/caml_io.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_io'>; +} +declare module 'bs-platform/lib/js/caml_js_exceptions.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_js_exceptions'>; +} +declare module 'bs-platform/lib/js/caml_lexer.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_lexer'>; +} +declare module 'bs-platform/lib/js/caml_md5.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_md5'>; +} +declare module 'bs-platform/lib/js/caml_missing_polyfill.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_missing_polyfill'>; +} +declare module 'bs-platform/lib/js/caml_module.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_module'>; +} +declare module 'bs-platform/lib/js/caml_nativeint_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_nativeint_extern'>; +} +declare module 'bs-platform/lib/js/caml_obj_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_obj_extern'>; +} +declare module 'bs-platform/lib/js/caml_obj.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_obj'>; +} +declare module 'bs-platform/lib/js/caml_oo_curry.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_oo_curry'>; +} +declare module 'bs-platform/lib/js/caml_oo.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_oo'>; +} +declare module 'bs-platform/lib/js/caml_option.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_option'>; +} +declare module 'bs-platform/lib/js/caml_parser.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_parser'>; +} +declare module 'bs-platform/lib/js/caml_primitive.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_primitive'>; +} +declare module 'bs-platform/lib/js/caml_splice_call.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_splice_call'>; +} +declare module 'bs-platform/lib/js/caml_string_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_string_extern'>; +} +declare module 'bs-platform/lib/js/caml_string.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_string'>; +} +declare module 'bs-platform/lib/js/caml_sys.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_sys'>; +} +declare module 'bs-platform/lib/js/caml_undefined_extern.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_undefined_extern'>; +} +declare module 'bs-platform/lib/js/caml_utils.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_utils'>; +} +declare module 'bs-platform/lib/js/caml_weak.js' { + declare module.exports: $Exports<'bs-platform/lib/js/caml_weak'>; +} +declare module 'bs-platform/lib/js/camlinternalBigarray.js' { + declare module.exports: $Exports<'bs-platform/lib/js/camlinternalBigarray'>; +} +declare module 'bs-platform/lib/js/camlinternalFormat.js' { + declare module.exports: $Exports<'bs-platform/lib/js/camlinternalFormat'>; +} +declare module 'bs-platform/lib/js/camlinternalFormatBasics.js' { + declare module.exports: $Exports<'bs-platform/lib/js/camlinternalFormatBasics'>; +} +declare module 'bs-platform/lib/js/camlinternalLazy.js' { + declare module.exports: $Exports<'bs-platform/lib/js/camlinternalLazy'>; +} +declare module 'bs-platform/lib/js/camlinternalMod.js' { + declare module.exports: $Exports<'bs-platform/lib/js/camlinternalMod'>; +} +declare module 'bs-platform/lib/js/camlinternalOO.js' { + declare module.exports: $Exports<'bs-platform/lib/js/camlinternalOO'>; +} +declare module 'bs-platform/lib/js/char.js' { + declare module.exports: $Exports<'bs-platform/lib/js/char'>; +} +declare module 'bs-platform/lib/js/complex.js' { + declare module.exports: $Exports<'bs-platform/lib/js/complex'>; +} +declare module 'bs-platform/lib/js/curry.js' { + declare module.exports: $Exports<'bs-platform/lib/js/curry'>; +} +declare module 'bs-platform/lib/js/digest.js' { + declare module.exports: $Exports<'bs-platform/lib/js/digest'>; +} +declare module 'bs-platform/lib/js/dom_storage.js' { + declare module.exports: $Exports<'bs-platform/lib/js/dom_storage'>; +} +declare module 'bs-platform/lib/js/dom_storage2.js' { + declare module.exports: $Exports<'bs-platform/lib/js/dom_storage2'>; +} +declare module 'bs-platform/lib/js/dom.js' { + declare module.exports: $Exports<'bs-platform/lib/js/dom'>; +} +declare module 'bs-platform/lib/js/ephemeron.js' { + declare module.exports: $Exports<'bs-platform/lib/js/ephemeron'>; +} +declare module 'bs-platform/lib/js/filename.js' { + declare module.exports: $Exports<'bs-platform/lib/js/filename'>; +} +declare module 'bs-platform/lib/js/format.js' { + declare module.exports: $Exports<'bs-platform/lib/js/format'>; +} +declare module 'bs-platform/lib/js/gc.js' { + declare module.exports: $Exports<'bs-platform/lib/js/gc'>; +} +declare module 'bs-platform/lib/js/genlex.js' { + declare module.exports: $Exports<'bs-platform/lib/js/genlex'>; +} +declare module 'bs-platform/lib/js/hashtbl.js' { + declare module.exports: $Exports<'bs-platform/lib/js/hashtbl'>; +} +declare module 'bs-platform/lib/js/int32.js' { + declare module.exports: $Exports<'bs-platform/lib/js/int32'>; +} +declare module 'bs-platform/lib/js/int64.js' { + declare module.exports: $Exports<'bs-platform/lib/js/int64'>; +} +declare module 'bs-platform/lib/js/js_array.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_array'>; +} +declare module 'bs-platform/lib/js/js_array2.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_array2'>; +} +declare module 'bs-platform/lib/js/js_cast.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_cast'>; +} +declare module 'bs-platform/lib/js/js_console.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_console'>; +} +declare module 'bs-platform/lib/js/js_date.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_date'>; +} +declare module 'bs-platform/lib/js/js_dict.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_dict'>; +} +declare module 'bs-platform/lib/js/js_exn.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_exn'>; +} +declare module 'bs-platform/lib/js/js_float.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_float'>; +} +declare module 'bs-platform/lib/js/js_global.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_global'>; +} +declare module 'bs-platform/lib/js/js_int.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_int'>; +} +declare module 'bs-platform/lib/js/js_json.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_json'>; +} +declare module 'bs-platform/lib/js/js_list.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_list'>; +} +declare module 'bs-platform/lib/js/js_mapperRt.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_mapperRt'>; +} +declare module 'bs-platform/lib/js/js_math.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_math'>; +} +declare module 'bs-platform/lib/js/js_null_undefined.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_null_undefined'>; +} +declare module 'bs-platform/lib/js/js_null.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_null'>; +} +declare module 'bs-platform/lib/js/js_obj.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_obj'>; +} +declare module 'bs-platform/lib/js/js_option.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_option'>; +} +declare module 'bs-platform/lib/js/js_promise.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_promise'>; +} +declare module 'bs-platform/lib/js/js_promise2.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_promise2'>; +} +declare module 'bs-platform/lib/js/js_re.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_re'>; +} +declare module 'bs-platform/lib/js/js_result.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_result'>; +} +declare module 'bs-platform/lib/js/js_string.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_string'>; +} +declare module 'bs-platform/lib/js/js_string2.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_string2'>; +} +declare module 'bs-platform/lib/js/js_typed_array.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_typed_array'>; +} +declare module 'bs-platform/lib/js/js_typed_array2.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_typed_array2'>; +} +declare module 'bs-platform/lib/js/js_types.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_types'>; +} +declare module 'bs-platform/lib/js/js_undefined.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_undefined'>; +} +declare module 'bs-platform/lib/js/js_vector.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js_vector'>; +} +declare module 'bs-platform/lib/js/js.js' { + declare module.exports: $Exports<'bs-platform/lib/js/js'>; +} +declare module 'bs-platform/lib/js/lazy.js' { + declare module.exports: $Exports<'bs-platform/lib/js/lazy'>; +} +declare module 'bs-platform/lib/js/lexing.js' { + declare module.exports: $Exports<'bs-platform/lib/js/lexing'>; +} +declare module 'bs-platform/lib/js/list.js' { + declare module.exports: $Exports<'bs-platform/lib/js/list'>; +} +declare module 'bs-platform/lib/js/listLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/js/listLabels'>; +} +declare module 'bs-platform/lib/js/map.js' { + declare module.exports: $Exports<'bs-platform/lib/js/map'>; +} +declare module 'bs-platform/lib/js/marshal.js' { + declare module.exports: $Exports<'bs-platform/lib/js/marshal'>; +} +declare module 'bs-platform/lib/js/moreLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/js/moreLabels'>; +} +declare module 'bs-platform/lib/js/nativeint.js' { + declare module.exports: $Exports<'bs-platform/lib/js/nativeint'>; +} +declare module 'bs-platform/lib/js/node_buffer.js' { + declare module.exports: $Exports<'bs-platform/lib/js/node_buffer'>; +} +declare module 'bs-platform/lib/js/node_child_process.js' { + declare module.exports: $Exports<'bs-platform/lib/js/node_child_process'>; +} +declare module 'bs-platform/lib/js/node_fs.js' { + declare module.exports: $Exports<'bs-platform/lib/js/node_fs'>; +} +declare module 'bs-platform/lib/js/node_fs2.js' { + declare module.exports: $Exports<'bs-platform/lib/js/node_fs2'>; +} +declare module 'bs-platform/lib/js/node_module.js' { + declare module.exports: $Exports<'bs-platform/lib/js/node_module'>; +} +declare module 'bs-platform/lib/js/node_path.js' { + declare module.exports: $Exports<'bs-platform/lib/js/node_path'>; +} +declare module 'bs-platform/lib/js/node_process.js' { + declare module.exports: $Exports<'bs-platform/lib/js/node_process'>; +} +declare module 'bs-platform/lib/js/node.js' { + declare module.exports: $Exports<'bs-platform/lib/js/node'>; +} +declare module 'bs-platform/lib/js/obj.js' { + declare module.exports: $Exports<'bs-platform/lib/js/obj'>; +} +declare module 'bs-platform/lib/js/oo.js' { + declare module.exports: $Exports<'bs-platform/lib/js/oo'>; +} +declare module 'bs-platform/lib/js/parsing.js' { + declare module.exports: $Exports<'bs-platform/lib/js/parsing'>; +} +declare module 'bs-platform/lib/js/pervasives.js' { + declare module.exports: $Exports<'bs-platform/lib/js/pervasives'>; +} +declare module 'bs-platform/lib/js/printexc.js' { + declare module.exports: $Exports<'bs-platform/lib/js/printexc'>; +} +declare module 'bs-platform/lib/js/printf.js' { + declare module.exports: $Exports<'bs-platform/lib/js/printf'>; +} +declare module 'bs-platform/lib/js/queue.js' { + declare module.exports: $Exports<'bs-platform/lib/js/queue'>; +} +declare module 'bs-platform/lib/js/random.js' { + declare module.exports: $Exports<'bs-platform/lib/js/random'>; +} +declare module 'bs-platform/lib/js/scanf.js' { + declare module.exports: $Exports<'bs-platform/lib/js/scanf'>; +} +declare module 'bs-platform/lib/js/set.js' { + declare module.exports: $Exports<'bs-platform/lib/js/set'>; +} +declare module 'bs-platform/lib/js/sort.js' { + declare module.exports: $Exports<'bs-platform/lib/js/sort'>; +} +declare module 'bs-platform/lib/js/spacetime.js' { + declare module.exports: $Exports<'bs-platform/lib/js/spacetime'>; +} +declare module 'bs-platform/lib/js/stack.js' { + declare module.exports: $Exports<'bs-platform/lib/js/stack'>; +} +declare module 'bs-platform/lib/js/std_exit.js' { + declare module.exports: $Exports<'bs-platform/lib/js/std_exit'>; +} +declare module 'bs-platform/lib/js/stdLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/js/stdLabels'>; +} +declare module 'bs-platform/lib/js/stream.js' { + declare module.exports: $Exports<'bs-platform/lib/js/stream'>; +} +declare module 'bs-platform/lib/js/string.js' { + declare module.exports: $Exports<'bs-platform/lib/js/string'>; +} +declare module 'bs-platform/lib/js/stringLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/js/stringLabels'>; +} +declare module 'bs-platform/lib/js/sys.js' { + declare module.exports: $Exports<'bs-platform/lib/js/sys'>; +} +declare module 'bs-platform/lib/js/uchar.js' { + declare module.exports: $Exports<'bs-platform/lib/js/uchar'>; +} +declare module 'bs-platform/lib/js/unix.js' { + declare module.exports: $Exports<'bs-platform/lib/js/unix'>; +} +declare module 'bs-platform/lib/js/unixLabels.js' { + declare module.exports: $Exports<'bs-platform/lib/js/unixLabels'>; +} +declare module 'bs-platform/lib/js/weak.js' { + declare module.exports: $Exports<'bs-platform/lib/js/weak'>; +} +declare module 'bs-platform/lib/minisocket.js' { + declare module.exports: $Exports<'bs-platform/lib/minisocket'>; +} +declare module 'bs-platform/scripts/buildocaml.js' { + declare module.exports: $Exports<'bs-platform/scripts/buildocaml'>; +} +declare module 'bs-platform/scripts/ciTest.js' { + declare module.exports: $Exports<'bs-platform/scripts/ciTest'>; +} +declare module 'bs-platform/scripts/config.js' { + declare module.exports: $Exports<'bs-platform/scripts/config'>; +} +declare module 'bs-platform/scripts/dedupe.js' { + declare module.exports: $Exports<'bs-platform/scripts/dedupe'>; +} +declare module 'bs-platform/scripts/doc_gen.js' { + declare module.exports: $Exports<'bs-platform/scripts/doc_gen'>; +} +declare module 'bs-platform/scripts/install.js' { + declare module.exports: $Exports<'bs-platform/scripts/install'>; +} +declare module 'bs-platform/scripts/js_internal_gen.js' { + declare module.exports: $Exports<'bs-platform/scripts/js_internal_gen'>; +} +declare module 'bs-platform/scripts/ninja.js' { + declare module.exports: $Exports<'bs-platform/scripts/ninja'>; +} +declare module 'bs-platform/scripts/ninjaFactory.js' { + declare module.exports: $Exports<'bs-platform/scripts/ninjaFactory'>; +} +declare module 'bs-platform/scripts/prebuilt.js' { + declare module.exports: $Exports<'bs-platform/scripts/prebuilt'>; +} +declare module 'bs-platform/scripts/prepublish.js' { + declare module.exports: $Exports<'bs-platform/scripts/prepublish'>; +} +declare module 'bs-platform/scripts/release.js' { + declare module.exports: $Exports<'bs-platform/scripts/release'>; +} +declare module 'bs-platform/scripts/repl.js' { + declare module.exports: $Exports<'bs-platform/scripts/repl'>; +} +declare module 'bs-platform/scripts/tasks.js' { + declare module.exports: $Exports<'bs-platform/scripts/tasks'>; +} +declare module 'bs-platform/scripts/tmp.js' { + declare module.exports: $Exports<'bs-platform/scripts/tmp'>; +} +declare module 'bs-platform/vendor/rollup.js' { + declare module.exports: $Exports<'bs-platform/vendor/rollup'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/flow-bin_v0.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/flow-bin_v0.x.x.js new file mode 100755 index 00000000..c538e208 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/flow-bin_v0.x.x.js @@ -0,0 +1,6 @@ +// flow-typed signature: 6a5610678d4b01e13bbfbbc62bdaf583 +// flow-typed version: 3817bc6980/flow-bin_v0.x.x/flow_>=v0.25.x + +declare module "flow-bin" { + declare module.exports: string; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/flow-typed_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/flow-typed_vx.x.x.js new file mode 100755 index 00000000..6c60d6e1 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/flow-typed_vx.x.x.js @@ -0,0 +1,193 @@ +// flow-typed signature: dd62bea1835a2fb9e0e691ba598ffea0 +// flow-typed version: <>/flow-typed_v^2.5.2/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'flow-typed' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'flow-typed' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'flow-typed/dist/cli' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/commands/create-stub' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/commands/install' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/commands/runTests' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/commands/search' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/commands/update-cache' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/commands/update' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/commands/validateDefs' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/commands/version' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/cacheRepoUtils' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/codeSign' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/fileUtils' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/flowProjectUtils' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/flowVersion' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/git' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/github' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/isInFlowTypedRepo' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/libDefs' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/node' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/npm/npmLibDefs' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/npm/npmProjectUtils' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/semver' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/stubUtils' { + declare module.exports: any; +} + +declare module 'flow-typed/dist/lib/ValidationError' { + declare module.exports: any; +} + +// Filename aliases +declare module 'flow-typed/dist/cli.js' { + declare module.exports: $Exports<'flow-typed/dist/cli'>; +} +declare module 'flow-typed/dist/commands/create-stub.js' { + declare module.exports: $Exports<'flow-typed/dist/commands/create-stub'>; +} +declare module 'flow-typed/dist/commands/install.js' { + declare module.exports: $Exports<'flow-typed/dist/commands/install'>; +} +declare module 'flow-typed/dist/commands/runTests.js' { + declare module.exports: $Exports<'flow-typed/dist/commands/runTests'>; +} +declare module 'flow-typed/dist/commands/search.js' { + declare module.exports: $Exports<'flow-typed/dist/commands/search'>; +} +declare module 'flow-typed/dist/commands/update-cache.js' { + declare module.exports: $Exports<'flow-typed/dist/commands/update-cache'>; +} +declare module 'flow-typed/dist/commands/update.js' { + declare module.exports: $Exports<'flow-typed/dist/commands/update'>; +} +declare module 'flow-typed/dist/commands/validateDefs.js' { + declare module.exports: $Exports<'flow-typed/dist/commands/validateDefs'>; +} +declare module 'flow-typed/dist/commands/version.js' { + declare module.exports: $Exports<'flow-typed/dist/commands/version'>; +} +declare module 'flow-typed/dist/lib/cacheRepoUtils.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/cacheRepoUtils'>; +} +declare module 'flow-typed/dist/lib/codeSign.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/codeSign'>; +} +declare module 'flow-typed/dist/lib/fileUtils.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/fileUtils'>; +} +declare module 'flow-typed/dist/lib/flowProjectUtils.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/flowProjectUtils'>; +} +declare module 'flow-typed/dist/lib/flowVersion.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/flowVersion'>; +} +declare module 'flow-typed/dist/lib/git.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/git'>; +} +declare module 'flow-typed/dist/lib/github.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/github'>; +} +declare module 'flow-typed/dist/lib/isInFlowTypedRepo.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/isInFlowTypedRepo'>; +} +declare module 'flow-typed/dist/lib/libDefs.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/libDefs'>; +} +declare module 'flow-typed/dist/lib/node.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/node'>; +} +declare module 'flow-typed/dist/lib/npm/npmLibDefs.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/npm/npmLibDefs'>; +} +declare module 'flow-typed/dist/lib/npm/npmProjectUtils.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/npm/npmProjectUtils'>; +} +declare module 'flow-typed/dist/lib/semver.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/semver'>; +} +declare module 'flow-typed/dist/lib/stubUtils.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/stubUtils'>; +} +declare module 'flow-typed/dist/lib/ValidationError.js' { + declare module.exports: $Exports<'flow-typed/dist/lib/ValidationError'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/gentype_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/gentype_vx.x.x.js new file mode 100755 index 00000000..4bd6f42f --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/gentype_vx.x.x.js @@ -0,0 +1,32 @@ +// flow-typed signature: 5406462180f642eb36d1b436c4300276 +// flow-typed version: <>/gentype_v^2.29.0/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'gentype' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'gentype' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'gentype/postinstall' { + declare module.exports: any; +} + +// Filename aliases +declare module 'gentype/postinstall.js' { + declare module.exports: $Exports<'gentype/postinstall'>; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/invariant_v2.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/invariant_v2.x.x.js new file mode 100755 index 00000000..63221787 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/invariant_v2.x.x.js @@ -0,0 +1,6 @@ +// flow-typed signature: 60de437d85342dea19dcd82c5a50f88a +// flow-typed version: da30fe6876/invariant_v2.x.x/flow_>=v0.33.x + +declare module invariant { + declare module.exports: (condition: boolean, message: string) => void; +} diff --git a/packages/reason-relay/language-plugin/flow-typed/npm/reason_vx.x.x.js b/packages/reason-relay/language-plugin/flow-typed/npm/reason_vx.x.x.js new file mode 100755 index 00000000..f44d0f85 --- /dev/null +++ b/packages/reason-relay/language-plugin/flow-typed/npm/reason_vx.x.x.js @@ -0,0 +1,32 @@ +// flow-typed signature: 64dad5091185ff73cfaaf966f216451c +// flow-typed version: <>/reason_v^3.3.4/flow_v0.101.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'reason' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'reason' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'reason/refmt' { + declare module.exports: any; +} + +// Filename aliases +declare module 'reason/refmt.js' { + declare module.exports: $Exports<'reason/refmt'>; +} diff --git a/packages/reason-relay/language-plugin/package.json b/packages/reason-relay/language-plugin/package.json new file mode 100755 index 00000000..7f2586a0 --- /dev/null +++ b/packages/reason-relay/language-plugin/package.json @@ -0,0 +1,44 @@ +{ + "name": "relay-compiler-language-reason", + "version": "1.0.0", + "main": "lib/index.js", + "files": [ + "lib" + ], + "license": "MIT", + "scripts": { + "relay": "relay-compiler --src ./test --language lib/index.js --schema schema.graphql", + "babel": "babel src --out-dir lib", + "build": "rm -rf lib && yarn babel && yarn bs:build", + "bs:build": "bsb -make-world", + "bs:start": "bsb -make-world -w", + "bs:clean": "bsb -clean-world" + }, + "devDependencies": { + "@babel/cli": "^7.4.4", + "@babel/core": "^7.4.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.4.4", + "@babel/preset-env": "^7.4.5", + "@babel/preset-flow": "^7.0.0", + "@babel/types": "^7.4.4", + "babel-plugin-module-resolver": "^3.2.0", + "flow-bin": "^0.101.0", + "flow-typed": "^2.5.2", + "gentype": "^2.29.0", + "relay-compiler": "^5.0.0", + "relay-runtime": "^5.0.0" + }, + "dependencies": { + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.5", + "bs-platform": "^5.0.5-beta.1", + "fbjs": "^1.0.0", + "graphql": "14.3.1", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "reason": "^3.3.4" + }, + "resolutions": { + "graphql": "14.3.1" + } +} diff --git a/packages/reason-relay/language-plugin/src/FindGraphQLTags.js b/packages/reason-relay/language-plugin/src/FindGraphQLTags.js new file mode 100755 index 00000000..f1c8ca49 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/FindGraphQLTags.js @@ -0,0 +1,52 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +'use strict'; +// $FlowFixMe +import type { GraphQLTag } from 'relay-compiler/language/RelayLanguagePluginInterface'; + +const invariant = require('invariant'); + +function parseFile(text, file) { + if (!text.includes('[%relay.')) { + return []; + } + + invariant( + text.indexOf('[%relay.') >= 0, + 'RelayFileIRParser: Files should be filtered before passed to the ' + + 'parser, got unfiltered file `%s`.', + file + ); + + /** + * This should eventually be done in a native Reason program and not through a (horrible) + * regexp, but this will do just to get things working. + */ + + const matched = text.match( + /(?<=\[%relay\.(query|fragment|mutation))([\s\S]*?)(?=];)/g + ); + + if (matched) { + // Removes {||} used in multiline Reason strings + return matched.map(text => ({ template: text.replace(/({\||\|})/g, '') })); + } + + return []; +} + +function find(text: string, filePath: string): Array { + return parseFile(text, filePath); +} + +module.exports = { + find +}; diff --git a/packages/reason-relay/language-plugin/src/RelayReasonGenerator.js b/packages/reason-relay/language-plugin/src/RelayReasonGenerator.js new file mode 100755 index 00000000..5f59f990 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/RelayReasonGenerator.js @@ -0,0 +1,593 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +'use strict'; + +import { GraphQLUnionType } from 'graphql'; + +const { + transformInputType, + transformScalarType +} = require('./RelayReasonTypeTransformers'); + +import type { GraphQLEnumType } from 'graphql'; +// $FlowFixMe +import { TypeGeneratorOptions } from 'relay-compiler'; +// $FlowFixMe +import type { Root } from 'relay-compiler/core/GraphQLIR'; +// $FlowFixMe +import type { IRTransform } from 'relay-compiler/core/GraphQLIRTransforms'; +import * as FlattenTransform from 'relay-compiler/lib/FlattenTransform'; +import * as IRVisitor from 'relay-compiler/lib/GraphQLIRVisitor'; +import * as RelayMaskTransform from 'relay-compiler/lib/RelayMaskTransform'; +import * as RelayMatchTransform from 'relay-compiler/lib/RelayMatchTransform'; +import * as RelayRefetchableFragmentTransform from 'relay-compiler/lib/RelayRefetchableFragmentTransform'; +import * as RelayRelayDirectiveTransform from 'relay-compiler/lib/RelayRelayDirectiveTransform'; +import { + makeFragment, + makeFragmentRefProp, + makeInputObject, + makeObj, + makeObjProp, + makeOperation, + makePluralFragment, + makeStandaloneObjectType, + makePropUnion, + makePropValue, + makeVariables +} from './generator/Generators.gen'; +import { + getFragmentRefName, + getInputTypeName, + makeRootType +} from './generator/Printer.gen'; +import type { propValues } from './generator/Types.gen'; +import type { SelectionMap, Selection } from './RelayTypeUtils'; +const { GraphQLString, isAbstractType } = require('graphql'); +const invariant = require('invariant'); +const nullthrows = require('nullthrows'); +const { + mergeSelection, + mergeSelections, + isPlural, + flattenArray, + isTypenameSelection, + hasTypenameSelection, + onlySelectsTypename +} = require('./RelayTypeUtils'); + +export type State = {| + ...TypeGeneratorOptions, + +generatedFragments: Set, + +generatedInputObjectTypes: { + [name: string]: Array | 'pending' + }, + +usedEnums: { [name: string]: GraphQLEnumType }, + +usedFragments: Set, + +usedUnions: { [identifier: string]: GraphQLUnionType } +|}; + +function generate(node: Root, options: TypeGeneratorOptions): string { + return IRVisitor.visit(node, createVisitor(options)); +} + +function makeProp( + selection: Selection, + state: State, + unmasked: boolean, + concreteType?: string +): propValues { + const { + key, + schemaName, + value, + conditional, + nodeType, + nodeSelections + } = selection; + if (key === '$fragmentRefs' && value) { + return makeFragmentRefProp(value); + } + + if (nodeType) { + return makeObjProp({ + name: key, + propValue: transformScalarType( + nodeType, + state, + selectionsToReason( + [Array.from(nullthrows(nodeSelections).values())], + state, + unmasked, + key + ), + conditional, + key + ) + }); + } + + if (value) { + return makeObjProp({ + name: key, + propValue: value + }); + } + + throw new Error('Something went horribly wrong!'); +} + +function selectionsToReason( + selections, + state: State, + unmasked: boolean, + parentKey?: string +): Array { + const baseFields = new Map(); + const byConcreteType = {}; + + flattenArray( + // $FlowFixMe + selections + ).forEach(selection => { + const { concreteType } = selection; + if (concreteType) { + byConcreteType[concreteType] = byConcreteType[concreteType] ?? []; + byConcreteType[concreteType].push(selection); + } else { + const previousSel = baseFields.get(selection.key); + + baseFields.set( + selection.key, + previousSel ? mergeSelection(selection, previousSel) : selection + ); + } + }); + + let types: Array> = []; + + if ( + Object.keys(byConcreteType).length && + onlySelectsTypename(Array.from(baseFields.values())) && + (hasTypenameSelection(Array.from(baseFields.values())) || + Object.keys(byConcreteType).every(type => + hasTypenameSelection(byConcreteType[type]) + )) + ) { + const typenameAliases = new Set(); + for (const concreteType in byConcreteType) { + types.push( + groupRefs([ + ...Array.from(baseFields.values()), + ...byConcreteType[concreteType] + ]).map(selection => { + if (selection.schemaName === '__typename') { + typenameAliases.add(selection.key); + } + return makeProp(selection, state, unmasked, concreteType); + }) + ); + } + } else { + let selectionMap = selectionsToMap(Array.from(baseFields.values())); + for (const concreteType in byConcreteType) { + selectionMap = mergeSelections( + selectionMap, + selectionsToMap( + byConcreteType[concreteType].map(sel => ({ + ...sel, + conditional: true + })) + ) + ); + } + const selectionMapValues = groupRefs(Array.from(selectionMap.values())).map( + sel => + isTypenameSelection(sel) && sel.concreteType + ? makeProp( + { ...sel, conditional: false }, + state, + unmasked, + sel.concreteType + ) + : makeProp(sel, state, unmasked) + ); + types.push(selectionMapValues); + } + + /** + * If there's more than 1 concrete type this is a union, + * and unions need to be treated differently since Reason + * does not support multiple types/shapes on a + * single prop like JS/Flow/TS does. + * + * So, we turn unions into an abstract "wrapped" type, and + * generate utils for unwrapping that to a more idiomatic + * Reason type (polymorphic variants in this case). + */ + if (parentKey && Object.keys(byConcreteType).length > 1) { + invariant( + selections[0].find(({ schemaName }) => schemaName === '__typename'), + `You must include the __typename field for every union you use. Failed for union on field: "${parentKey}".` + ); + + let unionKeyName = null; + + /** + * Pretty unlikely, but if there's more than one field in + * the given GraphQL string that returns the same union + * we'll need to add something to the name to make them + * not clash. This should hopefully happen extremely + * rarely. + */ + if (state.usedUnions[parentKey]) { + for (let i = 1; i <= 100; i += 1) { + let theName = parentKey + '_' + i.toString(); + + if (!state.usedUnions[theName]) { + state.usedUnions[theName] = byConcreteType; + unionKeyName = theName; + break; + } + } + } else { + state.usedUnions[parentKey] = byConcreteType; + unionKeyName = parentKey; + } + + if (!unionKeyName) { + throw new Error('Could not deconstruct union "' + parentKey + '".'); + } + + return [ + makeObjProp({ + name: parentKey, + propValue: makePropValue({ + nullable: true, + propType: makePropUnion(unionKeyName) + }) + }) + ]; + } + + return flattenArray(types); +} + +function generateUnions(state: State) { + return `module Unions { + ${Object.keys(state.usedUnions) + .map(unionName => { + const union = state.usedUnions[unionName]; + return `module Union_${unionName} = { + type wrapped; + + external __unwrap_union: wrapped => {. "__typename": string } = "%identity"; + ${Object.keys(union) + .map( + typeName => + `type type_${typeName} = ${makeStandaloneObjectType( + makeObj(selectionsToReason([union[typeName]], state, false)) + )};` + ) + .join('\n')} + ${Object.keys(union) + .map( + typeName => + `external __unwrap_${typeName}: wrapped => type_${typeName} = "%identity";` + ) + .join('\n')} + + type t = [ ${Object.keys(union) + .map(typeName => ` | \`${typeName}(type_${typeName}) `) + .join('\n')} | \`UnmappedUnionMember]; + + let unwrap = wrapped => { + let unwrappedUnion = wrapped |> __unwrap_union; + switch (unwrappedUnion##__typename) { + ${Object.keys(union) + .map( + typeName => + `| "${typeName}" => \`${typeName}(wrapped |> __unwrap_${typeName})` + ) + .join('\n')} + | _ => \`UnmappedUnionMember + }; + }; + };`; + }) + .join('\n')} + }; + ${Object.keys(state.usedUnions).length > 0 ? 'open Unions;' : ''}`; +} + +function createVisitor(options: TypeGeneratorOptions) { + const state: State = { + customScalars: options.customScalars, + enumsHasteModule: options.enumsHasteModule, + existingFragmentNames: options.existingFragmentNames, + generatedFragments: new Set(), + generatedInputObjectTypes: {}, + optionalInputFields: options.optionalInputFields, + usedEnums: {}, + usedUnions: {}, + usedFragments: new Set(), + useHaste: options.useHaste, + useSingleArtifactDirectory: options.useSingleArtifactDirectory, + noFutureProofEnums: options.noFutureProofEnums + }; + return { + leave: { + Root(node): string { + const inputVariablesType = generateInputVariablesType(node, state); + const inputObjectTypes = generateInputObjectTypes(state); + + const responseTypeSelections = selectionsToReason( + node.selections, + state, + false + ); + + /** + * Ugly, should be replaced with something smarter. + * But it's about making the type definitions recursive by chaining + * them with `and`. + */ + + const inp = [ + inputObjectTypes[0], + ...inputObjectTypes.slice(1).map(type => type.replace('type ', '')) + ] + .filter(Boolean) + .map(type => type.replace(';', '')) + .join(' and '); + + let returnStr = ''; + + returnStr += generateUnions(state); + returnStr += inp; + returnStr += inp ? ';' : ''; // Closing ; if there's input objects + returnStr += inputVariablesType; + returnStr += makeRootType( + makeOperation(makeObj(responseTypeSelections)) + ); + + return returnStr; + }, + /** + * @return {string} + */ + Fragment(node) { + let selections = flattenArray( + // $FlowFixMe + node.selections + ); + const numConecreteSelections = selections.filter(s => s.concreteType) + .length; + selections = selections.map(selection => { + if ( + numConecreteSelections <= 1 && + isTypenameSelection(selection) && + !isAbstractType(node.type) + ) { + return [ + { + ...selection, + concreteType: node.type.toString() + } + ]; + } + return [selection]; + }); + state.generatedFragments.add(node.name); + + const unmasked = node.metadata && node.metadata.mask === false; + const baseType = selectionsToReason( + selections, + state, + // $FlowFixMe + unmasked + ); + const type = makeObj(baseType); + + let returnStr = ''; + returnStr += generateUnions(state); + returnStr += makeRootType( + isPlural(node) ? makePluralFragment(type) : makeFragment(type) + ); + + returnStr += ` + type t; + type fragmentRef; + type fragmentRefSelector('a) = {.. "${getFragmentRefName( + node.name + )}": t } as 'a; + external getFragmentRef: fragmentRefSelector('a) => fragmentRef = "%identity"; + `; + + return returnStr; + }, + InlineFragment(node) { + const typeCondition = node.typeCondition; + return flattenArray( + // $FlowFixMe + node.selections + ).map(typeSelection => { + return isAbstractType(typeCondition) + ? { + ...typeSelection, + conditional: true + } + : { + ...typeSelection, + concreteType: typeCondition.toString() + }; + }); + }, + Condition(node) { + return flattenArray( + // $FlowFixMe + node.selections + ).map(selection => { + return { + ...selection, + conditional: true + }; + }); + }, + ScalarField(node) { + return [ + { + key: node.alias ?? node.name, + schemaName: node.name, + value: transformScalarType(node.type, state) + } + ]; + }, + LinkedField(node) { + return [ + { + key: node.alias ?? node.name, + schemaName: node.name, + nodeType: node.type, + nodeSelections: selectionsToMap( + flattenArray( + // $FlowFixMe + node.selections + ), + /* + * append concreteType to key so overlapping fields with different + * concreteTypes don't get overwritten by each other + */ + true + ) + } + ]; + }, + ModuleImport(node) { + return [ + { + key: '__fragmentPropName', + conditional: true, + value: transformScalarType(GraphQLString, state) + }, + { + key: '__module_component', + conditional: true, + value: transformScalarType(GraphQLString, state) + }, + { + key: '__fragments_' + node.name, + ref: node.name + } + ]; + }, + FragmentSpread(node) { + state.usedFragments.add(node.name); + return [ + { + key: '__fragments_' + node.name, + ref: node.name + } + ]; + } + } + }; +} + +function selectionsToMap( + selections: $ReadOnlyArray, + appendType?: boolean +): SelectionMap { + const map = new Map(); + selections.forEach(selection => { + const key = + appendType && selection.concreteType + ? `${selection.key}::${selection.concreteType}` + : selection.key; + const previousSel = map.get(key); + map.set( + key, + previousSel ? mergeSelection(previousSel, selection) : selection + ); + }); + return map; +} + +function generateInputObjectTypes(state: State) { + return Object.keys(state.generatedInputObjectTypes).map(typeIdentifier => { + const inputObjectType = state.generatedInputObjectTypes[typeIdentifier]; + invariant( + typeof inputObjectType !== 'string', + 'RelayCompilerFlowGenerator: Expected input object type to have been' + + ' defined before calling `generateInputObjectTypes`' + ); + + return makeRootType( + makeInputObject({ + name: getInputTypeName(typeIdentifier), + definition: makeObj(inputObjectType) + }) + ); + }); +} + +function generateInputVariablesType(node: Root, state: State) { + node.argumentDefinitions.forEach(arg => { + transformInputType(arg.type, state); + }); + + return makeRootType( + makeVariables( + makeObj( + node.argumentDefinitions.map(arg => + makeObjProp({ + name: arg.name, + propValue: transformInputType(arg.type, state) + }) + ) + ) + ) + ); +} + +function groupRefs(props): Array { + const result = []; + const refs = []; + props.forEach(prop => { + if (prop.ref) { + refs.push(prop.ref); + } else { + result.push(prop); + } + }); + if (refs.length > 0) { + refs.forEach(ref => { + result.push({ + key: '$fragmentRefs', + conditional: false, + value: ref + }); + }); + } + return result; +} + +const FLOW_TRANSFORMS: Array = [ + RelayRelayDirectiveTransform.transform, + RelayMaskTransform.transform, + RelayMatchTransform.transform, + FlattenTransform.transformWithOptions({}), + RelayRefetchableFragmentTransform.transform +]; + +module.exports = { + generate, + transforms: FLOW_TRANSFORMS +}; diff --git a/packages/reason-relay/language-plugin/src/RelayReasonTypeTransformers.js b/packages/reason-relay/language-plugin/src/RelayReasonTypeTransformers.js new file mode 100755 index 00000000..66a4c98a --- /dev/null +++ b/packages/reason-relay/language-plugin/src/RelayReasonTypeTransformers.js @@ -0,0 +1,197 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +'use strict'; + +import { getInputTypeName } from './generator/Printer.gen'; + +const { + GraphQLEnumType, + GraphQLInputObjectType, + GraphQLInterfaceType, + GraphQLList, + GraphQLNonNull, + GraphQLObjectType, + GraphQLScalarType, + GraphQLUnionType +} = require('graphql'); + +import type { GraphQLInputType, GraphQLType } from 'graphql'; +import { + makeObj, + makeObjProp, + makePropArray, + makePropEnum, + makePropObject, + makePropScalar, + makePropUnion, + makePropValue, + makeScalarAny, + makeScalarBoolean, + makeScalarCustom, + makeScalarFloat, + makeScalarInt, + makeScalarString, + makeTypeReference +} from './generator/Generators.gen'; +import type { propType, propValue, propValues } from './generator/Types.gen'; + +import type { State } from './RelayReasonGenerator'; + +function getInputObjectTypeIdentifier(type: GraphQLInputObjectType): string { + return type.name; +} + +function transformScalarType( + type: GraphQLType, + state: State, + objectProps?: Array, + conditional?: boolean, + parentKey?: string +): propValue { + if (type instanceof GraphQLNonNull) { + return makePropValue({ + nullable: !!conditional, + propType: transformNonNullableScalarType( + type.ofType, + state, + objectProps, + parentKey + ) + }); + } else { + return makePropValue({ + nullable: true, + propType: transformNonNullableScalarType( + type, + state, + objectProps, + parentKey + ) + }); + } +} + +function transformNonNullableScalarType( + type: GraphQLType, + state: State, + objectProps, + parentKey?: string +): propType { + if (type instanceof GraphQLList) { + return makePropArray( + transformScalarType( + type.ofType, + state, + objectProps, + undefined, + parentKey + ) + ); + } else if ( + objectProps && + (type instanceof GraphQLObjectType || type instanceof GraphQLInterfaceType) + ) { + return makePropObject(makeObj(objectProps)); + } else if (type instanceof GraphQLUnionType && parentKey != null) { + return makePropUnion(parentKey); + } else if (type instanceof GraphQLScalarType) { + return transformGraphQLScalarType(type, state); + } else if (type instanceof GraphQLEnumType) { + return transformGraphQLEnumType(type, state); + } else { + return makePropScalar(makeScalarAny()); + } +} + +function transformGraphQLScalarType( + type: GraphQLScalarType, + state: State +): propType { + const customType = state.customScalars[type.name]; + switch (customType || type.name) { + case 'ID': + case 'String': + return makePropScalar(makeScalarString()); + case 'Float': + return makePropScalar(makeScalarFloat()); + case 'Int': + return makePropScalar(makeScalarInt()); + case 'Boolean': + return makePropScalar(makeScalarBoolean()); + default: + return customType == null + ? makePropScalar(makeScalarAny()) + : makePropScalar(makeScalarCustom(customType)); + } +} + +function transformGraphQLEnumType( + type: GraphQLEnumType, + state: State +): propType { + state.usedEnums[type.name] = type; + return makePropEnum(type.name); +} + +function transformInputType( + type: GraphQLInputType, + state: State +): propValue { + if (type instanceof GraphQLNonNull) { + return makePropValue({ + nullable: false, + propType: transformNonNullableInputType(type.ofType, state) + }); + } else { + return makePropValue({ + nullable: true, + propType: transformNonNullableInputType(type, state) + }); + } +} + +function transformNonNullableInputType( + type: GraphQLInputType, + state: State +): propType { + if (type instanceof GraphQLList) { + return makePropArray(transformInputType(type.ofType, state)); + } else if (type instanceof GraphQLScalarType) { + return transformGraphQLScalarType(type, state); + } else if (type instanceof GraphQLEnumType) { + return transformGraphQLEnumType(type, state); + } else if (type instanceof GraphQLInputObjectType) { + const typeIdentifier = getInputObjectTypeIdentifier(type); + if (state.generatedInputObjectTypes[typeIdentifier]) { + return makeTypeReference(getInputTypeName(typeIdentifier)); + } + + state.generatedInputObjectTypes[typeIdentifier] = 'pending'; + const fields = type.getFields(); + const props: Array = Object.keys(fields) + .map(key => fields[key]) + .map(field => { + return makeObjProp({ + name: field.name, + propValue: transformInputType(field.type, state) + }); + }); + state.generatedInputObjectTypes[typeIdentifier] = props; + return makeTypeReference(getInputTypeName(typeIdentifier)); + } else { + throw new Error(`Could not convert from GraphQL type ${type.toString()}`); + } +} + +module.exports = { + transformInputType: transformInputType, + transformScalarType: transformScalarType +}; diff --git a/packages/reason-relay/language-plugin/src/RelayTypeUtils.js b/packages/reason-relay/language-plugin/src/RelayTypeUtils.js new file mode 100644 index 00000000..679e1fd0 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/RelayTypeUtils.js @@ -0,0 +1,66 @@ +// @flow +const nullthrows = require('nullthrows'); + +export type Selection = { + key: string, + schemaName?: string, + value?: any, + nodeType?: any, + conditional?: boolean, + concreteType?: string, + ref?: string, + nodeSelections?: ?SelectionMap +}; +export type SelectionMap = Map; + +function mergeSelection(a: ?Selection, b: Selection): Selection { + if (!a) { + return { + ...b, + conditional: true + }; + } + return { + ...a, + nodeSelections: a.nodeSelections + ? mergeSelections(a.nodeSelections, nullthrows(b.nodeSelections)) + : null, + conditional: a.conditional && b.conditional + }; +} + +function mergeSelections(a: SelectionMap, b: SelectionMap): SelectionMap { + const merged = new Map(); + for (const [key, value] of a.entries()) { + merged.set(key, value); + } + for (const [key, value] of b.entries()) { + merged.set(key, mergeSelection(a.get(key), value)); + } + return merged; +} + +// $FlowFixMe +function isPlural(node: Fragment): boolean { + return Boolean(node.metadata && node.metadata.plural); +} + +function flattenArray(arrayOfArrays: Array>): Array { + const result = []; + arrayOfArrays.forEach(array => result.push(...array)); + return result; +} + +const isTypenameSelection = (selection: Selection) => selection.schemaName === '__typename'; +const hasTypenameSelection = (selections: Array) => selections.some(isTypenameSelection); +const onlySelectsTypename = (selections: Array) => selections.every(isTypenameSelection); + +module.exports = { + mergeSelection, + mergeSelections, + isPlural, + flattenArray, + isTypenameSelection, + hasTypenameSelection, + onlySelectsTypename +}; diff --git a/packages/reason-relay/language-plugin/src/bindings/Reason.bs.js b/packages/reason-relay/language-plugin/src/bindings/Reason.bs.js new file mode 100644 index 00000000..5939d122 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/bindings/Reason.bs.js @@ -0,0 +1,2 @@ +// Generated by BUCKLESCRIPT VERSION 5.0.5-beta.1, PLEASE EDIT WITH CARE +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/reason-relay/language-plugin/src/bindings/Reason.re b/packages/reason-relay/language-plugin/src/bindings/Reason.re new file mode 100755 index 00000000..f783910d --- /dev/null +++ b/packages/reason-relay/language-plugin/src/bindings/Reason.re @@ -0,0 +1,5 @@ +type reasonAst; + +[@bs.module "reason"] external parseRE: string => reasonAst = ""; + +[@bs.module "reason"] external printRE: reasonAst => string = ""; \ No newline at end of file diff --git a/packages/reason-relay/language-plugin/src/formatGeneratedModule.js b/packages/reason-relay/language-plugin/src/formatGeneratedModule.js new file mode 100755 index 00000000..c8ac4ceb --- /dev/null +++ b/packages/reason-relay/language-plugin/src/formatGeneratedModule.js @@ -0,0 +1,49 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +'use strict'; + +// $FlowFixMe +import type { FormatModule } from '../RelayLanguagePluginInterface'; +import { printCode } from './generator/Printer.gen'; + +const formatGeneratedModule: FormatModule = ({ + moduleName, + documentType, + docText, + concreteText, + typeText, + kind, + hash, + sourceHash +}) => { + const modName = moduleName.split('_graphql')[0]; + + const opKind: null | 'fragment' | 'query' | 'mutation' = + kind === 'Fragment' + ? 'fragment' + : modName.endsWith('Query') + ? 'query' + : modName.endsWith('Mutation') + ? 'mutation' + : null; + + if (!opKind) { + throw new Error('Something went wrong, uninterpreted module type: "' + moduleName + '"'); + } + + return printCode(` +${typeText || ''} + +let node: ReasonRelay.${opKind}Node = [%bs.raw {| ${concreteText} |}]; +`); +}; + +module.exports = formatGeneratedModule; diff --git a/packages/reason-relay/language-plugin/src/generator/Generators.bs.js b/packages/reason-relay/language-plugin/src/generator/Generators.bs.js new file mode 100755 index 00000000..ab4c86e3 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/generator/Generators.bs.js @@ -0,0 +1,131 @@ +// Generated by BUCKLESCRIPT VERSION 5.0.5-beta.1, PLEASE EDIT WITH CARE +'use strict'; + +var Block = require("bs-platform/lib/js/block.js"); +var Printer = require("./Printer.bs.js"); + +function makeScalarInt(param) { + return /* Int */0; +} + +function makeScalarString(param) { + return /* String */1; +} + +function makeScalarFloat(param) { + return /* Float */2; +} + +function makeScalarBoolean(param) { + return /* Boolean */3; +} + +function makeScalarCustom(identifier) { + return /* CustomScalar */[identifier]; +} + +function makeScalarAny(param) { + return /* Any */4; +} + +function makePropScalar(scalarValue) { + return /* Scalar */Block.__(0, [scalarValue]); +} + +function makePropEnum(name) { + return /* Enum */Block.__(1, [name]); +} + +function makePropUnion(name) { + return /* Union */Block.__(6, [name]); +} + +function makePropObject(obj) { + return /* Object */Block.__(2, [obj]); +} + +function makePropArray(propValue) { + return /* Array */Block.__(3, [propValue]); +} + +function makeFragmentRefValue(name) { + return /* FragmentRefValue */Block.__(4, [name]); +} + +function makePropValue(nullable, propType, param) { + return /* record */[ + /* nullable */nullable, + /* propType */propType + ]; +} + +function makeFragmentRefProp(name) { + return /* FragmentRef */Block.__(0, [name]); +} + +function makeObjProp(name, propValue, param) { + return /* Prop */Block.__(1, [ + name, + propValue + ]); +} + +function makeTypeReference(typeName) { + return /* TypeReference */Block.__(5, [typeName]); +} + +function makeObj(propValues) { + return /* record */[/* values */propValues]; +} + +function makeOperation(definition) { + return /* Operation */Block.__(0, [definition]); +} + +function makeFragment(definition) { + return /* Fragment */Block.__(1, [definition]); +} + +function makePluralFragment(definition) { + return /* PluralFragment */Block.__(4, [definition]); +} + +function makeVariables(definition) { + return /* Variables */Block.__(2, [definition]); +} + +function makeStandaloneObjectType(definition) { + return Printer.printObject(definition, /* JsNullable */0); +} + +function makeInputObject(name, definition) { + return /* InputObject */Block.__(3, [ + name, + definition + ]); +} + +exports.makeScalarInt = makeScalarInt; +exports.makeScalarString = makeScalarString; +exports.makeScalarFloat = makeScalarFloat; +exports.makeScalarBoolean = makeScalarBoolean; +exports.makeScalarCustom = makeScalarCustom; +exports.makeScalarAny = makeScalarAny; +exports.makePropScalar = makePropScalar; +exports.makePropEnum = makePropEnum; +exports.makePropUnion = makePropUnion; +exports.makePropObject = makePropObject; +exports.makePropArray = makePropArray; +exports.makeFragmentRefValue = makeFragmentRefValue; +exports.makePropValue = makePropValue; +exports.makeFragmentRefProp = makeFragmentRefProp; +exports.makeObjProp = makeObjProp; +exports.makeTypeReference = makeTypeReference; +exports.makeObj = makeObj; +exports.makeOperation = makeOperation; +exports.makeFragment = makeFragment; +exports.makePluralFragment = makePluralFragment; +exports.makeVariables = makeVariables; +exports.makeStandaloneObjectType = makeStandaloneObjectType; +exports.makeInputObject = makeInputObject; +/* Printer Not a pure module */ diff --git a/packages/reason-relay/language-plugin/src/generator/Generators.gen.js b/packages/reason-relay/language-plugin/src/generator/Generators.gen.js new file mode 100755 index 00000000..bb97eeb8 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/generator/Generators.gen.js @@ -0,0 +1,1206 @@ +/** + * @flow strict + * @generated + * @nolint + */ +/* eslint-disable */ +// $FlowExpectedError: Reason checked type sufficiently +type $any = any; + +const $$toJS635221987 = {"0": "Int", "1": "String", "2": "Float", "3": "Boolean", "4": "Any"}; + +const $$toRE635221987 = {"Int": 0, "String": 1, "Float": 2, "Boolean": 3, "Any": 4}; + +// $FlowExpectedError: Reason checked type sufficiently +import * as CreateBucklescriptBlock from 'bs-platform/lib/es6/block.js'; + +// $FlowExpectedError: Reason checked type sufficiently +import * as Curry from 'bs-platform/lib/es6/curry.js'; + +// $FlowExpectedError: Reason checked type sufficiently +import * as GeneratorsBS from './Generators.bs'; + +// flowlint-next-line nonstrict-import:off +import type {object_ as Types_object_} from './Types.gen'; + +// flowlint-next-line nonstrict-import:off +import type {propType as Types_propType} from './Types.gen'; + +// flowlint-next-line nonstrict-import:off +import type {propValue as Types_propValue} from './Types.gen'; + +// flowlint-next-line nonstrict-import:off +import type {propValues as Types_propValues} from './Types.gen'; + +// flowlint-next-line nonstrict-import:off +import type {rootType as Types_rootType} from './Types.gen'; + +// flowlint-next-line nonstrict-import:off +import type {scalarValues as Types_scalarValues} from './Types.gen'; + +export const makeScalarInt: (void) => Types_scalarValues = function (Arg1: $any) { + const result = GeneratorsBS.makeScalarInt(Arg1); + return typeof(result) === 'object' + ? {tag:"CustomScalar", value:result[0]} + : $$toJS635221987[result] +}; + +export const makeScalarString: (void) => Types_scalarValues = function (Arg1: $any) { + const result = GeneratorsBS.makeScalarString(Arg1); + return typeof(result) === 'object' + ? {tag:"CustomScalar", value:result[0]} + : $$toJS635221987[result] +}; + +export const makeScalarFloat: (void) => Types_scalarValues = function (Arg1: $any) { + const result = GeneratorsBS.makeScalarFloat(Arg1); + return typeof(result) === 'object' + ? {tag:"CustomScalar", value:result[0]} + : $$toJS635221987[result] +}; + +export const makeScalarBoolean: (void) => Types_scalarValues = function (Arg1: $any) { + const result = GeneratorsBS.makeScalarBoolean(Arg1); + return typeof(result) === 'object' + ? {tag:"CustomScalar", value:result[0]} + : $$toJS635221987[result] +}; + +export const makeScalarCustom: (string) => Types_scalarValues = function (Arg1: $any) { + const result = GeneratorsBS.makeScalarCustom(Arg1); + return typeof(result) === 'object' + ? {tag:"CustomScalar", value:result[0]} + : $$toJS635221987[result] +}; + +export const makeScalarAny: (void) => Types_scalarValues = function (Arg1: $any) { + const result = GeneratorsBS.makeScalarAny(Arg1); + return typeof(result) === 'object' + ? {tag:"CustomScalar", value:result[0]} + : $$toJS635221987[result] +}; + +export const makePropScalar: (Types_scalarValues) => Types_propType = function (Arg1: $any) { + const result = GeneratorsBS.makePropScalar(typeof(Arg1) === 'object' + ? CreateBucklescriptBlock.__(0, [Arg1.value]) + : $$toRE635221987[Arg1]); + return result.tag===0 + ? {tag:"Scalar", value:typeof(result[0]) === 'object' + ? {tag:"CustomScalar", value:result[0][0]} + : $$toJS635221987[result[0]]} + : result.tag===1 + ? {tag:"Enum", value:result[0]} + : result.tag===2 + ? {tag:"Object", value:{values:result[0][0].map(function _element(ArrayItem: $any) { return ArrayItem.tag===0 + ? {tag:"FragmentRef", value:ArrayItem[0]} + : {tag:"Prop", value:[ArrayItem.slice()[0], {nullable:ArrayItem.slice()[1][0], propType:ArrayItem.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem.slice()[1][1][0]]} + : ArrayItem.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"Array", value:{nullable:result[0][0], propType:result[0][1].tag===0 + ? {tag:"Scalar", value:typeof(result[0][1][0]) === 'object' + ? {tag:"CustomScalar", value:result[0][1][0][0]} + : $$toJS635221987[result[0][1][0]]} + : result[0][1].tag===1 + ? {tag:"Enum", value:result[0][1][0]} + : result[0][1].tag===2 + ? {tag:"Object", value:{values:result[0][1][0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:ArrayItem1.slice()}})}} + : result[0][1].tag===3 + ? {tag:"Array", value:result[0][1][0]} + : result[0][1].tag===4 + ? {tag:"FragmentRefValue", value:result[0][1][0]} + : result[0][1].tag===5 + ? {tag:"TypeReference", value:result[0][1][0]} + : {tag:"Union", value:result[0][1][0]}}} + : result.tag===4 + ? {tag:"FragmentRefValue", value:result[0]} + : result.tag===5 + ? {tag:"TypeReference", value:result[0]} + : {tag:"Union", value:result[0]} +}; + +export const makePropEnum: (string) => Types_propType = function (Arg1: $any) { + const result = GeneratorsBS.makePropEnum(Arg1); + return result.tag===0 + ? {tag:"Scalar", value:typeof(result[0]) === 'object' + ? {tag:"CustomScalar", value:result[0][0]} + : $$toJS635221987[result[0]]} + : result.tag===1 + ? {tag:"Enum", value:result[0]} + : result.tag===2 + ? {tag:"Object", value:{values:result[0][0].map(function _element(ArrayItem: $any) { return ArrayItem.tag===0 + ? {tag:"FragmentRef", value:ArrayItem[0]} + : {tag:"Prop", value:[ArrayItem.slice()[0], {nullable:ArrayItem.slice()[1][0], propType:ArrayItem.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem.slice()[1][1][0]]} + : ArrayItem.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"Array", value:{nullable:result[0][0], propType:result[0][1].tag===0 + ? {tag:"Scalar", value:typeof(result[0][1][0]) === 'object' + ? {tag:"CustomScalar", value:result[0][1][0][0]} + : $$toJS635221987[result[0][1][0]]} + : result[0][1].tag===1 + ? {tag:"Enum", value:result[0][1][0]} + : result[0][1].tag===2 + ? {tag:"Object", value:{values:result[0][1][0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:ArrayItem1.slice()}})}} + : result[0][1].tag===3 + ? {tag:"Array", value:result[0][1][0]} + : result[0][1].tag===4 + ? {tag:"FragmentRefValue", value:result[0][1][0]} + : result[0][1].tag===5 + ? {tag:"TypeReference", value:result[0][1][0]} + : {tag:"Union", value:result[0][1][0]}}} + : result.tag===4 + ? {tag:"FragmentRefValue", value:result[0]} + : result.tag===5 + ? {tag:"TypeReference", value:result[0]} + : {tag:"Union", value:result[0]} +}; + +export const makePropUnion: (string) => Types_propType = function (Arg1: $any) { + const result = GeneratorsBS.makePropUnion(Arg1); + return result.tag===0 + ? {tag:"Scalar", value:typeof(result[0]) === 'object' + ? {tag:"CustomScalar", value:result[0][0]} + : $$toJS635221987[result[0]]} + : result.tag===1 + ? {tag:"Enum", value:result[0]} + : result.tag===2 + ? {tag:"Object", value:{values:result[0][0].map(function _element(ArrayItem: $any) { return ArrayItem.tag===0 + ? {tag:"FragmentRef", value:ArrayItem[0]} + : {tag:"Prop", value:[ArrayItem.slice()[0], {nullable:ArrayItem.slice()[1][0], propType:ArrayItem.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem.slice()[1][1][0]]} + : ArrayItem.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"Array", value:{nullable:result[0][0], propType:result[0][1].tag===0 + ? {tag:"Scalar", value:typeof(result[0][1][0]) === 'object' + ? {tag:"CustomScalar", value:result[0][1][0][0]} + : $$toJS635221987[result[0][1][0]]} + : result[0][1].tag===1 + ? {tag:"Enum", value:result[0][1][0]} + : result[0][1].tag===2 + ? {tag:"Object", value:{values:result[0][1][0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:ArrayItem1.slice()}})}} + : result[0][1].tag===3 + ? {tag:"Array", value:result[0][1][0]} + : result[0][1].tag===4 + ? {tag:"FragmentRefValue", value:result[0][1][0]} + : result[0][1].tag===5 + ? {tag:"TypeReference", value:result[0][1][0]} + : {tag:"Union", value:result[0][1][0]}}} + : result.tag===4 + ? {tag:"FragmentRefValue", value:result[0]} + : result.tag===5 + ? {tag:"TypeReference", value:result[0]} + : {tag:"Union", value:result[0]} +}; + +export const makePropObject: (Types_object_) => Types_propType = function (Arg1: $any) { + const result = GeneratorsBS.makePropObject([Arg1.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[ArrayItem.value[1].propType.value.values]]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})]); + return result.tag===0 + ? {tag:"Scalar", value:typeof(result[0]) === 'object' + ? {tag:"CustomScalar", value:result[0][0]} + : $$toJS635221987[result[0]]} + : result.tag===1 + ? {tag:"Enum", value:result[0]} + : result.tag===2 + ? {tag:"Object", value:{values:result[0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:[ArrayItem1.slice()[0], {nullable:ArrayItem1.slice()[1][0], propType:ArrayItem1.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem1.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem1.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem1.slice()[1][1][0]]} + : ArrayItem1.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem1.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem1.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"Array", value:{nullable:result[0][0], propType:result[0][1].tag===0 + ? {tag:"Scalar", value:typeof(result[0][1][0]) === 'object' + ? {tag:"CustomScalar", value:result[0][1][0][0]} + : $$toJS635221987[result[0][1][0]]} + : result[0][1].tag===1 + ? {tag:"Enum", value:result[0][1][0]} + : result[0][1].tag===2 + ? {tag:"Object", value:{values:result[0][1][0][0].map(function _element(ArrayItem2: $any) { return ArrayItem2.tag===0 + ? {tag:"FragmentRef", value:ArrayItem2[0]} + : {tag:"Prop", value:ArrayItem2.slice()}})}} + : result[0][1].tag===3 + ? {tag:"Array", value:result[0][1][0]} + : result[0][1].tag===4 + ? {tag:"FragmentRefValue", value:result[0][1][0]} + : result[0][1].tag===5 + ? {tag:"TypeReference", value:result[0][1][0]} + : {tag:"Union", value:result[0][1][0]}}} + : result.tag===4 + ? {tag:"FragmentRefValue", value:result[0]} + : result.tag===5 + ? {tag:"TypeReference", value:result[0]} + : {tag:"Union", value:result[0]} +}; + +export const makePropArray: (Types_propValue) => Types_propType = function (Arg1: $any) { + const result = GeneratorsBS.makePropArray([Arg1.nullable, Arg1.propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(Arg1.propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [Arg1.propType.value.value]) + : $$toRE635221987[Arg1.propType.value]]) + : Arg1.propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [Arg1.propType.value]) + : Arg1.propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[Arg1.propType.value.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType]])})]]) + : Arg1.propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [[Arg1.propType.value.nullable, Arg1.propType.value.propType]]) + : Arg1.propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [Arg1.propType.value]) + : Arg1.propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [Arg1.propType.value]) + : CreateBucklescriptBlock.__(6, [Arg1.propType.value])]); + return result.tag===0 + ? {tag:"Scalar", value:typeof(result[0]) === 'object' + ? {tag:"CustomScalar", value:result[0][0]} + : $$toJS635221987[result[0]]} + : result.tag===1 + ? {tag:"Enum", value:result[0]} + : result.tag===2 + ? {tag:"Object", value:{values:result[0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:[ArrayItem1.slice()[0], {nullable:ArrayItem1.slice()[1][0], propType:ArrayItem1.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem1.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem1.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem1.slice()[1][1][0]]} + : ArrayItem1.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem1.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem1.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"Array", value:{nullable:result[0][0], propType:result[0][1].tag===0 + ? {tag:"Scalar", value:typeof(result[0][1][0]) === 'object' + ? {tag:"CustomScalar", value:result[0][1][0][0]} + : $$toJS635221987[result[0][1][0]]} + : result[0][1].tag===1 + ? {tag:"Enum", value:result[0][1][0]} + : result[0][1].tag===2 + ? {tag:"Object", value:{values:result[0][1][0][0].map(function _element(ArrayItem2: $any) { return ArrayItem2.tag===0 + ? {tag:"FragmentRef", value:ArrayItem2[0]} + : {tag:"Prop", value:ArrayItem2.slice()}})}} + : result[0][1].tag===3 + ? {tag:"Array", value:result[0][1][0]} + : result[0][1].tag===4 + ? {tag:"FragmentRefValue", value:result[0][1][0]} + : result[0][1].tag===5 + ? {tag:"TypeReference", value:result[0][1][0]} + : {tag:"Union", value:result[0][1][0]}}} + : result.tag===4 + ? {tag:"FragmentRefValue", value:result[0]} + : result.tag===5 + ? {tag:"TypeReference", value:result[0]} + : {tag:"Union", value:result[0]} +}; + +export const makeFragmentRefValue: (string) => Types_propType = function (Arg1: $any) { + const result = GeneratorsBS.makeFragmentRefValue(Arg1); + return result.tag===0 + ? {tag:"Scalar", value:typeof(result[0]) === 'object' + ? {tag:"CustomScalar", value:result[0][0]} + : $$toJS635221987[result[0]]} + : result.tag===1 + ? {tag:"Enum", value:result[0]} + : result.tag===2 + ? {tag:"Object", value:{values:result[0][0].map(function _element(ArrayItem: $any) { return ArrayItem.tag===0 + ? {tag:"FragmentRef", value:ArrayItem[0]} + : {tag:"Prop", value:[ArrayItem.slice()[0], {nullable:ArrayItem.slice()[1][0], propType:ArrayItem.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem.slice()[1][1][0]]} + : ArrayItem.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"Array", value:{nullable:result[0][0], propType:result[0][1].tag===0 + ? {tag:"Scalar", value:typeof(result[0][1][0]) === 'object' + ? {tag:"CustomScalar", value:result[0][1][0][0]} + : $$toJS635221987[result[0][1][0]]} + : result[0][1].tag===1 + ? {tag:"Enum", value:result[0][1][0]} + : result[0][1].tag===2 + ? {tag:"Object", value:{values:result[0][1][0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:ArrayItem1.slice()}})}} + : result[0][1].tag===3 + ? {tag:"Array", value:result[0][1][0]} + : result[0][1].tag===4 + ? {tag:"FragmentRefValue", value:result[0][1][0]} + : result[0][1].tag===5 + ? {tag:"TypeReference", value:result[0][1][0]} + : {tag:"Union", value:result[0][1][0]}}} + : result.tag===4 + ? {tag:"FragmentRefValue", value:result[0]} + : result.tag===5 + ? {tag:"TypeReference", value:result[0]} + : {tag:"Union", value:result[0]} +}; + +export const makePropValue: ({| +nullable: boolean, +propType: Types_propType |}, void) => Types_propValue = function (Arg1: $any, Arg2: $any) { + const result = Curry._3(GeneratorsBS.makePropValue, Arg1.nullable, Arg1.propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(Arg1.propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [Arg1.propType.value.value]) + : $$toRE635221987[Arg1.propType.value]]) + : Arg1.propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [Arg1.propType.value]) + : Arg1.propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[Arg1.propType.value.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})]]) + : Arg1.propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [[Arg1.propType.value.nullable, Arg1.propType.value.propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(Arg1.propType.value.propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [Arg1.propType.value.propType.value.value]) + : $$toRE635221987[Arg1.propType.value.propType.value]]) + : Arg1.propType.value.propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [Arg1.propType.value.propType.value]) + : Arg1.propType.value.propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[Arg1.propType.value.propType.value.values.map(function _element(ArrayItem1: $any) { return ArrayItem1.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem1.value]) + : CreateBucklescriptBlock.__(1, ArrayItem1.value)})]]) + : Arg1.propType.value.propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [Arg1.propType.value.propType.value]) + : Arg1.propType.value.propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [Arg1.propType.value.propType.value]) + : Arg1.propType.value.propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [Arg1.propType.value.propType.value]) + : CreateBucklescriptBlock.__(6, [Arg1.propType.value.propType.value])]]) + : Arg1.propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [Arg1.propType.value]) + : Arg1.propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [Arg1.propType.value]) + : CreateBucklescriptBlock.__(6, [Arg1.propType.value]), Arg2); + return {nullable:result[0], propType:result[1].tag===0 + ? {tag:"Scalar", value:typeof(result[1][0]) === 'object' + ? {tag:"CustomScalar", value:result[1][0][0]} + : $$toJS635221987[result[1][0]]} + : result[1].tag===1 + ? {tag:"Enum", value:result[1][0]} + : result[1].tag===2 + ? {tag:"Object", value:{values:result[1][0][0].map(function _element(ArrayItem2: $any) { return ArrayItem2.tag===0 + ? {tag:"FragmentRef", value:ArrayItem2[0]} + : {tag:"Prop", value:[ArrayItem2.slice()[0], {nullable:ArrayItem2.slice()[1][0], propType:ArrayItem2.slice()[1][1]}]}})}} + : result[1].tag===3 + ? {tag:"Array", value:{nullable:result[1][0][0], propType:result[1][0][1]}} + : result[1].tag===4 + ? {tag:"FragmentRefValue", value:result[1][0]} + : result[1].tag===5 + ? {tag:"TypeReference", value:result[1][0]} + : {tag:"Union", value:result[1][0]}} +}; + +export const makeFragmentRefProp: (string) => Types_propValues = function (Arg1: $any) { + const result = GeneratorsBS.makeFragmentRefProp(Arg1); + return result.tag===0 + ? {tag:"FragmentRef", value:result[0]} + : {tag:"Prop", value:[result.slice()[0], {nullable:result.slice()[1][0], propType:result.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(result.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:result.slice()[1][1][0][0]} + : $$toJS635221987[result.slice()[1][1][0]]} + : result.slice()[1][1].tag===1 + ? {tag:"Enum", value:result.slice()[1][1][0]} + : result.slice()[1][1].tag===2 + ? {tag:"Object", value:{values:result.slice()[1][1][0][0].map(function _element(ArrayItem: $any) { return ArrayItem.tag===0 + ? {tag:"FragmentRef", value:ArrayItem[0]} + : {tag:"Prop", value:ArrayItem.slice()}})}} + : result.slice()[1][1].tag===3 + ? {tag:"Array", value:result.slice()[1][1][0]} + : result.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:result.slice()[1][1][0]} + : result.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:result.slice()[1][1][0]} + : {tag:"Union", value:result.slice()[1][1][0]}}]} +}; + +export const makeObjProp: ({| +name: string, +propValue: Types_propValue |}, void) => Types_propValues = function (Arg1: $any, Arg2: $any) { + const result = Curry._3(GeneratorsBS.makeObjProp, Arg1.name, [Arg1.propValue.nullable, Arg1.propValue.propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(Arg1.propValue.propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [Arg1.propValue.propType.value.value]) + : $$toRE635221987[Arg1.propValue.propType.value]]) + : Arg1.propValue.propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [Arg1.propValue.propType.value]) + : Arg1.propValue.propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[Arg1.propValue.propType.value.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType]])})]]) + : Arg1.propValue.propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [[Arg1.propValue.propType.value.nullable, Arg1.propValue.propType.value.propType]]) + : Arg1.propValue.propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [Arg1.propValue.propType.value]) + : Arg1.propValue.propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [Arg1.propValue.propType.value]) + : CreateBucklescriptBlock.__(6, [Arg1.propValue.propType.value])], Arg2); + return result.tag===0 + ? {tag:"FragmentRef", value:result[0]} + : {tag:"Prop", value:[result.slice()[0], {nullable:result.slice()[1][0], propType:result.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(result.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:result.slice()[1][1][0][0]} + : $$toJS635221987[result.slice()[1][1][0]]} + : result.slice()[1][1].tag===1 + ? {tag:"Enum", value:result.slice()[1][1][0]} + : result.slice()[1][1].tag===2 + ? {tag:"Object", value:{values:result.slice()[1][1][0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:ArrayItem1.slice()}})}} + : result.slice()[1][1].tag===3 + ? {tag:"Array", value:result.slice()[1][1][0]} + : result.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:result.slice()[1][1][0]} + : result.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:result.slice()[1][1][0]} + : {tag:"Union", value:result.slice()[1][1][0]}}]} +}; + +export const makeTypeReference: (string) => Types_propType = function (Arg1: $any) { + const result = GeneratorsBS.makeTypeReference(Arg1); + return result.tag===0 + ? {tag:"Scalar", value:typeof(result[0]) === 'object' + ? {tag:"CustomScalar", value:result[0][0]} + : $$toJS635221987[result[0]]} + : result.tag===1 + ? {tag:"Enum", value:result[0]} + : result.tag===2 + ? {tag:"Object", value:{values:result[0][0].map(function _element(ArrayItem: $any) { return ArrayItem.tag===0 + ? {tag:"FragmentRef", value:ArrayItem[0]} + : {tag:"Prop", value:[ArrayItem.slice()[0], {nullable:ArrayItem.slice()[1][0], propType:ArrayItem.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem.slice()[1][1][0]]} + : ArrayItem.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem.slice()[1][1][0]} + : ArrayItem.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"Array", value:{nullable:result[0][0], propType:result[0][1].tag===0 + ? {tag:"Scalar", value:typeof(result[0][1][0]) === 'object' + ? {tag:"CustomScalar", value:result[0][1][0][0]} + : $$toJS635221987[result[0][1][0]]} + : result[0][1].tag===1 + ? {tag:"Enum", value:result[0][1][0]} + : result[0][1].tag===2 + ? {tag:"Object", value:{values:result[0][1][0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:ArrayItem1.slice()}})}} + : result[0][1].tag===3 + ? {tag:"Array", value:result[0][1][0]} + : result[0][1].tag===4 + ? {tag:"FragmentRefValue", value:result[0][1][0]} + : result[0][1].tag===5 + ? {tag:"TypeReference", value:result[0][1][0]} + : {tag:"Union", value:result[0][1][0]}}} + : result.tag===4 + ? {tag:"FragmentRefValue", value:result[0]} + : result.tag===5 + ? {tag:"TypeReference", value:result[0]} + : {tag:"Union", value:result[0]} +}; + +export const makeObj: (Array) => Types_object_ = function (Arg1: $any) { + const result = GeneratorsBS.makeObj(Arg1.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[ArrayItem.value[1].propType.value.values.map(function _element(ArrayItem1: $any) { return ArrayItem1.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem1.value]) + : CreateBucklescriptBlock.__(1, ArrayItem1.value)})]]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})); + return {values:result[0].map(function _element(ArrayItem2: $any) { return ArrayItem2.tag===0 + ? {tag:"FragmentRef", value:ArrayItem2[0]} + : {tag:"Prop", value:[ArrayItem2.slice()[0], {nullable:ArrayItem2.slice()[1][0], propType:ArrayItem2.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem2.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem2.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem2.slice()[1][1][0]]} + : ArrayItem2.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===2 + ? {tag:"Object", value:{values:ArrayItem2.slice()[1][1][0][0]}} + : ArrayItem2.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem2.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem2.slice()[1][1][0]}}]}})} +}; + +export const makeOperation: (Types_object_) => Types_rootType = function (Arg1: $any) { + const result = GeneratorsBS.makeOperation([Arg1.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[ArrayItem.value[1].propType.value.values]]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})]); + return result.tag===0 + ? {tag:"Operation", value:{values:result[0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:[ArrayItem1.slice()[0], {nullable:ArrayItem1.slice()[1][0], propType:ArrayItem1.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem1.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem1.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem1.slice()[1][1][0]]} + : ArrayItem1.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem1.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem1.slice()[1][1][0]}}]}})}} + : result.tag===1 + ? {tag:"Fragment", value:{values:result[0][0].map(function _element(ArrayItem2: $any) { return ArrayItem2.tag===0 + ? {tag:"FragmentRef", value:ArrayItem2[0]} + : {tag:"Prop", value:[ArrayItem2.slice()[0], {nullable:ArrayItem2.slice()[1][0], propType:ArrayItem2.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem2.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem2.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem2.slice()[1][1][0]]} + : ArrayItem2.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem2.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem2.slice()[1][1][0]}}]}})}} + : result.tag===2 + ? {tag:"Variables", value:{values:result[0][0].map(function _element(ArrayItem3: $any) { return ArrayItem3.tag===0 + ? {tag:"FragmentRef", value:ArrayItem3[0]} + : {tag:"Prop", value:[ArrayItem3.slice()[0], {nullable:ArrayItem3.slice()[1][0], propType:ArrayItem3.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem3.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem3.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem3.slice()[1][1][0]]} + : ArrayItem3.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem3.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem3.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"InputObject", value:[result.slice()[0], {values:result.slice()[1][0].map(function _element(ArrayItem4: $any) { return ArrayItem4.tag===0 + ? {tag:"FragmentRef", value:ArrayItem4[0]} + : {tag:"Prop", value:[ArrayItem4.slice()[0], {nullable:ArrayItem4.slice()[1][0], propType:ArrayItem4.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem4.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem4.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem4.slice()[1][1][0]]} + : ArrayItem4.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem4.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem4.slice()[1][1][0]}}]}})}]} + : {tag:"PluralFragment", value:{values:result[0][0].map(function _element(ArrayItem5: $any) { return ArrayItem5.tag===0 + ? {tag:"FragmentRef", value:ArrayItem5[0]} + : {tag:"Prop", value:[ArrayItem5.slice()[0], {nullable:ArrayItem5.slice()[1][0], propType:ArrayItem5.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem5.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem5.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem5.slice()[1][1][0]]} + : ArrayItem5.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem5.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem5.slice()[1][1][0]}}]}})}} +}; + +export const makeFragment: (Types_object_) => Types_rootType = function (Arg1: $any) { + const result = GeneratorsBS.makeFragment([Arg1.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[ArrayItem.value[1].propType.value.values]]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})]); + return result.tag===0 + ? {tag:"Operation", value:{values:result[0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:[ArrayItem1.slice()[0], {nullable:ArrayItem1.slice()[1][0], propType:ArrayItem1.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem1.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem1.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem1.slice()[1][1][0]]} + : ArrayItem1.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem1.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem1.slice()[1][1][0]}}]}})}} + : result.tag===1 + ? {tag:"Fragment", value:{values:result[0][0].map(function _element(ArrayItem2: $any) { return ArrayItem2.tag===0 + ? {tag:"FragmentRef", value:ArrayItem2[0]} + : {tag:"Prop", value:[ArrayItem2.slice()[0], {nullable:ArrayItem2.slice()[1][0], propType:ArrayItem2.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem2.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem2.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem2.slice()[1][1][0]]} + : ArrayItem2.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem2.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem2.slice()[1][1][0]}}]}})}} + : result.tag===2 + ? {tag:"Variables", value:{values:result[0][0].map(function _element(ArrayItem3: $any) { return ArrayItem3.tag===0 + ? {tag:"FragmentRef", value:ArrayItem3[0]} + : {tag:"Prop", value:[ArrayItem3.slice()[0], {nullable:ArrayItem3.slice()[1][0], propType:ArrayItem3.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem3.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem3.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem3.slice()[1][1][0]]} + : ArrayItem3.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem3.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem3.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"InputObject", value:[result.slice()[0], {values:result.slice()[1][0].map(function _element(ArrayItem4: $any) { return ArrayItem4.tag===0 + ? {tag:"FragmentRef", value:ArrayItem4[0]} + : {tag:"Prop", value:[ArrayItem4.slice()[0], {nullable:ArrayItem4.slice()[1][0], propType:ArrayItem4.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem4.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem4.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem4.slice()[1][1][0]]} + : ArrayItem4.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem4.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem4.slice()[1][1][0]}}]}})}]} + : {tag:"PluralFragment", value:{values:result[0][0].map(function _element(ArrayItem5: $any) { return ArrayItem5.tag===0 + ? {tag:"FragmentRef", value:ArrayItem5[0]} + : {tag:"Prop", value:[ArrayItem5.slice()[0], {nullable:ArrayItem5.slice()[1][0], propType:ArrayItem5.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem5.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem5.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem5.slice()[1][1][0]]} + : ArrayItem5.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem5.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem5.slice()[1][1][0]}}]}})}} +}; + +export const makePluralFragment: (Types_object_) => Types_rootType = function (Arg1: $any) { + const result = GeneratorsBS.makePluralFragment([Arg1.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[ArrayItem.value[1].propType.value.values]]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})]); + return result.tag===0 + ? {tag:"Operation", value:{values:result[0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:[ArrayItem1.slice()[0], {nullable:ArrayItem1.slice()[1][0], propType:ArrayItem1.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem1.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem1.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem1.slice()[1][1][0]]} + : ArrayItem1.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem1.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem1.slice()[1][1][0]}}]}})}} + : result.tag===1 + ? {tag:"Fragment", value:{values:result[0][0].map(function _element(ArrayItem2: $any) { return ArrayItem2.tag===0 + ? {tag:"FragmentRef", value:ArrayItem2[0]} + : {tag:"Prop", value:[ArrayItem2.slice()[0], {nullable:ArrayItem2.slice()[1][0], propType:ArrayItem2.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem2.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem2.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem2.slice()[1][1][0]]} + : ArrayItem2.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem2.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem2.slice()[1][1][0]}}]}})}} + : result.tag===2 + ? {tag:"Variables", value:{values:result[0][0].map(function _element(ArrayItem3: $any) { return ArrayItem3.tag===0 + ? {tag:"FragmentRef", value:ArrayItem3[0]} + : {tag:"Prop", value:[ArrayItem3.slice()[0], {nullable:ArrayItem3.slice()[1][0], propType:ArrayItem3.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem3.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem3.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem3.slice()[1][1][0]]} + : ArrayItem3.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem3.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem3.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"InputObject", value:[result.slice()[0], {values:result.slice()[1][0].map(function _element(ArrayItem4: $any) { return ArrayItem4.tag===0 + ? {tag:"FragmentRef", value:ArrayItem4[0]} + : {tag:"Prop", value:[ArrayItem4.slice()[0], {nullable:ArrayItem4.slice()[1][0], propType:ArrayItem4.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem4.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem4.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem4.slice()[1][1][0]]} + : ArrayItem4.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem4.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem4.slice()[1][1][0]}}]}})}]} + : {tag:"PluralFragment", value:{values:result[0][0].map(function _element(ArrayItem5: $any) { return ArrayItem5.tag===0 + ? {tag:"FragmentRef", value:ArrayItem5[0]} + : {tag:"Prop", value:[ArrayItem5.slice()[0], {nullable:ArrayItem5.slice()[1][0], propType:ArrayItem5.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem5.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem5.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem5.slice()[1][1][0]]} + : ArrayItem5.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem5.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem5.slice()[1][1][0]}}]}})}} +}; + +export const makeVariables: (Types_object_) => Types_rootType = function (Arg1: $any) { + const result = GeneratorsBS.makeVariables([Arg1.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[ArrayItem.value[1].propType.value.values]]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})]); + return result.tag===0 + ? {tag:"Operation", value:{values:result[0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:[ArrayItem1.slice()[0], {nullable:ArrayItem1.slice()[1][0], propType:ArrayItem1.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem1.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem1.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem1.slice()[1][1][0]]} + : ArrayItem1.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem1.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem1.slice()[1][1][0]}}]}})}} + : result.tag===1 + ? {tag:"Fragment", value:{values:result[0][0].map(function _element(ArrayItem2: $any) { return ArrayItem2.tag===0 + ? {tag:"FragmentRef", value:ArrayItem2[0]} + : {tag:"Prop", value:[ArrayItem2.slice()[0], {nullable:ArrayItem2.slice()[1][0], propType:ArrayItem2.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem2.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem2.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem2.slice()[1][1][0]]} + : ArrayItem2.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem2.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem2.slice()[1][1][0]}}]}})}} + : result.tag===2 + ? {tag:"Variables", value:{values:result[0][0].map(function _element(ArrayItem3: $any) { return ArrayItem3.tag===0 + ? {tag:"FragmentRef", value:ArrayItem3[0]} + : {tag:"Prop", value:[ArrayItem3.slice()[0], {nullable:ArrayItem3.slice()[1][0], propType:ArrayItem3.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem3.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem3.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem3.slice()[1][1][0]]} + : ArrayItem3.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem3.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem3.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"InputObject", value:[result.slice()[0], {values:result.slice()[1][0].map(function _element(ArrayItem4: $any) { return ArrayItem4.tag===0 + ? {tag:"FragmentRef", value:ArrayItem4[0]} + : {tag:"Prop", value:[ArrayItem4.slice()[0], {nullable:ArrayItem4.slice()[1][0], propType:ArrayItem4.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem4.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem4.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem4.slice()[1][1][0]]} + : ArrayItem4.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem4.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem4.slice()[1][1][0]}}]}})}]} + : {tag:"PluralFragment", value:{values:result[0][0].map(function _element(ArrayItem5: $any) { return ArrayItem5.tag===0 + ? {tag:"FragmentRef", value:ArrayItem5[0]} + : {tag:"Prop", value:[ArrayItem5.slice()[0], {nullable:ArrayItem5.slice()[1][0], propType:ArrayItem5.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem5.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem5.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem5.slice()[1][1][0]]} + : ArrayItem5.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem5.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem5.slice()[1][1][0]}}]}})}} +}; + +export const makeStandaloneObjectType: (Types_object_) => string = function (Arg1: $any) { + const result = GeneratorsBS.makeStandaloneObjectType([Arg1.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[ArrayItem.value[1].propType.value.values]]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})]); + return result +}; + +export const makeInputObject: ({| +name: string, +definition: Types_object_ |}) => Types_rootType = function (Arg1: $any) { + const result = Curry._2(GeneratorsBS.makeInputObject, Arg1.name, [Arg1.definition.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [[ArrayItem.value[1].propType.value.values]]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})]); + return result.tag===0 + ? {tag:"Operation", value:{values:result[0][0].map(function _element(ArrayItem1: $any) { return ArrayItem1.tag===0 + ? {tag:"FragmentRef", value:ArrayItem1[0]} + : {tag:"Prop", value:[ArrayItem1.slice()[0], {nullable:ArrayItem1.slice()[1][0], propType:ArrayItem1.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem1.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem1.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem1.slice()[1][1][0]]} + : ArrayItem1.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem1.slice()[1][1][0]} + : ArrayItem1.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem1.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem1.slice()[1][1][0]}}]}})}} + : result.tag===1 + ? {tag:"Fragment", value:{values:result[0][0].map(function _element(ArrayItem2: $any) { return ArrayItem2.tag===0 + ? {tag:"FragmentRef", value:ArrayItem2[0]} + : {tag:"Prop", value:[ArrayItem2.slice()[0], {nullable:ArrayItem2.slice()[1][0], propType:ArrayItem2.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem2.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem2.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem2.slice()[1][1][0]]} + : ArrayItem2.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem2.slice()[1][1][0]} + : ArrayItem2.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem2.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem2.slice()[1][1][0]}}]}})}} + : result.tag===2 + ? {tag:"Variables", value:{values:result[0][0].map(function _element(ArrayItem3: $any) { return ArrayItem3.tag===0 + ? {tag:"FragmentRef", value:ArrayItem3[0]} + : {tag:"Prop", value:[ArrayItem3.slice()[0], {nullable:ArrayItem3.slice()[1][0], propType:ArrayItem3.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem3.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem3.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem3.slice()[1][1][0]]} + : ArrayItem3.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem3.slice()[1][1][0]} + : ArrayItem3.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem3.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem3.slice()[1][1][0]}}]}})}} + : result.tag===3 + ? {tag:"InputObject", value:[result.slice()[0], {values:result.slice()[1][0].map(function _element(ArrayItem4: $any) { return ArrayItem4.tag===0 + ? {tag:"FragmentRef", value:ArrayItem4[0]} + : {tag:"Prop", value:[ArrayItem4.slice()[0], {nullable:ArrayItem4.slice()[1][0], propType:ArrayItem4.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem4.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem4.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem4.slice()[1][1][0]]} + : ArrayItem4.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem4.slice()[1][1][0]} + : ArrayItem4.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem4.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem4.slice()[1][1][0]}}]}})}]} + : {tag:"PluralFragment", value:{values:result[0][0].map(function _element(ArrayItem5: $any) { return ArrayItem5.tag===0 + ? {tag:"FragmentRef", value:ArrayItem5[0]} + : {tag:"Prop", value:[ArrayItem5.slice()[0], {nullable:ArrayItem5.slice()[1][0], propType:ArrayItem5.slice()[1][1].tag===0 + ? {tag:"Scalar", value:typeof(ArrayItem5.slice()[1][1][0]) === 'object' + ? {tag:"CustomScalar", value:ArrayItem5.slice()[1][1][0][0]} + : $$toJS635221987[ArrayItem5.slice()[1][1][0]]} + : ArrayItem5.slice()[1][1].tag===1 + ? {tag:"Enum", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===2 + ? {tag:"Object", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===3 + ? {tag:"Array", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===4 + ? {tag:"FragmentRefValue", value:ArrayItem5.slice()[1][1][0]} + : ArrayItem5.slice()[1][1].tag===5 + ? {tag:"TypeReference", value:ArrayItem5.slice()[1][1][0]} + : {tag:"Union", value:ArrayItem5.slice()[1][1][0]}}]}})}} +}; diff --git a/packages/reason-relay/language-plugin/src/generator/Generators.re b/packages/reason-relay/language-plugin/src/generator/Generators.re new file mode 100755 index 00000000..3f5ea89b --- /dev/null +++ b/packages/reason-relay/language-plugin/src/generator/Generators.re @@ -0,0 +1,71 @@ +open Types; + +[@genType] +let makeScalarInt = () => Int; + +[@genType] +let makeScalarString = () => String; + +[@genType] +let makeScalarFloat = () => Float; + +[@genType] +let makeScalarBoolean = () => Boolean; + +[@genType] +let makeScalarCustom = identifier => CustomScalar(identifier); + +[@genType] +let makeScalarAny = () => Any; + +[@genType] +let makePropScalar = scalarValue => Scalar(scalarValue); + +[@genType] +let makePropEnum = name => Enum(name); + +[@genType] +let makePropUnion = name => Union(name); + +[@genType] +let makePropObject = obj => Object(obj); + +[@genType] +let makePropArray = propValue => Array(propValue); + +[@genType] +let makeFragmentRefValue = name => FragmentRefValue(name); + +[@genType] +let makePropValue = (~nullable, ~propType, ()) => {nullable, propType}; + +[@genType] +let makeFragmentRefProp = name => FragmentRef(name); + +[@genType] +let makeObjProp = (~name, ~propValue, ()) => Prop(name, propValue); + +[@genType] +let makeTypeReference = typeName => TypeReference(typeName); + +[@genType] +let makeObj = propValues => {values: propValues}; + +[@genType] +let makeOperation = definition => Operation(definition); + +[@genType] +let makeFragment = definition => Fragment(definition); + +[@genType] +let makePluralFragment = definition => PluralFragment(definition); + +[@genType] +let makeVariables = definition => Variables(definition); + +[@genType] +let makeStandaloneObjectType = definition => + Printer.printObject(~obj=definition, ~optType=JsNullable); + +[@genType] +let makeInputObject = (~name, ~definition) => InputObject(name, definition); \ No newline at end of file diff --git a/packages/reason-relay/language-plugin/src/generator/Printer.bs.js b/packages/reason-relay/language-plugin/src/generator/Printer.bs.js new file mode 100755 index 00000000..748293fa --- /dev/null +++ b/packages/reason-relay/language-plugin/src/generator/Printer.bs.js @@ -0,0 +1,190 @@ +// Generated by BUCKLESCRIPT VERSION 5.0.5-beta.1, PLEASE EDIT WITH CARE +'use strict'; + +var $$Array = require("bs-platform/lib/js/array.js"); +var Reason = require("reason"); + +function printQuoted(propName) { + return "\"" + (propName + "\""); +} + +var printPropName = printQuoted; + +function printEnumName(name) { + return "enum_" + name; +} + +function printWrappedEnumName(name) { + return "SchemaAssets.Enum_" + (name + ".wrapped"); +} + +function printWrappedUnionName(name) { + return "Union_" + (name + ".wrapped"); +} + +function printFragmentRef(name) { + return name + "_graphql.t"; +} + +function getFragmentRefName(name) { + return "__$fragment_ref__" + name; +} + +function getInputTypeName(name) { + return "input_" + name; +} + +function printAnyType(param) { + return "ReasonRelay.any"; +} + +function printTypeReference(typeName) { + return typeName; +} + +function printScalar(scalarValue) { + if (typeof scalarValue === "number") { + switch (scalarValue) { + case 0 : + return "int"; + case 1 : + return "string"; + case 2 : + return "float"; + case 3 : + return "bool"; + case 4 : + return "ReasonRelay.any"; + + } + } else { + return scalarValue[0]; + } +} + +function printPropType(propType, optType) { + switch (propType.tag | 0) { + case 0 : + return printScalar(propType[0]); + case 1 : + return printWrappedEnumName(propType[0]); + case 2 : + return printObject(propType[0], optType); + case 3 : + return printArray(propType[0], optType); + case 4 : + return propType[0] + "_graphql.t"; + case 5 : + return propType[0]; + case 6 : + return printWrappedUnionName(propType[0]); + + } +} + +function printPropValue(propValue, optType) { + var str = /* record */[/* contents */""]; + var addToStr = function (s) { + str[0] = str[0] + s; + return /* () */0; + }; + if (propValue[/* nullable */0]) { + if (optType) { + addToStr("option("); + } else { + addToStr("Js.Nullable.t("); + } + } + addToStr(printPropType(propValue[/* propType */1], optType)); + if (propValue[/* nullable */0]) { + addToStr(")"); + } + return str[0]; +} + +function printObject(obj, optType) { + var match = obj[/* values */0].length; + if (match !== 0) { + var str = /* record */[/* contents */"{."]; + var addToStr = function (s) { + str[0] = str[0] + s; + return /* () */0; + }; + $$Array.iteri((function (index, p) { + if (index > 0) { + addToStr(","); + } + var tmp; + if (p.tag) { + tmp = printQuoted(p[0]) + (": " + printPropValue(p[1], optType)); + } else { + var name = p[0]; + tmp = printQuoted("__$fragment_ref__" + name) + (": " + (name + "_graphql.t")); + } + return addToStr(tmp); + }), obj[/* values */0]); + addToStr("}"); + return str[0]; + } else { + return "unit"; + } +} + +function printArray(propValue, optType) { + return "array(" + (printPropValue(propValue, optType) + ")"); +} + +function printRootType(rootType) { + switch (rootType.tag | 0) { + case 0 : + return "type response = " + (printObject(rootType[0], /* JsNullable */0) + ";"); + case 1 : + return "type fragment = " + (printObject(rootType[0], /* JsNullable */0) + ";"); + case 2 : + return "type variables = " + (printObject(rootType[0], /* Option */1) + ";"); + case 3 : + return "type " + (rootType[0] + (" = " + (printObject(rootType[1], /* Option */1) + ";"))); + case 4 : + return "type fragment = array(" + (printObject(rootType[0], /* JsNullable */0) + ");"); + + } +} + +function printCode(str) { + return Reason.printRE(Reason.parseRE(str)); +} + +function makeRootType(rootType) { + var str = printRootType(rootType); + return Reason.printRE(Reason.parseRE(str)); +} + +function makeEnum(fullEnum) { + var valuesStr = /* record */[/* contents */""]; + $$Array.iter((function (value) { + valuesStr[0] = valuesStr[0] + ("| `" + value); + return /* () */0; + }), fullEnum[/* values */1]); + return "type " + ("enum_" + fullEnum[/* name */0] + (" = [ " + (valuesStr[0] + " ];"))); +} + +exports.printQuoted = printQuoted; +exports.printPropName = printPropName; +exports.printEnumName = printEnumName; +exports.printWrappedEnumName = printWrappedEnumName; +exports.printWrappedUnionName = printWrappedUnionName; +exports.printFragmentRef = printFragmentRef; +exports.getFragmentRefName = getFragmentRefName; +exports.getInputTypeName = getInputTypeName; +exports.printAnyType = printAnyType; +exports.printTypeReference = printTypeReference; +exports.printScalar = printScalar; +exports.printPropType = printPropType; +exports.printPropValue = printPropValue; +exports.printObject = printObject; +exports.printArray = printArray; +exports.printRootType = printRootType; +exports.printCode = printCode; +exports.makeRootType = makeRootType; +exports.makeEnum = makeEnum; +/* reason Not a pure module */ diff --git a/packages/reason-relay/language-plugin/src/generator/Printer.gen.js b/packages/reason-relay/language-plugin/src/generator/Printer.gen.js new file mode 100755 index 00000000..b27e99ac --- /dev/null +++ b/packages/reason-relay/language-plugin/src/generator/Printer.gen.js @@ -0,0 +1,130 @@ +/** + * @flow strict + * @generated + * @nolint + */ +/* eslint-disable */ +// $FlowExpectedError: Reason checked type sufficiently +type $any = any; + +const $$toRE635221987 = {"Int": 0, "String": 1, "Float": 2, "Boolean": 3, "Any": 4}; + +// $FlowExpectedError: Reason checked type sufficiently +import * as CreateBucklescriptBlock from 'bs-platform/lib/es6/block.js'; + +// $FlowExpectedError: Reason checked type sufficiently +import * as PrinterBS from './Printer.bs'; + +// flowlint-next-line nonstrict-import:off +import type {fullEnum as Types_fullEnum} from './Types.gen'; + +// flowlint-next-line nonstrict-import:off +import type {rootType as Types_rootType} from './Types.gen'; + +export const printWrappedEnumName: (string) => string = PrinterBS.printWrappedEnumName; + +export const printWrappedUnionName: (string) => string = PrinterBS.printWrappedUnionName; + +export const getFragmentRefName: (string) => string = PrinterBS.getFragmentRefName; + +export const getInputTypeName: (string) => string = PrinterBS.getInputTypeName; + +export const printCode: (string) => string = PrinterBS.printCode; + +export const makeRootType: (Types_rootType) => string = function (Arg1: $any) { + const result = PrinterBS.makeRootType(Arg1.tag==="Operation" + ? CreateBucklescriptBlock.__(0, [[Arg1.value.values.map(function _element(ArrayItem: $any) { return ArrayItem.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem.value[0], [ArrayItem.value[1].nullable, ArrayItem.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem.value[1].propType.value]]) + : ArrayItem.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem.value[1].propType.value]) + : ArrayItem.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem.value[1].propType.value])]])})]]) + : Arg1.tag==="Fragment" + ? CreateBucklescriptBlock.__(1, [[Arg1.value.values.map(function _element(ArrayItem1: $any) { return ArrayItem1.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem1.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem1.value[0], [ArrayItem1.value[1].nullable, ArrayItem1.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem1.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem1.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem1.value[1].propType.value]]) + : ArrayItem1.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem1.value[1].propType.value]) + : ArrayItem1.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [ArrayItem1.value[1].propType.value]) + : ArrayItem1.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem1.value[1].propType.value]) + : ArrayItem1.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem1.value[1].propType.value]) + : ArrayItem1.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem1.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem1.value[1].propType.value])]])})]]) + : Arg1.tag==="Variables" + ? CreateBucklescriptBlock.__(2, [[Arg1.value.values.map(function _element(ArrayItem2: $any) { return ArrayItem2.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem2.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem2.value[0], [ArrayItem2.value[1].nullable, ArrayItem2.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem2.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem2.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem2.value[1].propType.value]]) + : ArrayItem2.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem2.value[1].propType.value]) + : ArrayItem2.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [ArrayItem2.value[1].propType.value]) + : ArrayItem2.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem2.value[1].propType.value]) + : ArrayItem2.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem2.value[1].propType.value]) + : ArrayItem2.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem2.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem2.value[1].propType.value])]])})]]) + : Arg1.tag==="InputObject" + ? CreateBucklescriptBlock.__(3, [Arg1.value[0], [Arg1.value[1].values.map(function _element(ArrayItem3: $any) { return ArrayItem3.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem3.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem3.value[0], [ArrayItem3.value[1].nullable, ArrayItem3.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem3.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem3.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem3.value[1].propType.value]]) + : ArrayItem3.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem3.value[1].propType.value]) + : ArrayItem3.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [ArrayItem3.value[1].propType.value]) + : ArrayItem3.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem3.value[1].propType.value]) + : ArrayItem3.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem3.value[1].propType.value]) + : ArrayItem3.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem3.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem3.value[1].propType.value])]])})]]) + : CreateBucklescriptBlock.__(4, [[Arg1.value.values.map(function _element(ArrayItem4: $any) { return ArrayItem4.tag==="FragmentRef" + ? CreateBucklescriptBlock.__(0, [ArrayItem4.value]) + : CreateBucklescriptBlock.__(1, [ArrayItem4.value[0], [ArrayItem4.value[1].nullable, ArrayItem4.value[1].propType.tag==="Scalar" + ? CreateBucklescriptBlock.__(0, [typeof(ArrayItem4.value[1].propType.value) === 'object' + ? CreateBucklescriptBlock.__(0, [ArrayItem4.value[1].propType.value.value]) + : $$toRE635221987[ArrayItem4.value[1].propType.value]]) + : ArrayItem4.value[1].propType.tag==="Enum" + ? CreateBucklescriptBlock.__(1, [ArrayItem4.value[1].propType.value]) + : ArrayItem4.value[1].propType.tag==="Object" + ? CreateBucklescriptBlock.__(2, [ArrayItem4.value[1].propType.value]) + : ArrayItem4.value[1].propType.tag==="Array" + ? CreateBucklescriptBlock.__(3, [ArrayItem4.value[1].propType.value]) + : ArrayItem4.value[1].propType.tag==="FragmentRefValue" + ? CreateBucklescriptBlock.__(4, [ArrayItem4.value[1].propType.value]) + : ArrayItem4.value[1].propType.tag==="TypeReference" + ? CreateBucklescriptBlock.__(5, [ArrayItem4.value[1].propType.value]) + : CreateBucklescriptBlock.__(6, [ArrayItem4.value[1].propType.value])]])})]])); + return result +}; + +export const makeEnum: (Types_fullEnum) => string = function (Arg1: $any) { + const result = PrinterBS.makeEnum([Arg1.name, Arg1.values]); + return result +}; diff --git a/packages/reason-relay/language-plugin/src/generator/Printer.re b/packages/reason-relay/language-plugin/src/generator/Printer.re new file mode 100755 index 00000000..66bc7c5b --- /dev/null +++ b/packages/reason-relay/language-plugin/src/generator/Printer.re @@ -0,0 +1,130 @@ +open Types; + +let printQuoted = propName => "\"" ++ propName ++ "\""; +let printPropName = propName => propName |> printQuoted; +let printEnumName = name => "enum_" ++ name; + +[@genType] +let printWrappedEnumName = name => "SchemaAssets.Enum_" ++ name ++ ".wrapped"; + +[@genType] +let printWrappedUnionName = name => "Union_" ++ name ++ ".wrapped"; + +let printFragmentRef = name => name ++ "_graphql.t"; + +[@genType] +let getFragmentRefName = name => "__$fragment_ref__" ++ name; + +[@genType] +let getInputTypeName = name => "input_" ++ name; + +let printAnyType = () => "ReasonRelay.any"; + +let printTypeReference = (typeName: string) => typeName; + +type objectOptionalType = + | JsNullable + | Option; + +let printScalar = scalarValue => + switch (scalarValue) { + | String => "string" + | Int => "int" + | Float => "float" + | Boolean => "bool" + | CustomScalar(str) => str + | Any => printAnyType() + }; + +let rec printPropType = (~propType, ~optType) => + switch (propType) { + | Scalar(scalar) => printScalar(scalar) + | Object(obj) => printObject(~obj, ~optType) + | Array(propValue) => printArray(~propValue, ~optType) + | Enum(name) => printWrappedEnumName(name) + | Union(name) => printWrappedUnionName(name) + | FragmentRefValue(name) => printFragmentRef(name) + | TypeReference(name) => printTypeReference(name) + } +and printPropValue = (~propValue, ~optType) => { + let str = ref(""); + let addToStr = s => str := str^ ++ s; + + if (propValue.nullable) { + switch (optType) { + | JsNullable => addToStr("Js.Nullable.t(") + | Option => addToStr("option(") + }; + }; + + printPropType(~propType=propValue.propType, ~optType) |> addToStr; + + if (propValue.nullable) { + addToStr(")"); + }; + + str^; +} +and printObject = (~obj, ~optType: objectOptionalType) => { + switch (obj.values |> Array.length) { + | 0 => "unit" + | _ => + let str = ref("{."); + let addToStr = s => str := str^ ++ s; + + obj.values + |> Array.iteri((index, p) => { + if (index > 0) { + addToStr(","); + }; + + addToStr( + switch (p) { + | Prop(name, propValue) => + printPropName(name) + ++ ": " + ++ printPropValue(~propValue, ~optType) + | FragmentRef(name) => + (name |> getFragmentRefName |> printQuoted) + ++ ": " + ++ printFragmentRef(name) + }, + ); + }); + + addToStr("}"); + str^; + }; +} +and printArray = (~propValue, ~optType) => + "array(" ++ printPropValue(~propValue, ~optType) ++ ")"; + +let printRootType = rootType => + switch (rootType) { + | Operation(obj) => + "type response = " ++ printObject(~obj, ~optType=JsNullable) ++ ";" + | Variables(obj) => + "type variables = " ++ printObject(~obj, ~optType=Option) ++ ";" + | InputObject(name, obj) => + "type " ++ name ++ " = " ++ printObject(~obj, ~optType=Option) ++ ";" + | Fragment(obj) => + "type fragment = " ++ printObject(~obj, ~optType=JsNullable) ++ ";" + | PluralFragment(obj) => + "type fragment = array(" ++ printObject(~obj, ~optType=JsNullable) ++ ");" + }; + +[@genType] +let printCode = str => str |> Reason.parseRE |> Reason.printRE; + +[@genType] +let makeRootType = rootType => rootType |> printRootType |> printCode; + +[@genType] +let makeEnum = fullEnum => { + let valuesStr = ref(""); + + fullEnum.values + |> Array.iter(value => valuesStr := valuesStr^ ++ "| `" ++ value); + + "type " ++ printEnumName(fullEnum.name) ++ " = [ " ++ valuesStr^ ++ " ];"; +}; \ No newline at end of file diff --git a/packages/reason-relay/language-plugin/src/generator/Types.bs.js b/packages/reason-relay/language-plugin/src/generator/Types.bs.js new file mode 100644 index 00000000..5939d122 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/generator/Types.bs.js @@ -0,0 +1,2 @@ +// Generated by BUCKLESCRIPT VERSION 5.0.5-beta.1, PLEASE EDIT WITH CARE +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/reason-relay/language-plugin/src/generator/Types.gen.js b/packages/reason-relay/language-plugin/src/generator/Types.gen.js new file mode 100755 index 00000000..f7078374 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/generator/Types.gen.js @@ -0,0 +1,40 @@ +/** + * @flow strict + * @generated + * @nolint + */ +/* eslint-disable */ + +export type scalarValues = + | "Int" + | "String" + | "Float" + | "Boolean" + | "Any" + | {| tag: "CustomScalar", value: string |}; + +export type propType = + | {| tag: "Scalar", value: scalarValues |} + | {| tag: "Enum", value: string |} + | {| tag: "Object", value: object_ |} + | {| tag: "Array", value: propValue |} + | {| tag: "FragmentRefValue", value: string |} + | {| tag: "TypeReference", value: string |} + | {| tag: "Union", value: string |}; + +export type propValue = {| +nullable: boolean, +propType: propType |}; + +export type propValues = + | {| tag: "FragmentRef", value: string |} + | {| tag: "Prop", value: [string, propValue] |}; + +export type object_ = {| +values: Array |}; + +export type rootType = + | {| tag: "Operation", value: object_ |} + | {| tag: "Fragment", value: object_ |} + | {| tag: "Variables", value: object_ |} + | {| tag: "InputObject", value: [string, object_] |} + | {| tag: "PluralFragment", value: object_ |}; + +export type fullEnum = {| +name: string, +values: Array |}; diff --git a/packages/reason-relay/language-plugin/src/generator/Types.re b/packages/reason-relay/language-plugin/src/generator/Types.re new file mode 100755 index 00000000..06aa81d2 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/generator/Types.re @@ -0,0 +1,41 @@ +[@genType] +type scalarValues = + | Int + | String + | Float + | Boolean + | CustomScalar(string) + | Any +[@genType] +and propType = + | Scalar(scalarValues) + | Enum(string) + | Object(object_) + | Array(propValue) + | FragmentRefValue(string) + | TypeReference(string) + | Union(string) +[@genType] +and propValue = { + nullable: bool, + propType, +} +[@genType] +and propValues = + | FragmentRef(string) + | Prop(string, propValue) +[@genType] +and object_ = {values: array(propValues)} +[@genType] +and rootType = + | Operation(object_) + | Fragment(object_) + | Variables(object_) + | InputObject(string, object_) + | PluralFragment(object_); + +[@genType] +type fullEnum = { + name: string, + values: array(string), +}; \ No newline at end of file diff --git a/packages/reason-relay/language-plugin/src/index.js b/packages/reason-relay/language-plugin/src/index.js new file mode 100755 index 00000000..1c22d836 --- /dev/null +++ b/packages/reason-relay/language-plugin/src/index.js @@ -0,0 +1,28 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +'use strict'; + +const RelayReasonGenerator = require('./RelayReasonGenerator'); + +const formatGeneratedModule = require('./formatGeneratedModule'); + +const { find } = require('./FindGraphQLTags'); + +// $FlowFixMe +import type { PluginInterface } from '../RelayLanguagePluginInterface'; + +module.exports = (): PluginInterface => ({ + inputExtensions: ['re'], + outputExtension: 're', + typeGenerator: RelayReasonGenerator, + formatModule: formatGeneratedModule, + findGraphQLTags: find +}); diff --git a/packages/reason-relay/language-plugin/yarn.lock b/packages/reason-relay/language-plugin/yarn.lock new file mode 100755 index 00000000..645a3a4a --- /dev/null +++ b/packages/reason-relay/language-plugin/yarn.lock @@ -0,0 +1,3637 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/cli@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.4.4.tgz#5454bb7112f29026a4069d8e6f0e1794e651966c" + integrity sha512-XGr5YjQSjgTa6OzQZY57FAJsdeVSAKR/u/KA5exWIz66IKtv/zXtHy+fIZcMry/EgYegwuHE7vzGnrFhjdIAsQ== + dependencies: + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.11" + mkdirp "^0.5.1" + output-file-sync "^2.0.0" + slash "^2.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^2.0.4" + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.0.0", "@babel/core@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" + integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helpers" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.5" + "@babel/types" "^7.4.4" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.0.0", "@babel/generator@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" + integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== + dependencies: + "@babel/types" "^7.4.4" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-builder-react-jsx@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" + integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== + dependencies: + "@babel/types" "^7.3.0" + esutils "^2.0.0" + +"@babel/helper-call-delegate@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" + integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-create-class-features-plugin@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba" + integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + +"@babel/helper-define-map@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" + integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" + integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" + integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" + integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== + dependencies: + lodash "^4.17.11" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" + integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" + integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" + integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce" + integrity sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz#41c360d59481d88e0ce3a3f837df10121a769b39" + integrity sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" + integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" + integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz#23b3b7b9bcdabd73672a9149f728cd3be6214812" + integrity sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.2.0.tgz#f75083dfd5ade73e783db729bbd87e7b9efb7624" + integrity sha512-lRCEaKE+LTxDQtgbYajI04ddt6WW0WJq57xqkAZ+s11h4YgfRHhVA/Y2VhfPzzFD4qeLHWg32DMp9HooY4Kqlg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" + integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" + integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.11" + +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" + integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" + integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" + integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" + integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" + integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-systemjs@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" + integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" + integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== + dependencies: + regexp-tree "^0.1.6" + +"@babel/plugin-transform-new-target@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" + integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== + dependencies: + "@babel/helper-call-delegate" "^7.4.4" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" + integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" + integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== + dependencies: + "@babel/helper-builder-react-jsx" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-regenerator@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== + dependencies: + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-reserved-words@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" + integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" + integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" + integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/polyfill@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.4.4.tgz#78801cf3dbe657844eeabf31c1cae3828051e893" + integrity sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + +"@babel/preset-env@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" + integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.4.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.4.4" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.4.4" + "@babel/plugin-transform-classes" "^7.4.4" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.4.4" + "@babel/plugin-transform-function-name" "^7.4.4" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-member-expression-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.4.4" + "@babel/plugin-transform-modules-systemjs" "^7.4.4" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" + "@babel/plugin-transform-new-target" "^7.4.4" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.4.4" + "@babel/plugin-transform-property-literals" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.4.5" + "@babel/plugin-transform-reserved-words" "^7.2.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.4.4" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.4.4" + "@babel/types" "^7.4.4" + browserslist "^4.6.0" + core-js-compat "^3.1.1" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.5.0" + +"@babel/preset-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" + integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + +"@babel/runtime@^7.0.0": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" + integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.1.0", "@babel/template@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" + integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/types" "^7.4.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" + integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@octokit/rest@^15.12.1": + version "15.18.1" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.18.1.tgz#ec7fb0f8775ef64dc095fae6635411d3fbff9b62" + integrity sha512-g2tecjp2TEtYV8bKAFvfQtu+W29HM7ektmWmw8zrMy9/XCKDEYRErR2YvvhN9+IxkLC4O3lDqYP4b6WgsL6Utw== + dependencies: + before-after-hook "^1.1.0" + btoa-lite "^1.0.0" + debug "^3.1.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.0" + lodash "^4.17.4" + node-fetch "^2.1.1" + universal-user-agent "^2.0.0" + url-template "^2.0.8" + +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +agent-base@4, agent-base@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +ajv@^6.9.1: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" + integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +babel-plugin-module-resolver@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7" + integrity sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA== + dependencies: + find-babel-config "^1.1.0" + glob "^7.1.2" + pkg-up "^2.0.0" + reselect "^3.0.1" + resolve "^1.4.0" + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-preset-fbjs@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.2.0.tgz#c0e6347d3e0379ed84b3c2434d3467567aa05297" + integrity sha512-5Jo+JeWiVz2wHUUyAlvb/sSYnXNig9r+HqGAOSfh5Fzxp7SnAaR/tEGRJ1ZX7C77kfk82658w6R5Z+uPATTD9g== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +before-after-hook@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d" + integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg== + +big-integer@^1.6.17: + version "1.6.44" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.44.tgz#4ee9ae5f5839fc11ade338fea216b4513454a539" + integrity sha512-7MzElZPTyJ2fNvBkPxtFQ2fWIkVmuzw41+BZHSzpEq3ymB2MfeKp1+yXl/tS75xCx+WnyV+yb0kp+K1C3UNwmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" + integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= + dependencies: + buffers "~0.1.1" + chainsaw "~0.1.0" + +bluebird@~3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" + integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +browserslist@^4.6.0, browserslist@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.2.tgz#574c665950915c2ac73a4594b8537a9eba26203f" + integrity sha512-2neU/V0giQy9h3XMPwLhEY3+Ao0uHSwHvU8Q1Ea6AgLVL1sXbX3dzPrJ8NWe5Hi4PoTkCYXOtVR9rfRLI0J/8Q== + dependencies: + caniuse-lite "^1.0.30000974" + electron-to-chromium "^1.3.150" + node-releases "^1.1.23" + +bs-platform@^5.0.5-beta.1: + version "5.0.5-beta.1" + resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-5.0.5-beta.1.tgz#c0a9a54b08b7a8236973fbf45a80fb935079a3e4" + integrity sha512-dVhCQAzgc3q+fszBunAnzGxLQ5zqqdfcw2CtSwqvPVByMczVWI6txxSY1TmFdzlafGgH/57QyceMC0M82zkqsA== + +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= + dependencies: + node-int64 "^0.4.0" + +btoa-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" + integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= + +buffer-indexof-polyfill@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz#a9fb806ce8145d5428510ce72f278bb363a638bf" + integrity sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8= + +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" + integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30000974: + version "1.0.30000974" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz#b7afe14ee004e97ce6dc73e3f878290a12928ad8" + integrity sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww== + +chainsaw@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" + integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= + dependencies: + traverse ">=0.3.0 <0.4" + +chalk@^2.0.0, chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +charenc@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= + +chokidar@^2.0.4: + version "2.1.6" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" + integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +colors@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + +commander@^2.8.1: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.1.1: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.4.tgz#e4d0c40fbd01e65b1d457980fe4112d4358a7408" + integrity sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg== + dependencies: + browserslist "^4.6.2" + core-js-pure "3.1.4" + semver "^6.1.1" + +core-js-pure@3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.4.tgz#5fa17dc77002a169a3566cc48dc774d2e13e3769" + integrity sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA== + +core-js@^2.4.1, core-js@^2.6.5: + version "2.6.9" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypt@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= + dependencies: + readable-stream "^2.0.2" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +electron-to-chromium@^1.3.150: + version "1.3.164" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.164.tgz#8680b875577882c1572c42218d53fa9ba5f71d5d" + integrity sha512-VLlalqUeduN4+fayVtRZvGP2Hl1WrRxlwzh2XVVMJym3IFrQUS29BFQ1GP/BxOJXJI1OFCrJ5BnFEsAe8NHtOg== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-glob@^2.2.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + dependencies: + bser "^2.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" + integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== + dependencies: + core-js "^2.4.1" + fbjs-css-vars "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-babel-config@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" + integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flow-bin@^0.101.0: + version "0.101.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.101.0.tgz#c56fa0afb9c151eeba7954136e9066d408691063" + integrity sha512-2xriPEOSrGQklAArNw1ixoIUiLTWhIquYV26WqnxEu7IcXWgoZUcfJXufG9kIvrNbdwCNd5RBjTwbB0p6L6XaA== + +flow-typed@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/flow-typed/-/flow-typed-2.5.2.tgz#967e83c762a1cbfcd52eebaece1ade77944f1714" + integrity sha512-RrHRmp/Bof1vDG1AqBcwuyxMMoezkl7TxvimA5c6GKZOOb1fkkRZ81S+1qAuvb4rUka5fLlFomKCnpMnCsgP+g== + dependencies: + "@babel/polyfill" "^7.0.0" + "@octokit/rest" "^15.12.1" + colors "^1.3.2" + fs-extra "^7.0.0" + glob "^7.1.3" + got "^8.3.2" + md5 "^2.2.1" + mkdirp "^0.5.1" + rimraf "^2.6.2" + semver "^5.5.1" + table "^5.0.2" + through "^2.3.8" + unzipper "^0.9.3" + which "^1.3.1" + yargs "^12.0.2" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + dependencies: + minipass "^2.2.1" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gentype@^2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/gentype/-/gentype-2.29.0.tgz#c95936af6a18f293a533546850c42edb478e117d" + integrity sha512-EgvKRi5VRiAB0GhmQPunFV39mqFBzaviSWsle138zNmBWO8k2c6LX/6TpG1KspGM/ECJZMwchO2ucaNfFKdbAg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.0, glob@^7.1.2, glob@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +got@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +graphql@14.3.1: + version "14.3.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.3.1.tgz#b3aa50e61a841ada3c1f9ccda101c483f8e8c807" + integrity sha512-FZm7kAa3FqKdXy8YSSpAoTtyDFMIYSpCDOr+3EqlI1bxmtHu+Vv/I2vrSeT1sBOEnEniX3uo4wFhFdS/8XN6gA== + dependencies: + iterall "^1.2.2" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + +https-proxy-agent@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +iconv-lite@^0.4.4, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +immutable@~3.7.6: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inherits@^2.0.1, inherits@~2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5, is-buffer@~1.1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-retry-allowed@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +iterall@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" + integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== + +js-levenshtein@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +listenercount@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" + integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash@^4.17.11, lodash@^4.17.4: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +macos-release@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" + integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" + integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= + dependencies: + charenc "~0.0.1" + crypt "~0.0.1" + is-buffer "~1.1.1" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +merge2@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" + integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minipass@^2.2.1, minipass@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-fetch@^2.1.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-releases@^1.1.23: + version "1.1.23" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.23.tgz#de7409f72de044a2fa59c097f436ba89c39997f0" + integrity sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w== + dependencies: + semver "^5.3.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: + version "1.4.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" + integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nullthrows@^1.1.0, nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-name@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== + dependencies: + macos-release "^2.2.0" + windows-release "^3.1.0" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" + integrity sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ== + dependencies: + graceful-fs "^4.1.11" + is-plain-obj "^1.1.0" + mkdirp "^0.5.1" + +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" + integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +private@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +reason@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/reason/-/reason-3.3.4.tgz#a294ef8aa14fa85c6fd8a7db5dcab053f2382f68" + integrity sha512-WwXkrcwbUUazf0pEn7Vrd0R7wKOMEPmn4ZBb0ffKCxKiqoUh13E8hnSEhytNM81vl3O3A0ENyZa+Ys0fMnJgnw== + +regenerate-unicode-properties@^8.0.2: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + +regenerator-transform@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" + integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w== + dependencies: + private "^0.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp-tree@^0.1.6: + version "0.1.10" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc" + integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ== + +regexpu-core@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" + integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.0.2" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" + +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== + dependencies: + jsesc "~0.5.0" + +relay-compiler@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-5.0.0.tgz#ca2514bda20ff829550ac87f126d07a1517bf6de" + integrity sha512-q8gKlPRTJe/TwtIokbdXehy1SxDFIyLBZdsfg60J4OcqyviIx++Vhc+h4lXzBY8LsBVaJjTuolftYcXJLhlE6g== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/polyfill" "^7.0.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.1.2" + chalk "^2.4.1" + fast-glob "^2.2.2" + fb-watchman "^2.0.0" + fbjs "^1.0.0" + immutable "~3.7.6" + nullthrows "^1.1.0" + relay-runtime "5.0.0" + signedsource "^1.0.0" + yargs "^9.0.0" + +relay-runtime@5.0.0, relay-runtime@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-5.0.0.tgz#7c688ee621d6106a2cd9f3a3706eb6d717c7f660" + integrity sha512-lrC2CwfpWWHBAN608eENAt5Bc5zqXXE2O9HSo8tc6Gy5TxfK+fU+x9jdwXQ2mXxVPgANYtYeKzU5UTfcX0aDEw== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^1.0.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +reselect@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" + integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" + integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== + dependencies: + path-parse "^1.0.6" + +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@2, rimraf@^2.6.1, rimraf@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +semver@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" + integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.5, setimmediate@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +signedsource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" + integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +table@^5.0.2: + version "5.4.1" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.1.tgz#0691ae2ebe8259858efb63e550b6d5f9300171e8" + integrity sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w== + dependencies: + ajv "^6.9.1" + lodash "^4.17.11" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tar@^4: + version "4.4.10" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.5" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" + integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +ua-parser-js@^0.7.18: + version "0.7.20" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" + integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" + integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +universal-user-agent@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.1.0.tgz#5abfbcc036a1ba490cb941f8fd68c46d3669e8e4" + integrity sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q== + dependencies: + os-name "^3.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +unzipper@^0.9.3: + version "0.9.15" + resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.9.15.tgz#97d99203dad17698ee39882483c14e4845c7549c" + integrity sha512-2aaUvO4RAeHDvOCuEtth7jrHFaCKTSXPqUkXwADaLBzGbgZGzUDccoEdJ5lW+3RmfpOZYNx0Rw6F6PUzM6caIA== + dependencies: + big-integer "^1.6.17" + binary "~0.3.0" + bluebird "~3.4.1" + buffer-indexof-polyfill "~1.0.0" + duplexer2 "~0.1.4" + fstream "^1.0.12" + listenercount "~1.0.1" + readable-stream "~2.3.6" + setimmediate "~1.0.4" + +upath@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" + integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-template@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +whatwg-fetch@>=0.10.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +windows-release@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" + integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== + dependencies: + execa "^1.0.0" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= + dependencies: + camelcase "^4.1.0" + +yargs@^12.0.2: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + integrity sha1-UqzCP+7Kw0BCB47njAwAf1CF20w= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" diff --git a/packages/reason-relay/package.json b/packages/reason-relay/package.json new file mode 100644 index 00000000..cc3b235c --- /dev/null +++ b/packages/reason-relay/package.json @@ -0,0 +1,51 @@ +{ + "name": "reason-relay", + "version": "0.1.0-alpha.0", + "main": "src/ReasonRelay.re", + "license": "MIT", + "author": "Gabriel Nordeborn", + "sideEffects": false, + "repository": "https://github.com/zth/reason-relay", + "description": "Use Relay with ReasonML.", + "publishConfig": { + "registry": "https://registry.npmjs.org/" + }, + "keywords": [ + "graphql", + "relay", + "relaymodern", + "react", + "reason", + "reasonml" + ], + "bin": { + "reason-relay-compiler": "compiler/compiler-cli.js" + }, + "scripts": { + "build": "bsb -clean-world -make-world" + }, + "devDependencies": { + "bs-platform": "6.0.3", + "react": "16.8.6", + "react-relay": "^5.0.0", + "reason-react": "^0.7.0", + "relay-compiler": "^5.0.0", + "relay-hooks": "^1.2.1", + "relay-runtime": "^5.0.0", + "graphql": "^14.4.2" + }, + "peerDependencies": { + "bs-platform": "^6.0.3", + "react": "^16.8.1", + "react-relay": "^5.0.0", + "reason-react": "^0.7.0", + "relay-compiler": "^5.0.0", + "relay-hooks": "^1.2.1", + "relay-runtime": "^5.0.0", + "graphql": "^14.4.2" + }, + "dependencies": { + "mkdirp-sync": "^0.0.3", + "reason": "^3.3.4" + } +} diff --git a/packages/reason-relay/ppx/.gitignore b/packages/reason-relay/ppx/.gitignore new file mode 100755 index 00000000..7f094dfe --- /dev/null +++ b/packages/reason-relay/ppx/.gitignore @@ -0,0 +1,11 @@ +node_modules/ +lib/ +dist/ +.cache +.merlin +.bsb.lock +*.bs.js +.DS_Store +_esy +_build +reason-relay-ppx.install diff --git a/packages/reason-relay/ppx/bin/Bin.re b/packages/reason-relay/ppx/bin/Bin.re new file mode 100755 index 00000000..edff0c7c --- /dev/null +++ b/packages/reason-relay/ppx/bin/Bin.re @@ -0,0 +1,4 @@ +open Migrate_parsetree; +open ReasonRelayPpx; + +Driver.run_as_ppx_rewriter(); diff --git a/packages/reason-relay/ppx/bin/dune b/packages/reason-relay/ppx/bin/dune new file mode 100755 index 00000000..7a243293 --- /dev/null +++ b/packages/reason-relay/ppx/bin/dune @@ -0,0 +1,6 @@ +(executable + (name bin) + (public_name reason-relay-ppx) + (libraries reason-relay-ppx.lib) + (ocamlopt_flags ( -linkall )) +) diff --git a/packages/reason-relay/ppx/bsconfig.json b/packages/reason-relay/ppx/bsconfig.json new file mode 100755 index 00000000..82192c1e --- /dev/null +++ b/packages/reason-relay/ppx/bsconfig.json @@ -0,0 +1,11 @@ +{ + "name": "reason-relay-ppx", + "sources": ["src"], + "refmt": 3, + "package-specs": { + "module": "es6", + "in-source": true + }, + "suffix": ".bs.js", + "ppx-flags": ["./_build/default/bin/bin.exe"] +} diff --git a/packages/reason-relay/ppx/dune-project b/packages/reason-relay/ppx/dune-project new file mode 100755 index 00000000..9a0ae517 --- /dev/null +++ b/packages/reason-relay/ppx/dune-project @@ -0,0 +1,2 @@ +(lang dune 1.0) + (name reason-relay-ppx) diff --git a/packages/reason-relay/ppx/esy.lock/.gitattributes b/packages/reason-relay/ppx/esy.lock/.gitattributes new file mode 100644 index 00000000..25366aee --- /dev/null +++ b/packages/reason-relay/ppx/esy.lock/.gitattributes @@ -0,0 +1,3 @@ + +# Set eol to LF so files aren't converted to CRLF-eol on Windows. +* text eol=lf diff --git a/packages/reason-relay/ppx/esy.lock/.gitignore b/packages/reason-relay/ppx/esy.lock/.gitignore new file mode 100644 index 00000000..a221be22 --- /dev/null +++ b/packages/reason-relay/ppx/esy.lock/.gitignore @@ -0,0 +1,3 @@ + +# Reset any possible .gitignore, we want all esy.lock to be un-ignored. +!* diff --git a/packages/reason-relay/ppx/esy.lock/index.json b/packages/reason-relay/ppx/esy.lock/index.json new file mode 100644 index 00000000..6085bd27 --- /dev/null +++ b/packages/reason-relay/ppx/esy.lock/index.json @@ -0,0 +1,33 @@ +{ + "checksum": "35c1d42e9720645b9ab9941ec343dd4a", + "root": "reason-relay-ppx@link-dev:./package.json", + "node": { + "reason-relay-ppx@link-dev:./package.json": { + "id": "reason-relay-ppx@link-dev:./package.json", + "name": "reason-relay-ppx", + "version": "link-dev:./package.json", + "source": { + "type": "link-dev", + "path": ".", + "manifest": "package.json" + }, + "overrides": [], + "dependencies": [ "bs-platform@6.0.3@d41d8cd9" ], + "devDependencies": [ "bs-platform@6.0.3@d41d8cd9" ] + }, + "bs-platform@6.0.3@d41d8cd9": { + "id": "bs-platform@6.0.3@d41d8cd9", + "name": "bs-platform", + "version": "6.0.3", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/bs-platform/-/bs-platform-6.0.3.tgz#sha1:cb401aa4dadbf063dd4a183921195ef3c16d7b11" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + } + } +} \ No newline at end of file diff --git a/packages/reason-relay/ppx/package.json b/packages/reason-relay/ppx/package.json new file mode 100755 index 00000000..d2ee167b --- /dev/null +++ b/packages/reason-relay/ppx/package.json @@ -0,0 +1,36 @@ +{ + "name": "reason-relay-ppx", + "version": "0.1.1", + "description": "Logging implementation for ReasonML/BuckleScript", + "author": "Alex Fedoseev ", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/minima-app/bs-log.git" + }, + "scripts": { + "start": "bsb -clean-world -make-world -w", + "build": "bsb -clean-world -make-world", + "test": "exit 0" + }, + "files": [ + "src", + "bin", + "bsconfig.json", + "postinstall.js" + ], + "peerDependencies": { + "bs-platform": "^6.0.3" + }, + "devDependencies": { + "bs-platform": "^6.0.3" + }, + "keywords": [ + "log", + "logging", + "reason", + "reasonml", + "ocaml", + "bucklescript" + ] +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/.gitattributes b/packages/reason-relay/ppx/ppx.esy.lock/.gitattributes new file mode 100644 index 00000000..25366aee --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/.gitattributes @@ -0,0 +1,3 @@ + +# Set eol to LF so files aren't converted to CRLF-eol on Windows. +* text eol=lf diff --git a/packages/reason-relay/ppx/ppx.esy.lock/.gitignore b/packages/reason-relay/ppx/ppx.esy.lock/.gitignore new file mode 100644 index 00000000..a221be22 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/.gitignore @@ -0,0 +1,3 @@ + +# Reset any possible .gitignore, we want all esy.lock to be un-ignored. +!* diff --git a/packages/reason-relay/ppx/ppx.esy.lock/index.json b/packages/reason-relay/ppx/ppx.esy.lock/index.json new file mode 100644 index 00000000..de2e4821 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/index.json @@ -0,0 +1,850 @@ +{ + "checksum": "254ebb1adf730a7c76c259ece2720ec0", + "root": "reason-relay-ppx@link-dev:./ppx.json", + "node": { + "refmterr@3.1.10@d41d8cd9": { + "id": "refmterr@3.1.10@d41d8cd9", + "name": "refmterr", + "version": "3.1.10", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/refmterr/-/refmterr-3.1.10.tgz#sha1:7c3e238022acb5de4e2254ab506d70eee13c0a46" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/re@opam:1.8.0@7baac1a7", + "@opam/dune@opam:1.10.0@b15ce221", "@esy-ocaml/reason@3.4.0@d41d8cd9" + ], + "devDependencies": [] + }, + "reason-relay-ppx@link-dev:./ppx.json": { + "id": "reason-relay-ppx@link-dev:./ppx.json", + "name": "reason-relay-ppx", + "version": "link-dev:./ppx.json", + "source": { "type": "link-dev", "path": ".", "manifest": "ppx.json" }, + "overrides": [], + "dependencies": [ + "refmterr@3.1.10@d41d8cd9", "ocaml@4.6.10@d41d8cd9", + "@opam/ppxlib@opam:0.6.0@d4709132", + "@opam/ppx_tools_versioned@opam:5.2.2@34409c89", + "@opam/ocaml-migrate-parsetree@opam:1.2.0@23e55f71", + "@opam/graphql_parser@opam:0.12.2@e11c10fb", + "@opam/dune@opam:1.10.0@b15ce221", + "@esy-ocaml/reason@3.4.0@d41d8cd9", + "@esy-ocaml/esy-installer@0.0.1@d41d8cd9" + ], + "devDependencies": [ "@opam/merlin@opam:3.3.1@43415979" ] + }, + "ocaml@4.6.10@d41d8cd9": { + "id": "ocaml@4.6.10@d41d8cd9", + "name": "ocaml", + "version": "4.6.10", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.6.10.tgz#sha1:33c67d0275dc1aeba25b11557192aefcd3cf0a6a" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, + "@opam/yojson@opam:1.7.0@2d92307e": { + "id": "@opam/yojson@opam:1.7.0@2d92307e", + "name": "@opam/yojson", + "version": "opam:1.7.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/b8/b89d39ca3f8c532abe5f547ad3b8f84d#md5:b89d39ca3f8c532abe5f547ad3b8f84d", + "archive:https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz#md5:b89d39ca3f8c532abe5f547ad3b8f84d" + ], + "opam": { + "name": "yojson", + "version": "1.7.0", + "path": "ppx.esy.lock/opam/yojson.1.7.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed", + "@opam/dune@opam:1.10.0@b15ce221", "@opam/cppo@opam:1.6.6@25eb99ce", + "@opam/biniou@opam:1.2.0@c8516f18", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed", + "@opam/biniou@opam:1.2.0@c8516f18" + ] + }, + "@opam/topkg@opam:1.0.0@61f4ccf9": { + "id": "@opam/topkg@opam:1.0.0@61f4ccf9", + "name": "@opam/topkg", + "version": "opam:1.0.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/e3/e3d76bda06bf68cb5853caf6627da603#md5:e3d76bda06bf68cb5853caf6627da603", + "archive:http://erratique.ch/software/topkg/releases/topkg-1.0.0.tbz#md5:e3d76bda06bf68cb5853caf6627da603" + ], + "opam": { + "name": "topkg", + "version": "1.0.0", + "path": "ppx.esy.lock/opam/topkg.1.0.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/result@opam:1.4@7add0d71", + "@opam/ocamlfind@opam:1.8.0@f744a0c5", + "@opam/ocamlbuild@opam:0.14.0@427a2331", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/result@opam:1.4@7add0d71", + "@opam/ocamlbuild@opam:0.14.0@427a2331" + ] + }, + "@opam/stdlib-shims@opam:0.1.0@b4c63262": { + "id": "@opam/stdlib-shims@opam:0.1.0@b4c63262", + "name": "@opam/stdlib-shims", + "version": "opam:0.1.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/12/12b5704eed70c6bff5ac39a16db1425d#md5:12b5704eed70c6bff5ac39a16db1425d", + "archive:https://github.com/ocaml/stdlib-shims/releases/download/0.1.0/stdlib-shims-0.1.0.tbz#md5:12b5704eed70c6bff5ac39a16db1425d" + ], + "opam": { + "name": "stdlib-shims", + "version": "0.1.0", + "path": "ppx.esy.lock/opam/stdlib-shims.0.1.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/stdio@opam:v0.12.0@1d18adcb": { + "id": "@opam/stdio@opam:v0.12.0@1d18adcb", + "name": "@opam/stdio", + "version": "opam:v0.12.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/b2/b261ff2d5667fde960c95e50cff668da#md5:b261ff2d5667fde960c95e50cff668da", + "archive:https://ocaml.janestreet.com/ocaml-core/v0.12/files/stdio-v0.12.0.tar.gz#md5:b261ff2d5667fde960c95e50cff668da" + ], + "opam": { + "name": "stdio", + "version": "v0.12.0", + "path": "ppx.esy.lock/opam/stdio.v0.12.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221", + "@opam/base@opam:v0.12.2@e209c8f2", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/base@opam:v0.12.2@e209c8f2" + ] + }, + "@opam/sexplib0@opam:v0.12.0@e823b4e9": { + "id": "@opam/sexplib0@opam:v0.12.0@e823b4e9", + "name": "@opam/sexplib0", + "version": "opam:v0.12.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/24/2486a25d3a94da9a94acc018b5f09061#md5:2486a25d3a94da9a94acc018b5f09061", + "archive:https://ocaml.janestreet.com/ocaml-core/v0.12/files/sexplib0-v0.12.0.tar.gz#md5:2486a25d3a94da9a94acc018b5f09061" + ], + "opam": { + "name": "sexplib0", + "version": "v0.12.0", + "path": "ppx.esy.lock/opam/sexplib0.v0.12.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/seq@opam:0.1@93954fa7": { + "id": "@opam/seq@opam:0.1@93954fa7", + "name": "@opam/seq", + "version": "opam:0.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/0e/0e87f9709541ed46ecb6f414bc31458c#md5:0e87f9709541ed46ecb6f414bc31458c", + "archive:https://github.com/c-cube/seq/archive/0.1.tar.gz#md5:0e87f9709541ed46ecb6f414bc31458c" + ], + "opam": { + "name": "seq", + "version": "0.1", + "path": "ppx.esy.lock/opam/seq.0.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@f744a0c5", + "@opam/ocamlbuild@opam:0.14.0@427a2331", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/result@opam:1.4@7add0d71": { + "id": "@opam/result@opam:1.4@7add0d71", + "name": "@opam/result", + "version": "opam:1.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/d3/d3162dbc501a2af65c8c71e0866541da#md5:d3162dbc501a2af65c8c71e0866541da", + "archive:https://github.com/janestreet/result/archive/1.4.tar.gz#md5:d3162dbc501a2af65c8c71e0866541da" + ], + "opam": { + "name": "result", + "version": "1.4", + "path": "ppx.esy.lock/opam/result.1.4" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/re@opam:1.8.0@7baac1a7": { + "id": "@opam/re@opam:1.8.0@7baac1a7", + "name": "@opam/re", + "version": "opam:1.8.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/76/765f6f8d3e6ab200866e719ed7e5178d#md5:765f6f8d3e6ab200866e719ed7e5178d", + "archive:https://github.com/ocaml/ocaml-re/releases/download/1.8.0/re-1.8.0.tbz#md5:765f6f8d3e6ab200866e719ed7e5178d" + ], + "opam": { + "name": "re", + "version": "1.8.0", + "path": "ppx.esy.lock/opam/re.1.8.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/seq@opam:0.1@93954fa7", + "@opam/jbuilder@opam:transition@58bdfe0a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/seq@opam:0.1@93954fa7" + ] + }, + "@opam/ppxlib@opam:0.6.0@d4709132": { + "id": "@opam/ppxlib@opam:0.6.0@d4709132", + "name": "@opam/ppxlib", + "version": "opam:0.6.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/e2/e2d129139891c135acc6d52a3fa9f731#md5:e2d129139891c135acc6d52a3fa9f731", + "archive:https://github.com/ocaml-ppx/ppxlib/releases/download/0.6.0/ppxlib-0.6.0.tbz#md5:e2d129139891c135acc6d52a3fa9f731" + ], + "opam": { + "name": "ppxlib", + "version": "0.6.0", + "path": "ppx.esy.lock/opam/ppxlib.0.6.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/stdio@opam:v0.12.0@1d18adcb", + "@opam/ppx_derivers@opam:1.2.1@0b458500", + "@opam/ocaml-migrate-parsetree@opam:1.2.0@23e55f71", + "@opam/ocaml-compiler-libs@opam:v0.12.0@8482f7f7", + "@opam/dune@opam:1.10.0@b15ce221", + "@opam/base@opam:v0.12.2@e209c8f2", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/stdio@opam:v0.12.0@1d18adcb", + "@opam/ppx_derivers@opam:1.2.1@0b458500", + "@opam/ocaml-migrate-parsetree@opam:1.2.0@23e55f71", + "@opam/ocaml-compiler-libs@opam:v0.12.0@8482f7f7", + "@opam/base@opam:v0.12.2@e209c8f2" + ] + }, + "@opam/ppx_tools_versioned@opam:5.2.2@34409c89": { + "id": "@opam/ppx_tools_versioned@opam:5.2.2@34409c89", + "name": "@opam/ppx_tools_versioned", + "version": "opam:5.2.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/f7/f78a3c2b4cc3b92702e1f7096a6125fa#md5:f78a3c2b4cc3b92702e1f7096a6125fa", + "archive:https://github.com/ocaml-ppx/ppx_tools_versioned/archive/5.2.2.tar.gz#md5:f78a3c2b4cc3b92702e1f7096a6125fa" + ], + "opam": { + "name": "ppx_tools_versioned", + "version": "5.2.2", + "path": "ppx.esy.lock/opam/ppx_tools_versioned.5.2.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", + "@opam/ocaml-migrate-parsetree@opam:1.2.0@23e55f71", + "@opam/dune@opam:1.10.0@b15ce221", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", + "@opam/ocaml-migrate-parsetree@opam:1.2.0@23e55f71" + ] + }, + "@opam/ppx_derivers@opam:1.2.1@0b458500": { + "id": "@opam/ppx_derivers@opam:1.2.1@0b458500", + "name": "@opam/ppx_derivers", + "version": "opam:1.2.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/5d/5dc2bf130c1db3c731fe0fffc5648b41#md5:5dc2bf130c1db3c731fe0fffc5648b41", + "archive:https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz#md5:5dc2bf130c1db3c731fe0fffc5648b41" + ], + "opam": { + "name": "ppx_derivers", + "version": "1.2.1", + "path": "ppx.esy.lock/opam/ppx_derivers.1.2.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/ocamlfind@opam:1.8.0@f744a0c5": { + "id": "@opam/ocamlfind@opam:1.8.0@f744a0c5", + "name": "@opam/ocamlfind", + "version": "opam:1.8.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/a7/a710c559667672077a93d34eb6a42e5b#md5:a710c559667672077a93d34eb6a42e5b", + "archive:http://download2.camlcity.org/download/findlib-1.8.0.tar.gz#md5:a710c559667672077a93d34eb6a42e5b", + "archive:http://download.camlcity.org/download/findlib-1.8.0.tar.gz#md5:a710c559667672077a93d34eb6a42e5b" + ], + "opam": { + "name": "ocamlfind", + "version": "1.8.0", + "path": "ppx.esy.lock/opam/ocamlfind.1.8.0" + } + }, + "overrides": [ + { + "opamoverride": + "ppx.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override" + } + ], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/conf-m4@opam:1@dd7dde42", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/ocamlbuild@opam:0.14.0@427a2331": { + "id": "@opam/ocamlbuild@opam:0.14.0@427a2331", + "name": "@opam/ocamlbuild", + "version": "opam:0.14.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/87/87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78", + "archive:https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" + ], + "opam": { + "name": "ocamlbuild", + "version": "0.14.0", + "path": "ppx.esy.lock/opam/ocamlbuild.0.14.0" + } + }, + "overrides": [ + { + "opamoverride": + "ppx.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override" + } + ], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/ocaml-migrate-parsetree@opam:1.2.0@23e55f71": { + "id": "@opam/ocaml-migrate-parsetree@opam:1.2.0@23e55f71", + "name": "@opam/ocaml-migrate-parsetree", + "version": "opam:1.2.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/cc/cc6fb09ad6f99156c7dba47711c62c6f#md5:cc6fb09ad6f99156c7dba47711c62c6f", + "archive:https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.2.0/ocaml-migrate-parsetree-v1.2.0.tbz#md5:cc6fb09ad6f99156c7dba47711c62c6f" + ], + "opam": { + "name": "ocaml-migrate-parsetree", + "version": "1.2.0", + "path": "ppx.esy.lock/opam/ocaml-migrate-parsetree.1.2.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/result@opam:1.4@7add0d71", + "@opam/ppx_derivers@opam:1.2.1@0b458500", + "@opam/dune@opam:1.10.0@b15ce221", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/result@opam:1.4@7add0d71", + "@opam/ppx_derivers@opam:1.2.1@0b458500" + ] + }, + "@opam/ocaml-compiler-libs@opam:v0.12.0@8482f7f7": { + "id": "@opam/ocaml-compiler-libs@opam:v0.12.0@8482f7f7", + "name": "@opam/ocaml-compiler-libs", + "version": "opam:v0.12.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/33/3351925ed99be59829641d2044fc80c0#md5:3351925ed99be59829641d2044fc80c0", + "archive:https://github.com/janestreet/ocaml-compiler-libs/archive/v0.12.0.tar.gz#md5:3351925ed99be59829641d2044fc80c0" + ], + "opam": { + "name": "ocaml-compiler-libs", + "version": "v0.12.0", + "path": "ppx.esy.lock/opam/ocaml-compiler-libs.v0.12.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/merlin-extend@opam:0.4@9e025201": { + "id": "@opam/merlin-extend@opam:0.4@9e025201", + "name": "@opam/merlin-extend", + "version": "opam:0.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/06/0663a58f2c45fad71615fbf0f6dd2e51#md5:0663a58f2c45fad71615fbf0f6dd2e51", + "archive:https://github.com/let-def/merlin-extend/archive/v0.4.tar.gz#md5:0663a58f2c45fad71615fbf0f6dd2e51" + ], + "opam": { + "name": "merlin-extend", + "version": "0.4", + "path": "ppx.esy.lock/opam/merlin-extend.0.4" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221", + "@opam/cppo@opam:1.6.6@25eb99ce", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/merlin@opam:3.3.1@43415979": { + "id": "@opam/merlin@opam:3.3.1@43415979", + "name": "@opam/merlin", + "version": "opam:3.3.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/b5/b542cacabeb98f9f22c6740f22a9fea7#md5:b542cacabeb98f9f22c6740f22a9fea7", + "archive:https://github.com/ocaml/merlin/archive/v3.3.1.tar.gz#md5:b542cacabeb98f9f22c6740f22a9fea7" + ], + "opam": { + "name": "merlin", + "version": "3.3.1", + "path": "ppx.esy.lock/opam/merlin.3.3.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/yojson@opam:1.7.0@2d92307e", + "@opam/ocamlfind@opam:1.8.0@f744a0c5", + "@opam/dune@opam:1.10.0@b15ce221", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/yojson@opam:1.7.0@2d92307e", + "@opam/ocamlfind@opam:1.8.0@f744a0c5" + ] + }, + "@opam/menhir@opam:20190626@bbeb8953": { + "id": "@opam/menhir@opam:20190626@bbeb8953", + "name": "@opam/menhir", + "version": "opam:20190626", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/78/783961f8d124449a1a335cc8e50f013f#md5:783961f8d124449a1a335cc8e50f013f", + "archive:https://gitlab.inria.fr/fpottier/menhir/repository/20190626/archive.tar.gz#md5:783961f8d124449a1a335cc8e50f013f" + ], + "opam": { + "name": "menhir", + "version": "20190626", + "path": "ppx.esy.lock/opam/menhir.20190626" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@f744a0c5", + "@opam/ocamlbuild@opam:0.14.0@427a2331", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/jbuilder@opam:transition@58bdfe0a": { + "id": "@opam/jbuilder@opam:transition@58bdfe0a", + "name": "@opam/jbuilder", + "version": "opam:transition", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "jbuilder", + "version": "transition", + "path": "ppx.esy.lock/opam/jbuilder.transition" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221" + ] + }, + "@opam/graphql_parser@opam:0.12.2@e11c10fb": { + "id": "@opam/graphql_parser@opam:0.12.2@e11c10fb", + "name": "@opam/graphql_parser", + "version": "opam:0.12.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/d7/d7c79e9527a57051b40c005c36cf236f#md5:d7c79e9527a57051b40c005c36cf236f", + "archive:https://github.com/andreas/ocaml-graphql-server/releases/download/0.12.2/graphql-0.12.2.tbz#md5:d7c79e9527a57051b40c005c36cf236f" + ], + "opam": { + "name": "graphql_parser", + "version": "0.12.2", + "path": "ppx.esy.lock/opam/graphql_parser.0.12.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/re@opam:1.8.0@7baac1a7", + "@opam/menhir@opam:20190626@bbeb8953", + "@opam/fmt@opam:0.8.6@a06c130d", "@opam/dune@opam:1.10.0@b15ce221", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/re@opam:1.8.0@7baac1a7", + "@opam/fmt@opam:0.8.6@a06c130d" + ] + }, + "@opam/fmt@opam:0.8.6@a06c130d": { + "id": "@opam/fmt@opam:0.8.6@a06c130d", + "name": "@opam/fmt", + "version": "opam:0.8.6", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/54/5407789e5f0ea42272ca19353b1abfd3#md5:5407789e5f0ea42272ca19353b1abfd3", + "archive:https://erratique.ch/software/fmt/releases/fmt-0.8.6.tbz#md5:5407789e5f0ea42272ca19353b1abfd3" + ], + "opam": { + "name": "fmt", + "version": "0.8.6", + "path": "ppx.esy.lock/opam/fmt.0.8.6" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/topkg@opam:1.0.0@61f4ccf9", + "@opam/stdlib-shims@opam:0.1.0@b4c63262", + "@opam/seq@opam:0.1@93954fa7", "@opam/ocamlfind@opam:1.8.0@f744a0c5", + "@opam/ocamlbuild@opam:0.14.0@427a2331", + "@opam/base-unix@opam:base@87d0b2eb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/stdlib-shims@opam:0.1.0@b4c63262", + "@opam/seq@opam:0.1@93954fa7" + ] + }, + "@opam/easy-format@opam:1.3.1@9abfd4ed": { + "id": "@opam/easy-format@opam:1.3.1@9abfd4ed", + "name": "@opam/easy-format", + "version": "opam:1.3.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/4e/4e163700fb88fdcd6b8976c3a216c8ea#md5:4e163700fb88fdcd6b8976c3a216c8ea", + "archive:https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz#md5:4e163700fb88fdcd6b8976c3a216c8ea" + ], + "opam": { + "name": "easy-format", + "version": "1.3.1", + "path": "ppx.esy.lock/opam/easy-format.1.3.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.6.10@d41d8cd9" ] + }, + "@opam/dune@opam:1.10.0@b15ce221": { + "id": "@opam/dune@opam:1.10.0@b15ce221", + "name": "@opam/dune", + "version": "opam:1.10.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/ed/ed16e628de270c5dc242fbf52e6b80252f7039c04d93970779f13c135e4edd95#sha256:ed16e628de270c5dc242fbf52e6b80252f7039c04d93970779f13c135e4edd95", + "archive:https://github.com/ocaml/dune/releases/download/1.10.0/dune-1.10.0.tbz#sha256:ed16e628de270c5dc242fbf52e6b80252f7039c04d93970779f13c135e4edd95" + ], + "opam": { + "name": "dune", + "version": "1.10.0", + "path": "ppx.esy.lock/opam/dune.1.10.0" + } + }, + "overrides": [ + { + "opamoverride": + "ppx.esy.lock/overrides/opam__s__dune_opam__c__1.10.0_opam_override" + } + ], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084" + ] + }, + "@opam/cppo@opam:1.6.6@25eb99ce": { + "id": "@opam/cppo@opam:1.6.6@25eb99ce", + "name": "@opam/cppo", + "version": "opam:1.6.6", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/e7/e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0#sha256:e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0", + "archive:https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz#sha256:e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" + ], + "opam": { + "name": "cppo", + "version": "1.6.6", + "path": "ppx.esy.lock/opam/cppo.1.6.6" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/dune@opam:1.10.0@b15ce221", + "@opam/base-unix@opam:base@87d0b2eb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb" + ] + }, + "@opam/conf-which@opam:1@56319cdb": { + "id": "@opam/conf-which@opam:1@56319cdb", + "name": "@opam/conf-which", + "version": "opam:1", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "conf-which", + "version": "1", + "path": "ppx.esy.lock/opam/conf-which.1" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/conf-m4@opam:1@dd7dde42": { + "id": "@opam/conf-m4@opam:1@dd7dde42", + "name": "@opam/conf-m4", + "version": "opam:1", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "conf-m4", + "version": "1", + "path": "ppx.esy.lock/opam/conf-m4.1" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/biniou@opam:1.2.0@c8516f18": { + "id": "@opam/biniou@opam:1.2.0@c8516f18", + "name": "@opam/biniou", + "version": "opam:1.2.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/f3/f3e92358e832ed94eaf23ce622ccc2f9#md5:f3e92358e832ed94eaf23ce622ccc2f9", + "archive:https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz#md5:f3e92358e832ed94eaf23ce622ccc2f9" + ], + "opam": { + "name": "biniou", + "version": "1.2.0", + "path": "ppx.esy.lock/opam/biniou.1.2.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", + "@opam/easy-format@opam:1.3.1@9abfd4ed", + "@opam/conf-which@opam:1@56319cdb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed" + ] + }, + "@opam/base-unix@opam:base@87d0b2eb": { + "id": "@opam/base-unix@opam:base@87d0b2eb", + "name": "@opam/base-unix", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-unix", + "version": "base", + "path": "ppx.esy.lock/opam/base-unix.base" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/base-threads@opam:base@36803084": { + "id": "@opam/base-threads@opam:base@36803084", + "name": "@opam/base-threads", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-threads", + "version": "base", + "path": "ppx.esy.lock/opam/base-threads.base" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/base@opam:v0.12.2@e209c8f2": { + "id": "@opam/base@opam:v0.12.2@e209c8f2", + "name": "@opam/base", + "version": "opam:v0.12.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/71/7150e848a730369a2549d01645fb6c72#md5:7150e848a730369a2549d01645fb6c72", + "archive:https://github.com/janestreet/base/archive/v0.12.2.tar.gz#md5:7150e848a730369a2549d01645fb6c72" + ], + "opam": { + "name": "base", + "version": "v0.12.2", + "path": "ppx.esy.lock/opam/base.v0.12.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/sexplib0@opam:v0.12.0@e823b4e9", + "@opam/dune@opam:1.10.0@b15ce221", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/sexplib0@opam:v0.12.0@e823b4e9" + ] + }, + "@esy-ocaml/substs@0.0.1@d41d8cd9": { + "id": "@esy-ocaml/substs@0.0.1@d41d8cd9", + "name": "@esy-ocaml/substs", + "version": "0.0.1", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@esy-ocaml/substs/-/substs-0.0.1.tgz#sha1:59ebdbbaedcda123fc7ed8fb2b302b7d819e9a46" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, + "@esy-ocaml/reason@3.4.0@d41d8cd9": { + "id": "@esy-ocaml/reason@3.4.0@d41d8cd9", + "name": "@esy-ocaml/reason", + "version": "3.4.0", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@esy-ocaml/reason/-/reason-3.4.0.tgz#sha1:8c84c183a95d489a3e82ff0465effe4b56ff12af" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.6.10@d41d8cd9", "@opam/result@opam:1.4@7add0d71", + "@opam/ocamlfind@opam:1.8.0@f744a0c5", + "@opam/ocaml-migrate-parsetree@opam:1.2.0@23e55f71", + "@opam/merlin-extend@opam:0.4@9e025201", + "@opam/menhir@opam:20190626@bbeb8953", + "@opam/dune@opam:1.10.0@b15ce221" + ], + "devDependencies": [] + }, + "@esy-ocaml/esy-installer@0.0.1@d41d8cd9": { + "id": "@esy-ocaml/esy-installer@0.0.1@d41d8cd9", + "name": "@esy-ocaml/esy-installer", + "version": "0.0.1", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@esy-ocaml/esy-installer/-/esy-installer-0.0.1.tgz#sha1:420c65f7e5f9bafa3da578532c352acdf00837aa" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + } + } +} \ No newline at end of file diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/base-threads.base/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/base-threads.base/opam new file mode 100644 index 00000000..914ff50c --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/base-threads.base/opam @@ -0,0 +1,6 @@ +opam-version: "2.0" +maintainer: "https://github.com/ocaml/opam-repository/issues" +description: """ +Threads library distributed with the OCaml compiler +""" + diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/base-unix.base/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/base-unix.base/opam new file mode 100644 index 00000000..b973540b --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/base-unix.base/opam @@ -0,0 +1,6 @@ +opam-version: "2.0" +maintainer: "https://github.com/ocaml/opam-repository/issues" +description: """ +Unix library distributed with the OCaml compiler +""" + diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/base.v0.12.2/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/base.v0.12.2/opam new file mode 100644 index 00000000..18274d19 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/base.v0.12.2/opam @@ -0,0 +1,38 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/janestreet/base" +bug-reports: "https://github.com/janestreet/base/issues" +dev-repo: "git+https://github.com/janestreet/base.git" +doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/base/index.html" +license: "MIT" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.04.2" & < "4.09.0"} + "sexplib0" {>= "v0.12" & < "v0.13"} + "dune" {build & >= "1.5.1"} +] +depopts: [ + "base-native-int63" +] +synopsis: "Full standard library replacement for OCaml" +description: " +Full standard library replacement for OCaml + +Base is a complete and portable alternative to the OCaml standard +library. It provides all standard functionalities one would expect +from a language standard library. It uses consistent conventions +across all of its module. + +Base aims to be usable in any context. As a result system dependent +features such as I/O are not offered by Base. They are instead +provided by companion libraries such as stdio: + + https://github.com/janestreet/stdio +" +url { + src: "https://github.com/janestreet/base/archive/v0.12.2.tar.gz" + checksum: "md5=7150e848a730369a2549d01645fb6c72" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/biniou.1.2.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/biniou.1.2.0/opam new file mode 100644 index 00000000..8c205dc1 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/biniou.1.2.0/opam @@ -0,0 +1,25 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] + +homepage: "https://github.com/mjambon/biniou" +bug-reports: "https://github.com/mjambon/biniou/issues" +dev-repo: "git+https://github.com/mjambon/biniou.git" +license: "BSD-3-Clause" + +build: [ + ["jbuilder" "build" "-p" name "-j" jobs] + ["jbuilder" "runtest" "-p" name] {with-test} +] +depends: [ + "ocaml" {>= "4.02.3"} + "conf-which" {build} + "jbuilder" {build & >= "1.0+beta7"} + "easy-format" +] +synopsis: + "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve" +url { + src: "https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz" + checksum: "md5=f3e92358e832ed94eaf23ce622ccc2f9" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/conf-m4.1/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/conf-m4.1/opam new file mode 100644 index 00000000..981e7021 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/conf-m4.1/opam @@ -0,0 +1,23 @@ +opam-version: "2.0" +maintainer: "tim@gfxmonk.net" +homepage: "http://www.gnu.org/software/m4/m4.html" +bug-reports: "https://github.com/ocaml/opam-repository/issues" +authors: "GNU Project" +license: "GPL-3" +build: [["sh" "-exc" "echo | m4"]] +depexts: [ + ["m4"] {os-distribution = "debian"} + ["m4"] {os-distribution = "ubuntu"} + ["m4"] {os-distribution = "fedora"} + ["m4"] {os-distribution = "rhel"} + ["m4"] {os-distribution = "centos"} + ["m4"] {os-distribution = "alpine"} + ["m4"] {os-distribution = "nixos"} + ["m4"] {os-family = "suse"} + ["m4"] {os-distribution = "ol"} + ["m4"] {os-distribution = "arch"} +] +synopsis: "Virtual package relying on m4" +description: + "This package can only install if the m4 binary is installed on the system." +flags: conf diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/conf-which.1/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/conf-which.1/opam new file mode 100644 index 00000000..802239a5 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/conf-which.1/opam @@ -0,0 +1,20 @@ +opam-version: "2.0" +maintainer: "unixjunkie@sdf.org" +homepage: "http://www.gnu.org/software/which/" +authors: "Carlo Wood" +bug-reports: "https://github.com/ocaml/opam-repository/issues" +license: "GPL-2+" +build: [["which" "which"]] +depexts: [ + ["which"] {os-distribution = "centos"} + ["which"] {os-distribution = "fedora"} + ["which"] {os-family = "suse"} + ["debianutils"] {os-distribution = "debian"} + ["debianutils"] {os-distribution = "ubuntu"} + ["which"] {os-distribution = "nixos"} + ["which"] {os-distribution = "arch"} +] +synopsis: "Virtual package relying on which" +description: + "This package can only install if the which program is installed on the system." +flags: conf diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/cppo.1.6.6/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/cppo.1.6.6/opam new file mode 100644 index 00000000..109c9156 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/cppo.1.6.6/opam @@ -0,0 +1,37 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: "Martin Jambon" +license: "BSD-3-Clause" +homepage: "http://mjambon.com/cppo.html" +doc: "https://ocaml-community.github.io/cppo/" +bug-reports: "https://github.com/ocaml-community/cppo/issues" +depends: [ + "ocaml" {>= "4.03"} + "dune" {build & >= "1.0"} + "base-unix" +] +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] +dev-repo: "git+https://github.com/ocaml-community/cppo.git" +synopsis: "Code preprocessor like cpp for OCaml" +description: """ +Cppo is an equivalent of the C preprocessor for OCaml programs. +It allows the definition of simple macros and file inclusion. + +Cppo is: + +* more OCaml-friendly than cpp +* easy to learn without consulting a manual +* reasonably fast +* simple to install and to maintain +""" +url { + src: "https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz" + checksum: [ + "sha256=e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" + "sha512=44ecf9d225d9e45490a2feac0bde04865ca398dba6c3579e3370fcd1ea255707b8883590852af8b2df87123801062b9f3acce2455c092deabf431f9c4fb8d8eb" + ] +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/dune.1.10.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/dune.1.10.0/opam new file mode 100644 index 00000000..43fe41db --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/dune.1.10.0/opam @@ -0,0 +1,53 @@ +opam-version: "2.0" +maintainer: ["Jane Street Group, LLC "] +authors: ["Jane Street Group, LLC "] +bug-reports: "https://github.com/ocaml/dune/issues" +homepage: "https://github.com/ocaml/dune" +doc: "https://dune.readthedocs.io/" +license: "MIT" +dev-repo: "git+https://github.com/ocaml/dune.git" +synopsis: "Fast, portable and opinionated build system" +description: """ + +dune is a build system that was designed to simplify the release of +Jane Street packages. It reads metadata from "dune" files following a +very simple s-expression syntax. + +dune is fast, it has very low-overhead and support parallel builds on +all platforms. It has no system dependencies, all you need to build +dune and packages using dune is OCaml. You don't need or make or bash +as long as the packages themselves don't use bash explicitly. + +dune supports multi-package development by simply dropping multiple +repositories into the same directory. + +It also supports multi-context builds, such as building against +several opam roots/switches simultaneously. This helps maintaining +packages across several versions of OCaml and gives cross-compilation +for free. +""" +depends: [ + "ocaml" {>= "4.02"} + "base-unix" + "base-threads" +] +conflicts: [ + "jbuilder" {!= "transition"} + "odoc" {< "1.3.0"} + "dune-release" {< "1.3.0"} +] +build: [ + # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path + ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} + ["ocaml" "bootstrap.ml"] + ["./boot.exe" "--release" "--subst"] {pinned} + ["./boot.exe" "--release" "-j" jobs] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/1.10.0/dune-1.10.0.tbz" + checksum: [ + "sha256=ed16e628de270c5dc242fbf52e6b80252f7039c04d93970779f13c135e4edd95" + "sha512=2ba3e9a91650be2402bd88dc883b2b5dc1a73d63348a0fa5a9e5fa054da400f84a30e92656e7bec2c0a2786584ce85160ec5ce0b495908417d630f049af06675" + ] +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/easy-format.1.3.1/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/easy-format.1.3.1/opam new file mode 100644 index 00000000..7c36f662 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/easy-format.1.3.1/opam @@ -0,0 +1,20 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] +homepage: "http://mjambon.com/easy-format.html" +bug-reports: "https://github.com/mjambon/easy-format/issues" +dev-repo: "git+https://github.com/mjambon/easy-format.git" +build: [ + ["jbuilder" "build" "-p" name "-j" jobs] + ["jbuilder" "runtest" "-p" name] {with-test} +] +depends: [ + "ocaml" {>= "4.02.3"} + "jbuilder" {build} +] +synopsis: + "High-level and functional interface to the Format module of the OCaml standard library" +url { + src: "https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz" + checksum: "md5=4e163700fb88fdcd6b8976c3a216c8ea" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/fmt.0.8.6/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/fmt.0.8.6/opam new file mode 100644 index 00000000..9ca08a60 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/fmt.0.8.6/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: [ "The fmt programmers" ] +homepage: "https://erratique.ch/software/fmt" +doc: "https://erratique.ch/software/fmt" +dev-repo: "git+https://erratique.ch/repos/fmt.git" +bug-reports: "https://github.com/dbuenzli/fmt/issues" +tags: [ "string" "format" "pretty-print" "org:erratique" ] +license: "ISC" +depends: [ + "ocaml" {>= "4.03.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build & >= "0.9.0"} + # Can be removed once ocaml >= 4.07 + "seq" + "stdlib-shims" +] +depopts: [ "base-unix" "cmdliner" ] +conflicts: [ "cmdliner" {< "0.9.8"} ] +build: [[ + "ocaml" "pkg/pkg.ml" "build" + "--dev-pkg" "%{pinned}%" + "--with-base-unix" "%{base-unix:installed}%" + "--with-cmdliner" "%{cmdliner:installed}%" ]] + +synopsis: """OCaml Format pretty-printer combinators""" +description: """\ + +Fmt exposes combinators to devise `Format` pretty-printing functions. + +Fmt depends only on the OCaml standard library. The optional `Fmt_tty` +library that allows to setup formatters for terminal color output +depends on the Unix library. The optional `Fmt_cli` library that +provides command line support for Fmt depends on [`Cmdliner`][cmdliner]. + +Fmt is distributed under the ISC license. + +[cmdliner]: http://erratique.ch/software/cmdliner +""" +url { +archive: "https://erratique.ch/software/fmt/releases/fmt-0.8.6.tbz" +checksum: "5407789e5f0ea42272ca19353b1abfd3" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/graphql_parser.0.12.2/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/graphql_parser.0.12.2/opam new file mode 100644 index 00000000..ada85e7c --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/graphql_parser.0.12.2/opam @@ -0,0 +1,28 @@ +opam-version: "2.0" +maintainer: "Andreas Garnaes " +authors: "Andreas Garnaes " +homepage: "https://github.com/andreas/ocaml-graphql-server" +doc: "https://andreas.github.io/ocaml-graphql-server/" +bug-reports: "https://github.com/andreas/ocaml-graphql-server/issues" +dev-repo: "git+https://github.com/andreas/ocaml-graphql-server.git" + +build: [ + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] + +depends: [ + "ocaml" {>= "4.03.0"} + "dune" {build} + "menhir" {build} + "alcotest" {with-test & >= "0.8.1"} + "fmt" + "re" {>= "1.5.0"} +] + +synopsis: "Library for parsing GraphQL queries" + +url { +archive: "https://github.com/andreas/ocaml-graphql-server/releases/download/0.12.2/graphql-0.12.2.tbz" +checksum: "d7c79e9527a57051b40c005c36cf236f" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/jbuilder.transition/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/jbuilder.transition/opam new file mode 100644 index 00000000..3e3174a5 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/jbuilder.transition/opam @@ -0,0 +1,15 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/ocaml/dune" +bug-reports: "https://github.com/ocaml/dune/issues" +dev-repo: "git+https://github.com/ocaml/dune.git" +license: "MIT" +depends: ["ocaml" "dune"] +post-messages: [ + "Jbuilder has been renamed and the jbuilder package is now a transition \ + package. Use the dune package instead." +] +synopsis: + "This is a transition package, jbuilder is now named dune. Use the dune" +description: "package instead." diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/menhir.20190626/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/menhir.20190626/opam new file mode 100644 index 00000000..3dd2da01 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/menhir.20190626/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "francois.pottier@inria.fr" +authors: [ + "François Pottier " + "Yann Régis-Gianas " +] +homepage: "http://gitlab.inria.fr/fpottier/menhir" +dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" +bug-reports: "menhir@inria.fr" +build: [ + [make "-f" "Makefile" "PREFIX=%{prefix}%" "USE_OCAMLFIND=true" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] +] +install: [ + [make "-f" "Makefile" "install" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] +] +depends: [ + "ocaml" {>= "4.02"} + "ocamlfind" {build} + "ocamlbuild" {build} +] +synopsis: "An LR(1) parser generator" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/repository/20190626/archive.tar.gz" + checksum: [ + "md5=783961f8d124449a1a335cc8e50f013f" + "sha512=bacc5161682130d894a6476fb79363aa73e5582543265a0c23c9a1f9d974007c04853dc8f6faa2b8bd2e82b2323b8604dcc4cb74308af667698079b394dfd492" + ] +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/merlin-extend.0.4/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/merlin-extend.0.4/opam new file mode 100644 index 00000000..7bc01048 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/merlin-extend.0.4/opam @@ -0,0 +1,28 @@ +opam-version: "2.0" +maintainer: "Frederic Bour " +authors: "Frederic Bour " +homepage: "https://github.com/let-def/merlin-extend" +bug-reports: "https://github.com/let-def/merlin-extend" +license: "MIT" +dev-repo: "git+https://github.com/let-def/merlin-extend.git" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "dune" {build} + "cppo" {build} + "ocaml" {>= "4.02.3"} +] +synopsis: "A protocol to provide custom frontend to Merlin" +description: """ +This protocol allows to replace the OCaml frontend of Merlin. +It extends what used to be done with the `-pp' flag to handle a few more cases.""" +doc: "https://let-def.github.io/merlin-extend" +url { + src: "https://github.com/let-def/merlin-extend/archive/v0.4.tar.gz" + checksum: [ + "md5=0663a58f2c45fad71615fbf0f6dd2e51" + "sha512=9c0f966f57756c06622fdb8ae1e0721bc098b8a9102fb87c22ad62cb52ece77e7447da2f200993f313273ea0b7c40cd889244407813167bd0d572293f02e0968" + ] +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/merlin.3.3.1/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/merlin.3.3.1/opam new file mode 100644 index 00000000..0377679e --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/merlin.3.3.1/opam @@ -0,0 +1,69 @@ +opam-version: "2.0" +maintainer: "defree@gmail.com" +authors: "The Merlin team" +homepage: "https://github.com/ocaml/merlin" +bug-reports: "https://github.com/ocaml/merlin/issues" +dev-repo: "git+https://github.com/ocaml/merlin.git" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] +depends: [ + "ocaml" {>= "4.02.1" & < "4.09"} + "dune" {build & >= "1.8.0"} + "ocamlfind" {>= "1.5.2"} + "yojson" + "mdx" {with-test & >= "1.3.0"} +] +synopsis: + "Editor helper, provides completion, typing and source browsing in Vim and Emacs" +description: + "Merlin is an assistant for editing OCaml code. It aims to provide the features available in modern IDEs: error reporting, auto completion, source browsing and much more." +post-messages: [ + "merlin installed. + +Quick setup for VIM +------------------- +Append this to your .vimrc to add merlin to vim's runtime-path: + let g:opamshare = substitute(system('opam config var share'),'\\n$','','''') + execute \"set rtp+=\" . g:opamshare . \"/merlin/vim\" + +Also run the following line in vim to index the documentation: + :execute \"helptags \" . g:opamshare . \"/merlin/vim/doc\" + +Quick setup for EMACS +------------------- +Add opam emacs directory to your load-path by appending this to your .emacs: + (let ((opam-share (ignore-errors (car (process-lines \"opam\" \"config\" \"var\" \"share\"))))) + (when (and opam-share (file-directory-p opam-share)) + ;; Register Merlin + (add-to-list 'load-path (expand-file-name \"emacs/site-lisp\" opam-share)) + (autoload 'merlin-mode \"merlin\" nil t nil) + ;; Automatically start it in OCaml buffers + (add-hook 'tuareg-mode-hook 'merlin-mode t) + (add-hook 'caml-mode-hook 'merlin-mode t) + ;; Use opam switch to lookup ocamlmerlin binary + (setq merlin-command 'opam))) + +Take a look at https://github.com/ocaml/merlin for more information + +Quick setup with opam-user-setup +-------------------------------- + +Opam-user-setup support Merlin. + + $ opam user-setup install + +should take care of basic setup. +See https://github.com/OCamlPro/opam-user-setup +" + {success & !user-setup:installed} +] +url { + src: "https://github.com/ocaml/merlin/archive/v3.3.1.tar.gz" + checksum: [ + "md5=b542cacabeb98f9f22c6740f22a9fea7" + "sha512=8aa976197a55cdbe38180e80b1ae98b7408734a7a55b975a5be982016e7e723c64e9a82bcb1ff2827b27f9c5d210a2c34665d3e5c18afdaf4b0767b526b3d834" + ] +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ocaml-compiler-libs.v0.12.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocaml-compiler-libs.v0.12.0/opam new file mode 100644 index 00000000..be7b0adb --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocaml-compiler-libs.v0.12.0/opam @@ -0,0 +1,23 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/janestreet/ocaml-compiler-libs" +bug-reports: "https://github.com/janestreet/ocaml-compiler-libs/issues" +dev-repo: "git+https://github.com/janestreet/ocaml-compiler-libs.git" +license: "Apache-2.0" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.04.1"} + "dune" {build & >= "1.0"} +] +synopsis: "OCaml compiler libraries repackaged" +description: """ +This packages exposes the OCaml compiler libraries repackages under +the toplevel names Ocaml_common, Ocaml_bytecomp, ...""" +url { + src: + "https://github.com/janestreet/ocaml-compiler-libs/archive/v0.12.0.tar.gz" + checksum: "md5=3351925ed99be59829641d2044fc80c0" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ocaml-migrate-parsetree.1.2.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocaml-migrate-parsetree.1.2.0/opam new file mode 100644 index 00000000..37950969 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocaml-migrate-parsetree.1.2.0/opam @@ -0,0 +1,34 @@ +opam-version: "2.0" +maintainer: "frederic.bour@lakaban.net" +authors: [ + "Frédéric Bour " + "Jérémie Dimino " +] +license: "LGPL-2.1" +homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree" +bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues" +dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git" +doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/" +tags: [ "syntax" "org:ocamllabs" ] +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "result" + "ppx_derivers" + "dune" {build & >= "1.6.0"} + "ocaml" {>= "4.02.3" & < "4.08.0"} +] +synopsis: "Convert OCaml parsetrees between different versions" +description: """ +Convert OCaml parsetrees between different versions + +This library converts parsetrees, outcometree and ast mappers between +different OCaml versions. High-level functions help making PPX +rewriters independent of a compiler version. +""" +url { + src: + "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.2.0/ocaml-migrate-parsetree-v1.2.0.tbz" + checksum: "md5=cc6fb09ad6f99156c7dba47711c62c6f" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlbuild.0.14.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlbuild.0.14.0/opam new file mode 100644 index 00000000..dd4bf68a --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlbuild.0.14.0/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Gabriel Scherer " +authors: ["Nicolas Pouillard" "Berke Durak"] +homepage: "https://github.com/ocaml/ocamlbuild/" +bug-reports: "https://github.com/ocaml/ocamlbuild/issues" +license: "LGPL-2 with OCaml linking exception" +doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" +dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" +build: [ + [ + make + "-f" + "configure.make" + "all" + "OCAMLBUILD_PREFIX=%{prefix}%" + "OCAMLBUILD_BINDIR=%{bin}%" + "OCAMLBUILD_LIBDIR=%{lib}%" + "OCAMLBUILD_MANDIR=%{man}%" + "OCAML_NATIVE=%{ocaml:native}%" + "OCAML_NATIVE_TOOLS=%{ocaml:native}%" + ] + [make "check-if-preinstalled" "all" "opam-install"] +] +conflicts: [ + "base-ocamlbuild" + "ocamlfind" {< "1.6.2"} +] +synopsis: + "OCamlbuild is a build system with builtin rules to easily build most OCaml projects." +depends: [ + "ocaml" {>= "4.03"} +] +url { + src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz" + checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/files/no-awk-check.patch b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/files/no-awk-check.patch new file mode 100644 index 00000000..c9e80da6 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/files/no-awk-check.patch @@ -0,0 +1,19 @@ +commit 40142bc941e6e308686e86be6fc2da92f346a22f +Author: Kate +Date: Tue Mar 19 16:29:06 2019 +0000 + + Remove awk from the set of checked unix tools as it's not used anywhere + +diff --git a/configure b/configure +index d9b587c..20e8dca 100755 +--- a/configure ++++ b/configure +@@ -184,7 +184,7 @@ echo "Configuring core..." + + # Some standard Unix tools must be available: + +-for tool in sed awk ocaml ocamlc uname rm make cat m4 dirname basename; do ++for tool in sed ocaml ocamlc uname rm make cat m4 dirname basename; do + if in_path $tool; then true; else + echo "configure: $tool not in PATH; this is required" 1>&2 + exit 1 diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/files/ocaml-stub b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/files/ocaml-stub new file mode 100644 index 00000000..e5ad9907 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/files/ocaml-stub @@ -0,0 +1,4 @@ +#!/bin/sh + +BINDIR=$(dirname "$(command -v ocamlc)") +"$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@" diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/files/ocamlfind.install b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/files/ocamlfind.install new file mode 100644 index 00000000..295c6254 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/files/ocamlfind.install @@ -0,0 +1,6 @@ +bin: [ + "src/findlib/ocamlfind" {"ocamlfind"} + "?src/findlib/ocamlfind_opt" {"ocamlfind"} + "?tools/safe_camlp4" +] +toplevel: ["src/findlib/topfind"] diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/opam new file mode 100644 index 00000000..e587a3c1 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ocamlfind.1.8.0/opam @@ -0,0 +1,68 @@ +opam-version: "2.0" +maintainer: "Thomas Gazagnaire " +homepage: "http://projects.camlcity.org/projects/findlib.html" +bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues" +dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git" +patches: ["no-awk-check.patch"] +build: [ + [ + "./configure" + "-bindir" + bin + "-sitelib" + lib + "-mandir" + man + "-config" + "%{lib}%/findlib.conf" + "-no-custom" + "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} + "-no-topfind" {ocaml:preinstalled} + ] + [make "all"] + [make "opt"] {ocaml:native} +] +install: [ + [make "install"] + ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} +] +remove: [ + ["ocamlfind" "remove" "bytes"] + [ + "./configure" + "-bindir" + bin + "-sitelib" + lib + "-mandir" + man + "-config" + "%{lib}%/findlib.conf" + "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} + "-no-topfind" {ocaml:preinstalled} + ] + [make "uninstall"] + ["rm" "-f" "%{bin}%/ocaml"] {ocaml:preinstalled} +] +depends: [ + "ocaml" {>= "4.00.0"} + "conf-m4" {build} +] +synopsis: "A library manager for OCaml" +description: """ +Findlib is a library manager for OCaml. It provides a convention how +to store libraries, and a file format ("META") to describe the +properties of libraries. There is also a tool (ocamlfind) for +interpreting the META files, so that it is very easy to use libraries +in programs and scripts.""" +authors: "Gerd Stolpmann " +extra-files: [ + ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"] + ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"] + ["no-awk-check.patch" "md5=0378123bf1a45fccdea434c053ddb687"] +] +url { + src: "http://download.camlcity.org/download/findlib-1.8.0.tar.gz" + checksum: "md5=a710c559667672077a93d34eb6a42e5b" + mirrors: "http://download2.camlcity.org/download/findlib-1.8.0.tar.gz" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ppx_derivers.1.2.1/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/ppx_derivers.1.2.1/opam new file mode 100644 index 00000000..19e8b0f9 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ppx_derivers.1.2.1/opam @@ -0,0 +1,23 @@ +opam-version: "2.0" +maintainer: "jeremie@dimino.org" +authors: ["Jérémie Dimino"] +license: "BSD3" +homepage: "https://github.com/ocaml-ppx/ppx_derivers" +bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues" +dev-repo: "git://github.com/ocaml-ppx/ppx_derivers.git" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" + "dune" {build} +] +synopsis: "Shared [@@deriving] plugin registry" +description: """ +Ppx_derivers is a tiny package whose sole purpose is to allow +ppx_deriving and ppx_type_conv to inter-operate gracefully when linked +as part of the same ocaml-migrate-parsetree driver.""" +url { + src: "https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz" + checksum: "md5=5dc2bf130c1db3c731fe0fffc5648b41" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ppx_tools_versioned.5.2.2/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/ppx_tools_versioned.5.2.2/opam new file mode 100644 index 00000000..46aff30a --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ppx_tools_versioned.5.2.2/opam @@ -0,0 +1,30 @@ +opam-version: "2.0" +maintainer: "frederic.bour@lakaban.net" +authors: [ + "Frédéric Bour " + "Alain Frisch " +] +license: "MIT" +homepage: "https://github.com/ocaml-ppx/ppx_tools_versioned" +bug-reports: "https://github.com/ocaml-ppx/ppx_tools_versioned/issues" +dev-repo: "git://github.com/ocaml-ppx/ppx_tools_versioned.git" +tags: [ "syntax" ] +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] +depends: [ + "ocaml" {>= "4.02.0"} + "dune" {build & >= "1.0"} + "ocaml-migrate-parsetree" {>= "1.0.10"} +] +synopsis: "A variant of ppx_tools based on ocaml-migrate-parsetree" +url { + src: + "https://github.com/ocaml-ppx/ppx_tools_versioned/archive/5.2.2.tar.gz" + checksum: [ + "md5=f78a3c2b4cc3b92702e1f7096a6125fa" + "sha512=68c168ebc01af46fe8766ad7e36cc778caabb97d8eb303db284d106450cb79974c2a640ce459e197630b9e84b02caa24b59c97c9a8d39ddadc7efc7284e42a70" + ] +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/ppxlib.0.6.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/ppxlib.0.6.0/opam new file mode 100644 index 00000000..9696d8f1 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/ppxlib.0.6.0/opam @@ -0,0 +1,42 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/ocaml-ppx/ppxlib" +bug-reports: "https://github.com/ocaml-ppx/ppxlib/issues" +dev-repo: "git+https://github.com/ocaml-ppx/ppxlib.git" +doc: "https://ocaml-ppx.github.io/ppxlib/" +license: "MIT" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] +] +run-test: [ + ["dune" "runtest" "-p" name "-j" jobs] { ocaml >= "4.06" } +] +depends: [ + "ocaml" {>= "4.04.1" & < "4.08.0"} + "base" {>= "v0.11.0" & < "v0.13"} + "dune" {build} + "ocaml-compiler-libs" {>= "v0.11.0"} + "ocaml-migrate-parsetree" {>= "1.0.9"} + "ppx_derivers" {>= "1.0"} + "stdio" {>= "v0.11.0" & < "v0.13"} + "ocamlfind" {with-test} +] +synopsis: "Base library and tools for ppx rewriters" +description: """ +A comprehensive toolbox for ppx development. It features: +- a OCaml AST / parser / pretty-printer snapshot,to create a full + frontend independent of the version of OCaml; +- a library for library for ppx rewriters in general, and type-driven + code generators in particular; +- a feature-full driver for OCaml AST transformers; +- a quotation mechanism allowing to write values representing the + OCaml AST in the OCaml syntax; +- a generator of open recursion classes from type definitions. +""" +url { + src: + "https://github.com/ocaml-ppx/ppxlib/releases/download/0.6.0/ppxlib-0.6.0.tbz" + checksum: "md5=e2d129139891c135acc6d52a3fa9f731" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/re.1.8.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/re.1.8.0/opam new file mode 100644 index 00000000..77b3fe22 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/re.1.8.0/opam @@ -0,0 +1,37 @@ +opam-version: "2.0" +maintainer: "rudi.grinberg@gmail.com" +authors: [ + "Jerome Vouillon" + "Thomas Gazagnaire" + "Anil Madhavapeddy" + "Rudi Grinberg" + "Gabriel Radanne" +] +license: "LGPL-2.0 with OCaml linking exception" +homepage: "https://github.com/ocaml/ocaml-re" +bug-reports: "https://github.com/ocaml/ocaml-re/issues" +dev-repo: "git+https://github.com/ocaml/ocaml-re.git" +build: [ + ["jbuilder" "subst" "-n" name] {pinned} + ["jbuilder" "build" "-p" name "-j" jobs] + ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test} +] +depends: [ + "ocaml" {>= "4.02.3"} + "jbuilder" {build & >= "1.0+beta10"} + "ounit" {with-test} + "seq" +] +synopsis: "RE is a regular expression library for OCaml" +description: """ +Pure OCaml regular expressions with: +* Perl-style regular expressions (module Re.Perl) +* Posix extended regular expressions (module Re.Posix) +* Emacs-style regular expressions (module Re.Emacs) +* Shell-style file globbing (module Re.Glob) +* Compatibility layer for OCaml's built-in Str module (module Re.Str)""" +url { + src: + "https://github.com/ocaml/ocaml-re/releases/download/1.8.0/re-1.8.0.tbz" + checksum: "md5=765f6f8d3e6ab200866e719ed7e5178d" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/result.1.4/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/result.1.4/opam new file mode 100644 index 00000000..717e0bec --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/result.1.4/opam @@ -0,0 +1,22 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/janestreet/result" +dev-repo: "git+https://github.com/janestreet/result.git" +bug-reports: "https://github.com/janestreet/result/issues" +license: "BSD3" +build: [["dune" "build" "-p" name "-j" jobs]] +depends: [ + "ocaml" + "dune" {build & >= "1.0"} +] +synopsis: "Compatibility Result module" +description: """ +Projects that want to use the new result type defined in OCaml >= 4.03 +while staying compatible with older version of OCaml should use the +Result module defined in this library.""" +url { + src: + "https://github.com/janestreet/result/archive/1.4.tar.gz" + checksum: "md5=d3162dbc501a2af65c8c71e0866541da" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/seq.0.1/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/seq.0.1/opam new file mode 100644 index 00000000..2596b274 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/seq.0.1/opam @@ -0,0 +1,23 @@ +opam-version: "2.0" +maintainer: "simon.cruanes.2007@m4x.org" +authors: "Simon Cruanes" +homepage: "https://github.com/c-cube/seq/" +bug-reports: "https://github.com/c-cube/seq/issues" +license: "GPL" +tags: ["iterator" "seq" "pure" "list" "compatibility" "cascade"] +dev-repo: "git+https://github.com/c-cube/seq.git" +build: [make "build"] +install: [make "install"] +remove: [ "ocamlfind" "remove" "seq" ] +depends: [ + "ocaml" {< "4.07.0"} + "ocamlfind" {build} + "ocamlbuild" {build} +] +synopsis: + "Compatibility package for OCaml's standard iterator type starting from 4.07." +flags: light-uninstall +url { + src: "https://github.com/c-cube/seq/archive/0.1.tar.gz" + checksum: "md5=0e87f9709541ed46ecb6f414bc31458c" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/sexplib0.v0.12.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/sexplib0.v0.12.0/opam new file mode 100644 index 00000000..8268113a --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/sexplib0.v0.12.0/opam @@ -0,0 +1,26 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/janestreet/sexplib0" +bug-reports: "https://github.com/janestreet/sexplib0/issues" +dev-repo: "git+https://github.com/janestreet/sexplib0.git" +doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/sexplib0/index.html" +license: "MIT" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.04.2"} + "dune" {build & >= "1.5.1"} +] +synopsis: "Library containing the definition of S-expressions and some base converters" +description: " +Part of Jane Street's Core library +The Core suite of libraries is an industrial strength alternative to +OCaml's standard library that was developed by Jane Street, the +largest industrial user of OCaml. +" +url { + src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/sexplib0-v0.12.0.tar.gz" + checksum: "md5=2486a25d3a94da9a94acc018b5f09061" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/stdio.v0.12.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/stdio.v0.12.0/opam new file mode 100644 index 00000000..d0adfe53 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/stdio.v0.12.0/opam @@ -0,0 +1,27 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/janestreet/stdio" +bug-reports: "https://github.com/janestreet/stdio/issues" +dev-repo: "git+https://github.com/janestreet/stdio.git" +doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/stdio/index.html" +license: "MIT" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.04.2"} + "base" {>= "v0.12" & < "v0.13"} + "dune" {build & >= "1.5.1"} +] +synopsis: "Standard IO library for OCaml" +description: " +Stdio implements simple input/output functionalities for OCaml. + +It re-exports the input/output functions of the OCaml standard +libraries using a more consistent API. +" +url { + src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/stdio-v0.12.0.tar.gz" + checksum: "md5=b261ff2d5667fde960c95e50cff668da" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/stdlib-shims.0.1.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/stdlib-shims.0.1.0/opam new file mode 100644 index 00000000..6c27a707 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/stdlib-shims.0.1.0/opam @@ -0,0 +1,27 @@ +opam-version: "2.0" +maintainer: "The stdlib-shims programmers" +authors: "The stdlib-shims programmers" +homepage: "https://github.com/ocaml/stdlib-shims" +doc: "https://ocaml.github.io/stdlib-shims/" +dev-repo: "git+https://github.com/ocaml/stdlib-shims.git" +bug-reports: "https://github.com/ocaml/stdlib-shims/issues" +tags: ["stdlib" "compatibility" "org:ocaml"] +license: ["typeof OCaml system"] +depends: [ + "dune" {build} + "ocaml" {>= "4.02.3"} +] +build: [ "dune" "build" "-p" name "-j" jobs ] +synopsis: "Backport some of the new stdlib features to older compiler" +description: """ +Backport some of the new stdlib features to older compiler, +such as the Stdlib module. + +This allows projects that require compatibility with older compiler to +use these new features in their code. +""" +url { + src: + "https://github.com/ocaml/stdlib-shims/releases/download/0.1.0/stdlib-shims-0.1.0.tbz" + checksum: "md5=12b5704eed70c6bff5ac39a16db1425d" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/topkg.1.0.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/topkg.1.0.0/opam new file mode 100644 index 00000000..2276edb3 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/topkg.1.0.0/opam @@ -0,0 +1,49 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://erratique.ch/software/topkg" +doc: "http://erratique.ch/software/topkg/doc" +license: "ISC" +dev-repo: "git+http://erratique.ch/repos/topkg.git" +bug-reports: "https://github.com/dbuenzli/topkg/issues" +tags: ["packaging" "ocamlbuild" "org:erratique"] +depends: [ + "ocaml" {>= "4.01.0"} + "ocamlfind" {build & >= "1.6.1"} + "ocamlbuild" + "result" ] +build: [[ + "ocaml" "pkg/pkg.ml" "build" + "--pkg-name" name + "--dev-pkg" "%{pinned}%" ]] +synopsis: """The transitory OCaml software packager""" +description: """\ + +Topkg is a packager for distributing OCaml software. It provides an +API to describe the files a package installs in a given build +configuration and to specify information about the package's +distribution, creation and publication procedures. + +The optional topkg-care package provides the `topkg` command line tool +which helps with various aspects of a package's life cycle: creating +and linting a distribution, releasing it on the WWW, publish its +documentation, add it to the OCaml opam repository, etc. + +Topkg is distributed under the ISC license and has **no** +dependencies. This is what your packages will need as a *build* +dependency. + +Topkg-care is distributed under the ISC license it depends on +[fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], +[webbrowser][webbrowser] and `opam-format`. + +[fmt]: http://erratique.ch/software/fmt +[logs]: http://erratique.ch/software/logs +[bos]: http://erratique.ch/software/bos +[cmdliner]: http://erratique.ch/software/cmdliner +[webbrowser]: http://erratique.ch/software/webbrowser +""" +url { +src: "http://erratique.ch/software/topkg/releases/topkg-1.0.0.tbz" +checksum: "md5=e3d76bda06bf68cb5853caf6627da603" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/opam/yojson.1.7.0/opam b/packages/reason-relay/ppx/ppx.esy.lock/opam/yojson.1.7.0/opam new file mode 100644 index 00000000..54591c67 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/opam/yojson.1.7.0/opam @@ -0,0 +1,38 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] +homepage: "https://github.com/ocaml-community/yojson" +bug-reports: "https://github.com/ocaml-community/yojson/issues" +dev-repo: "git+https://github.com/ocaml-community/yojson.git" +doc: "https://ocaml-community.github.io/yojson/" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] +] +run-test: [["dune" "runtest" "-p" name "-j" jobs]] +depends: [ + "ocaml" {>= "4.02.3"} + "dune" {build} + "cppo" {build} + "easy-format" + "biniou" {>= "1.2.0"} + "alcotest" {with-test & >= "0.8.5"} +] +synopsis: + "Yojson is an optimized parsing and printing library for the JSON format" +description: """ +Yojson is an optimized parsing and printing library for the JSON format. + +It addresses a few shortcomings of json-wheel including 2x speedup, +polymorphic variants and optional syntax for tuples and variants. + +ydump is a pretty-printing command-line program provided with the +yojson package. + +The program atdgen can be used to derive OCaml-JSON serializers and +deserializers from type definitions.""" +url { + src: + "https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz" + checksum: "md5=b89d39ca3f8c532abe5f547ad3b8f84d" +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__dune_opam__c__1.10.0_opam_override/package.json b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__dune_opam__c__1.10.0_opam_override/package.json new file mode 100644 index 00000000..064c7e39 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__dune_opam__c__1.10.0_opam_override/package.json @@ -0,0 +1,14 @@ +{ + "build": [ + [ + "ocaml", + "bootstrap.ml" + ], + [ + "./boot.exe", + "--release", + "-j", + "4" + ] + ] +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch new file mode 100644 index 00000000..4d5bea0e --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch @@ -0,0 +1,463 @@ +--- ./Makefile ++++ ./Makefile +@@ -213,7 +213,7 @@ + rm -f man/ocamlbuild.1 + + man/options_man.byte: src/ocamlbuild_pack.cmo +- $(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte ++ $(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte + + clean:: + rm -f man/options_man.cm* +--- ./src/command.ml ++++ ./src/command.ml +@@ -148,9 +148,10 @@ + let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in + let b = Buffer.create 256 in + (* The best way to prevent bash from switching to its windows-style +- * quote-handling is to prepend an empty string before the command name. *) ++ * quote-handling is to prepend an empty string before the command name. ++ * space seems to work, too - and the ouput is nicer *) + if Sys.os_type = "Win32" then +- Buffer.add_string b "''"; ++ Buffer.add_char b ' '; + let first = ref true in + let put_space () = + if !first then +@@ -260,7 +261,7 @@ + + let execute_many ?(quiet=false) ?(pretend=false) cmds = + add_parallel_stat (List.length cmds); +- let degraded = !*My_unix.is_degraded || Sys.os_type = "Win32" in ++ let degraded = !*My_unix.is_degraded in + let jobs = !jobs in + if jobs < 0 then invalid_arg "jobs < 0"; + let max_jobs = if jobs = 0 then None else Some jobs in +--- ./src/findlib.ml ++++ ./src/findlib.ml +@@ -66,9 +66,6 @@ + (fun command -> lexer & Lexing.from_string & run_and_read command) + command + +-let run_and_read command = +- Printf.ksprintf run_and_read command +- + let rec query name = + try + Hashtbl.find packages name +@@ -135,7 +132,8 @@ + with Not_found -> s + + let list () = +- List.map before_space (split_nl & run_and_read "%s list" ocamlfind) ++ let cmd = Shell.quote_filename_if_needed ocamlfind ^ " list" in ++ List.map before_space (split_nl & run_and_read cmd) + + (* The closure algorithm is easy because the dependencies are already closed + and sorted for each package. We only have to make the union. We could also +--- ./src/main.ml ++++ ./src/main.ml +@@ -162,6 +162,9 @@ + Tags.mem "traverse" tags + || List.exists (Pathname.is_prefix path_name) !Options.include_dirs + || List.exists (Pathname.is_prefix path_name) target_dirs) ++ && ((* beware: !Options.build_dir is an absolute directory *) ++ Pathname.normalize !Options.build_dir ++ <> Pathname.normalize (Pathname.pwd/path_name)) + end + end + end +--- ./src/my_std.ml ++++ ./src/my_std.ml +@@ -271,13 +271,107 @@ + try Array.iter (fun x -> if x = basename then raise Exit) a; false + with Exit -> true + ++let command_plain = function ++| [| |] -> 0 ++| margv -> ++ let rec waitpid a b = ++ match Unix.waitpid a b with ++ | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b ++ | x -> x ++ in ++ let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in ++ let pid', process_status = waitpid [] pid in ++ assert (pid = pid'); ++ match process_status with ++ | Unix.WEXITED n -> n ++ | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *) ++ | Unix.WSTOPPED _ -> 127 ++ ++(* can't use Lexers because of circular dependency *) ++let split_path_win str = ++ let rec aux pos = ++ try ++ let i = String.index_from str pos ';' in ++ let len = i - pos in ++ if len = 0 then ++ aux (succ i) ++ else ++ String.sub str pos (i - pos) :: aux (succ i) ++ with Not_found | Invalid_argument _ -> ++ let len = String.length str - pos in ++ if len = 0 then [] else [String.sub str pos len] ++ in ++ aux 0 ++ ++let windows_shell = lazy begin ++ let rec iter = function ++ | [] -> [| "bash.exe" ; "--norc" ; "--noprofile" |] ++ | hd::tl -> ++ let dash = Filename.concat hd "dash.exe" in ++ if Sys.file_exists dash then [|dash|] else ++ let bash = Filename.concat hd "bash.exe" in ++ if Sys.file_exists bash = false then iter tl else ++ (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *) ++ let sh = Filename.concat hd "sh.exe" in ++ if Sys.file_exists sh then [|sh|] else [|bash ; "--norc" ; "--noprofile"|] ++ in ++ split_path_win (try Sys.getenv "PATH" with Not_found -> "") |> iter ++end ++ ++let prep_windows_cmd cmd = ++ (* workaround known ocaml bug, remove later *) ++ if String.contains cmd '\t' && String.contains cmd ' ' = false then ++ " " ^ cmd ++ else ++ cmd ++ ++let run_with_shell = function ++| "" -> 0 ++| cmd -> ++ let cmd = prep_windows_cmd cmd in ++ let shell = Lazy.force windows_shell in ++ let qlen = Filename.quote cmd |> String.length in ++ (* old versions of dash had problems with bs *) ++ try ++ if qlen < 7_900 then ++ command_plain (Array.append shell [| "-ec" ; cmd |]) ++ else begin ++ (* it can still work, if the called command is a cygwin tool *) ++ let ch_closed = ref false in ++ let file_deleted = ref false in ++ let fln,ch = ++ Filename.open_temp_file ++ ~mode:[Open_binary] ++ "ocamlbuildtmp" ++ ".sh" ++ in ++ try ++ let f_slash = String.map ( fun x -> if x = '\\' then '/' else x ) fln in ++ output_string ch cmd; ++ ch_closed:= true; ++ close_out ch; ++ let ret = command_plain (Array.append shell [| "-e" ; f_slash |]) in ++ file_deleted:= true; ++ Sys.remove fln; ++ ret ++ with ++ | x -> ++ if !ch_closed = false then ++ close_out_noerr ch; ++ if !file_deleted = false then ++ (try Sys.remove fln with _ -> ()); ++ raise x ++ end ++ with ++ | (Unix.Unix_error _) as x -> ++ (* Sys.command doesn't raise an exception, so run_with_shell also won't ++ raise *) ++ Printexc.to_string x ^ ":" ^ cmd |> prerr_endline; ++ 1 ++ + let sys_command = +- match Sys.os_type with +- | "Win32" -> fun cmd -> +- if cmd = "" then 0 else +- let cmd = "bash --norc -c " ^ Filename.quote cmd in +- Sys.command cmd +- | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd ++ if Sys.win32 then run_with_shell ++ else fun cmd -> if cmd = "" then 0 else Sys.command cmd + + (* FIXME warning fix and use Filename.concat *) + let filename_concat x y = +--- ./src/my_std.mli ++++ ./src/my_std.mli +@@ -69,3 +69,6 @@ + + val split_ocaml_version : (int * int * int * string) option + (** (major, minor, patchlevel, rest) *) ++ ++val windows_shell : string array Lazy.t ++val prep_windows_cmd : string -> string +--- ./src/ocamlbuild_executor.ml ++++ ./src/ocamlbuild_executor.ml +@@ -34,6 +34,8 @@ + job_stdin : out_channel; + job_stderr : in_channel; + job_buffer : Buffer.t; ++ job_pid : int; ++ job_tmp_file: string option; + mutable job_dying : bool; + };; + +@@ -76,6 +78,61 @@ + in + loop 0 + ;; ++ ++let open_process_full_win cmd env = ++ let (in_read, in_write) = Unix.pipe () in ++ let (out_read, out_write) = Unix.pipe () in ++ let (err_read, err_write) = Unix.pipe () in ++ Unix.set_close_on_exec in_read; ++ Unix.set_close_on_exec out_write; ++ Unix.set_close_on_exec err_read; ++ let inchan = Unix.in_channel_of_descr in_read in ++ let outchan = Unix.out_channel_of_descr out_write in ++ let errchan = Unix.in_channel_of_descr err_read in ++ let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in ++ let test_cmd = ++ String.concat " " (List.map Filename.quote (Array.to_list shell)) ^ ++ "-ec " ^ ++ Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in ++ let argv,tmp_file = ++ if String.length test_cmd < 7_900 then ++ Array.append ++ shell ++ [| "-ec" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None ++ else ++ let fln,ch = Filename.open_temp_file ~mode:[Open_binary] "ocamlbuild" ".sh" in ++ output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd); ++ close_out ch; ++ let fln' = String.map (function '\\' -> '/' | c -> c) fln in ++ Array.append ++ shell ++ [| "-c" ; fln' |], Some fln in ++ let pid = ++ Unix.create_process_env argv.(0) argv env out_read in_write err_write in ++ Unix.close out_read; ++ Unix.close in_write; ++ Unix.close err_write; ++ (pid, inchan, outchan, errchan,tmp_file) ++ ++let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) = ++ let delete tmp_file = ++ match tmp_file with ++ | None -> () ++ | Some x -> try Sys.remove x with Sys_error _ -> () in ++ let tmp_file_deleted = ref false in ++ try ++ close_in inchan; ++ close_out outchan; ++ close_in errchan; ++ let res = snd(Unix.waitpid [] pid) in ++ tmp_file_deleted := true; ++ delete tmp_file; ++ res ++ with ++ | x when tmp_file <> None && !tmp_file_deleted = false -> ++ delete tmp_file; ++ raise x ++ + (* ***) + (*** execute *) + (* XXX: Add test for non reentrancy *) +@@ -130,10 +187,16 @@ + (*** add_job *) + let add_job cmd rest result id = + (*display begin fun oc -> fp oc "Job %a is %s\n%!" print_job_id id cmd; end;*) +- let (stdout', stdin', stderr') = open_process_full cmd env in ++ let (pid,stdout', stdin', stderr', tmp_file) = ++ if Sys.win32 then open_process_full_win cmd env else ++ let a,b,c = open_process_full cmd env in ++ -1,a,b,c,None ++ in + incr jobs_active; +- set_nonblock (doi stdout'); +- set_nonblock (doi stderr'); ++ if not Sys.win32 then ( ++ set_nonblock (doi stdout'); ++ set_nonblock (doi stderr'); ++ ); + let job = + { job_id = id; + job_command = cmd; +@@ -143,7 +206,9 @@ + job_stdin = stdin'; + job_stderr = stderr'; + job_buffer = Buffer.create 1024; +- job_dying = false } ++ job_dying = false; ++ job_tmp_file = tmp_file; ++ job_pid = pid } + in + outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs); + jobs := JS.add job !jobs; +@@ -199,6 +264,7 @@ + try + read fd u 0 (Bytes.length u) + with ++ | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0 + | Unix.Unix_error(e,_,_) -> + let msg = error_message e in + display (fun oc -> fp oc +@@ -241,14 +307,19 @@ + decr jobs_active; + + (* PR#5371: we would get EAGAIN below otherwise *) +- clear_nonblock (doi job.job_stdout); +- clear_nonblock (doi job.job_stderr); +- ++ if not Sys.win32 then ( ++ clear_nonblock (doi job.job_stdout); ++ clear_nonblock (doi job.job_stderr); ++ ); + do_read ~loop:true (doi job.job_stdout) job; + do_read ~loop:true (doi job.job_stderr) job; + outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs); + jobs := JS.remove job !jobs; +- let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in ++ let status = ++ if Sys.win32 then ++ close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file) ++ else ++ close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in + + let shown = ref false in + +--- ./src/ocamlbuild_unix_plugin.ml ++++ ./src/ocamlbuild_unix_plugin.ml +@@ -48,12 +48,22 @@ + end + + let run_and_open s kont = ++ let s_orig = s in ++ let s = ++ (* Be consistent! My_unix.run_and_open uses My_std.sys_command and ++ sys_command uses bash. *) ++ if Sys.win32 = false then s else ++ let l = match Lazy.force My_std.windows_shell |> Array.to_list with ++ | hd::tl -> (Filename.quote hd)::tl ++ | _ -> assert false in ++ "\"" ^ (String.concat " " l) ^ " -ec " ^ Filename.quote (" " ^ s) ^ "\"" ++ in + let ic = Unix.open_process_in s in + let close () = + match Unix.close_process_in ic with + | Unix.WEXITED 0 -> () + | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ -> +- failwith (Printf.sprintf "Error while running: %s" s) in ++ failwith (Printf.sprintf "Error while running: %s" s_orig) in + let res = try + kont ic + with e -> (close (); raise e) +--- ./src/options.ml ++++ ./src/options.ml +@@ -174,11 +174,24 @@ + build_dir := Filename.concat (Sys.getcwd ()) s + else + build_dir := s ++ ++let slashify = ++ if Sys.win32 then fun p -> String.map (function '\\' -> '/' | x -> x) p ++ else fun p ->p ++ ++let sb () = ++ match Sys.os_type with ++ | "Win32" -> ++ (try set_binary_mode_out stdout true with _ -> ()); ++ | _ -> () ++ ++ + let spec = ref ( + let print_version () = ++ sb (); + Printf.printf "ocamlbuild %s\n%!" Ocamlbuild_config.version; raise Exit_OK + in +- let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in ++ let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in + Arg.align + [ + "-version", Unit print_version , " Display the version"; +@@ -257,8 +270,8 @@ + "-build-dir", String set_build_dir, " Set build directory (implies no-links)"; + "-install-lib-dir", Set_string Ocamlbuild_where.libdir, " Set the install library directory"; + "-install-bin-dir", Set_string Ocamlbuild_where.bindir, " Set the install binary directory"; +- "-where", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), " Display the install library directory"; +- "-which", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), " Display path to the tool command"; ++ "-where", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), " Display the install library directory"; ++ "-which", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), " Display path to the tool command"; + "-ocamlc", set_cmd ocamlc, " Set the OCaml bytecode compiler"; + "-plugin-ocamlc", set_cmd plugin_ocamlc, " Set the OCaml bytecode compiler \ + used when building myocamlbuild.ml (only)"; +--- ./src/pathname.ml ++++ ./src/pathname.ml +@@ -84,6 +84,26 @@ + | x :: xs -> x :: normalize_list xs + + let normalize x = ++ let x = ++ if Sys.win32 = false then ++ x ++ else ++ let len = String.length x in ++ let b = Bytes.create len in ++ for i = 0 to pred len do ++ match x.[i] with ++ | '\\' -> Bytes.set b i '/' ++ | c -> Bytes.set b i c ++ done; ++ if len > 1 then ( ++ let c1 = Bytes.get b 0 in ++ let c2 = Bytes.get b 1 in ++ if c2 = ':' && c1 >= 'a' && c1 <= 'z' && ++ ( len = 2 || Bytes.get b 2 = '/') then ++ Bytes.set b 0 (Char.uppercase_ascii c1) ++ ); ++ Bytes.unsafe_to_string b ++ in + if Glob.eval not_normal_form_re x then + let root, paths = split x in + join root (normalize_list paths) +--- ./src/shell.ml ++++ ./src/shell.ml +@@ -24,12 +24,26 @@ + | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1) + | _ -> false in + loop 0 ++ ++let generic_quote quotequote s = ++ let l = String.length s in ++ let b = Buffer.create (l + 20) in ++ Buffer.add_char b '\''; ++ for i = 0 to l - 1 do ++ if s.[i] = '\'' ++ then Buffer.add_string b quotequote ++ else Buffer.add_char b s.[i] ++ done; ++ Buffer.add_char b '\''; ++ Buffer.contents b ++let unix_quote = generic_quote "'\\''" ++ + let quote_filename_if_needed s = + if is_simple_filename s then s + (* We should probably be using [Filename.unix_quote] except that function + * isn't exported. Users on Windows will have to live with not being able to + * install OCaml into c:\o'caml. Too bad. *) +- else if Sys.os_type = "Win32" then Printf.sprintf "'%s'" s ++ else if Sys.os_type = "Win32" then unix_quote s + else Filename.quote s + let chdir dir = + reset_filesys_cache (); +@@ -37,7 +51,7 @@ + let run args target = + reset_readdir_cache (); + let cmd = String.concat " " (List.map quote_filename_if_needed args) in +- if !*My_unix.is_degraded || Sys.os_type = "Win32" then ++ if !*My_unix.is_degraded then + begin + Log.event cmd target Tags.empty; + let st = sys_command cmd in diff --git a/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json new file mode 100644 index 00000000..b24be7b5 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json @@ -0,0 +1,27 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}" + ], + [ + "make", + "-f", + "configure.make", + "all", + "OCAMLBUILD_PREFIX=#{self.install}", + "OCAMLBUILD_BINDIR=#{self.bin}", + "OCAMLBUILD_LIBDIR=#{self.lib}", + "OCAMLBUILD_MANDIR=#{self.man}", + "OCAMLBUILD_NATIVE=true", + "OCAMLBUILD_NATIVE_TOOLS=true" + ], + [ + "make", + "check-if-preinstalled", + "all", + "#{os == 'windows' ? 'install' : 'opam-install'}" + ] + ] +} diff --git a/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/files/findlib-1.8.0.patch b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/files/findlib-1.8.0.patch new file mode 100644 index 00000000..5d3d1895 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/files/findlib-1.8.0.patch @@ -0,0 +1,489 @@ +--- ./Makefile ++++ ./Makefile +@@ -57,16 +57,16 @@ + cat findlib.conf.in | \ + $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf + if ./tools/cmd_from_same_dir ocamlc; then \ +- echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \ ++ echo 'ocamlc="ocamlc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamlopt; then \ +- echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \ ++ echo 'ocamlopt="ocamlopt.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamldep; then \ +- echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \ ++ echo 'ocamldep="ocamldep.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamldoc; then \ +- echo 'ocamldoc="ocamldoc.opt"' >>findlib.conf; \ ++ echo 'ocamldoc="ocamldoc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + + .PHONY: install-doc +--- ./src/findlib/findlib_config.mlp ++++ ./src/findlib/findlib_config.mlp +@@ -24,3 +24,5 @@ + | "MacOS" -> "" (* don't know *) + | _ -> failwith "Unknown Sys.os_type" + ;; ++ ++let exec_suffix = "@EXEC_SUFFIX@";; +--- ./src/findlib/findlib.ml ++++ ./src/findlib/findlib.ml +@@ -28,15 +28,20 @@ + let conf_ldconf = ref "";; + let conf_ignore_dups_in = ref ([] : string list);; + +-let ocamlc_default = "ocamlc";; +-let ocamlopt_default = "ocamlopt";; +-let ocamlcp_default = "ocamlcp";; +-let ocamloptp_default = "ocamloptp";; +-let ocamlmklib_default = "ocamlmklib";; +-let ocamlmktop_default = "ocamlmktop";; +-let ocamldep_default = "ocamldep";; +-let ocamlbrowser_default = "ocamlbrowser";; +-let ocamldoc_default = "ocamldoc";; ++let add_exec str = ++ match Findlib_config.exec_suffix with ++ | "" -> str ++ | a -> str ^ a ;; ++let ocamlc_default = add_exec "ocamlc";; ++let ocamlopt_default = add_exec "ocamlopt";; ++let ocamlcp_default = add_exec "ocamlcp";; ++let ocamloptp_default = add_exec "ocamloptp";; ++let ocamlmklib_default = add_exec "ocamlmklib";; ++let ocamlmktop_default = add_exec "ocamlmktop";; ++let ocamldep_default = add_exec "ocamldep";; ++let ocamlbrowser_default = add_exec "ocamlbrowser";; ++let ocamldoc_default = add_exec "ocamldoc";; ++ + + + let init_manually +--- ./src/findlib/fl_package_base.ml ++++ ./src/findlib/fl_package_base.ml +@@ -133,7 +133,15 @@ + List.find (fun def -> def.def_var = "exists_if") p.package_defs in + let files = Fl_split.in_words def.def_value in + List.exists +- (fun file -> Sys.file_exists (Filename.concat d' file)) ++ (fun file -> ++ let fln = Filename.concat d' file in ++ let e = Sys.file_exists fln in ++ (* necessary for ppx executables *) ++ if e || Sys.os_type <> "Win32" || Filename.check_suffix fln ".exe" then ++ e ++ else ++ Sys.file_exists (fln ^ ".exe") ++ ) + files + with Not_found -> true in + +--- ./src/findlib/fl_split.ml ++++ ./src/findlib/fl_split.ml +@@ -126,10 +126,17 @@ + | '/' | '\\' -> true + | _ -> false in + let norm_dir_win() = +- if l >= 1 && s.[0] = '/' then +- Buffer.add_char b '\\' else Buffer.add_char b s.[0]; +- if l >= 2 && s.[1] = '/' then +- Buffer.add_char b '\\' else Buffer.add_char b s.[1]; ++ if l >= 1 then ( ++ if s.[0] = '/' then ++ Buffer.add_char b '\\' ++ else ++ Buffer.add_char b s.[0] ; ++ if l >= 2 then ++ if s.[1] = '/' then ++ Buffer.add_char b '\\' ++ else ++ Buffer.add_char b s.[1]; ++ ); + for k = 2 to l - 1 do + let c = s.[k] in + if is_slash c then ( +--- ./src/findlib/frontend.ml ++++ ./src/findlib/frontend.ml +@@ -31,10 +31,18 @@ + else + Sys_error (arg ^ ": " ^ Unix.error_message code) + ++let is_win = Sys.os_type = "Win32" ++ ++let () = ++ match Findlib_config.system with ++ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> ++ (try set_binary_mode_out stdout true with _ -> ()); ++ (try set_binary_mode_out stderr true with _ -> ()); ++ | _ -> () + + let slashify s = + match Findlib_config.system with +- | "mingw" | "mingw64" | "cygwin" -> ++ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> + let b = Buffer.create 80 in + String.iter + (function +@@ -49,7 +57,7 @@ + + let out_path ?(prefix="") s = + match Findlib_config.system with +- | "mingw" | "mingw64" | "cygwin" -> ++ | "win32" | "win64" | "mingw" | "mingw64" | "cygwin" -> + let u = slashify s in + prefix ^ + (if String.contains u ' ' then +@@ -273,11 +281,9 @@ + + + let identify_dir d = +- match Sys.os_type with +- | "Win32" -> +- failwith "identify_dir" (* not available *) +- | _ -> +- let s = Unix.stat d in ++ if is_win then ++ failwith "identify_dir"; (* not available *) ++ let s = Unix.stat d in + (s.Unix.st_dev, s.Unix.st_ino) + ;; + +@@ -459,6 +465,96 @@ + ) + packages + ++let rewrite_cmd s = ++ if s = "" || not is_win then ++ s ++ else ++ let s = ++ let l = String.length s in ++ let b = Buffer.create l in ++ for i = 0 to pred l do ++ match s.[i] with ++ | '/' -> Buffer.add_char b '\\' ++ | x -> Buffer.add_char b x ++ done; ++ Buffer.contents b ++ in ++ if (Filename.is_implicit s && String.contains s '\\' = false) || ++ Filename.check_suffix (String.lowercase s) ".exe" then ++ s ++ else ++ let s' = s ^ ".exe" in ++ if Sys.file_exists s' then ++ s' ++ else ++ s ++ ++let rewrite_cmd s = ++ if s = "" || not is_win then s else ++ let s = ++ let l = String.length s in ++ let b = Buffer.create l in ++ for i = 0 to pred l do ++ match s.[i] with ++ | '/' -> Buffer.add_char b '\\' ++ | x -> Buffer.add_char b x ++ done; ++ Buffer.contents b ++ in ++ if (Filename.is_implicit s && String.contains s '\\' = false) || ++ Filename.check_suffix (String.lowercase s) ".exe" then ++ s ++ else ++ let s' = s ^ ".exe" in ++ if Sys.file_exists s' then ++ s' ++ else ++ s ++ ++let rewrite_pp cmd = ++ if not is_win then cmd else ++ let module T = struct exception Keep end in ++ let is_whitespace = function ++ | ' ' | '\011' | '\012' | '\n' | '\r' | '\t' -> true ++ | _ -> false in ++ (* characters that triggers special behaviour (cmd.exe, not unix shell) *) ++ let is_unsafe_char = function ++ | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true ++ | _ -> false in ++ let len = String.length cmd in ++ let buf = Buffer.create (len + 4) in ++ let buf_cmd = Buffer.create len in ++ let rec iter_ws i = ++ if i >= len then () else ++ let cur = cmd.[i] in ++ if is_whitespace cur then ( ++ Buffer.add_char buf cur; ++ iter_ws (succ i) ++ ) ++ else ++ iter_cmd i ++ and iter_cmd i = ++ if i >= len then add_buf_cmd () else ++ let cur = cmd.[i] in ++ if is_unsafe_char cur || cur = '"' || cur = '\'' then ++ raise T.Keep; ++ if is_whitespace cur then ( ++ add_buf_cmd (); ++ Buffer.add_substring buf cmd i (len - i) ++ ) ++ else ( ++ Buffer.add_char buf_cmd cur; ++ iter_cmd (succ i) ++ ) ++ and add_buf_cmd () = ++ if Buffer.length buf_cmd > 0 then ++ Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd)) ++ in ++ try ++ iter_ws 0; ++ Buffer.contents buf ++ with ++ | T.Keep -> cmd + + let process_pp_spec syntax_preds packages pp_opts = + (* Returns: pp_command *) +@@ -549,7 +645,7 @@ + None -> [] + | Some cmd -> + ["-pp"; +- cmd ^ " " ^ ++ (rewrite_cmd cmd) ^ " " ^ + String.concat " " (List.map Filename.quote pp_i_options) ^ " " ^ + String.concat " " (List.map Filename.quote pp_archives) ^ " " ^ + String.concat " " (List.map Filename.quote pp_opts)] +@@ -625,9 +721,11 @@ + in + try + let preprocessor = ++ rewrite_cmd ( + resolve_path + ~base ~explicit:true +- (package_property predicates pname "ppx") in ++ (package_property predicates pname "ppx") ) ++ in + ["-ppx"; String.concat " " (preprocessor :: options)] + with Not_found -> [] + ) +@@ -895,6 +993,14 @@ + switch (e.g. -L instead of -L ) + *) + ++(* We may need to remove files on which we do not have complete control. ++ On Windows, removing a read-only file fails so try to change the ++ mode of the file first. *) ++let remove_file fname = ++ try Sys.remove fname ++ with Sys_error _ when is_win -> ++ (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ()); ++ Sys.remove fname + + let ocamlc which () = + +@@ -1022,9 +1128,12 @@ + + "-intf", + Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]); +- ++ + "-pp", +- Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" s); ++ Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" (rewrite_pp s)); ++ ++ "-ppx", ++ Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); + + "-thread", + Arg.Unit (fun _ -> threads := threads_default); +@@ -1237,7 +1346,7 @@ + with + any -> + close_out initl; +- Sys.remove initl_file_name; ++ remove_file initl_file_name; + raise any + end; + +@@ -1245,9 +1354,9 @@ + at_exit + (fun () -> + let tr f x = try f x with _ -> () in +- tr Sys.remove initl_file_name; +- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmi"); +- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmo"); ++ tr remove_file initl_file_name; ++ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmi"); ++ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmo"); + ); + + let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in +@@ -1493,7 +1602,9 @@ + [ "-v", Arg.Unit (fun () -> verbose := Verbose); + "-pp", Arg.String (fun s -> + pp_specified := true; +- options := !options @ ["-pp"; s]); ++ options := !options @ ["-pp"; rewrite_pp s]); ++ "-ppx", Arg.String (fun s -> ++ options := !options @ ["-ppx"; rewrite_pp s]); + ] + ) + ) +@@ -1672,7 +1783,9 @@ + Arg.String (fun s -> add_spec_fn "-I" (slashify (resolve_path s))); + + "-pp", Arg.String (fun s -> pp_specified := true; +- add_spec_fn "-pp" s); ++ add_spec_fn "-pp" (rewrite_pp s)); ++ "-ppx", Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); ++ + ] + ) + ) +@@ -1830,7 +1943,10 @@ + output_string ch_out append; + close_out ch_out; + close_in ch_in; +- Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime; ++ (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime ++ with Unix.Unix_error(e,_,_) -> ++ prerr_endline("Warning: setting utimes for " ^ outpath ++ ^ ": " ^ Unix.error_message e)); + + prerr_endline("Installed " ^ outpath); + with +@@ -1882,6 +1998,8 @@ + Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in + let f = + Unix.in_channel_of_descr fd in ++ if is_win then ++ set_binary_mode_in f false; + try + let line = input_line f in + let is_my_file = (line = pkg) in +@@ -2208,7 +2326,7 @@ + let lines = read_ldconf !ldconf in + let dlldir_norm = Fl_split.norm_dir dlldir in + let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in +- let ci_filesys = (Sys.os_type = "Win32") in ++ let ci_filesys = is_win in + let check_dir d = + let d' = Fl_split.norm_dir d in + (d' = dlldir_norm) || +@@ -2356,7 +2474,7 @@ + List.iter + (fun file -> + let absfile = Filename.concat dlldir file in +- Sys.remove absfile; ++ remove_file absfile; + prerr_endline ("Removed " ^ absfile) + ) + dll_files +@@ -2365,7 +2483,7 @@ + (* Remove the files from the package directory: *) + if Sys.file_exists pkgdir then begin + let files = Sys.readdir pkgdir in +- Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files; ++ Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files; + Unix.rmdir pkgdir; + prerr_endline ("Removed " ^ pkgdir) + end +@@ -2415,7 +2533,9 @@ + + + let print_configuration() = ++ let sl = slashify in + let dir s = ++ let s = sl s in + if Sys.file_exists s then + s + else +@@ -2453,27 +2573,27 @@ + if md = "" then "the corresponding package directories" else dir md + ); + Printf.printf "The standard library is assumed to reside in:\n %s\n" +- (Findlib.ocaml_stdlib()); ++ (sl (Findlib.ocaml_stdlib())); + Printf.printf "The ld.conf file can be found here:\n %s\n" +- (Findlib.ocaml_ldconf()); ++ (sl (Findlib.ocaml_ldconf())); + flush stdout + | Some "conf" -> +- print_endline Findlib_config.config_file ++ print_endline (sl Findlib_config.config_file) + | Some "path" -> +- List.iter print_endline (Findlib.search_path()) ++ List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path()) + | Some "destdir" -> +- print_endline (Findlib.default_location()) ++ print_endline ( sl (Findlib.default_location())) + | Some "metadir" -> +- print_endline (Findlib.meta_directory()) ++ print_endline ( sl (Findlib.meta_directory())) + | Some "metapath" -> + let mdir = Findlib.meta_directory() in + let ddir = Findlib.default_location() in +- print_endline +- (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META") ++ print_endline ( sl ++ (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META")) + | Some "stdlib" -> +- print_endline (Findlib.ocaml_stdlib()) ++ print_endline ( sl (Findlib.ocaml_stdlib())) + | Some "ldconf" -> +- print_endline (Findlib.ocaml_ldconf()) ++ print_endline ( sl (Findlib.ocaml_ldconf())) + | _ -> + assert false + ;; +@@ -2481,7 +2601,7 @@ + + let ocamlcall pkg cmd = + let dir = package_directory pkg in +- let path = Filename.concat dir cmd in ++ let path = rewrite_cmd (Filename.concat dir cmd) in + begin + try Unix.access path [ Unix.X_OK ] + with +@@ -2647,6 +2767,10 @@ + | Sys_error f -> + prerr_endline ("ocamlfind: " ^ f); + exit 2 ++ | Unix.Unix_error (e, fn, f) -> ++ prerr_endline ("ocamlfind: " ^ fn ^ " " ^ f ++ ^ ": " ^ Unix.error_message e); ++ exit 2 + | Findlib.No_such_package(pkg,info) -> + prerr_endline ("ocamlfind: Package `" ^ pkg ^ "' not found" ^ + (if info <> "" then " - " ^ info else "")); +--- ./src/findlib/Makefile ++++ ./src/findlib/Makefile +@@ -90,6 +90,7 @@ + cat findlib_config.mlp | \ + $(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \ + $(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \ ++ $(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \ + sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \ + -e 's;@SYSTEM@;$(SYSTEM);g' \ + >findlib_config.ml +@@ -113,7 +114,7 @@ + $(OCAMLC) -a -o num_top.cma $(NUMTOP_OBJECTS) + + clean: +- rm -f *.cmi *.cmo *.cma *.cmx *.a *.o *.cmxa \ ++ rm -f *.cmi *.cmo *.cma *.cmx *.lib *.a *.o *.cmxa \ + fl_meta.ml findlib_config.ml findlib.mml topfind.ml topfind \ + ocamlfind$(EXEC_SUFFIX) ocamlfind_opt$(EXEC_SUFFIX) + +@@ -121,7 +122,7 @@ + mkdir -p "$(prefix)$(OCAML_SITELIB)/$(NAME)" + mkdir -p "$(prefix)$(OCAMLFIND_BIN)" + test $(INSTALL_TOPFIND) -eq 0 || cp topfind "$(prefix)$(OCAML_CORE_STDLIB)" +- files=`$(SH) $(TOP)/tools/collect_files $(TOP)/Makefile.config findlib.cmi findlib.mli findlib.cma findlib.cmxa findlib.a findlib.cmxs topfind.cmi topfind.mli fl_package_base.mli fl_package_base.cmi fl_metascanner.mli fl_metascanner.cmi fl_metatoken.cmi findlib_top.cma findlib_top.cmxa findlib_top.a findlib_top.cmxs findlib_dynload.cma findlib_dynload.cmxa findlib_dynload.a findlib_dynload.cmxs fl_dynload.mli fl_dynload.cmi META` && \ ++ files=`$(SH) $(TOP)/tools/collect_files $(TOP)/Makefile.config findlib.cmi findlib.mli findlib.cma findlib.cmxa findlib$(LIB_SUFFIX) findlib.cmxs topfind.cmi topfind.mli fl_package_base.mli fl_package_base.cmi fl_metascanner.mli fl_metascanner.cmi fl_metatoken.cmi findlib_top.cma findlib_top.cmxa findlib_top$(LIB_SUFFIX) findlib_top.cmxs findlib_dynload.cma findlib_dynload.cmxa findlib_dynload$(LIB_SUFFIX) findlib_dynload.cmxs fl_dynload.mli fl_dynload.cmi META` && \ + cp $$files "$(prefix)$(OCAML_SITELIB)/$(NAME)" + f="ocamlfind$(EXEC_SUFFIX)"; { test -f ocamlfind_opt$(EXEC_SUFFIX) && f="ocamlfind_opt$(EXEC_SUFFIX)"; }; \ + cp $$f "$(prefix)$(OCAMLFIND_BIN)/ocamlfind$(EXEC_SUFFIX)" diff --git a/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/package.json b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/package.json new file mode 100644 index 00000000..136b66c5 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/package.json @@ -0,0 +1,61 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < findlib-1.8.0.patch' : 'true'}" + ], + [ + "./configure", + "-bindir", + "#{self.bin}", + "-sitelib", + "#{self.lib}", + "-mandir", + "#{self.man}", + "-config", + "#{self.lib}/findlib.conf", + "-no-custom", + "-no-topfind" + ], + [ + "make", + "all" + ], + [ + "make", + "opt" + ] + ], + "install": [ + [ + "make", + "install" + ], + [ + "install", + "-m", + "0755", + "ocaml-stub", + "#{self.bin}/ocaml" + ], + [ + "mkdir", + "-p", + "#{self.toplevel}" + ], + [ + "install", + "-m", + "0644", + "src/findlib/topfind", + "#{self.toplevel}/topfind" + ] + ], + "exportedEnv": { + "OCAML_TOPLEVEL_PATH": { + "val": "#{self.toplevel}", + "scope": "global" + } + } +} diff --git a/packages/reason-relay/ppx/ppx.json b/packages/reason-relay/ppx/ppx.json new file mode 100755 index 00000000..af0254c8 --- /dev/null +++ b/packages/reason-relay/ppx/ppx.json @@ -0,0 +1,28 @@ +{ + "name": "reason-relay-ppx", + "version": "0.1.1", + "description": "Logging implementation for ReasonML/BuckleScript", + "author": "Alex Fedoseev ", + "license": "MIT", + "esy": { + "build": "dune build -p #{self.name}", + "buildsInSource": "_build" + }, + "dependencies": { + "@esy-ocaml/esy-installer": "^0.0.1", + "@esy-ocaml/reason": "*", + "@opam/dune": ">=1.6.0", + "@opam/graphql_parser": "0.12.2", + "@opam/ocaml-migrate-parsetree": "1.2.0", + "@opam/ppx_tools_versioned": "*", + "@opam/ppxlib": "0.6.0", + "ocaml": "~4.6.1", + "refmterr": "*" + }, + "resolutions": { + "@esy-ocaml/esy-installer": "0.0.1", + "@opam/menhir": "20190626", + "@opam/re": "1.8.0" + }, + "devDependencies": { "@opam/merlin": "*" } +} \ No newline at end of file diff --git a/packages/reason-relay/ppx/ppx/ReasonRelayPpx.re b/packages/reason-relay/ppx/ppx/ReasonRelayPpx.re new file mode 100755 index 00000000..98b24b4f --- /dev/null +++ b/packages/reason-relay/ppx/ppx/ReasonRelayPpx.re @@ -0,0 +1,186 @@ +open Ppxlib; + +exception Could_not_extract_operation_name; +exception Could_not_extract_operation; + +let extractGraphQLOperation = str => + switch (str |> Graphql_parser.parse) { + | Ok(definitions) => + switch (definitions) { + | [op, ..._] => op + | _ => raise(Could_not_extract_operation) + } + | Error(_) => raise(Could_not_extract_operation) + }; + +let extractTheQueryName = str => + switch (str |> extractGraphQLOperation) { + | Operation({optype: Query, name: Some(name)}) => name + | _ => raise(Could_not_extract_operation_name) + }; + +let extractTheMutationName = str => + switch (str |> extractGraphQLOperation) { + | Operation({optype: Mutation, name: Some(name)}) => name + | _ => raise(Could_not_extract_operation_name) + }; + +let extractTheFragmentName = str => + switch (str |> extractGraphQLOperation) { + | Fragment({name}) => name + | _ => raise(Could_not_extract_operation_name) + }; + +let getGraphQLModuleName = opName => opName ++ "_graphql"; + +let extractOperationStr = (~loc, ~expr) => + switch (expr) { + | PStr([ + { + pstr_desc: + [@implicit_arity] + Pstr_eval( + { + pexp_loc: loc, + pexp_desc: + Pexp_constant( + [@implicit_arity] Pconst_string(operationStr, _), + ), + _, + }, + _, + ), + _, + }, + ]) => operationStr + | _ => + raise( + Location.Error( + Obj.magic(), + /*Location.Error.createf( + ~loc, + "All [%relay] operations must be provided a string, like [%relay.query {| { query SomeQuery { id } |}]", + ),*/ + ), + ) + }; + +let makeModuleNameAst = (~loc, ~moduleName) => { + pmod_attributes: [], + pmod_loc: loc, + pmod_desc: + Pmod_ident({loc, txt: Lident(getGraphQLModuleName(moduleName))}), +}; + +let makeFragment = (~loc, ~moduleName) => + Ast_helper.Mod.mk( + Pmod_structure([ + [%stri module Operation = [%m makeModuleNameAst(~loc, ~moduleName)]], + [%stri include Operation.Unions], + [%stri + module UseFragment = + ReasonRelay.MakeUseFragment({ + type fragment = Operation.fragment; + type fragmentRef = Operation.fragmentRef; + let fragmentSpec = Operation.node; + }) + ], + [%stri + let use = fRef => UseFragment.use(fRef |> Operation.getFragmentRef) + ], + ]), + ); + +let makeQuery = (~loc, ~moduleName) => + Ast_helper.Mod.mk( + Pmod_structure([ + [%stri module Operation = [%m makeModuleNameAst(~loc, ~moduleName)]], + [%stri include Operation.Unions], + [%stri + module UseQuery = + ReasonRelay.MakeUseQuery({ + type response = Operation.response; + type variables = Operation.variables; + let query = Operation.node; + }) + ], + [%stri let use = UseQuery.use], + [%stri + let fetch = + ( + ~environment: ReasonRelay.Environment.t, + ~variables: Operation.variables, + ) + : Js.Promise.t(Operation.response) => + ReasonRelay.fetchQuery(environment, Operation.node, variables) + ], + ]), + ); + +let makeMutation = (~loc, ~moduleName) => + Ast_helper.Mod.mk( + Pmod_structure([ + [%stri module Operation = [%m makeModuleNameAst(~loc, ~moduleName)]], + [%stri include Operation.Unions], + [%stri + module Mutation = + ReasonRelay.MakeCommitMutation({ + type variables = Operation.variables; + type response = Operation.response; + let node = Operation.node; + }) + ], + [%stri + module UseMutation = + ReasonRelay.MakeUseMutation({ + type variables = Operation.variables; + type response = Operation.response; + let node = Operation.node; + }) + ], + [%stri let use = UseMutation.use], + [%stri let commitMutation = Mutation.commitMutation], + ]), + ); + +let queryExtension = + Extension.declare( + "relay.query", + Extension.Context.module_expr, + Ast_pattern.__, + (~loc, ~path as _, expr) => + makeQuery( + ~moduleName=extractOperationStr(~loc, ~expr) |> extractTheQueryName, + ~loc, + ) + ); + +let fragmentExtension = + Extension.declare( + "relay.fragment", + Extension.Context.module_expr, + Ast_pattern.__, + (~loc, ~path as _, expr) => + makeFragment( + ~moduleName=extractOperationStr(~loc, ~expr) |> extractTheFragmentName, + ~loc, + ) + ); + +let mutationExtension = + Extension.declare( + "relay.mutation", + Extension.Context.module_expr, + Ast_pattern.__, + (~loc, ~path as _, expr) => + makeMutation( + ~moduleName=extractOperationStr(~loc, ~expr) |> extractTheMutationName, + ~loc, + ) + ); + +let () = + Driver.register_transformation( + ~extensions=[queryExtension, fragmentExtension, mutationExtension], + "reason-relay", + ); \ No newline at end of file diff --git a/packages/reason-relay/ppx/ppx/dune b/packages/reason-relay/ppx/ppx/dune new file mode 100755 index 00000000..db965aef --- /dev/null +++ b/packages/reason-relay/ppx/ppx/dune @@ -0,0 +1,7 @@ +(library + (name ReasonRelayPpx) + (public_name reason-relay-ppx.lib) + (libraries reason ocaml-migrate-parsetree ppxlib graphql_parser) + (kind ppx_rewriter) + (preprocess (pps ppxlib.metaquot)) +) diff --git a/packages/reason-relay/ppx/reason-relay-ppx.opam b/packages/reason-relay/ppx/reason-relay-ppx.opam new file mode 100755 index 00000000..e69de29b diff --git a/packages/reason-relay/ppx/yarn.lock b/packages/reason-relay/ppx/yarn.lock new file mode 100755 index 00000000..938868a6 --- /dev/null +++ b/packages/reason-relay/ppx/yarn.lock @@ -0,0 +1,8 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +bs-platform@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-6.0.3.tgz#cb401aa4dadbf063dd4a183921195ef3c16d7b11" + integrity sha512-zptjWiSaioLVbEq0n3LPwfn1nyY3qt8fXzdI1O+yj6a6sBKmtT2kcx9oXJZl/cuLUnVumXKpb5ksTsYztbJPUg== diff --git a/packages/reason-relay/src/ReasonRelay.bs.js b/packages/reason-relay/src/ReasonRelay.bs.js new file mode 100644 index 00000000..e3d336db --- /dev/null +++ b/packages/reason-relay/src/ReasonRelay.bs.js @@ -0,0 +1,441 @@ +// Generated by BUCKLESCRIPT VERSION 6.0.3, PLEASE EDIT WITH CARE +'use strict'; + +var $$Array = require("bs-platform/lib/js/array.js"); +var Block = require("bs-platform/lib/js/block.js"); +var Curry = require("bs-platform/lib/js/curry.js"); +var React = require("react"); +var Caml_option = require("bs-platform/lib/js/caml_option.js"); +var ReactRelay = require("react-relay"); +var RelayHooks = require("relay-hooks"); +var RelayRuntime = require("relay-runtime"); +var Caml_exceptions = require("bs-platform/lib/js/caml_exceptions.js"); + +function dataIdToString(dataId) { + return dataId; +} + +function makeDataId(string) { + return string; +} + +function copyFieldsFrom(sourceRecord, t) { + t.copyFieldsFrom(sourceRecord); + return /* () */0; +} + +function getDataId(t) { + return t.getDataID(); +} + +function getLinkedRecord(name, $$arguments, t) { + return Caml_option.nullable_to_opt(t.getLinkedRecord(name, $$arguments)); +} + +function getLinkedRecords(name, $$arguments, t) { + var match = t.getLinkedRecords(name, $$arguments); + if (match == null) { + return undefined; + } else { + return $$Array.map((function (v) { + if (v == null) { + return undefined; + } else { + return Caml_option.some(v); + } + }), match); + } +} + +function getOrCreateLinkedRecord(name, typeName, $$arguments, t) { + return t.getOrCreateLinkedRecord(name, typeName, $$arguments); +} + +function getType(t) { + return t.getType(); +} + +function getValueString(name, $$arguments, t) { + return Caml_option.nullable_to_opt(t.getValue(name, $$arguments)); +} + +function getValueInt(name, $$arguments, t) { + return Caml_option.nullable_to_opt(t.getValue(name, $$arguments)); +} + +function getValueFloat(name, $$arguments, t) { + return Caml_option.nullable_to_opt(t.getValue(name, $$arguments)); +} + +function getValueBool(name, $$arguments, t) { + return Caml_option.nullable_to_opt(t.getValue(name, $$arguments)); +} + +function setLinkedRecord(record, name, $$arguments, t) { + return t.setLinkedRecord(record, name, $$arguments); +} + +function setLinkedRecords(records, name, $$arguments, t) { + return t.setLinkedRecords(records, name, $$arguments); +} + +function setValueString(value, name, $$arguments, t) { + return t.setValue(value, name, $$arguments); +} + +function setValueInt(value, name, $$arguments, t) { + return t.setValue(value, name, $$arguments); +} + +function setValueFloat(value, name, $$arguments, t) { + return t.setValue(value, name, $$arguments); +} + +function setValueBool(value, name, $$arguments, t) { + return t.setValue(value, name, $$arguments); +} + +var RecordProxy = /* module */[ + /* copyFieldsFrom */copyFieldsFrom, + /* getDataId */getDataId, + /* getLinkedRecord */getLinkedRecord, + /* getLinkedRecords */getLinkedRecords, + /* getOrCreateLinkedRecord */getOrCreateLinkedRecord, + /* getType */getType, + /* getValueString */getValueString, + /* getValueInt */getValueInt, + /* getValueFloat */getValueFloat, + /* getValueBool */getValueBool, + /* setLinkedRecord */setLinkedRecord, + /* setLinkedRecords */setLinkedRecords, + /* setValueString */setValueString, + /* setValueInt */setValueInt, + /* setValueFloat */setValueFloat, + /* setValueBool */setValueBool +]; + +function create(dataId, typeName, t) { + return t.create(dataId, typeName); +} + +function $$delete(dataId, t) { + t.delete(dataId); + return /* () */0; +} + +function get(dataId, t) { + return Caml_option.nullable_to_opt(t.get(dataId)); +} + +function getRootField(fieldName, t) { + return Caml_option.nullable_to_opt(t.getRootField(fieldName)); +} + +function getPluralRootField(fieldName, t) { + var match = t.getPluralRootField(fieldName); + if (match == null) { + return undefined; + } else { + return $$Array.map((function (v) { + if (v == null) { + return undefined; + } else { + return Caml_option.some(v); + } + }), match); + } +} + +function create$1(dataId, typeName, t) { + return t.create(dataId, typeName); +} + +function $$delete$1(dataId, t) { + t.delete(dataId); + return /* () */0; +} + +function get$1(dataId, t) { + return Caml_option.nullable_to_opt(t.get(dataId)); +} + +function getConnection(record, key, filters, t) { + return t.getConnection(record, key, filters); +} + +function createEdge(store, connection, node, edgeType, t) { + return t.createEdge(store, connection, node, edgeType); +} + +function insertEdgeBefore(connection, newEdge, cursor, t) { + t.insertEdgeBefore(connection, newEdge, cursor); + return /* () */0; +} + +function insertEdgeAfter(connection, newEdge, cursor, t) { + t.insertEdgeAfter(connection, newEdge, cursor); + return /* () */0; +} + +function deleteNode(connection, nodeId, t) { + t.deleteNode(connection, nodeId); + return /* () */0; +} + +var ConnectionHandler = /* module */[ + /* getConnection */getConnection, + /* createEdge */createEdge, + /* insertEdgeBefore */insertEdgeBefore, + /* insertEdgeAfter */insertEdgeAfter, + /* deleteNode */deleteNode +]; + +function MakeUseQuery(C) { + var use = function (variables, dataFrom, param) { + var tmp; + if (dataFrom !== undefined) { + switch (dataFrom) { + case 0 : + tmp = "NETWORK_ONLY"; + break; + case 1 : + tmp = "STORE_THEN_NETWORK"; + break; + case 2 : + tmp = "STORE_OR_NETWORK"; + break; + case 3 : + tmp = "STORE_ONLY"; + break; + + } + } else { + tmp = undefined; + } + var q = RelayHooks.useQuery({ + dataFrom: tmp, + query: C[/* query */0], + variables: variables + }); + var match = q.props; + var match$1 = q.error; + if (match == null) { + if (match$1 == null) { + return /* Loading */0; + } else { + return /* Error */Block.__(0, [match$1]); + } + } else if (match$1 == null) { + return /* Data */Block.__(1, [match]); + } else { + return /* Error */Block.__(0, [match$1]); + } + }; + return /* module */[/* use */use]; +} + +function MakeUseFragment(C) { + var use = function (fr) { + return RelayHooks.useFragment(C[/* fragmentSpec */0], fr); + }; + return /* module */[/* use */use]; +} + +function MakeUseMutation(C) { + var use = function (param) { + var match = RelayHooks.useMutation(C[/* node */0]); + var rawState = match[1]; + var mutate = match[0]; + var makeMutation = function (variables, optimisticResponse, optimisticUpdater, updater, param) { + return Curry._1(mutate, { + variables: variables, + optimisticResponse: optimisticResponse, + optimisticUpdater: optimisticUpdater, + updater: updater + }).then((function (res) { + return Promise.resolve(/* Success */Block.__(0, [res])); + })).catch((function (err) { + return Promise.resolve(/* Error */Block.__(1, [err])); + })); + }; + var match$1 = rawState.loading; + var match$2 = rawState.data; + var match$3 = rawState.error; + return /* tuple */[ + makeMutation, + match$1 ? /* Loading */0 : ( + (match$2 == null) ? ( + (match$3 == null) ? /* Success */Block.__(1, [undefined]) : /* Error */Block.__(0, [match$3]) + ) : /* Success */Block.__(1, [Caml_option.some(match$2)]) + ) + ]; + }; + return /* module */[/* use */use]; +} + +function make(network, store) { + return new RelayRuntime.Environment({ + network: network, + store: store + }); +} + +var Environment = /* module */[/* make */make]; + +var provider = ReactRelay.ReactRelayContext.Provider; + +function ReasonRelay$Context$Provider(Props) { + var environment = Props.environment; + var children = Props.children; + return React.createElement(provider, { + value: { + environment: environment + }, + children: children + }); +} + +var EnvironmentNotFoundInContext = Caml_exceptions.create("ReasonRelay.EnvironmentNotFoundInContext"); + +function useEnvironmentFromContext(param) { + var context = React.useContext(ReactRelay.ReactRelayContext); + if (context !== undefined) { + return Caml_option.valFromOption(context).environment; + } else { + throw EnvironmentNotFoundInContext; + } +} + +var Mutation_failed = Caml_exceptions.create("ReasonRelay.Mutation_failed"); + +function MakeCommitMutation(C) { + var commitMutation = function (environment, variables, optimisticUpdater, optimisticResponse, updater, param) { + return new Promise((function (resolve, reject) { + RelayRuntime.commitMutation(environment, { + variables: variables, + mutation: C[/* node */0], + onCompleted: (function (res, errors) { + if (errors == null) { + if (res == null) { + return reject([ + Mutation_failed, + /* array */[] + ]); + } else { + return resolve(res); + } + } else { + return reject([ + Mutation_failed, + errors + ]); + } + }), + onError: (function (error) { + if (error == null) { + return reject([ + Mutation_failed, + /* array */[] + ]); + } else { + return reject([ + Mutation_failed, + /* array */[error] + ]); + } + }), + optimisticResponse: optimisticResponse, + optimisticUpdater: optimisticUpdater, + updater: updater + }); + return /* () */0; + })); + }; + return /* module */[/* commitMutation */commitMutation]; +} + +function commitLocalUpdate(environment, updater) { + RelayRuntime.commitLocalUpdate(environment, updater); + return /* () */0; +} + +function RecordSourceSelectorProxy_003(prim) { + return prim.getRoot(); +} + +var RecordSourceSelectorProxy = [ + create, + $$delete, + get, + RecordSourceSelectorProxy_003, + getRootField, + getPluralRootField +]; + +function RecordSourceProxy_003(prim) { + return prim.getRoot(); +} + +var RecordSourceProxy = [ + create$1, + $$delete$1, + get$1, + RecordSourceProxy_003 +]; + +var Network = [(function (prim) { + return RelayRuntime.Network.create(prim); + })]; + +var RecordSource = [(function (prim) { + return new RelayRuntime.RecordSource(); + })]; + +var Store = [(function (prim) { + return new RelayRuntime.Store(prim); + })]; + +var Context_001 = [ + (function (prim, prim$1, prim$2, prim$3) { + var tmp = { + environment: prim, + children: prim$1 + }; + if (prim$2 !== undefined) { + tmp.key = Caml_option.valFromOption(prim$2); + } + return tmp; + }), + ReasonRelay$Context$Provider +]; + +var Context = [ + ReactRelay.ReactRelayContext, + Context_001 +]; + +function fetchQuery(prim, prim$1, prim$2) { + return RelayRuntime.fetchQuery(prim, prim$1, prim$2); +} + +exports.dataIdToString = dataIdToString; +exports.makeDataId = makeDataId; +exports.RecordProxy = RecordProxy; +exports.RecordSourceSelectorProxy = RecordSourceSelectorProxy; +exports.RecordSourceProxy = RecordSourceProxy; +exports.ConnectionHandler = ConnectionHandler; +exports.MakeUseQuery = MakeUseQuery; +exports.MakeUseFragment = MakeUseFragment; +exports.MakeUseMutation = MakeUseMutation; +exports.Network = Network; +exports.RecordSource = RecordSource; +exports.Store = Store; +exports.Environment = Environment; +exports.Context = Context; +exports.EnvironmentNotFoundInContext = EnvironmentNotFoundInContext; +exports.useEnvironmentFromContext = useEnvironmentFromContext; +exports.Mutation_failed = Mutation_failed; +exports.MakeCommitMutation = MakeCommitMutation; +exports.commitLocalUpdate = commitLocalUpdate; +exports.fetchQuery = fetchQuery; +/* provider Not a pure module */ diff --git a/packages/reason-relay/src/ReasonRelay.re b/packages/reason-relay/src/ReasonRelay.re new file mode 100755 index 00000000..811b91d3 --- /dev/null +++ b/packages/reason-relay/src/ReasonRelay.re @@ -0,0 +1,544 @@ +let toOpt = Js.Nullable.toOption; +type jsObj('a) = Js.t({..} as 'a); + +type any; + +type queryNode; +type fragmentNode; +type mutationNode; + +type dataId; + +external _dataIdToString: dataId => string = "%identity"; +let dataIdToString = dataId => _dataIdToString(dataId); + +external _makeDataId: string => dataId = "%identity"; +let makeDataId = string => _makeDataId(string); + +module RecordProxy = { + type t; + type arguments('a) = jsObj('a); + + [@bs.send] external _copyFieldsFrom: (t, t) => unit = "copyFieldsFrom"; + let copyFieldsFrom = (~sourceRecord: t, t) => + _copyFieldsFrom(t, sourceRecord); + + [@bs.send] external _getDataID: t => dataId = "getDataID"; + let getDataId = t => _getDataID(t); + + [@bs.send] + external _getLinkedRecord: + (t, string, option(arguments('a))) => Js.Nullable.t(t) = + "getLinkedRecord"; + + let getLinkedRecord = (~name, ~arguments, t): option(t) => + _getLinkedRecord(t, name, arguments) |> toOpt; + + [@bs.send] + external _getLinkedRecords: + (t, string, option(arguments('a))) => + Js.Nullable.t(array(Js.Nullable.t(t))) = + "getLinkedRecords"; + + let getLinkedRecords = (~name, ~arguments, t): option(array(option(t))) => + switch (_getLinkedRecords(t, name, arguments) |> toOpt) { + | Some(records) => Some(records |> Array.map(v => v |> toOpt)) + | None => None + }; + + [@bs.send] + external _getOrCreateLinkedRecord: + (t, string, string, option(arguments('a))) => t = + "getOrCreateLinkedRecord"; + + let getOrCreateLinkedRecord = (~name, ~typeName, ~arguments, t) => + _getOrCreateLinkedRecord(t, name, typeName, arguments); + + [@bs.send] external _getType: t => string = "getType"; + let getType = t => _getType(t); + + [@bs.send] + external _getValue: + (t, string, option(arguments('a))) => Js.Nullable.t('value) = + "getValue"; + + let getValueString = (~name, ~arguments, t): option(string) => + _getValue(t, name, arguments) |> toOpt; + + let getValueInt = (~name, ~arguments, t): option(int) => + _getValue(t, name, arguments) |> toOpt; + + let getValueFloat = (~name, ~arguments, t): option(float) => + _getValue(t, name, arguments) |> toOpt; + + let getValueBool = (~name, ~arguments, t): option(bool) => + _getValue(t, name, arguments) |> toOpt; + + [@bs.send] + external _setLinkedRecord: (t, t, string, option(arguments('a))) => t = + "setLinkedRecord"; + let setLinkedRecord = (~record, ~name, ~arguments, t) => + _setLinkedRecord(t, record, name, arguments); + + [@bs.send] + external _setLinkedRecords: + (t, array(option(t)), string, option(arguments('a))) => t = + "setLinkedRecords"; + let setLinkedRecords = (~records, ~name, ~arguments, t) => + _setLinkedRecords(t, records, name, arguments); + + [@bs.send] + external _setValue: (t, 'value, string, option(arguments('a))) => t = + "setValue"; + + let setValueString = (~value: string, ~name, ~arguments, t) => + _setValue(t, value, name, arguments); + + let setValueInt = (~value: int, ~name, ~arguments, t) => + _setValue(t, value, name, arguments); + + let setValueFloat = (~value: float, ~name, ~arguments, t) => + _setValue(t, value, name, arguments); + + let setValueBool = (~value: bool, ~name, ~arguments, t) => + _setValue(t, value, name, arguments); +}; + +module RecordSourceSelectorProxy = { + type t; + + [@bs.send] external _create: (t, dataId, string) => RecordProxy.t = "create"; + let create = (~dataId, ~typeName: string, t) => + _create(t, dataId, typeName); + + [@bs.send] external _delete: (t, dataId) => unit = "delete"; + let delete = (~dataId, t) => _delete(t, dataId); + + [@bs.send] + external _get: (t, dataId) => Js.Nullable.t(RecordProxy.t) = "get"; + let get = (~dataId, t): option(RecordProxy.t) => _get(t, dataId) |> toOpt; + + [@bs.send] external getRoot: t => RecordProxy.t = "getRoot"; + + [@bs.send] + external _getRootField: (t, string) => Js.Nullable.t(RecordProxy.t) = + "getRootField"; + let getRootField = (~fieldName, t): option(RecordProxy.t) => + _getRootField(t, fieldName) |> toOpt; + + [@bs.send] + external _getPluralRootField: + (t, string) => Js.Nullable.t(array(Js.Nullable.t(RecordProxy.t))) = + "getPluralRootField"; + + let getPluralRootField = + (~fieldName, t): option(array(option(RecordProxy.t))) => + switch (_getPluralRootField(t, fieldName) |> toOpt) { + | Some(arr) => Some(arr |> Array.map(v => v |> toOpt)) + | None => None + }; +}; + +module RecordSourceProxy = { + type t; + + [@bs.send] external _create: (t, dataId, string) => RecordProxy.t = "create"; + let create = (~dataId, ~typeName: string, t) => + _create(t, dataId, typeName); + + [@bs.send] external _delete: (t, dataId) => unit = "delete"; + let delete = (~dataId, t) => _delete(t, dataId); + + [@bs.send] + external _get: (t, dataId) => Js.Nullable.t(RecordProxy.t) = "get"; + let get = (~dataId, t): option(RecordProxy.t) => _get(t, dataId) |> toOpt; + + [@bs.send] external getRoot: t => RecordProxy.t = "getRoot"; +}; + +module ConnectionHandler = { + type t; + type filters('a) = jsObj('a); + + [@bs.send] + external _getConnection: + (t, RecordProxy.t, string, option(filters('a))) => + Js.Nullable.t(RecordProxy.t) = + "getConnection"; + + let getConnection = (~record, ~key, ~filters, t) => + _getConnection(t, record, key, filters); + + [@bs.send] + external _createEdge: + (t, RecordSourceProxy.t, RecordProxy.t, RecordProxy.t, string) => + RecordProxy.t = + "createEdge"; + + let createEdge = (~store, ~connection, ~node, ~edgeType, t) => + _createEdge(t, store, connection, node, edgeType); + + [@bs.send] + external _insertEdgeBefore: + (t, RecordProxy.t, RecordProxy.t, option(string)) => unit = + "insertEdgeBefore"; + + let insertEdgeBefore = (~connection, ~newEdge, ~cursor, t) => + _insertEdgeBefore(t, connection, newEdge, cursor); + + [@bs.send] + external _insertEdgeAfter: + (t, RecordProxy.t, RecordProxy.t, option(string)) => unit = + "insertEdgeAfter"; + + let insertEdgeAfter = (~connection, ~newEdge, ~cursor, t) => + _insertEdgeAfter(t, connection, newEdge, cursor); + + [@bs.send] + external _deleteNode: (t, RecordProxy.t, dataId) => unit = "deleteNode"; + + let deleteNode = (~connection, ~nodeId, t) => + _deleteNode(t, connection, nodeId); +}; + +/** + * QUERY + */ + +type queryResponse('data) = + | Loading + | Error(Js.Exn.t) + | Data('data); + +type dataFrom = + | NetworkOnly + | StoreThenNetwork + | StoreOrNetwork + | StoreOnly; + +[@bs.module "relay-hooks"] +external _useQuery: + { + . + "query": queryNode, + "variables": 'variables, + "dataFrom": option(string), + } => + { + . + "props": Js.Nullable.t('props), + "error": Js.Nullable.t(Js.Exn.t), + "retry": Js.Nullable.t(unit => unit), + "cached": bool, + } = + "useQuery"; + +module type MakeUseQueryConfig = { + type response; + type variables; + let query: queryNode; +}; + +module MakeUseQuery = (C: MakeUseQueryConfig) => { + type response = C.response; + type variables = C.variables; + + let use: + (~variables: variables, ~dataFrom: dataFrom=?, unit) => + queryResponse(response) = + (~variables, ~dataFrom=?, ()) => { + let q = + _useQuery({ + "dataFrom": + switch (dataFrom) { + | Some(StoreThenNetwork) => Some("STORE_THEN_NETWORK") + | Some(NetworkOnly) => Some("NETWORK_ONLY") + | Some(StoreOrNetwork) => Some("STORE_OR_NETWORK") + | Some(StoreOnly) => Some("STORE_ONLY") + | None => None + }, + "query": C.query, + "variables": variables, + }); + + let res = + switch (q##props |> toOpt, q##error |> toOpt) { + | (None, None) => Loading + | (Some(data), None) => Data(data) + | (_, Some(err)) => Error(err) + }; + + res; + }; +}; + +/** + * FRAGMENT + */ +[@bs.module "relay-hooks"] +external _useFragment: (fragmentNode, 'fragmentRef) => 'fragmentData = + "useFragment"; + +module type MakeUseFragmentConfig = { + type fragment; + type fragmentRef; + let fragmentSpec: fragmentNode; +}; + +module MakeUseFragment = (C: MakeUseFragmentConfig) => { + let use = (fr: C.fragmentRef): C.fragment => + _useFragment(C.fragmentSpec, fr); +}; + +/** + * MUTATION + */ +module type MutationConfig = { + type variables; + type response; + let node: mutationNode; +}; + +type updaterFn = RecordSourceSelectorProxy.t => unit; + +type mutationConfig('variables, 'response) = { + . + "variables": 'variables, + "optimisticResponse": option('response), + "updater": option(updaterFn), + "optimisticUpdater": option(updaterFn), +}; + +type mutationError = {. "message": string}; + +type mutationStateRaw('response) = { + . + "loading": bool, + "data": Js.Nullable.t('response), + "error": Js.Nullable.t(mutationError), +}; + +type mutateFn('variables, 'response) = + mutationConfig('variables, 'response) => Js.Promise.t('response); + +[@bs.module "relay-hooks"] +external _useMutation: + mutationNode => + (mutateFn('variables, 'response), mutationStateRaw('response)) = + "useMutation"; + +type mutationState('response) = + | Loading + | Error(mutationError) + | Success(option('response)); + +type mutationResult('response) = + | Success('response) + | Error(Js.Promise.error); + +type useMutationConfigType('variables) = {variables: 'variables}; + +module MakeUseMutation = (C: MutationConfig) => { + let use = () => { + let (mutate, rawState) = _useMutation(C.node); + let makeMutation = + ( + ~variables: C.variables, + ~optimisticResponse=?, + ~optimisticUpdater=?, + ~updater=?, + (), + ) + : Js.Promise.t(mutationResult(C.response)) => + mutate({ + "variables": variables, + "optimisticResponse": optimisticResponse, + "optimisticUpdater": optimisticUpdater, + "updater": updater, + }) + |> Js.Promise.then_(res => Js.Promise.resolve(Success(res))) + |> Js.Promise.catch(err => Js.Promise.resolve(Error(err))); + ( + makeMutation, + switch ( + rawState##loading, + rawState##data |> toOpt, + rawState##error |> toOpt, + ) { + | (true, _, _) => Loading + | (_, Some(data), _) => Success(Some(data)) + | (_, _, Some(error)) => Error(error) + | (false, None, None) => Success(None) + }, + ); + }; +}; + +/** + * Misc + */ +module Network = { + type t; + + type cacheConfig = { + . + "force": Js.Nullable.t(bool), + "poll": Js.Nullable.t(int), + }; + + type operation = { + . + "text": string, + "name": string, + "operationKind": string, + }; + + type fetchFunctionPromise = + (operation, Js.Json.t, cacheConfig) => Js.Promise.t(Js.Json.t); + + [@bs.module "relay-runtime"] [@bs.scope "Network"] + external makePromiseBased: fetchFunctionPromise => t = "create"; +}; + +module RecordSource = { + type t; + + [@bs.module "relay-runtime"] [@bs.new] + external make: unit => t = "RecordSource"; +}; + +module Store = { + type t; + + [@bs.module "relay-runtime"] [@bs.new] + external make: RecordSource.t => t = "Store"; +}; + +module Environment = { + type t; + + type config = { + network: Network.t, + store: Store.t, + }; + + type _config = { + . + "network": Network.t, + "store": Store.t, + }; + + [@bs.module "relay-runtime"] [@bs.new] + external _make: _config => t = "Environment"; + + let make = (~network, ~store) => + _make({"network": network, "store": store}); +}; + +module Context = { + type t; + + type contextShape = {. "environment": Environment.t}; + + [@bs.module "react-relay"] + external context: React.Context.t(option(contextShape)) = + "ReactRelayContext"; + let provider = React.Context.provider(context); + + module Provider = { + [@react.component] + let make = (~environment: Environment.t, ~children) => + React.createElement( + provider, + {"value": Some({"environment": environment}), "children": children}, + ); + }; +}; + +exception EnvironmentNotFoundInContext; + +let useEnvironmentFromContext = () => { + let context = React.useContext(Context.context); + + switch (context) { + | Some(ctx) => ctx##environment + | None => raise(EnvironmentNotFoundInContext) + }; +}; + +[@bs.module "relay-runtime"] +external fetchQuery: + (Environment.t, queryNode, 'variables) => Js.Promise.t('response) = + "fetchQuery"; + +type _commitMutationConfig('variables, 'response) = { + . + "mutation": mutationNode, + "variables": 'variables, + "onCompleted": + option( + (Js.Nullable.t('response), Js.Nullable.t(array(mutationError))) => + unit, + ), + "onError": option(Js.Nullable.t(mutationError) => unit), + "optimisticResponse": option('response), + "optimisticUpdater": option(RecordSourceSelectorProxy.t => unit), + "updater": option(RecordSourceSelectorProxy.t => unit), +}; + +exception Mutation_failed(array(mutationError)); + +module MakeCommitMutation = (C: MutationConfig) => { + [@bs.module "relay-runtime"] + external _commitMutation: + (Environment.t, _commitMutationConfig('variables, 'response)) => unit = + "commitMutation"; + + let commitMutation = + ( + ~environment: Environment.t, + ~variables: C.variables, + ~optimisticUpdater=?, + ~optimisticResponse=?, + ~updater=?, + (), + ) + : Js.Promise.t(C.response) => + Js.Promise.make((~resolve, ~reject) => + _commitMutation( + environment, + { + "variables": variables, + "mutation": C.node, + "onCompleted": + Some( + (res, errors) => + switch (res |> toOpt, errors |> toOpt) { + | (_, Some(errors)) => reject(. Mutation_failed(errors)) + | (Some(res), None) => resolve(. res) + | (None, None) => reject(. Mutation_failed([||])) + }, + ), + "onError": + Some( + error => + switch (error |> toOpt) { + | Some(error) => reject(. Mutation_failed([|error|])) + | None => reject(. Mutation_failed([||])) + }, + ), + "optimisticResponse": optimisticResponse, + "optimisticUpdater": optimisticUpdater, + "updater": updater, + }, + ) + ); +}; + +[@bs.module "relay-runtime"] +external _commitLocalUpdate: + (Environment.t, RecordSourceSelectorProxy.t => unit) => unit = + "commitLocalUpdate"; + +let commitLocalUpdate = (~environment, ~updater) => + _commitLocalUpdate(environment, updater); \ No newline at end of file diff --git a/packages/reason-relay/src/ReasonRelay.rei b/packages/reason-relay/src/ReasonRelay.rei new file mode 100644 index 00000000..d970d83f --- /dev/null +++ b/packages/reason-relay/src/ReasonRelay.rei @@ -0,0 +1,352 @@ +type jsObj('a) = Js.t({..} as 'a); + +/** + * Abstract helper type to signify something that could not be + * generated in a type-safe way. + */ + +type any; + +/** + * The type of the actual node that Relay uses for operations. + */ +type queryNode; +type fragmentNode; +type mutationNode; + +/** + * Store and updaters + */ +type dataId; + +let dataIdToString: dataId => string; +let makeDataId: string => dataId; + +/** + * We modify most store primitives to return options instead of nullables, + * and to take labeled arguments and for use with data-last |> pipe. + * + * The data-last approach is important to have in mind here, because it means + * that we flip the [@bs.send] bindings around. This might not be a good idea/might + * be confusing, but for various reasons I prefer data-last, so I'll keep it + * like that for now. + */ +module RecordProxy: { + type t; + type arguments('a) = jsObj('a) constraint 'a = {..}; + + let copyFieldsFrom: (~sourceRecord: t, t) => unit; + + let getDataId: t => dataId; + + let getLinkedRecord: + (~name: string, ~arguments: option(arguments({..})), t) => option(t); + + let getLinkedRecords: + (~name: string, ~arguments: option(arguments({..})), t) => + option(array(option(t))); + + let getOrCreateLinkedRecord: + ( + ~name: string, + ~typeName: string, + ~arguments: option(arguments({..})), + t + ) => + t; + + let getType: t => string; + + let getValueString: + (~name: string, ~arguments: option(arguments({..})), t) => option(string); + + let getValueInt: + (~name: string, ~arguments: option(arguments({..})), t) => option(int); + + let getValueFloat: + (~name: string, ~arguments: option(arguments({..})), t) => option(float); + + let getValueBool: + (~name: string, ~arguments: option(arguments({..})), t) => option(bool); + + let setLinkedRecord: + (~record: t, ~name: string, ~arguments: option(arguments({..})), t) => t; + + let setLinkedRecords: + ( + ~records: array(option(t)), + ~name: string, + ~arguments: option(arguments({..})), + t + ) => + t; + + let setValueString: + (~value: string, ~name: string, ~arguments: option(arguments({..})), t) => + t; + + let setValueInt: + (~value: int, ~name: string, ~arguments: option(arguments({..})), t) => t; + + let setValueFloat: + (~value: float, ~name: string, ~arguments: option(arguments({..})), t) => + t; + + let setValueBool: + (~value: bool, ~name: string, ~arguments: option(arguments({..})), t) => t; +}; + +module RecordSourceSelectorProxy: { + type t; + + let create: (~dataId: dataId, ~typeName: string, t) => RecordProxy.t; + + let delete: (~dataId: dataId, t) => unit; + + let get: (~dataId: dataId, t) => option(RecordProxy.t); + + let getRoot: t => RecordProxy.t; + + let getRootField: (~fieldName: string, t) => option(RecordProxy.t); + + let getPluralRootField: + (~fieldName: string, t) => option(array(option(RecordProxy.t))); +}; + +module RecordSourceProxy: { + type t; + + let create: (~dataId: dataId, ~typeName: string, t) => RecordProxy.t; + + let delete: (~dataId: dataId, t) => unit; + + let get: (~dataId: dataId, t) => option(RecordProxy.t); + + let getRoot: t => RecordProxy.t; +}; + +module ConnectionHandler: { + type t; + type filters('a) = jsObj('a) constraint 'a = {..}; + + let getConnection: + ( + ~record: RecordProxy.t, + ~key: string, + ~filters: option(filters({..})), + t + ) => + Js.Nullable.t(RecordProxy.t); + + let createEdge: + ( + ~store: RecordSourceProxy.t, + ~connection: RecordProxy.t, + ~node: RecordProxy.t, + ~edgeType: string, + t + ) => + RecordProxy.t; + + let insertEdgeBefore: + ( + ~connection: RecordProxy.t, + ~newEdge: RecordProxy.t, + ~cursor: option(string), + t + ) => + unit; + + let insertEdgeAfter: + ( + ~connection: RecordProxy.t, + ~newEdge: RecordProxy.t, + ~cursor: option(string), + t + ) => + unit; + + let deleteNode: (~connection: RecordProxy.t, ~nodeId: dataId, t) => unit; +}; + +/** + * QUERY + */ + +type queryResponse('data) = + | Loading + | Error(Js.Exn.t) + | Data('data); +type dataFrom = + | NetworkOnly + | StoreThenNetwork + | StoreOrNetwork + | StoreOnly; + +module type MakeUseQueryConfig = { + type response; + type variables; + let query: queryNode; +}; + +module MakeUseQuery: + (C: MakeUseQueryConfig) => + { + type response = C.response; + type variables = C.variables; + let use: + (~variables: variables, ~dataFrom: dataFrom=?, unit) => + queryResponse(response); + }; + +/** + * FRAGMENT + */ + +module type MakeUseFragmentConfig = { + type fragment; + type fragmentRef; + let fragmentSpec: fragmentNode; +}; + +module MakeUseFragment: + (C: MakeUseFragmentConfig) => {let use: C.fragmentRef => C.fragment;}; + +/** + * MUTATION + */ + +module type MutationConfig = { + type variables; + type response; + let node: mutationNode; +}; + +type updaterFn = RecordSourceSelectorProxy.t => unit; + +type mutationError = {. "message": string}; + +type mutationState('response) = + | Loading + | Error(mutationError) + | Success(option('response)); + +type mutationResult('response) = + | Success('response) + | Error(Js.Promise.error); + +type useMutationConfigType('variables) = {variables: 'variables}; + +module MakeUseMutation: + (C: MutationConfig) => + { + let use: + unit => + ( + ( + ~variables: C.variables, + ~optimisticResponse: C.response=?, + ~optimisticUpdater: RecordSourceSelectorProxy.t => unit=?, + ~updater: updaterFn=?, + unit + ) => + Js.Promise.t(mutationResult(C.response)), + mutationState(C.response), + ); + }; + +module Network: { + type t; + type cacheConfig = { + . + "force": Js.Nullable.t(bool), + "poll": Js.Nullable.t(int), + }; + type operation = { + . + "name": string, + "operationKind": string, + "text": string, + }; + type fetchFunctionPromise = + (operation, Js.Json.t, cacheConfig) => Js.Promise.t(Js.Json.t); + let makePromiseBased: fetchFunctionPromise => t; +}; + +module RecordSource: { + type t; + let make: unit => t; +}; + +module Store: { + type t; + let make: RecordSource.t => t; +}; + +module Environment: { + type t; + type config = { + network: Network.t, + store: Store.t, + }; + let make: (~network: Network.t, ~store: Store.t) => t; +}; + +module Context: { + type t; + type contextShape = {. "environment": Environment.t}; + let context: React.Context.t(option(contextShape)); + + module Provider: { + let makeProps: + ( + ~environment: Environment.t, + ~children: 'children, + ~key: string=?, + unit + ) => + { + . + "children": 'children, + "environment": Environment.t, + }; + let make: + { + . + "children": React.element, + "environment": Environment.t, + } => + React.element; + }; +}; + +exception EnvironmentNotFoundInContext; + +let useEnvironmentFromContext: unit => Environment.t; + +exception Mutation_failed(array(mutationError)); + +module MakeCommitMutation: + (C: MutationConfig) => + { + let commitMutation: + ( + ~environment: Environment.t, + ~variables: C.variables, + ~optimisticUpdater: RecordSourceSelectorProxy.t => unit=?, + ~optimisticResponse: C.response=?, + ~updater: RecordSourceSelectorProxy.t => unit=?, + unit + ) => + Js.Promise.t(C.response); + }; + +let commitLocalUpdate: + ( + ~environment: Environment.t, + ~updater: RecordSourceSelectorProxy.t => unit + ) => + unit; + +let fetchQuery: + (Environment.t, queryNode, 'variables) => Js.Promise.t('response); \ No newline at end of file diff --git a/packages/reason-relay/yarn.lock b/packages/reason-relay/yarn.lock new file mode 100644 index 00000000..57fb37ca --- /dev/null +++ b/packages/reason-relay/yarn.lock @@ -0,0 +1,2048 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.0.0": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.4.tgz#4c32df7ad5a58e9ea27ad025c11276324e0b4ddd" + integrity sha512-+DaeBEpYq6b2+ZmHx3tHspC+ZRflrvLqwfv8E3hNr5LVQoyBnL8RPKSBCg+rK2W2My9PWlujBiqd0ZPsR9Q6zQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/helpers" "^7.5.4" + "@babel/parser" "^7.5.0" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.0" + "@babel/types" "^7.5.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.0.0", "@babel/generator@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.0.tgz#f20e4b7a91750ee8b63656073d843d2a736dca4a" + integrity sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA== + dependencies: + "@babel/types" "^7.5.0" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-react-jsx@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" + integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== + dependencies: + "@babel/types" "^7.3.0" + esutils "^2.0.0" + +"@babel/helper-call-delegate@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" + integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-create-class-features-plugin@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.0.tgz#02edb97f512d44ba23b3227f1bf2ed43454edac5" + integrity sha512-EAoMc3hE5vE5LNhMqDOwB1usHvmRjCDAnH8CD4PVkX9/Yr3W/tcz8xE8QvdZxfsFBDICwZnF2UTHIqslRpvxmA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + +"@babel/helper-define-map@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" + integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" + integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" + integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" + integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helpers@^7.5.4": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.5.4.tgz#2f00608aa10d460bde0ccf665d6dcf8477357cf0" + integrity sha512-6LJ6xwUEJP51w0sIgKyfvFMJvIb9mWAfohJp0+m6eHJigkFdcH8duZ1sfhn0ltJRzwUIT/yqqhdSfRpCpL7oow== + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.0" + "@babel/types" "^7.5.0" + +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.0.tgz#3e0713dff89ad6ae37faec3b29dcfc5c979770b7" + integrity sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA== + +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.0.tgz#5bc6a0537d286fcb4fd4e89975adbca334987007" + integrity sha512-9L/JfPCT+kShiiTTzcnBJ8cOwdKVmlC1RcCf9F0F9tERVrM4iWtWnXtjWCRqNm2la2BxO1MPArWNsU9zsSJWSQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.5.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.4.tgz#250de35d867ce8260a31b1fdac6c4fc1baa99331" + integrity sha512-KCx0z3y7y8ipZUMAEEJOyNi11lMb/FOPUjjB113tfowgw0c16EGYos7worCKBcUAh2oG+OBnoUhsnTSoLpV9uA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz#23b3b7b9bcdabd73672a9149f728cd3be6214812" + integrity sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" + integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.11" + +"@babel/plugin-transform-classes@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" + integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" + integrity sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" + integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" + integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" + integrity sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ== + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-object-super@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== + dependencies: + "@babel/helper-call-delegate" "^7.4.4" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" + integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" + integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== + dependencies: + "@babel/helper-builder-react-jsx" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" + integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/polyfill@^7.0.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.4.4.tgz#78801cf3dbe657844eeabf31c1cae3828051e893" + integrity sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.0.0": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.1.tgz#51b56e216e87103ab3f7d6040b464c538e242888" + integrity sha512-g+hmPKs16iewFSmW57NkH9xpPkuYD1RV3UE2BCkXx9j+nhhRb9hsiSxPmEa67j35IecTQdn4iyMtHMbt5VoREg== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.1.0", "@babel/template@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485" + integrity sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.5.0" + "@babel/types" "^7.5.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.0.tgz#e47d43840c2e7f9105bc4d3a2c371b4d0c7832ab" + integrity sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@restart/hooks@^0.3.1": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.3.6.tgz#2c82ae4a9306588b84d350d5b756fee2358cc646" + integrity sha512-EfSgkyC9I4PukxiSe/5q+CAfW4TgNhi+BYY5Vi536+S0C8z9z7Y8pRAcP/gjcQ6Y92FgkUmoGYAGNKfAApiy+A== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-preset-fbjs@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.2.0.tgz#c0e6347d3e0379ed84b3c2434d3467567aa05297" + integrity sha512-5Jo+JeWiVz2wHUUyAlvb/sSYnXNig9r+HqGAOSfh5Fzxp7SnAaR/tEGRJ1ZX7C77kfk82658w6R5Z+uPATTD9g== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +bs-platform@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-6.0.3.tgz#cb401aa4dadbf063dd4a183921195ef3c16d7b11" + integrity sha512-zptjWiSaioLVbEq0n3LPwfn1nyY3qt8fXzdI1O+yj6a6sBKmtT2kcx9oXJZl/cuLUnVumXKpb5ksTsYztbJPUg== + +bser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.0.tgz#65fc784bf7f87c009b973c12db6546902fa9c7b5" + integrity sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg== + dependencies: + node-int64 "^0.4.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +chalk@^2.0.0, chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@^2.4.1, core-js@^2.6.5: + version "2.6.9" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-glob@^2.2.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + dependencies: + bser "^2.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" + integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== + dependencies: + core-js "^2.4.1" + fbjs-css-vars "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" + integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== + +graphql@^14.4.2: + version "14.4.2" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.4.2.tgz#553a7d546d524663eda49ed6df77577be3203ae3" + integrity sha512-6uQadiRgnpnSS56hdZUSvFrVcQ6OF9y6wkxJfKquFtHlnl7+KSuWwSJsdwiK1vybm1HgcdbpGkCpvhvsVQ0UZQ== + dependencies: + iterall "^1.2.2" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +immutable@~3.7.6: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +iterall@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" + integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash@^4.17.11: + version "4.17.14" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" + integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + +merge2@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" + integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp-sync@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mkdirp-sync/-/mkdirp-sync-0.0.3.tgz#2a7cf5b04f3ad7cba5f41f79a754939fc30d7e16" + integrity sha512-p3raJmGXoDqceIMqxAgx/DHesLkC+Ni+qTUpVIXuTuvvVcIihAbcTT68w68HHMqW5yEreNB1dl2EBm4TKtnLoQ== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +nullthrows@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prop-types@^15.6.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +react-dom@>=16.8.1: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" + integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.13.6" + +react-is@^16.8.1: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" + integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + +react-relay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-relay/-/react-relay-5.0.0.tgz#66af68e8e5fad05879a3f21f895a0296ef2741a8" + integrity sha512-gpUvedaCaPVPT0nMrTbev2TzrU0atgq2j/zAnGHiR9WgqRXwtHsK6FWFN65HRbopO2DzuJx9VZ2I3VO6uL5EMA== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^1.0.0" + nullthrows "^1.1.0" + relay-runtime "5.0.0" + +react@16.8.6, react@>=16.8.1: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" + integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.13.6" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +reason-react@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/reason-react/-/reason-react-0.7.0.tgz#46a975c321e81cd51310d7b1a02418ca7667b0d6" + integrity sha512-czR/f0lY5iyLCki9gwftOFF5Zs40l7ZSFmpGK/Z6hx2jBVeFDmIiXB8bAQW/cO6IvtuEt97OmsYueiuOYG9XjQ== + dependencies: + react ">=16.8.1" + react-dom ">=16.8.1" + +reason@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/reason/-/reason-3.3.4.tgz#a294ef8aa14fa85c6fd8a7db5dcab053f2382f68" + integrity sha512-WwXkrcwbUUazf0pEn7Vrd0R7wKOMEPmn4ZBb0ffKCxKiqoUh13E8hnSEhytNM81vl3O3A0ENyZa+Ys0fMnJgnw== + +regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +relay-compiler@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-5.0.0.tgz#ca2514bda20ff829550ac87f126d07a1517bf6de" + integrity sha512-q8gKlPRTJe/TwtIokbdXehy1SxDFIyLBZdsfg60J4OcqyviIx++Vhc+h4lXzBY8LsBVaJjTuolftYcXJLhlE6g== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/polyfill" "^7.0.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.1.2" + chalk "^2.4.1" + fast-glob "^2.2.2" + fb-watchman "^2.0.0" + fbjs "^1.0.0" + immutable "~3.7.6" + nullthrows "^1.1.0" + relay-runtime "5.0.0" + signedsource "^1.0.0" + yargs "^9.0.0" + +relay-hooks@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/relay-hooks/-/relay-hooks-1.2.1.tgz#dee6bfadfaa983646e224c9c421df73aec5bfbde" + integrity sha512-A0dxfiXWXIqtey3u+JXd/lNLPX5j18L/BQdlEIfJ2P1doj7zsybJ8c16dX976rgCMBZaoduxzqlUf/a9UV+5cg== + dependencies: + "@restart/hooks" "^0.3.1" + +relay-runtime@5.0.0, relay-runtime@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-5.0.0.tgz#7c688ee621d6106a2cd9f3a3706eb6d717c7f660" + integrity sha512-lrC2CwfpWWHBAN608eENAt5Bc5zqXXE2O9HSo8tc6Gy5TxfK+fU+x9jdwXQ2mXxVPgANYtYeKzU5UTfcX0aDEw== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^1.0.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.3.2: + version "1.11.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" + integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== + dependencies: + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.13.6: + version "0.13.6" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" + integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +signedsource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" + integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +ua-parser-js@^0.7.18: + version "0.7.20" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" + integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +whatwg-fetch@>=0.10.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= + dependencies: + camelcase "^4.1.0" + +yargs@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + integrity sha1-UqzCP+7Kw0BCB47njAwAf1CF20w= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" diff --git a/syncDev.sh b/syncDev.sh new file mode 100755 index 00000000..a09a1922 --- /dev/null +++ b/syncDev.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +cd ./packages/reason-relay/ && ./build.sh; cd ../../; +rm -rf ./example/node_modules/reason-relay; +cp -rf ./packages/reason-relay/dist/ ./example/node_modules/reason-relay; + +rm -rf ./example/node_modules/reason-relay/node_modules/graphql; +rm -rf ./example/node_modules/reason-relay/node_modules/react; +rm -rf ./example/node_modules/reason-relay/node_modules/react-dom; + +rm -f ./example/node_modules/.bin/reason-relay-compiler; +cd ./example/node_modules/.bin/; +ln -s ../reason-relay/compiler/compiler-cli.js reason-relay-compiler; +cd ../../../; diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..fb57ccd1 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + +