@gradial/aci 0.1.20-preview.1 → 0.1.20-preview.2

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 (57) hide show
  1. package/README.md +10 -8
  2. package/bin/aci +0 -0
  3. package/dist/astro/index.d.ts +0 -2
  4. package/dist/astro/index.js +0 -4
  5. package/dist/content/cache.test.d.ts +1 -0
  6. package/dist/content/cache.test.js +86 -0
  7. package/dist/content/index.d.ts +0 -1
  8. package/dist/content/index.js +0 -1
  9. package/dist/content/provider.d.ts +0 -19
  10. package/dist/content/provider.js +0 -7
  11. package/dist/content/types.d.ts +1 -1
  12. package/dist/content/validation.js +1 -0
  13. package/dist/define-component.js +6 -0
  14. package/dist/define-layout.d.ts +0 -2
  15. package/dist/define-layout.js +0 -3
  16. package/dist/index.d.ts +0 -1
  17. package/dist/index.js +0 -1
  18. package/dist/next/asset-route.d.ts +0 -2
  19. package/dist/next/asset-route.js +2 -10
  20. package/dist/next/config.js +1 -1
  21. package/dist/next/middleware.d.ts +2 -6
  22. package/dist/next/middleware.js +2 -7
  23. package/dist/next/page.d.ts +15 -16
  24. package/dist/next/page.js +9 -27
  25. package/dist/next/preview-banner.d.ts +4 -0
  26. package/dist/next/preview-banner.js +51 -0
  27. package/dist/next/preview.d.ts +7 -0
  28. package/dist/next/preview.js +37 -0
  29. package/dist/next/server.d.ts +2 -3
  30. package/dist/next/server.js +2 -12
  31. package/dist/providers/file.d.ts +0 -2
  32. package/dist/providers/file.js +1 -61
  33. package/dist/providers/s3.d.ts +0 -1
  34. package/dist/providers/s3.js +1 -14
  35. package/dist/sveltekit/index.d.ts +0 -2
  36. package/dist/sveltekit/index.js +0 -4
  37. package/dist/testing/index.d.ts +0 -3
  38. package/dist/testing/index.js +2 -15
  39. package/dist/types/component.d.ts +9 -0
  40. package/dist/types/config.d.ts +1 -0
  41. package/dist/types/page.d.ts +2 -1
  42. package/dist/types/render-mode.d.ts +1 -0
  43. package/package.json +7 -18
  44. package/src/cli/compile-registry.mjs +18 -127
  45. package/src/cli/verify-renderer.mjs +73 -0
  46. package/src/types/component.ts +10 -0
  47. package/src/types/config.ts +1 -0
  48. package/src/types/page.ts +2 -1
  49. package/src/types/render-mode.ts +8 -0
  50. package/dist/content/resolve-slots.d.ts +0 -9
  51. package/dist/content/resolve-slots.js +0 -24
  52. package/dist/next/render.d.ts +0 -5
  53. package/dist/next/render.js +0 -15
  54. package/dist/next/root-layout.d.ts +0 -4
  55. package/dist/next/root-layout.js +0 -5
  56. package/dist/registry.d.ts +0 -15
  57. package/dist/registry.js +0 -10
@@ -1,3 +1,11 @@
1
+ export type RenderMode =
2
+ | 'static'
3
+ | 'static-with-fragments'
4
+ | 'prerender-on-demand'
5
+ | 'ssr-page'
6
+ | 'ssr-island'
7
+ | 'client-island';
8
+
1
9
  export type IslandMode = 'ssr' | 'client';
2
10
 
3
11
  export type VaryDimension =
@@ -1,9 +0,0 @@
1
- import type { LayoutEntry } from './provider.js';
2
- import type { KernelPageBlock } from './types.js';
3
- export interface FragmentData {
4
- id: string;
5
- component: string;
6
- props?: Record<string, unknown>;
7
- }
8
- export type FragmentLoader = (id: string) => Promise<FragmentData>;
9
- export declare function resolveSlots(layout: LayoutEntry, pageRegions: Record<string, KernelPageBlock[]>, getFragment: FragmentLoader): Promise<Record<string, KernelPageBlock[]>>;
@@ -1,24 +0,0 @@
1
- export async function resolveSlots(layout, pageRegions, getFragment) {
2
- const resolved = {};
3
- for (const slot of layout.slots) {
4
- const pageBlocks = pageRegions[slot.name];
5
- if (pageBlocks && pageBlocks.length > 0) {
6
- resolved[slot.name] = pageBlocks;
7
- continue;
8
- }
9
- const defaults = layout.defaults?.[slot.name];
10
- if (defaults?.length) {
11
- const blocks = [];
12
- for (const ref of defaults) {
13
- const fragment = await getFragment(ref.fragmentId);
14
- blocks.push({
15
- id: fragment.id,
16
- component: fragment.component,
17
- props: fragment.props || {},
18
- });
19
- }
20
- resolved[slot.name] = blocks;
21
- }
22
- }
23
- return resolved;
24
- }
@@ -1,5 +0,0 @@
1
- import type { ReactElement } from 'react';
2
- import type { Registry } from '../registry.js';
3
- import type { KernelPageBlock } from '../content/types.js';
4
- export declare function renderBlock(block: KernelPageBlock, registry: Registry, extraProps?: Record<string, unknown>): ReactElement | null;
5
- export declare function renderBlocks(blocks: readonly KernelPageBlock[], registry: Registry, extraProps?: Record<string, unknown>): (ReactElement | null)[];
@@ -1,15 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function renderBlock(block, registry, extraProps) {
3
- const entry = registry.find((r) => r.name === block.component);
4
- if (!entry) {
5
- if (process.env.NODE_ENV !== 'production') {
6
- return (_jsxs("div", { className: "mx-auto my-4 max-w-[var(--max-width-container)] rounded-card border-2 border-red-600 bg-red-50 px-5 py-4 font-mono text-sm leading-relaxed text-red-900", children: [_jsx("strong", { children: "Unknown block:" }), " ", _jsx("code", { children: block.component }), _jsx("br", {}), _jsxs("span", { className: "text-red-800 opacity-70", children: ["id: ", block.id] })] }, block.id));
7
- }
8
- return null;
9
- }
10
- const Component = entry.component;
11
- return _jsx(Component, { ...block.props, ...extraProps }, block.id);
12
- }
13
- export function renderBlocks(blocks, registry, extraProps) {
14
- return blocks.map((block) => renderBlock(block, registry, extraProps));
15
- }
@@ -1,4 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- export declare function RootLayout({ children }: {
3
- children: ReactNode;
4
- }): import("react").JSX.Element;
@@ -1,5 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { DevRefresh } from './dev-refresh.js';
3
- export function RootLayout({ children }) {
4
- return (_jsx("html", { lang: "en", children: _jsxs("body", { children: [children, _jsx(DevRefresh, {})] }) }));
5
- }
@@ -1,15 +0,0 @@
1
- import type { ComponentContract, InferComponentProps } from './types/component.js';
2
- export type AnyComponent = (abstract new (...args: any[]) => any) | ((props: any) => any) | Record<string, any>;
3
- export interface RegistryEntry {
4
- name: string;
5
- component: AnyComponent;
6
- contract: ComponentContract;
7
- }
8
- export type Registry = readonly RegistryEntry[];
9
- type ValidatedEntry<T> = T extends readonly [infer C extends ComponentContract, infer Comp] ? Comp extends (props: InferComponentProps<C>) => any ? T : Comp extends (props: InferComponentProps<C> & infer _) => any ? T : Comp extends new (props: InferComponentProps<C>, ...args: any[]) => any ? T : Comp extends Record<string, any> ? T : never : never;
10
- type ValidatedEntries<T extends readonly (readonly [ComponentContract, AnyComponent])[]> = {
11
- [K in keyof T]: ValidatedEntry<T[K]>;
12
- };
13
- export declare function createRegistry<const T extends readonly (readonly [ComponentContract, AnyComponent])[]>(entries: ValidatedEntries<T> & T): Registry;
14
- export declare function registryLookup(registry: Registry, name: string): AnyComponent | undefined;
15
- export {};
package/dist/registry.js DELETED
@@ -1,10 +0,0 @@
1
- export function createRegistry(entries) {
2
- return entries.map(([contract, component]) => ({
3
- name: contract.name,
4
- component,
5
- contract,
6
- }));
7
- }
8
- export function registryLookup(registry, name) {
9
- return registry.find((r) => r.name === name)?.component;
10
- }