@remkoj/optimizely-graph-functions 6.0.0-pre7 → 6.0.0-pre9
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/LICENSE +12 -12
- package/dist/_transform/cleanFragments.d.ts +10 -0
- package/dist/_transform/cleanFragments.js +39 -0
- package/dist/_transform/cleanFragments.js.map +1 -0
- package/dist/_transform/cleanSpreads.d.ts +10 -0
- package/dist/_transform/cleanSpreads.js +36 -0
- package/dist/_transform/cleanSpreads.js.map +1 -0
- package/dist/_transform/injectComponentDocuments.d.ts +13 -0
- package/dist/_transform/injectComponentDocuments.js +122 -0
- package/dist/_transform/injectComponentDocuments.js.map +1 -0
- package/dist/_transform/injectPageQueries.d.ts +4 -0
- package/dist/_transform/injectPageQueries.js +81 -0
- package/dist/_transform/injectPageQueries.js.map +1 -0
- package/dist/_transform/injectSectionQueries.d.ts +4 -0
- package/dist/_transform/injectSectionQueries.js +81 -0
- package/dist/_transform/injectSectionQueries.js.map +1 -0
- package/dist/_transform/normalizeFragmentNames.d.ts +12 -0
- package/dist/_transform/normalizeFragmentNames.js +75 -0
- package/dist/_transform/normalizeFragmentNames.js.map +1 -0
- package/dist/_transform/normalizeQueryNames.d.ts +12 -0
- package/dist/_transform/normalizeQueryNames.js +83 -0
- package/dist/_transform/normalizeQueryNames.js.map +1 -0
- package/dist/_transform/options.d.ts +3 -0
- package/dist/_transform/options.js +21 -0
- package/dist/_transform/options.js.map +1 -0
- package/dist/_transform/performInjections.d.ts +24 -0
- package/dist/_transform/performInjections.js +225 -0
- package/dist/_transform/performInjections.js.map +1 -0
- package/dist/_transform/tools.d.ts +34 -0
- package/dist/_transform/tools.js +103 -0
- package/dist/_transform/tools.js.map +1 -0
- package/dist/cms/index.d.ts +17 -0
- package/dist/cms/index.js +88 -0
- package/dist/cms/index.js.map +1 -0
- package/dist/contenttype-loader.d.ts +58 -0
- package/dist/contenttype-loader.js +337 -0
- package/dist/contenttype-loader.js.map +1 -0
- package/dist/document-ast-plugin.d.ts +1 -0
- package/dist/document-ast-plugin.js +15 -0
- package/dist/document-ast-plugin.js.map +1 -0
- package/dist/documents/fragments.cms13.js +92 -47
- package/dist/documents/fragments.cms13.js.map +1 -1
- package/dist/documents/queries.cms13.js +9 -3
- package/dist/documents/queries.cms13.js.map +1 -1
- package/dist/embedded-loader.js +31 -16
- package/dist/embedded-loader.js.map +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.js.map +1 -1
- package/dist/preset.d.ts +2 -4
- package/dist/preset.js +16 -42
- package/dist/preset.js.map +1 -1
- package/dist/tools.d.ts +4 -0
- package/dist/tools.js +20 -0
- package/dist/tools.js.map +1 -0
- package/dist/transform.d.ts +11 -1
- package/dist/transform.js +41 -58
- package/dist/transform.js.map +1 -1
- package/dist/types.d.ts +34 -0
- package/package.json +21 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.cms13.js","sourceRoot":"","sources":["../../src/documents/queries.cms13.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb
|
|
1
|
+
{"version":3,"file":"queries.cms13.js","sourceRoot":"","sources":["../../src/documents/queries.cms13.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BI;IACJ;;;;;;;;;;;;;;;;;MAiBI;IACJ;;;;;;;;;;;;;;;;;;MAkBI;CACL,CAAA"}
|
package/dist/embedded-loader.js
CHANGED
|
@@ -14,24 +14,39 @@ const EmbeddedLoader = async (documentUri, config) => {
|
|
|
14
14
|
const docId = new URL(documentUri);
|
|
15
15
|
if (docId.protocol != "opti-cms:")
|
|
16
16
|
throw new Error("[Optimizely Graph Functions - Embedded Documents] Unsupported protocol, only the \"opti-cms:\" protocol is supported");
|
|
17
|
-
|
|
17
|
+
try {
|
|
18
|
+
const parsed = docId.pathname.split('/').filter(x => x && x.length > 0);
|
|
19
|
+
const requireTarget = `./documents/${parsed.at(0) ?? 'undefined'}.cms${parsed.at(1) ?? '13'}`;
|
|
20
|
+
const rawData = require(requireTarget).default;
|
|
21
|
+
return generateDocument(rawData, documentUri);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
console.error(e);
|
|
25
|
+
throw e;
|
|
26
|
+
}
|
|
27
|
+
/*
|
|
28
|
+
let rawData: string | string[] | undefined;
|
|
18
29
|
switch (docId.pathname) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
case "/fragments/13":
|
|
31
|
+
rawData = require("./documents/fragments.cms13").default
|
|
32
|
+
break
|
|
33
|
+
|
|
34
|
+
case "/queries/13":
|
|
35
|
+
rawData = require("./documents/queries.cms13").default
|
|
36
|
+
break
|
|
37
|
+
|
|
38
|
+
case "/fragments/12":
|
|
39
|
+
rawData = require("./documents/fragments.cms12").default
|
|
40
|
+
break
|
|
41
|
+
|
|
42
|
+
case "/queries/12":
|
|
43
|
+
rawData = require("./documents/queries.cms12").default
|
|
44
|
+
break
|
|
45
|
+
|
|
46
|
+
default:
|
|
47
|
+
throw new Error(`[Optimizely Graph Functions - Embedded Documents] Path not found: ${docId.pathname}`)
|
|
33
48
|
}
|
|
34
|
-
return generateDocument(rawData, documentUri)
|
|
49
|
+
return generateDocument(rawData, documentUri)*/
|
|
35
50
|
};
|
|
36
51
|
function generateDocument(rawData, location) {
|
|
37
52
|
if (rawData == undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded-loader.js","sourceRoot":"","sources":["../src/embedded-loader.ts"],"names":[],"mappings":";;AACA,qCAA+B;AAU/B;;;;;;;;GAQG;AACH,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"embedded-loader.js","sourceRoot":"","sources":["../src/embedded-loader.ts"],"names":[],"mappings":";;AACA,qCAA+B;AAU/B;;;;;;;;GAQG;AACH,MAAM,cAAc,GAAmB,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;IACnE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;IAClC,IAAI,KAAK,CAAC,QAAQ,IAAI,WAAW;QAC/B,MAAM,IAAI,KAAK,CAAC,sHAAsH,CAAC,CAAA;IAEzI,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,eAAe,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9F,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAA;QAC9C,OAAO,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAChB,MAAM,CAAC,CAAA;IACT,CAAC;IACD;;;;;;;;;;;;;;;;;;;;;;mDAsB+C;AACjD,CAAC,CAAA;AAED,SAAS,gBAAgB,CAAC,OAAsC,EAAE,QAAiB;IACjF,IAAI,OAAO,IAAI,SAAS;QACtB,OAAO,SAAS,CAAA;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IACtE,MAAM,QAAQ,GAAG,IAAA,eAAK,EAAC,MAAM,CAAC,CAAA;IAE9B,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,IAAI,EAAE,QAAQ;KACf,CAAA;AACH,CAAC;AAED,kBAAe,cAAc,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import type { CodegenPlugin, PluginFunction, PluginValidateFn } from '@graphql-codegen/plugin-helpers';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
prettyPrintQuery?: boolean;
|
|
5
|
-
clientPath?: string;
|
|
6
|
-
};
|
|
2
|
+
import type { PluginOptions } from './types';
|
|
3
|
+
export type { PluginOptions } from './types';
|
|
7
4
|
export declare const DefaultFunctions: string[];
|
|
8
5
|
export declare function pickPluginOptions(options: Record<string, any>): PluginOptions;
|
|
9
6
|
/**
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/preset.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { type Types } from '@graphql-codegen/plugin-helpers';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import { type TransformOptions } from './types';
|
|
5
|
-
export type PresetOptions = ClientPresetOptions & PluginOptions & TransformOptions;
|
|
2
|
+
import type { PresetOptions } from './types';
|
|
3
|
+
export type { PresetOptions } from './types';
|
|
6
4
|
export declare const preset: Types.OutputPreset<PresetOptions>;
|
|
7
5
|
export default preset;
|
package/dist/preset.js
CHANGED
|
@@ -34,14 +34,13 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.preset = void 0;
|
|
37
|
-
const graphql_1 = require("graphql");
|
|
38
37
|
// Import base preset
|
|
39
38
|
const client_preset_1 = require("@graphql-codegen/client-preset");
|
|
40
39
|
const GraphQLRequestPlugin = __importStar(require("@graphql-codegen/typescript-graphql-request"));
|
|
41
40
|
const AddPlugin = __importStar(require("@graphql-codegen/add"));
|
|
42
41
|
// Import injected parts
|
|
43
42
|
const index_1 = __importStar(require("./index"));
|
|
44
|
-
const transform_1 =
|
|
43
|
+
const transform_1 = require("./transform");
|
|
45
44
|
exports.preset = {
|
|
46
45
|
/**
|
|
47
46
|
* Prepare the documents to be parsed by this preset, without modifying the original array
|
|
@@ -90,46 +89,20 @@ exports.preset = {
|
|
|
90
89
|
}
|
|
91
90
|
};
|
|
92
91
|
}
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
];
|
|
106
|
-
// The packages contain quite a few utility fragments, however these
|
|
107
|
-
// can cause errors if there're no Content Types using the types
|
|
108
|
-
// targeted by these fragments as they won't be available in Optimizely
|
|
109
|
-
// Graph - so we're removing them first
|
|
110
|
-
options.documents = options.documents.map(doc => {
|
|
111
|
-
if (doc.document) {
|
|
112
|
-
const newDocument = (0, graphql_1.visit)(doc.document, {
|
|
113
|
-
FragmentDefinition: {
|
|
114
|
-
enter: (node) => {
|
|
115
|
-
if (!options.schema.definitions.some(x => (x.kind == graphql_1.Kind.OBJECT_TYPE_DEFINITION || x.kind == graphql_1.Kind.INTERFACE_TYPE_DEFINITION) && x.name.value == node.typeCondition.name.value)) {
|
|
116
|
-
if (options.presetConfig.verbose)
|
|
117
|
-
console.log(`⚠ Removing fragment ${node.name.value} from the documents, as its target ${node.typeCondition.name.value} is not available in the schema`);
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
return {
|
|
124
|
-
...doc,
|
|
125
|
-
document: newDocument
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
return doc;
|
|
129
|
-
});
|
|
92
|
+
// Apply all changes to the document set, prior to validating it. They're executed in the order of the array
|
|
93
|
+
options.documents = await (0, transform_1.executeDocumentTransforms)(options.documents, [
|
|
94
|
+
transform_1.cleanFragments, // Remove fragments that target non-existing types
|
|
95
|
+
transform_1.normalizeFragmentNames, // Allow overriding of built-in fragments
|
|
96
|
+
transform_1.normalizeQueryNames, // Allow overriding of built-in queries
|
|
97
|
+
transform_1.injectComponentDocuments, // Inject fragments to fetch component data
|
|
98
|
+
transform_1.injectPageQueries, // Inject queries to fetch page/experience data
|
|
99
|
+
transform_1.injectSectionQueries, // Inject queries to fetch section data
|
|
100
|
+
transform_1.performInjections, // Run injections of component fragments adjacent to placeholder fragments
|
|
101
|
+
transform_1.cleanFragmentSpreads // Remove all fragment spreads that target a fragment that does not exist in the documents
|
|
102
|
+
], options);
|
|
130
103
|
// Build the preset files
|
|
131
104
|
const section = await client_preset_1.preset.buildGeneratesSection(options);
|
|
132
|
-
// Add GraphQL Request Client
|
|
105
|
+
// Add GraphQL Request Client.
|
|
133
106
|
section.push({
|
|
134
107
|
filename: `${options.baseOutputDir}client.ts`,
|
|
135
108
|
pluginMap: {
|
|
@@ -159,7 +132,8 @@ exports.preset = {
|
|
|
159
132
|
documents: options.documents,
|
|
160
133
|
documentTransforms: options.documentTransforms
|
|
161
134
|
});
|
|
162
|
-
// Add the functions file
|
|
135
|
+
// Add the functions file, which will materialize the defined
|
|
136
|
+
// functions.
|
|
163
137
|
section.push({
|
|
164
138
|
filename: `${options.baseOutputDir}functions.ts`,
|
|
165
139
|
pluginMap: {
|
|
@@ -180,7 +154,7 @@ exports.preset = {
|
|
|
180
154
|
documents: options.documents,
|
|
181
155
|
documentTransforms: options.documentTransforms
|
|
182
156
|
});
|
|
183
|
-
// Update
|
|
157
|
+
// Update file generation configs
|
|
184
158
|
section.forEach((fileConfig, idx) => {
|
|
185
159
|
// Modify index.ts with additional exports
|
|
186
160
|
if (fileConfig.filename.endsWith("index.ts")) {
|
package/dist/preset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function ucFirst<S extends string>(input: S): Capitalize<S>;
|
|
2
|
+
export declare function lcFirst<S extends string>(input: S): Uncapitalize<S>;
|
|
3
|
+
export declare function trimStart(target: string, toTrim?: string): string;
|
|
4
|
+
export declare function isNonEmptyString<S extends string>(toTest: S | null | undefined | object | number | boolean): toTest is S;
|
package/dist/tools.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ucFirst = ucFirst;
|
|
4
|
+
exports.lcFirst = lcFirst;
|
|
5
|
+
exports.trimStart = trimStart;
|
|
6
|
+
exports.isNonEmptyString = isNonEmptyString;
|
|
7
|
+
function ucFirst(input) {
|
|
8
|
+
return (input.substring(0, 1).toUpperCase() + input.substring(1));
|
|
9
|
+
}
|
|
10
|
+
function lcFirst(input) {
|
|
11
|
+
return (input.substring(0, 1).toLowerCase() + input.substring(1));
|
|
12
|
+
}
|
|
13
|
+
function trimStart(target, toTrim = ' ') {
|
|
14
|
+
const regex = new RegExp(`/^(${toTrim})+/`);
|
|
15
|
+
return target.replace(regex, '');
|
|
16
|
+
}
|
|
17
|
+
function isNonEmptyString(toTest) {
|
|
18
|
+
return typeof toTest === 'string' && toTest.length > 0;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";;AAAA,0BAEC;AAED,0BAEC;AAED,8BAGC;AAED,4CAEC;AAfD,SAAgB,OAAO,CAAmB,KAAQ;IAChD,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAkB,CAAC;AACrF,CAAC;AAED,SAAgB,OAAO,CAAmB,KAAQ;IAChD,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAoB,CAAC;AACvF,CAAC;AAED,SAAgB,SAAS,CAAC,MAAc,EAAE,SAAiB,GAAG;IAC5D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,MAAM,KAAK,CAAC,CAAA;IAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAClC,CAAC;AAED,SAAgB,gBAAgB,CAAmB,MAAwD;IACzG,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;AACxD,CAAC"}
|
package/dist/transform.d.ts
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { type Types } from '@graphql-codegen/plugin-helpers';
|
|
2
2
|
import type { TransformOptions } from './types';
|
|
3
|
-
export
|
|
3
|
+
export { cleanFragments } from "./_transform/cleanFragments";
|
|
4
|
+
export { injectComponentDocuments } from "./_transform/injectComponentDocuments";
|
|
5
|
+
export { normalizeFragmentNames } from "./_transform/normalizeFragmentNames";
|
|
6
|
+
export { normalizeQueryNames } from "./_transform/normalizeQueryNames";
|
|
7
|
+
export { pickTransformOptions } from "./_transform/options";
|
|
8
|
+
export { injectPageQueries } from "./_transform/injectPageQueries";
|
|
9
|
+
export { injectSectionQueries } from "./_transform/injectSectionQueries";
|
|
10
|
+
export { performInjections } from "./_transform/performInjections";
|
|
11
|
+
export { cleanFragmentSpreads } from "./_transform/cleanSpreads";
|
|
12
|
+
export type TransformFn<T = any> = (files: Types.DocumentFile[], options: Types.PresetFnArgs<T>) => Promise<Types.DocumentFile[]> | Types.DocumentFile[];
|
|
13
|
+
export declare function executeDocumentTransforms<T = any>(files: Types.DocumentFile[], transforms: Array<TransformFn<T>>, options: Types.PresetFnArgs<T>): Promise<Types.DocumentFile[]>;
|
|
4
14
|
export declare const transform: Types.DocumentTransformFunction<TransformOptions>;
|
|
5
15
|
declare const _default: {
|
|
6
16
|
transform: Types.DocumentTransformFunction<TransformOptions>;
|
package/dist/transform.js
CHANGED
|
@@ -1,71 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transform = void 0;
|
|
4
|
-
exports.
|
|
3
|
+
exports.transform = exports.cleanFragmentSpreads = exports.performInjections = exports.injectSectionQueries = exports.injectPageQueries = exports.pickTransformOptions = exports.normalizeQueryNames = exports.normalizeFragmentNames = exports.injectComponentDocuments = exports.cleanFragments = void 0;
|
|
4
|
+
exports.executeDocumentTransforms = executeDocumentTransforms;
|
|
5
5
|
const graphql_1 = require("graphql");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
var cleanFragments_1 = require("./_transform/cleanFragments");
|
|
7
|
+
Object.defineProperty(exports, "cleanFragments", { enumerable: true, get: function () { return cleanFragments_1.cleanFragments; } });
|
|
8
|
+
var injectComponentDocuments_1 = require("./_transform/injectComponentDocuments");
|
|
9
|
+
Object.defineProperty(exports, "injectComponentDocuments", { enumerable: true, get: function () { return injectComponentDocuments_1.injectComponentDocuments; } });
|
|
10
|
+
var normalizeFragmentNames_1 = require("./_transform/normalizeFragmentNames");
|
|
11
|
+
Object.defineProperty(exports, "normalizeFragmentNames", { enumerable: true, get: function () { return normalizeFragmentNames_1.normalizeFragmentNames; } });
|
|
12
|
+
var normalizeQueryNames_1 = require("./_transform/normalizeQueryNames");
|
|
13
|
+
Object.defineProperty(exports, "normalizeQueryNames", { enumerable: true, get: function () { return normalizeQueryNames_1.normalizeQueryNames; } });
|
|
14
|
+
var options_1 = require("./_transform/options");
|
|
15
|
+
Object.defineProperty(exports, "pickTransformOptions", { enumerable: true, get: function () { return options_1.pickTransformOptions; } });
|
|
16
|
+
var injectPageQueries_1 = require("./_transform/injectPageQueries");
|
|
17
|
+
Object.defineProperty(exports, "injectPageQueries", { enumerable: true, get: function () { return injectPageQueries_1.injectPageQueries; } });
|
|
18
|
+
var injectSectionQueries_1 = require("./_transform/injectSectionQueries");
|
|
19
|
+
Object.defineProperty(exports, "injectSectionQueries", { enumerable: true, get: function () { return injectSectionQueries_1.injectSectionQueries; } });
|
|
20
|
+
var performInjections_1 = require("./_transform/performInjections");
|
|
21
|
+
Object.defineProperty(exports, "performInjections", { enumerable: true, get: function () { return performInjections_1.performInjections; } });
|
|
22
|
+
var cleanSpreads_1 = require("./_transform/cleanSpreads");
|
|
23
|
+
Object.defineProperty(exports, "cleanFragmentSpreads", { enumerable: true, get: function () { return cleanSpreads_1.cleanFragmentSpreads; } });
|
|
24
|
+
async function executeDocumentTransforms(files, transforms, options) {
|
|
25
|
+
let transformedFiles = files;
|
|
26
|
+
for (const transform of transforms)
|
|
27
|
+
transformedFiles = await transform(transformedFiles, options);
|
|
28
|
+
return transformedFiles;
|
|
12
29
|
}
|
|
13
|
-
const
|
|
14
|
-
|
|
30
|
+
const options_2 = require("./_transform/options");
|
|
31
|
+
const performInjections_2 = require("./_transform/performInjections");
|
|
32
|
+
const transform = async ({ documents: files, config, schema, pluginContext }) => {
|
|
33
|
+
// Create context
|
|
34
|
+
const transformConfig = { ...options_2.defaultOptions, ...config };
|
|
35
|
+
if (transformConfig.verbose)
|
|
15
36
|
console.debug(`[ OPTIMIZELY ] Starting Optimizely Graph Query & Fragment transformations`);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (config.verbose)
|
|
19
|
-
console.debug(`[ OPTIMIZELY ] Searching for fragments to inject`);
|
|
20
|
-
const componentFragments = {};
|
|
21
|
-
files.forEach(file => {
|
|
22
|
-
if (!file.document)
|
|
23
|
-
return;
|
|
24
|
-
const applicableInjections = injections.filter(injection => !injection.pathRegex || (new RegExp(injection.pathRegex)).test(file.location ?? ""));
|
|
25
|
-
if (!applicableInjections || applicableInjections.length == 0)
|
|
26
|
-
return;
|
|
27
|
-
(0, graphql_1.visit)(file.document, {
|
|
28
|
-
FragmentDefinition: {
|
|
29
|
-
enter(node) {
|
|
30
|
-
const matchingInjections = applicableInjections.filter(injection => !injection.nameRegex || (new RegExp(injection.nameRegex)).test(node.name.value));
|
|
31
|
-
if (!matchingInjections || matchingInjections.length == 0)
|
|
32
|
-
return false;
|
|
33
|
-
matchingInjections.forEach(injection => {
|
|
34
|
-
if (config.verbose)
|
|
35
|
-
console.debug(`[ OPTIMIZELY ] Found ${node.name.value} for ${injection.into} in file ${node.loc?.source?.name}`);
|
|
36
|
-
if (!componentFragments[injection.into])
|
|
37
|
-
componentFragments[injection.into] = [];
|
|
38
|
-
if (!componentFragments[injection.into].some(f => f.name.value == node.name.value))
|
|
39
|
-
componentFragments[injection.into].push(node);
|
|
40
|
-
});
|
|
41
|
-
return undefined;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
});
|
|
37
|
+
// Process all documents to extract the fragments that must be injected
|
|
38
|
+
const componentFragments = await (0, performInjections_2.getComponentFragments)(files, transformConfig);
|
|
46
39
|
// Get the names we actually need to inject into, and return when none are present
|
|
47
|
-
const intoNames =
|
|
40
|
+
const intoNames = Array.from(componentFragments.keys());
|
|
48
41
|
if (intoNames.length == 0)
|
|
49
42
|
return files;
|
|
50
43
|
if (config.verbose)
|
|
51
|
-
|
|
44
|
+
intoNames.forEach(intoName => {
|
|
45
|
+
console.debug(`[ OPTIMIZELY ] Update queries & fragments using the fragment ${intoName} to also use the fragments: ${(componentFragments.get(intoName) ?? []).map(x => x.name).join(',')}`);
|
|
46
|
+
});
|
|
52
47
|
// Update the documents
|
|
53
48
|
const transformedFiles = files.map(file => {
|
|
54
49
|
if (config.verbose)
|
|
55
50
|
console.debug(`[ OPTIMIZELY ] Processing ${file.location}`);
|
|
56
51
|
const document = file.document ? (0, graphql_1.visit)(file.document, {
|
|
57
|
-
// Remove fragments from the preset, for which the target type does not exist
|
|
58
|
-
/*FragmentDefinition: {
|
|
59
|
-
enter(node) {
|
|
60
|
-
if (file.location && !fs.existsSync(file.location)) {
|
|
61
|
-
const typePresent = schema.definitions.some(definition => (definition.kind == Kind.OBJECT_TYPE_DEFINITION || definition.kind == Kind.INTERFACE_TYPE_DEFINITION) && definition.name.value == node.typeCondition.name.value)
|
|
62
|
-
if (!typePresent) {
|
|
63
|
-
if (config.verbose) console.debug(`[OPTIMIZELY] Type ${ node.typeCondition.name.value } not found, dropping fragment ${ node.name.value }`)
|
|
64
|
-
return null
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
},*/
|
|
69
52
|
// Replace the fragment occurances
|
|
70
53
|
SelectionSet: {
|
|
71
54
|
leave(node, key, parent, path, ancestors) {
|
|
@@ -86,10 +69,10 @@ const transform = ({ documents: files, config, schema, pluginContext }) => {
|
|
|
86
69
|
console.debug(`[ OPTIMIZELY ] Identified usage of fragment(s) ${sectionsToAdd.join(', ')} in ${parentName}, starting injection procedure`);
|
|
87
70
|
const newSelections = []; //.filter(selection => !(selection.kind == Kind.FRAGMENT_SPREAD && intoNames.includes(selection.name.value)))
|
|
88
71
|
sectionsToAdd.forEach(sectionName => {
|
|
89
|
-
const addedSelections = componentFragments[
|
|
90
|
-
if (newSelections.some(selection => selection.kind == graphql_1.Kind.FRAGMENT_SPREAD && selection.name.value == fragment.name
|
|
72
|
+
const addedSelections = (componentFragments.get(sectionName) ?? []).map(fragment => {
|
|
73
|
+
if (newSelections.some(selection => selection.kind == graphql_1.Kind.FRAGMENT_SPREAD && selection.name.value == fragment.name)) {
|
|
91
74
|
if (config.verbose)
|
|
92
|
-
console.debug(`[ OPTIMIZELY ] Fragment ${fragment.name
|
|
75
|
+
console.debug(`[ OPTIMIZELY ] Fragment ${fragment.name} is already adjacent to ${sectionName}`);
|
|
93
76
|
return undefined;
|
|
94
77
|
}
|
|
95
78
|
/*if (config.verbose)
|
|
@@ -99,7 +82,7 @@ const transform = ({ documents: files, config, schema, pluginContext }) => {
|
|
|
99
82
|
directives: [],
|
|
100
83
|
name: {
|
|
101
84
|
kind: graphql_1.Kind.NAME,
|
|
102
|
-
value: fragment.name
|
|
85
|
+
value: fragment.name
|
|
103
86
|
}
|
|
104
87
|
};
|
|
105
88
|
}).filter(isNotNullOrUndefined);
|
package/dist/transform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,14 +1,37 @@
|
|
|
1
1
|
import type { FragmentDefinitionNode, OperationDefinitionNode } from 'graphql';
|
|
2
|
+
import type { CmsIntegrationApiOptions } from '@remkoj/optimizely-cms-api';
|
|
3
|
+
import type { ClientPresetConfig as ClientPresetOptions } from '@graphql-codegen/client-preset';
|
|
4
|
+
export type PresetOptions = ClientPresetOptions & PluginOptions & TransformOptions;
|
|
5
|
+
export type PluginOptions = {
|
|
6
|
+
functions?: string[];
|
|
7
|
+
prettyPrintQuery?: boolean;
|
|
8
|
+
clientPath?: string;
|
|
9
|
+
};
|
|
2
10
|
export type TransformOptions = {
|
|
3
11
|
/**
|
|
4
12
|
* Configure fragment injection targets and filters as a set of injection
|
|
5
13
|
* rules.
|
|
6
14
|
*/
|
|
7
15
|
injections?: Injection[];
|
|
16
|
+
/**
|
|
17
|
+
* Define whether the injection process should cleanup targeted fragments
|
|
18
|
+
* from the affected queries & fragments. Defaults to "true".
|
|
19
|
+
*
|
|
20
|
+
* Possible options:
|
|
21
|
+
* - `true`: Clean the targeted fragment spreads and proceed to remove the following fragment spreads: BlockData, PageData
|
|
22
|
+
* - `false`: Do not perform any cleaning
|
|
23
|
+
* - string[]: Remove the listed fragment spreads after processing
|
|
24
|
+
*/
|
|
25
|
+
cleanup?: boolean | string[];
|
|
8
26
|
/**
|
|
9
27
|
* Enable verbose output
|
|
10
28
|
*/
|
|
11
29
|
verbose?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Override the keys to login to Optimizely CMS to fully auto-generate
|
|
32
|
+
* fragments during the compilation process.
|
|
33
|
+
*/
|
|
34
|
+
cmsClient?: CmsIntegrationApiOptions;
|
|
12
35
|
/**
|
|
13
36
|
* Disables the recursive validation of GraphQL-Codegen and updates the
|
|
14
37
|
* rules to ensure that the code is properly generated.
|
|
@@ -20,8 +43,19 @@ export type TransformOptions = {
|
|
|
20
43
|
recursion?: boolean;
|
|
21
44
|
};
|
|
22
45
|
export type Injection = {
|
|
46
|
+
/**
|
|
47
|
+
* The fragment to inject the matching fragments. Matching is configured by
|
|
48
|
+
* `nameRegex` and `pathRegex`, if neither is provided, nothing will be
|
|
49
|
+
* injected.
|
|
50
|
+
*/
|
|
23
51
|
into: string;
|
|
52
|
+
/**
|
|
53
|
+
* A Regex used to match the fragment names that must be injected.
|
|
54
|
+
*/
|
|
24
55
|
nameRegex?: string;
|
|
56
|
+
/**
|
|
57
|
+
* A Regex used to match the files from which the fragments must be injected.
|
|
58
|
+
*/
|
|
25
59
|
pathRegex?: string;
|
|
26
60
|
};
|
|
27
61
|
export type IntoMatchType = {
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"repository": "https://github.com/remkoj/optimizely-dxp-clients.git",
|
|
4
4
|
"author": "Remko Jantzen <693172+remkoj@users.noreply.github.com>",
|
|
5
5
|
"homepage": "https://github.com/remkoj/optimizely-dxp-clients",
|
|
6
|
-
"version": "6.0.0-
|
|
6
|
+
"version": "6.0.0-pre9",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"type": "commonjs",
|
|
9
9
|
"description": "GraphQL Codegen preset for Optimizely Graph",
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
"./preset": "./dist/preset.js",
|
|
21
21
|
"./transform": "./dist/transform.js",
|
|
22
22
|
"./documents": "./dist/documents/index.js",
|
|
23
|
-
"./loader": "./dist/embedded-loader.js"
|
|
23
|
+
"./loader": "./dist/embedded-loader.js",
|
|
24
|
+
"./contenttype-loader": "./dist/contenttype-loader.js"
|
|
24
25
|
},
|
|
25
26
|
"typesVersions": {
|
|
26
27
|
"*": {
|
|
@@ -38,27 +39,33 @@
|
|
|
38
39
|
],
|
|
39
40
|
"loader": [
|
|
40
41
|
"./dist/embedded-loader.d.ts"
|
|
42
|
+
],
|
|
43
|
+
"contenttype-loader": [
|
|
44
|
+
"./dist/contenttype-loader.js"
|
|
41
45
|
]
|
|
42
46
|
}
|
|
43
47
|
},
|
|
44
48
|
"devDependencies": {
|
|
45
49
|
"@graphql-typed-document-node/core": "^3.2.0",
|
|
46
|
-
"@remkoj/optimizely-
|
|
47
|
-
"@
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"typescript": "^5.8.3"
|
|
50
|
+
"@remkoj/optimizely-cms-api": "6.0.0-pre9",
|
|
51
|
+
"@remkoj/optimizely-graph-client": "6.0.0-pre9",
|
|
52
|
+
"@types/node": "^22.18.10",
|
|
53
|
+
"typescript": "^5.9.3"
|
|
51
54
|
},
|
|
52
55
|
"dependencies": {
|
|
53
|
-
"@graphql-codegen/add": "^
|
|
54
|
-
"@graphql-codegen/client-preset": "^
|
|
55
|
-
"@graphql-codegen/plugin-helpers": "^
|
|
56
|
-
"@graphql-codegen/typescript": "^
|
|
56
|
+
"@graphql-codegen/add": "^6.0.0",
|
|
57
|
+
"@graphql-codegen/client-preset": "^5.1.0",
|
|
58
|
+
"@graphql-codegen/plugin-helpers": "^6.0.0",
|
|
59
|
+
"@graphql-codegen/typescript": "^5.0.2",
|
|
57
60
|
"@graphql-codegen/typescript-graphql-request": "^6.3.0",
|
|
58
|
-
"@graphql-codegen/typescript-operations": "^
|
|
59
|
-
"@remkoj/optimizely-
|
|
61
|
+
"@graphql-codegen/typescript-operations": "^5.0.2",
|
|
62
|
+
"@remkoj/optimizely-cms-api": "^6.0.0-pre9",
|
|
63
|
+
"@remkoj/optimizely-graph-client": "^6.0.0-pre9",
|
|
60
64
|
"graphql": "^16.11.0",
|
|
65
|
+
"graphql-request": "^7.2.0",
|
|
61
66
|
"graphql-sock": "^1.0.1",
|
|
67
|
+
"graphql-tag": "^2.12.6",
|
|
68
|
+
"node-object-hash": "^3.1.1",
|
|
62
69
|
"tslib": "^2.8.1"
|
|
63
70
|
},
|
|
64
71
|
"scripts": {
|
|
@@ -68,10 +75,5 @@
|
|
|
68
75
|
"watch": "yarn tsc --watch",
|
|
69
76
|
"opti-patch": "yarn node dist/patch.js"
|
|
70
77
|
},
|
|
71
|
-
"stableVersion": "5.1.0"
|
|
72
|
-
"peerDependencies": {
|
|
73
|
-
"@graphql-typed-document-node/core": "*",
|
|
74
|
-
"graphql-request": "*",
|
|
75
|
-
"graphql-tag": "*"
|
|
76
|
-
}
|
|
78
|
+
"stableVersion": "5.1.0"
|
|
77
79
|
}
|