graphql-persisted-document-loader
Advanced tools
Comparing version 2.0.0 to 3.0.0
48
index.js
const vm = require('vm'); | ||
const os = require('os'); | ||
const loaderUtils = require('loader-utils'); | ||
const { ExtractGQL } = require('persistgraphql/lib/src/ExtractGQL'); | ||
const queryTransformers = require('persistgraphql/lib/src/queryTransformers'); | ||
const { print, parse, separateOperations } = require('graphql'); | ||
const { addTypenameToDocument } = require('apollo-utilities'); | ||
@@ -76,28 +76,24 @@ module.exports = function graphQLPersistedDocumentLoader(content) { | ||
function tryAddDocumentId(options, content, querySource) { | ||
const queryMap = new ExtractGQL({ | ||
queryTransformers: [options.addTypename && queryTransformers.addTypenameTransformer].filter(Boolean) | ||
}).createOutputMapFromString(querySource); | ||
// Every file may contain multiple operations | ||
const operations = separateOperations(parse(querySource)); | ||
const queries = Object.keys(queryMap); | ||
if (queries.length > 1) { | ||
queries | ||
.map(query => { | ||
const matched = query.match(/^(mutation|query)\ ([^\ \(\{]*)/) | ||
if (!matched) { | ||
return false | ||
} | ||
return { | ||
operationName: matched[2], | ||
id: generateIdForQuery(options, query) | ||
} | ||
}) | ||
.filter(isValid => !!isValid) | ||
.forEach(({ id, operationName }) => { | ||
content += `${os.EOL}module.exports["${operationName}"].documentId = ${JSON.stringify(id)};` | ||
}) | ||
} else if (queries.length === 1) { | ||
const queryId = generateIdForQuery(options, Object.keys(queryMap)[0]); | ||
content += `${os.EOL}doc.documentId = ${JSON.stringify(queryId)}`; | ||
} | ||
Object.keys(operations).map((operation) => { | ||
const document = options.addTypename | ||
? addTypenameToDocument(operations[operation]) | ||
: operations[operation]; | ||
const query = print(document); | ||
const queryId = generateIdForQuery(options, query); | ||
// Add them as exports to the final file | ||
// If there is only one operation, it will be the default export | ||
if (Object.keys(operations).length > 1) { | ||
content += `${ | ||
os.EOL | ||
}module.exports["${operation}"].documentId = ${JSON.stringify(queryId)};`; | ||
} else { | ||
content += `${os.EOL}doc.documentId = ${JSON.stringify(queryId)}`; | ||
} | ||
}); | ||
return content; | ||
@@ -104,0 +100,0 @@ } |
{ | ||
"name": "graphql-persisted-document-loader", | ||
"version": "2.0.0", | ||
"version": "3.0.0", | ||
"description": "Webpack loader that adds a documentId to a compiled graphql document, which can be used when persisting/retrieving documents", | ||
@@ -10,12 +10,14 @@ "main": "index.js", | ||
"scripts": { | ||
"start": "webpack-dev-server --config ./example/webpack.config.js" | ||
"start": "webpack serve --config ./example/webpack.config.js" | ||
}, | ||
"devDependencies": { | ||
"graphql-tag": "^2.9.2", | ||
"webpack": "^3.8.1", | ||
"webpack-dev-server": "^2.9.5" | ||
"webpack": "4.29.6", | ||
"webpack-cli": "^4.2.0", | ||
"webpack-dev-server": "^3.11.0" | ||
}, | ||
"dependencies": { | ||
"loader-utils": "^1.1.0", | ||
"persistgraphql": "^0.3.11" | ||
"apollo-utilities": "^1.3.4", | ||
"graphql": "^15.4.0", | ||
"loader-utils": "^1.1.0" | ||
}, | ||
@@ -22,0 +24,0 @@ "peerDependencies": { |
8422
4
4
90
+ Addedapollo-utilities@^1.3.4
+ Addedgraphql@^15.4.0
+ Added@wry/equality@0.1.11(transitive)
+ Addedapollo-utilities@1.3.4(transitive)
+ Addedfast-json-stable-stringify@2.1.0(transitive)
+ Addedgraphql@15.8.0(transitive)
+ Addedts-invariant@0.4.4(transitive)
+ Addedtslib@1.14.1(transitive)
- Removedpersistgraphql@^0.3.11
- Removed@types/graphql@0.10.20.9.4(transitive)
- Removed@types/isomorphic-fetch@0.0.34(transitive)
- Removedansi-regex@2.1.1(transitive)
- Removedapollo-client@1.9.3(transitive)
- Removedapollo-link-core@0.5.4(transitive)
- Removedcall-bind@1.0.7(transitive)
- Removedcamelcase@3.0.0(transitive)
- Removedcliui@3.2.0(transitive)
- Removedcode-point-at@1.1.0(transitive)
- Removeddecamelize@1.2.0(transitive)
- Removeddefine-data-property@1.1.4(transitive)
- Removeddefine-properties@1.2.1(transitive)
- Removederror-ex@1.3.2(transitive)
- Removedes-define-property@1.0.0(transitive)
- Removedes-errors@1.3.0(transitive)
- Removedfind-up@1.1.2(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedget-caller-file@1.0.3(transitive)
- Removedget-intrinsic@1.2.4(transitive)
- Removedgopd@1.0.1(transitive)
- Removedgraceful-fs@4.2.11(transitive)
- Removedgraphql@0.10.516.8.1(transitive)
- Removedgraphql-anywhere@3.1.0(transitive)
- Removedhas-property-descriptors@1.0.2(transitive)
- Removedhas-proto@1.0.3(transitive)
- Removedhas-symbols@1.0.3(transitive)
- Removedhasown@2.0.2(transitive)
- Removedhosted-git-info@2.8.9(transitive)
- Removedinvert-kv@1.0.0(transitive)
- Removedis-arrayish@0.2.1(transitive)
- Removedis-core-module@2.13.1(transitive)
- Removedis-fullwidth-code-point@1.0.0(transitive)
- Removedis-utf8@0.2.1(transitive)
- Removediterall@1.3.0(transitive)
- Removedjs-tokens@4.0.0(transitive)
- Removedlcid@1.0.0(transitive)
- Removedload-json-file@1.1.0(transitive)
- Removedlodash@4.17.21(transitive)
- Removedlodash-es@4.17.21(transitive)
- Removedloose-envify@1.4.0(transitive)
- Removednormalize-package-data@2.5.0(transitive)
- Removednumber-is-nan@1.0.1(transitive)
- Removedobject-keys@1.1.1(transitive)
- Removedobject.assign@4.1.5(transitive)
- Removedos-locale@1.4.0(transitive)
- Removedparse-json@2.2.0(transitive)
- Removedpath-exists@2.1.0(transitive)
- Removedpath-parse@1.0.7(transitive)
- Removedpath-type@1.1.0(transitive)
- Removedpersistgraphql@0.3.11(transitive)
- Removedpify@2.3.0(transitive)
- Removedpinkie@2.0.4(transitive)
- Removedpinkie-promise@2.0.1(transitive)
- Removedread-pkg@1.1.0(transitive)
- Removedread-pkg-up@1.0.1(transitive)
- Removedredux@3.7.2(transitive)
- Removedrequire-directory@2.1.1(transitive)
- Removedrequire-main-filename@1.0.1(transitive)
- Removedresolve@1.22.8(transitive)
- Removedsemver@5.7.2(transitive)
- Removedset-blocking@2.0.0(transitive)
- Removedset-function-length@1.2.2(transitive)
- Removedspdx-correct@3.2.0(transitive)
- Removedspdx-exceptions@2.5.0(transitive)
- Removedspdx-expression-parse@3.0.1(transitive)
- Removedspdx-license-ids@3.0.18(transitive)
- Removedstring-width@1.0.2(transitive)
- Removedstrip-ansi@3.0.1(transitive)
- Removedstrip-bom@2.0.0(transitive)
- Removedsupports-preserve-symlinks-flag@1.0.0(transitive)
- Removedsymbol-observable@1.2.0(transitive)
- Removedvalidate-npm-package-license@3.0.4(transitive)
- Removedwhatwg-fetch@2.0.4(transitive)
- Removedwhich-module@1.0.0(transitive)
- Removedwrap-ansi@2.1.0(transitive)
- Removedy18n@3.2.2(transitive)
- Removedyargs@7.1.2(transitive)
- Removedyargs-parser@5.0.1(transitive)
- Removedzen-observable-ts@0.4.4(transitive)