@remkoj/optimizely-graph-functions 6.0.0-pre1 → 6.0.0-pre11
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/README.md +56 -14
- 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/handleDependDirective.d.ts +11 -0
- package/dist/_transform/handleDependDirective.js +121 -0
- package/dist/_transform/handleDependDirective.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/removeReferenceItem.d.ts +11 -0
- package/dist/_transform/removeReferenceItem.js +113 -0
- package/dist/_transform/removeReferenceItem.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 +332 -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 +148 -39
- 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 +38 -43
- 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 +12 -1
- package/dist/transform.js +43 -58
- package/dist/transform.js.map +1 -1
- package/dist/types.d.ts +34 -0
- package/package.json +20 -13
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeReferenceItem = removeReferenceItem;
|
|
4
|
+
const graphql_1 = require("graphql");
|
|
5
|
+
/**
|
|
6
|
+
* Remove the "item" field in queries and fragments from the "ContentReference" type if it's not in the schema
|
|
7
|
+
*
|
|
8
|
+
* @param files
|
|
9
|
+
* @param options
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
async function removeReferenceItem(files, options) {
|
|
13
|
+
// Debug output
|
|
14
|
+
if (options.presetConfig.verbose)
|
|
15
|
+
console.log(`✨ [Optimizely] Checking ContentReference to determine if it has an "item" field`);
|
|
16
|
+
const GraphSchemaObject = 'ContentReference';
|
|
17
|
+
const GraphFieldName = 'item';
|
|
18
|
+
// Get the fields of ContentReference, return if it contains "item" - we're all good to go
|
|
19
|
+
const contentReferenceFields = getObjectFieldNames(options.schema, GraphSchemaObject);
|
|
20
|
+
if (contentReferenceFields.includes(GraphFieldName))
|
|
21
|
+
return files;
|
|
22
|
+
// Ouch, this is an old SaaS CMS instance, so we're going to clean this field
|
|
23
|
+
if (options.presetConfig.verbose)
|
|
24
|
+
console.log(`✨ [Optimizely] Nope it hasn't removing any reference to it`);
|
|
25
|
+
const filteredFiles = files.map((file) => {
|
|
26
|
+
let isModified = false;
|
|
27
|
+
const newDocument = file.document ? (0, graphql_1.visit)(file.document, {
|
|
28
|
+
Field: {
|
|
29
|
+
enter(node) {
|
|
30
|
+
const dependDirective = node.directives?.find(x => x.name.value === 'depend');
|
|
31
|
+
if (dependDirective) {
|
|
32
|
+
const args = parseArgs(dependDirective.arguments);
|
|
33
|
+
const dependency = args.get('on');
|
|
34
|
+
if (typeof dependency !== 'string' || dependency.length === 0)
|
|
35
|
+
throw new Error(`The depend directive requires the parameter "on" to be a non-empty string ${buildLocString(dependDirective)}`);
|
|
36
|
+
console.log(`Field ${node.name.value} depends on ${args.get('on')}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}) : undefined;
|
|
41
|
+
return isModified
|
|
42
|
+
? {
|
|
43
|
+
...file,
|
|
44
|
+
rawSDL: newDocument ? (0, graphql_1.print)(newDocument) : undefined,
|
|
45
|
+
document: newDocument,
|
|
46
|
+
}
|
|
47
|
+
: file;
|
|
48
|
+
});
|
|
49
|
+
return filteredFiles;
|
|
50
|
+
}
|
|
51
|
+
function buildLocString(node) {
|
|
52
|
+
if (!node.loc)
|
|
53
|
+
return "";
|
|
54
|
+
const sourceName = node.loc.source.name;
|
|
55
|
+
const startLine = node.loc.startToken.line;
|
|
56
|
+
const startChar = node.loc.startToken.column;
|
|
57
|
+
return `in ${sourceName} at line ${startLine}, position ${startChar}`;
|
|
58
|
+
}
|
|
59
|
+
function parseArgs(args) {
|
|
60
|
+
return args?.reduce((out, arg) => {
|
|
61
|
+
const argName = arg.name.value;
|
|
62
|
+
switch (arg.value.kind) {
|
|
63
|
+
case graphql_1.Kind.INT:
|
|
64
|
+
out.set(argName, parseInt(arg.value.value));
|
|
65
|
+
break;
|
|
66
|
+
case graphql_1.Kind.BOOLEAN:
|
|
67
|
+
out.set(argName, new Boolean(arg.value.value));
|
|
68
|
+
break;
|
|
69
|
+
case graphql_1.Kind.STRING:
|
|
70
|
+
out.set(argName, arg.value.value);
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
throw new Error(`Error parsing directive arguments, encountered unsupported argument kind ${arg.value.kind} for ${argName} ${buildLocString(arg)}`);
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}, new Map()) ?? new Map();
|
|
77
|
+
}
|
|
78
|
+
exports.default = removeReferenceItem;
|
|
79
|
+
function getObjectFieldNames(schema, objectName) {
|
|
80
|
+
let currentObjectName;
|
|
81
|
+
let objectFields = [];
|
|
82
|
+
(0, graphql_1.visit)(schema, {
|
|
83
|
+
ObjectTypeDefinition: {
|
|
84
|
+
enter(node) {
|
|
85
|
+
currentObjectName = node.name.value;
|
|
86
|
+
},
|
|
87
|
+
leave(node) {
|
|
88
|
+
if (currentObjectName === node.name.value)
|
|
89
|
+
currentObjectName = undefined;
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
FieldDefinition: {
|
|
93
|
+
enter(node) {
|
|
94
|
+
if (currentObjectName === objectName)
|
|
95
|
+
objectFields.push(node.name.value);
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
return objectFields;
|
|
100
|
+
}
|
|
101
|
+
function isASTNode(node) {
|
|
102
|
+
return !Array.isArray(node);
|
|
103
|
+
}
|
|
104
|
+
function isNotNullOrUndefined(toTest) {
|
|
105
|
+
return toTest !== null && toTest !== undefined;
|
|
106
|
+
}
|
|
107
|
+
function isFragmentOrOperation(x) {
|
|
108
|
+
if (Array.isArray(x) || x == undefined || x == null)
|
|
109
|
+
return false;
|
|
110
|
+
return (x.kind == graphql_1.Kind.FRAGMENT_DEFINITION ||
|
|
111
|
+
x.kind == graphql_1.Kind.OPERATION_DEFINITION);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=removeReferenceItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeReferenceItem.js","sourceRoot":"","sources":["../../src/_transform/removeReferenceItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Types } from '@graphql-codegen/plugin-helpers';
|
|
2
|
+
import { type DocumentNode } from 'graphql';
|
|
3
|
+
export type DocumentSet = Types.DocumentFile[];
|
|
4
|
+
export type FragmentMetaData = {
|
|
5
|
+
fragmentName: string;
|
|
6
|
+
targetType: string;
|
|
7
|
+
location?: string;
|
|
8
|
+
};
|
|
9
|
+
export type FragmentMetaDataList = Array<FragmentMetaData> & {
|
|
10
|
+
get(targetType: string): FragmentMetaData | undefined;
|
|
11
|
+
has(targetType: string): boolean;
|
|
12
|
+
hasForType(targetType: string): boolean;
|
|
13
|
+
forType(targetType: string): FragmentMetaDataList;
|
|
14
|
+
};
|
|
15
|
+
export declare function getAllFragments(files: DocumentSet): FragmentMetaDataList;
|
|
16
|
+
export type QueryMetaData = {
|
|
17
|
+
queryName: string;
|
|
18
|
+
targetTypes: Array<string>;
|
|
19
|
+
location?: string;
|
|
20
|
+
};
|
|
21
|
+
export type QueryMetaDataList = Array<QueryMetaData> & {
|
|
22
|
+
get(queryName: string): QueryMetaData | undefined;
|
|
23
|
+
has(queryName: string): boolean;
|
|
24
|
+
hasForType(targetType: string): boolean;
|
|
25
|
+
forType(targetType: string): QueryMetaDataList;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Retrieve the metadata from all queries that are defined in the provided DocumentSet
|
|
29
|
+
*
|
|
30
|
+
* @param files
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
export declare function getAllQueries(files: DocumentSet): QueryMetaDataList;
|
|
34
|
+
export declare function getAllTypeNames(schema: DocumentNode): string[];
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAllFragments = getAllFragments;
|
|
4
|
+
exports.getAllQueries = getAllQueries;
|
|
5
|
+
exports.getAllTypeNames = getAllTypeNames;
|
|
6
|
+
const graphql_1 = require("graphql");
|
|
7
|
+
function createFragmentMetaDataList(initialItems) {
|
|
8
|
+
const list = [...(initialItems || [])];
|
|
9
|
+
list.hasForType = (function (targetType) {
|
|
10
|
+
return this.some(x => x.targetType === targetType);
|
|
11
|
+
}).bind(list);
|
|
12
|
+
list.forType = (function (targetType) {
|
|
13
|
+
return createFragmentMetaDataList(this.filter(x => x.targetType === targetType));
|
|
14
|
+
}).bind(list);
|
|
15
|
+
list.get = (function (fragmentName) {
|
|
16
|
+
return this.find(x => x.fragmentName === fragmentName);
|
|
17
|
+
}).bind(list);
|
|
18
|
+
list.has = (function (fragmentName) {
|
|
19
|
+
return this.some(x => x.fragmentName === fragmentName);
|
|
20
|
+
}).bind(list);
|
|
21
|
+
return list;
|
|
22
|
+
}
|
|
23
|
+
function getAllFragments(files) {
|
|
24
|
+
const fragmentList = files.reduce((list, file) => {
|
|
25
|
+
if (file.document)
|
|
26
|
+
(0, graphql_1.visit)(file.document, {
|
|
27
|
+
FragmentDefinition: {
|
|
28
|
+
enter(node) {
|
|
29
|
+
list.push({
|
|
30
|
+
fragmentName: node.name.value,
|
|
31
|
+
targetType: node.typeCondition.name.value,
|
|
32
|
+
location: file.location
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return list;
|
|
38
|
+
}, []);
|
|
39
|
+
return createFragmentMetaDataList(fragmentList);
|
|
40
|
+
}
|
|
41
|
+
function createQueryMetaDataList(initialItems) {
|
|
42
|
+
const list = [...(initialItems || [])];
|
|
43
|
+
list.hasForType = (function (targetType) {
|
|
44
|
+
return this.some(x => x.targetTypes.includes(targetType));
|
|
45
|
+
}).bind(list);
|
|
46
|
+
list.forType = (function (targetType) {
|
|
47
|
+
return createQueryMetaDataList(this.filter(x => x.targetTypes.includes(targetType)));
|
|
48
|
+
}).bind(list);
|
|
49
|
+
list.get = (function (queryName) {
|
|
50
|
+
return this.find(x => x.queryName === queryName);
|
|
51
|
+
}).bind(list);
|
|
52
|
+
list.has = (function (queryName) {
|
|
53
|
+
return this.some(x => x.queryName === queryName);
|
|
54
|
+
}).bind(list);
|
|
55
|
+
return list;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Retrieve the metadata from all queries that are defined in the provided DocumentSet
|
|
59
|
+
*
|
|
60
|
+
* @param files
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
63
|
+
function getAllQueries(files) {
|
|
64
|
+
const queryList = files.reduce((list, file) => {
|
|
65
|
+
if (file?.document)
|
|
66
|
+
(0, graphql_1.visit)(file.document, {
|
|
67
|
+
OperationDefinition: {
|
|
68
|
+
enter(node) {
|
|
69
|
+
if (node.operation !== 'query')
|
|
70
|
+
return;
|
|
71
|
+
const queryName = node.name?.value;
|
|
72
|
+
if (!queryName)
|
|
73
|
+
return;
|
|
74
|
+
const metaData = {
|
|
75
|
+
queryName,
|
|
76
|
+
targetTypes: node.selectionSet.selections.filter(x => x.kind == 'Field').map(x => x.name.value),
|
|
77
|
+
location: file.location
|
|
78
|
+
};
|
|
79
|
+
list.push(metaData);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return list;
|
|
84
|
+
}, []);
|
|
85
|
+
return createQueryMetaDataList(queryList);
|
|
86
|
+
}
|
|
87
|
+
function getAllTypeNames(schema) {
|
|
88
|
+
const names = [];
|
|
89
|
+
(0, graphql_1.visit)(schema, {
|
|
90
|
+
ObjectTypeDefinition: {
|
|
91
|
+
enter(node) {
|
|
92
|
+
names.push(node.name.value);
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
InterfaceTypeDefinition: {
|
|
96
|
+
enter(node) {
|
|
97
|
+
names.push(node.name.value);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
return names;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/_transform/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IntegrationApi, CmsIntegrationApiClient, CmsIntegrationApiOptions } from "@remkoj/optimizely-cms-api";
|
|
2
|
+
export declare function contentTypeToFragmentName(contentType: IntegrationApi.ContentType, forProperty?: boolean): string | undefined;
|
|
3
|
+
export declare function fragmentNameToContentType(fragmentName: string): {
|
|
4
|
+
contentType: string;
|
|
5
|
+
baseType: string;
|
|
6
|
+
forProperty: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function getContentType(contentTypeKey: string, clientOrConfig?: CmsIntegrationApiClient | CmsIntegrationApiOptions): Promise<IntegrationApi.ContentType | undefined>;
|
|
9
|
+
export type ContentTypeFilter = (contentType: IntegrationApi.ContentType) => Promise<boolean> | boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Retrieve all content types as an Async Generator, allowing processing of entries whilest they are being loaded from the CMS instance.
|
|
12
|
+
*
|
|
13
|
+
* @param clientOrConfig
|
|
14
|
+
* @param pageSize
|
|
15
|
+
* @param filter
|
|
16
|
+
*/
|
|
17
|
+
export declare function getAllContentTypes(clientOrConfig?: CmsIntegrationApiClient | CmsIntegrationApiOptions, pageSize?: number, filter?: ContentTypeFilter): AsyncGenerator<IntegrationApi.ContentType>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.contentTypeToFragmentName = contentTypeToFragmentName;
|
|
4
|
+
exports.fragmentNameToContentType = fragmentNameToContentType;
|
|
5
|
+
exports.getContentType = getContentType;
|
|
6
|
+
exports.getAllContentTypes = getAllContentTypes;
|
|
7
|
+
const optimizely_cms_api_1 = require("@remkoj/optimizely-cms-api");
|
|
8
|
+
const node_object_hash_1 = require("node-object-hash");
|
|
9
|
+
const tools_1 = require("../tools");
|
|
10
|
+
var hasher = (0, node_object_hash_1.hasher)({ sort: true, coerce: true });
|
|
11
|
+
const clientByHash = new Map();
|
|
12
|
+
function getClient(config) {
|
|
13
|
+
const configHash = hasher.hash(config ?? {});
|
|
14
|
+
let client = clientByHash.get(configHash);
|
|
15
|
+
if (!client) {
|
|
16
|
+
client = new Promise((resolve, reject) => {
|
|
17
|
+
const cms_client = (0, optimizely_cms_api_1.createClient)(config);
|
|
18
|
+
cms_client.getInstanceInfo().then(() => {
|
|
19
|
+
resolve(cms_client);
|
|
20
|
+
}).catch(e => {
|
|
21
|
+
reject(e);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
clientByHash.set(configHash, client);
|
|
25
|
+
}
|
|
26
|
+
return client;
|
|
27
|
+
}
|
|
28
|
+
function contentTypeToFragmentName(contentType, forProperty = false) {
|
|
29
|
+
const contentTypeKey = contentType.key;
|
|
30
|
+
const contentTypeBase = forProperty ? (0, tools_1.ucFirst)((0, tools_1.trimStart)(contentType.baseType ?? '', '_')) : 'Property';
|
|
31
|
+
if (!contentTypeKey)
|
|
32
|
+
return undefined;
|
|
33
|
+
return contentTypeKey + '_' + contentTypeBase + 'Data';
|
|
34
|
+
}
|
|
35
|
+
function fragmentNameToContentType(fragmentName) {
|
|
36
|
+
const result = fragmentName.match(/^([A-Za-z][_0-9A-Za-z]+?)(_([A-Za-z][0-9A-Za-z]+)|_){0,1}Data$/);
|
|
37
|
+
const contentTypeKey = result?.at(1)?.endsWith('Property') ? result.at(1)?.substring(0, Math.max((result.at(1)?.length ?? 0) - 8, 0)) : result?.at(1);
|
|
38
|
+
const contentTypeBase = (result?.at(3) === 'Property' ? 'Component' : result?.at(3)) ?? 'Component';
|
|
39
|
+
if (!contentTypeKey)
|
|
40
|
+
throw new Error("Unable to determine ContentType from fragment: " + fragmentName);
|
|
41
|
+
const forProperty = (result?.at(3) === 'Property' || (!result?.at(3) && result?.at(1)?.endsWith('Property'))) || false;
|
|
42
|
+
return {
|
|
43
|
+
contentType: contentTypeKey,
|
|
44
|
+
baseType: '_' + (0, tools_1.lcFirst)(contentTypeBase),
|
|
45
|
+
forProperty
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async function getContentType(contentTypeKey, clientOrConfig) {
|
|
49
|
+
const client = (0, optimizely_cms_api_1.isClientInstance)(clientOrConfig) ? clientOrConfig : await getClient(clientOrConfig);
|
|
50
|
+
const contentType = await client.contentTypesGet({ path: { key: contentTypeKey } }).catch(() => undefined);
|
|
51
|
+
return contentType;
|
|
52
|
+
}
|
|
53
|
+
const DefaultContentTypeFilter = () => true;
|
|
54
|
+
/**
|
|
55
|
+
* Retrieve all content types as an Async Generator, allowing processing of entries whilest they are being loaded from the CMS instance.
|
|
56
|
+
*
|
|
57
|
+
* @param clientOrConfig
|
|
58
|
+
* @param pageSize
|
|
59
|
+
* @param filter
|
|
60
|
+
*/
|
|
61
|
+
async function* getAllContentTypes(clientOrConfig, pageSize = 25, filter = DefaultContentTypeFilter) {
|
|
62
|
+
const client = (0, optimizely_cms_api_1.isClientInstance)(clientOrConfig) ? clientOrConfig : await getClient(clientOrConfig);
|
|
63
|
+
let requestPageSize = pageSize;
|
|
64
|
+
let requestPageIndex = 0;
|
|
65
|
+
let totalItemCount = 0;
|
|
66
|
+
let totalPages = 0;
|
|
67
|
+
do {
|
|
68
|
+
const resultsPage = await client.contentTypesList({ query: { pageIndex: requestPageIndex, pageSize: requestPageSize } }).catch((_) => {
|
|
69
|
+
return {
|
|
70
|
+
items: [],
|
|
71
|
+
totalItemCount: 0,
|
|
72
|
+
pageIndex: requestPageIndex,
|
|
73
|
+
pageSize: requestPageSize
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
// Calculate fields for next page
|
|
77
|
+
totalItemCount = resultsPage.totalItemCount ?? 0;
|
|
78
|
+
requestPageSize = resultsPage.pageSize ?? 0;
|
|
79
|
+
requestPageIndex = (resultsPage.pageIndex ?? 0) + 1;
|
|
80
|
+
totalPages = resultsPage.totalItemCount && resultsPage.pageSize ? Math.ceil(totalItemCount / requestPageSize) : 0;
|
|
81
|
+
// Yield items
|
|
82
|
+
for (const contentType of (resultsPage.items ?? [])) {
|
|
83
|
+
if (await filter(contentType))
|
|
84
|
+
yield contentType;
|
|
85
|
+
}
|
|
86
|
+
} while (requestPageIndex < totalPages);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cms/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type Types } from '@graphql-codegen/plugin-helpers';
|
|
2
|
+
import type { IntegrationApi } from '@remkoj/optimizely-cms-api';
|
|
3
|
+
export * as Tools from './tools';
|
|
4
|
+
type LoaderConfig = {
|
|
5
|
+
pluginContext?: {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
type LoaderFunction = (documentUri: string, config: LoaderConfig) => Promise<Types.DocumentFile | undefined | void>;
|
|
10
|
+
declare const ContentTypeLoader: LoaderFunction;
|
|
11
|
+
export type VirtualLocationOptions = {
|
|
12
|
+
forProperty: boolean;
|
|
13
|
+
type: 'fragment' | 'query';
|
|
14
|
+
};
|
|
15
|
+
export type VirtualLocationData = {
|
|
16
|
+
contentTypeBase: string;
|
|
17
|
+
contentTypeKey: string;
|
|
18
|
+
injectionTargets: Array<string>;
|
|
19
|
+
} & VirtualLocationOptions;
|
|
20
|
+
export declare function parseVirtualLocation(virtualPath: string): VirtualLocationData | undefined;
|
|
21
|
+
export declare function buildVirtualLocation(contentType: IntegrationApi.ContentType, options?: Partial<VirtualLocationOptions>): string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Get the Graph Type for the Content Type
|
|
24
|
+
* @param contentType
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
export declare function getGraphType(contentType: IntegrationApi.ContentType): string;
|
|
28
|
+
export declare function getGraphPropertyType(contentType: IntegrationApi.ContentType): string;
|
|
29
|
+
export declare function parseBaseType(storedBaseType: string): string;
|
|
30
|
+
export declare function extractBaseType(contentType: IntegrationApi.ContentType, fallback?: string): string;
|
|
31
|
+
export declare enum ContentTypeTarget {
|
|
32
|
+
'SectionData' = "SectionData",
|
|
33
|
+
'PageData' = "PageData",
|
|
34
|
+
'MediaData' = "MediaData",
|
|
35
|
+
'ComponentData' = "ComponentData",
|
|
36
|
+
'ElementData' = "ElementData",
|
|
37
|
+
'SectionElementData' = "SectionElementData",
|
|
38
|
+
'FormElementData' = "FormElementData",
|
|
39
|
+
'BlockData' = "BlockData"
|
|
40
|
+
}
|
|
41
|
+
export declare function getContentTypeTargets(contentType: IntegrationApi.ContentType): ContentTypeTarget[];
|
|
42
|
+
export declare function buildGetQuery(contentType: IntegrationApi.ContentType, queryName?: string | ((defaultName: string) => string), propertyTracker?: PropertyCollisionTracker): string;
|
|
43
|
+
/**
|
|
44
|
+
* Retrieve a list of component keys that are referenced as property by this type
|
|
45
|
+
*
|
|
46
|
+
* @param contentType
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
export declare function getReferencedPropertyComponents(contentType: IntegrationApi.ContentType): string[];
|
|
50
|
+
export declare function getSlugFromKey(key: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Tracker for all properties, indexed by property name, then type
|
|
53
|
+
* for a list of all ContentTypes.
|
|
54
|
+
*/
|
|
55
|
+
export type PropertyCollisionTracker = Map<string, string>;
|
|
56
|
+
export declare function buildFragment(contentType: IntegrationApi.ContentType, fragmentName?: string | ((defaultName: string) => string), forProperty?: boolean, propertyTracker?: PropertyCollisionTracker): string;
|
|
57
|
+
export declare function buildProperty(propertyName: string, propertyConfig?: IntegrationApi.ContentTypeProperty, propertyTracker?: PropertyCollisionTracker): string | null;
|
|
58
|
+
export default ContentTypeLoader;
|