babel-plugin-inline-import-graphql-ast
Advanced tools
Comparing version 2.0.0 to 2.0.1-beta.0
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
@@ -32,60 +32,68 @@ | ||
exports.default = function (_ref) { | ||
var t = _ref.types; | ||
return { | ||
visitor: { | ||
ImportDeclaration: { | ||
exit: function exit(curPath, state) { | ||
var importPath = curPath.node.source.value; | ||
if (importPath.endsWith('.graphql') || importPath.endsWith('.gql')) { | ||
var buildInlineVariable = function buildInlineVariable(graphqlAST) { | ||
var babelAST = (0, _babylon.parse)('const obj = ' + JSON.stringify(graphqlAST)); | ||
var objExp = babelAST.program.body[0].declarations[0].init; | ||
return t.variableDeclarator(t.identifier(curPath.node.specifiers[0].local.name), t.objectExpression(objExp.properties)); | ||
}; | ||
var t = _ref.types; | ||
return { | ||
visitor: { | ||
ImportDeclaration: { | ||
exit: function exit(curPath, state) { | ||
var importPath = curPath.node.source.value; | ||
if (importPath.endsWith('.graphql') || importPath.endsWith('.gql')) { | ||
var buildInlineVariable = function buildInlineVariable(graphqlAST) { | ||
var babelAST = (0, _babylon.parse)('const obj = ' + JSON.stringify(graphqlAST)); | ||
var objExp = babelAST.program.body[0].declarations[0].init; | ||
return t.variableDeclarator(t.identifier(curPath.node.specifiers[0].local.name), t.objectExpression(objExp.properties)); | ||
}; | ||
var query = createQuery(importPath, state.file.opts.filename); | ||
query.processFragments(); | ||
query.parse(); | ||
query.makeSourceEnumerable(); | ||
curPath.replaceWith(t.variableDeclaration('const', [buildInlineVariable(query.ast)])); | ||
} | ||
} | ||
} | ||
} | ||
}; | ||
var query = createQuery(importPath, state.file.opts.filename); | ||
query.processFragments(); | ||
query.dedupeFragments(); | ||
query.parse(); | ||
query.makeSourceEnumerable(); | ||
curPath.replaceWith(t.variableDeclaration('const', [buildInlineVariable(query.ast)])); | ||
} | ||
} | ||
} | ||
} | ||
}; | ||
}; | ||
function createQuery(queryPath, babelPath) { | ||
var absPath = _path2.default.resolve(_path2.default.dirname(babelPath), queryPath); | ||
var source = _fs2.default.readFileSync(absPath).toString(); | ||
var ast = null; | ||
var fragmentDefs = []; | ||
var absPath = _path2.default.resolve(_path2.default.dirname(babelPath), queryPath); | ||
var source = _fs2.default.readFileSync(absPath).toString(); | ||
var ast = null; | ||
var fragmentDefs = []; | ||
return { | ||
processFragments: function processFragments() { | ||
var imports = source.split(_os2.default.EOL).filter(function (line) { | ||
return line.startsWith('#import'); | ||
}); | ||
imports.forEach(function (statement) { | ||
var fragmentPath = statement.split(' ')[1].slice(1, -1); | ||
var absFragmentPath = _path2.default.resolve(_path2.default.dirname(absPath), fragmentPath); | ||
var fragmentSource = _fs2.default.readFileSync(absFragmentPath).toString(); | ||
fragmentDefs = [].concat(_toConsumableArray(fragmentDefs), _toConsumableArray((0, _graphqlTag2.default)(_templateObject, fragmentSource).definitions)); | ||
}); | ||
}, | ||
parse: function parse() { | ||
var parsedAST = (0, _graphqlTag2.default)(_templateObject, source); | ||
parsedAST.definitions = [].concat(_toConsumableArray(parsedAST.definitions), _toConsumableArray(fragmentDefs)); | ||
ast = parsedAST; | ||
}, | ||
makeSourceEnumerable: function makeSourceEnumerable() { | ||
var newAST = JSON.parse(JSON.stringify(ast)); | ||
newAST.loc.source = ast.loc.source; | ||
ast = newAST; | ||
}, | ||
return { | ||
processFragments: function processFragments() { | ||
var imports = source.split(_os2.default.EOL).filter(function (line) { | ||
return line.startsWith('#import'); | ||
}); | ||
imports.forEach(function (statement) { | ||
var fragmentPath = statement.split(' ')[1].slice(1, -1); | ||
var absFragmentPath = _path2.default.resolve(_path2.default.dirname(absPath), fragmentPath); | ||
var fragmentSource = _fs2.default.readFileSync(absFragmentPath).toString(); | ||
fragmentDefs = [].concat(_toConsumableArray(fragmentDefs), _toConsumableArray((0, _graphqlTag2.default)(_templateObject, fragmentSource).definitions)); | ||
}); | ||
}, | ||
dedupeFragments: function dedupeFragments() { | ||
var seenNames = {}; | ||
fragmentDefs = fragmentDefs.filter(function (def) { | ||
if (def.kind !== 'FragmentDefinition') return true; | ||
return seenNames[def.name.value] ? false : seenNames[def.name.value] = true; | ||
}); | ||
}, | ||
parse: function parse() { | ||
var parsedAST = (0, _graphqlTag2.default)(_templateObject, source); | ||
parsedAST.definitions = [].concat(_toConsumableArray(parsedAST.definitions), _toConsumableArray(fragmentDefs)); | ||
ast = parsedAST; | ||
}, | ||
makeSourceEnumerable: function makeSourceEnumerable() { | ||
var newAST = JSON.parse(JSON.stringify(ast)); | ||
newAST.loc.source = ast.loc.source; | ||
ast = newAST; | ||
}, | ||
get ast() { | ||
return ast; | ||
} | ||
}; | ||
get ast() { | ||
return ast; | ||
} | ||
}; | ||
} |
@@ -0,0 +0,0 @@ # ChangeLog |
{ | ||
"name": "babel-plugin-inline-import-graphql-ast", | ||
"version": "2.0.0", | ||
"version": "2.0.1-beta.0", | ||
"description": "Babel plugin to make raw files importable", | ||
@@ -5,0 +5,0 @@ "author": "Alexander Roberts <detrohutt@gmail.com>", |
@@ -0,0 +0,0 @@ # Babel Inline Import GraphQL AST |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
0
2
10657
5
79
2