@cms0/cms0 0.0.1

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 (70) hide show
  1. package/bin/cms0.js +30 -0
  2. package/dist/cjs/cli.cjs +7 -0
  3. package/dist/cjs/config.cjs +6 -0
  4. package/dist/cjs/generated/schema-descriptor.cjs +523 -0
  5. package/dist/cjs/index.cjs +48 -0
  6. package/dist/cjs/libs/cli/build.cjs +14 -0
  7. package/dist/cjs/libs/cli/cli.cjs +64 -0
  8. package/dist/cjs/libs/cli/config-loader.cjs +211 -0
  9. package/dist/cjs/libs/cli/descriptor-builder-alt.cjs +221 -0
  10. package/dist/cjs/libs/cli/descriptor-builder.cjs +232 -0
  11. package/dist/cjs/libs/cli/descriptor-writer.cjs +23 -0
  12. package/dist/cjs/libs/cli/index.cjs +10 -0
  13. package/dist/cjs/libs/cli/paths.cjs +28 -0
  14. package/dist/cjs/libs/cli/publisher.cjs +103 -0
  15. package/dist/cjs/libs/cli/types.cjs +3 -0
  16. package/dist/cjs/libs/cli/watcher.cjs +34 -0
  17. package/dist/cjs/schema-descriptors.cjs +5 -0
  18. package/dist/cjs/utils/index.cjs +2 -0
  19. package/dist/esm/cli.js +5 -0
  20. package/dist/esm/config.js +3 -0
  21. package/dist/esm/generated/schema-descriptor.js +520 -0
  22. package/dist/esm/index.js +45 -0
  23. package/dist/esm/libs/cli/build.js +12 -0
  24. package/dist/esm/libs/cli/cli.js +62 -0
  25. package/dist/esm/libs/cli/config-loader.js +168 -0
  26. package/dist/esm/libs/cli/descriptor-builder-alt.js +216 -0
  27. package/dist/esm/libs/cli/descriptor-builder.js +227 -0
  28. package/dist/esm/libs/cli/descriptor-writer.js +18 -0
  29. package/dist/esm/libs/cli/index.js +4 -0
  30. package/dist/esm/libs/cli/paths.js +21 -0
  31. package/dist/esm/libs/cli/publisher.js +101 -0
  32. package/dist/esm/libs/cli/types.js +2 -0
  33. package/dist/esm/libs/cli/watcher.js +29 -0
  34. package/dist/esm/schema-descriptors.js +1 -0
  35. package/dist/esm/utils/index.js +1 -0
  36. package/dist/types/cli.d.ts +3 -0
  37. package/dist/types/cli.d.ts.map +1 -0
  38. package/dist/types/config.d.ts +22 -0
  39. package/dist/types/config.d.ts.map +1 -0
  40. package/dist/types/generated/schema-descriptor.d.ts +520 -0
  41. package/dist/types/generated/schema-descriptor.d.ts.map +1 -0
  42. package/dist/types/index.d.ts +14 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/libs/cli/build.d.ts +5 -0
  45. package/dist/types/libs/cli/build.d.ts.map +1 -0
  46. package/dist/types/libs/cli/cli.d.ts +3 -0
  47. package/dist/types/libs/cli/cli.d.ts.map +1 -0
  48. package/dist/types/libs/cli/config-loader.d.ts +12 -0
  49. package/dist/types/libs/cli/config-loader.d.ts.map +1 -0
  50. package/dist/types/libs/cli/descriptor-builder-alt.d.ts +5 -0
  51. package/dist/types/libs/cli/descriptor-builder-alt.d.ts.map +1 -0
  52. package/dist/types/libs/cli/descriptor-builder.d.ts +5 -0
  53. package/dist/types/libs/cli/descriptor-builder.d.ts.map +1 -0
  54. package/dist/types/libs/cli/descriptor-writer.d.ts +4 -0
  55. package/dist/types/libs/cli/descriptor-writer.d.ts.map +1 -0
  56. package/dist/types/libs/cli/index.d.ts +4 -0
  57. package/dist/types/libs/cli/index.d.ts.map +1 -0
  58. package/dist/types/libs/cli/paths.d.ts +4 -0
  59. package/dist/types/libs/cli/paths.d.ts.map +1 -0
  60. package/dist/types/libs/cli/publisher.d.ts +5 -0
  61. package/dist/types/libs/cli/publisher.d.ts.map +1 -0
  62. package/dist/types/libs/cli/types.d.ts +8 -0
  63. package/dist/types/libs/cli/types.d.ts.map +1 -0
  64. package/dist/types/libs/cli/watcher.d.ts +5 -0
  65. package/dist/types/libs/cli/watcher.d.ts.map +1 -0
  66. package/dist/types/schema-descriptors.d.ts +2 -0
  67. package/dist/types/schema-descriptors.d.ts.map +1 -0
  68. package/dist/types/utils/index.d.ts +2 -0
  69. package/dist/types/utils/index.d.ts.map +1 -0
  70. package/package.json +74 -0
package/bin/cms0.js ADDED
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * CLI entry for cms0.
5
+ *
6
+ * Uses CJS build when available; falls back to TS source during workspace dev.
7
+ */
8
+
9
+ import { createRequire } from "module";
10
+ import fs from "fs";
11
+ import path from "path";
12
+ import { fileURLToPath } from "url";
13
+
14
+ const require = createRequire(import.meta.url);
15
+ const pkgRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
16
+
17
+ const srcCli = path.resolve(pkgRoot, "src/cli.ts");
18
+ const distCli = path.resolve(pkgRoot, "dist/cjs/cli.cjs");
19
+
20
+ if (fs.existsSync(srcCli)) {
21
+ // In workspace/development, prefer live TS sources to avoid stale dist.
22
+ require("tsx/cjs");
23
+ require(srcCli);
24
+ } else if (fs.existsSync(distCli)) {
25
+ // Fallback to compiled CJS build when sources are not available.
26
+ require(distCli);
27
+ } else {
28
+ console.error("cms0: no CLI entry found (missing src and dist builds)");
29
+ process.exit(1);
30
+ }
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ // Entry point for the cms0 CLI binary.
5
+ // Use local sources directly to avoid pulling stale dist via package exports.
6
+ const index_js_1 = require("./libs/cli/index.cjs");
7
+ (0, index_js_1.runFromCli)();
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineConfig = defineConfig;
4
+ function defineConfig(config) {
5
+ return config;
6
+ }
@@ -0,0 +1,523 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.schemaDescriptor = void 0;
4
+ // Auto-generated schema descriptor
5
+ exports.schemaDescriptor = {
6
+ "models": {
7
+ "BlogPost": {
8
+ "kind": "model",
9
+ "properties": {
10
+ "title": {
11
+ "kind": "primitive",
12
+ "type": "string",
13
+ "optional": false,
14
+ "nullable": false
15
+ },
16
+ "description": {
17
+ "kind": "primitive",
18
+ "type": "string",
19
+ "optional": false,
20
+ "nullable": false
21
+ },
22
+ "content": {
23
+ "kind": "primitive",
24
+ "type": "string",
25
+ "optional": false,
26
+ "nullable": false
27
+ }
28
+ }
29
+ },
30
+ "Author": {
31
+ "kind": "model",
32
+ "properties": {
33
+ "profile": {
34
+ "kind": "primitive",
35
+ "type": "string",
36
+ "optional": false,
37
+ "nullable": false
38
+ },
39
+ "name": {
40
+ "kind": "primitive",
41
+ "type": "string",
42
+ "optional": false,
43
+ "nullable": false
44
+ }
45
+ }
46
+ },
47
+ "Testimonial": {
48
+ "kind": "model",
49
+ "properties": {
50
+ "content": {
51
+ "kind": "primitive",
52
+ "type": "string",
53
+ "optional": false,
54
+ "nullable": false
55
+ },
56
+ "author": {
57
+ "kind": "modelRef",
58
+ "model": "Author",
59
+ "optional": false,
60
+ "nullable": false
61
+ },
62
+ "companies": {
63
+ "type": "array",
64
+ "items": {
65
+ "type": "object",
66
+ "properties": {
67
+ "name": {
68
+ "kind": "primitive",
69
+ "type": "string",
70
+ "optional": false,
71
+ "nullable": false
72
+ },
73
+ "value": {
74
+ "kind": "primitive",
75
+ "type": "number",
76
+ "optional": false,
77
+ "nullable": false
78
+ }
79
+ },
80
+ "optional": false,
81
+ "nullable": false
82
+ },
83
+ "optional": false,
84
+ "nullable": false
85
+ }
86
+ }
87
+ }
88
+ },
89
+ "roots": {
90
+ "blogsPage": {
91
+ "type": "object",
92
+ "properties": {
93
+ "headline": {
94
+ "kind": "primitive",
95
+ "type": "string",
96
+ "optional": false,
97
+ "nullable": false
98
+ },
99
+ "blogs": {
100
+ "type": "array",
101
+ "items": {
102
+ "kind": "modelRef",
103
+ "model": "BlogPost",
104
+ "optional": false,
105
+ "nullable": false
106
+ },
107
+ "optional": false,
108
+ "nullable": false
109
+ },
110
+ "links": {
111
+ "type": "array",
112
+ "items": {
113
+ "type": "object",
114
+ "properties": {
115
+ "url": {
116
+ "kind": "primitive",
117
+ "type": "string",
118
+ "optional": false,
119
+ "nullable": false
120
+ },
121
+ "text": {
122
+ "kind": "primitive",
123
+ "type": "string",
124
+ "optional": false,
125
+ "nullable": false
126
+ },
127
+ "images": {
128
+ "type": "array",
129
+ "items": {
130
+ "type": "object",
131
+ "properties": {
132
+ "url": {
133
+ "kind": "primitive",
134
+ "type": "string",
135
+ "optional": false,
136
+ "nullable": false
137
+ },
138
+ "alt": {
139
+ "kind": "primitive",
140
+ "type": "string",
141
+ "optional": false,
142
+ "nullable": false
143
+ }
144
+ },
145
+ "optional": false,
146
+ "nullable": false
147
+ },
148
+ "optional": false,
149
+ "nullable": false
150
+ }
151
+ },
152
+ "optional": false,
153
+ "nullable": false
154
+ },
155
+ "optional": false,
156
+ "nullable": false
157
+ }
158
+ },
159
+ "optional": false,
160
+ "nullable": false
161
+ },
162
+ "homePage": {
163
+ "type": "object",
164
+ "properties": {
165
+ "headline": {
166
+ "kind": "primitive",
167
+ "type": "string",
168
+ "optional": false,
169
+ "nullable": false
170
+ },
171
+ "numberOfProjects": {
172
+ "type": "array",
173
+ "items": {
174
+ "kind": "primitive",
175
+ "type": "number",
176
+ "optional": false,
177
+ "nullable": false
178
+ },
179
+ "optional": false,
180
+ "nullable": false
181
+ },
182
+ "numberOfView": {
183
+ "kind": "primitive",
184
+ "type": "number",
185
+ "optional": false,
186
+ "nullable": false
187
+ },
188
+ "section1": {
189
+ "type": "object",
190
+ "properties": {
191
+ "title": {
192
+ "kind": "primitive",
193
+ "type": "string",
194
+ "optional": false,
195
+ "nullable": false
196
+ },
197
+ "subtitle": {
198
+ "kind": "primitive",
199
+ "type": "string",
200
+ "optional": false,
201
+ "nullable": false
202
+ },
203
+ "mentor": {
204
+ "kind": "modelRef",
205
+ "model": "Author",
206
+ "optional": false,
207
+ "nullable": false
208
+ },
209
+ "features": {
210
+ "type": "array",
211
+ "items": {
212
+ "type": "object",
213
+ "properties": {
214
+ "headline": {
215
+ "kind": "primitive",
216
+ "type": "string",
217
+ "optional": false,
218
+ "nullable": false
219
+ },
220
+ "images": {
221
+ "type": "array",
222
+ "items": {
223
+ "kind": "primitive",
224
+ "type": "string",
225
+ "optional": false,
226
+ "nullable": false
227
+ },
228
+ "optional": false,
229
+ "nullable": false
230
+ }
231
+ },
232
+ "optional": false,
233
+ "nullable": false
234
+ },
235
+ "optional": false,
236
+ "nullable": false
237
+ },
238
+ "link": {
239
+ "type": "object",
240
+ "properties": {
241
+ "text": {
242
+ "kind": "primitive",
243
+ "type": "string",
244
+ "optional": false,
245
+ "nullable": false
246
+ },
247
+ "url": {
248
+ "kind": "primitive",
249
+ "type": "string",
250
+ "optional": false,
251
+ "nullable": false
252
+ },
253
+ "image": {
254
+ "type": "object",
255
+ "properties": {
256
+ "type": {
257
+ "kind": "primitive",
258
+ "type": "string",
259
+ "optional": false,
260
+ "nullable": false
261
+ },
262
+ "name": {
263
+ "kind": "primitive",
264
+ "type": "string",
265
+ "optional": false,
266
+ "nullable": false
267
+ }
268
+ },
269
+ "optional": false,
270
+ "nullable": false
271
+ }
272
+ },
273
+ "optional": false,
274
+ "nullable": false
275
+ }
276
+ },
277
+ "optional": false,
278
+ "nullable": false
279
+ },
280
+ "mentor": {
281
+ "kind": "modelRef",
282
+ "model": "Author",
283
+ "optional": false,
284
+ "nullable": false
285
+ },
286
+ "isActive": {
287
+ "kind": "primitive",
288
+ "type": "boolean",
289
+ "optional": false,
290
+ "nullable": false
291
+ },
292
+ "age": {
293
+ "kind": "primitive",
294
+ "type": "number",
295
+ "optional": false,
296
+ "nullable": false
297
+ },
298
+ "testimonials": {
299
+ "type": "array",
300
+ "items": {
301
+ "kind": "modelRef",
302
+ "model": "Testimonial",
303
+ "optional": false,
304
+ "nullable": false
305
+ },
306
+ "optional": false,
307
+ "nullable": false
308
+ },
309
+ "links": {
310
+ "type": "array",
311
+ "items": {
312
+ "type": "object",
313
+ "properties": {
314
+ "text": {
315
+ "kind": "primitive",
316
+ "type": "string",
317
+ "optional": false,
318
+ "nullable": false
319
+ },
320
+ "url": {
321
+ "kind": "primitive",
322
+ "type": "string",
323
+ "optional": false,
324
+ "nullable": false
325
+ },
326
+ "author": {
327
+ "kind": "modelRef",
328
+ "model": "Author",
329
+ "optional": false,
330
+ "nullable": false
331
+ },
332
+ "foods": {
333
+ "type": "array",
334
+ "items": {
335
+ "type": "object",
336
+ "properties": {
337
+ "name": {
338
+ "kind": "primitive",
339
+ "type": "string",
340
+ "optional": false,
341
+ "nullable": false
342
+ },
343
+ "cost": {
344
+ "kind": "primitive",
345
+ "type": "number",
346
+ "optional": false,
347
+ "nullable": false
348
+ }
349
+ },
350
+ "optional": false,
351
+ "nullable": false
352
+ },
353
+ "optional": false,
354
+ "nullable": false
355
+ },
356
+ "section": {
357
+ "type": "object",
358
+ "properties": {
359
+ "name": {
360
+ "kind": "primitive",
361
+ "type": "string",
362
+ "optional": false,
363
+ "nullable": false
364
+ },
365
+ "description": {
366
+ "kind": "primitive",
367
+ "type": "string",
368
+ "optional": false,
369
+ "nullable": false
370
+ },
371
+ "drinks": {
372
+ "type": "array",
373
+ "items": {
374
+ "type": "object",
375
+ "properties": {
376
+ "name": {
377
+ "kind": "primitive",
378
+ "type": "string",
379
+ "optional": false,
380
+ "nullable": false
381
+ },
382
+ "filled": {
383
+ "kind": "primitive",
384
+ "type": "boolean",
385
+ "optional": false,
386
+ "nullable": false
387
+ }
388
+ },
389
+ "optional": false,
390
+ "nullable": false
391
+ },
392
+ "optional": false,
393
+ "nullable": false
394
+ }
395
+ },
396
+ "optional": false,
397
+ "nullable": false
398
+ }
399
+ },
400
+ "optional": false,
401
+ "nullable": false
402
+ },
403
+ "optional": false,
404
+ "nullable": false
405
+ }
406
+ },
407
+ "optional": false,
408
+ "nullable": false
409
+ },
410
+ "blogPosts": {
411
+ "type": "array",
412
+ "items": {
413
+ "kind": "modelRef",
414
+ "model": "BlogPost",
415
+ "optional": false,
416
+ "nullable": false
417
+ },
418
+ "optional": false,
419
+ "nullable": false
420
+ },
421
+ "links": {
422
+ "type": "array",
423
+ "items": {
424
+ "type": "object",
425
+ "properties": {
426
+ "text": {
427
+ "kind": "primitive",
428
+ "type": "string",
429
+ "optional": false,
430
+ "nullable": false
431
+ },
432
+ "url": {
433
+ "kind": "primitive",
434
+ "type": "string",
435
+ "optional": false,
436
+ "nullable": false
437
+ }
438
+ },
439
+ "optional": false,
440
+ "nullable": false
441
+ },
442
+ "optional": false,
443
+ "nullable": false
444
+ },
445
+ "images": {
446
+ "type": "array",
447
+ "items": {
448
+ "kind": "primitive",
449
+ "type": "string",
450
+ "optional": false,
451
+ "nullable": false
452
+ },
453
+ "optional": false,
454
+ "nullable": false
455
+ },
456
+ "aboutUsPage": {
457
+ "type": "object",
458
+ "properties": {
459
+ "headline": {
460
+ "kind": "primitive",
461
+ "type": "string",
462
+ "optional": false,
463
+ "nullable": false
464
+ },
465
+ "description": {
466
+ "kind": "primitive",
467
+ "type": "string",
468
+ "optional": false,
469
+ "nullable": false
470
+ },
471
+ "title": {
472
+ "kind": "primitive",
473
+ "type": "string",
474
+ "optional": false,
475
+ "nullable": false
476
+ },
477
+ "numberOfEmployees": {
478
+ "kind": "primitive",
479
+ "type": "number",
480
+ "optional": false,
481
+ "nullable": false
482
+ },
483
+ "blogs": {
484
+ "type": "array",
485
+ "items": {
486
+ "kind": "modelRef",
487
+ "model": "BlogPost",
488
+ "optional": false,
489
+ "nullable": false
490
+ },
491
+ "optional": false,
492
+ "nullable": false
493
+ },
494
+ "employees": {
495
+ "type": "array",
496
+ "items": {
497
+ "type": "object",
498
+ "properties": {
499
+ "name": {
500
+ "kind": "primitive",
501
+ "type": "string",
502
+ "optional": false,
503
+ "nullable": false
504
+ },
505
+ "salary": {
506
+ "kind": "primitive",
507
+ "type": "number",
508
+ "optional": false,
509
+ "nullable": false
510
+ }
511
+ },
512
+ "optional": false,
513
+ "nullable": false
514
+ },
515
+ "optional": false,
516
+ "nullable": false
517
+ }
518
+ },
519
+ "optional": false,
520
+ "nullable": false
521
+ }
522
+ }
523
+ };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cms0 = cms0;
4
+ const schema_descriptors_1 = require("@cms0/cms0/schema-descriptors");
5
+ const shared_1 = require("@cms0/shared");
6
+ /**
7
+ * Initializes the CMS SDK for a given schema.
8
+ * @param config configuration including API base URL or database URL.
9
+ * @returns an object with typed accessors matching the schema.
10
+ */
11
+ function cms0(config) {
12
+ const baseUrl = config.apiConfig?.baseUrl?.replace(/\/$/, "") ?? "";
13
+ const apiKey = config.apiConfig?.key;
14
+ console.log("apiKey: ", apiKey);
15
+ return new Proxy({}, {
16
+ get(target, prop) {
17
+ if (!(prop in schema_descriptors_1.schemaDescriptor.roots)) {
18
+ throw new Error(`Unknown schema key '${prop}'`);
19
+ }
20
+ return async () => {
21
+ const url = `${baseUrl}/${prop}`;
22
+ const res = await fetch(url, {
23
+ method: "GET",
24
+ headers: {
25
+ "Content-Type": "application/json",
26
+ ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),
27
+ },
28
+ });
29
+ if (!res.ok) {
30
+ throw new Error(`Request failed for '${prop}' with status ${res.status}: ${res.statusText}`);
31
+ }
32
+ const data = await res.json();
33
+ // Validate via Zod
34
+ const { zodSchemas } = (0, shared_1.buildZodSchemasFromDescriptor)(schema_descriptors_1.schemaDescriptor);
35
+ const schema = zodSchemas[prop];
36
+ if (!schema) {
37
+ // If no schema found, return the raw data
38
+ return data;
39
+ }
40
+ const result = schema.safeParse(data);
41
+ if (!result.success) {
42
+ throw new Error(`Invalid data received for '${prop}': ${JSON.stringify(result.error.format())}`);
43
+ }
44
+ return result.data;
45
+ };
46
+ },
47
+ });
48
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildOnce = buildOnce;
4
+ // Single-shot build that compiles the descriptor, writes it, and publishes it.
5
+ const descriptor_builder_alt_js_1 = require("./descriptor-builder-alt.cjs");
6
+ const paths_js_1 = require("./paths.cjs");
7
+ const publisher_js_1 = require("./publisher.cjs");
8
+ const descriptor_writer_js_1 = require("./descriptor-writer.cjs");
9
+ function buildOnce(resolved) {
10
+ const descriptor = (0, descriptor_builder_alt_js_1.buildDescriptorAlt)(resolved);
11
+ (0, descriptor_writer_js_1.writeDescriptorFile)(descriptor, paths_js_1.descriptorOutPath);
12
+ (0, publisher_js_1.publishDescriptor)(resolved, descriptor);
13
+ return descriptor;
14
+ }