@graphql-tools/optimize 1.2.1 → 1.3.0-alpha-80e1b48b.0

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.
package/cjs/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./optimize.js"), exports);
5
+ tslib_1.__exportStar(require("./types.js"), exports);
6
+ tslib_1.__exportStar(require("./optimizers/remove-description.js"), exports);
7
+ tslib_1.__exportStar(require("./optimizers/remove-empty-nodes.js"), exports);
8
+ tslib_1.__exportStar(require("./optimizers/remove-loc.js"), exports);
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optimizeDocumentNode = void 0;
4
+ const remove_description_js_1 = require("./optimizers/remove-description.js");
5
+ const remove_empty_nodes_js_1 = require("./optimizers/remove-empty-nodes.js");
6
+ const remove_loc_js_1 = require("./optimizers/remove-loc.js");
7
+ const DEFAULT_OPTIMIZERS = [remove_description_js_1.removeDescriptions, remove_empty_nodes_js_1.removeEmptyNodes, remove_loc_js_1.removeLoc];
8
+ /**
9
+ * This method accept a DocumentNode and applies the optimizations you wish to use.
10
+ * You can override the default ones or provide you own optimizers if you wish.
11
+ *
12
+ * @param node document to optimize
13
+ * @param optimizers optional, list of optimizer to use
14
+ */
15
+ function optimizeDocumentNode(node, optimizers = DEFAULT_OPTIMIZERS) {
16
+ let resultNode = node;
17
+ for (const optimizer of optimizers) {
18
+ if (typeof optimizer !== 'function') {
19
+ throw new Error(`Optimizer provided for "optimizeDocumentNode" must be a function!`);
20
+ }
21
+ const result = optimizer(resultNode);
22
+ if (!result) {
23
+ throw new Error(`Optimizer provided for "optimizeDocumentNode" returned empty value instead of modified "DocumentNode"!`);
24
+ }
25
+ resultNode = result;
26
+ }
27
+ return resultNode;
28
+ }
29
+ exports.optimizeDocumentNode = optimizeDocumentNode;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeDescriptions = void 0;
4
+ const graphql_1 = require("graphql");
5
+ /**
6
+ * This optimizer removes "description" field from schema AST definitions.
7
+ * @param input
8
+ */
9
+ const removeDescriptions = input => {
10
+ function transformNode(node) {
11
+ if (node.description) {
12
+ node.description = undefined;
13
+ }
14
+ return node;
15
+ }
16
+ return (0, graphql_1.visit)(input, {
17
+ ScalarTypeDefinition: transformNode,
18
+ ObjectTypeDefinition: transformNode,
19
+ InterfaceTypeDefinition: transformNode,
20
+ UnionTypeDefinition: transformNode,
21
+ EnumTypeDefinition: transformNode,
22
+ EnumValueDefinition: transformNode,
23
+ InputObjectTypeDefinition: transformNode,
24
+ InputValueDefinition: transformNode,
25
+ FieldDefinition: transformNode,
26
+ });
27
+ };
28
+ exports.removeDescriptions = removeDescriptions;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeEmptyNodes = void 0;
4
+ const graphql_1 = require("graphql");
5
+ /**
6
+ * This optimizer removes empty nodes/arrays (directives/argument/variableDefinitions) from a given DocumentNode of operation/fragment.
7
+ * @param input
8
+ */
9
+ const removeEmptyNodes = input => {
10
+ function transformNode(node) {
11
+ let resultNode = node;
12
+ if (resultNode.directives && Array.isArray(resultNode.directives) && resultNode.directives.length === 0) {
13
+ const { directives, ...rest } = resultNode;
14
+ resultNode = rest;
15
+ }
16
+ if (resultNode.arguments && Array.isArray(resultNode.arguments) && resultNode.arguments.length === 0) {
17
+ const { arguments: args, ...rest } = resultNode;
18
+ resultNode = rest;
19
+ }
20
+ if (resultNode.variableDefinitions &&
21
+ Array.isArray(resultNode.variableDefinitions) &&
22
+ resultNode.variableDefinitions.length === 0) {
23
+ const { variableDefinitions, ...rest } = resultNode;
24
+ resultNode = rest;
25
+ }
26
+ return resultNode;
27
+ }
28
+ return (0, graphql_1.visit)(input, {
29
+ // Request/Operation:
30
+ FragmentDefinition: transformNode,
31
+ OperationDefinition: transformNode,
32
+ VariableDefinition: transformNode,
33
+ Field: transformNode,
34
+ FragmentSpread: transformNode,
35
+ InlineFragment: transformNode,
36
+ Name: transformNode,
37
+ Directive: transformNode,
38
+ // Schema Definition:
39
+ SchemaDefinition: transformNode,
40
+ ScalarTypeDefinition: transformNode,
41
+ ObjectTypeDefinition: transformNode,
42
+ InterfaceTypeDefinition: transformNode,
43
+ UnionTypeDefinition: transformNode,
44
+ EnumTypeDefinition: transformNode,
45
+ EnumValueDefinition: transformNode,
46
+ InputObjectTypeDefinition: transformNode,
47
+ FieldDefinition: transformNode,
48
+ InputValueDefinition: transformNode,
49
+ // Schema Extension:
50
+ SchemaExtension: transformNode,
51
+ ScalarTypeExtension: transformNode,
52
+ ObjectTypeExtension: transformNode,
53
+ InterfaceTypeExtension: transformNode,
54
+ UnionTypeExtension: transformNode,
55
+ EnumTypeExtension: transformNode,
56
+ InputObjectTypeExtension: transformNode,
57
+ });
58
+ };
59
+ exports.removeEmptyNodes = removeEmptyNodes;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeLoc = void 0;
4
+ const graphql_1 = require("graphql");
5
+ /**
6
+ * This optimizer removes "loc" fields
7
+ * @param input
8
+ */
9
+ const removeLoc = input => {
10
+ function transformNode(node) {
11
+ if (node.loc && typeof node.loc === 'object') {
12
+ const { loc, ...rest } = node;
13
+ return rest;
14
+ }
15
+ return node;
16
+ }
17
+ return (0, graphql_1.visit)(input, { enter: transformNode });
18
+ };
19
+ exports.removeLoc = removeLoc;
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
package/cjs/types.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/esm/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from './optimize.js';
2
+ export * from './types.js';
3
+ export * from './optimizers/remove-description.js';
4
+ export * from './optimizers/remove-empty-nodes.js';
5
+ export * from './optimizers/remove-loc.js';
@@ -0,0 +1,25 @@
1
+ import { removeDescriptions } from './optimizers/remove-description.js';
2
+ import { removeEmptyNodes } from './optimizers/remove-empty-nodes.js';
3
+ import { removeLoc } from './optimizers/remove-loc.js';
4
+ const DEFAULT_OPTIMIZERS = [removeDescriptions, removeEmptyNodes, removeLoc];
5
+ /**
6
+ * This method accept a DocumentNode and applies the optimizations you wish to use.
7
+ * You can override the default ones or provide you own optimizers if you wish.
8
+ *
9
+ * @param node document to optimize
10
+ * @param optimizers optional, list of optimizer to use
11
+ */
12
+ export function optimizeDocumentNode(node, optimizers = DEFAULT_OPTIMIZERS) {
13
+ let resultNode = node;
14
+ for (const optimizer of optimizers) {
15
+ if (typeof optimizer !== 'function') {
16
+ throw new Error(`Optimizer provided for "optimizeDocumentNode" must be a function!`);
17
+ }
18
+ const result = optimizer(resultNode);
19
+ if (!result) {
20
+ throw new Error(`Optimizer provided for "optimizeDocumentNode" returned empty value instead of modified "DocumentNode"!`);
21
+ }
22
+ resultNode = result;
23
+ }
24
+ return resultNode;
25
+ }
@@ -0,0 +1,24 @@
1
+ import { visit } from 'graphql';
2
+ /**
3
+ * This optimizer removes "description" field from schema AST definitions.
4
+ * @param input
5
+ */
6
+ export const removeDescriptions = input => {
7
+ function transformNode(node) {
8
+ if (node.description) {
9
+ node.description = undefined;
10
+ }
11
+ return node;
12
+ }
13
+ return visit(input, {
14
+ ScalarTypeDefinition: transformNode,
15
+ ObjectTypeDefinition: transformNode,
16
+ InterfaceTypeDefinition: transformNode,
17
+ UnionTypeDefinition: transformNode,
18
+ EnumTypeDefinition: transformNode,
19
+ EnumValueDefinition: transformNode,
20
+ InputObjectTypeDefinition: transformNode,
21
+ InputValueDefinition: transformNode,
22
+ FieldDefinition: transformNode,
23
+ });
24
+ };
@@ -1,34 +1,9 @@
1
1
  import { visit } from 'graphql';
2
-
3
- /**
4
- * This optimizer removes "description" field from schema AST definitions.
5
- * @param input
6
- */
7
- const removeDescriptions = input => {
8
- function transformNode(node) {
9
- if (node.description) {
10
- node.description = undefined;
11
- }
12
- return node;
13
- }
14
- return visit(input, {
15
- ScalarTypeDefinition: transformNode,
16
- ObjectTypeDefinition: transformNode,
17
- InterfaceTypeDefinition: transformNode,
18
- UnionTypeDefinition: transformNode,
19
- EnumTypeDefinition: transformNode,
20
- EnumValueDefinition: transformNode,
21
- InputObjectTypeDefinition: transformNode,
22
- InputValueDefinition: transformNode,
23
- FieldDefinition: transformNode,
24
- });
25
- };
26
-
27
2
  /**
28
3
  * This optimizer removes empty nodes/arrays (directives/argument/variableDefinitions) from a given DocumentNode of operation/fragment.
29
4
  * @param input
30
5
  */
31
- const removeEmptyNodes = input => {
6
+ export const removeEmptyNodes = input => {
32
7
  function transformNode(node) {
33
8
  let resultNode = node;
34
9
  if (resultNode.directives && Array.isArray(resultNode.directives) && resultNode.directives.length === 0) {
@@ -78,43 +53,3 @@ const removeEmptyNodes = input => {
78
53
  InputObjectTypeExtension: transformNode,
79
54
  });
80
55
  };
81
-
82
- /**
83
- * This optimizer removes "loc" fields
84
- * @param input
85
- */
86
- const removeLoc = input => {
87
- function transformNode(node) {
88
- if (node.loc && typeof node.loc === 'object') {
89
- const { loc, ...rest } = node;
90
- return rest;
91
- }
92
- return node;
93
- }
94
- return visit(input, { enter: transformNode });
95
- };
96
-
97
- const DEFAULT_OPTIMIZERS = [removeDescriptions, removeEmptyNodes, removeLoc];
98
- /**
99
- * This method accept a DocumentNode and applies the optimizations you wish to use.
100
- * You can override the default ones or provide you own optimizers if you wish.
101
- *
102
- * @param node document to optimize
103
- * @param optimizers optional, list of optimizer to use
104
- */
105
- function optimizeDocumentNode(node, optimizers = DEFAULT_OPTIMIZERS) {
106
- let resultNode = node;
107
- for (const optimizer of optimizers) {
108
- if (typeof optimizer !== 'function') {
109
- throw new Error(`Optimizer provided for "optimizeDocumentNode" must be a function!`);
110
- }
111
- const result = optimizer(resultNode);
112
- if (!result) {
113
- throw new Error(`Optimizer provided for "optimizeDocumentNode" returned empty value instead of modified "DocumentNode"!`);
114
- }
115
- resultNode = result;
116
- }
117
- return resultNode;
118
- }
119
-
120
- export { optimizeDocumentNode, removeDescriptions, removeEmptyNodes, removeLoc };
@@ -0,0 +1,15 @@
1
+ import { visit } from 'graphql';
2
+ /**
3
+ * This optimizer removes "loc" fields
4
+ * @param input
5
+ */
6
+ export const removeLoc = input => {
7
+ function transformNode(node) {
8
+ if (node.loc && typeof node.loc === 'object') {
9
+ const { loc, ...rest } = node;
10
+ return rest;
11
+ }
12
+ return node;
13
+ }
14
+ return visit(input, { enter: transformNode });
15
+ };
package/esm/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphql-tools/optimize",
3
- "version": "1.2.1",
3
+ "version": "1.3.0-alpha-80e1b48b.0",
4
4
  "description": "A set of utils for faster development of GraphQL tools",
5
5
  "sideEffects": false,
6
6
  "peerDependencies": {
@@ -15,21 +15,42 @@
15
15
  "directory": "packages/optimize"
16
16
  },
17
17
  "license": "MIT",
18
- "main": "index.js",
19
- "module": "index.mjs",
20
- "typings": "index.d.ts",
18
+ "main": "cjs/index.js",
19
+ "module": "esm/index.js",
20
+ "typings": "typings/index.d.ts",
21
21
  "typescript": {
22
- "definition": "index.d.ts"
22
+ "definition": "typings/index.d.ts"
23
23
  },
24
+ "type": "module",
24
25
  "exports": {
25
26
  ".": {
26
- "require": "./index.js",
27
- "import": "./index.mjs"
27
+ "require": {
28
+ "types": "./typings/index.d.ts",
29
+ "default": "./cjs/index.js"
30
+ },
31
+ "import": {
32
+ "types": "./typings/index.d.ts",
33
+ "default": "./esm/index.js"
34
+ },
35
+ "default": {
36
+ "types": "./typings/index.d.ts",
37
+ "default": "./esm/index.js"
38
+ }
28
39
  },
29
40
  "./*": {
30
- "require": "./*.js",
31
- "import": "./*.mjs"
41
+ "require": {
42
+ "types": "./typings/*.d.ts",
43
+ "default": "./cjs/*.js"
44
+ },
45
+ "import": {
46
+ "types": "./typings/*.d.ts",
47
+ "default": "./esm/*.js"
48
+ },
49
+ "default": {
50
+ "types": "./typings/*.d.ts",
51
+ "default": "./esm/*.js"
52
+ }
32
53
  },
33
54
  "./package.json": "./package.json"
34
55
  }
35
- }
56
+ }
@@ -0,0 +1,5 @@
1
+ export * from './optimize.js';
2
+ export * from './types.js';
3
+ export * from './optimizers/remove-description.js';
4
+ export * from './optimizers/remove-empty-nodes.js';
5
+ export * from './optimizers/remove-loc.js';
@@ -1,5 +1,5 @@
1
1
  import { DocumentNode } from 'graphql';
2
- import { DocumentOptimizer } from './types';
2
+ import { DocumentOptimizer } from './types.js';
3
3
  /**
4
4
  * This method accept a DocumentNode and applies the optimizations you wish to use.
5
5
  * You can override the default ones or provide you own optimizers if you wish.
@@ -1,4 +1,4 @@
1
- import { DocumentOptimizer } from '../types';
1
+ import { DocumentOptimizer } from '../types.js';
2
2
  /**
3
3
  * This optimizer removes "description" field from schema AST definitions.
4
4
  * @param input
@@ -1,4 +1,4 @@
1
- import { DocumentOptimizer } from '../types';
1
+ import { DocumentOptimizer } from '../types.js';
2
2
  /**
3
3
  * This optimizer removes empty nodes/arrays (directives/argument/variableDefinitions) from a given DocumentNode of operation/fragment.
4
4
  * @param input
@@ -1,4 +1,4 @@
1
- import { DocumentOptimizer } from '../types';
1
+ import { DocumentOptimizer } from '../types.js';
2
2
  /**
3
3
  * This optimizer removes "loc" fields
4
4
  * @param input
File without changes
package/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export * from './optimize';
2
- export * from './types';
3
- export * from './optimizers/remove-description';
4
- export * from './optimizers/remove-empty-nodes';
5
- export * from './optimizers/remove-loc';
package/index.js DELETED
@@ -1,127 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- const graphql = require('graphql');
6
-
7
- /**
8
- * This optimizer removes "description" field from schema AST definitions.
9
- * @param input
10
- */
11
- const removeDescriptions = input => {
12
- function transformNode(node) {
13
- if (node.description) {
14
- node.description = undefined;
15
- }
16
- return node;
17
- }
18
- return graphql.visit(input, {
19
- ScalarTypeDefinition: transformNode,
20
- ObjectTypeDefinition: transformNode,
21
- InterfaceTypeDefinition: transformNode,
22
- UnionTypeDefinition: transformNode,
23
- EnumTypeDefinition: transformNode,
24
- EnumValueDefinition: transformNode,
25
- InputObjectTypeDefinition: transformNode,
26
- InputValueDefinition: transformNode,
27
- FieldDefinition: transformNode,
28
- });
29
- };
30
-
31
- /**
32
- * This optimizer removes empty nodes/arrays (directives/argument/variableDefinitions) from a given DocumentNode of operation/fragment.
33
- * @param input
34
- */
35
- const removeEmptyNodes = input => {
36
- function transformNode(node) {
37
- let resultNode = node;
38
- if (resultNode.directives && Array.isArray(resultNode.directives) && resultNode.directives.length === 0) {
39
- const { directives, ...rest } = resultNode;
40
- resultNode = rest;
41
- }
42
- if (resultNode.arguments && Array.isArray(resultNode.arguments) && resultNode.arguments.length === 0) {
43
- const { arguments: args, ...rest } = resultNode;
44
- resultNode = rest;
45
- }
46
- if (resultNode.variableDefinitions &&
47
- Array.isArray(resultNode.variableDefinitions) &&
48
- resultNode.variableDefinitions.length === 0) {
49
- const { variableDefinitions, ...rest } = resultNode;
50
- resultNode = rest;
51
- }
52
- return resultNode;
53
- }
54
- return graphql.visit(input, {
55
- // Request/Operation:
56
- FragmentDefinition: transformNode,
57
- OperationDefinition: transformNode,
58
- VariableDefinition: transformNode,
59
- Field: transformNode,
60
- FragmentSpread: transformNode,
61
- InlineFragment: transformNode,
62
- Name: transformNode,
63
- Directive: transformNode,
64
- // Schema Definition:
65
- SchemaDefinition: transformNode,
66
- ScalarTypeDefinition: transformNode,
67
- ObjectTypeDefinition: transformNode,
68
- InterfaceTypeDefinition: transformNode,
69
- UnionTypeDefinition: transformNode,
70
- EnumTypeDefinition: transformNode,
71
- EnumValueDefinition: transformNode,
72
- InputObjectTypeDefinition: transformNode,
73
- FieldDefinition: transformNode,
74
- InputValueDefinition: transformNode,
75
- // Schema Extension:
76
- SchemaExtension: transformNode,
77
- ScalarTypeExtension: transformNode,
78
- ObjectTypeExtension: transformNode,
79
- InterfaceTypeExtension: transformNode,
80
- UnionTypeExtension: transformNode,
81
- EnumTypeExtension: transformNode,
82
- InputObjectTypeExtension: transformNode,
83
- });
84
- };
85
-
86
- /**
87
- * This optimizer removes "loc" fields
88
- * @param input
89
- */
90
- const removeLoc = input => {
91
- function transformNode(node) {
92
- if (node.loc && typeof node.loc === 'object') {
93
- const { loc, ...rest } = node;
94
- return rest;
95
- }
96
- return node;
97
- }
98
- return graphql.visit(input, { enter: transformNode });
99
- };
100
-
101
- const DEFAULT_OPTIMIZERS = [removeDescriptions, removeEmptyNodes, removeLoc];
102
- /**
103
- * This method accept a DocumentNode and applies the optimizations you wish to use.
104
- * You can override the default ones or provide you own optimizers if you wish.
105
- *
106
- * @param node document to optimize
107
- * @param optimizers optional, list of optimizer to use
108
- */
109
- function optimizeDocumentNode(node, optimizers = DEFAULT_OPTIMIZERS) {
110
- let resultNode = node;
111
- for (const optimizer of optimizers) {
112
- if (typeof optimizer !== 'function') {
113
- throw new Error(`Optimizer provided for "optimizeDocumentNode" must be a function!`);
114
- }
115
- const result = optimizer(resultNode);
116
- if (!result) {
117
- throw new Error(`Optimizer provided for "optimizeDocumentNode" returned empty value instead of modified "DocumentNode"!`);
118
- }
119
- resultNode = result;
120
- }
121
- return resultNode;
122
- }
123
-
124
- exports.optimizeDocumentNode = optimizeDocumentNode;
125
- exports.removeDescriptions = removeDescriptions;
126
- exports.removeEmptyNodes = removeEmptyNodes;
127
- exports.removeLoc = removeLoc;