@remkoj/optimizely-graph-functions 6.0.0-pre12 → 6.0.0-pre14

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.
Files changed (43) hide show
  1. package/README.md +4 -0
  2. package/dist/_transform/handleDependDirective.js +8 -1
  3. package/dist/_transform/handleDependDirective.js.map +1 -1
  4. package/dist/_transform/injectComponentDocuments.d.ts +3 -0
  5. package/dist/_transform/injectComponentDocuments.js +72 -24
  6. package/dist/_transform/injectComponentDocuments.js.map +1 -1
  7. package/dist/_transform/injectPageQueries.d.ts +1 -0
  8. package/dist/_transform/injectPageQueries.js +40 -7
  9. package/dist/_transform/injectPageQueries.js.map +1 -1
  10. package/dist/_transform/injectSectionQueries.d.ts +1 -0
  11. package/dist/_transform/injectSectionQueries.js +27 -7
  12. package/dist/_transform/injectSectionQueries.js.map +1 -1
  13. package/dist/_transform/performInjections.js +2 -35
  14. package/dist/_transform/performInjections.js.map +1 -1
  15. package/dist/cms/index.d.ts +4 -10
  16. package/dist/cms/index.js +57 -24
  17. package/dist/cms/index.js.map +1 -1
  18. package/dist/contenttype-loader.d.ts +1 -48
  19. package/dist/contenttype-loader.js +21 -281
  20. package/dist/contenttype-loader.js.map +1 -1
  21. package/dist/generator/collision-tracker.d.ts +22 -0
  22. package/dist/generator/collision-tracker.js +103 -0
  23. package/dist/generator/collision-tracker.js.map +1 -0
  24. package/dist/generator/generator.d.ts +77 -0
  25. package/dist/generator/generator.js +267 -0
  26. package/dist/generator/generator.js.map +1 -0
  27. package/dist/generator/index.d.ts +3 -0
  28. package/dist/generator/index.js +42 -0
  29. package/dist/generator/index.js.map +1 -0
  30. package/dist/generator/virtual-location.d.ts +41 -0
  31. package/dist/generator/virtual-location.js +139 -0
  32. package/dist/generator/virtual-location.js.map +1 -0
  33. package/dist/index.js +4 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/preset.js +61 -36
  36. package/dist/preset.js.map +1 -1
  37. package/dist/transform.d.ts +3 -3
  38. package/dist/transform.js +6 -1
  39. package/dist/transform.js.map +1 -1
  40. package/package.json +20 -16
  41. package/dist/_transform/removeReferenceItem.d.ts +0 -11
  42. package/dist/_transform/removeReferenceItem.js +0 -113
  43. package/dist/_transform/removeReferenceItem.js.map +0 -1
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentGenerator = void 0;
4
+ const tools_1 = require("../tools");
5
+ /**
6
+ * Generate GraphQL fragments and queries for Optimizely Graph,
7
+ * based upon the content type definitions within an Optimizely
8
+ * CMS instance.
9
+ */
10
+ class DocumentGenerator {
11
+ constructor(allContentTypes) {
12
+ this._allContentTypes = allContentTypes ?? new Map();
13
+ }
14
+ /**
15
+ * Get the Graph Type for the Content Type, this imitates the logic
16
+ * within Optimizely CMS to transform a ContentType key into a type
17
+ * within Optimizely Graph.
18
+ *
19
+ * @param contentType
20
+ * @returns
21
+ */
22
+ getGraphType(contentType) {
23
+ const itemKey = ((0, tools_1.isNonEmptyString)(contentType) ? contentType : contentType?.key) ?? "_IContent";
24
+ return itemKey;
25
+ }
26
+ /**
27
+ * Get the Graph Type for the Content Type, when it's used as a property,
28
+ * this imitates the logic within Optimizely CMS to transform a ContentType
29
+ * key into a type within Optimizely Graph.
30
+ *
31
+ * @param contentType
32
+ * @returns
33
+ */
34
+ getGraphPropertyType(contentType) {
35
+ return this.getGraphType(contentType) + "Property";
36
+ }
37
+ /**
38
+ * Retrieve the default name for the data query for the given content type
39
+ *
40
+ * @param contentType
41
+ * @returns
42
+ */
43
+ getDefaultQueryName(contentType) {
44
+ const graphType = this.getGraphType(contentType);
45
+ return `get${this.getSlugFromKey(graphType)}Data`;
46
+ }
47
+ /**
48
+ * Retrieve the default name for the data fragment for the given content type
49
+ *
50
+ * @param contentType
51
+ * @returns
52
+ */
53
+ getDefaultFragmentName(contentType) {
54
+ const graphType = this.getGraphType(contentType);
55
+ return this.getSlugFromKey(graphType) + "Data";
56
+ }
57
+ /**
58
+ * Retrieve the default name for the fragment when the content type is used as
59
+ * property
60
+ *
61
+ * @param contentType
62
+ * @returns
63
+ */
64
+ getDefaultPropertyFragmentName(contentType) {
65
+ const graphPropertyType = this.getGraphPropertyType(contentType);
66
+ return this.getSlugFromKey(graphPropertyType) + "Data";
67
+ }
68
+ getSlugFromKey(key) {
69
+ let newKey = key.startsWith('_') ? (0, tools_1.ucFirst)(key.substring(1)) : key;
70
+ if (newKey.includes(":"))
71
+ newKey = newKey.split(":").map(x => (0, tools_1.ucFirst)(x)).join("");
72
+ return newKey;
73
+ }
74
+ /**
75
+ * Build the GraphQL fragment that is used as injection target
76
+ *
77
+ * @param injectionTarget
78
+ * @returns
79
+ */
80
+ buildInjectionTarget(injectionTarget) {
81
+ return `fragment ${injectionTarget} on _IContent { ...IContentData }`;
82
+ }
83
+ /**
84
+ * Build a query to retrieve the data for a specific content type by identifier
85
+ *
86
+ * @param contentType
87
+ * @param queryName
88
+ * @param propertyTracker
89
+ * @returns
90
+ */
91
+ buildGetQuery(contentType, queryName, propertyTracker = new Map()) {
92
+ // Prepare
93
+ if (!contentType.key || contentType.source === 'graph')
94
+ return '';
95
+ const graphType = this.getGraphType(contentType);
96
+ const renderedQueryName = (0, tools_1.isNonEmptyString)(queryName) ? queryName :
97
+ (typeof queryName === 'function' ?
98
+ queryName(this.getDefaultQueryName(contentType)) :
99
+ this.getDefaultQueryName(contentType));
100
+ // Render properties
101
+ const properties = [];
102
+ for (const propName of Object.getOwnPropertyNames(contentType.properties ?? {}))
103
+ properties.push(this.buildProperty(propName, (contentType.properties || {})[propName], propertyTracker));
104
+ // Inject base type based defaults
105
+ if (contentType.baseType === "_experience")
106
+ properties.unshift("...ExperienceData");
107
+ //Render query
108
+ const query = `query ${renderedQueryName}($key: [String!]!, $locale: [Locales], $changeset: String, $variation: VariationInput, $version: String) {
109
+ data: ${graphType}(
110
+ ids: $key
111
+ locale: $locale
112
+ variation: $variation
113
+ where: { _metadata: { changeset: { eq: $changeset }, version: { eq: $version } } }
114
+ ) {
115
+ total
116
+ item {
117
+ _metadata {
118
+ key
119
+ version
120
+ locale
121
+ changeset
122
+ variation
123
+ }
124
+ ${properties.filter(tools_1.isNonEmptyString).join("\n ")}
125
+ }
126
+ }
127
+ }`;
128
+ return query;
129
+ }
130
+ buildFragment(contentType, fragmentName, forProperty = false, propertyTracker = new Map()) {
131
+ if (!contentType.key)
132
+ return '';
133
+ const graphType = forProperty ? this.getGraphPropertyType(contentType) : this.getGraphType(contentType);
134
+ const defaultFragmentName = forProperty ? this.getDefaultPropertyFragmentName(contentType) : this.getDefaultFragmentName(contentType);
135
+ const graphFragmentName = (0, tools_1.isNonEmptyString)(fragmentName) ?
136
+ fragmentName : (typeof fragmentName === 'function' ? fragmentName(defaultFragmentName) : defaultFragmentName);
137
+ // Inject all properties
138
+ const properties = [];
139
+ for (const propName of Object.getOwnPropertyNames(contentType.properties ?? {}))
140
+ properties.push(this.buildProperty(propName, (contentType.properties || {})[propName], propertyTracker));
141
+ // Inject base type based defaults
142
+ if (contentType.baseType === "_experience")
143
+ properties.push("...ExperienceData");
144
+ // Ensure that there's at least one property
145
+ if (properties.length === 0)
146
+ properties.unshift("__typename");
147
+ // Construct fragment rawSDL
148
+ return `fragment ${graphFragmentName} on ${graphType} {
149
+ ${properties.filter(tools_1.isNonEmptyString).join("\n ")}
150
+ }`;
151
+ }
152
+ /**
153
+ * Retrieve a list of component keys that are referenced as property by this type
154
+ *
155
+ * @param contentType
156
+ * @returns
157
+ */
158
+ static getReferencedPropertyComponents(contentType) {
159
+ const properties = contentType.properties;
160
+ if (!properties)
161
+ return [];
162
+ return Object.getOwnPropertyNames(properties).reduce((referencedTypes, propertyKey) => {
163
+ if (properties[propertyKey].type == "component" && properties[propertyKey].contentType) {
164
+ referencedTypes.push(properties[propertyKey]?.contentType);
165
+ }
166
+ if (properties[propertyKey].type == "array" && properties[propertyKey].items?.type == "component" && properties[propertyKey].items?.contentType) {
167
+ referencedTypes.push(properties[propertyKey]?.items?.contentType);
168
+ }
169
+ return referencedTypes;
170
+ }, []);
171
+ }
172
+ buildProperty(propertyName, propertyConfig, propertyTracker = new Map()) {
173
+ // Get type information rendering
174
+ const propertyItemConfig = propertyConfig?.type === 'array' ? propertyConfig?.items ?? propertyConfig : propertyConfig;
175
+ const propertyType = propertyItemConfig?.type ?? 'any';
176
+ // Ensure we don't have property naming collisions
177
+ let outputPropertyName = propertyName;
178
+ if (propertyTracker.has(propertyName)) {
179
+ if (propertyTracker.get(propertyName) != propertyType) {
180
+ outputPropertyName = `${propertyName}${(0, tools_1.ucFirst)(propertyType)}: ${propertyName}`;
181
+ propertyTracker.set(`${propertyName}${(0, tools_1.ucFirst)(propertyType)}`, propertyType);
182
+ }
183
+ }
184
+ else {
185
+ propertyTracker.set(propertyName, propertyType);
186
+ }
187
+ // Render property
188
+ switch (propertyType) {
189
+ case 'url':
190
+ return outputPropertyName + " { type base default }";
191
+ case 'content': {
192
+ // Resolve allowed/restricted
193
+ const allowedTypes = (propertyItemConfig?.allowedTypes ?? []);
194
+ const restrictedTypes = (propertyItemConfig?.restrictedTypes ?? []);
195
+ const pickFrom = allowedTypes.flatMap(tn => this.getTypeKeysFor(tn));
196
+ const restrictBy = restrictedTypes.flatMap(tn => this.getTypeKeysFor(tn));
197
+ // Prepare data
198
+ const allowAny = pickFrom.length == 0 && restrictBy.length == 0;
199
+ const spreads = new Set();
200
+ spreads.add('IContentData');
201
+ if (allowAny) {
202
+ ['BlockData', 'ComponentData'].forEach(x => spreads.add(x));
203
+ }
204
+ else {
205
+ const base = pickFrom.length > 0 ? pickFrom : Array.from(this._allContentTypes.keys());
206
+ const filtered = base.filter(x => !restrictBy.includes(x));
207
+ filtered.forEach(typeName => spreads.add(this.getDefaultFragmentName(typeName)));
208
+ }
209
+ return `${outputPropertyName} {\n ${Array.from(spreads).map(spread => `...${spread}`).join('\n ')} \n}`;
210
+ }
211
+ case 'richText':
212
+ return outputPropertyName + " { json }";
213
+ case 'component': {
214
+ const dataType = propertyItemConfig?.contentType;
215
+ if (!dataType)
216
+ return null; // Skip this property if the contentType isn't set
217
+ return outputPropertyName + ` { ...${dataType}PropertyData }`;
218
+ }
219
+ case 'link':
220
+ return outputPropertyName + ` {
221
+ title
222
+ text
223
+ target
224
+ url {
225
+ type
226
+ base
227
+ default
228
+ }
229
+ }`;
230
+ case 'contentReference': {
231
+ return outputPropertyName + ` {
232
+ key
233
+ url {
234
+ type
235
+ base
236
+ default
237
+ }
238
+ item @depend(on: "ContentReference.item") {
239
+ __typename
240
+ ...CmpImageAssetInfo
241
+ ...CmpVideoAssetInfo
242
+ }
243
+ }`;
244
+ }
245
+ default:
246
+ return outputPropertyName;
247
+ }
248
+ }
249
+ getTypeKeysFor(contentTypeRestriction) {
250
+ if (this._allContentTypes.size === 0)
251
+ return contentTypeRestriction;
252
+ const allTypes = [];
253
+ // Add type if it exists
254
+ if (this._allContentTypes.has(contentTypeRestriction))
255
+ allTypes.push(contentTypeRestriction);
256
+ // Add children
257
+ this._allContentTypes.forEach((contentType, contentTypeKey) => {
258
+ if (contentType.baseType === contentTypeRestriction) {
259
+ const baseRestrictions = this.getTypeKeysFor(contentTypeKey);
260
+ allTypes.push(...baseRestrictions);
261
+ }
262
+ });
263
+ return allTypes;
264
+ }
265
+ }
266
+ exports.DocumentGenerator = DocumentGenerator;
267
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/generator/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { PropertyCollisionTracker } from './collision-tracker';
2
+ export { DocumentGenerator } from './generator';
3
+ export * as VirtualLocation from './virtual-location';
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.VirtualLocation = exports.DocumentGenerator = exports.PropertyCollisionTracker = void 0;
37
+ var collision_tracker_1 = require("./collision-tracker");
38
+ Object.defineProperty(exports, "PropertyCollisionTracker", { enumerable: true, get: function () { return collision_tracker_1.PropertyCollisionTracker; } });
39
+ var generator_1 = require("./generator");
40
+ Object.defineProperty(exports, "DocumentGenerator", { enumerable: true, get: function () { return generator_1.DocumentGenerator; } });
41
+ exports.VirtualLocation = __importStar(require("./virtual-location"));
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA8D;AAArD,6HAAA,wBAAwB,OAAA;AACjC,yCAA+C;AAAtC,8GAAA,iBAAiB,OAAA;AAC1B,sEAAqD"}
@@ -0,0 +1,41 @@
1
+ import type { IntegrationApi } from "@remkoj/optimizely-cms-api";
2
+ export type VirtualLocationOptions = {
3
+ forProperty: boolean;
4
+ type: 'fragment' | 'query' | 'target';
5
+ };
6
+ export type VirtualLocationData = {
7
+ contentTypeBase: string;
8
+ contentTypeKey: string;
9
+ injectionTargets: Array<string>;
10
+ } & VirtualLocationOptions;
11
+ /**
12
+ * The list of injection targets where fragments may be injected within the
13
+ * default queries.
14
+ */
15
+ export declare enum ContentTypeTarget {
16
+ 'SectionData' = "SectionData",
17
+ 'PageData' = "PageData",
18
+ 'MediaData' = "MediaData",
19
+ 'ComponentData' = "ComponentData",
20
+ 'ElementData' = "ElementData",
21
+ 'SectionElementData' = "SectionElementData",
22
+ 'FormElementData' = "FormElementData",
23
+ 'BlockData' = "BlockData"
24
+ }
25
+ /**
26
+ * Get a list of names of all supported injection targets, where fragments may be
27
+ * injected within the default queries.
28
+ *
29
+ * @returns The list of names
30
+ */
31
+ export declare function getInjectionTargets(): string[];
32
+ /**
33
+ * Take an `opti-cms:/` virtual path and parse it to get the configuraiton of
34
+ * the fragment/query to be generated.
35
+ *
36
+ * @param virtualPath The virtual path
37
+ * @returns The fragment/query configuration
38
+ */
39
+ export declare function parse(virtualPath: string): VirtualLocationData | undefined;
40
+ export declare function build(injectionFragment: string): string;
41
+ export declare function build(contentType: IntegrationApi.ContentType, options?: Partial<VirtualLocationOptions>): string | undefined;
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContentTypeTarget = void 0;
4
+ exports.getInjectionTargets = getInjectionTargets;
5
+ exports.parse = parse;
6
+ exports.build = build;
7
+ const tools_1 = require("../tools");
8
+ const DefaultVirtualLocationOptions = { forProperty: false, type: 'fragment' };
9
+ /**
10
+ * The list of injection targets where fragments may be injected within the
11
+ * default queries.
12
+ */
13
+ var ContentTypeTarget;
14
+ (function (ContentTypeTarget) {
15
+ ContentTypeTarget["SectionData"] = "SectionData";
16
+ ContentTypeTarget["PageData"] = "PageData";
17
+ ContentTypeTarget["MediaData"] = "MediaData";
18
+ ContentTypeTarget["ComponentData"] = "ComponentData";
19
+ ContentTypeTarget["ElementData"] = "ElementData";
20
+ ContentTypeTarget["SectionElementData"] = "SectionElementData";
21
+ ContentTypeTarget["FormElementData"] = "FormElementData";
22
+ ContentTypeTarget["BlockData"] = "BlockData";
23
+ })(ContentTypeTarget || (exports.ContentTypeTarget = ContentTypeTarget = {}));
24
+ /**
25
+ * Get a list of names of all supported injection targets, where fragments may be
26
+ * injected within the default queries.
27
+ *
28
+ * @returns The list of names
29
+ */
30
+ function getInjectionTargets() {
31
+ return Object.getOwnPropertyNames(ContentTypeTarget);
32
+ }
33
+ /**
34
+ * Take an `opti-cms:/` virtual path and parse it to get the configuraiton of
35
+ * the fragment/query to be generated.
36
+ *
37
+ * @param virtualPath The virtual path
38
+ * @returns The fragment/query configuration
39
+ */
40
+ function parse(virtualPath) {
41
+ if (!virtualPath.startsWith('opti-cms:/'))
42
+ return undefined;
43
+ const virtualURL = new URL(virtualPath);
44
+ const [basePath, baseType, ctKey, ...targets] = virtualURL.pathname.split('/').filter(tools_1.isNonEmptyString);
45
+ // Validate the basepath
46
+ if (!['contenttypes', 'contentquery', 'injectiontarget'].includes(basePath))
47
+ return undefined;
48
+ if (basePath === 'injectiontarget') {
49
+ return {
50
+ type: 'target',
51
+ contentTypeBase: '',
52
+ contentTypeKey: baseType,
53
+ forProperty: false,
54
+ injectionTargets: []
55
+ };
56
+ }
57
+ const type = basePath == "contenttypes" ? 'fragment' : 'query';
58
+ const forProperty = baseType.endsWith('.property');
59
+ const contentTypeBase = parseBaseType(forProperty ? baseType.substring(0, baseType.length - 9) : baseType);
60
+ const contentTypeKey = ctKey;
61
+ const injectionTargets = targets;
62
+ return { type, contentTypeBase, contentTypeKey, injectionTargets, forProperty };
63
+ }
64
+ function build(contentType, options) {
65
+ if (typeof (contentType) === 'string')
66
+ return `opti-cms:/injectiontarget/${contentType}`;
67
+ const { forProperty, type } = { ...DefaultVirtualLocationOptions, ...options };
68
+ const basePath = type == 'fragment' ? 'contenttypes' : 'contentquery';
69
+ const ctKey = contentType.key;
70
+ if (!ctKey || contentType.source === 'graph' || ctKey === 'SysContentFolder' || isContract(contentType))
71
+ return undefined;
72
+ const baseType = extractBaseType(contentType);
73
+ return forProperty ?
74
+ `opti-cms:/${basePath}/${baseType}.property/${ctKey}` :
75
+ `opti-cms:/${basePath}/${baseType}/${ctKey}/${getContentTypeTargets(contentType).join('/')}`;
76
+ }
77
+ function hasContractInfo(toTest) {
78
+ if (typeof (toTest) !== 'object' || toTest === null)
79
+ return false;
80
+ return typeof (toTest.isContract) === 'boolean';
81
+ }
82
+ function isContract(contentType) {
83
+ return hasContractInfo(contentType) ? contentType.isContract : false;
84
+ }
85
+ function parseBaseType(storedBaseType) {
86
+ switch (storedBaseType.toLowerCase()) {
87
+ case 'section':
88
+ case 'media':
89
+ case 'component':
90
+ case 'experience':
91
+ case 'page':
92
+ case 'image':
93
+ case 'video':
94
+ return '_' + storedBaseType;
95
+ default:
96
+ return storedBaseType;
97
+ }
98
+ }
99
+ function extractBaseType(contentType, fallback = 'cms') {
100
+ return (contentType.baseType ?? fallback).replace(/^_+/, '');
101
+ }
102
+ function getContentTypeTargets(contentType) {
103
+ if (!contentType.key || contentType.key.startsWith('graph:'))
104
+ return [];
105
+ const injections = [];
106
+ const baseType = extractBaseType(contentType);
107
+ switch (baseType) {
108
+ case 'section':
109
+ injections.push(ContentTypeTarget.SectionData);
110
+ break;
111
+ case 'page':
112
+ case 'experience':
113
+ injections.push(ContentTypeTarget.PageData);
114
+ break;
115
+ case 'media':
116
+ case 'video':
117
+ case 'image':
118
+ injections.push(ContentTypeTarget.MediaData);
119
+ break;
120
+ case 'component': {
121
+ const usage = contentType.compositionBehaviors ?? [];
122
+ const source = contentType.source;
123
+ if (!(source === '_server' && usage.length === 1 && usage[0] === 'formsElementEnabled'))
124
+ injections.push(ContentTypeTarget.ComponentData);
125
+ if (usage.includes('elementEnabled'))
126
+ injections.push(ContentTypeTarget.ElementData);
127
+ if (usage.includes('sectionEnabled'))
128
+ injections.push(ContentTypeTarget.SectionElementData);
129
+ if (usage.includes('formsElementEnabled'))
130
+ injections.push(ContentTypeTarget.FormElementData);
131
+ break;
132
+ }
133
+ default:
134
+ injections.push(ContentTypeTarget.BlockData);
135
+ break;
136
+ }
137
+ return injections;
138
+ }
139
+ //# sourceMappingURL=virtual-location.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-location.js","sourceRoot":"","sources":["../../src/generator/virtual-location.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -45,7 +45,8 @@ const plugin = async (schema, documents, config, info) => {
45
45
  // Read the functions to fully build & extend
46
46
  const functions = config.functions || [];
47
47
  if (functions.length == 0)
48
- return "// NO FUNCTIONS TO BE EXPORTED";
48
+ return `// NO FUNCTIONS TO BE EXPORTED
49
+ export const EXPORTED_FUNCTIONS = 0;`;
49
50
  // Output the functions
50
51
  const docs = (0, graphql_1.concatAST)(documents.map(x => x.document).filter(utils_1.isNotNullOrUndefined));
51
52
  const output = functions.map(fn => {
@@ -76,6 +77,8 @@ const plugin = async (schema, documents, config, info) => {
76
77
  prepend.push(`import type * as Types from './graphql'`);
77
78
  prepend.push("\n");
78
79
  append.push("\n");
80
+ append.push(`export const EXPORTED_FUNCTIONS = ${functions.length};`);
81
+ append.push("\n");
79
82
  return { prepend, content: output.join("\n"), append };
80
83
  };
81
84
  exports.plugin = plugin;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}