PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/gql.tada/dist

Просмотр файла: gql-tada.mjs.map

{"version":3,"file":"gql-tada.mjs","sources":["../src/utils.ts","../src/api.ts"],"sourcesContent":["import type { DocumentNode, Location } from '@0no-co/graphql.web';\n\n/** Returns `T` if it matches `Constraint` without being equal to it. Failing this evaluates to `Fallback` otherwise. */\nexport type matchOr<Constraint, T, Fallback> = Constraint extends T\n  ? Fallback\n  : T extends Constraint\n    ? T\n    : Fallback;\n\n/** Flattens a given object type.\n *\n * @remarks\n * This is typically used to make a TypeScript type appear as a flat object,\n * both in terms of type checking and for type hints and the tsserver output.\n */\nexport type obj<T> = T extends { [key: string | number]: any } ? { [K in keyof T]: T[K] } : never;\n\n/** Turns a given union to an intersection type. */\nexport type overload<T> = (T extends any ? (x: T) => void : never) extends (x: infer U) => void\n  ? U & T\n  : never;\n\n/** Marks all properties as writable */\nexport type writable<T> = { -readonly [K in keyof T]: T[K] };\n\n/** Annotations for GraphQL’s `DocumentNode` with attached generics for its result data and variables types.\n *\n * @remarks\n * A GraphQL {@link DocumentNode} defines both the variables it accepts on request and the `data`\n * shape it delivers on a response in the GraphQL query language.\n *\n * To bridge the gap to TypeScript, tools may be used to generate TypeScript types that define the shape\n * of `data` and `variables` ahead of time. These types are then attached to GraphQL documents using this\n * `TypedDocumentNode` type.\n *\n * Using a `DocumentNode` that is typed like this will cause any `urql` API to type its input `variables`\n * and resulting `data` using the types provided.\n *\n * @privateRemarks\n * For compatibility reasons this type has been copied and internalized from:\n * https://github.com/dotansimha/graphql-typed-document-node/blob/3711b12/packages/core/src/index.ts#L3-L10\n *\n * @see {@link https://github.com/dotansimha/graphql-typed-document-node} for more information.\n */\nexport interface DocumentDecoration<Result = any, Variables = any> {\n  /** Type to support `@graphql-typed-document-node/core`\n   * @internal\n   */\n  __apiType?: (variables: Variables) => Result;\n  /** Type to support `TypedQueryDocumentNode` from `graphql`\n   * @internal\n   */\n  __ensureTypesOfVariablesAndResultMatching?: (variables: Variables) => Result;\n}\n\nlet CONCAT_LOC_DEPTH = 0;\nconst CONCAT_LOC_SEEN = new Set();\n\ninterface LocationNode {\n  loc?: Location;\n}\n\n/** Concatenates all fragments' `loc.source.body`s */\nexport function concatLocSources(fragments: readonly LocationNode[]): string {\n  try {\n    CONCAT_LOC_DEPTH++;\n    let result = '';\n    for (const fragment of fragments) {\n      if (!CONCAT_LOC_SEEN.has(fragment)) {\n        CONCAT_LOC_SEEN.add(fragment);\n        const { loc } = fragment;\n        if (loc) result += loc.source.body;\n      }\n    }\n    return result;\n  } finally {\n    if (--CONCAT_LOC_DEPTH === 0) {\n      CONCAT_LOC_SEEN.clear();\n    }\n  }\n}\n","import type { DocumentNode, DefinitionNode, Location } from '@0no-co/graphql.web';\nimport { Kind, parse as _parse } from '@0no-co/graphql.web';\n\nimport type {\n  IntrospectionLikeInput,\n  ScalarsLike,\n  SchemaLike,\n  mapIntrospection,\n  addIntrospectionScalars,\n} from './introspection';\n\nimport type {\n  DefinitionDecoration,\n  FragmentShape,\n  getFragmentsOfDocuments,\n  decorateFragmentDef,\n  omitFragmentRefsRec,\n  makeFragmentRef,\n} from './namespace';\n\nimport type { getDocumentType } from './selection';\nimport type { parseDocument, DocumentNodeLike } from './parser';\nimport type { getVariablesType, getScalarType } from './variables';\nimport type { obj, matchOr, writable, DocumentDecoration } from './utils';\nimport { concatLocSources } from './utils';\n\n/** Abstract configuration type input for your schema and scalars.\n *\n * @remarks\n * This is used either via {@link setupSchema} or {@link initGraphQLTada} to set\n * up your schema and scalars.\n *\n * The `scalars` option is optional and can be used to set up more scalars, apart\n * from the default ones (like: Int, Float, String, Boolean).\n * It must be an object map of scalar names to their desired TypeScript types.\n *\n * @param introspection - Introspection of your schema matching {@link IntrospectionQuery}.\n * @param scalars - An object type with scalar names as keys and the corresponding scalar types as values.\n */\ninterface AbstractSetupSchema {\n  introspection: IntrospectionLikeInput;\n  scalars?: ScalarsLike;\n  disableMasking?: boolean;\n}\n\n/** Abstract type for internal configuration\n * @internal\n */\ninterface AbstractConfig {\n  isMaskingDisabled: boolean;\n}\n\n/** This is used to configure gql.tada with your introspection data and scalars.\n *\n * @remarks\n * You may extend this interface via declaration merging with your {@link IntrospectionQuery}\n * data and optionally your scalars to get proper type inference.\n * This is done by declaring a declaration for it as per the following example.\n *\n * Configuring scalars is optional and by default the standard scalrs are already\n * defined.\n *\n * This will configure the {@link graphql} export to infer types from your schema.\n * Alternatively, you may call {@link initGraphQLTada} instead.\n *\n * @param introspection - Introspection of your schema matching {@link IntrospectionQuery}.\n * @param scalars - An object type with scalar names as keys and the corresponding scalar types as values.\n *\n * @example\n * ```\n * import type { myIntrospection } from './myIntrospection';\n *\n * declare module 'gql.tada' {\n *   interface setupSchema {\n *     introspection: typeof myIntrospection;\n *     scalars: {\n *       DateTime: string;\n *       Json: any;\n *     };\n *   }\n * }\n * ```\n */\ninterface setupSchema extends AbstractSetupSchema {\n  /*empty*/\n}\n\ninterface AbstractSetupCache {\n  readonly __cacheDisabled: unknown;\n  [key: string]: unknown;\n}\n\ninterface setupCache extends AbstractSetupCache {}\n\ninterface GraphQLTadaAPI<Schema extends SchemaLike, Config extends AbstractConfig> {\n  /** In \"multi-schema\" mode this identifies the schema.\n   * @internal */\n  readonly __name: Schema['name'];\n\n  /** Function to create and compose GraphQL documents with result and variable types.\n   *\n   * @param input - A string of a GraphQL document.\n   * @param fragments - An optional list of other GraphQL fragments created with this function.\n   * @returns A {@link DocumentNode} with result and variables types.\n   *\n   * @remarks\n   * This function creates a {@link DocumentNode} with result and variables types.\n   * It is used with your schema in {@link setupSchema} to create a result type\n   * of your queries, fragments, and variables.\n   *\n   * You can compose fragments into this function by passing them and a fragment\n   * mask will be created for them.\n   * When creating queries, the returned document of queries can be passed into GraphQL clients\n   * which will then automatically infer the result and variables types.\n   *\n   * @example\n   * ```\n   * import { graphql } from 'gql.tada';\n   *\n   * const bookFragment = graphql(`\n   *   fragment BookComponent on Book {\n   *     id\n   *     title\n   *   }\n   * `);\n   *\n   * const bookQuery = graphql(`\n   *   query Book ($id: ID!) {\n   *     book(id: $id) {\n   *       id\n   *       ...BookComponent\n   *     }\n   *   }\n   * `, [bookFragment]);\n   * ```\n   *\n   * @see {@link readFragment} for how to read from fragment masks.\n   */\n  <const In extends string, const Fragments extends readonly FragmentShape[]>(\n    input: In,\n    fragments?: Fragments\n  ): setupCache[In] extends DocumentNodeLike\n    ? unknown extends setupCache['__cacheDisabled']\n      ? setupCache[In]\n      : getDocumentNode<\n          parseDocument<In>,\n          Schema,\n          getFragmentsOfDocuments<Fragments>,\n          Config['isMaskingDisabled']\n        >\n    : getDocumentNode<\n        parseDocument<In>,\n        Schema,\n        getFragmentsOfDocuments<Fragments>,\n        Config['isMaskingDisabled']\n      >;\n\n  /** Function to validate the type of a given scalar or enum value.\n   *\n   * @param name - The name of a scalar or enum type.\n   * @param value - An optional scalar value of the given type.\n   * @returns A {@link DocumentNode} with result and variables types.\n   *\n   * @remarks\n   * This function validates that a value matches an enum or scalar type\n   * as a type check.\n   *\n   * You can use it to retrieve the type of a given scalar or enum type\n   * for use in a utility function or separate component that only\n   * accepts a primitive scalar or enum value.\n   *\n   * Note that this function does not perform runtime checks of your\n   * scalar value!\n   *\n   * @example\n   * ```\n   * import { graphql } from 'gql.tada';\n   *\n   * type myEnum = ReturnType<graphql.scalar<'myEnum'>>;\n   *\n   * const myEnumValue = graphql.scalar('myEnum', 'value');\n   * ```\n   */\n  scalar<const Name extends string, Value>(\n    name: Name,\n    value: getScalarType<Name, Schema> extends Value\n      ? Value & getScalarType<Name, Schema>\n      : getScalarType<Name, Schema>\n  ): Value;\n  scalar<const Name extends string, Value>(\n    name: Name,\n    value: getScalarType<Name, Schema> extends Value\n      ? never extends Value\n        ? never\n        : (Value & getScalarType<Name, Schema>) | null\n      : getScalarType<Name, Schema> | null\n  ): Value | null;\n  scalar<const Name extends string, Value>(\n    name: Name,\n    value: getScalarType<Name, Schema> extends Value\n      ? never extends Value\n        ? never\n        : (Value & getScalarType<Name, Schema>) | undefined\n      : getScalarType<Name, Schema> | undefined\n  ): Value | undefined;\n  scalar<const Name extends string, Value>(\n    name: Name,\n    value: getScalarType<Name, Schema> extends Value\n      ? never extends Value\n        ? never\n        : (Value & getScalarType<Name, Schema>) | null | undefined\n      : getScalarType<Name, Schema> | null | undefined\n  ): Value | null | undefined;\n  scalar<const Name extends string>(\n    name: Name,\n    value: getScalarType<Name, Schema> | undefined\n  ): getScalarType<Name, Schema>;\n\n  /** Function to replace a GraphQL document with a persisted document.\n   *\n   * @typeParam Document - The document type of {@link TadaDocumentNode}.\n   * @param id - A document ID that replaces the document for the API.\n   * @returns A {@link TadaPersistedDocumentNode}.\n   *\n   * @remarks\n   * This function may be used to replace a GraphQL document with a\n   * stand-in, persisted document.\n   *\n   * The returned document’s value won’t contain any of the document’s\n   * definitions, but its type will be equivalent to the `Document` that’s\n   * been passed as a generic.\n   *\n   * As long as the query (type parameter of `Document`) is only referenced\n   * as a type in your code, it will be omitted from your output build by\n   * your bundler and the resulting GraphQL document’s ID will replace your\n   * document entirely.\n   *\n   * @example\n   * ```\n   * import { graphql } from 'gql.tada';\n   *\n   * const query = graphql(`query MyQuery { __typename }`);\n   * const persisted = graphql.persisted<typeof query>('MyQuery');\n   * ```\n   */\n  persisted<Document extends DocumentNodeLike = never>(\n    documentId: string,\n    document?: Document\n  ): Document extends DocumentDecoration<infer Result, infer Variables>\n    ? TadaPersistedDocumentNode<Result, Variables>\n    : never;\n}\n\ntype schemaOfSetup<Setup extends AbstractSetupSchema> = addIntrospectionScalars<\n  mapIntrospection<matchOr<IntrospectionLikeInput, Setup['introspection'], never>>,\n  matchOr<ScalarsLike, Setup['scalars'], {}>\n>;\n\ntype configOfSetup<Setup extends AbstractSetupSchema> = {\n  isMaskingDisabled: Setup['disableMasking'] extends true ? true : false;\n};\n\n/** Utility to type-instantiate a `graphql` document function with.\n *\n * @remarks\n * The `initGraphQLTada` type may be used to manually instantiate a type\n * as returned by `initGraphQLTada<>()` with the same input type.\n *\n * @example\n * ```\n * import { initGraphQLTada } from 'gql.tada';\n * import type { myIntrospection } from './myIntrospection';\n *\n * export const graphql: initGraphQLTada<{\n *   introspection: typeof myIntrospection;\n *   scalars: {\n *     DateTime: string;\n *     Json: any;\n *   };\n * }> = initGraphQLTada();\n *\n * const query = graphql(`{ __typename }`);\n * ```\n */\nexport type initGraphQLTada<Setup extends AbstractSetupSchema> = GraphQLTadaAPI<\n  schemaOfSetup<Setup>,\n  configOfSetup<Setup>\n>;\n\n/** Setup function to create a typed `graphql` document function with.\n *\n * @remarks\n * `initGraphQLTada` accepts an {@link AbstractSetupSchema} configuration object as a generic\n * and returns a `graphql` function that may be used to create documents typed using your\n * GraphQL schema.\n *\n * You should use and re-export the resulting function named as `graphql` or `gql` for your\n * editor and the TypeScript language server to recognize your GraphQL documents correctly.\n *\n * @example\n * ```\n * import { initGraphQLTada } from 'gql.tada';\n * import type { myIntrospection } from './myIntrospection';\n *\n * export const graphql = initGraphQLTada<{\n *   introspection: typeof myIntrospection;\n *   scalars: {\n *     DateTime: string;\n *     Json: any;\n *   };\n * }>();\n *\n * const query = graphql(`{ __typename }`);\n * ```\n */\nexport function initGraphQLTada<const Setup extends AbstractSetupSchema>(): initGraphQLTada<Setup> {\n  type Schema = schemaOfSetup<Setup>;\n  type Config = configOfSetup<Setup>;\n\n  function graphql(input: string, fragments?: readonly TadaDocumentNode[]): any {\n    const definitions = _parse(input).definitions as writable<DefinitionNode>[];\n    const seen = new Set<unknown>();\n    for (const document of fragments || []) {\n      for (const definition of document.definitions) {\n        if (definition.kind === Kind.FRAGMENT_DEFINITION && !seen.has(definition)) {\n          definitions.push(definition);\n          seen.add(definition);\n        }\n      }\n    }\n\n    let isFragment: boolean;\n    if (\n      (isFragment = definitions[0].kind === Kind.FRAGMENT_DEFINITION) &&\n      definitions[0].directives\n    ) {\n      definitions[0].directives = definitions[0].directives.filter(\n        (directive) => directive.name.value !== '_unmask'\n      );\n    }\n\n    let loc: Location | undefined;\n    return {\n      kind: Kind.DOCUMENT,\n      definitions,\n      get loc(): Location {\n        // NOTE: This is only meant for graphql-tag compatibility. When fragment documents\n        // are interpolated into other documents, graphql-tag blindly reads `document.loc`\n        // without checking whether it's `undefined`.\n        if (!loc && isFragment) {\n          const body = input + concatLocSources(fragments || []);\n          return {\n            start: 0,\n            end: body.length,\n            source: {\n              body: body,\n              name: 'GraphQLTada',\n              locationOffset: { line: 1, column: 1 },\n            },\n          };\n        }\n        return loc;\n      },\n      set loc(_loc: Location) {\n        loc = _loc;\n      },\n    } satisfies DocumentNode;\n  }\n\n  graphql.scalar = function scalar(_schema: Schema, value: any) {\n    return value;\n  };\n\n  graphql.persisted = function persisted(\n    documentId: string,\n    document?: TadaDocumentNode\n  ): TadaPersistedDocumentNode {\n    return {\n      kind: Kind.DOCUMENT,\n      definitions: document ? document.definitions : [],\n      documentId,\n    };\n  };\n\n  return graphql as GraphQLTadaAPI<Schema, Config>;\n}\n\n/** Alias to a GraphQL parse function returning an exact document type.\n *\n * @param input - A string of a GraphQL document\n * @returns A parsed {@link DocumentNode}.\n *\n * @remarks\n * This function accepts a GraphQL document string and parses it, just like\n * GraphQL’s `parse` function. However, its return type will be the exact\n * structure of the AST parsed in types.\n */\nfunction parse<const In extends string>(input: In): parseDocument<In> {\n  return _parse(input) as any;\n}\n\nexport type getDocumentNode<\n  Document extends DocumentNodeLike,\n  Introspection extends SchemaLike,\n  Fragments extends { [name: string]: any } = {},\n  isMaskingDisabled = false,\n> =\n  getDocumentType<Document, Introspection, Fragments> extends never\n    ? never\n    : TadaDocumentNode<\n        getDocumentType<Document, Introspection, Fragments>,\n        getVariablesType<Document, Introspection>,\n        decorateFragmentDef<Document, isMaskingDisabled>\n      >;\n\n/** A GraphQL `DocumentNode` with attached types for results and variables.\n *\n * @remarks\n * This is a GraphQL {@link DocumentNode} with attached types for results and variables.\n * This is used by GraphQL clients to infer the types of results and variables and provide\n * type-safety in GraphQL documents.\n *\n * You can create typed GraphQL documents using the {@link graphql} function.\n *\n * `Result` is the type of GraphQL results, as returned by GraphQL APIs for a given query.\n * `Variables` is the type of variables, as accepted by GraphQL APIs for a given query.\n *\n * @see {@link https://github.com/dotansimha/graphql-typed-document-node} for more information.\n */\ninterface TadaDocumentNode<\n  Result = { [key: string]: any },\n  Variables = { [key: string]: any },\n  Decoration = void,\n> extends DocumentNode,\n    DocumentDecoration<Result, Variables>,\n    DefinitionDecoration<Decoration> {}\n\n/** A GraphQL persisted document with attached types for results and variables.\n *\n * @remarks\n * This type still matches a GraphQL {@link DocumentNode}, but doesn’t contain\n * any definitions. At runtime, this means that this document is empty.\n *\n * Instead of its definitions, it carries an `id` property that is typically\n * used to uniquely identify the document to your GraphQL API, without disclosing\n * the shape of the query or schema transparently.\n */\ninterface TadaPersistedDocumentNode<\n  Result = { [key: string]: any },\n  Variables = { [key: string]: any },\n> extends DocumentNode,\n    DocumentDecoration<Result, Variables> {\n  definitions: readonly DefinitionNode[];\n  documentId: string;\n}\n\n/** A utility type returning the `Result` type of typed GraphQL documents.\n *\n * @remarks\n * This accepts a {@link TadaDocumentNode} and returns the attached `Result` type\n * of GraphQL documents.\n */\ntype ResultOf<Document> = Document extends DocumentDecoration<infer Result, any> ? Result : never;\n\n/** A utility type returning the `Variables` type of typed GraphQL documents.\n *\n * @remarks\n * This accepts a {@link TadaDocumentNode} and returns the attached `Variables` type\n * of GraphQL documents.\n */\ntype VariablesOf<Document> =\n  Document extends DocumentDecoration<any, infer Variables> ? Variables : never;\n\n/** Creates a fragment mask for a given fragment document.\n *\n * @remarks\n * When {@link graphql} is used to create a fragment and is spread into another\n * fragment or query, their result types will only contain a “reference” to the\n * fragment. This encourages isolation and is known as “fragment masking.”\n *\n * While {@link readFragment} is used to unmask these fragment masks, this utility\n * creates a fragment mask, so you can accept the masked data in the part of your\n * codebase that defines a fragment.\n *\n * @example\n * ```\n * import { FragmentOf, graphql, readFragment } from 'gql.tada';\n *\n * const bookFragment = graphql(`\n *   fragment BookComponent on Book {\n *     id\n *     title\n *   }\n * `);\n *\n * // May be called with any GraphQL data that contains a spread of `bookFragment`\n * const getBook = (data: FragmentOf<typeof bookFragment>) => {\n *   // Unmasks the fragment and casts to the result type of `bookFragment`\n *   const book = readFragment(bookFragment, data);\n * };\n * ```\n *\n * @see {@link readFragment} for how to read from fragment masks.\n */\ntype FragmentOf<Document extends FragmentShape> = makeFragmentRef<Document>;\n\ntype resultOrFragmentOf<Document extends FragmentShape> = FragmentOf<Document> | ResultOf<Document>;\n\ntype resultOfT<Document extends FragmentShape, T = unknown> =\n  Document extends DocumentDecoration<infer Result, any>\n    ? '__typename' extends keyof T\n      ? Result extends { __typename?: T['__typename'] }\n        ? Result\n        : never\n      : Result\n    : never;\n\ntype resultOfFragmentsRec<\n  Fragments extends readonly any[],\n  Result = {},\n> = Fragments extends readonly [infer Fragment, ...infer Rest]\n  ? resultOfFragmentsRec<Rest, ResultOf<Fragment> & Result>\n  : Result;\n\ntype fragmentRefsOfFragmentsRec<\n  Fragments extends readonly any[],\n  FragmentRefs = {},\n> = Fragments extends readonly [infer Fragment, ...infer Rest]\n  ? fragmentRefsOfFragmentsRec<Rest, makeFragmentRef<Fragment> & FragmentRefs>\n  : obj<FragmentRefs>;\n\n/** Unmasks a fragment mask for a given fragment document and data.\n *\n * @param _document - A GraphQL document of a fragment, created using {@link graphql}.\n * @param fragment - A mask of the fragment, which can be wrapped in arrays, or nullable.\n * @returns The unmasked data of the fragment.\n *\n * @remarks\n * When {@link graphql} is used to create a fragment and is spread into another\n * fragment or query, their result types will only contain a “reference” to the\n * fragment. This encourages isolation and is known as “fragment masking.”\n *\n * This means that you must use {@link readFragment} to unmask these fragment masks\n * and get to the data. This encourages isolation and only using the data you define\n * a part of your codebase to require.\n *\n * @example\n * ```\n * import { FragmentOf, graphql, readFragment } from 'gql.tada';\n *\n * const bookFragment = graphql(`\n *   fragment BookComponent on Book {\n *     id\n *     title\n *   }\n * `);\n *\n * const getBook = (data: FragmentOf<typeof bookFragment> | null) => {\n *   // Unmasks the fragment and casts to the result type of `bookFragment`\n *   // This is intersected with `| null` in this case, due to the input type.\n *   const book = readFragment(bookFragment, data);\n * };\n *\n * const bookQuery = graphql(`\n *   query Book ($id: ID!) {\n *     book(id: $id) {\n *       id\n *       ...BookComponent\n *     }\n *   }\n * `, [bookFragment]);\n *\n * const getQuery = (data: ResultOf<typeof bookQuery>) => {\n *   getBook(data?.book);\n * };\n * ```\n *\n * @see {@link readFragment} for how to read from fragment masks.\n */\nfunction readFragment<const Document extends FragmentShape = never>(\n  _document: Document,\n  fragment: never\n): resultOfT<Document>;\n\nfunction readFragment<\n  const Document extends FragmentShape,\n  const T extends resultOrFragmentOf<Document> | null | undefined | {},\n>(\n  _document: Document,\n  fragments: readonly T[]\n): readonly (T extends resultOrFragmentOf<Document> ? resultOfT<Document, T> : T)[];\nfunction readFragment<\n  const Document extends FragmentShape,\n  const T extends resultOrFragmentOf<Document> | null | undefined | {},\n>(\n  _document: Document,\n  fragment: T\n): T extends resultOrFragmentOf<Document> ? resultOfT<Document, T> : T;\n\n// Reading arrays of fragments with required generic\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: readonly resultOrFragmentOf<Document>[]\n): readonly ResultOf<Document>[];\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: readonly (resultOrFragmentOf<Document> | null)[]\n): readonly (ResultOf<Document> | null)[];\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: readonly (resultOrFragmentOf<Document> | undefined)[]\n): readonly (ResultOf<Document> | undefined)[];\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: readonly (resultOrFragmentOf<Document> | null | undefined)[]\n): readonly (ResultOf<Document> | null | undefined)[];\n// Reading arrays of fragments with required generic with optional `{}` type\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: readonly (resultOrFragmentOf<Document> | {})[]\n): readonly (ResultOf<Document> | {})[];\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: readonly (resultOrFragmentOf<Document> | null | {})[]\n): readonly (ResultOf<Document> | null | {})[];\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: readonly (resultOrFragmentOf<Document> | undefined | {})[]\n): readonly (ResultOf<Document> | undefined | {})[];\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: readonly (resultOrFragmentOf<Document> | null | undefined | {})[]\n): readonly (ResultOf<Document> | null | undefined | {})[];\n// Reading fragments with required generic\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: resultOrFragmentOf<Document>\n): ResultOf<Document>;\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: resultOrFragmentOf<Document> | null\n): ResultOf<Document> | null;\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: resultOrFragmentOf<Document> | undefined\n): ResultOf<Document> | undefined;\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: resultOrFragmentOf<Document> | null | undefined\n): ResultOf<Document> | null | undefined;\n// Reading fragments with required generic with optional `{}` type\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: resultOrFragmentOf<Document> | {}\n): ResultOf<Document> | {};\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: resultOrFragmentOf<Document> | null | {}\n): ResultOf<Document> | null | {};\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: resultOrFragmentOf<Document> | undefined | {}\n): ResultOf<Document> | undefined | {};\nfunction readFragment<const Document extends FragmentShape>(\n  fragment: resultOrFragmentOf<Document> | null | undefined | {}\n): ResultOf<Document> | null | undefined | {};\n\nfunction readFragment(...args: [unknown] | [unknown, unknown]) {\n  return args.length === 2 ? args[1] : args[0];\n}\n\n/** For testing, masks fragment data for given data and fragments.\n *\n * @param _fragments - A list of GraphQL documents of fragments, created using {@link graphql}.\n * @param data - The combined result data of the fragments, which can be wrapped in arrays.\n * @returns The masked data of the fragments.\n *\n * @remarks\n * When creating test data, you may define data for fragments that’s unmasked, making it\n * unusable in parent fragments or queries that require masked data.\n *\n * This means that you may have to use {@link maskFragments} to mask your data first\n * for TypeScript to not report an error.\n *\n * @example\n * ```\n * import { FragmentOf, ResultOf, graphql, maskFragments } from 'gql.tada';\n *\n * const bookFragment = graphql(`\n *   fragment BookComponent on Book {\n *     id\n *     title\n *   }\n * `);\n *\n * const data = maskFragments([bookFragment], { id: 'id', title: 'book' });\n * ```\n *\n * @see {@link readFragment} for how to read from fragment masks (i.e. the reverse)\n */\nfunction maskFragments<const Fragments extends readonly FragmentShape[]>(\n  _fragments: Fragments,\n  fragment: resultOfFragmentsRec<Fragments>\n): fragmentRefsOfFragmentsRec<Fragments>;\nfunction maskFragments<const Fragments extends readonly FragmentShape[]>(\n  _fragments: Fragments,\n  fragment: resultOfFragmentsRec<Fragments> | null\n): fragmentRefsOfFragmentsRec<Fragments> | null;\nfunction maskFragments<const Fragments extends readonly FragmentShape[]>(\n  _fragments: Fragments,\n  fragment: resultOfFragmentsRec<Fragments> | undefined\n): fragmentRefsOfFragmentsRec<Fragments> | undefined;\nfunction maskFragments<const Fragments extends readonly FragmentShape[]>(\n  _fragments: Fragments,\n  fragment: resultOfFragmentsRec<Fragments> | null | undefined\n): fragmentRefsOfFragmentsRec<Fragments> | null | undefined;\nfunction maskFragments<const Fragments extends readonly FragmentShape[]>(\n  _fragments: Fragments,\n  fragment: readonly resultOfFragmentsRec<Fragments>[]\n): readonly fragmentRefsOfFragmentsRec<Fragments>[];\nfunction maskFragments<const Fragments extends readonly FragmentShape[]>(\n  _fragments: Fragments,\n  fragment: readonly (resultOfFragmentsRec<Fragments> | null)[]\n): readonly (fragmentRefsOfFragmentsRec<Fragments> | null)[];\nfunction maskFragments<const Fragments extends readonly FragmentShape[]>(\n  _fragments: Fragments,\n  fragment: readonly (resultOfFragmentsRec<Fragments> | undefined)[]\n): readonly (fragmentRefsOfFragmentsRec<Fragments> | undefined)[];\nfunction maskFragments<const Fragments extends readonly FragmentShape[]>(\n  _fragments: Fragments,\n  fragment: readonly (resultOfFragmentsRec<Fragments> | null | undefined)[]\n): readonly (fragmentRefsOfFragmentsRec<Fragments> | null | undefined)[];\nfunction maskFragments(_fragments: unknown, data: unknown) {\n  return data;\n}\n\n/** For testing, converts document data without fragment refs to their result type.\n *\n * @param _document - A GraphQL document, created using {@link graphql}.\n * @param data - The result data of the GraphQL document with optional fragment refs.\n * @returns The masked result data of the document.\n *\n * @remarks\n * When creating test data, you may define data for documents that’s unmasked, but\n * need to cast the data to match the result type of your document.\n *\n * This means that you may have to use {@link unsafe_readResult} to cast\n * them to the result type, instead of doing `as any as ResultOf<typeof document>`.\n *\n * This function is inherently unsafe, since it doesn't check that your document\n * actually contains the masked fragment data!\n *\n * @example\n * ```\n * import { FragmentOf, ResultOf, graphql, unsafe_readResult } from 'gql.tada';\n *\n * const bookFragment = graphql(`\n *   fragment BookComponent on Book {\n *     id\n *     title\n *   }\n * `);\n *\n * const query = graphql(`\n *   query {\n *     book {\n *       ...BookComponent\n *     }\n *   }\n * `, [bookFragment]);\n *\n * const data = unsafe_readResult(query, { book: { id: 'id', title: 'book' } });\n * ```\n *\n * @see {@link readFragment} for how to read from fragment masks (i.e. the reverse)\n */\nfunction unsafe_readResult<\n  const Document extends DocumentDecoration<any, any>,\n  const Data extends omitFragmentRefsRec<ResultOf<Document>>,\n>(_document: Document, data: Data): ResultOf<Document> {\n  return data as any;\n}\n\nconst graphql: initGraphQLTada<setupSchema> = initGraphQLTada();\n\nexport { parse, graphql, readFragment, maskFragments, unsafe_readResult };\n\nexport type {\n  setupCache,\n  setupSchema,\n  parseDocument,\n  AbstractSetupSchema,\n  AbstractSetupCache,\n  GraphQLTadaAPI,\n  TadaDocumentNode,\n  TadaPersistedDocumentNode,\n  ResultOf,\n  VariablesOf,\n  FragmentOf,\n};\n"],"names":["CONCAT_LOC_DEPTH","CONCAT_LOC_SEEN","Set","initGraphQLTada","graphql","input","fragments","definitions","_parse","seen","document","definition","kind","Kind","FRAGMENT_DEFINITION","has","push","add","isFragment","directives","filter","directive","name","value","loc","DOCUMENT","body","concatLocSources","result","fragment","source","clear","start","end","length","locationOffset","line","column","_loc","scalar","_schema","persisted","documentId","parse","readFragment","args","maskFragments","_fragments","data","unsafe_readResult","_document"],"mappings":";;AAuDA,IAAIA,IAAmB;;AACvB,IAAMC,IAAkB,IAAIC;;ACmQrB,SAASC;EAId,SAASC,QAAQC,GAAeC;IAC9B,IAAMC,IAAcC,EAAOH,GAAOE;IAClC,IAAME,IAAO,IAAIP;IACjB,KAAK,IAAMQ,KAAYJ,KAAa;MAClC,KAAK,IAAMK,KAAcD,EAASH;QAChC,IAAII,EAAWC,SAASC,EAAKC,wBAAwBL,EAAKM,IAAIJ,IAAa;UACzEJ,EAAYS,KAAKL;UACjBF,EAAKQ,IAAIN;AACX;;;IAIJ,IAAIO;IACJ,KACGA,IAAaX,EAAY,GAAGK,SAASC,EAAKC,wBAC3CP,EAAY,GAAGY;MAEfZ,EAAY,GAAGY,aAAaZ,EAAY,GAAGY,WAAWC,QACnDC,KAAuC,cAAzBA,EAAUC,KAAKC;;IAIlC,IAAIC;IACJ,OAAO;MACLZ,MAAMC,EAAKY;MACXlB;MACA,OAAIiB;QAIF,KAAKA,KAAON,GAAY;UACtB,IAAMQ,IAAOrB,ID/RhB,SAASsB,iBAAiBrB;YAC/B;cACEN;cACA,IAAI4B,IAAS;cACb,KAAK,IAAMC,KAAYvB;gBACrB,KAAKL,EAAgBc,IAAIc,IAAW;kBAClC5B,EAAgBgB,IAAIY;kBACpB,KAAML,KAAEA,KAAQK;kBAChB,IAAIL;oBAAKI,KAAUJ,EAAIM,OAAOJ;;AAChC;;cAEF,OAAOE;AACT,cAAU;cACR,IAA2B,OAArB5B;gBACJC,EAAgB8B;;AAEpB;AACF,WC8Q+BJ,CAAiBrB,KAAa;UACnD,OAAO;YACL0B,OAAO;YACPC,KAAKP,EAAKQ;YACVJ,QAAQ;cACNJ,MAAMA;cACNJ,MAAM;cACNa,gBAAgB;gBAAEC,MAAM;gBAAGC,QAAQ;;;;AAGzC;QACA,OAAOb;AACR;MACD,OAAIA,CAAIc;QACNd,IAAMc;AACR;;AAEJ;EAEAlC,QAAQmC,SAAS,SAASA,OAAOC,GAAiBjB;IAChD,OAAOA;;EAGTnB,QAAQqC,YAAY,SAASA,UAC3BC,GACAhC;IAEA,OAAO;MACLE,MAAMC,EAAKY;MACXlB,aAAaG,IAAWA,EAASH,cAAc;MAC/CmC;;;EAIJ,OAAOtC;AACT;;AAYA,SAASuC,MAA+BtC;EACtC,OAAOG,EAAOH;AAChB;;AA6PA,SAASuC,gBAAgBC;EACvB,OAAuB,MAAhBA,EAAKX,SAAeW,EAAK,KAAKA,EAAK;AAC5C;;AA+DA,SAASC,cAAcC,GAAqBC;EAC1C,OAAOA;AACT;;AA0CA,SAASC,kBAGPC,GAAqBF;EACrB,OAAOA;AACT;;AAEA,IAAM5C,IAAwCD;;"}

Выполнить команду


Для локальной разработки. Не используйте в интернете!