@gradial/aci 0.1.0

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 (64) hide show
  1. package/README.md +63 -0
  2. package/dist/astro/index.d.ts +17 -0
  3. package/dist/astro/index.js +21 -0
  4. package/dist/compiler/index.d.ts +2 -0
  5. package/dist/compiler/index.js +2 -0
  6. package/dist/compiler/validate-subset.d.ts +2 -0
  7. package/dist/compiler/validate-subset.js +73 -0
  8. package/dist/compiler/zod-to-jsonschema.d.ts +2 -0
  9. package/dist/compiler/zod-to-jsonschema.js +13 -0
  10. package/dist/content/contract.d.ts +83 -0
  11. package/dist/content/contract.js +104 -0
  12. package/dist/content/index.d.ts +6 -0
  13. package/dist/content/index.js +6 -0
  14. package/dist/content/provider.d.ts +15 -0
  15. package/dist/content/provider.js +36 -0
  16. package/dist/content/routes.d.ts +16 -0
  17. package/dist/content/routes.js +69 -0
  18. package/dist/content/tailwind-validator.d.ts +6 -0
  19. package/dist/content/tailwind-validator.js +31 -0
  20. package/dist/content/types.d.ts +105 -0
  21. package/dist/content/types.js +1 -0
  22. package/dist/content/validation.d.ts +108 -0
  23. package/dist/content/validation.js +184 -0
  24. package/dist/define-component.d.ts +2 -0
  25. package/dist/define-component.js +13 -0
  26. package/dist/define-layout.d.ts +3 -0
  27. package/dist/define-layout.js +6 -0
  28. package/dist/dev/browser.d.ts +7 -0
  29. package/dist/dev/browser.js +2 -0
  30. package/dist/dev/index.d.ts +30 -0
  31. package/dist/dev/index.js +70 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.js +3 -0
  34. package/dist/next/dev-refresh.d.ts +5 -0
  35. package/dist/next/dev-refresh.js +44 -0
  36. package/dist/next/middleware.d.ts +8 -0
  37. package/dist/next/middleware.js +132 -0
  38. package/dist/next/preview.d.ts +7 -0
  39. package/dist/next/preview.js +37 -0
  40. package/dist/next/server.d.ts +58 -0
  41. package/dist/next/server.js +269 -0
  42. package/dist/providers/file.d.ts +18 -0
  43. package/dist/providers/file.js +91 -0
  44. package/dist/sveltekit/index.d.ts +2 -0
  45. package/dist/sveltekit/index.js +18 -0
  46. package/dist/testing/index.d.ts +20 -0
  47. package/dist/testing/index.js +86 -0
  48. package/dist/types/component.d.ts +26 -0
  49. package/dist/types/component.js +1 -0
  50. package/dist/types/config.d.ts +28 -0
  51. package/dist/types/config.js +1 -0
  52. package/dist/types/index.d.ts +6 -0
  53. package/dist/types/index.js +6 -0
  54. package/dist/types/layout.d.ts +12 -0
  55. package/dist/types/layout.js +1 -0
  56. package/dist/types/page.d.ts +45 -0
  57. package/dist/types/page.js +1 -0
  58. package/dist/types/render-mode.d.ts +3 -0
  59. package/dist/types/render-mode.js +1 -0
  60. package/dist/types/renderer.d.ts +71 -0
  61. package/dist/types/renderer.js +1 -0
  62. package/package.json +112 -0
  63. package/src/cli/compile-registry.mjs +199 -0
  64. package/src/cli/verify-renderer.mjs +73 -0
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { pathToFileURL } from 'node:url';
5
+
6
+ const args = parseArgs(process.argv.slice(2));
7
+
8
+ try {
9
+ if (!args.renderer) throw new Error('missing --renderer');
10
+ await verifyRenderer(path.resolve(args.renderer));
11
+ console.log(JSON.stringify({ success: true, errors: [] }, null, 2));
12
+ } catch (error) {
13
+ console.error(JSON.stringify({ success: false, errors: [String(error?.message ?? error)] }, null, 2));
14
+ process.exitCode = 1;
15
+ }
16
+
17
+ async function verifyRenderer(rendererPath) {
18
+ try {
19
+ const mod = await import(pathToFileURL(rendererPath).href);
20
+ const renderer = mod.default ?? mod.renderer;
21
+ if (!renderer || typeof renderer.renderPage !== 'function') {
22
+ throw new Error('renderer must export a GradialRenderer with renderPage');
23
+ }
24
+ return;
25
+ } catch (error) {
26
+ if (!shouldUseStaticFallback(error)) {
27
+ throw error;
28
+ }
29
+ }
30
+
31
+ const source = fs.readFileSync(rendererPath, 'utf8');
32
+ if (!staticallyExportsRenderPage(source)) {
33
+ throw new Error('renderer must export a GradialRenderer with renderPage');
34
+ }
35
+ }
36
+
37
+ function shouldUseStaticFallback(error) {
38
+ const message = String(error?.message ?? error);
39
+ return message.includes('Unknown file extension ".astro"');
40
+ }
41
+
42
+ function staticallyExportsRenderPage(source) {
43
+ if (!/\brenderPage\s*[:=]\s*(async\s*)?(\([^)]*\)|[A-Za-z_$][\w$]*)?\s*=>|\brenderPage\s*[:=]\s*(async\s*)?function\b|\basync\s+renderPage\s*\(|\brenderPage\s*\(/m.test(source)) {
44
+ return false;
45
+ }
46
+ if (/export\s+default\s+{[\s\S]*\brenderPage\b[\s\S]*}/m.test(source)) {
47
+ return true;
48
+ }
49
+ const defaultName = source.match(/export\s+default\s+([A-Za-z_$][\w$]*)\s*;?/m)?.[1];
50
+ const namedExport = source.match(/export\s*{\s*([A-Za-z_$][\w$]*)\s+as\s+renderer\s*}/m)?.[1] ?? source.match(/export\s*{\s*([A-Za-z_$][\w$]*)\s*}/m)?.[1];
51
+ const rendererName = defaultName ?? namedExport;
52
+ if (!rendererName) {
53
+ return false;
54
+ }
55
+ const declaration = new RegExp(`(?:const|let|var)\\s+${rendererName}\\b[\\s\\S]*?\\{[\\s\\S]*?\\brenderPage\\b`, 'm');
56
+ return declaration.test(source);
57
+ }
58
+
59
+ function parseArgs(argv) {
60
+ const out = {};
61
+ for (let i = 0; i < argv.length; i++) {
62
+ const arg = argv[i];
63
+ if (!arg.startsWith('--')) continue;
64
+ const body = arg.slice(2);
65
+ const equals = body.indexOf('=');
66
+ if (equals >= 0) {
67
+ out[body.slice(0, equals)] = body.slice(equals + 1);
68
+ continue;
69
+ }
70
+ out[body] = argv[++i];
71
+ }
72
+ return out;
73
+ }