@localess/cli 3.0.1-dev.20260425202439 → 3.0.1-dev.20260426083044
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/dist/index.mjs +30 -26
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -315,7 +315,7 @@ var D = new e("login").description("Login to Localess CLI").option("-o, --origin
|
|
|
315
315
|
return e.ADD_MISSING = "add-missing", e.UPDATE_EXISTING = "update-existing", e.DELETE_MISSING = "delete-missing", e;
|
|
316
316
|
}({}), M = /* @__PURE__ */ function(e) {
|
|
317
317
|
return e.FLAT = "flat", e.NESTED = "nested", e;
|
|
318
|
-
}({}), N = "// Generated by Localess CLI - do not edit manually\n\nexport interface ContentAsset {\n kind: 'ASSET';\n uri: string;\n}\n\nexport interface ContentLink {\n kind: 'LINK';\n target: '_blank' | '_self';\n type: 'url' | 'content';\n uri: string;\n}\n\nexport interface ContentReference {\n kind: 'REFERENCE';\n uri: string;\n}\n\nexport interface ContentRichText {\n type?: string;\n content?: ContentRichText[];\n}\n";
|
|
318
|
+
}({}), N = "/**\n * Generated by Localess CLI\n * Do not edit manually.\n */\n\n // Generated by Localess CLI - do not edit manually\n\n/**\n * Content Asset define reference to a Asset.\n */\nexport interface ContentAsset {\n /** Define the type of Asset */\n kind: 'ASSET';\n /** Unique identifier for the asset. */\n uri: string;\n}\n\n/**\n * Content Link define reference to a Link.\n */\nexport interface ContentLink {\n /** Define the type of Link */\n kind: 'LINK';\n /** Define the target of the link. _blank for new tab and _self for same tab. */\n target: '_blank' | '_self';\n /** Define the type of Link. URL for external links and Content for internal links. */\n type: 'url' | 'content';\n /** If type is content, then it will be Content ID. Otherwise it will be URL. */\n uri: string;\n}\n\n/**\n * Content Reference define reference to a Content.\n */\nexport interface ContentReference {\n /** Define the type of Reference */\n kind: 'REFERENCE';\n /** Unique identifier for the Content Document. */\n uri: string;\n}\n\n/**\n * Content RichText define content as JSON Object.\n */\nexport interface ContentRichText {\n /** Define the type of Content Node */\n type?: string;\n /** List of Content Nodes */\n content?: ContentRichText[];\n}\n";
|
|
319
319
|
function P(e) {
|
|
320
320
|
return e.replace(/[-_\s]+([a-zA-Z0-9])/g, (e, t) => t.toUpperCase()).replace(/^[a-z]/, (e) => e.toUpperCase());
|
|
321
321
|
}
|
|
@@ -351,36 +351,41 @@ function F(e) {
|
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
353
|
}
|
|
354
|
-
function I(e) {
|
|
354
|
+
function I(e, t = "") {
|
|
355
|
+
return `${t}/**\n${t} * ${e}\n${t} */`;
|
|
356
|
+
}
|
|
357
|
+
function L(e) {
|
|
355
358
|
let t = [N], n = [];
|
|
356
359
|
for (let [r, i] of Object.entries(e)) {
|
|
357
|
-
let e = P(r);
|
|
360
|
+
let e = P(r), a = i.description ? `${I(i.description)}\n` : "";
|
|
358
361
|
if (i.type === k.ENUM) {
|
|
359
362
|
let n = i.values ?? [];
|
|
360
|
-
if (n.length === 0) t.push(
|
|
363
|
+
if (n.length === 0) t.push(`${a}export type ${e} = string;\n`);
|
|
361
364
|
else {
|
|
362
365
|
let r = n.map((e) => `'${e.value}'`).join(" | ");
|
|
363
|
-
t.push(
|
|
366
|
+
t.push(`${a}export type ${e} = ${r};\n`);
|
|
364
367
|
}
|
|
365
368
|
} else {
|
|
366
|
-
let
|
|
369
|
+
let o = i;
|
|
367
370
|
i.type === k.ROOT && n.push(e);
|
|
368
|
-
let
|
|
371
|
+
let s = [
|
|
372
|
+
" /** Unique identifier of a component in a content. */",
|
|
369
373
|
" _id: string;",
|
|
374
|
+
" /** Unique identifier for the Schema object. */",
|
|
370
375
|
` _schema: '${r}';`,
|
|
371
|
-
...(
|
|
372
|
-
let t = F(e), n = e.required ? "" : "?";
|
|
373
|
-
return ` ${e.name}${n}: ${t}
|
|
376
|
+
...(o.fields ?? []).flatMap((e) => {
|
|
377
|
+
let t = F(e), n = e.required ? "" : "?", r = [];
|
|
378
|
+
return e.description && r.push(` /** ${e.description} */`), r.push(` ${e.name}${n}: ${t};`), r;
|
|
374
379
|
})
|
|
375
380
|
];
|
|
376
|
-
t.push(
|
|
381
|
+
t.push(`${a}export interface ${e} {\n${s.join("\n")}\n}\n`);
|
|
377
382
|
}
|
|
378
383
|
}
|
|
379
|
-
return n.length > 0 ? t.push(`export type ContentData = ${n.join(" | ")};\n`) : t.push("export type ContentData = unknown;\n"), t.join("\n");
|
|
384
|
+
return t.push("/**\n* ContentData defined Object to connect all possible root Schemas.\n*/"), n.length > 0 ? t.push(`export type ContentData = ${n.join(" | ")};\n`) : t.push("export type ContentData = unknown;\n"), t.join("\n");
|
|
380
385
|
}
|
|
381
386
|
//#endregion
|
|
382
387
|
//#region src/commands/types/generate/index.ts
|
|
383
|
-
var
|
|
388
|
+
var R = s(u.cwd(), b, "localess.ts"), z = new e("generate").description("Generate types for your schemas").option("-p, --path <path>", "Path to the file where to save the generated types. Default is .localess/localess.ts", R).action(async (e) => {
|
|
384
389
|
console.log("Types in with options:", e);
|
|
385
390
|
let t = await w();
|
|
386
391
|
if (!t.isLoggedIn) {
|
|
@@ -390,23 +395,22 @@ var L = s(u.cwd(), b, "localess.ts"), R = new e("generate").description("Generat
|
|
|
390
395
|
let n = y({
|
|
391
396
|
origin: t.origin,
|
|
392
397
|
spaceId: t.space,
|
|
393
|
-
token: t.token
|
|
394
|
-
debug: !0
|
|
398
|
+
token: t.token
|
|
395
399
|
});
|
|
396
400
|
console.log("Fetching schemas from Localess...");
|
|
397
401
|
let r = await n.getSchemas();
|
|
398
402
|
console.log("Generating types...");
|
|
399
|
-
let i =
|
|
403
|
+
let i = L(r);
|
|
400
404
|
await x(e.path, i), console.log(`Types written to ${e.path}`);
|
|
401
|
-
}),
|
|
405
|
+
}), B = new e("types").description("Generate types for your schemas").addCommand(z), V = d.record(d.string(), d.string()), H = d.enum(["add-missing", "update-existing"]);
|
|
402
406
|
d.object({
|
|
403
|
-
type:
|
|
404
|
-
values:
|
|
407
|
+
type: H,
|
|
408
|
+
values: V
|
|
405
409
|
});
|
|
406
410
|
//#endregion
|
|
407
411
|
//#region src/commands/translations/push/index.ts
|
|
408
|
-
var
|
|
409
|
-
if (console.log("Pushing translations with arguments:", e), console.log("Pushing translations with options:", t), !
|
|
412
|
+
var U = new e("push").argument("<locale>", "Locale to push").description("Push locale translations to Localess").requiredOption("-p, --path <path>", "Path to the translations file to push").option("-f, --format <format>", `File format. Possible values are : ${Object.values(M)}`, M.FLAT).option("-t, --type <type>", `Push type. Possible values are : ${Object.values(j)}`, j.ADD_MISSING).option("--dry-run", "Preview changes without applying them to Localess").action(async (e, t) => {
|
|
413
|
+
if (console.log("Pushing translations with arguments:", e), console.log("Pushing translations with options:", t), !H.safeParse(t.type).success) {
|
|
410
414
|
console.error("Invalid type provided. Possible values are :", Object.values(j));
|
|
411
415
|
return;
|
|
412
416
|
}
|
|
@@ -421,7 +425,7 @@ var H = new e("push").argument("<locale>", "Locale to push").description("Push l
|
|
|
421
425
|
token: n.token
|
|
422
426
|
});
|
|
423
427
|
t.dryRun && console.warn("Dry run mode enabled: No changes will be made."), t.format === M.NESTED && console.error("Nested format is not implemented yet. Please use flat format for now."), console.log("Reading translations file from:", t.path);
|
|
424
|
-
let i = await S(t.path), a = JSON.parse(i), o =
|
|
428
|
+
let i = await S(t.path), a = JSON.parse(i), o = V.safeParse(a);
|
|
425
429
|
if (!o.success) {
|
|
426
430
|
console.error("Invalid translations file format:", o.error);
|
|
427
431
|
return;
|
|
@@ -429,7 +433,7 @@ var H = new e("push").argument("<locale>", "Locale to push").description("Push l
|
|
|
429
433
|
console.log("Pushing translations to Localess with locale:", e, "and type:", t.type);
|
|
430
434
|
let s = await r.updateTranslations(e, t.type, a, t.dryRun);
|
|
431
435
|
s ? (s.dryRun && console.log("Dry run results:"), console.log("Successfully pushed translations to Localess"), console.log("Summary:", s.message), s.ids && console.log("Updated translation IDs:", s.ids)) : console.log("Something went wrong while pushing translations to Localess");
|
|
432
|
-
}),
|
|
436
|
+
}), W = new e("pull").argument("<locale>", "Locale to pull").description("Pull locale translations from Localess").requiredOption("-p, --path <path>", "Path where the translations file will be saved").option("-f, --format <format>", `File format. Possible values are : ${Object.values(M)}`, M.FLAT).action(async (e, t) => {
|
|
433
437
|
if (console.log("Pulling translations with arguments:", e), console.log("Pulling translations with options:", t), !Object.values(M).includes(t.format)) {
|
|
434
438
|
console.error("Invalid format provided. Possible values are :", Object.values(M));
|
|
435
439
|
return;
|
|
@@ -452,12 +456,12 @@ var H = new e("push").argument("<locale>", "Locale to push").description("Push l
|
|
|
452
456
|
await x(t.path, JSON.stringify(e, null, 2));
|
|
453
457
|
}
|
|
454
458
|
console.log("Successfully saved translations from Localess");
|
|
455
|
-
}),
|
|
456
|
-
|
|
459
|
+
}), G = new e("translations").description("Manage translations").addCommand(U).addCommand(W), K = new e();
|
|
460
|
+
K.name("Localess CLI").description("CLI tool for Localess platform management").version("0.0.6"), K.addCommand(D), K.addCommand(O), K.addCommand(G), K.addCommand(B);
|
|
457
461
|
//#endregion
|
|
458
462
|
//#region src/index.ts
|
|
459
463
|
try {
|
|
460
|
-
|
|
464
|
+
K.parse(process.argv);
|
|
461
465
|
} catch (e) {
|
|
462
466
|
console.error("Error executing command:", e instanceof Error ? e.message : e), process.exit(1);
|
|
463
467
|
}
|