🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@luvio/graphql-parser

Package Overview
Dependencies
Maintainers
11
Versions
288
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@luvio/graphql-parser - npm Package Compare versions

Comparing version
0.158.5
to
5.42.0
+6
dist/index.js
/*!
* Copyright (c) 2022, Salesforce, Inc.,
* All rights reserved.
* For full license text, see the LICENSE.txt file
*/
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
/**
* strips Document node and nested definitions of location references, tests only.
*/
export declare function stripLocation(node: any): any;
/**
* Exposes a tagged template literal to parse graphql operation string
* "gql" is the only publicly exposed method
* @module gql
*/
import type { DefinitionNode, DocumentNode } from 'graphql/language';
export type AstResolver = (astReference: any) => DocumentNode | undefined;
/**
* we should look into optimizing this before it turns into a memory hog
* weakmaps, or limiting the size of the cache, or something
*/
export declare const docMap: Map<string, DocumentNode>;
/**
* Opaque reference map to return keys to userland
* As a user shouldn't have access to the Document
*/
export declare const referenceMap: WeakMap<Object, DocumentNode>;
/**
* Returns document node if cached or else update the cache and return the document node
* @param inputString - operation string
* @returns DocumentNode
*/
export declare function parseDocument(inputString: string): DocumentNode | null;
export declare function updateReferenceMapWithKnownKey(doc: DocumentNode, key: object): void;
export declare function updateReferenceMapAndGetKey(doc: DocumentNode): object;
/**
* Insert string and fragment substitutions with the actual nodes
* @param inputString
* @param substitutions - string | fragment DocumentNode
* @returns { operation string, fragment docs [] }
*/
export declare function processSubstitutions(inputString: ReadonlyArray<string>, substitutions: (string | object)[]): {
operationString: string;
fragments: DefinitionNode[];
} | null;
/**
*
* @param astReference - ast reference passed from user land
*/
export declare const astResolver: AstResolver;
/**
*
* @param literals - operation query string
* @param subs - all other substitutions
* @returns an opaque reference to the parsed document
*/
export declare function gql(literals: ReadonlyArray<string> | string, ...subs: (string | object)[]): object | null;
export type { GraphQLObjectType, GraphQLInterfaceType, GraphQLDirective, GraphQLUnionType, GraphQLNamedType, } from 'graphql/type';
export type { ObjectValueNode, ListTypeNode, BooleanValueNode, EnumTypeDefinitionNode, FieldDefinitionNode, FloatValueNode, InterfaceTypeDefinitionNode, IntValueNode, NamedTypeNode, ObjectTypeDefinitionNode, StringValueNode, TypeNode, UnionTypeDefinitionNode, DocumentNode, OperationDefinitionNode, FieldNode, ArgumentNode, ValueNode, SelectionNode, SelectionSetNode, FragmentDefinitionNode, DirectiveNode, ObjectFieldNode, ScalarTypeDefinitionNode, InputObjectTypeDefinitionNode, InlineFragmentNode, FragmentSpreadNode, VariableDefinitionNode, ListValueNode, VariableNode, NullValueNode, } from 'graphql/language';
export { Kind } from 'graphql/language';
export { gql, astResolver } from './gql';
export type { AstResolver } from './gql';
export { parse } from 'graphql/language';

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

+24
-21
{
"name": "@luvio/graphql-parser",
"version": "0.158.5",
"description": "GraphQL parser for Luvio GraphQL adapter support",
"version": "5.42.0",
"description": "GraphQL parser for GraphQL adapter support",
"repository": {
"type": "git",
"url": "https://github.com/salesforce-experience-platform-emu/luvio.git",
"url": "https://github.com/salesforce-experience-platform-emu/onestore.git",
"directory": "packages/@luvio/graphql-parser"
},
"license": "MIT",
"type": "module",
"exports": {
"types": "./dist/esm/types/main.d.ts",
"require": "./dist/cjs/luvioGraphqlParser.js",
"import": "./dist/esm/luvioGraphqlParser.js"
"./v1": {
"import": "./dist/v1/index.js",
"types": "./dist/types/v1/index.d.ts",
"require": "./dist/v1/index.js"
},
".": {
"import": "./dist/index.js",
"types": "./dist/types/index.d.ts",
"require": "./dist/index.js"
}
},
"main": "./dist/cjs/luvioGraphqlParser.js",
"module": "./dist/esm/luvioGraphqlParser.js",
"types": "dist/esm/types/main.d.ts",
"main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/types/index.d.ts",
"files": [

@@ -23,11 +31,10 @@ "dist/"

"scripts": {
"build": "rollup --bundleConfigAsCjs --config rollup.config.js",
"build": "vite build && tsc --build --emitDeclarationOnly",
"clean": "rm -rf dist",
"parse": "node ./scripts/cli.mjs",
"test": "jest",
"test:debug": "node --inspect-brk ../../../node_modules/.bin/jest --runInBand",
"test:size": "luvioBundlesize"
"test": "vitest run",
"test:size": "size-limit"
},
"dependencies": {
"graphql": "^15.0.0"
"graphql": "16.11.0"
},

@@ -40,10 +47,6 @@ "volta": {

},
"luvioBundlesize": [
"size-limit": [
{
"path": "./dist/esm/luvioGraphqlParser.js",
"maxSize": {
"none": "365 kB",
"min": "158 kB",
"compressed": "60 kB"
}
"path": "./dist/v1/index.js",
"limit": "17.6 kB"
}

@@ -50,0 +53,0 @@ ],

Sorry, the diff of this file is too big to display

import type { ArgumentNode } from 'graphql/language';
import type { LuvioArgumentNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: ArgumentNode, transformState: TransformState): LuvioArgumentNode;
import type { DocumentNode, OperationDefinitionNode, FieldNode, ArgumentNode, IntValueNode, ListValueNode, ObjectValueNode, FloatValueNode, StringValueNode, BooleanValueNode, NullValueNode, EnumValueNode, VariableNode, DirectiveNode, VariableDefinitionNode, NonNullTypeNode, ListTypeNode, NamedTypeNode, FragmentSpreadNode, InlineFragmentNode, FragmentDefinitionNode, DefinitionNode, TypeNode } from 'graphql/language';
/**
* Luvio specific custom GraphQL AST
*
* - Omit Location
* - flatten NameNode for easier value access
* - Add luvioSelections for custom selections
* - LuvioSelectionCustomFieldNode for fields with custom client side directives
*/
export interface LuvioDocumentNode extends Omit<DocumentNode, 'loc' | 'definitions'> {
definitions: LuvioDefinitionNode[];
}
export type LuvioDefinitionNode = LuvioOperationDefinitionNode | LuvioFragmentDefinitionNode;
export interface LuvioOperationDefinitionNode extends Omit<OperationDefinitionNode, 'loc' | 'name' | 'variableDefinitions' | 'directives' | 'selectionSet'> {
name?: string;
variableDefinitions?: LuvioVariableDefinitionNode[];
directives?: LuvioDirectiveNode[];
luvioSelections: LuvioSelectionNode[];
}
export interface LuvioVariableDefinitionNode extends Omit<VariableDefinitionNode, 'loc' | 'variable' | 'type' | 'defaultValue' | 'directives'> {
variable: LuvioVariableNode;
type: LuvioTypeNode;
defaultValue?: LuvioValueNode;
directives?: LuvioDirectiveNode[];
}
export interface LuvioVariableNode extends Omit<VariableNode, 'loc' | 'name'> {
name: string;
}
export type LuvioSelectionNode = LuvioFieldNode | LuvioFragmentSpreadNode | LuvioInlineFragmentNode;
export type LuvioFieldNode = LuvioSelectionScalarFieldNode | LuvioSelectionObjectFieldNode | LuvioSelectionCustomFieldNode;
export interface LuvioArgumentNode extends Omit<ArgumentNode, 'loc' | 'name' | 'value'> {
name: string;
value: LuvioValueNode;
}
export interface LuvioFragmentSpreadNode extends Omit<FragmentSpreadNode, 'loc' | 'name' | 'directives'> {
name: string;
directives?: LuvioDirectiveNode[];
}
export interface LuvioInlineFragmentNode extends Omit<InlineFragmentNode, 'loc' | 'typeCondition' | 'directives' | 'selectionSet'> {
typeCondition?: LuvioNamedTypeNode;
directives?: LuvioDirectiveNode[];
luvioSelections: LuvioSelectionNode[];
}
export interface LuvioFragmentDefinitionNode extends Omit<FragmentDefinitionNode, 'loc' | 'name' | 'variableDefinitions' | 'typeCondition' | 'directives' | 'selectionSet'> {
name: string;
variableDefinitions?: LuvioVariableDefinitionNode[];
typeCondition: LuvioNamedTypeNode;
directives?: LuvioDirectiveNode[];
luvioSelections: LuvioSelectionNode[];
}
export type LuvioValueNode = LuvioVariableNode | IntValueNode | FloatValueNode | StringValueNode | BooleanValueNode | NullValueNode | EnumValueNode | LuvioListValueNode | LuvioObjectValueNode;
export interface LuvioListValueNode extends Omit<ListValueNode, 'loc' | 'values'> {
values: LuvioValueNode[];
}
export interface LuvioObjectValueNode extends Omit<ObjectValueNode, 'loc' | 'fields'> {
fields: {
[name: string]: LuvioValueNode;
};
}
export interface LuvioDirectiveNode extends Omit<DirectiveNode, 'loc' | 'name' | 'arguments'> {
name: string;
arguments?: LuvioArgumentNode[];
}
export type LuvioTypeNode = LuvioNamedTypeNode | LuvioListTypeNode | LuvioNonNullTypeNode;
export interface LuvioNamedTypeNode extends Omit<NamedTypeNode, 'loc' | 'name'> {
name: string;
}
export interface LuvioListTypeNode extends Omit<ListTypeNode, 'loc' | 'type'> {
type: LuvioTypeNode;
}
export interface LuvioNonNullTypeNode extends Omit<NonNullTypeNode, 'loc' | 'type'> {
type: LuvioNamedTypeNode | LuvioListTypeNode;
}
export interface LuvioSelectionScalarFieldNode extends Omit<FieldNode, 'kind' | 'loc' | 'alias' | 'name' | 'arguments' | 'directives' | 'selectionSet'> {
kind: 'ScalarFieldSelection';
alias?: string;
name: string;
}
export interface LuvioSelectionObjectFieldNode extends Omit<FieldNode, 'kind' | 'loc' | 'alias' | 'name' | 'arguments' | 'directives' | 'selectionSet'> {
kind: 'ObjectFieldSelection';
alias?: string;
name: string;
arguments?: LuvioArgumentNode[];
directives?: LuvioDirectiveNode[];
luvioSelections?: LuvioSelectionNode[];
}
export interface LuvioSelectionCustomFieldNode extends Omit<LuvioSelectionObjectFieldNode, 'kind'> {
kind: 'CustomFieldSelection';
type: string;
}
export declare function isOperationDefinitionNode(input: DefinitionNode): input is OperationDefinitionNode;
export declare function isFragmentDefinitionNode(input: DefinitionNode): input is FragmentDefinitionNode;
export declare function isNamedTypeNode(input: TypeNode): input is NamedTypeNode;
export declare function isListTypeNode(input: TypeNode): input is ListTypeNode;
export declare function isNonNullTypeNode(input: TypeNode): input is NonNullTypeNode;
export declare const CUSTOM_DIRECTIVE_CONNECTION = "connection";
export declare const CUSTOM_DIRECTIVE_RESOURCE = "resource";
export declare const NODE_KIND_CUSTOM_FIELD_SELECTION = "CustomFieldSelection";
export declare const NODE_KIND_FIELD = "Field";
export declare const NODE_KIND_FRAGMENT_SPREAD = "FragmentSpread";
export declare const NODE_KIND_INLINE_FRAGMENT = "InlineFragment";
export declare const NODE_KIND_LIST_TYPE = "ListType";
export declare const NODE_KIND_NAMED_TYPE = "NamedType";
export declare const NODE_KIND_NON_NULL_TYPE = "NonNullType";
export declare const NODE_KIND_OBJECT_FIELD_SELECTION = "ObjectFieldSelection";
export declare const NODE_KIND_SCALAR_FIELD_SELECTION = "ScalarFieldSelection";
export declare const NODE_TYPE_CONNECTION = "Connection";
import type { DirectiveNode } from 'graphql/language';
import type { LuvioDirectiveNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: DirectiveNode, transformState: TransformState): LuvioDirectiveNode;
export declare function isCustomDirective(node: DirectiveNode): boolean;
import type { DocumentNode } from 'graphql/language';
import type { LuvioDocumentNode } from './ast';
export declare function transform(root: DocumentNode): LuvioDocumentNode;
import type { FieldNode } from 'graphql/language';
import type { LuvioFieldNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: FieldNode, transformState: TransformState): LuvioFieldNode;
import type { FragmentSpreadNode } from 'graphql/language';
import type { LuvioFragmentSpreadNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: FragmentSpreadNode, transformState: TransformState): LuvioFragmentSpreadNode;
import type { FragmentDefinitionNode } from 'graphql/language';
import type { LuvioFragmentDefinitionNode } from './ast';
export declare function transform(node: FragmentDefinitionNode): LuvioFragmentDefinitionNode;
/**
* Exposes a tagged template literal to parse graphql operation string
* "gql" is the only publicly exposed method
* @module gql
*/
import type { DefinitionNode, DocumentNode } from 'graphql/language';
export type AstResolver = (astReference: any) => DocumentNode | undefined;
/**
* we should look into optimizing this before it turns into a memory hog
* weakmaps, or limiting the size of the cache, or something
*/
export declare const docMap: Map<string, DocumentNode>;
/**
* Opaque reference map to return keys to userland
* As a user shouldn't have access to the Document
*/
export declare const referenceMap: WeakMap<Object, DocumentNode>;
/**
* Returns document node if cached or else update the cache and return the document node
* @param inputString - operation string
* @returns DocumentNode
*/
export declare function parseDocument(inputString: string): DocumentNode | null;
export declare function updateReferenceMapWithKnownKey(doc: DocumentNode, key: object): void;
export declare function updateReferenceMapAndGetKey(doc: DocumentNode): object;
/**
* Insert string and fragment substitutions with the actual nodes
* @param inputString
* @param substitutions - string | fragment DocumentNode
* @returns { operation string, fragment docs [] }
*/
export declare function processSubstitutions(inputString: ReadonlyArray<string>, substitutions: (string | object)[]): {
operationString: string;
fragments: DefinitionNode[];
} | null;
/**
*
* @param astReference - ast reference passed from user land
*/
export declare const astResolver: AstResolver;
/**
*
* @param literals - operation query string
* @param subs - all other substitutions
* @returns an opaque reference to the parsed document
*/
export declare function gql(literals: ReadonlyArray<string> | string, ...subs: (string | object)[]): object | null;
import type { InlineFragmentNode } from 'graphql/language';
import type { LuvioInlineFragmentNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: InlineFragmentNode, transformState: TransformState): LuvioInlineFragmentNode;
import { GraphQLSchema, GraphQLScalarType, execute, buildSchema, extendSchema, getNamedType, isObjectType, validateSchema, NameNode, GraphQLError, ObjectValueNode, defaultFieldResolver, type ASTNode, type DefinitionNode } from 'graphql';
import { buildASTSchema } from 'graphql/utilities';
import { LuvioDocumentNode, LuvioArgumentNode, LuvioDefinitionNode, LuvioObjectValueNode, LuvioOperationDefinitionNode, LuvioSelectionCustomFieldNode, LuvioSelectionNode, LuvioSelectionObjectFieldNode, LuvioSelectionScalarFieldNode, LuvioValueNode, LuvioFieldNode, LuvioVariableDefinitionNode, LuvioVariableNode, LuvioNamedTypeNode, LuvioListTypeNode, LuvioListValueNode, LuvioTypeNode } from './ast';
export type { GraphQLObjectType, GraphQLInterfaceType, GraphQLDirective, GraphQLUnionType, GraphQLNamedType, } from 'graphql/type';
export type { ListTypeNode, BooleanValueNode, EnumTypeDefinitionNode, FieldDefinitionNode, FloatValueNode, InterfaceTypeDefinitionNode, IntValueNode, NamedTypeNode, ObjectTypeDefinitionNode, StringValueNode, TypeNode, UnionTypeDefinitionNode, DocumentNode, OperationDefinitionNode, FieldNode, ArgumentNode, ValueNode, SelectionNode, SelectionSetNode, FragmentDefinitionNode, DirectiveNode, ObjectFieldNode, ScalarTypeDefinitionNode, InputObjectTypeDefinitionNode, InlineFragmentNode, FragmentSpreadNode, VariableDefinitionNode, ListValueNode, VariableNode, } from 'graphql/language';
export { ASTVisitor, parse, Kind, print, visit } from 'graphql/language';
export { isScalarType } from 'graphql/type';
export { stripIgnoredCharacters } from 'graphql/utilities';
export { gql, astResolver } from './gql';
export type { AstResolver } from './gql';
/**
* @deprecated - Schema-backed adapters will use standard graphql types re-exported from @luvio/graphql
*/
export { LuvioDocumentNode, LuvioArgumentNode, LuvioDefinitionNode, LuvioObjectValueNode, LuvioOperationDefinitionNode, LuvioSelectionCustomFieldNode, LuvioSelectionNode, LuvioSelectionObjectFieldNode, LuvioSelectionScalarFieldNode, LuvioValueNode, LuvioFieldNode, LuvioVariableDefinitionNode, LuvioVariableNode, LuvioNamedTypeNode, LuvioListTypeNode, LuvioListValueNode, LuvioTypeNode, GraphQLSchema, GraphQLScalarType, NameNode, GraphQLError, ASTNode, DefinitionNode, ObjectValueNode, buildASTSchema, execute, buildSchema, extendSchema, getNamedType, isObjectType, validateSchema, defaultFieldResolver, };
/**
* @deprecated In favor of gql tagged template literal
*/
export declare function parseAndVisit(source: string): LuvioDocumentNode;
/**
* Add metaschema annotations to their corresponding custom notation counterparts
* @module metaschemaMapper
*/
import type { DocumentNode } from 'graphql/language';
/**
* Accepts a document node and replaces the legacy custom directives with metaschema directives "in-place"
* @param doc
*/
export declare function metaschemaMapper(doc: DocumentNode): void;
import type { OperationDefinitionNode } from 'graphql/language';
import type { LuvioOperationDefinitionNode } from '../ast';
export declare function transform(node: OperationDefinitionNode): LuvioOperationDefinitionNode;
import type { OperationDefinitionNode } from 'graphql/language';
import type { LuvioOperationDefinitionNode } from '../../ast';
export interface TransformState {
variablesUsed: Record<string, true>;
}
export declare function transform(node: OperationDefinitionNode): LuvioOperationDefinitionNode;
import type { TypeNode } from 'graphql/language';
import type { LuvioTypeNode } from './ast';
export declare function transform(node: TypeNode): LuvioTypeNode;
declare const isArray: (arg: any) => arg is any[];
declare const create: {
(o: object | null): any;
(o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any;
}, keys: {
(o: object): string[];
(o: {}): string[];
};
export { isArray as ArrayIsArray, keys as ObjectKeys, create as ObjectCreate, };
import type { ValueNode } from 'graphql/language';
import type { LuvioValueNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: ValueNode, transformState: TransformState): LuvioValueNode;
import type { VariableDefinitionNode } from 'graphql/language';
import type { LuvioVariableDefinitionNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(variableDefinitions: VariableDefinitionNode, transformState: TransformState): LuvioVariableDefinitionNode;
import type { ASTNode } from 'graphql/language';
import type { LuvioSelectionNode } from './ast';
import type { TransformState } from './operation/query';
export declare function selectionSetVisitor(ast: ASTNode, luvioSelectionPath: LuvioSelectionNode[], transformState: TransformState): void;

Sorry, the diff of this file is too big to display

import type { ArgumentNode } from 'graphql/language';
import type { LuvioArgumentNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: ArgumentNode, transformState: TransformState): LuvioArgumentNode;
import type { DocumentNode, OperationDefinitionNode, FieldNode, ArgumentNode, IntValueNode, ListValueNode, ObjectValueNode, FloatValueNode, StringValueNode, BooleanValueNode, NullValueNode, EnumValueNode, VariableNode, DirectiveNode, VariableDefinitionNode, NonNullTypeNode, ListTypeNode, NamedTypeNode, FragmentSpreadNode, InlineFragmentNode, FragmentDefinitionNode, DefinitionNode, TypeNode } from 'graphql/language';
/**
* Luvio specific custom GraphQL AST
*
* - Omit Location
* - flatten NameNode for easier value access
* - Add luvioSelections for custom selections
* - LuvioSelectionCustomFieldNode for fields with custom client side directives
*/
export interface LuvioDocumentNode extends Omit<DocumentNode, 'loc' | 'definitions'> {
definitions: LuvioDefinitionNode[];
}
export type LuvioDefinitionNode = LuvioOperationDefinitionNode | LuvioFragmentDefinitionNode;
export interface LuvioOperationDefinitionNode extends Omit<OperationDefinitionNode, 'loc' | 'name' | 'variableDefinitions' | 'directives' | 'selectionSet'> {
name?: string;
variableDefinitions?: LuvioVariableDefinitionNode[];
directives?: LuvioDirectiveNode[];
luvioSelections: LuvioSelectionNode[];
}
export interface LuvioVariableDefinitionNode extends Omit<VariableDefinitionNode, 'loc' | 'variable' | 'type' | 'defaultValue' | 'directives'> {
variable: LuvioVariableNode;
type: LuvioTypeNode;
defaultValue?: LuvioValueNode;
directives?: LuvioDirectiveNode[];
}
export interface LuvioVariableNode extends Omit<VariableNode, 'loc' | 'name'> {
name: string;
}
export type LuvioSelectionNode = LuvioFieldNode | LuvioFragmentSpreadNode | LuvioInlineFragmentNode;
export type LuvioFieldNode = LuvioSelectionScalarFieldNode | LuvioSelectionObjectFieldNode | LuvioSelectionCustomFieldNode;
export interface LuvioArgumentNode extends Omit<ArgumentNode, 'loc' | 'name' | 'value'> {
name: string;
value: LuvioValueNode;
}
export interface LuvioFragmentSpreadNode extends Omit<FragmentSpreadNode, 'loc' | 'name' | 'directives'> {
name: string;
directives?: LuvioDirectiveNode[];
}
export interface LuvioInlineFragmentNode extends Omit<InlineFragmentNode, 'loc' | 'typeCondition' | 'directives' | 'selectionSet'> {
typeCondition?: LuvioNamedTypeNode;
directives?: LuvioDirectiveNode[];
luvioSelections: LuvioSelectionNode[];
}
export interface LuvioFragmentDefinitionNode extends Omit<FragmentDefinitionNode, 'loc' | 'name' | 'variableDefinitions' | 'typeCondition' | 'directives' | 'selectionSet'> {
name: string;
variableDefinitions?: LuvioVariableDefinitionNode[];
typeCondition: LuvioNamedTypeNode;
directives?: LuvioDirectiveNode[];
luvioSelections: LuvioSelectionNode[];
}
export type LuvioValueNode = LuvioVariableNode | IntValueNode | FloatValueNode | StringValueNode | BooleanValueNode | NullValueNode | EnumValueNode | LuvioListValueNode | LuvioObjectValueNode;
export interface LuvioListValueNode extends Omit<ListValueNode, 'loc' | 'values'> {
values: LuvioValueNode[];
}
export interface LuvioObjectValueNode extends Omit<ObjectValueNode, 'loc' | 'fields'> {
fields: {
[name: string]: LuvioValueNode;
};
}
export interface LuvioDirectiveNode extends Omit<DirectiveNode, 'loc' | 'name' | 'arguments'> {
name: string;
arguments?: LuvioArgumentNode[];
}
export type LuvioTypeNode = LuvioNamedTypeNode | LuvioListTypeNode | LuvioNonNullTypeNode;
export interface LuvioNamedTypeNode extends Omit<NamedTypeNode, 'loc' | 'name'> {
name: string;
}
export interface LuvioListTypeNode extends Omit<ListTypeNode, 'loc' | 'type'> {
type: LuvioTypeNode;
}
export interface LuvioNonNullTypeNode extends Omit<NonNullTypeNode, 'loc' | 'type'> {
type: LuvioNamedTypeNode | LuvioListTypeNode;
}
export interface LuvioSelectionScalarFieldNode extends Omit<FieldNode, 'kind' | 'loc' | 'alias' | 'name' | 'arguments' | 'directives' | 'selectionSet'> {
kind: 'ScalarFieldSelection';
alias?: string;
name: string;
}
export interface LuvioSelectionObjectFieldNode extends Omit<FieldNode, 'kind' | 'loc' | 'alias' | 'name' | 'arguments' | 'directives' | 'selectionSet'> {
kind: 'ObjectFieldSelection';
alias?: string;
name: string;
arguments?: LuvioArgumentNode[];
directives?: LuvioDirectiveNode[];
luvioSelections?: LuvioSelectionNode[];
}
export interface LuvioSelectionCustomFieldNode extends Omit<LuvioSelectionObjectFieldNode, 'kind'> {
kind: 'CustomFieldSelection';
type: string;
}
export declare function isOperationDefinitionNode(input: DefinitionNode): input is OperationDefinitionNode;
export declare function isFragmentDefinitionNode(input: DefinitionNode): input is FragmentDefinitionNode;
export declare function isNamedTypeNode(input: TypeNode): input is NamedTypeNode;
export declare function isListTypeNode(input: TypeNode): input is ListTypeNode;
export declare function isNonNullTypeNode(input: TypeNode): input is NonNullTypeNode;
export declare const CUSTOM_DIRECTIVE_CONNECTION = "connection";
export declare const CUSTOM_DIRECTIVE_RESOURCE = "resource";
export declare const NODE_KIND_CUSTOM_FIELD_SELECTION = "CustomFieldSelection";
export declare const NODE_KIND_FIELD = "Field";
export declare const NODE_KIND_FRAGMENT_SPREAD = "FragmentSpread";
export declare const NODE_KIND_INLINE_FRAGMENT = "InlineFragment";
export declare const NODE_KIND_LIST_TYPE = "ListType";
export declare const NODE_KIND_NAMED_TYPE = "NamedType";
export declare const NODE_KIND_NON_NULL_TYPE = "NonNullType";
export declare const NODE_KIND_OBJECT_FIELD_SELECTION = "ObjectFieldSelection";
export declare const NODE_KIND_SCALAR_FIELD_SELECTION = "ScalarFieldSelection";
export declare const NODE_TYPE_CONNECTION = "Connection";
import type { DirectiveNode } from 'graphql/language';
import type { LuvioDirectiveNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: DirectiveNode, transformState: TransformState): LuvioDirectiveNode;
export declare function isCustomDirective(node: DirectiveNode): boolean;
import type { DocumentNode } from 'graphql/language';
import type { LuvioDocumentNode } from './ast';
export declare function transform(root: DocumentNode): LuvioDocumentNode;
import type { FieldNode } from 'graphql/language';
import type { LuvioFieldNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: FieldNode, transformState: TransformState): LuvioFieldNode;
import type { FragmentSpreadNode } from 'graphql/language';
import type { LuvioFragmentSpreadNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: FragmentSpreadNode, transformState: TransformState): LuvioFragmentSpreadNode;
import type { FragmentDefinitionNode } from 'graphql/language';
import type { LuvioFragmentDefinitionNode } from './ast';
export declare function transform(node: FragmentDefinitionNode): LuvioFragmentDefinitionNode;
/**
* Exposes a tagged template literal to parse graphql operation string
* "gql" is the only publicly exposed method
* @module gql
*/
import type { DefinitionNode, DocumentNode } from 'graphql/language';
export type AstResolver = (astReference: any) => DocumentNode | undefined;
/**
* we should look into optimizing this before it turns into a memory hog
* weakmaps, or limiting the size of the cache, or something
*/
export declare const docMap: Map<string, DocumentNode>;
/**
* Opaque reference map to return keys to userland
* As a user shouldn't have access to the Document
*/
export declare const referenceMap: WeakMap<Object, DocumentNode>;
/**
* Returns document node if cached or else update the cache and return the document node
* @param inputString - operation string
* @returns DocumentNode
*/
export declare function parseDocument(inputString: string): DocumentNode | null;
export declare function updateReferenceMapWithKnownKey(doc: DocumentNode, key: object): void;
export declare function updateReferenceMapAndGetKey(doc: DocumentNode): object;
/**
* Insert string and fragment substitutions with the actual nodes
* @param inputString
* @param substitutions - string | fragment DocumentNode
* @returns { operation string, fragment docs [] }
*/
export declare function processSubstitutions(inputString: ReadonlyArray<string>, substitutions: (string | object)[]): {
operationString: string;
fragments: DefinitionNode[];
} | null;
/**
*
* @param astReference - ast reference passed from user land
*/
export declare const astResolver: AstResolver;
/**
*
* @param literals - operation query string
* @param subs - all other substitutions
* @returns an opaque reference to the parsed document
*/
export declare function gql(literals: ReadonlyArray<string> | string, ...subs: (string | object)[]): object | null;
import type { InlineFragmentNode } from 'graphql/language';
import type { LuvioInlineFragmentNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: InlineFragmentNode, transformState: TransformState): LuvioInlineFragmentNode;
import { GraphQLSchema, GraphQLScalarType, execute, buildSchema, extendSchema, getNamedType, isObjectType, validateSchema, NameNode, GraphQLError, ObjectValueNode, defaultFieldResolver, type ASTNode, type DefinitionNode } from 'graphql';
import { buildASTSchema } from 'graphql/utilities';
import { LuvioDocumentNode, LuvioArgumentNode, LuvioDefinitionNode, LuvioObjectValueNode, LuvioOperationDefinitionNode, LuvioSelectionCustomFieldNode, LuvioSelectionNode, LuvioSelectionObjectFieldNode, LuvioSelectionScalarFieldNode, LuvioValueNode, LuvioFieldNode, LuvioVariableDefinitionNode, LuvioVariableNode, LuvioNamedTypeNode, LuvioListTypeNode, LuvioListValueNode, LuvioTypeNode } from './ast';
export type { GraphQLObjectType, GraphQLInterfaceType, GraphQLDirective, GraphQLUnionType, GraphQLNamedType, } from 'graphql/type';
export type { ListTypeNode, BooleanValueNode, EnumTypeDefinitionNode, FieldDefinitionNode, FloatValueNode, InterfaceTypeDefinitionNode, IntValueNode, NamedTypeNode, ObjectTypeDefinitionNode, StringValueNode, TypeNode, UnionTypeDefinitionNode, DocumentNode, OperationDefinitionNode, FieldNode, ArgumentNode, ValueNode, SelectionNode, SelectionSetNode, FragmentDefinitionNode, DirectiveNode, ObjectFieldNode, ScalarTypeDefinitionNode, InputObjectTypeDefinitionNode, InlineFragmentNode, FragmentSpreadNode, VariableDefinitionNode, ListValueNode, VariableNode, } from 'graphql/language';
export { ASTVisitor, parse, Kind, print, visit } from 'graphql/language';
export { isScalarType } from 'graphql/type';
export { stripIgnoredCharacters } from 'graphql/utilities';
export { gql, astResolver } from './gql';
export type { AstResolver } from './gql';
/**
* @deprecated - Schema-backed adapters will use standard graphql types re-exported from @luvio/graphql
*/
export { LuvioDocumentNode, LuvioArgumentNode, LuvioDefinitionNode, LuvioObjectValueNode, LuvioOperationDefinitionNode, LuvioSelectionCustomFieldNode, LuvioSelectionNode, LuvioSelectionObjectFieldNode, LuvioSelectionScalarFieldNode, LuvioValueNode, LuvioFieldNode, LuvioVariableDefinitionNode, LuvioVariableNode, LuvioNamedTypeNode, LuvioListTypeNode, LuvioListValueNode, LuvioTypeNode, GraphQLSchema, GraphQLScalarType, NameNode, GraphQLError, ASTNode, DefinitionNode, ObjectValueNode, buildASTSchema, execute, buildSchema, extendSchema, getNamedType, isObjectType, validateSchema, defaultFieldResolver, };
/**
* @deprecated In favor of gql tagged template literal
*/
export declare function parseAndVisit(source: string): LuvioDocumentNode;
/**
* Add metaschema annotations to their corresponding custom notation counterparts
* @module metaschemaMapper
*/
import type { DocumentNode } from 'graphql/language';
/**
* Accepts a document node and replaces the legacy custom directives with metaschema directives "in-place"
* @param doc
*/
export declare function metaschemaMapper(doc: DocumentNode): void;
import type { OperationDefinitionNode } from 'graphql/language';
import type { LuvioOperationDefinitionNode } from '../ast';
export declare function transform(node: OperationDefinitionNode): LuvioOperationDefinitionNode;
import type { OperationDefinitionNode } from 'graphql/language';
import type { LuvioOperationDefinitionNode } from '../../ast';
export interface TransformState {
variablesUsed: Record<string, true>;
}
export declare function transform(node: OperationDefinitionNode): LuvioOperationDefinitionNode;
import type { TypeNode } from 'graphql/language';
import type { LuvioTypeNode } from './ast';
export declare function transform(node: TypeNode): LuvioTypeNode;
declare const isArray: (arg: any) => arg is any[];
declare const create: {
(o: object | null): any;
(o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any;
}, keys: {
(o: object): string[];
(o: {}): string[];
};
export { isArray as ArrayIsArray, keys as ObjectKeys, create as ObjectCreate, };
import type { ValueNode } from 'graphql/language';
import type { LuvioValueNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(node: ValueNode, transformState: TransformState): LuvioValueNode;
import type { VariableDefinitionNode } from 'graphql/language';
import type { LuvioVariableDefinitionNode } from './ast';
import type { TransformState } from './operation/query';
export declare function transform(variableDefinitions: VariableDefinitionNode, transformState: TransformState): LuvioVariableDefinitionNode;
import type { ASTNode } from 'graphql/language';
import type { LuvioSelectionNode } from './ast';
import type { TransformState } from './operation/query';
export declare function selectionSetVisitor(ast: ASTNode, luvioSelectionPath: LuvioSelectionNode[], transformState: TransformState): void;