@graphql-tools/import 6.6.18 → 6.7.0-alpha-b76ec274.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/{index.js → cjs/index.js} +75 -79
- package/cjs/package.json +1 -0
- package/{index.mjs → esm/index.js} +30 -33
- package/package.json +32 -11
- package/{index.d.ts → typings/index.d.ts} +0 -0
- package/README.md +0 -5
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const process = require('process');
|
|
12
|
-
const utils = require('@graphql-tools/utils');
|
|
13
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseImportLine = exports.extractImportLines = exports.processImports = exports.extractDependencies = exports.processImport = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const graphql_1 = require("graphql");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const resolve_from_1 = tslib_1.__importDefault(require("resolve-from"));
|
|
9
|
+
const process_1 = require("process");
|
|
10
|
+
const utils_1 = require("@graphql-tools/utils");
|
|
14
11
|
const builtinTypes = ['String', 'Float', 'Int', 'Boolean', 'ID', 'Upload'];
|
|
15
12
|
const builtinDirectives = [
|
|
16
13
|
'deprecated',
|
|
@@ -32,13 +29,13 @@ const IMPORT_DEFAULT_REGEX = /^import\s+('|")(.*)('|");?$/;
|
|
|
32
29
|
* and copies them into the final document.
|
|
33
30
|
* processImport does not merge the typeDefs as designed ( https://github.com/ardatan/graphql-tools/issues/2980#issuecomment-1003692728 )
|
|
34
31
|
*/
|
|
35
|
-
function processImport(filePath, cwd =
|
|
36
|
-
const set = visitFile(filePath,
|
|
32
|
+
function processImport(filePath, cwd = (0, process_1.cwd)(), predefinedImports = {}, visitedFiles = new Map()) {
|
|
33
|
+
const set = visitFile(filePath, (0, path_1.join)(cwd + '/root.graphql'), visitedFiles, predefinedImports);
|
|
37
34
|
const definitionStrSet = new Set();
|
|
38
35
|
let definitionsStr = '';
|
|
39
36
|
for (const defs of set.values()) {
|
|
40
37
|
for (const def of defs) {
|
|
41
|
-
const defStr =
|
|
38
|
+
const defStr = (0, graphql_1.print)(def);
|
|
42
39
|
if (!definitionStrSet.has(defStr)) {
|
|
43
40
|
definitionStrSet.add(defStr);
|
|
44
41
|
definitionsStr += defStr + '\n';
|
|
@@ -46,18 +43,19 @@ function processImport(filePath, cwd = process.cwd(), predefinedImports = {}, vi
|
|
|
46
43
|
}
|
|
47
44
|
}
|
|
48
45
|
return (definitionsStr === null || definitionsStr === void 0 ? void 0 : definitionsStr.length)
|
|
49
|
-
?
|
|
46
|
+
? (0, graphql_1.parse)(new graphql_1.Source(definitionsStr, filePath))
|
|
50
47
|
: {
|
|
51
|
-
kind:
|
|
48
|
+
kind: graphql_1.Kind.DOCUMENT,
|
|
52
49
|
definitions: [],
|
|
53
50
|
};
|
|
54
51
|
}
|
|
52
|
+
exports.processImport = processImport;
|
|
55
53
|
function visitFile(filePath, cwd, visitedFiles, predefinedImports) {
|
|
56
|
-
if (!
|
|
54
|
+
if (!(0, path_1.isAbsolute)(filePath) && !(filePath in predefinedImports)) {
|
|
57
55
|
filePath = resolveFilePath(cwd, filePath);
|
|
58
56
|
}
|
|
59
57
|
if (!visitedFiles.has(filePath)) {
|
|
60
|
-
const fileContent = filePath in predefinedImports ? predefinedImports[filePath] :
|
|
58
|
+
const fileContent = filePath in predefinedImports ? predefinedImports[filePath] : (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
61
59
|
const { importLines, otherLines } = extractImportLines(fileContent);
|
|
62
60
|
const { definitionsByName, dependenciesByDefinitionName } = extractDependencies(filePath, otherLines);
|
|
63
61
|
const fileDefinitionMap = getFileDefinitionMap(definitionsByName, dependenciesByDefinitionName);
|
|
@@ -95,11 +93,11 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports) {
|
|
|
95
93
|
});
|
|
96
94
|
const newDependencySet = new Set();
|
|
97
95
|
switch (field.kind) {
|
|
98
|
-
case
|
|
99
|
-
visitFieldDefinitionNode(field, newDependencySet);
|
|
96
|
+
case graphql_1.Kind.FIELD_DEFINITION:
|
|
97
|
+
visitFieldDefinitionNode(field, newDependencySet, dependenciesByDefinitionName);
|
|
100
98
|
break;
|
|
101
|
-
case
|
|
102
|
-
visitInputValueDefinitionNode(field, newDependencySet);
|
|
99
|
+
case graphql_1.Kind.INPUT_VALUE_DEFINITION:
|
|
100
|
+
visitInputValueDefinitionNode(field, newDependencySet, dependenciesByDefinitionName);
|
|
103
101
|
break;
|
|
104
102
|
}
|
|
105
103
|
newDependencySet.forEach(dependencyName => {
|
|
@@ -155,7 +153,7 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports) {
|
|
|
155
153
|
function extractDependencies(filePath, fileContents) {
|
|
156
154
|
const definitionsByName = new Map();
|
|
157
155
|
const dependenciesByDefinitionName = new Map();
|
|
158
|
-
const { document } =
|
|
156
|
+
const { document } = (0, utils_1.parseGraphQLSDL)(filePath, fileContents, {
|
|
159
157
|
noLocation: true,
|
|
160
158
|
});
|
|
161
159
|
for (const definition of document.definitions) {
|
|
@@ -166,10 +164,11 @@ function extractDependencies(filePath, fileContents) {
|
|
|
166
164
|
dependenciesByDefinitionName,
|
|
167
165
|
};
|
|
168
166
|
}
|
|
167
|
+
exports.extractDependencies = extractDependencies;
|
|
169
168
|
function visitDefinition(definition, definitionsByName, dependenciesByDefinitionName) {
|
|
170
169
|
var _a;
|
|
171
170
|
// TODO: handle queries without names
|
|
172
|
-
if ('name' in definition || definition.kind ===
|
|
171
|
+
if ('name' in definition || definition.kind === graphql_1.Kind.SCHEMA_DEFINITION) {
|
|
173
172
|
const definitionName = 'name' in definition && definition.name ? definition.name.value : 'schema';
|
|
174
173
|
if (!definitionsByName.has(definitionName)) {
|
|
175
174
|
definitionsByName.set(definitionName, new Set());
|
|
@@ -182,52 +181,52 @@ function visitDefinition(definition, definitionsByName, dependenciesByDefinition
|
|
|
182
181
|
dependenciesByDefinitionName.set(definitionName, dependencySet);
|
|
183
182
|
}
|
|
184
183
|
switch (definition.kind) {
|
|
185
|
-
case
|
|
184
|
+
case graphql_1.Kind.OPERATION_DEFINITION:
|
|
186
185
|
visitOperationDefinitionNode(definition, dependencySet);
|
|
187
186
|
break;
|
|
188
|
-
case
|
|
187
|
+
case graphql_1.Kind.FRAGMENT_DEFINITION:
|
|
189
188
|
visitFragmentDefinitionNode(definition, dependencySet);
|
|
190
189
|
break;
|
|
191
|
-
case
|
|
190
|
+
case graphql_1.Kind.OBJECT_TYPE_DEFINITION:
|
|
192
191
|
visitObjectTypeDefinitionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
193
192
|
break;
|
|
194
|
-
case
|
|
193
|
+
case graphql_1.Kind.INTERFACE_TYPE_DEFINITION:
|
|
195
194
|
visitInterfaceTypeDefinitionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
196
195
|
break;
|
|
197
|
-
case
|
|
196
|
+
case graphql_1.Kind.UNION_TYPE_DEFINITION:
|
|
198
197
|
visitUnionTypeDefinitionNode(definition, dependencySet);
|
|
199
198
|
break;
|
|
200
|
-
case
|
|
199
|
+
case graphql_1.Kind.ENUM_TYPE_DEFINITION:
|
|
201
200
|
visitEnumTypeDefinitionNode(definition, dependencySet);
|
|
202
201
|
break;
|
|
203
|
-
case
|
|
204
|
-
visitInputObjectTypeDefinitionNode(definition, dependencySet);
|
|
202
|
+
case graphql_1.Kind.INPUT_OBJECT_TYPE_DEFINITION:
|
|
203
|
+
visitInputObjectTypeDefinitionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
205
204
|
break;
|
|
206
|
-
case
|
|
207
|
-
visitDirectiveDefinitionNode(definition, dependencySet);
|
|
205
|
+
case graphql_1.Kind.DIRECTIVE_DEFINITION:
|
|
206
|
+
visitDirectiveDefinitionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
208
207
|
break;
|
|
209
|
-
case
|
|
208
|
+
case graphql_1.Kind.SCALAR_TYPE_DEFINITION:
|
|
210
209
|
visitScalarDefinitionNode(definition, dependencySet);
|
|
211
210
|
break;
|
|
212
|
-
case
|
|
211
|
+
case graphql_1.Kind.SCHEMA_DEFINITION:
|
|
213
212
|
visitSchemaDefinitionNode(definition, dependencySet);
|
|
214
213
|
break;
|
|
215
|
-
case
|
|
214
|
+
case graphql_1.Kind.OBJECT_TYPE_EXTENSION:
|
|
216
215
|
visitObjectTypeExtensionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
217
216
|
break;
|
|
218
|
-
case
|
|
217
|
+
case graphql_1.Kind.INTERFACE_TYPE_EXTENSION:
|
|
219
218
|
visitInterfaceTypeExtensionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
220
219
|
break;
|
|
221
|
-
case
|
|
220
|
+
case graphql_1.Kind.UNION_TYPE_EXTENSION:
|
|
222
221
|
visitUnionTypeExtensionNode(definition, dependencySet);
|
|
223
222
|
break;
|
|
224
|
-
case
|
|
223
|
+
case graphql_1.Kind.ENUM_TYPE_EXTENSION:
|
|
225
224
|
visitEnumTypeExtensionNode(definition, dependencySet);
|
|
226
225
|
break;
|
|
227
|
-
case
|
|
228
|
-
visitInputObjectTypeExtensionNode(definition, dependencySet);
|
|
226
|
+
case graphql_1.Kind.INPUT_OBJECT_TYPE_EXTENSION:
|
|
227
|
+
visitInputObjectTypeExtensionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
229
228
|
break;
|
|
230
|
-
case
|
|
229
|
+
case graphql_1.Kind.SCALAR_TYPE_EXTENSION:
|
|
231
230
|
visitScalarExtensionNode(definition, dependencySet);
|
|
232
231
|
break;
|
|
233
232
|
}
|
|
@@ -247,11 +246,11 @@ function visitDefinition(definition, definitionsByName, dependenciesByDefinition
|
|
|
247
246
|
dependenciesByDefinitionName.set(definitionName, dependencySet);
|
|
248
247
|
}
|
|
249
248
|
switch (field.kind) {
|
|
250
|
-
case
|
|
251
|
-
visitFieldDefinitionNode(field, dependencySet);
|
|
249
|
+
case graphql_1.Kind.FIELD_DEFINITION:
|
|
250
|
+
visitFieldDefinitionNode(field, dependencySet, dependenciesByDefinitionName);
|
|
252
251
|
break;
|
|
253
|
-
case
|
|
254
|
-
visitInputValueDefinitionNode(field, dependencySet);
|
|
252
|
+
case graphql_1.Kind.INPUT_VALUE_DEFINITION:
|
|
253
|
+
visitInputValueDefinitionNode(field, dependencySet, dependenciesByDefinitionName);
|
|
255
254
|
break;
|
|
256
255
|
}
|
|
257
256
|
}
|
|
@@ -332,6 +331,7 @@ function processImports(importLines, filePath, visitedFiles, predefinedImports)
|
|
|
332
331
|
}
|
|
333
332
|
return { allImportedDefinitionsMap, potentialTransitiveDefinitionsMap };
|
|
334
333
|
}
|
|
334
|
+
exports.processImports = processImports;
|
|
335
335
|
/**
|
|
336
336
|
* Splits the contents of a GraphQL file into lines that are imports
|
|
337
337
|
* and other lines which define the actual GraphQL document.
|
|
@@ -350,6 +350,7 @@ function extractImportLines(fileContent) {
|
|
|
350
350
|
}
|
|
351
351
|
return { importLines, otherLines };
|
|
352
352
|
}
|
|
353
|
+
exports.extractImportLines = extractImportLines;
|
|
353
354
|
/**
|
|
354
355
|
* Parses an import line, returning a list of entities imported and the file
|
|
355
356
|
* from which they are imported.
|
|
@@ -384,15 +385,16 @@ function parseImportLine(importLine) {
|
|
|
384
385
|
# import [Type].[Field] from [File]
|
|
385
386
|
`);
|
|
386
387
|
}
|
|
388
|
+
exports.parseImportLine = parseImportLine;
|
|
387
389
|
function resolveFilePath(filePath, importFrom) {
|
|
388
|
-
const dirName =
|
|
390
|
+
const dirName = (0, path_1.dirname)(filePath);
|
|
389
391
|
try {
|
|
390
|
-
const fullPath =
|
|
391
|
-
return
|
|
392
|
+
const fullPath = (0, path_1.join)(dirName, importFrom);
|
|
393
|
+
return (0, fs_1.realpathSync)(fullPath);
|
|
392
394
|
}
|
|
393
395
|
catch (e) {
|
|
394
396
|
if (e.code === 'ENOENT') {
|
|
395
|
-
return
|
|
397
|
+
return (0, resolve_from_1.default)(dirName, importFrom);
|
|
396
398
|
}
|
|
397
399
|
throw e;
|
|
398
400
|
}
|
|
@@ -406,13 +408,13 @@ function visitOperationDefinitionNode(node, dependencySet) {
|
|
|
406
408
|
}
|
|
407
409
|
function visitSelectionNode(node, dependencySet) {
|
|
408
410
|
switch (node.kind) {
|
|
409
|
-
case
|
|
411
|
+
case graphql_1.Kind.FIELD:
|
|
410
412
|
visitFieldNode(node, dependencySet);
|
|
411
413
|
break;
|
|
412
|
-
case
|
|
414
|
+
case graphql_1.Kind.FRAGMENT_SPREAD:
|
|
413
415
|
visitFragmentSpreadNode(node, dependencySet);
|
|
414
416
|
break;
|
|
415
|
-
case
|
|
417
|
+
case graphql_1.Kind.INLINE_FRAGMENT:
|
|
416
418
|
visitInlineFragmentNode(node, dependencySet);
|
|
417
419
|
break;
|
|
418
420
|
}
|
|
@@ -460,7 +462,7 @@ function visitObjectTypeDefinitionNode(node, dependencySet, dependenciesByDefini
|
|
|
460
462
|
const typeName = node.name.value;
|
|
461
463
|
dependencySet.add(typeName);
|
|
462
464
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
463
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet));
|
|
465
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
464
466
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
465
467
|
}
|
|
466
468
|
function visitDirectiveNode(node, dependencySet) {
|
|
@@ -471,28 +473,28 @@ function visitDirectiveNode(node, dependencySet) {
|
|
|
471
473
|
}
|
|
472
474
|
function visitFieldDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
473
475
|
var _a, _b;
|
|
474
|
-
(_a = node.arguments) === null || _a === void 0 ? void 0 : _a.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet));
|
|
476
|
+
(_a = node.arguments) === null || _a === void 0 ? void 0 : _a.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
475
477
|
(_b = node.directives) === null || _b === void 0 ? void 0 : _b.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
476
|
-
visitTypeNode(node.type, dependencySet);
|
|
478
|
+
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
477
479
|
}
|
|
478
480
|
function visitTypeNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
479
481
|
switch (node.kind) {
|
|
480
|
-
case
|
|
481
|
-
visitListTypeNode(node, dependencySet);
|
|
482
|
+
case graphql_1.Kind.LIST_TYPE:
|
|
483
|
+
visitListTypeNode(node, dependencySet, dependenciesByDefinitionName);
|
|
482
484
|
break;
|
|
483
|
-
case
|
|
484
|
-
visitNonNullTypeNode(node, dependencySet);
|
|
485
|
+
case graphql_1.Kind.NON_NULL_TYPE:
|
|
486
|
+
visitNonNullTypeNode(node, dependencySet, dependenciesByDefinitionName);
|
|
485
487
|
break;
|
|
486
|
-
case
|
|
488
|
+
case graphql_1.Kind.NAMED_TYPE:
|
|
487
489
|
visitNamedTypeNode(node, dependencySet);
|
|
488
490
|
break;
|
|
489
491
|
}
|
|
490
492
|
}
|
|
491
493
|
function visitListTypeNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
492
|
-
visitTypeNode(node.type, dependencySet);
|
|
494
|
+
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
493
495
|
}
|
|
494
496
|
function visitNonNullTypeNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
495
|
-
visitTypeNode(node.type, dependencySet);
|
|
497
|
+
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
496
498
|
}
|
|
497
499
|
function visitNamedTypeNode(node, dependencySet) {
|
|
498
500
|
const namedTypeName = node.name.value;
|
|
@@ -503,14 +505,14 @@ function visitNamedTypeNode(node, dependencySet) {
|
|
|
503
505
|
function visitInputValueDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
504
506
|
var _a;
|
|
505
507
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
506
|
-
visitTypeNode(node.type, dependencySet);
|
|
508
|
+
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
507
509
|
}
|
|
508
510
|
function visitInterfaceTypeDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
509
511
|
var _a, _b;
|
|
510
512
|
const typeName = node.name.value;
|
|
511
513
|
dependencySet.add(typeName);
|
|
512
514
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
513
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet));
|
|
515
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
514
516
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
515
517
|
}
|
|
516
518
|
function visitUnionTypeDefinitionNode(node, dependencySet) {
|
|
@@ -528,19 +530,19 @@ function visitInputObjectTypeDefinitionNode(node, dependencySet, dependenciesByD
|
|
|
528
530
|
var _a, _b;
|
|
529
531
|
dependencySet.add(node.name.value);
|
|
530
532
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
531
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet));
|
|
533
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
532
534
|
}
|
|
533
535
|
function visitDirectiveDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
534
536
|
var _a;
|
|
535
537
|
dependencySet.add(node.name.value);
|
|
536
|
-
(_a = node.arguments) === null || _a === void 0 ? void 0 : _a.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet));
|
|
538
|
+
(_a = node.arguments) === null || _a === void 0 ? void 0 : _a.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
537
539
|
}
|
|
538
540
|
function visitObjectTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
539
541
|
var _a, _b;
|
|
540
542
|
const typeName = node.name.value;
|
|
541
543
|
dependencySet.add(typeName);
|
|
542
544
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
543
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet));
|
|
545
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
544
546
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
545
547
|
}
|
|
546
548
|
function visitInterfaceTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
@@ -548,7 +550,7 @@ function visitInterfaceTypeExtensionNode(node, dependencySet, dependenciesByDefi
|
|
|
548
550
|
const typeName = node.name.value;
|
|
549
551
|
dependencySet.add(typeName);
|
|
550
552
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
551
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet));
|
|
553
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
552
554
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
553
555
|
}
|
|
554
556
|
function visitUnionTypeExtensionNode(node, dependencySet) {
|
|
@@ -566,7 +568,7 @@ function visitInputObjectTypeExtensionNode(node, dependencySet, dependenciesByDe
|
|
|
566
568
|
var _a, _b;
|
|
567
569
|
dependencySet.add(node.name.value);
|
|
568
570
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
569
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet));
|
|
571
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
570
572
|
}
|
|
571
573
|
function visitSchemaDefinitionNode(node, dependencySet) {
|
|
572
574
|
var _a;
|
|
@@ -587,9 +589,3 @@ function visitScalarExtensionNode(node, dependencySet) {
|
|
|
587
589
|
function visitOperationTypeDefinitionNode(node, dependencySet) {
|
|
588
590
|
visitNamedTypeNode(node.type, dependencySet);
|
|
589
591
|
}
|
|
590
|
-
|
|
591
|
-
exports.extractDependencies = extractDependencies;
|
|
592
|
-
exports.extractImportLines = extractImportLines;
|
|
593
|
-
exports.parseImportLine = parseImportLine;
|
|
594
|
-
exports.processImport = processImport;
|
|
595
|
-
exports.processImports = processImports;
|
package/cjs/package.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Source, parse, Kind, print, } from 'graphql';
|
|
2
2
|
import { readFileSync, realpathSync } from 'fs';
|
|
3
|
-
import { join, isAbsolute
|
|
3
|
+
import { dirname, join, isAbsolute } from 'path';
|
|
4
4
|
import resolveFrom from 'resolve-from';
|
|
5
|
-
import { cwd } from 'process';
|
|
5
|
+
import { cwd as cwdFactory } from 'process';
|
|
6
6
|
import { parseGraphQLSDL } from '@graphql-tools/utils';
|
|
7
|
-
|
|
8
7
|
const builtinTypes = ['String', 'Float', 'Int', 'Boolean', 'ID', 'Upload'];
|
|
9
8
|
const builtinDirectives = [
|
|
10
9
|
'deprecated',
|
|
@@ -26,8 +25,8 @@ const IMPORT_DEFAULT_REGEX = /^import\s+('|")(.*)('|");?$/;
|
|
|
26
25
|
* and copies them into the final document.
|
|
27
26
|
* processImport does not merge the typeDefs as designed ( https://github.com/ardatan/graphql-tools/issues/2980#issuecomment-1003692728 )
|
|
28
27
|
*/
|
|
29
|
-
function processImport(filePath, cwd
|
|
30
|
-
const set = visitFile(filePath, join(cwd
|
|
28
|
+
export function processImport(filePath, cwd = cwdFactory(), predefinedImports = {}, visitedFiles = new Map()) {
|
|
29
|
+
const set = visitFile(filePath, join(cwd + '/root.graphql'), visitedFiles, predefinedImports);
|
|
31
30
|
const definitionStrSet = new Set();
|
|
32
31
|
let definitionsStr = '';
|
|
33
32
|
for (const defs of set.values()) {
|
|
@@ -90,10 +89,10 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports) {
|
|
|
90
89
|
const newDependencySet = new Set();
|
|
91
90
|
switch (field.kind) {
|
|
92
91
|
case Kind.FIELD_DEFINITION:
|
|
93
|
-
visitFieldDefinitionNode(field, newDependencySet);
|
|
92
|
+
visitFieldDefinitionNode(field, newDependencySet, dependenciesByDefinitionName);
|
|
94
93
|
break;
|
|
95
94
|
case Kind.INPUT_VALUE_DEFINITION:
|
|
96
|
-
visitInputValueDefinitionNode(field, newDependencySet);
|
|
95
|
+
visitInputValueDefinitionNode(field, newDependencySet, dependenciesByDefinitionName);
|
|
97
96
|
break;
|
|
98
97
|
}
|
|
99
98
|
newDependencySet.forEach(dependencyName => {
|
|
@@ -146,7 +145,7 @@ function visitFile(filePath, cwd, visitedFiles, predefinedImports) {
|
|
|
146
145
|
}
|
|
147
146
|
return visitedFiles.get(filePath);
|
|
148
147
|
}
|
|
149
|
-
function extractDependencies(filePath, fileContents) {
|
|
148
|
+
export function extractDependencies(filePath, fileContents) {
|
|
150
149
|
const definitionsByName = new Map();
|
|
151
150
|
const dependenciesByDefinitionName = new Map();
|
|
152
151
|
const { document } = parseGraphQLSDL(filePath, fileContents, {
|
|
@@ -195,10 +194,10 @@ function visitDefinition(definition, definitionsByName, dependenciesByDefinition
|
|
|
195
194
|
visitEnumTypeDefinitionNode(definition, dependencySet);
|
|
196
195
|
break;
|
|
197
196
|
case Kind.INPUT_OBJECT_TYPE_DEFINITION:
|
|
198
|
-
visitInputObjectTypeDefinitionNode(definition, dependencySet);
|
|
197
|
+
visitInputObjectTypeDefinitionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
199
198
|
break;
|
|
200
199
|
case Kind.DIRECTIVE_DEFINITION:
|
|
201
|
-
visitDirectiveDefinitionNode(definition, dependencySet);
|
|
200
|
+
visitDirectiveDefinitionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
202
201
|
break;
|
|
203
202
|
case Kind.SCALAR_TYPE_DEFINITION:
|
|
204
203
|
visitScalarDefinitionNode(definition, dependencySet);
|
|
@@ -219,7 +218,7 @@ function visitDefinition(definition, definitionsByName, dependenciesByDefinition
|
|
|
219
218
|
visitEnumTypeExtensionNode(definition, dependencySet);
|
|
220
219
|
break;
|
|
221
220
|
case Kind.INPUT_OBJECT_TYPE_EXTENSION:
|
|
222
|
-
visitInputObjectTypeExtensionNode(definition, dependencySet);
|
|
221
|
+
visitInputObjectTypeExtensionNode(definition, dependencySet, dependenciesByDefinitionName);
|
|
223
222
|
break;
|
|
224
223
|
case Kind.SCALAR_TYPE_EXTENSION:
|
|
225
224
|
visitScalarExtensionNode(definition, dependencySet);
|
|
@@ -242,10 +241,10 @@ function visitDefinition(definition, definitionsByName, dependenciesByDefinition
|
|
|
242
241
|
}
|
|
243
242
|
switch (field.kind) {
|
|
244
243
|
case Kind.FIELD_DEFINITION:
|
|
245
|
-
visitFieldDefinitionNode(field, dependencySet);
|
|
244
|
+
visitFieldDefinitionNode(field, dependencySet, dependenciesByDefinitionName);
|
|
246
245
|
break;
|
|
247
246
|
case Kind.INPUT_VALUE_DEFINITION:
|
|
248
|
-
visitInputValueDefinitionNode(field, dependencySet);
|
|
247
|
+
visitInputValueDefinitionNode(field, dependencySet, dependenciesByDefinitionName);
|
|
249
248
|
break;
|
|
250
249
|
}
|
|
251
250
|
}
|
|
@@ -277,7 +276,7 @@ function getFileDefinitionMap(definitionsByName, dependenciesByDefinitionName) {
|
|
|
277
276
|
}
|
|
278
277
|
return fileDefinitionMap;
|
|
279
278
|
}
|
|
280
|
-
function processImports(importLines, filePath, visitedFiles, predefinedImports) {
|
|
279
|
+
export function processImports(importLines, filePath, visitedFiles, predefinedImports) {
|
|
281
280
|
const potentialTransitiveDefinitionsMap = new Map();
|
|
282
281
|
const allImportedDefinitionsMap = new Map();
|
|
283
282
|
for (const line of importLines) {
|
|
@@ -330,7 +329,7 @@ function processImports(importLines, filePath, visitedFiles, predefinedImports)
|
|
|
330
329
|
* Splits the contents of a GraphQL file into lines that are imports
|
|
331
330
|
* and other lines which define the actual GraphQL document.
|
|
332
331
|
*/
|
|
333
|
-
function extractImportLines(fileContent) {
|
|
332
|
+
export function extractImportLines(fileContent) {
|
|
334
333
|
const importLines = [];
|
|
335
334
|
let otherLines = '';
|
|
336
335
|
for (const line of fileContent.split('\n')) {
|
|
@@ -350,7 +349,7 @@ function extractImportLines(fileContent) {
|
|
|
350
349
|
*
|
|
351
350
|
* Throws if the import line does not have a correct format.
|
|
352
351
|
*/
|
|
353
|
-
function parseImportLine(importLine) {
|
|
352
|
+
export function parseImportLine(importLine) {
|
|
354
353
|
let regexMatch = importLine.match(IMPORT_FROM_REGEX);
|
|
355
354
|
if (regexMatch != null) {
|
|
356
355
|
// Apply regex to import line
|
|
@@ -454,7 +453,7 @@ function visitObjectTypeDefinitionNode(node, dependencySet, dependenciesByDefini
|
|
|
454
453
|
const typeName = node.name.value;
|
|
455
454
|
dependencySet.add(typeName);
|
|
456
455
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
457
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet));
|
|
456
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
458
457
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
459
458
|
}
|
|
460
459
|
function visitDirectiveNode(node, dependencySet) {
|
|
@@ -465,17 +464,17 @@ function visitDirectiveNode(node, dependencySet) {
|
|
|
465
464
|
}
|
|
466
465
|
function visitFieldDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
467
466
|
var _a, _b;
|
|
468
|
-
(_a = node.arguments) === null || _a === void 0 ? void 0 : _a.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet));
|
|
467
|
+
(_a = node.arguments) === null || _a === void 0 ? void 0 : _a.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
469
468
|
(_b = node.directives) === null || _b === void 0 ? void 0 : _b.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
470
|
-
visitTypeNode(node.type, dependencySet);
|
|
469
|
+
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
471
470
|
}
|
|
472
471
|
function visitTypeNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
473
472
|
switch (node.kind) {
|
|
474
473
|
case Kind.LIST_TYPE:
|
|
475
|
-
visitListTypeNode(node, dependencySet);
|
|
474
|
+
visitListTypeNode(node, dependencySet, dependenciesByDefinitionName);
|
|
476
475
|
break;
|
|
477
476
|
case Kind.NON_NULL_TYPE:
|
|
478
|
-
visitNonNullTypeNode(node, dependencySet);
|
|
477
|
+
visitNonNullTypeNode(node, dependencySet, dependenciesByDefinitionName);
|
|
479
478
|
break;
|
|
480
479
|
case Kind.NAMED_TYPE:
|
|
481
480
|
visitNamedTypeNode(node, dependencySet);
|
|
@@ -483,10 +482,10 @@ function visitTypeNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
|
483
482
|
}
|
|
484
483
|
}
|
|
485
484
|
function visitListTypeNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
486
|
-
visitTypeNode(node.type, dependencySet);
|
|
485
|
+
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
487
486
|
}
|
|
488
487
|
function visitNonNullTypeNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
489
|
-
visitTypeNode(node.type, dependencySet);
|
|
488
|
+
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
490
489
|
}
|
|
491
490
|
function visitNamedTypeNode(node, dependencySet) {
|
|
492
491
|
const namedTypeName = node.name.value;
|
|
@@ -497,14 +496,14 @@ function visitNamedTypeNode(node, dependencySet) {
|
|
|
497
496
|
function visitInputValueDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
498
497
|
var _a;
|
|
499
498
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
500
|
-
visitTypeNode(node.type, dependencySet);
|
|
499
|
+
visitTypeNode(node.type, dependencySet, dependenciesByDefinitionName);
|
|
501
500
|
}
|
|
502
501
|
function visitInterfaceTypeDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
503
502
|
var _a, _b;
|
|
504
503
|
const typeName = node.name.value;
|
|
505
504
|
dependencySet.add(typeName);
|
|
506
505
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
507
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet));
|
|
506
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
508
507
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
509
508
|
}
|
|
510
509
|
function visitUnionTypeDefinitionNode(node, dependencySet) {
|
|
@@ -522,19 +521,19 @@ function visitInputObjectTypeDefinitionNode(node, dependencySet, dependenciesByD
|
|
|
522
521
|
var _a, _b;
|
|
523
522
|
dependencySet.add(node.name.value);
|
|
524
523
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
525
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet));
|
|
524
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
526
525
|
}
|
|
527
526
|
function visitDirectiveDefinitionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
528
527
|
var _a;
|
|
529
528
|
dependencySet.add(node.name.value);
|
|
530
|
-
(_a = node.arguments) === null || _a === void 0 ? void 0 : _a.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet));
|
|
529
|
+
(_a = node.arguments) === null || _a === void 0 ? void 0 : _a.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
531
530
|
}
|
|
532
531
|
function visitObjectTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
533
532
|
var _a, _b;
|
|
534
533
|
const typeName = node.name.value;
|
|
535
534
|
dependencySet.add(typeName);
|
|
536
535
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
537
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet));
|
|
536
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
538
537
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
539
538
|
}
|
|
540
539
|
function visitInterfaceTypeExtensionNode(node, dependencySet, dependenciesByDefinitionName) {
|
|
@@ -542,7 +541,7 @@ function visitInterfaceTypeExtensionNode(node, dependencySet, dependenciesByDefi
|
|
|
542
541
|
const typeName = node.name.value;
|
|
543
542
|
dependencySet.add(typeName);
|
|
544
543
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
545
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet));
|
|
544
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(fieldDefinitionNode => visitFieldDefinitionNode(fieldDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
546
545
|
addInterfaceDependencies(node, dependencySet, dependenciesByDefinitionName);
|
|
547
546
|
}
|
|
548
547
|
function visitUnionTypeExtensionNode(node, dependencySet) {
|
|
@@ -560,7 +559,7 @@ function visitInputObjectTypeExtensionNode(node, dependencySet, dependenciesByDe
|
|
|
560
559
|
var _a, _b;
|
|
561
560
|
dependencySet.add(node.name.value);
|
|
562
561
|
(_a = node.directives) === null || _a === void 0 ? void 0 : _a.forEach(directiveNode => visitDirectiveNode(directiveNode, dependencySet));
|
|
563
|
-
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet));
|
|
562
|
+
(_b = node.fields) === null || _b === void 0 ? void 0 : _b.forEach(inputValueDefinitionNode => visitInputValueDefinitionNode(inputValueDefinitionNode, dependencySet, dependenciesByDefinitionName));
|
|
564
563
|
}
|
|
565
564
|
function visitSchemaDefinitionNode(node, dependencySet) {
|
|
566
565
|
var _a;
|
|
@@ -581,5 +580,3 @@ function visitScalarExtensionNode(node, dependencySet) {
|
|
|
581
580
|
function visitOperationTypeDefinitionNode(node, dependencySet) {
|
|
582
581
|
visitNamedTypeNode(node.type, dependencySet);
|
|
583
582
|
}
|
|
584
|
-
|
|
585
|
-
export { extractDependencies, extractImportLines, parseImportLine, processImport, processImports };
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphql-tools/import",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.7.0-alpha-b76ec274.0",
|
|
4
4
|
"description": "A set of utils for faster development of GraphQL tools",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"peerDependencies": {
|
|
7
7
|
"graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@graphql-tools/utils": "8.
|
|
10
|
+
"@graphql-tools/utils": "8.8.0-alpha-b76ec274.0",
|
|
11
11
|
"resolve-from": "5.0.0",
|
|
12
12
|
"tslib": "^2.4.0"
|
|
13
13
|
},
|
|
@@ -18,21 +18,42 @@
|
|
|
18
18
|
},
|
|
19
19
|
"author": "Dotan Simha <dotansimha@gmail.com>",
|
|
20
20
|
"license": "MIT",
|
|
21
|
-
"main": "index.js",
|
|
22
|
-
"module": "index.
|
|
23
|
-
"typings": "index.d.ts",
|
|
21
|
+
"main": "cjs/index.js",
|
|
22
|
+
"module": "esm/index.js",
|
|
23
|
+
"typings": "typings/index.d.ts",
|
|
24
24
|
"typescript": {
|
|
25
|
-
"definition": "index.d.ts"
|
|
25
|
+
"definition": "typings/index.d.ts"
|
|
26
26
|
},
|
|
27
|
+
"type": "module",
|
|
27
28
|
"exports": {
|
|
28
29
|
".": {
|
|
29
|
-
"require":
|
|
30
|
-
|
|
30
|
+
"require": {
|
|
31
|
+
"types": "./typings/index.d.ts",
|
|
32
|
+
"default": "./cjs/index.js"
|
|
33
|
+
},
|
|
34
|
+
"import": {
|
|
35
|
+
"types": "./typings/index.d.ts",
|
|
36
|
+
"default": "./esm/index.js"
|
|
37
|
+
},
|
|
38
|
+
"default": {
|
|
39
|
+
"types": "./typings/index.d.ts",
|
|
40
|
+
"default": "./esm/index.js"
|
|
41
|
+
}
|
|
31
42
|
},
|
|
32
43
|
"./*": {
|
|
33
|
-
"require":
|
|
34
|
-
|
|
44
|
+
"require": {
|
|
45
|
+
"types": "./typings/*.d.ts",
|
|
46
|
+
"default": "./cjs/*.js"
|
|
47
|
+
},
|
|
48
|
+
"import": {
|
|
49
|
+
"types": "./typings/*.d.ts",
|
|
50
|
+
"default": "./esm/*.js"
|
|
51
|
+
},
|
|
52
|
+
"default": {
|
|
53
|
+
"types": "./typings/*.d.ts",
|
|
54
|
+
"default": "./esm/*.js"
|
|
55
|
+
}
|
|
35
56
|
},
|
|
36
57
|
"./package.json": "./package.json"
|
|
37
58
|
}
|
|
38
|
-
}
|
|
59
|
+
}
|
|
File without changes
|
package/README.md
DELETED