gatsby 3.14.0-drupal-next.39 → 3.14.0-drupal-next.44
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/apis.json +1 -1
- package/cache-dir/commonjs/develop-static-entry.js +1 -10
- package/cache-dir/commonjs/fast-refresh-overlay/components/error-boundary.js +6 -3
- package/cache-dir/commonjs/loader.js +2 -3
- package/cache-dir/commonjs/query-result-store.js +17 -15
- package/cache-dir/commonjs/ssr-develop-static-entry.js +2 -1
- package/cache-dir/commonjs/static-entry.js +2 -10
- package/dist/query/graphql-runner.js +7 -1
- package/dist/query/graphql-runner.js.map +1 -1
- package/dist/redux/actions/add-page-dependency.js +14 -2
- package/dist/redux/actions/add-page-dependency.js.map +1 -1
- package/dist/redux/actions/internal.js +2 -10
- package/dist/redux/actions/internal.js.map +1 -1
- package/dist/redux/reducers/queries.js +9 -10
- package/dist/redux/reducers/queries.js.map +1 -1
- package/dist/schema/context.js +2 -1
- package/dist/schema/context.js.map +1 -1
- package/dist/schema/node-model.js +5 -3
- package/dist/schema/node-model.js.map +1 -1
- package/dist/schema/types/date.js +10 -1
- package/dist/schema/types/date.js.map +1 -1
- package/dist/utils/worker/child/queries.js +6 -4
- package/dist/utils/worker/child/queries.js.map +1 -1
- package/dist/utils/worker/pool.js +5 -3
- package/dist/utils/worker/pool.js.map +1 -1
- package/gatsby-admin-public/app-552da616a99bc886bb71.js.map +1 -1
- package/gatsby-admin-public/component---src-pages-recipe-js-c33ae0ed3a512fe2bdb8.js.map +1 -1
- package/gatsby-admin-public/index.html +1 -1
- package/gatsby-admin-public/page-data/app-data.json +1 -1
- package/gatsby-admin-public/pages/index.html +1 -1
- package/gatsby-admin-public/plugins/index.html +1 -1
- package/gatsby-admin-public/recipe/index.html +1 -1
- package/gatsby-admin-public/recipes/index.html +1 -1
- package/gatsby-admin-public/webpack-runtime-ca90b708571af46f6477.js +2 -0
- package/gatsby-admin-public/webpack-runtime-ca90b708571af46f6477.js.map +1 -0
- package/gatsby-admin-public/webpack.stats.json +1 -1
- package/package.json +4 -3
package/apis.json
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.getPageChunk = getPageChunk;
|
|
7
6
|
exports.default = void 0;
|
|
8
7
|
|
|
9
8
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -14,8 +13,6 @@ var _lodash = require("lodash");
|
|
|
14
13
|
|
|
15
14
|
var _apiRunnerSsr = require("./api-runner-ssr");
|
|
16
15
|
|
|
17
|
-
var _asyncRequires = _interopRequireDefault(require("$virtual/async-requires"));
|
|
18
|
-
|
|
19
16
|
/* global BROWSER_ESM_ONLY */
|
|
20
17
|
// import testRequireError from "./test-require-error"
|
|
21
18
|
// For some extremely mysterious reason, webpack adds the above module *after*
|
|
@@ -149,10 +146,4 @@ var _default = ({
|
|
|
149
146
|
return htmlStr;
|
|
150
147
|
};
|
|
151
148
|
|
|
152
|
-
exports.default = _default;
|
|
153
|
-
|
|
154
|
-
function getPageChunk({
|
|
155
|
-
componentChunkName
|
|
156
|
-
}) {
|
|
157
|
-
return _asyncRequires.default.components[componentChunkName]();
|
|
158
|
-
}
|
|
149
|
+
exports.default = _default;
|
|
@@ -10,9 +10,12 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
10
10
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
11
11
|
|
|
12
12
|
class ErrorBoundary extends React.Component {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
constructor(...args) {
|
|
14
|
+
super(...args);
|
|
15
|
+
this.state = {
|
|
16
|
+
error: null
|
|
17
|
+
};
|
|
18
|
+
}
|
|
16
19
|
|
|
17
20
|
componentDidCatch(error) {
|
|
18
21
|
this.setState({
|
|
@@ -87,6 +87,7 @@ const toPageResources = (pageData, component = null) => {
|
|
|
87
87
|
|
|
88
88
|
class BaseLoader {
|
|
89
89
|
constructor(loadComponent, matchPaths) {
|
|
90
|
+
this.inFlightNetworkRequests = new Map();
|
|
90
91
|
// Map of pagePath -> Page. Where Page is an object with: {
|
|
91
92
|
// status: PageResourceStatus.Success || PageResourceStatus.Error,
|
|
92
93
|
// payload: PageResources, // undefined if PageResourceStatus.Error
|
|
@@ -112,8 +113,6 @@ class BaseLoader {
|
|
|
112
113
|
(0, _findPath.setMatchPaths)(matchPaths);
|
|
113
114
|
}
|
|
114
115
|
|
|
115
|
-
inFlightNetworkRequests = new Map();
|
|
116
|
-
|
|
117
116
|
memoizedGet(url) {
|
|
118
117
|
let inFlightPromise = this.inFlightNetworkRequests.get(url);
|
|
119
118
|
|
|
@@ -512,7 +511,7 @@ class ProdLoader extends BaseLoader {
|
|
|
512
511
|
super(loadComponent, matchPaths);
|
|
513
512
|
|
|
514
513
|
if (pageData) {
|
|
515
|
-
this.pageDataDb.set(
|
|
514
|
+
this.pageDataDb.set(pageData.path, {
|
|
516
515
|
pagePath: pageData.path,
|
|
517
516
|
payload: pageData,
|
|
518
517
|
status: `success`
|
|
@@ -32,20 +32,21 @@ const getPathFromProps = props => props.pageResources && props.pageResources.pag
|
|
|
32
32
|
class PageQueryStore extends _react.default.Component {
|
|
33
33
|
constructor(props) {
|
|
34
34
|
super(props);
|
|
35
|
+
|
|
36
|
+
this.handleMittEvent = () => {
|
|
37
|
+
this.setState(state => {
|
|
38
|
+
return {
|
|
39
|
+
page: state.path ? _loader.default.loadPageSync((0, _normalizePagePath.default)(state.path)) : null
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
|
|
35
44
|
this.state = {
|
|
36
45
|
pageData: null,
|
|
37
46
|
path: null
|
|
38
47
|
};
|
|
39
48
|
}
|
|
40
49
|
|
|
41
|
-
handleMittEvent = () => {
|
|
42
|
-
this.setState(state => {
|
|
43
|
-
return {
|
|
44
|
-
page: state.path ? _loader.default.loadPageSync((0, _normalizePagePath.default)(state.path)) : null
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
|
|
49
50
|
componentDidMount() {
|
|
50
51
|
(0, _socketIo.registerPath)(getPathFromProps(this.props));
|
|
51
52
|
|
|
@@ -100,19 +101,20 @@ exports.PageQueryStore = PageQueryStore;
|
|
|
100
101
|
class StaticQueryStore extends _react.default.Component {
|
|
101
102
|
constructor(props) {
|
|
102
103
|
super(props);
|
|
104
|
+
|
|
105
|
+
this.handleMittEvent = () => {
|
|
106
|
+
this.setState({
|
|
107
|
+
staticQueryData: { ...(0, _loader.getStaticQueryResults)()
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
|
|
103
112
|
this.state = {
|
|
104
113
|
staticQueryData: { ...(0, _loader.getStaticQueryResults)()
|
|
105
114
|
}
|
|
106
115
|
};
|
|
107
116
|
}
|
|
108
117
|
|
|
109
|
-
handleMittEvent = () => {
|
|
110
|
-
this.setState({
|
|
111
|
-
staticQueryData: { ...(0, _loader.getStaticQueryResults)()
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
};
|
|
115
|
-
|
|
116
118
|
componentDidMount() {
|
|
117
119
|
___emitter.on(`staticQueryResult`, this.handleMittEvent);
|
|
118
120
|
|
|
@@ -207,6 +207,7 @@ async function staticPage(pagePath, isClientOnlyPage, publicDir, error, callback
|
|
|
207
207
|
href: `${__PATH_PREFIX__}/${style.name}`
|
|
208
208
|
}));
|
|
209
209
|
});
|
|
210
|
+
const createElement = _react.default.createElement;
|
|
210
211
|
|
|
211
212
|
class RouteHandler extends _react.default.Component {
|
|
212
213
|
render() {
|
|
@@ -221,7 +222,7 @@ async function staticPage(pagePath, isClientOnlyPage, publicDir, error, callback
|
|
|
221
222
|
let pageElement;
|
|
222
223
|
|
|
223
224
|
if (_ssrSyncRequires.default.ssrComponents[componentChunkName] && !isClientOnlyPage) {
|
|
224
|
-
pageElement =
|
|
225
|
+
pageElement = createElement(_ssrSyncRequires.default.ssrComponents[componentChunkName], props);
|
|
225
226
|
} else {
|
|
226
227
|
// If this is a client-only page or the pageComponent didn't finish
|
|
227
228
|
// compiling yet, just render an empty component.
|
|
@@ -4,7 +4,6 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
6
|
exports.default = staticPage;
|
|
7
|
-
exports.getPageChunk = getPageChunk;
|
|
8
7
|
exports.sanitizeComponents = void 0;
|
|
9
8
|
|
|
10
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
@@ -46,7 +45,7 @@ const {
|
|
|
46
45
|
apiRunnerAsync
|
|
47
46
|
} = require(`./api-runner-ssr`);
|
|
48
47
|
|
|
49
|
-
const
|
|
48
|
+
const syncRequires = require(`$virtual/sync-requires`);
|
|
50
49
|
|
|
51
50
|
const {
|
|
52
51
|
version: gatsbyVersion
|
|
@@ -245,7 +244,6 @@ async function staticPage({
|
|
|
245
244
|
componentChunkName,
|
|
246
245
|
staticQueryHashes = []
|
|
247
246
|
} = pageData;
|
|
248
|
-
const pageComponent = await asyncRequires.components[componentChunkName]();
|
|
249
247
|
const staticQueryUrls = staticQueryHashes.map(getStaticQueryUrl);
|
|
250
248
|
|
|
251
249
|
class RouteHandler extends React.Component {
|
|
@@ -258,7 +256,7 @@ async function staticPage({
|
|
|
258
256
|
...(((_pageData$result = pageData.result) === null || _pageData$result === void 0 ? void 0 : (_pageData$result$page = _pageData$result.pageContext) === null || _pageData$result$page === void 0 ? void 0 : _pageData$result$page.__params) || {})
|
|
259
257
|
}
|
|
260
258
|
};
|
|
261
|
-
const pageElement = createElement(
|
|
259
|
+
const pageElement = createElement(syncRequires.components[componentChunkName], props);
|
|
262
260
|
const wrappedPage = apiRunner(`wrapPageElement`, {
|
|
263
261
|
element: pageElement,
|
|
264
262
|
props
|
|
@@ -477,10 +475,4 @@ async function staticPage({
|
|
|
477
475
|
e.unsafeBuiltinsUsage = global.unsafeBuiltinUsage;
|
|
478
476
|
throw e;
|
|
479
477
|
}
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
function getPageChunk({
|
|
483
|
-
componentChunkName
|
|
484
|
-
}) {
|
|
485
|
-
return asyncRequires.components[componentChunkName]();
|
|
486
478
|
}
|
|
@@ -21,6 +21,10 @@ var _nodeModel = require("../schema/node-model");
|
|
|
21
21
|
|
|
22
22
|
var _graphqlSpanTracer = _interopRequireDefault(require("./graphql-span-tracer"));
|
|
23
23
|
|
|
24
|
+
const _rootNodeMap = new WeakMap();
|
|
25
|
+
|
|
26
|
+
const _trackedRootNodes = new WeakSet();
|
|
27
|
+
|
|
24
28
|
class GraphQLRunner {
|
|
25
29
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
30
|
// TODO: convert "../schema/node-model" from Flow
|
|
@@ -36,7 +40,9 @@ class GraphQLRunner {
|
|
|
36
40
|
this.nodeModel = new _nodeModel.LocalNodeModel({
|
|
37
41
|
schema,
|
|
38
42
|
schemaComposer: schemaCustomization.composer,
|
|
39
|
-
createPageDependency: _addPageDependency.createPageDependency
|
|
43
|
+
createPageDependency: _addPageDependency.createPageDependency,
|
|
44
|
+
_rootNodeMap,
|
|
45
|
+
_trackedRootNodes
|
|
40
46
|
});
|
|
41
47
|
this.schema = schema;
|
|
42
48
|
this.parseCache = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query/graphql-runner.ts"],"names":["GraphQLRunner","constructor","store","collectStats","graphqlTracing","schema","schemaCustomization","getState","nodeModel","LocalNodeModel","schemaComposer","composer","createPageDependency","parseCache","Map","validDocuments","WeakSet","scheduleClearCache","clearCache","bind","stats","totalQueries","uniqueOperations","Set","uniqueQueries","totalRunQuery","totalPluralRunQuery","totalIndexHits","totalSiftHits","totalNonSingleFilters","comparatorsUsed","uniqueFilterPaths","uniqueSorts","clear","parse","query","has","set","get","validate","document","errors","warnings","NoDeprecatedCustomRule","length","add","getStats","comparatorsUsedObj","forEach","value","key","push","comparator","amount","size","context","parentSpan","queryName","componentPath","statsQuery","body","crypto","createHash","update","digest","err","message","reporter","warn","tracer","GraphQLSpanTracer","tags","start","rootValue","contextValue","customContext","variableValues","end"],"mappings":"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","sourcesContent":["import crypto from \"crypto\"\nimport { Span } from \"opentracing\"\nimport {\n parse,\n validate,\n execute,\n DocumentNode,\n GraphQLSchema,\n Source,\n GraphQLError,\n ExecutionResult,\n NoDeprecatedCustomRule,\n} from \"graphql\"\nimport { debounce } from \"lodash\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { createPageDependency } from \"../redux/actions/add-page-dependency\"\n\nimport withResolverContext from \"../schema/context\"\nimport { LocalNodeModel } from \"../schema/node-model\"\nimport { Store } from \"redux\"\nimport { IGatsbyState } from \"../redux/types\"\nimport { IGraphQLRunnerStatResults, IGraphQLRunnerStats } from \"./types\"\nimport GraphQLSpanTracer from \"./graphql-span-tracer\"\n\ntype Query = string | Source\n\nexport interface IGraphQLRunnerOptions {\n collectStats?: boolean\n graphqlTracing?: boolean\n}\n\nexport class GraphQLRunner {\n parseCache: Map<Query, DocumentNode>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeModel: any // TODO: convert \"../schema/node-model\" from Flow\n\n schema: GraphQLSchema\n\n validDocuments: WeakSet<DocumentNode>\n scheduleClearCache: () => void\n\n stats: IGraphQLRunnerStats | null\n graphqlTracing: boolean\n\n constructor(\n protected store: Store<IGatsbyState>,\n { collectStats, graphqlTracing }: IGraphQLRunnerOptions = {}\n ) {\n const { schema, schemaCustomization } = this.store.getState()\n\n this.nodeModel = new LocalNodeModel({\n schema,\n schemaComposer: schemaCustomization.composer,\n createPageDependency,\n })\n this.schema = schema\n this.parseCache = new Map()\n this.validDocuments = new WeakSet()\n this.scheduleClearCache = debounce(this.clearCache.bind(this), 5000)\n\n this.graphqlTracing = graphqlTracing || false\n\n if (collectStats) {\n this.stats = {\n totalQueries: 0,\n uniqueOperations: new Set(),\n uniqueQueries: new Set(),\n totalRunQuery: 0,\n totalPluralRunQuery: 0,\n totalIndexHits: 0,\n totalSiftHits: 0,\n totalNonSingleFilters: 0,\n comparatorsUsed: new Map(),\n uniqueFilterPaths: new Set(),\n uniqueSorts: new Set(),\n }\n } else {\n this.stats = null\n }\n }\n\n clearCache(): void {\n this.parseCache.clear()\n this.validDocuments = new WeakSet()\n }\n\n parse(query: Query): DocumentNode {\n if (!this.parseCache.has(query)) {\n this.parseCache.set(query, parse(query))\n }\n return this.parseCache.get(query) as DocumentNode\n }\n\n validate(\n schema: GraphQLSchema,\n document: DocumentNode\n ): {\n errors: ReadonlyArray<GraphQLError>\n warnings: ReadonlyArray<GraphQLError>\n } {\n let errors: ReadonlyArray<GraphQLError> = []\n let warnings: ReadonlyArray<GraphQLError> = []\n if (!this.validDocuments.has(document)) {\n errors = validate(schema, document)\n warnings = validate(schema, document, [NoDeprecatedCustomRule])\n if (!errors.length) {\n this.validDocuments.add(document)\n }\n }\n return { errors, warnings }\n }\n\n getStats(): IGraphQLRunnerStatResults | null {\n if (this.stats) {\n const comparatorsUsedObj: Array<{\n comparator: string\n amount: number\n }> = []\n this.stats.comparatorsUsed.forEach((value, key) => {\n comparatorsUsedObj.push({ comparator: key, amount: value })\n })\n return {\n totalQueries: this.stats.totalQueries,\n uniqueOperations: this.stats.uniqueOperations.size,\n uniqueQueries: this.stats.uniqueQueries.size,\n totalRunQuery: this.stats.totalRunQuery,\n totalPluralRunQuery: this.stats.totalPluralRunQuery,\n totalIndexHits: this.stats.totalIndexHits,\n totalSiftHits: this.stats.totalSiftHits,\n totalNonSingleFilters: this.stats.totalNonSingleFilters,\n comparatorsUsed: comparatorsUsedObj,\n uniqueFilterPaths: this.stats.uniqueFilterPaths.size,\n uniqueSorts: this.stats.uniqueSorts.size,\n }\n } else {\n return null\n }\n }\n\n async query(\n query: Query,\n context: Record<string, unknown>,\n {\n parentSpan,\n queryName,\n componentPath,\n }: {\n parentSpan: Span | undefined\n queryName: string\n componentPath?: string | undefined\n }\n ): Promise<ExecutionResult> {\n const { schema, schemaCustomization } = this.store.getState()\n\n if (this.schema !== schema) {\n this.schema = schema\n this.clearCache()\n }\n\n if (this.stats) {\n this.stats.totalQueries++\n let statsQuery = query\n if (typeof statsQuery !== `string`) {\n statsQuery = statsQuery.body\n }\n\n this.stats.uniqueQueries.add(\n crypto.createHash(`sha1`).update(statsQuery).digest(`hex`)\n )\n }\n\n const document = this.parse(query)\n const { errors, warnings } = this.validate(schema, document)\n\n // Queries are usually executed in batch. But after the batch is finished\n // cache just wastes memory without much benefits.\n // TODO: consider a better strategy for cache purging/invalidation\n this.scheduleClearCache()\n\n if (warnings.length > 0) {\n // TODO: move those warnings to the caller side, e.g. query-runner.ts\n warnings.forEach(err => {\n const message = componentPath ? `\\nQueried in ${componentPath}` : ``\n reporter.warn(err.message + message)\n })\n }\n\n if (errors.length > 0) {\n return { errors }\n }\n\n let tracer\n if (this.graphqlTracing && parentSpan) {\n tracer = new GraphQLSpanTracer(`GraphQL Query`, {\n parentSpan,\n tags: {\n queryName: queryName,\n },\n })\n\n tracer.start()\n }\n\n try {\n // `execute` will return a promise\n return await execute({\n schema,\n document,\n rootValue: context,\n contextValue: withResolverContext({\n schema,\n schemaComposer: schemaCustomization.composer,\n context,\n customContext: schemaCustomization.context,\n nodeModel: this.nodeModel,\n stats: this.stats,\n tracer,\n }),\n variableValues: context,\n })\n } finally {\n if (tracer) {\n tracer.end()\n }\n }\n }\n}\n"],"file":"graphql-runner.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/query/graphql-runner.ts"],"names":["_rootNodeMap","WeakMap","_trackedRootNodes","WeakSet","GraphQLRunner","constructor","store","collectStats","graphqlTracing","schema","schemaCustomization","getState","nodeModel","LocalNodeModel","schemaComposer","composer","createPageDependency","parseCache","Map","validDocuments","scheduleClearCache","clearCache","bind","stats","totalQueries","uniqueOperations","Set","uniqueQueries","totalRunQuery","totalPluralRunQuery","totalIndexHits","totalSiftHits","totalNonSingleFilters","comparatorsUsed","uniqueFilterPaths","uniqueSorts","clear","parse","query","has","set","get","validate","document","errors","warnings","NoDeprecatedCustomRule","length","add","getStats","comparatorsUsedObj","forEach","value","key","push","comparator","amount","size","context","parentSpan","queryName","componentPath","statsQuery","body","crypto","createHash","update","digest","err","message","reporter","warn","tracer","GraphQLSpanTracer","tags","start","rootValue","contextValue","customContext","variableValues","end"],"mappings":"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","sourcesContent":["import crypto from \"crypto\"\nimport { Span } from \"opentracing\"\nimport {\n parse,\n validate,\n execute,\n DocumentNode,\n GraphQLSchema,\n Source,\n GraphQLError,\n ExecutionResult,\n NoDeprecatedCustomRule,\n} from \"graphql\"\nimport { debounce } from \"lodash\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { createPageDependency } from \"../redux/actions/add-page-dependency\"\n\nimport withResolverContext from \"../schema/context\"\nimport { LocalNodeModel } from \"../schema/node-model\"\nimport { Store } from \"redux\"\nimport { IGatsbyState } from \"../redux/types\"\nimport { IGraphQLRunnerStatResults, IGraphQLRunnerStats } from \"./types\"\nimport GraphQLSpanTracer from \"./graphql-span-tracer\"\n\nconst _rootNodeMap = new WeakMap()\nconst _trackedRootNodes = new WeakSet()\n\ntype Query = string | Source\n\nexport interface IGraphQLRunnerOptions {\n collectStats?: boolean\n graphqlTracing?: boolean\n}\n\nexport class GraphQLRunner {\n parseCache: Map<Query, DocumentNode>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeModel: any // TODO: convert \"../schema/node-model\" from Flow\n\n schema: GraphQLSchema\n\n validDocuments: WeakSet<DocumentNode>\n scheduleClearCache: () => void\n\n stats: IGraphQLRunnerStats | null\n graphqlTracing: boolean\n\n constructor(\n protected store: Store<IGatsbyState>,\n { collectStats, graphqlTracing }: IGraphQLRunnerOptions = {}\n ) {\n const { schema, schemaCustomization } = this.store.getState()\n\n this.nodeModel = new LocalNodeModel({\n schema,\n schemaComposer: schemaCustomization.composer,\n createPageDependency,\n _rootNodeMap,\n _trackedRootNodes,\n })\n this.schema = schema\n this.parseCache = new Map()\n this.validDocuments = new WeakSet()\n this.scheduleClearCache = debounce(this.clearCache.bind(this), 5000)\n\n this.graphqlTracing = graphqlTracing || false\n\n if (collectStats) {\n this.stats = {\n totalQueries: 0,\n uniqueOperations: new Set(),\n uniqueQueries: new Set(),\n totalRunQuery: 0,\n totalPluralRunQuery: 0,\n totalIndexHits: 0,\n totalSiftHits: 0,\n totalNonSingleFilters: 0,\n comparatorsUsed: new Map(),\n uniqueFilterPaths: new Set(),\n uniqueSorts: new Set(),\n }\n } else {\n this.stats = null\n }\n }\n\n clearCache(): void {\n this.parseCache.clear()\n this.validDocuments = new WeakSet()\n }\n\n parse(query: Query): DocumentNode {\n if (!this.parseCache.has(query)) {\n this.parseCache.set(query, parse(query))\n }\n return this.parseCache.get(query) as DocumentNode\n }\n\n validate(\n schema: GraphQLSchema,\n document: DocumentNode\n ): {\n errors: ReadonlyArray<GraphQLError>\n warnings: ReadonlyArray<GraphQLError>\n } {\n let errors: ReadonlyArray<GraphQLError> = []\n let warnings: ReadonlyArray<GraphQLError> = []\n if (!this.validDocuments.has(document)) {\n errors = validate(schema, document)\n warnings = validate(schema, document, [NoDeprecatedCustomRule])\n if (!errors.length) {\n this.validDocuments.add(document)\n }\n }\n return { errors, warnings }\n }\n\n getStats(): IGraphQLRunnerStatResults | null {\n if (this.stats) {\n const comparatorsUsedObj: Array<{\n comparator: string\n amount: number\n }> = []\n this.stats.comparatorsUsed.forEach((value, key) => {\n comparatorsUsedObj.push({ comparator: key, amount: value })\n })\n return {\n totalQueries: this.stats.totalQueries,\n uniqueOperations: this.stats.uniqueOperations.size,\n uniqueQueries: this.stats.uniqueQueries.size,\n totalRunQuery: this.stats.totalRunQuery,\n totalPluralRunQuery: this.stats.totalPluralRunQuery,\n totalIndexHits: this.stats.totalIndexHits,\n totalSiftHits: this.stats.totalSiftHits,\n totalNonSingleFilters: this.stats.totalNonSingleFilters,\n comparatorsUsed: comparatorsUsedObj,\n uniqueFilterPaths: this.stats.uniqueFilterPaths.size,\n uniqueSorts: this.stats.uniqueSorts.size,\n }\n } else {\n return null\n }\n }\n\n async query(\n query: Query,\n context: Record<string, unknown>,\n {\n parentSpan,\n queryName,\n componentPath,\n }: {\n parentSpan: Span | undefined\n queryName: string\n componentPath?: string | undefined\n }\n ): Promise<ExecutionResult> {\n const { schema, schemaCustomization } = this.store.getState()\n\n if (this.schema !== schema) {\n this.schema = schema\n this.clearCache()\n }\n\n if (this.stats) {\n this.stats.totalQueries++\n let statsQuery = query\n if (typeof statsQuery !== `string`) {\n statsQuery = statsQuery.body\n }\n\n this.stats.uniqueQueries.add(\n crypto.createHash(`sha1`).update(statsQuery).digest(`hex`)\n )\n }\n\n const document = this.parse(query)\n const { errors, warnings } = this.validate(schema, document)\n\n // Queries are usually executed in batch. But after the batch is finished\n // cache just wastes memory without much benefits.\n // TODO: consider a better strategy for cache purging/invalidation\n this.scheduleClearCache()\n\n if (warnings.length > 0) {\n // TODO: move those warnings to the caller side, e.g. query-runner.ts\n warnings.forEach(err => {\n const message = componentPath ? `\\nQueried in ${componentPath}` : ``\n reporter.warn(err.message + message)\n })\n }\n\n if (errors.length > 0) {\n return { errors }\n }\n\n let tracer\n if (this.graphqlTracing && parentSpan) {\n tracer = new GraphQLSpanTracer(`GraphQL Query`, {\n parentSpan,\n tags: {\n queryName: queryName,\n },\n })\n\n tracer.start()\n }\n\n try {\n // `execute` will return a promise\n return await execute({\n schema,\n document,\n rootValue: context,\n contextValue: withResolverContext({\n schema,\n schemaComposer: schemaCustomization.composer,\n context,\n customContext: schemaCustomization.context,\n nodeModel: this.nodeModel,\n stats: this.stats,\n tracer,\n }),\n variableValues: context,\n })\n } finally {\n if (tracer) {\n tracer.end()\n }\n }\n }\n}\n"],"file":"graphql-runner.js"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
exports.__esModule = true;
|
|
4
6
|
exports.createPageDependency = void 0;
|
|
5
7
|
|
|
@@ -7,6 +9,16 @@ var _ = require("../");
|
|
|
7
9
|
|
|
8
10
|
var _internal = require("./internal");
|
|
9
11
|
|
|
12
|
+
var _bottleneck = _interopRequireDefault(require("bottleneck"));
|
|
13
|
+
|
|
14
|
+
const batcher = new _bottleneck.default.Batcher({
|
|
15
|
+
maxTime: 10,
|
|
16
|
+
maxSize: 10000
|
|
17
|
+
});
|
|
18
|
+
batcher.on(`batch`, batch => {
|
|
19
|
+
_.store.dispatch((0, _internal.createPageDependency)(batch));
|
|
20
|
+
});
|
|
21
|
+
|
|
10
22
|
const createPageDependency = ({
|
|
11
23
|
path,
|
|
12
24
|
nodeId,
|
|
@@ -42,11 +54,11 @@ const createPageDependency = ({
|
|
|
42
54
|
} // It's new, let's dispatch it
|
|
43
55
|
|
|
44
56
|
|
|
45
|
-
|
|
57
|
+
batcher.add({
|
|
46
58
|
path,
|
|
47
59
|
nodeId,
|
|
48
60
|
connection
|
|
49
|
-
})
|
|
61
|
+
});
|
|
50
62
|
};
|
|
51
63
|
|
|
52
64
|
exports.createPageDependency = createPageDependency;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/actions/add-page-dependency.ts"],"names":["createPageDependency","path","nodeId","connection","queries","
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/actions/add-page-dependency.ts"],"names":["batcher","Bottleneck","Batcher","maxTime","maxSize","on","batch","store","dispatch","createPageDependency","path","nodeId","connection","queries","getState","nodeDependencyExists","connectionDependencyExists","byNode","has","get","byConnection","add"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAEA,MAAMA,OAAO,GAAG,IAAIC,oBAAWC,OAAf,CAAuB;AACrCC,EAAAA,OAAO,EAAE,EAD4B;AAErCC,EAAAA,OAAO,EAAE;AAF4B,CAAvB,CAAhB;AAKAJ,OAAO,CAACK,EAAR,CAAY,OAAZ,EAAoBC,KAAK,IAAI;AAC3BC,UAAMC,QAAN,CAAe,oCAA6BF,KAA7B,CAAf;AACD,CAFD;;AAIO,MAAMG,oBAAoB,GAAG,CAAC;AACnCC,EAAAA,IADmC;AAEnCC,EAAAA,MAFmC;AAGnCC,EAAAA;AAHmC,CAAD,KAQxB;AACV,QAAM;AAAEC,IAAAA;AAAF,MAAcN,QAAMO,QAAN,EAApB,CADU,CAGV;AACA;;;AACA,MAAIC,oBAAoB,GAAG,KAA3B;AACA,MAAIC,0BAA0B,GAAG,KAAjC;;AACA,MAAI,CAACL,MAAL,EAAa;AACXI,IAAAA,oBAAoB,GAAG,IAAvB;AACD;;AACD,MACEJ,MAAM,IACNE,OAAO,CAACI,MAAR,CAAeC,GAAf,CAAmBP,MAAnB,CADA,IAEAE,OAAO,CAACI,MAAR,CAAeE,GAAf,CAAmBR,MAAnB,EAA4BO,GAA5B,CAAgCR,IAAhC,CAHF,EAIE;AACAK,IAAAA,oBAAoB,GAAG,IAAvB;AACD;;AACD,MAAI,CAACH,UAAL,EAAiB;AACfI,IAAAA,0BAA0B,GAAG,IAA7B;AACD;;AACD,MACEJ,UAAU,IACVC,OAAO,CAACO,YAAR,CAAqBF,GAArB,CAAyBN,UAAzB,CADA,IAEAC,OAAO,CAACO,YAAR,CAAqBD,GAArB,CAAyBP,UAAzB,EAAsCM,GAAtC,CAA0CR,IAA1C,CAHF,EAIE;AACAM,IAAAA,0BAA0B,GAAG,IAA7B;AACD;;AACD,MAAID,oBAAoB,IAAIC,0BAA5B,EAAwD;AACtD;AACD,GA7BS,CA+BV;;;AACAhB,EAAAA,OAAO,CAACqB,GAAR,CAAY;AAAEX,IAAAA,IAAF;AAAQC,IAAAA,MAAR;AAAgBC,IAAAA;AAAhB,GAAZ;AACD,CAzCM","sourcesContent":["import { store } from \"../\"\n\nimport { createPageDependency as internalCreatePageDependency } from \"./internal\"\nimport Bottleneck from \"bottleneck\"\n\nconst batcher = new Bottleneck.Batcher({\n maxTime: 10,\n maxSize: 10000,\n})\n\nbatcher.on(`batch`, batch => {\n store.dispatch(internalCreatePageDependency(batch))\n})\n\nexport const createPageDependency = ({\n path,\n nodeId,\n connection,\n}: {\n path: string\n nodeId: string\n connection?: string\n}): void => {\n const { queries } = store.getState()\n\n // Check that the dependencies aren't already recorded so we\n // can avoid creating lots of very noisy actions.\n let nodeDependencyExists = false\n let connectionDependencyExists = false\n if (!nodeId) {\n nodeDependencyExists = true\n }\n if (\n nodeId &&\n queries.byNode.has(nodeId) &&\n queries.byNode.get(nodeId)!.has(path)\n ) {\n nodeDependencyExists = true\n }\n if (!connection) {\n connectionDependencyExists = true\n }\n if (\n connection &&\n queries.byConnection.has(connection) &&\n queries.byConnection.get(connection)!.has(path)\n ) {\n connectionDependencyExists = true\n }\n if (nodeDependencyExists && connectionDependencyExists) {\n return\n }\n\n // It's new, let's dispatch it\n batcher.add({ path, nodeId, connection })\n}\n"],"file":"add-page-dependency.js"}
|
|
@@ -18,19 +18,11 @@ var _manager = require("../../utils/jobs/manager");
|
|
|
18
18
|
* internal use only.
|
|
19
19
|
* @private
|
|
20
20
|
*/
|
|
21
|
-
const createPageDependency = ({
|
|
22
|
-
path,
|
|
23
|
-
nodeId,
|
|
24
|
-
connection
|
|
25
|
-
}, plugin = ``) => {
|
|
21
|
+
const createPageDependency = (batch, plugin = ``) => {
|
|
26
22
|
return {
|
|
27
23
|
type: `CREATE_COMPONENT_DEPENDENCY`,
|
|
28
24
|
plugin,
|
|
29
|
-
payload:
|
|
30
|
-
path,
|
|
31
|
-
nodeId,
|
|
32
|
-
connection
|
|
33
|
-
}
|
|
25
|
+
payload: batch
|
|
34
26
|
};
|
|
35
27
|
};
|
|
36
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/actions/internal.ts"],"names":["createPageDependency","path","nodeId","connection","plugin","type","payload","deleteComponentsDependencies","paths","replaceComponentQuery","query","componentPath","apiFinished","replaceStaticQuery","args","queryExtracted","traceId","setGraphQLDefinitions","definitionsByName","queryExtractionGraphQLError","error","queryExtractedBabelSuccess","queryExtractionBabelError","setProgramStatus","status","pageQueryRun","queryStart","isPage","clearDirtyQueriesListToEmitViaWebsocket","removeStaleJob","contentDigest","setSiteConfig","config","result","gatsbyConfigSchema","validate","normalizedPayload","value","hasUnknownKeys","details","filter","Array","isArray","length","errorMessages","map","unknown","context","message","key","suggestion","reporter","panic","id","sourceMessage","join","setFunctions","functions","deleteNodeManifests","createJobV2FromInternalJob","internalJob","dispatch","getState","jobContentDigest","currentState","jobsV2","complete","has","Promise","resolve","get","inProgressJobPromise","job","name","enqueuedJobPromise","then"],"mappings":"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","sourcesContent":["import { IDeleteNodeManifests } from \"./../types\"\nimport reporter from \"gatsby-cli/lib/reporter\"\n\nimport {\n IGatsbyConfig,\n IGatsbyPlugin,\n ProgramStatus,\n ICreatePageDependencyAction,\n IDeleteComponentDependenciesAction,\n IReplaceComponentQueryAction,\n IReplaceStaticQueryAction,\n IQueryExtractedAction,\n IQueryExtractionGraphQLErrorAction,\n IQueryExtractedBabelSuccessAction,\n IQueryExtractionBabelErrorAction,\n ISetProgramStatusAction,\n IPageQueryRunAction,\n IRemoveStaleJobAction,\n ISetSiteConfig,\n ISetSiteFunctions,\n IGatsbyState,\n IDefinitionMeta,\n ISetGraphQLDefinitionsAction,\n IQueryStartAction,\n IApiFinishedAction,\n IQueryClearDirtyQueriesListToEmitViaWebsocket,\n ICreateJobV2FromInternalAction,\n} from \"../types\"\n\nimport { gatsbyConfigSchema } from \"../../joi-schemas/joi\"\nimport { didYouMean } from \"../../utils/did-you-mean\"\nimport {\n enqueueJob,\n InternalJob,\n removeInProgressJob,\n getInProcessJobPromise,\n} from \"../../utils/jobs/manager\"\n\n/**\n * Create a dependency between a page and data. Probably for\n * internal use only.\n * @private\n */\nexport const createPageDependency = (\n {\n path,\n nodeId,\n connection,\n }: { path: string; nodeId?: string; connection?: string },\n plugin = ``\n): ICreatePageDependencyAction => {\n return {\n type: `CREATE_COMPONENT_DEPENDENCY`,\n plugin,\n payload: {\n path,\n nodeId,\n connection,\n },\n }\n}\n\n/**\n * Delete dependencies between an array of pages and data. Probably for\n * internal use only. Used when deleting pages.\n * @private\n */\nexport const deleteComponentsDependencies = (\n paths: Array<string>\n): IDeleteComponentDependenciesAction => {\n return {\n type: `DELETE_COMPONENTS_DEPENDENCIES`,\n payload: {\n paths,\n },\n }\n}\n\n/**\n * When the query watcher extracts a GraphQL query, it calls\n * this to store the query with its component.\n * @private\n */\nexport const replaceComponentQuery = ({\n query,\n componentPath,\n}: {\n query: string\n componentPath: string\n}): IReplaceComponentQueryAction => {\n return {\n type: `REPLACE_COMPONENT_QUERY`,\n payload: {\n query,\n componentPath,\n },\n }\n}\n\nexport const apiFinished = (\n payload: IApiFinishedAction[\"payload\"]\n): IApiFinishedAction => {\n return {\n type: `API_FINISHED`,\n payload,\n }\n}\n\n/**\n * When the query watcher extracts a \"static\" GraphQL query from <StaticQuery>\n * components, it calls this to store the query with its component.\n * @private\n */\nexport const replaceStaticQuery = (\n args: {\n name: string\n componentPath: string\n id: string\n query: string\n hash: string\n },\n plugin: IGatsbyPlugin | null | undefined = null\n): IReplaceStaticQueryAction => {\n return {\n type: `REPLACE_STATIC_QUERY`,\n plugin,\n payload: args,\n }\n}\n\n/**\n *\n * Report that a query has been extracted from a component. Used by\n * query-compiler.js.\n * @private\n */\nexport const queryExtracted = (\n { componentPath, query }: { componentPath: string; query: string },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryExtractedAction => {\n return {\n type: `QUERY_EXTRACTED`,\n plugin,\n traceId,\n payload: { componentPath, query },\n }\n}\n\n/**\n * Set Definitions for fragment extraction, etc.\n *\n * Used by developer tools such as vscode-graphql & graphiql\n *\n * query-compiler.js.\n * @private\n */\nexport const setGraphQLDefinitions = (\n definitionsByName: Map<string, IDefinitionMeta>\n): ISetGraphQLDefinitionsAction => {\n return {\n type: `SET_GRAPHQL_DEFINITIONS`,\n payload: definitionsByName,\n }\n}\n\n/**\n *\n * Report that the Relay Compiler found a graphql error when attempting to extract a query\n * @private\n */\nexport const queryExtractionGraphQLError = (\n { componentPath, error }: { componentPath: string; error: string },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryExtractionGraphQLErrorAction => {\n return {\n type: `QUERY_EXTRACTION_GRAPHQL_ERROR`,\n plugin,\n traceId,\n payload: { componentPath, error },\n }\n}\n\n/**\n *\n * Report that babel was able to extract the graphql query.\n * Indicates that the file is free of JS errors.\n * @private\n */\nexport const queryExtractedBabelSuccess = (\n { componentPath },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryExtractedBabelSuccessAction => {\n return {\n type: `QUERY_EXTRACTION_BABEL_SUCCESS`,\n plugin,\n traceId,\n payload: { componentPath },\n }\n}\n\n/**\n *\n * Report that the Relay Compiler found a babel error when attempting to extract a query\n * @private\n */\nexport const queryExtractionBabelError = (\n { componentPath, error }: { componentPath: string; error: Error },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryExtractionBabelErrorAction => {\n return {\n type: `QUERY_EXTRACTION_BABEL_ERROR`,\n plugin,\n traceId,\n payload: { componentPath, error },\n }\n}\n\n/**\n * Set overall program status e.g. `BOOTSTRAPING` or `BOOTSTRAP_FINISHED`.\n * @private\n */\nexport const setProgramStatus = (\n status: ProgramStatus,\n plugin: IGatsbyPlugin,\n traceId?: string\n): ISetProgramStatusAction => {\n return {\n type: `SET_PROGRAM_STATUS`,\n plugin,\n traceId,\n payload: status,\n }\n}\n\n/**\n * Broadcast that a page's query was run.\n * @private\n */\nexport const pageQueryRun = (\n payload: IPageQueryRunAction[\"payload\"],\n plugin: IGatsbyPlugin,\n traceId?: string\n): IPageQueryRunAction => {\n return {\n type: `PAGE_QUERY_RUN`,\n plugin,\n traceId,\n payload,\n }\n}\n\nexport const queryStart = (\n { path, componentPath, isPage },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryStartAction => {\n return {\n type: `QUERY_START`,\n plugin,\n traceId,\n payload: { path, componentPath, isPage },\n }\n}\n\nexport const clearDirtyQueriesListToEmitViaWebsocket =\n (): IQueryClearDirtyQueriesListToEmitViaWebsocket => {\n return {\n type: `QUERY_CLEAR_DIRTY_QUERIES_LIST_TO_EMIT_VIA_WEBSOCKET`,\n }\n }\n\n/**\n * Remove jobs which are marked as stale (inputPath doesn't exists)\n * @private\n */\nexport const removeStaleJob = (\n contentDigest: string,\n plugin?: IGatsbyPlugin,\n traceId?: string\n): IRemoveStaleJobAction => {\n return {\n type: `REMOVE_STALE_JOB_V2`,\n plugin,\n traceId,\n payload: {\n contentDigest,\n },\n }\n}\n\n/**\n * Set gatsby config\n * @private\n */\nexport const setSiteConfig = (config?: unknown): ISetSiteConfig => {\n const result = gatsbyConfigSchema.validate(config || {})\n const normalizedPayload: IGatsbyConfig = result.value\n\n if (result.error) {\n const hasUnknownKeys = result.error.details.filter(\n details => details.type === `object.unknown`\n )\n\n if (Array.isArray(hasUnknownKeys) && hasUnknownKeys.length) {\n const errorMessages = hasUnknownKeys.map(unknown => {\n const { context, message } = unknown\n const key = context?.key\n const suggestion = key && didYouMean(key)\n\n if (suggestion) {\n return `${message}. ${suggestion}`\n }\n\n return message\n })\n\n reporter.panic({\n id: `10122`,\n context: {\n sourceMessage: errorMessages.join(`\\n`),\n },\n })\n }\n\n reporter.panic({\n id: `10122`,\n context: {\n sourceMessage: result.error.message,\n },\n })\n }\n\n return {\n type: `SET_SITE_CONFIG`,\n payload: normalizedPayload,\n }\n}\n\n/**\n * Set gatsby functions\n * @private\n */\nexport const setFunctions = (\n functions: IGatsbyState[\"functions\"]\n): ISetSiteFunctions => {\n return {\n type: `SET_SITE_FUNCTIONS`,\n payload: functions,\n }\n}\n\nexport const deleteNodeManifests = (): IDeleteNodeManifests => {\n return {\n type: `DELETE_NODE_MANIFESTS`,\n }\n}\n\nexport const createJobV2FromInternalJob =\n (internalJob: InternalJob): ICreateJobV2FromInternalAction =>\n (dispatch, getState): Promise<Record<string, unknown>> => {\n const jobContentDigest = internalJob.contentDigest\n const currentState = getState()\n\n // Check if we already ran this job before, if yes we return the result\n // We have an inflight (in progress) queue inside the jobs manager to make sure\n // we don't waste resources twice during the process\n if (\n currentState.jobsV2 &&\n currentState.jobsV2.complete.has(jobContentDigest)\n ) {\n return Promise.resolve(\n currentState.jobsV2.complete.get(jobContentDigest)!.result\n )\n }\n\n const inProgressJobPromise = getInProcessJobPromise(jobContentDigest)\n if (inProgressJobPromise) {\n return inProgressJobPromise\n }\n\n dispatch({\n type: `CREATE_JOB_V2`,\n payload: {\n job: internalJob,\n },\n plugin: { name: internalJob.plugin.name },\n })\n\n const enqueuedJobPromise = enqueueJob(internalJob)\n return enqueuedJobPromise.then(result => {\n // store the result in redux so we have it for the next run\n dispatch({\n type: `END_JOB_V2`,\n plugin: { name: internalJob.plugin.name },\n payload: {\n jobContentDigest,\n result,\n },\n })\n\n // remove the job from our inProgressJobQueue as it's available in our done state.\n // this is a perf optimisations so we don't grow our memory too much when using gatsby preview\n removeInProgressJob(jobContentDigest)\n\n return result\n })\n }\n"],"file":"internal.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/actions/internal.ts"],"names":["createPageDependency","batch","plugin","type","payload","deleteComponentsDependencies","paths","replaceComponentQuery","query","componentPath","apiFinished","replaceStaticQuery","args","queryExtracted","traceId","setGraphQLDefinitions","definitionsByName","queryExtractionGraphQLError","error","queryExtractedBabelSuccess","queryExtractionBabelError","setProgramStatus","status","pageQueryRun","queryStart","path","isPage","clearDirtyQueriesListToEmitViaWebsocket","removeStaleJob","contentDigest","setSiteConfig","config","result","gatsbyConfigSchema","validate","normalizedPayload","value","hasUnknownKeys","details","filter","Array","isArray","length","errorMessages","map","unknown","context","message","key","suggestion","reporter","panic","id","sourceMessage","join","setFunctions","functions","deleteNodeManifests","createJobV2FromInternalJob","internalJob","dispatch","getState","jobContentDigest","currentState","jobsV2","complete","has","Promise","resolve","get","inProgressJobPromise","job","name","enqueuedJobPromise","then"],"mappings":"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","sourcesContent":["import { IDeleteNodeManifests } from \"./../types\"\nimport reporter from \"gatsby-cli/lib/reporter\"\n\nimport {\n IGatsbyConfig,\n IGatsbyPlugin,\n ProgramStatus,\n ICreatePageDependencyAction,\n IDeleteComponentDependenciesAction,\n IReplaceComponentQueryAction,\n IReplaceStaticQueryAction,\n IQueryExtractedAction,\n IQueryExtractionGraphQLErrorAction,\n IQueryExtractedBabelSuccessAction,\n IQueryExtractionBabelErrorAction,\n ISetProgramStatusAction,\n IPageQueryRunAction,\n IRemoveStaleJobAction,\n ISetSiteConfig,\n ISetSiteFunctions,\n IGatsbyState,\n IDefinitionMeta,\n ISetGraphQLDefinitionsAction,\n IQueryStartAction,\n IApiFinishedAction,\n IQueryClearDirtyQueriesListToEmitViaWebsocket,\n ICreateJobV2FromInternalAction,\n} from \"../types\"\n\nimport { gatsbyConfigSchema } from \"../../joi-schemas/joi\"\nimport { didYouMean } from \"../../utils/did-you-mean\"\nimport {\n enqueueJob,\n InternalJob,\n removeInProgressJob,\n getInProcessJobPromise,\n} from \"../../utils/jobs/manager\"\n\n/**\n * Create a dependency between a page and data. Probably for\n * internal use only.\n * @private\n */\nexport const createPageDependency = (\n batch,\n plugin = ``\n): ICreatePageDependencyAction => {\n return {\n type: `CREATE_COMPONENT_DEPENDENCY`,\n plugin,\n payload: batch,\n }\n}\n\n/**\n * Delete dependencies between an array of pages and data. Probably for\n * internal use only. Used when deleting pages.\n * @private\n */\nexport const deleteComponentsDependencies = (\n paths: Array<string>\n): IDeleteComponentDependenciesAction => {\n return {\n type: `DELETE_COMPONENTS_DEPENDENCIES`,\n payload: {\n paths,\n },\n }\n}\n\n/**\n * When the query watcher extracts a GraphQL query, it calls\n * this to store the query with its component.\n * @private\n */\nexport const replaceComponentQuery = ({\n query,\n componentPath,\n}: {\n query: string\n componentPath: string\n}): IReplaceComponentQueryAction => {\n return {\n type: `REPLACE_COMPONENT_QUERY`,\n payload: {\n query,\n componentPath,\n },\n }\n}\n\nexport const apiFinished = (\n payload: IApiFinishedAction[\"payload\"]\n): IApiFinishedAction => {\n return {\n type: `API_FINISHED`,\n payload,\n }\n}\n\n/**\n * When the query watcher extracts a \"static\" GraphQL query from <StaticQuery>\n * components, it calls this to store the query with its component.\n * @private\n */\nexport const replaceStaticQuery = (\n args: {\n name: string\n componentPath: string\n id: string\n query: string\n hash: string\n },\n plugin: IGatsbyPlugin | null | undefined = null\n): IReplaceStaticQueryAction => {\n return {\n type: `REPLACE_STATIC_QUERY`,\n plugin,\n payload: args,\n }\n}\n\n/**\n *\n * Report that a query has been extracted from a component. Used by\n * query-compiler.js.\n * @private\n */\nexport const queryExtracted = (\n { componentPath, query }: { componentPath: string; query: string },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryExtractedAction => {\n return {\n type: `QUERY_EXTRACTED`,\n plugin,\n traceId,\n payload: { componentPath, query },\n }\n}\n\n/**\n * Set Definitions for fragment extraction, etc.\n *\n * Used by developer tools such as vscode-graphql & graphiql\n *\n * query-compiler.js.\n * @private\n */\nexport const setGraphQLDefinitions = (\n definitionsByName: Map<string, IDefinitionMeta>\n): ISetGraphQLDefinitionsAction => {\n return {\n type: `SET_GRAPHQL_DEFINITIONS`,\n payload: definitionsByName,\n }\n}\n\n/**\n *\n * Report that the Relay Compiler found a graphql error when attempting to extract a query\n * @private\n */\nexport const queryExtractionGraphQLError = (\n { componentPath, error }: { componentPath: string; error: string },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryExtractionGraphQLErrorAction => {\n return {\n type: `QUERY_EXTRACTION_GRAPHQL_ERROR`,\n plugin,\n traceId,\n payload: { componentPath, error },\n }\n}\n\n/**\n *\n * Report that babel was able to extract the graphql query.\n * Indicates that the file is free of JS errors.\n * @private\n */\nexport const queryExtractedBabelSuccess = (\n { componentPath },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryExtractedBabelSuccessAction => {\n return {\n type: `QUERY_EXTRACTION_BABEL_SUCCESS`,\n plugin,\n traceId,\n payload: { componentPath },\n }\n}\n\n/**\n *\n * Report that the Relay Compiler found a babel error when attempting to extract a query\n * @private\n */\nexport const queryExtractionBabelError = (\n { componentPath, error }: { componentPath: string; error: Error },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryExtractionBabelErrorAction => {\n return {\n type: `QUERY_EXTRACTION_BABEL_ERROR`,\n plugin,\n traceId,\n payload: { componentPath, error },\n }\n}\n\n/**\n * Set overall program status e.g. `BOOTSTRAPING` or `BOOTSTRAP_FINISHED`.\n * @private\n */\nexport const setProgramStatus = (\n status: ProgramStatus,\n plugin: IGatsbyPlugin,\n traceId?: string\n): ISetProgramStatusAction => {\n return {\n type: `SET_PROGRAM_STATUS`,\n plugin,\n traceId,\n payload: status,\n }\n}\n\n/**\n * Broadcast that a page's query was run.\n * @private\n */\nexport const pageQueryRun = (\n payload: IPageQueryRunAction[\"payload\"],\n plugin: IGatsbyPlugin,\n traceId?: string\n): IPageQueryRunAction => {\n return {\n type: `PAGE_QUERY_RUN`,\n plugin,\n traceId,\n payload,\n }\n}\n\nexport const queryStart = (\n { path, componentPath, isPage },\n plugin: IGatsbyPlugin,\n traceId?: string\n): IQueryStartAction => {\n return {\n type: `QUERY_START`,\n plugin,\n traceId,\n payload: { path, componentPath, isPage },\n }\n}\n\nexport const clearDirtyQueriesListToEmitViaWebsocket =\n (): IQueryClearDirtyQueriesListToEmitViaWebsocket => {\n return {\n type: `QUERY_CLEAR_DIRTY_QUERIES_LIST_TO_EMIT_VIA_WEBSOCKET`,\n }\n }\n\n/**\n * Remove jobs which are marked as stale (inputPath doesn't exists)\n * @private\n */\nexport const removeStaleJob = (\n contentDigest: string,\n plugin?: IGatsbyPlugin,\n traceId?: string\n): IRemoveStaleJobAction => {\n return {\n type: `REMOVE_STALE_JOB_V2`,\n plugin,\n traceId,\n payload: {\n contentDigest,\n },\n }\n}\n\n/**\n * Set gatsby config\n * @private\n */\nexport const setSiteConfig = (config?: unknown): ISetSiteConfig => {\n const result = gatsbyConfigSchema.validate(config || {})\n const normalizedPayload: IGatsbyConfig = result.value\n\n if (result.error) {\n const hasUnknownKeys = result.error.details.filter(\n details => details.type === `object.unknown`\n )\n\n if (Array.isArray(hasUnknownKeys) && hasUnknownKeys.length) {\n const errorMessages = hasUnknownKeys.map(unknown => {\n const { context, message } = unknown\n const key = context?.key\n const suggestion = key && didYouMean(key)\n\n if (suggestion) {\n return `${message}. ${suggestion}`\n }\n\n return message\n })\n\n reporter.panic({\n id: `10122`,\n context: {\n sourceMessage: errorMessages.join(`\\n`),\n },\n })\n }\n\n reporter.panic({\n id: `10122`,\n context: {\n sourceMessage: result.error.message,\n },\n })\n }\n\n return {\n type: `SET_SITE_CONFIG`,\n payload: normalizedPayload,\n }\n}\n\n/**\n * Set gatsby functions\n * @private\n */\nexport const setFunctions = (\n functions: IGatsbyState[\"functions\"]\n): ISetSiteFunctions => {\n return {\n type: `SET_SITE_FUNCTIONS`,\n payload: functions,\n }\n}\n\nexport const deleteNodeManifests = (): IDeleteNodeManifests => {\n return {\n type: `DELETE_NODE_MANIFESTS`,\n }\n}\n\nexport const createJobV2FromInternalJob =\n (internalJob: InternalJob): ICreateJobV2FromInternalAction =>\n (dispatch, getState): Promise<Record<string, unknown>> => {\n const jobContentDigest = internalJob.contentDigest\n const currentState = getState()\n\n // Check if we already ran this job before, if yes we return the result\n // We have an inflight (in progress) queue inside the jobs manager to make sure\n // we don't waste resources twice during the process\n if (\n currentState.jobsV2 &&\n currentState.jobsV2.complete.has(jobContentDigest)\n ) {\n return Promise.resolve(\n currentState.jobsV2.complete.get(jobContentDigest)!.result\n )\n }\n\n const inProgressJobPromise = getInProcessJobPromise(jobContentDigest)\n if (inProgressJobPromise) {\n return inProgressJobPromise\n }\n\n dispatch({\n type: `CREATE_JOB_V2`,\n payload: {\n job: internalJob,\n },\n plugin: { name: internalJob.plugin.name },\n })\n\n const enqueuedJobPromise = enqueueJob(internalJob)\n return enqueuedJobPromise.then(result => {\n // store the result in redux so we have it for the next run\n dispatch({\n type: `END_JOB_V2`,\n plugin: { name: internalJob.plugin.name },\n payload: {\n jobContentDigest,\n result,\n },\n })\n\n // remove the job from our inProgressJobQueue as it's available in our done state.\n // this is a perf optimisations so we don't grow our memory too much when using gatsby preview\n removeInProgressJob(jobContentDigest)\n\n return result\n })\n }\n"],"file":"internal.js"}
|
|
@@ -180,20 +180,19 @@ function queriesReducer(state = initialState(), action) {
|
|
|
180
180
|
|
|
181
181
|
case `CREATE_COMPONENT_DEPENDENCY`:
|
|
182
182
|
{
|
|
183
|
-
|
|
183
|
+
action.payload.forEach(({
|
|
184
184
|
path: queryId,
|
|
185
185
|
nodeId,
|
|
186
186
|
connection
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
if (connection) {
|
|
194
|
-
state = addConnectionDependency(state, queryId, connection);
|
|
195
|
-
}
|
|
187
|
+
}) => {
|
|
188
|
+
if (nodeId) {
|
|
189
|
+
state = addNodeDependency(state, queryId, nodeId);
|
|
190
|
+
}
|
|
196
191
|
|
|
192
|
+
if (connection) {
|
|
193
|
+
state = addConnectionDependency(state, queryId, connection);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
197
196
|
return state;
|
|
198
197
|
}
|
|
199
198
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/reducers/queries.ts"],"names":["FLAG_DIRTY_NEW_PAGE","FLAG_DIRTY_TEXT","FLAG_DIRTY_DATA","FLAG_DIRTY_PAGE_CONTEXT","FLAG_ERROR_EXTRACTION","FLAG_RUNNING_INFLIGHT","initialState","byNode","Map","byConnection","queryNodes","trackedQueries","trackedComponents","deletedQueries","Set","dirtyQueriesListToEmitViaWebsocket","initialQueryState","dirty","running","initialComponentState","componentPath","query","pages","errors","queriesReducer","state","action","type","path","payload","get","contextModified","registerQuery","setFlag","trackDirtyQuery","registerComponent","add","delete","apiName","queryId","component","values","clearNodeDependencies","clearConnectionDependencies","clear","hasFlag","set","id","nodeId","connection","addNodeDependency","addConnectionDependency","node","queriesByNode","queriesByConnection","internal","assertCorrectWorkerState","mergeWorkerDataDependencies","allFlags","flag","nodeQueries","queryIds","queryNodeIds","process","env","GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND","push","workerStateChunk","queryState","queryStateChunk","keys","queries","connectionName","workerId","size","Error"],"mappings":"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","sourcesContent":["import {\n ActionsUnion,\n IComponentState,\n IGatsbyState,\n IQueryState,\n} from \"../types\"\n\ntype QueryId = string // page query path or static query id\ntype ComponentPath = string\ntype NodeId = string\ntype ConnectionName = string\n\nexport const FLAG_DIRTY_NEW_PAGE = 0b0001\nexport const FLAG_DIRTY_TEXT = 0b0010\nexport const FLAG_DIRTY_DATA = 0b0100\nexport const FLAG_DIRTY_PAGE_CONTEXT = 0b1000\n\nexport const FLAG_ERROR_EXTRACTION = 0b0001\n\nexport const FLAG_RUNNING_INFLIGHT = 0b0001\n\nconst initialState = (): IGatsbyState[\"queries\"] => {\n return {\n byNode: new Map<NodeId, Set<QueryId>>(),\n byConnection: new Map<ConnectionName, Set<QueryId>>(),\n queryNodes: new Map<QueryId, Set<NodeId>>(),\n trackedQueries: new Map<QueryId, IQueryState>(),\n trackedComponents: new Map<ComponentPath, IComponentState>(),\n deletedQueries: new Set<QueryId>(),\n dirtyQueriesListToEmitViaWebsocket: [],\n }\n}\n\nconst initialQueryState = (): IQueryState => {\n return {\n dirty: -1, // unknown, must be set right after init\n running: 0,\n }\n}\n\nconst initialComponentState = (): IComponentState => {\n return {\n componentPath: ``,\n query: ``,\n pages: new Set<QueryId>(),\n errors: 0,\n // TODO: staticQueries: new Set<QueryId>()\n }\n}\n\n/**\n * Tracks query dirtiness. Dirty queries are queries that:\n *\n * - depend on nodes or node collections (via `actions.createPageDependency`) that have changed.\n * - have been recently extracted (or their query text has changed)\n * - belong to newly created pages (or pages with modified context)\n *\n * Dirty queries must be re-ran.\n */\nexport function queriesReducer(\n state: IGatsbyState[\"queries\"] = initialState(),\n action: ActionsUnion\n): IGatsbyState[\"queries\"] {\n switch (action.type) {\n case `DELETE_CACHE`:\n return initialState()\n\n case `CREATE_PAGE`: {\n const { path, componentPath } = action.payload\n let query = state.trackedQueries.get(path)\n if (!query || action.contextModified) {\n query = registerQuery(state, path)\n query.dirty = setFlag(\n query.dirty,\n action.contextModified ? FLAG_DIRTY_PAGE_CONTEXT : FLAG_DIRTY_NEW_PAGE\n )\n state = trackDirtyQuery(state, path)\n }\n registerComponent(state, componentPath).pages.add(path)\n state.deletedQueries.delete(path)\n return state\n }\n case `DELETE_PAGE`: {\n // Don't actually remove the page query from trackedQueries, just mark it as \"deleted\". Why?\n // We promote a technique of a consecutive deletePage/createPage calls in onCreatePage hook,\n // see https://www.gatsbyjs.com/docs/creating-and-modifying-pages/#pass-context-to-pages\n // If we remove a query and then re-add, it will be marked as dirty.\n // This is OK for cold cache but with warm cache we will re-run all of those queries (unnecessarily).\n // We will reconcile the state after createPages API call and actually delete those queries.\n state.deletedQueries.add(action.payload.path)\n return state\n }\n case `API_FINISHED`: {\n if (action.payload.apiName !== `createPages`) {\n return state\n }\n for (const queryId of state.deletedQueries) {\n for (const component of state.trackedComponents.values()) {\n component.pages.delete(queryId)\n }\n state = clearNodeDependencies(state, queryId)\n state = clearConnectionDependencies(state, queryId)\n state.trackedQueries.delete(queryId)\n }\n state.deletedQueries.clear()\n return state\n }\n case `QUERY_EXTRACTED`: {\n // Note: this action is called even in case of\n // extraction error or missing query (with query === ``)\n // TODO: use hash instead of a query text\n const { componentPath, query } = action.payload\n const component = registerComponent(state, componentPath)\n if (hasFlag(component.errors, FLAG_ERROR_EXTRACTION)) {\n return state\n }\n if (component.query !== query) {\n // Invalidate all pages associated with a component when query text changes\n for (const queryId of component.pages) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_TEXT)\n state = trackDirtyQuery(state, queryId)\n }\n }\n component.query = query\n }\n return state\n }\n case `QUERY_EXTRACTION_GRAPHQL_ERROR`:\n case `QUERY_EXTRACTION_BABEL_ERROR`:\n case `QUERY_EXTRACTION_BABEL_SUCCESS`: {\n const { componentPath } = action.payload\n const component = registerComponent(state, componentPath)\n const set = action.type !== `QUERY_EXTRACTION_BABEL_SUCCESS`\n component.errors = setFlag(component.errors, FLAG_ERROR_EXTRACTION, set)\n return state\n }\n case `REPLACE_STATIC_QUERY`: {\n // Only called when static query text has changed, so no need to compare\n // TODO: unify the behavior?\n const query = registerQuery(state, action.payload.id)\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_TEXT)\n // static queries are not on demand, so skipping tracking which\n // queries were marked dirty recently\n // state = trackDirtyQuery(state, action.payload.id)\n state.deletedQueries.delete(action.payload.id)\n return state\n }\n case `REMOVE_STATIC_QUERY`: {\n state.deletedQueries.add(action.payload)\n return state\n }\n case `CREATE_COMPONENT_DEPENDENCY`: {\n const { path: queryId, nodeId, connection } = action.payload\n if (nodeId) {\n state = addNodeDependency(state, queryId, nodeId)\n }\n if (connection) {\n state = addConnectionDependency(state, queryId, connection)\n }\n return state\n }\n case `QUERY_START`: {\n // Reset data dependencies as they will be updated when running the query\n const { path } = action.payload\n state = clearNodeDependencies(state, path)\n state = clearConnectionDependencies(state, path)\n const query = state.trackedQueries.get(path)\n if (query) {\n query.running = setFlag(query.running, FLAG_RUNNING_INFLIGHT)\n }\n return state\n }\n case `CREATE_NODE`:\n case `DELETE_NODE`: {\n const node = action.payload\n if (!node) {\n return state\n }\n const queriesByNode = state.byNode.get(node.id) ?? []\n const queriesByConnection =\n state.byConnection.get(node.internal.type) ?? []\n\n for (const queryId of queriesByNode) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_DATA)\n state = trackDirtyQuery(state, queryId)\n }\n }\n for (const queryId of queriesByConnection) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_DATA)\n state = trackDirtyQuery(state, queryId)\n }\n }\n return state\n }\n case `PAGE_QUERY_RUN`: {\n const { path } = action.payload\n const query = registerQuery(state, path)\n query.dirty = 0\n query.running = 0 // TODO: also\n return state\n }\n case `SET_PROGRAM_STATUS`: {\n if (action.payload === `BOOTSTRAP_FINISHED`) {\n // Reset the running state (as it could've been persisted)\n for (const [, query] of state.trackedQueries) {\n query.running = 0\n }\n // Reset list of dirty queries (this is used only to notify runtime and it could've been persisted)\n state.dirtyQueriesListToEmitViaWebsocket = []\n }\n return state\n }\n case `QUERY_CLEAR_DIRTY_QUERIES_LIST_TO_EMIT_VIA_WEBSOCKET`: {\n state.dirtyQueriesListToEmitViaWebsocket = []\n return state\n }\n case `MERGE_WORKER_QUERY_STATE`: {\n assertCorrectWorkerState(action.payload)\n\n state = mergeWorkerDataDependencies(state, action.payload)\n return state\n }\n default:\n return state\n }\n}\n\nfunction setFlag(allFlags: number, flag: number, set = true): number {\n if (allFlags < 0) {\n allFlags = 0\n }\n return set ? allFlags | flag : allFlags & ~flag\n}\n\nexport function hasFlag(allFlags: number, flag: number): boolean {\n return allFlags >= 0 && (allFlags & flag) > 0\n}\n\nfunction addNodeDependency(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId,\n nodeId: NodeId\n): IGatsbyState[\"queries\"] {\n // Perf: using two-side maps.\n // Without additional `queryNodes` map we would have to loop through\n // all existing nodes in `clearNodeDependencies` to delete node <-> query dependency\n let nodeQueries = state.byNode.get(nodeId)\n if (!nodeQueries) {\n nodeQueries = new Set<QueryId>()\n state.byNode.set(nodeId, nodeQueries)\n }\n let queryNodes = state.queryNodes.get(queryId)\n if (!queryNodes) {\n queryNodes = new Set<NodeId>()\n state.queryNodes.set(queryId, queryNodes)\n }\n nodeQueries.add(queryId)\n queryNodes.add(nodeId)\n return state\n}\n\nfunction addConnectionDependency(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId,\n connection: ConnectionName\n): IGatsbyState[\"queries\"] {\n // Note: not using two-side maps for connections as associated overhead\n // for small number of elements is greater then benefits, so no perf. gains\n let queryIds = state.byConnection.get(connection)\n if (!queryIds) {\n queryIds = new Set()\n state.byConnection.set(connection, queryIds)\n }\n queryIds.add(queryId)\n return state\n}\n\nfunction clearNodeDependencies(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n const queryNodeIds = state.queryNodes.get(queryId) ?? new Set()\n for (const nodeId of queryNodeIds) {\n const nodeQueries = state.byNode.get(nodeId)\n if (nodeQueries) {\n nodeQueries.delete(queryId)\n }\n }\n return state\n}\n\nfunction clearConnectionDependencies(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n for (const [, queryIds] of state.byConnection) {\n queryIds.delete(queryId)\n }\n return state\n}\n\nfunction registerQuery(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IQueryState {\n let query = state.trackedQueries.get(queryId)\n if (!query) {\n query = initialQueryState()\n state.trackedQueries.set(queryId, query)\n }\n return query\n}\n\nfunction registerComponent(\n state: IGatsbyState[\"queries\"],\n componentPath: string\n): IComponentState {\n let component = state.trackedComponents.get(componentPath)\n if (!component) {\n component = initialComponentState()\n component.componentPath = componentPath\n state.trackedComponents.set(componentPath, component)\n }\n return component\n}\n\nfunction trackDirtyQuery(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n if (process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND) {\n state.dirtyQueriesListToEmitViaWebsocket.push(queryId)\n }\n\n return state\n}\n\ninterface IWorkerStateChunk {\n workerId: number\n queryStateChunk: IGatsbyState[\"queries\"]\n}\n\nfunction mergeWorkerDataDependencies(\n state: IGatsbyState[\"queries\"],\n workerStateChunk: IWorkerStateChunk\n): IGatsbyState[\"queries\"] {\n const queryState = workerStateChunk.queryStateChunk\n\n // First clear data dependencies for all queries tracked by worker\n for (const queryId of queryState.trackedQueries.keys()) {\n state = clearNodeDependencies(state, queryId)\n state = clearConnectionDependencies(state, queryId)\n }\n\n // Now re-add all data deps from worker\n for (const [nodeId, queries] of queryState.byNode) {\n for (const queryId of queries) {\n state = addNodeDependency(state, queryId, nodeId)\n }\n }\n for (const [connectionName, queries] of queryState.byConnection) {\n for (const queryId of queries) {\n state = addConnectionDependency(state, queryId, connectionName)\n }\n }\n return state\n}\n\nfunction assertCorrectWorkerState({\n queryStateChunk,\n workerId,\n}: IWorkerStateChunk): void {\n if (queryStateChunk.deletedQueries.size !== 0) {\n throw new Error(\n `Assertion failed: workerState.deletedQueries.size === 0 (worker #${workerId})`\n )\n }\n if (queryStateChunk.trackedComponents.size !== 0) {\n throw new Error(\n `Assertion failed: queryStateChunk.trackedComponents.size === 0 (worker #${workerId})`\n )\n }\n for (const query of queryStateChunk.trackedQueries.values()) {\n if (query.dirty) {\n throw new Error(\n `Assertion failed: all worker queries are not dirty (worker #${workerId})`\n )\n }\n if (query.running) {\n throw new Error(\n `Assertion failed: all worker queries are not running (worker #${workerId})`\n )\n }\n }\n}\n"],"file":"queries.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/reducers/queries.ts"],"names":["FLAG_DIRTY_NEW_PAGE","FLAG_DIRTY_TEXT","FLAG_DIRTY_DATA","FLAG_DIRTY_PAGE_CONTEXT","FLAG_ERROR_EXTRACTION","FLAG_RUNNING_INFLIGHT","initialState","byNode","Map","byConnection","queryNodes","trackedQueries","trackedComponents","deletedQueries","Set","dirtyQueriesListToEmitViaWebsocket","initialQueryState","dirty","running","initialComponentState","componentPath","query","pages","errors","queriesReducer","state","action","type","path","payload","get","contextModified","registerQuery","setFlag","trackDirtyQuery","registerComponent","add","delete","apiName","queryId","component","values","clearNodeDependencies","clearConnectionDependencies","clear","hasFlag","set","id","forEach","nodeId","connection","addNodeDependency","addConnectionDependency","node","queriesByNode","queriesByConnection","internal","assertCorrectWorkerState","mergeWorkerDataDependencies","allFlags","flag","nodeQueries","queryIds","queryNodeIds","process","env","GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND","push","workerStateChunk","queryState","queryStateChunk","keys","queries","connectionName","workerId","size","Error"],"mappings":"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","sourcesContent":["import {\n ActionsUnion,\n IComponentState,\n IGatsbyState,\n IQueryState,\n} from \"../types\"\n\ntype QueryId = string // page query path or static query id\ntype ComponentPath = string\ntype NodeId = string\ntype ConnectionName = string\n\nexport const FLAG_DIRTY_NEW_PAGE = 0b0001\nexport const FLAG_DIRTY_TEXT = 0b0010\nexport const FLAG_DIRTY_DATA = 0b0100\nexport const FLAG_DIRTY_PAGE_CONTEXT = 0b1000\n\nexport const FLAG_ERROR_EXTRACTION = 0b0001\n\nexport const FLAG_RUNNING_INFLIGHT = 0b0001\n\nconst initialState = (): IGatsbyState[\"queries\"] => {\n return {\n byNode: new Map<NodeId, Set<QueryId>>(),\n byConnection: new Map<ConnectionName, Set<QueryId>>(),\n queryNodes: new Map<QueryId, Set<NodeId>>(),\n trackedQueries: new Map<QueryId, IQueryState>(),\n trackedComponents: new Map<ComponentPath, IComponentState>(),\n deletedQueries: new Set<QueryId>(),\n dirtyQueriesListToEmitViaWebsocket: [],\n }\n}\n\nconst initialQueryState = (): IQueryState => {\n return {\n dirty: -1, // unknown, must be set right after init\n running: 0,\n }\n}\n\nconst initialComponentState = (): IComponentState => {\n return {\n componentPath: ``,\n query: ``,\n pages: new Set<QueryId>(),\n errors: 0,\n // TODO: staticQueries: new Set<QueryId>()\n }\n}\n\n/**\n * Tracks query dirtiness. Dirty queries are queries that:\n *\n * - depend on nodes or node collections (via `actions.createPageDependency`) that have changed.\n * - have been recently extracted (or their query text has changed)\n * - belong to newly created pages (or pages with modified context)\n *\n * Dirty queries must be re-ran.\n */\nexport function queriesReducer(\n state: IGatsbyState[\"queries\"] = initialState(),\n action: ActionsUnion\n): IGatsbyState[\"queries\"] {\n switch (action.type) {\n case `DELETE_CACHE`:\n return initialState()\n\n case `CREATE_PAGE`: {\n const { path, componentPath } = action.payload\n let query = state.trackedQueries.get(path)\n if (!query || action.contextModified) {\n query = registerQuery(state, path)\n query.dirty = setFlag(\n query.dirty,\n action.contextModified ? FLAG_DIRTY_PAGE_CONTEXT : FLAG_DIRTY_NEW_PAGE\n )\n state = trackDirtyQuery(state, path)\n }\n registerComponent(state, componentPath).pages.add(path)\n state.deletedQueries.delete(path)\n return state\n }\n case `DELETE_PAGE`: {\n // Don't actually remove the page query from trackedQueries, just mark it as \"deleted\". Why?\n // We promote a technique of a consecutive deletePage/createPage calls in onCreatePage hook,\n // see https://www.gatsbyjs.com/docs/creating-and-modifying-pages/#pass-context-to-pages\n // If we remove a query and then re-add, it will be marked as dirty.\n // This is OK for cold cache but with warm cache we will re-run all of those queries (unnecessarily).\n // We will reconcile the state after createPages API call and actually delete those queries.\n state.deletedQueries.add(action.payload.path)\n return state\n }\n case `API_FINISHED`: {\n if (action.payload.apiName !== `createPages`) {\n return state\n }\n for (const queryId of state.deletedQueries) {\n for (const component of state.trackedComponents.values()) {\n component.pages.delete(queryId)\n }\n state = clearNodeDependencies(state, queryId)\n state = clearConnectionDependencies(state, queryId)\n state.trackedQueries.delete(queryId)\n }\n state.deletedQueries.clear()\n return state\n }\n case `QUERY_EXTRACTED`: {\n // Note: this action is called even in case of\n // extraction error or missing query (with query === ``)\n // TODO: use hash instead of a query text\n const { componentPath, query } = action.payload\n const component = registerComponent(state, componentPath)\n if (hasFlag(component.errors, FLAG_ERROR_EXTRACTION)) {\n return state\n }\n if (component.query !== query) {\n // Invalidate all pages associated with a component when query text changes\n for (const queryId of component.pages) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_TEXT)\n state = trackDirtyQuery(state, queryId)\n }\n }\n component.query = query\n }\n return state\n }\n case `QUERY_EXTRACTION_GRAPHQL_ERROR`:\n case `QUERY_EXTRACTION_BABEL_ERROR`:\n case `QUERY_EXTRACTION_BABEL_SUCCESS`: {\n const { componentPath } = action.payload\n const component = registerComponent(state, componentPath)\n const set = action.type !== `QUERY_EXTRACTION_BABEL_SUCCESS`\n component.errors = setFlag(component.errors, FLAG_ERROR_EXTRACTION, set)\n return state\n }\n case `REPLACE_STATIC_QUERY`: {\n // Only called when static query text has changed, so no need to compare\n // TODO: unify the behavior?\n const query = registerQuery(state, action.payload.id)\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_TEXT)\n // static queries are not on demand, so skipping tracking which\n // queries were marked dirty recently\n // state = trackDirtyQuery(state, action.payload.id)\n state.deletedQueries.delete(action.payload.id)\n return state\n }\n case `REMOVE_STATIC_QUERY`: {\n state.deletedQueries.add(action.payload)\n return state\n }\n case `CREATE_COMPONENT_DEPENDENCY`: {\n action.payload.forEach(({ path: queryId, nodeId, connection }) => {\n if (nodeId) {\n state = addNodeDependency(state, queryId, nodeId)\n }\n if (connection) {\n state = addConnectionDependency(state, queryId, connection)\n }\n })\n return state\n }\n case `QUERY_START`: {\n // Reset data dependencies as they will be updated when running the query\n const { path } = action.payload\n state = clearNodeDependencies(state, path)\n state = clearConnectionDependencies(state, path)\n const query = state.trackedQueries.get(path)\n if (query) {\n query.running = setFlag(query.running, FLAG_RUNNING_INFLIGHT)\n }\n return state\n }\n case `CREATE_NODE`:\n case `DELETE_NODE`: {\n const node = action.payload\n if (!node) {\n return state\n }\n const queriesByNode = state.byNode.get(node.id) ?? []\n const queriesByConnection =\n state.byConnection.get(node.internal.type) ?? []\n\n for (const queryId of queriesByNode) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_DATA)\n state = trackDirtyQuery(state, queryId)\n }\n }\n for (const queryId of queriesByConnection) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_DATA)\n state = trackDirtyQuery(state, queryId)\n }\n }\n return state\n }\n case `PAGE_QUERY_RUN`: {\n const { path } = action.payload\n const query = registerQuery(state, path)\n query.dirty = 0\n query.running = 0 // TODO: also\n return state\n }\n case `SET_PROGRAM_STATUS`: {\n if (action.payload === `BOOTSTRAP_FINISHED`) {\n // Reset the running state (as it could've been persisted)\n for (const [, query] of state.trackedQueries) {\n query.running = 0\n }\n // Reset list of dirty queries (this is used only to notify runtime and it could've been persisted)\n state.dirtyQueriesListToEmitViaWebsocket = []\n }\n return state\n }\n case `QUERY_CLEAR_DIRTY_QUERIES_LIST_TO_EMIT_VIA_WEBSOCKET`: {\n state.dirtyQueriesListToEmitViaWebsocket = []\n return state\n }\n case `MERGE_WORKER_QUERY_STATE`: {\n assertCorrectWorkerState(action.payload)\n\n state = mergeWorkerDataDependencies(state, action.payload)\n return state\n }\n default:\n return state\n }\n}\n\nfunction setFlag(allFlags: number, flag: number, set = true): number {\n if (allFlags < 0) {\n allFlags = 0\n }\n return set ? allFlags | flag : allFlags & ~flag\n}\n\nexport function hasFlag(allFlags: number, flag: number): boolean {\n return allFlags >= 0 && (allFlags & flag) > 0\n}\n\nfunction addNodeDependency(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId,\n nodeId: NodeId\n): IGatsbyState[\"queries\"] {\n // Perf: using two-side maps.\n // Without additional `queryNodes` map we would have to loop through\n // all existing nodes in `clearNodeDependencies` to delete node <-> query dependency\n let nodeQueries = state.byNode.get(nodeId)\n if (!nodeQueries) {\n nodeQueries = new Set<QueryId>()\n state.byNode.set(nodeId, nodeQueries)\n }\n let queryNodes = state.queryNodes.get(queryId)\n if (!queryNodes) {\n queryNodes = new Set<NodeId>()\n state.queryNodes.set(queryId, queryNodes)\n }\n nodeQueries.add(queryId)\n queryNodes.add(nodeId)\n return state\n}\n\nfunction addConnectionDependency(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId,\n connection: ConnectionName\n): IGatsbyState[\"queries\"] {\n // Note: not using two-side maps for connections as associated overhead\n // for small number of elements is greater then benefits, so no perf. gains\n let queryIds = state.byConnection.get(connection)\n if (!queryIds) {\n queryIds = new Set()\n state.byConnection.set(connection, queryIds)\n }\n queryIds.add(queryId)\n return state\n}\n\nfunction clearNodeDependencies(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n const queryNodeIds = state.queryNodes.get(queryId) ?? new Set()\n for (const nodeId of queryNodeIds) {\n const nodeQueries = state.byNode.get(nodeId)\n if (nodeQueries) {\n nodeQueries.delete(queryId)\n }\n }\n return state\n}\n\nfunction clearConnectionDependencies(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n for (const [, queryIds] of state.byConnection) {\n queryIds.delete(queryId)\n }\n return state\n}\n\nfunction registerQuery(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IQueryState {\n let query = state.trackedQueries.get(queryId)\n if (!query) {\n query = initialQueryState()\n state.trackedQueries.set(queryId, query)\n }\n return query\n}\n\nfunction registerComponent(\n state: IGatsbyState[\"queries\"],\n componentPath: string\n): IComponentState {\n let component = state.trackedComponents.get(componentPath)\n if (!component) {\n component = initialComponentState()\n component.componentPath = componentPath\n state.trackedComponents.set(componentPath, component)\n }\n return component\n}\n\nfunction trackDirtyQuery(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n if (process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND) {\n state.dirtyQueriesListToEmitViaWebsocket.push(queryId)\n }\n\n return state\n}\n\ninterface IWorkerStateChunk {\n workerId: number\n queryStateChunk: IGatsbyState[\"queries\"]\n}\n\nfunction mergeWorkerDataDependencies(\n state: IGatsbyState[\"queries\"],\n workerStateChunk: IWorkerStateChunk\n): IGatsbyState[\"queries\"] {\n const queryState = workerStateChunk.queryStateChunk\n\n // First clear data dependencies for all queries tracked by worker\n for (const queryId of queryState.trackedQueries.keys()) {\n state = clearNodeDependencies(state, queryId)\n state = clearConnectionDependencies(state, queryId)\n }\n\n // Now re-add all data deps from worker\n for (const [nodeId, queries] of queryState.byNode) {\n for (const queryId of queries) {\n state = addNodeDependency(state, queryId, nodeId)\n }\n }\n for (const [connectionName, queries] of queryState.byConnection) {\n for (const queryId of queries) {\n state = addConnectionDependency(state, queryId, connectionName)\n }\n }\n return state\n}\n\nfunction assertCorrectWorkerState({\n queryStateChunk,\n workerId,\n}: IWorkerStateChunk): void {\n if (queryStateChunk.deletedQueries.size !== 0) {\n throw new Error(\n `Assertion failed: workerState.deletedQueries.size === 0 (worker #${workerId})`\n )\n }\n if (queryStateChunk.trackedComponents.size !== 0) {\n throw new Error(\n `Assertion failed: queryStateChunk.trackedComponents.size === 0 (worker #${workerId})`\n )\n }\n for (const query of queryStateChunk.trackedQueries.values()) {\n if (query.dirty) {\n throw new Error(\n `Assertion failed: all worker queries are not dirty (worker #${workerId})`\n )\n }\n if (query.running) {\n throw new Error(\n `Assertion failed: all worker queries are not running (worker #${workerId})`\n )\n }\n }\n}\n"],"file":"queries.js"}
|
package/dist/schema/context.js
CHANGED
|
@@ -22,7 +22,8 @@ function withResolverContext({
|
|
|
22
22
|
nodeModel = new _nodeModel.LocalNodeModel({
|
|
23
23
|
schema,
|
|
24
24
|
schemaComposer,
|
|
25
|
-
createPageDependency: _addPageDependency.createPageDependency
|
|
25
|
+
createPageDependency: _addPageDependency.createPageDependency,
|
|
26
|
+
_trackedRootNodes: new WeakSet()
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
29
|
|