@remkoj/optimizely-cms-cli 2.0.0-pre4
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/README.md +1 -0
- package/dist/index.js +639 -0
- package/dist/index.js.map +1 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# opti-schema-cli
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,639 @@
|
|
|
1
|
+
import { globSync, glob } from 'glob';
|
|
2
|
+
import dotenv from 'dotenv';
|
|
3
|
+
import { expand } from 'dotenv-expand';
|
|
4
|
+
import { getCmsIntegrationApiConfigFromEnvironment, createClient } from '@remkoj/optimizely-cms-api';
|
|
5
|
+
import yargs from 'yargs';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import figures from 'figures';
|
|
10
|
+
import Table from 'cli-table3';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Prepare the application context, by parsing the .env files in the main
|
|
14
|
+
* application directory.
|
|
15
|
+
*
|
|
16
|
+
* @returns A string array with the files processed
|
|
17
|
+
*/
|
|
18
|
+
function prepare() {
|
|
19
|
+
const envFiles = globSync(".env*").sort((a, b) => b.length - a.length).filter(n => n == ".env" || n == ".env.local" || (process.env.NODE_ENV && n == `.env.${process.env.NODE_ENV}.local`));
|
|
20
|
+
expand(dotenv.config({ path: envFiles }));
|
|
21
|
+
return envFiles;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function createOptiCmsApp(scriptName, version, epilogue) {
|
|
25
|
+
const config = getCmsIntegrationApiConfigFromEnvironment();
|
|
26
|
+
return yargs(process.argv)
|
|
27
|
+
.scriptName(scriptName)
|
|
28
|
+
.version(version )
|
|
29
|
+
.usage('$0 <cmd> [args]')
|
|
30
|
+
.option("path", { alias: "p", description: "Application root folder", string: true, type: "string", demandOption: false, default: process.cwd() })
|
|
31
|
+
.option("components", { alias: "c", description: "Path to components folder", string: true, type: "string", demandOption: false, default: "./src/components/cms" })
|
|
32
|
+
.option("cms_url", { alias: "cu", description: "Optimizely CMS URL", string: true, type: "string", demandOption: isDemanded(config.base), default: config.base, coerce: (val) => new URL(val) })
|
|
33
|
+
.option("client_id", { alias: "ci", description: "API Client ID", string: true, type: "string", demandOption: isDemanded(config.clientId), default: config.clientId })
|
|
34
|
+
.option('client_secret', { alias: "cs", description: "API Client Secrent", string: true, type: "string", demandOption: isDemanded(config.clientSecret), default: config.clientSecret })
|
|
35
|
+
.option('user_id', { alias: "uid", description: "Impersonate user id", string: true, type: "string", demandOption: false, default: config.actAs })
|
|
36
|
+
.option('verbose', { description: "Enable logging", boolean: true, type: 'boolean', demandOption: false, default: config.debug })
|
|
37
|
+
.demandCommand(1, 1)
|
|
38
|
+
.showHelpOnFail(true)
|
|
39
|
+
.epilogue(`Copyright Remko Jantzen - 2023-${(new Date(Date.now())).getFullYear()}`)
|
|
40
|
+
.help();
|
|
41
|
+
}
|
|
42
|
+
function isDemanded(value) {
|
|
43
|
+
if (value == undefined || value == null)
|
|
44
|
+
return true;
|
|
45
|
+
switch (typeof (value)) {
|
|
46
|
+
case 'string':
|
|
47
|
+
return value == "";
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Parse the CLI configuration into usable values
|
|
54
|
+
*
|
|
55
|
+
* @param param0 The parameters from the Command Line application
|
|
56
|
+
* @returns The arguments, with the Optimizely CMS Client parameters transformed into a configuration object
|
|
57
|
+
*/
|
|
58
|
+
function parseArgs({ client_id, client_secret, cms_url, user_id, verbose, path: argsPath, components: argsComponents, ...args }) {
|
|
59
|
+
const appPath = path.isAbsolute(argsPath) ? argsPath : path.normalize(path.join(process.cwd(), argsPath));
|
|
60
|
+
const componentDir = path.normalize(path.join(argsPath, argsComponents));
|
|
61
|
+
if (!componentDir.startsWith(argsPath))
|
|
62
|
+
throw new Error(`The component directory ${componentDir} is outside the application directory (${appPath})`);
|
|
63
|
+
return {
|
|
64
|
+
_config: {
|
|
65
|
+
base: cms_url,
|
|
66
|
+
clientId: client_id,
|
|
67
|
+
clientSecret: client_secret,
|
|
68
|
+
actAs: user_id,
|
|
69
|
+
debug: verbose
|
|
70
|
+
},
|
|
71
|
+
...args,
|
|
72
|
+
path: appPath,
|
|
73
|
+
components: componentDir
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const StylesPushCommand = {
|
|
78
|
+
command: "styles:push",
|
|
79
|
+
describe: "Push Visual Builder style definitions into the CMS (create/replace)",
|
|
80
|
+
handler: async (args) => {
|
|
81
|
+
const { _config: cfg, ...opts } = parseArgs(args);
|
|
82
|
+
const client = createClient(cfg);
|
|
83
|
+
/*const currentTemplates = await client.displayTemplates.displayTemplatesList()
|
|
84
|
+
currentTemplates.items?.map(tpl => {
|
|
85
|
+
console.log(JSON.stringify(tpl, undefined, 4))
|
|
86
|
+
})*/
|
|
87
|
+
process.stdout.write(chalk.yellowBright(`${figures.arrowRight} Pushing (create/replace) DisplayStyles into Optimizely CMS\n`));
|
|
88
|
+
const styleDefinitionFiles = await glob("./**/*.opti-style.json", {
|
|
89
|
+
cwd: opts.components
|
|
90
|
+
});
|
|
91
|
+
const results = await Promise.all(styleDefinitionFiles.map(async (styleDefinitionFile) => {
|
|
92
|
+
const filePath = path.normalize(path.join(opts.components, styleDefinitionFile));
|
|
93
|
+
const styleDefinition = tryReadJsonFile(filePath, cfg.debug);
|
|
94
|
+
const styleKey = styleDefinition.key;
|
|
95
|
+
if (!styleKey) {
|
|
96
|
+
process.stderr.write(chalk.redBright(`${chalk.bold(figures.cross)} The style definition in ${path.relative(opts.path, filePath)} does not have a key defined\n`));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (cfg.debug)
|
|
100
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Pushing: ${styleKey}\n`));
|
|
101
|
+
const newTemplate = await client.displayTemplates.displayTemplatesPut(styleKey, styleDefinition);
|
|
102
|
+
return newTemplate;
|
|
103
|
+
}));
|
|
104
|
+
const styles = new Table({
|
|
105
|
+
head: [
|
|
106
|
+
chalk.yellow(chalk.bold("Name")),
|
|
107
|
+
chalk.yellow(chalk.bold("Key")),
|
|
108
|
+
chalk.yellow(chalk.bold("Default")),
|
|
109
|
+
chalk.yellow(chalk.bold("Target"))
|
|
110
|
+
],
|
|
111
|
+
colWidths: [31, 20, 9, 20],
|
|
112
|
+
colAligns: ["left", "left", "center", "left"]
|
|
113
|
+
});
|
|
114
|
+
results.forEach(tpl => {
|
|
115
|
+
styles.push([
|
|
116
|
+
tpl.displayName,
|
|
117
|
+
tpl.key,
|
|
118
|
+
tpl.isDefault ? figures.tick : figures.cross,
|
|
119
|
+
tpl.contentType ? `${tpl.contentType} (C)` : tpl.baseType ? `${tpl.baseType} (B)` : `${tpl.nodeType} (N)`
|
|
120
|
+
]);
|
|
121
|
+
});
|
|
122
|
+
process.stdout.write(styles.toString() + "\n");
|
|
123
|
+
process.stdout.write(chalk.green(chalk.bold(figures.tick + " Done")) + "\n");
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
function tryReadJsonFile(filePath, debug = false) {
|
|
127
|
+
try {
|
|
128
|
+
if (debug)
|
|
129
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Reading style definition from ${filePath}\n`));
|
|
130
|
+
return JSON.parse(fs.readFileSync(filePath, { encoding: 'utf-8' }));
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
process.stderr.write(chalk.redBright(`${chalk.bold(figures.cross)} Error while reading ${filePath}\n`));
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const StylesListCommand = {
|
|
139
|
+
command: "styles:list",
|
|
140
|
+
describe: "List Visual Builder style definitions from the CMS",
|
|
141
|
+
handler: async (args) => {
|
|
142
|
+
const { _config: cfg, ...opts } = parseArgs(args);
|
|
143
|
+
const client = createClient(cfg);
|
|
144
|
+
const pageSize = 100;
|
|
145
|
+
process.stdout.write(chalk.yellowBright(`${figures.arrowRight} Reading DisplayStyles from Optimizely CMS\n`));
|
|
146
|
+
if (cfg.debug)
|
|
147
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetching page 1 of ? (${pageSize} items per page)\n`));
|
|
148
|
+
let templatesPage = await client.displayTemplates.displayTemplatesList(0, pageSize);
|
|
149
|
+
const results = templatesPage.items ?? [];
|
|
150
|
+
let pagesRemaining = Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize) - (templatesPage.pageIndex + 1);
|
|
151
|
+
while (pagesRemaining > 0 && results.length < templatesPage.totalItemCount) {
|
|
152
|
+
if (cfg.debug)
|
|
153
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetching page ${templatesPage.pageIndex + 2} of ${Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize)} (${templatesPage.pageSize} items per page)\n`));
|
|
154
|
+
templatesPage = await client.displayTemplates.displayTemplatesList(templatesPage.pageIndex + 1, templatesPage.pageSize);
|
|
155
|
+
results.push(...templatesPage.items);
|
|
156
|
+
pagesRemaining = Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize) - (templatesPage.pageIndex + 1);
|
|
157
|
+
}
|
|
158
|
+
const styles = new Table({
|
|
159
|
+
head: [
|
|
160
|
+
chalk.yellow(chalk.bold("Name")),
|
|
161
|
+
chalk.yellow(chalk.bold("Key")),
|
|
162
|
+
chalk.yellow(chalk.bold("Default")),
|
|
163
|
+
chalk.yellow(chalk.bold("Target"))
|
|
164
|
+
],
|
|
165
|
+
colWidths: [31, 20, 9, 20],
|
|
166
|
+
colAligns: ["left", "left", "center", "left"]
|
|
167
|
+
});
|
|
168
|
+
results.forEach(tpl => {
|
|
169
|
+
styles.push([
|
|
170
|
+
tpl.displayName,
|
|
171
|
+
tpl.key,
|
|
172
|
+
tpl.isDefault ? figures.tick : figures.cross,
|
|
173
|
+
tpl.contentType ? `${tpl.contentType} (C)` : tpl.baseType ? `${tpl.baseType} (B)` : `${tpl.nodeType} (N)`
|
|
174
|
+
]);
|
|
175
|
+
});
|
|
176
|
+
process.stdout.write(styles.toString() + "\n");
|
|
177
|
+
process.stdout.write(chalk.green(chalk.bold(figures.tick + " Done")) + "\n");
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
const StylesPullCommand = {
|
|
182
|
+
command: "styles:pull",
|
|
183
|
+
describe: "Create Visual Builder style definitions from the CMS",
|
|
184
|
+
handler: async (args) => {
|
|
185
|
+
const { _config: cfg, components: basePath } = parseArgs(args);
|
|
186
|
+
const client = createClient(cfg);
|
|
187
|
+
const pageSize = 100;
|
|
188
|
+
process.stdout.write(chalk.yellowBright(`${figures.arrowRight} Reading DisplayStyles from Optimizely CMS\n`));
|
|
189
|
+
if (cfg.debug)
|
|
190
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetching page 1 of ? (${pageSize} items per page)\n`));
|
|
191
|
+
let templatesPage = await client.displayTemplates.displayTemplatesList(0, pageSize);
|
|
192
|
+
const results = templatesPage.items ?? [];
|
|
193
|
+
let pagesRemaining = Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize) - (templatesPage.pageIndex + 1);
|
|
194
|
+
while (pagesRemaining > 0 && results.length < templatesPage.totalItemCount) {
|
|
195
|
+
if (cfg.debug)
|
|
196
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetching page ${templatesPage.pageIndex + 2} of ${Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize)} (${templatesPage.pageSize} items per page)\n`));
|
|
197
|
+
templatesPage = await client.displayTemplates.displayTemplatesList(templatesPage.pageIndex + 1, templatesPage.pageSize);
|
|
198
|
+
results.push(...templatesPage.items);
|
|
199
|
+
pagesRemaining = Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize) - (templatesPage.pageIndex + 1);
|
|
200
|
+
}
|
|
201
|
+
if (cfg.debug)
|
|
202
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetched ${results.length} Content-Types from Optimizely CMS\n`));
|
|
203
|
+
if (!fs.existsSync(basePath))
|
|
204
|
+
fs.mkdirSync(basePath, { recursive: true });
|
|
205
|
+
if (!fs.statSync(basePath).isDirectory()) {
|
|
206
|
+
process.stderr.write(chalk.redBright(`${chalk.bold(figures.cross)} The components path ${basePath} is not a folder\n`));
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
const typeFiles = {};
|
|
210
|
+
const updatedTemplates = await Promise.all(results.map(async (displayTemplate) => {
|
|
211
|
+
let itemPath = undefined;
|
|
212
|
+
let targetType;
|
|
213
|
+
let typesPath;
|
|
214
|
+
if (displayTemplate.nodeType) {
|
|
215
|
+
itemPath = path.join(basePath, 'styles', displayTemplate.nodeType, displayTemplate.key);
|
|
216
|
+
typesPath = path.join(basePath, 'styles', displayTemplate.nodeType);
|
|
217
|
+
targetType = 'node/' + displayTemplate.nodeType;
|
|
218
|
+
}
|
|
219
|
+
else if (displayTemplate.baseType) {
|
|
220
|
+
itemPath = path.join(basePath, displayTemplate.baseType, 'styles', displayTemplate.key);
|
|
221
|
+
typesPath = path.join(basePath, displayTemplate.baseType, 'styles');
|
|
222
|
+
targetType = 'base/' + displayTemplate.baseType;
|
|
223
|
+
}
|
|
224
|
+
else if (displayTemplate.contentType) {
|
|
225
|
+
const contentType = await client.contentTypes.contentTypesGet(displayTemplate.contentType ?? '-');
|
|
226
|
+
itemPath = path.join(basePath, contentType.baseType, contentType.key);
|
|
227
|
+
typesPath = path.join(basePath, contentType.baseType, contentType.key);
|
|
228
|
+
targetType = 'content/' + displayTemplate.contentType;
|
|
229
|
+
}
|
|
230
|
+
if (!fs.existsSync(itemPath))
|
|
231
|
+
fs.mkdirSync(itemPath, { recursive: true });
|
|
232
|
+
// Write Style JSON
|
|
233
|
+
const filePath = path.join(itemPath, `${displayTemplate.key}.opti-style.json`);
|
|
234
|
+
fs.writeFileSync(filePath, JSON.stringify(displayTemplate, undefined, 2));
|
|
235
|
+
if (!typeFiles[targetType]) {
|
|
236
|
+
typeFiles[targetType] = {
|
|
237
|
+
filePath: path.join(typesPath, 'displayTemplates.ts'),
|
|
238
|
+
templates: []
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
typeFiles[targetType].templates.push(displayTemplate);
|
|
242
|
+
return displayTemplate.key;
|
|
243
|
+
}));
|
|
244
|
+
for (const targetId of Object.getOwnPropertyNames(typeFiles)) {
|
|
245
|
+
const { filePath: typeFilePath, templates } = typeFiles[targetId];
|
|
246
|
+
// Write Style definition
|
|
247
|
+
const typeContents = [];
|
|
248
|
+
let typeId = undefined;
|
|
249
|
+
templates.forEach(displayTemplate => {
|
|
250
|
+
if (Object.getOwnPropertyNames(displayTemplate.settings).length > 0) {
|
|
251
|
+
typeContents.push(`export type ${displayTemplate.key}Settings = Array<`);
|
|
252
|
+
const typeSettings = [];
|
|
253
|
+
for (const settingName of Object.getOwnPropertyNames(displayTemplate.settings)) {
|
|
254
|
+
const settingOptions = '"' + Object.getOwnPropertyNames(displayTemplate.settings[settingName].choices).join('" | "') + '"';
|
|
255
|
+
typeSettings.push(` { key: "${settingName}", value: ${settingOptions}}`);
|
|
256
|
+
}
|
|
257
|
+
typeContents.push(typeSettings.join(" |\n"));
|
|
258
|
+
typeContents.push('>');
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
typeContents.push(`export type ${displayTemplate.key}Settings = []`);
|
|
262
|
+
}
|
|
263
|
+
typeContents.push(`export type ${displayTemplate.key}LayoutProps = {`);
|
|
264
|
+
typeContents.push(` template: "${displayTemplate.key}"`);
|
|
265
|
+
typeContents.push(` settings: ${displayTemplate.key}Settings`);
|
|
266
|
+
typeContents.push(`}`);
|
|
267
|
+
typeId = displayTemplate.contentType ?? displayTemplate.baseType ?? displayTemplate.nodeType;
|
|
268
|
+
typeId = typeId[0]?.toUpperCase() + typeId.substring(1) + "LayoutProps";
|
|
269
|
+
});
|
|
270
|
+
typeContents.push(`export type ${typeId} = ${templates.map(t => t.key + "LayoutProps").join(' | ')}`);
|
|
271
|
+
typeContents.push(`export default ${typeId}`);
|
|
272
|
+
fs.writeFileSync(typeFilePath, typeContents.join("\n"));
|
|
273
|
+
}
|
|
274
|
+
process.stdout.write(chalk.yellowBright(`${figures.arrowRight} Created/updated style definitions for ${updatedTemplates.join(', ')}\n`));
|
|
275
|
+
process.stdout.write(chalk.green(chalk.bold(figures.tick + " Done")) + "\n");
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
const TypesPullCommand = {
|
|
280
|
+
command: "types:pull",
|
|
281
|
+
describe: "Pull content type definition files into the project",
|
|
282
|
+
builder: (yargs) => {
|
|
283
|
+
yargs.option('force', { alias: 'f', description: "Overwrite existing files", boolean: true, type: 'boolean', demandOption: false, default: false });
|
|
284
|
+
yargs.option('excludeTypes', { alias: 'ect', description: "Exclude these content types", string: true, type: 'array', demandOption: false, default: [] });
|
|
285
|
+
yargs.option('excludeBaseTypes', { alias: 'ebt', description: "Exclude these base types", string: true, type: 'array', demandOption: false, default: ['folder', 'media', 'image', 'video'] });
|
|
286
|
+
return yargs;
|
|
287
|
+
},
|
|
288
|
+
handler: async (args) => {
|
|
289
|
+
const { _config: cfg, components: basePath, excludeBaseTypes, excludeTypes } = parseArgs(args);
|
|
290
|
+
const client = createClient(cfg);
|
|
291
|
+
const pageSize = 100;
|
|
292
|
+
process.stdout.write(chalk.yellowBright(`${figures.arrowRight} Pulling Content Types from Optimizely CMS\n`));
|
|
293
|
+
if (cfg.debug)
|
|
294
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetching page 1 of ? (${pageSize} items per page)\n`));
|
|
295
|
+
let templatesPage = await client.contentTypes.contentTypesList(undefined, undefined, 0, pageSize);
|
|
296
|
+
const results = templatesPage.items ?? [];
|
|
297
|
+
let pagesRemaining = Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize) - (templatesPage.pageIndex + 1);
|
|
298
|
+
while (pagesRemaining > 0 && results.length < templatesPage.totalItemCount) {
|
|
299
|
+
if (cfg.debug)
|
|
300
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetching page ${templatesPage.pageIndex + 2} of ${Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize)} (${templatesPage.pageSize} items per page)\n`));
|
|
301
|
+
templatesPage = await client.contentTypes.contentTypesList(undefined, undefined, templatesPage.pageIndex + 1, templatesPage.pageSize);
|
|
302
|
+
results.push(...templatesPage.items);
|
|
303
|
+
pagesRemaining = Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize) - (templatesPage.pageIndex + 1);
|
|
304
|
+
}
|
|
305
|
+
if (cfg.debug)
|
|
306
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetched ${results.length} Content-Types from Optimizely CMS\n`));
|
|
307
|
+
if (!fs.existsSync(basePath))
|
|
308
|
+
fs.mkdirSync(basePath, { recursive: true });
|
|
309
|
+
if (!fs.statSync(basePath).isDirectory()) {
|
|
310
|
+
process.stderr.write(chalk.redBright(`${chalk.bold(figures.cross)} The components path ${basePath} is not a folder\n`));
|
|
311
|
+
process.exit(1);
|
|
312
|
+
}
|
|
313
|
+
const updatedTypes = results.map(contentType => {
|
|
314
|
+
if (excludeBaseTypes.includes(contentType.baseType)) {
|
|
315
|
+
if (cfg.debug)
|
|
316
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Skipping ${contentType.displayName} (${contentType.key}) - Base type excluded\n`));
|
|
317
|
+
return undefined;
|
|
318
|
+
}
|
|
319
|
+
if (excludeTypes.includes(contentType.key)) {
|
|
320
|
+
if (cfg.debug)
|
|
321
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Skipping ${contentType.displayName} (${contentType.key}) - Content type excluded\n`));
|
|
322
|
+
return undefined;
|
|
323
|
+
}
|
|
324
|
+
const typePath = path.join(basePath, contentType.baseType, contentType.key);
|
|
325
|
+
const typeFile = path.join(typePath, `${contentType.key}.opti-type.json`);
|
|
326
|
+
if (!fs.existsSync(typePath))
|
|
327
|
+
fs.mkdirSync(typePath, { recursive: true });
|
|
328
|
+
if (cfg.debug)
|
|
329
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Writing type definition for ${contentType.displayName} (${contentType.key})\n`));
|
|
330
|
+
fs.writeFileSync(typeFile, JSON.stringify(contentType, undefined, 2));
|
|
331
|
+
return contentType.key;
|
|
332
|
+
}).filter(x => x);
|
|
333
|
+
process.stdout.write(chalk.yellowBright(`${figures.arrowRight} Created/updated type definitions for ${updatedTypes.join(', ')}\n`));
|
|
334
|
+
process.stdout.write(chalk.green(chalk.bold(figures.tick + " Done")) + "\n");
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
const NextJsCreateCommand = {
|
|
339
|
+
command: "nextjs:create",
|
|
340
|
+
describe: "Scaffold a complete Next.JS / Optimizely Graph structure",
|
|
341
|
+
builder: (yargs) => {
|
|
342
|
+
yargs.option('force', { alias: 'f', description: "Overwrite existing files", boolean: true, type: 'boolean', demandOption: false, default: false });
|
|
343
|
+
yargs.option('excludeTypes', { alias: 'ect', description: "Exclude these content types", string: true, type: 'array', demandOption: false, default: [] });
|
|
344
|
+
yargs.option('excludeBaseTypes', { alias: 'ebt', description: "Exclude these base types", string: true, type: 'array', demandOption: false, default: ['folder', 'media', 'image', 'video'] });
|
|
345
|
+
return yargs;
|
|
346
|
+
},
|
|
347
|
+
handler: async (args) => {
|
|
348
|
+
const { _config: cfg, components: basePath, excludeBaseTypes, excludeTypes, force } = parseArgs(args);
|
|
349
|
+
const client = createClient(cfg);
|
|
350
|
+
const pageSize = 100;
|
|
351
|
+
process.stdout.write(chalk.yellowBright(`${figures.arrowRight} Pulling Content Types from Optimizely CMS\n`));
|
|
352
|
+
if (cfg.debug)
|
|
353
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetching page 1 of ? (${pageSize} items per page)\n`));
|
|
354
|
+
let templatesPage = await client.contentTypes.contentTypesList(undefined, undefined, 0, pageSize);
|
|
355
|
+
const results = templatesPage.items ?? [];
|
|
356
|
+
let pagesRemaining = Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize) - (templatesPage.pageIndex + 1);
|
|
357
|
+
while (pagesRemaining > 0 && results.length < templatesPage.totalItemCount) {
|
|
358
|
+
if (cfg.debug)
|
|
359
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetching page ${templatesPage.pageIndex + 2} of ${Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize)} (${templatesPage.pageSize} items per page)\n`));
|
|
360
|
+
templatesPage = await client.contentTypes.contentTypesList(undefined, undefined, templatesPage.pageIndex + 1, templatesPage.pageSize);
|
|
361
|
+
results.push(...templatesPage.items);
|
|
362
|
+
pagesRemaining = Math.ceil(templatesPage.totalItemCount / templatesPage.pageSize) - (templatesPage.pageIndex + 1);
|
|
363
|
+
}
|
|
364
|
+
if (cfg.debug)
|
|
365
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Fetched ${results.length} Content-Types from Optimizely CMS\n`));
|
|
366
|
+
if (!fs.existsSync(basePath))
|
|
367
|
+
fs.mkdirSync(basePath, { recursive: true });
|
|
368
|
+
if (!fs.statSync(basePath).isDirectory()) {
|
|
369
|
+
process.stderr.write(chalk.redBright(`${chalk.bold(figures.cross)} The components path ${basePath} is not a folder\n`));
|
|
370
|
+
process.exit(1);
|
|
371
|
+
}
|
|
372
|
+
// Apply content type filters
|
|
373
|
+
if (cfg.debug)
|
|
374
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Applying content type filters\n`));
|
|
375
|
+
const contentTypes = results.filter(contentType => {
|
|
376
|
+
if (contentType.source == 'system') {
|
|
377
|
+
if (cfg.debug)
|
|
378
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Skipping ${contentType.displayName} (${contentType.key}) - Internal CMS type\n`));
|
|
379
|
+
return false;
|
|
380
|
+
}
|
|
381
|
+
const baseType = contentType.baseType ?? 'default';
|
|
382
|
+
if (excludeBaseTypes.includes(baseType)) {
|
|
383
|
+
if (cfg.debug)
|
|
384
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Skipping ${contentType.displayName} (${contentType.key}) - Base type excluded\n`));
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
if (excludeTypes.includes(contentType.key)) {
|
|
388
|
+
if (cfg.debug)
|
|
389
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Skipping ${contentType.displayName} (${contentType.key}) - Content type excluded\n`));
|
|
390
|
+
return false;
|
|
391
|
+
}
|
|
392
|
+
return true;
|
|
393
|
+
});
|
|
394
|
+
if (cfg.debug)
|
|
395
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Applied content type filters, reduced from ${results.length} to ${contentTypes.length} items\n`));
|
|
396
|
+
// Create the type specific
|
|
397
|
+
const updatedTypes = contentTypes.map(contentType => {
|
|
398
|
+
const baseType = contentType.baseType ?? 'default';
|
|
399
|
+
// Create the type folder
|
|
400
|
+
const typePath = path.join(basePath, baseType, contentType.key);
|
|
401
|
+
if (!fs.existsSync(typePath))
|
|
402
|
+
fs.mkdirSync(typePath, { recursive: true });
|
|
403
|
+
// Create fragments
|
|
404
|
+
createGraphFragments(contentType, typePath, basePath, force, cfg, contentTypes);
|
|
405
|
+
// Create component
|
|
406
|
+
createComponent(contentType, typePath, force, cfg);
|
|
407
|
+
return contentType.key;
|
|
408
|
+
}).filter(x => x);
|
|
409
|
+
createFactory(contentTypes, basePath, force, cfg);
|
|
410
|
+
process.stdout.write(chalk.yellowBright(`${figures.arrowRight} Created/updated type definitions for ${updatedTypes.join(', ')}\n`));
|
|
411
|
+
process.stdout.write(chalk.green(chalk.bold(figures.tick + " Done")) + "\n");
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
function createFactory(contentTypes, basePath, force, cfg) {
|
|
415
|
+
// Get the list of all base types
|
|
416
|
+
const baseTypes = contentTypes.map(x => x.baseType).concat(['default']).filter((x, i, a) => x && !a.slice(0, i).includes(x)).sort();
|
|
417
|
+
const baseTypeFactories = baseTypes.map(baseType => {
|
|
418
|
+
// Get the list of inheriting types and return if it's empty
|
|
419
|
+
const inheritingTypes = contentTypes.filter(x => x.baseType == baseType);
|
|
420
|
+
if (inheritingTypes.length == 0)
|
|
421
|
+
return;
|
|
422
|
+
if (cfg.debug)
|
|
423
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Factory for ${ucFirst(baseType)} will contain these components: ${inheritingTypes.map(x => x.displayName ?? x.key).join(", ")}\n`));
|
|
424
|
+
// Check the file presence and if we should overwrite
|
|
425
|
+
const baseTypeFactory = path.join(basePath, baseType, 'index.ts');
|
|
426
|
+
if (fs.existsSync(baseTypeFactory)) {
|
|
427
|
+
if (cfg.debug)
|
|
428
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Overwriting ${ucFirst(baseType)} factory\n`));
|
|
429
|
+
}
|
|
430
|
+
// Build the actual factory
|
|
431
|
+
const lines = [
|
|
432
|
+
'// Auto generated dictionary',
|
|
433
|
+
'import { ComponentTypeDictionary } from "@remkoj/optimizely-cms-react";'
|
|
434
|
+
];
|
|
435
|
+
inheritingTypes.forEach(type => {
|
|
436
|
+
lines.push(`import ${type.key} from "./${type.key}";`);
|
|
437
|
+
});
|
|
438
|
+
lines.push('');
|
|
439
|
+
lines.push(`export const ${baseType}Dictionary : ComponentTypeDictionary = [`);
|
|
440
|
+
inheritingTypes.forEach(type => {
|
|
441
|
+
lines.push(' {', ` type: '${type.key}',`, ` component: ${type.key}`, ' },');
|
|
442
|
+
});
|
|
443
|
+
lines.push(']', '', `export default ${baseType}Dictionary`);
|
|
444
|
+
fs.writeFileSync(baseTypeFactory, lines.join("\n"));
|
|
445
|
+
return baseType;
|
|
446
|
+
}).filter(x => x);
|
|
447
|
+
const cmsFactoryFile = path.join(basePath, 'index.ts');
|
|
448
|
+
if (fs.existsSync(cmsFactoryFile)) {
|
|
449
|
+
if (cfg.debug)
|
|
450
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Overwriting CMS Components factory\n`));
|
|
451
|
+
}
|
|
452
|
+
const lines = [
|
|
453
|
+
'// Auto generated dictionary',
|
|
454
|
+
'import { ComponentTypeDictionary } from "@remkoj/optimizely-cms-react";'
|
|
455
|
+
];
|
|
456
|
+
baseTypeFactories.forEach(type => {
|
|
457
|
+
lines.push(`import ${type}Components from "./${type}";`);
|
|
458
|
+
});
|
|
459
|
+
lines.push('');
|
|
460
|
+
baseTypeFactories.forEach(type => {
|
|
461
|
+
lines.push(`prefixDictionaryEntries(${type}Components, '${ucFirst(type)}');`);
|
|
462
|
+
});
|
|
463
|
+
lines.push('');
|
|
464
|
+
lines.push('export const cmsComponentDictionary : ComponentTypeDictionary = [');
|
|
465
|
+
baseTypeFactories.forEach(type => {
|
|
466
|
+
lines.push(` ...${type}Components,`);
|
|
467
|
+
});
|
|
468
|
+
lines.push(']', '', `export default cmsComponentDictionary`, `function prefixDictionaryEntries(list: ComponentTypeDictionary, prefix: string) : ComponentTypeDictionary
|
|
469
|
+
{
|
|
470
|
+
list.forEach((component, idx, dictionary) => {
|
|
471
|
+
dictionary[idx].type = typeof component.type == 'string' ? prefix + "/" + component.type : [ prefix, ...component.type ]
|
|
472
|
+
})
|
|
473
|
+
return list
|
|
474
|
+
}`);
|
|
475
|
+
fs.writeFileSync(cmsFactoryFile, lines.join("\n"));
|
|
476
|
+
}
|
|
477
|
+
function createComponent(contentType, typePath, force, cfg) {
|
|
478
|
+
const componentFile = path.join(typePath, 'index.tsx');
|
|
479
|
+
if (fs.existsSync(componentFile)) {
|
|
480
|
+
if (force) {
|
|
481
|
+
if (cfg.debug)
|
|
482
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Overwriting ${contentType.displayName} (${contentType.key}) component\n`));
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
if (cfg.debug)
|
|
486
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Skipping ${contentType.displayName} (${contentType.key}) component - file already exists\n`));
|
|
487
|
+
return undefined;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
const varName = `${contentType.key}${ucFirst(contentType.baseType ?? 'part')}`;
|
|
491
|
+
const component = `import { CmsComponent } from "@remkoj/optimizely-cms-react";
|
|
492
|
+
import { ${contentType.key}DataFragmentDoc, type ${contentType.key}DataFragment } from "@/gql/graphql";
|
|
493
|
+
|
|
494
|
+
export const ${varName} : CmsComponent<${contentType.key}DataFragment> = ({ data }) => {
|
|
495
|
+
const componentName = '${contentType.displayName}'
|
|
496
|
+
const componentInfo = '${contentType.description ?? ''}'
|
|
497
|
+
return <div className="mx-auto px-2 container">
|
|
498
|
+
<div>{ componentName }</div>
|
|
499
|
+
<div>{ componentInfo }</div>
|
|
500
|
+
<pre className="w-full overflow-x-hidden font-mono text-sm">{ JSON.stringify(data, undefined, 4) }</pre>
|
|
501
|
+
</div>
|
|
502
|
+
}
|
|
503
|
+
${varName}.getDataFragment = () => ['${contentType.key}Data', ${contentType.key}DataFragmentDoc]
|
|
504
|
+
|
|
505
|
+
export default ${varName}`;
|
|
506
|
+
fs.writeFileSync(componentFile, component);
|
|
507
|
+
}
|
|
508
|
+
function ucFirst(current) {
|
|
509
|
+
return current[0]?.toUpperCase() + current.substring(1);
|
|
510
|
+
}
|
|
511
|
+
function createGraphFragments(contentType, typePath, basePath, force, cfg, contentTypes) {
|
|
512
|
+
const baseType = contentType.baseType ?? 'default';
|
|
513
|
+
const baseQueryFile = path.join(typePath, `${contentType.key}.${baseType}.graphql`);
|
|
514
|
+
if (fs.existsSync(baseQueryFile)) {
|
|
515
|
+
if (force) {
|
|
516
|
+
if (cfg.debug)
|
|
517
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Overwriting ${contentType.displayName} (${contentType.key}) base fragment\n`));
|
|
518
|
+
}
|
|
519
|
+
else {
|
|
520
|
+
if (cfg.debug)
|
|
521
|
+
process.stdout.write(chalk.gray(`${figures.arrowRight} Skipping ${contentType.displayName} (${contentType.key}) base fragment - file already exists\n`));
|
|
522
|
+
return undefined;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
const { fragment, propertyTypes } = createInitialFragment(contentType);
|
|
526
|
+
fs.writeFileSync(baseQueryFile, fragment);
|
|
527
|
+
let dependencies = Array.isArray(propertyTypes) ? [...propertyTypes] : [];
|
|
528
|
+
while (Array.isArray(dependencies) && dependencies.length > 0) {
|
|
529
|
+
let newDependencies = [];
|
|
530
|
+
dependencies.forEach(dep => {
|
|
531
|
+
const propContentType = contentTypes.filter(x => x.key == dep[0])[0];
|
|
532
|
+
if (!propContentType) {
|
|
533
|
+
console.warn(`🟠 The content type ${dep[0]} has been referenced, but is not found in the Optimizely CMS instance`);
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
const propertyFragmentFile = path.join(basePath, propContentType.baseType ?? 'default', propContentType.key, `${propContentType.key}.property.graphql`);
|
|
537
|
+
const propertyFragmentDir = path.dirname(propertyFragmentFile);
|
|
538
|
+
if (!fs.existsSync(propertyFragmentDir))
|
|
539
|
+
fs.mkdirSync(propertyFragmentDir, { recursive: true });
|
|
540
|
+
if (!fs.existsSync(propertyFragmentFile) || force) {
|
|
541
|
+
process.stdout.write(` - Writing property fragment: ${propContentType.displayName ?? propContentType.key}\n`);
|
|
542
|
+
const propContentTypeInfo = createInitialFragment(propContentType, true);
|
|
543
|
+
fs.writeFileSync(propertyFragmentFile, propContentTypeInfo.fragment);
|
|
544
|
+
if (Array.isArray(propContentTypeInfo.propertyTypes))
|
|
545
|
+
newDependencies.push(...propContentTypeInfo.propertyTypes);
|
|
546
|
+
}
|
|
547
|
+
});
|
|
548
|
+
dependencies = newDependencies;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
function createInitialFragment(contentType, forProperty = false) {
|
|
552
|
+
const propertyTypes = [];
|
|
553
|
+
const fragmentFields = [];
|
|
554
|
+
const typeProps = contentType.properties ?? {};
|
|
555
|
+
Object.getOwnPropertyNames(typeProps).forEach(propKey => {
|
|
556
|
+
// Exclude system properties, which are not present in Optimizely Graph
|
|
557
|
+
if (['experience', 'section'].includes(contentType.baseType) && ['AdditionalData', 'UnstructuredData', 'Layout'].includes(propKey))
|
|
558
|
+
return;
|
|
559
|
+
// Write the property
|
|
560
|
+
switch (typeProps[propKey].type) {
|
|
561
|
+
case "array":
|
|
562
|
+
switch (typeProps[propKey].items.type) {
|
|
563
|
+
case "content":
|
|
564
|
+
if (contentType.baseType == 'page' || contentType.baseType == 'experience')
|
|
565
|
+
fragmentFields.push(`${propKey} { ...BlockData }`);
|
|
566
|
+
else
|
|
567
|
+
fragmentFields.push(`${propKey} { ...IContentListItem }`);
|
|
568
|
+
break;
|
|
569
|
+
case "component":
|
|
570
|
+
const componentType = typeProps[propKey].items.contentType;
|
|
571
|
+
switch (componentType) {
|
|
572
|
+
case 'link':
|
|
573
|
+
fragmentFields.push(`${propKey} { ...LinkItemData }`);
|
|
574
|
+
break;
|
|
575
|
+
default:
|
|
576
|
+
fragmentFields.push(`${propKey} { ...${componentType}Data }`);
|
|
577
|
+
break;
|
|
578
|
+
}
|
|
579
|
+
break;
|
|
580
|
+
default:
|
|
581
|
+
fragmentFields.push(`${propKey} { __typename }`);
|
|
582
|
+
break;
|
|
583
|
+
}
|
|
584
|
+
break;
|
|
585
|
+
case "string":
|
|
586
|
+
if (typeProps[propKey].format == "html")
|
|
587
|
+
fragmentFields.push(`${propKey} { json, html }`);
|
|
588
|
+
else
|
|
589
|
+
fragmentFields.push(propKey);
|
|
590
|
+
break;
|
|
591
|
+
case "url":
|
|
592
|
+
fragmentFields.push(`${propKey} { ...LinkData }`);
|
|
593
|
+
break;
|
|
594
|
+
case "contentReference":
|
|
595
|
+
fragmentFields.push(`${propKey} { ...ReferenceData }`);
|
|
596
|
+
break;
|
|
597
|
+
case "component":
|
|
598
|
+
const componentType = typeProps[propKey].contentType;
|
|
599
|
+
fragmentFields.push(`${propKey} { ...${componentType}PropertyData }`);
|
|
600
|
+
propertyTypes.push([componentType, true]);
|
|
601
|
+
break;
|
|
602
|
+
default:
|
|
603
|
+
fragmentFields.push(propKey);
|
|
604
|
+
break;
|
|
605
|
+
}
|
|
606
|
+
});
|
|
607
|
+
if (fragmentFields.length == 0)
|
|
608
|
+
fragmentFields.push('_metadata { key }');
|
|
609
|
+
const tpl = `fragment ${contentType.key}${forProperty ? 'Property' : ''}Data on ${contentType.key}${forProperty ? 'Property' : ''} {
|
|
610
|
+
${fragmentFields.join("\n ")}
|
|
611
|
+
}`;
|
|
612
|
+
return {
|
|
613
|
+
fragment: tpl,
|
|
614
|
+
propertyTypes: propertyTypes.length == 0 ? null : propertyTypes
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
const commands = [
|
|
619
|
+
StylesPushCommand,
|
|
620
|
+
StylesListCommand,
|
|
621
|
+
StylesPullCommand,
|
|
622
|
+
TypesPullCommand,
|
|
623
|
+
NextJsCreateCommand
|
|
624
|
+
];
|
|
625
|
+
|
|
626
|
+
var version = "2.0.0-pre4";
|
|
627
|
+
var name = "opti-cms";
|
|
628
|
+
var APP = {
|
|
629
|
+
version: version,
|
|
630
|
+
name: name
|
|
631
|
+
};
|
|
632
|
+
|
|
633
|
+
// Create the application
|
|
634
|
+
prepare();
|
|
635
|
+
const app = createOptiCmsApp(APP.name, APP.version);
|
|
636
|
+
app.command(commands);
|
|
637
|
+
// Run the application
|
|
638
|
+
app.parse(process.argv.slice(2));
|
|
639
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/src/env.ts","../src/src/app.ts","../src/tools/src/tools/parseArgs.ts","../src/commands/src/commands/styles_push.ts","../src/commands/src/commands/styles_list.ts","../src/commands/src/commands/styles_pull.ts","../src/commands/src/commands/types_pull.ts","../src/commands/src/commands/nextjs_create.ts","../src/commands/src/commands/index.ts","../src/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":["glob"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@remkoj/optimizely-cms-cli",
|
|
3
|
+
"description": "Optimizely CMS CLI Tools",
|
|
4
|
+
"packageManager": "yarn@4.2.2",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"version": "2.0.0-pre4",
|
|
7
|
+
"bin": {
|
|
8
|
+
"opti-cms": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"./dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"update-cfg": "node ./script/update-cfg.js",
|
|
15
|
+
"prepare": "node ./script/update-cfg.js && rollup -c",
|
|
16
|
+
"watch": "rollup -c -w",
|
|
17
|
+
"compile": "tsc"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@remkoj/optimizely-cms-api": "2.0.0-pre4",
|
|
21
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
22
|
+
"@rollup/plugin-typescript": "^11.1.6",
|
|
23
|
+
"@types/node": "^20.12.12",
|
|
24
|
+
"@types/yargs": "^17.0.32",
|
|
25
|
+
"rollup": "^4.18.0",
|
|
26
|
+
"tslib": "^2.6.2",
|
|
27
|
+
"typescript": "^5.4.5"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"@remkoj/optimizely-cms-api": "2.0.0-pre4"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"chalk": "^5.3.0",
|
|
34
|
+
"cli-table3": "^0.6.5",
|
|
35
|
+
"dotenv": "^16.4.5",
|
|
36
|
+
"dotenv-expand": "^11.0.6",
|
|
37
|
+
"figures": "^6.1.0",
|
|
38
|
+
"glob": "^10.4.1",
|
|
39
|
+
"yargs": "^17.7.2"
|
|
40
|
+
},
|
|
41
|
+
"stableVersion": "2.0.0-pre4"
|
|
42
|
+
}
|