@luvio/graphql-parser 0.126.0 → 0.126.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/argument-node.d.ts +4 -0
  2. package/dist/ast.d.ts +95 -0
  3. package/dist/constants.d.ts +12 -0
  4. package/dist/directive-node.d.ts +5 -0
  5. package/dist/document.d.ts +3 -0
  6. package/dist/field-node.d.ts +4 -0
  7. package/dist/fragment-spread-node.d.ts +4 -0
  8. package/dist/fragment.d.ts +3 -0
  9. package/dist/gql.d.ts +51 -0
  10. package/dist/inline-fragment-node.d.ts +4 -0
  11. package/dist/luvioGraphqlParser.js +12945 -0
  12. package/dist/luvioGraphqlParser.mjs +12923 -0
  13. package/dist/main.d.ts +18 -0
  14. package/dist/metaschema.d.ts +10 -0
  15. package/dist/operation/index.d.ts +3 -0
  16. package/dist/operation/query/index.d.ts +6 -0
  17. package/dist/type-node.d.ts +3 -0
  18. package/dist/util/language.d.ts +9 -0
  19. package/dist/value-node.d.ts +4 -0
  20. package/dist/variable-definition.d.ts +4 -0
  21. package/dist/visitor.d.ts +4 -0
  22. package/package.json +4 -1
  23. package/babel.config.js +0 -1
  24. package/jest.config.js +0 -8
  25. package/project.json +0 -7
  26. package/rollup.config.js +0 -24
  27. package/scripts/cli.mjs +0 -18
  28. package/src/__tests__/ast.json +0 -403
  29. package/src/__tests__/ast.spec.ts +0 -109
  30. package/src/__tests__/astNoLoc.json +0 -147
  31. package/src/__tests__/gql.spec.ts +0 -665
  32. package/src/__tests__/main.spec.ts +0 -651
  33. package/src/__tests__/metaschema.spec.ts +0 -230
  34. package/src/__tests__/type-node.spec.ts +0 -82
  35. package/src/argument-node.ts +0 -18
  36. package/src/ast.ts +0 -200
  37. package/src/constants.ts +0 -14
  38. package/src/directive-node.ts +0 -36
  39. package/src/document.ts +0 -29
  40. package/src/field-node.ts +0 -72
  41. package/src/fragment-spread-node.ts +0 -28
  42. package/src/fragment.ts +0 -46
  43. package/src/gql.ts +0 -222
  44. package/src/inline-fragment-node.ts +0 -31
  45. package/src/main.ts +0 -134
  46. package/src/metaschema.ts +0 -162
  47. package/src/operation/index.ts +0 -12
  48. package/src/operation/query/index.ts +0 -78
  49. package/src/type-node.ts +0 -40
  50. package/src/util/language.ts +0 -10
  51. package/src/value-node.ts +0 -71
  52. package/src/variable-definition.ts +0 -37
  53. package/src/visitor.ts +0 -63
  54. package/tsconfig.json +0 -9
@@ -0,0 +1,4 @@
1
+ import type { ArgumentNode } from 'graphql/language';
2
+ import type { LuvioArgumentNode } from './ast';
3
+ import type { TransformState } from './operation/query';
4
+ export declare function transform(node: ArgumentNode, transformState: TransformState): LuvioArgumentNode;
package/dist/ast.d.ts ADDED
@@ -0,0 +1,95 @@
1
+ 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';
2
+ /**
3
+ * Luvio specific custom GraphQL AST
4
+ *
5
+ * - Omit Location
6
+ * - flatten NameNode for easier value access
7
+ * - Add luvioSelections for custom selections
8
+ * - LuvioSelectionCustomFieldNode for fields with custom client side directives
9
+ */
10
+ export interface LuvioDocumentNode extends Omit<DocumentNode, 'loc' | 'definitions'> {
11
+ definitions: LuvioDefinitionNode[];
12
+ }
13
+ export declare type LuvioDefinitionNode = LuvioOperationDefinitionNode | LuvioFragmentDefinitionNode;
14
+ export interface LuvioOperationDefinitionNode extends Omit<OperationDefinitionNode, 'loc' | 'name' | 'variableDefinitions' | 'directives' | 'selectionSet'> {
15
+ name?: string;
16
+ variableDefinitions?: LuvioVariableDefinitionNode[];
17
+ directives?: LuvioDirectiveNode[];
18
+ luvioSelections: LuvioSelectionNode[];
19
+ }
20
+ export interface LuvioVariableDefinitionNode extends Omit<VariableDefinitionNode, 'loc' | 'variable' | 'type' | 'defaultValue' | 'directives'> {
21
+ variable: LuvioVariableNode;
22
+ type: LuvioTypeNode;
23
+ defaultValue?: LuvioValueNode;
24
+ directives?: LuvioDirectiveNode[];
25
+ }
26
+ export interface LuvioVariableNode extends Omit<VariableNode, 'loc' | 'name'> {
27
+ name: string;
28
+ }
29
+ export declare type LuvioSelectionNode = LuvioFieldNode | LuvioFragmentSpreadNode | LuvioInlineFragmentNode;
30
+ export declare type LuvioFieldNode = LuvioSelectionScalarFieldNode | LuvioSelectionObjectFieldNode | LuvioSelectionCustomFieldNode;
31
+ export interface LuvioArgumentNode extends Omit<ArgumentNode, 'loc' | 'name' | 'value'> {
32
+ name: string;
33
+ value: LuvioValueNode;
34
+ }
35
+ export interface LuvioFragmentSpreadNode extends Omit<FragmentSpreadNode, 'loc' | 'name' | 'directives'> {
36
+ name: string;
37
+ directives?: LuvioDirectiveNode[];
38
+ }
39
+ export interface LuvioInlineFragmentNode extends Omit<InlineFragmentNode, 'loc' | 'typeCondition' | 'directives' | 'selectionSet'> {
40
+ typeCondition?: LuvioNamedTypeNode;
41
+ directives?: LuvioDirectiveNode[];
42
+ luvioSelections: LuvioSelectionNode[];
43
+ }
44
+ export interface LuvioFragmentDefinitionNode extends Omit<FragmentDefinitionNode, 'loc' | 'name' | 'variableDefinitions' | 'typeCondition' | 'directives' | 'selectionSet'> {
45
+ name: string;
46
+ variableDefinitions?: LuvioVariableDefinitionNode[];
47
+ typeCondition: LuvioNamedTypeNode;
48
+ directives?: LuvioDirectiveNode[];
49
+ luvioSelections: LuvioSelectionNode[];
50
+ }
51
+ export declare type LuvioValueNode = LuvioVariableNode | IntValueNode | FloatValueNode | StringValueNode | BooleanValueNode | NullValueNode | EnumValueNode | LuvioListValueNode | LuvioObjectValueNode;
52
+ export interface LuvioListValueNode extends Omit<ListValueNode, 'loc' | 'values'> {
53
+ values: LuvioValueNode[];
54
+ }
55
+ export interface LuvioObjectValueNode extends Omit<ObjectValueNode, 'loc' | 'fields'> {
56
+ fields: {
57
+ [name: string]: LuvioValueNode;
58
+ };
59
+ }
60
+ export interface LuvioDirectiveNode extends Omit<DirectiveNode, 'loc' | 'name' | 'arguments'> {
61
+ name: string;
62
+ arguments?: LuvioArgumentNode[];
63
+ }
64
+ export declare type LuvioTypeNode = LuvioNamedTypeNode | LuvioListTypeNode | LuvioNonNullTypeNode;
65
+ export interface LuvioNamedTypeNode extends Omit<NamedTypeNode, 'loc' | 'name'> {
66
+ name: string;
67
+ }
68
+ export interface LuvioListTypeNode extends Omit<ListTypeNode, 'loc' | 'type'> {
69
+ type: LuvioTypeNode;
70
+ }
71
+ export interface LuvioNonNullTypeNode extends Omit<NonNullTypeNode, 'loc' | 'type'> {
72
+ type: LuvioNamedTypeNode | LuvioListTypeNode;
73
+ }
74
+ export interface LuvioSelectionScalarFieldNode extends Omit<FieldNode, 'kind' | 'loc' | 'alias' | 'name' | 'arguments' | 'directives' | 'selectionSet'> {
75
+ kind: 'ScalarFieldSelection';
76
+ alias?: string;
77
+ name: string;
78
+ }
79
+ export interface LuvioSelectionObjectFieldNode extends Omit<FieldNode, 'kind' | 'loc' | 'alias' | 'name' | 'arguments' | 'directives' | 'selectionSet'> {
80
+ kind: 'ObjectFieldSelection';
81
+ alias?: string;
82
+ name: string;
83
+ arguments?: LuvioArgumentNode[];
84
+ directives?: LuvioDirectiveNode[];
85
+ luvioSelections?: LuvioSelectionNode[];
86
+ }
87
+ export interface LuvioSelectionCustomFieldNode extends Omit<LuvioSelectionObjectFieldNode, 'kind'> {
88
+ kind: 'CustomFieldSelection';
89
+ type: string;
90
+ }
91
+ export declare function isOperationDefinitionNode(input: DefinitionNode): input is OperationDefinitionNode;
92
+ export declare function isFragmentDefinitionNode(input: DefinitionNode): input is FragmentDefinitionNode;
93
+ export declare function isNamedTypeNode(input: TypeNode): input is NamedTypeNode;
94
+ export declare function isListTypeNode(input: TypeNode): input is ListTypeNode;
95
+ export declare function isNonNullTypeNode(input: TypeNode): input is NonNullTypeNode;
@@ -0,0 +1,12 @@
1
+ export declare const CUSTOM_DIRECTIVE_CONNECTION = "connection";
2
+ export declare const CUSTOM_DIRECTIVE_RESOURCE = "resource";
3
+ export declare const NODE_KIND_CUSTOM_FIELD_SELECTION = "CustomFieldSelection";
4
+ export declare const NODE_KIND_FIELD = "Field";
5
+ export declare const NODE_KIND_FRAGMENT_SPREAD = "FragmentSpread";
6
+ export declare const NODE_KIND_INLINE_FRAGMENT = "InlineFragment";
7
+ export declare const NODE_KIND_LIST_TYPE = "ListType";
8
+ export declare const NODE_KIND_NAMED_TYPE = "NamedType";
9
+ export declare const NODE_KIND_NON_NULL_TYPE = "NonNullType";
10
+ export declare const NODE_KIND_OBJECT_FIELD_SELECTION = "ObjectFieldSelection";
11
+ export declare const NODE_KIND_SCALAR_FIELD_SELECTION = "ScalarFieldSelection";
12
+ export declare const NODE_TYPE_CONNECTION = "Connection";
@@ -0,0 +1,5 @@
1
+ import type { DirectiveNode } from 'graphql/language';
2
+ import type { LuvioDirectiveNode } from './ast';
3
+ import type { TransformState } from './operation/query';
4
+ export declare function transform(node: DirectiveNode, transformState: TransformState): LuvioDirectiveNode;
5
+ export declare function isCustomDirective(node: DirectiveNode): boolean;
@@ -0,0 +1,3 @@
1
+ import type { DocumentNode } from 'graphql/language';
2
+ import type { LuvioDocumentNode } from './ast';
3
+ export declare function transform(root: DocumentNode): LuvioDocumentNode;
@@ -0,0 +1,4 @@
1
+ import type { FieldNode } from 'graphql/language';
2
+ import type { LuvioFieldNode } from './ast';
3
+ import type { TransformState } from './operation/query';
4
+ export declare function transform(node: FieldNode, transformState: TransformState): LuvioFieldNode;
@@ -0,0 +1,4 @@
1
+ import type { FragmentSpreadNode } from 'graphql/language';
2
+ import type { LuvioFragmentSpreadNode } from './ast';
3
+ import type { TransformState } from './operation/query';
4
+ export declare function transform(node: FragmentSpreadNode, transformState: TransformState): LuvioFragmentSpreadNode;
@@ -0,0 +1,3 @@
1
+ import type { FragmentDefinitionNode } from 'graphql/language';
2
+ import type { LuvioFragmentDefinitionNode } from './ast';
3
+ export declare function transform(node: FragmentDefinitionNode): LuvioFragmentDefinitionNode;
package/dist/gql.d.ts ADDED
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Exposes a tagged template literal to parse graphql operation string
3
+ * "gql" is the only publicly exposed method
4
+ * @module gql
5
+ */
6
+ import type { DefinitionNode, DocumentNode } from 'graphql/language';
7
+ export declare type AstResolver = (astReference: any) => DocumentNode | undefined;
8
+ /**
9
+ * we should look into optimizing this before it turns into a memory hog
10
+ * weakmaps, or limiting the size of the cache, or something
11
+ */
12
+ export declare const docMap: Map<string, DocumentNode>;
13
+ /**
14
+ * Opaque reference map to return keys to userland
15
+ * As a user shouldn't have access to the Document
16
+ */
17
+ export declare const referenceMap: WeakMap<Object, DocumentNode>;
18
+ /**
19
+ * Returns document node if cached or else update the cache and return the document node
20
+ * @param inputString - operation string
21
+ * @returns DocumentNode
22
+ */
23
+ export declare function parseDocument(inputString: string): DocumentNode | null;
24
+ export declare function updateReferenceMapWithKnownKey(doc: DocumentNode, key: object): void;
25
+ export declare function updateReferenceMapAndGetKey(doc: DocumentNode): object;
26
+ /**
27
+ * Insert string and fragment substitutions with the actual nodes
28
+ * @param inputString
29
+ * @param substitutions - string | fragment DocumentNode
30
+ * @returns { operation string, fragment docs [] }
31
+ */
32
+ export declare function processSubstitutions(inputString: ReadonlyArray<string>, substitutions: (string | object)[]): {
33
+ operationString: string;
34
+ fragments: DefinitionNode[];
35
+ } | null;
36
+ /**
37
+ * strips Document node and nested definitions of location references
38
+ */
39
+ export declare function stripLocation(node: any): any;
40
+ /**
41
+ *
42
+ * @param astReference - ast reference passed from user land
43
+ */
44
+ export declare const astResolver: AstResolver;
45
+ /**
46
+ *
47
+ * @param literals - operation query string
48
+ * @param subs - all other substitutions
49
+ * @returns an opaque reference to the parsed document
50
+ */
51
+ export declare function gql(literals: ReadonlyArray<string> | string, ...subs: (string | object)[]): object | null;
@@ -0,0 +1,4 @@
1
+ import type { InlineFragmentNode } from 'graphql/language';
2
+ import type { LuvioInlineFragmentNode } from './ast';
3
+ import type { TransformState } from './operation/query';
4
+ export declare function transform(node: InlineFragmentNode, transformState: TransformState): LuvioInlineFragmentNode;