@jay-framework/fullstack-component 0.8.0 → 0.10.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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { JayComponentCore, ContextMarkers, ComponentConstructor } from '@jay-framework/component';
2
- import { JayContract, ExtractViewState, ExtractRefs } from '@jay-framework/runtime';
2
+ import { JayContract, ExtractRefs, ExtractSlowViewState, ExtractFastViewState, ExtractInteractiveViewState } from '@jay-framework/runtime';
3
+ export { ExtractFastViewState, ExtractInteractiveViewState, ExtractRefs, ExtractSlowViewState, ExtractViewState, JayContract } from '@jay-framework/runtime';
3
4
  import { Getter, Setter } from '@jay-framework/reactive';
4
5
 
5
6
  /**
@@ -29,6 +30,31 @@ declare function createJayService<ServiceType = unknown>(name?: string): Service
29
30
  type ServiceMarkers<T extends any[]> = {
30
31
  [K in keyof T]: ServiceMarker<T[K]>;
31
32
  };
33
+ /**
34
+ * Contract metadata passed to dynamic contract components.
35
+ * Contains the contract name and original YAML definition.
36
+ */
37
+ interface DynamicContractMetadata {
38
+ contractName: string;
39
+ contractYaml: string;
40
+ }
41
+ /**
42
+ * Built-in service for dynamic contract metadata.
43
+ * Used by plugin system to pass contract metadata to shared components.
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * export const cmsCollection = makeJayStackComponent<DynamicContract>()
48
+ * .withServices(DYNAMIC_CONTRACT_SERVICE)
49
+ * .withFastRender(async (props, metadata: DynamicContractMetadata) => {
50
+ * // metadata.contractName contains the full contract name (e.g., "BlogPostsList")
51
+ * const collectionName = deriveCollectionName(metadata.contractName);
52
+ * const items = await fetchCollection(collectionName);
53
+ * return partialRender({ items }, {});
54
+ * });
55
+ * ```
56
+ */
57
+ declare const DYNAMIC_CONTRACT_SERVICE: ServiceMarker<DynamicContractMetadata>;
32
58
  interface PageProps {
33
59
  language: string;
34
60
  url: string;
@@ -37,202 +63,553 @@ type UrlParams = Record<string, string>;
37
63
  interface ServerError5xx {
38
64
  kind: 'ServerError';
39
65
  status: number;
66
+ message?: string;
67
+ code?: string;
68
+ details?: Record<string, unknown>;
40
69
  }
41
70
  interface ClientError4xx {
42
71
  kind: 'ClientError';
43
72
  status: number;
73
+ message?: string;
74
+ code?: string;
75
+ details?: Record<string, unknown>;
44
76
  }
45
77
  interface Redirect3xx {
46
- kind: 'redirect';
78
+ kind: 'Redirect';
47
79
  status: number;
48
80
  location: string;
81
+ message?: string;
49
82
  }
50
- interface PartialRender<ViewState extends object, CarryForward> {
51
- kind: 'PartialRender';
83
+ /**
84
+ * Successful output of a rendering phase.
85
+ * Contains the rendered ViewState and data to carry forward to the next phase.
86
+ */
87
+ interface PhaseOutput<ViewState extends object, CarryForward = {}> {
88
+ kind: 'PhaseOutput';
52
89
  rendered: ViewState;
53
90
  carryForward: CarryForward;
54
91
  }
55
- type SlowlyRenderResult<ViewState extends object, CarryForward> = PartialRender<ViewState, CarryForward> | ServerError5xx | ClientError4xx | Redirect3xx;
92
+ /**
93
+ * @deprecated Use PhaseOutput instead. PartialRender is kept for backwards compatibility.
94
+ */
95
+ type PartialRender<ViewState extends object, CarryForward> = PhaseOutput<ViewState, CarryForward>;
96
+ /**
97
+ * Union of all possible render outcomes.
98
+ */
99
+ type RenderOutcome<ViewState extends object, CarryForward = {}> = PhaseOutput<ViewState, CarryForward> | ServerError5xx | ClientError4xx | Redirect3xx;
100
+ type SlowlyRenderResult<ViewState extends object, CarryForward = {}> = RenderOutcome<ViewState, CarryForward>;
56
101
  type AnySlowlyRenderResult = SlowlyRenderResult<object, object>;
57
- type FastRenderResult<ViewState extends object, CarryForward> = PartialRender<ViewState, CarryForward> | ServerError5xx | ClientError4xx | Redirect3xx;
102
+ type FastRenderResult<ViewState extends object, CarryForward = {}> = RenderOutcome<ViewState, CarryForward>;
58
103
  type AnyFastRenderResult = FastRenderResult<object, object>;
59
104
  type LoadParams<Services, Params extends UrlParams> = (contexts: Services) => AsyncIterable<Params[]>;
60
- type RenderSlowly<Services extends Array<object>, PropsT extends object, StaticViewState extends object, SlowlyCarryForward> = (props: PropsT, ...services: Services) => Promise<SlowlyRenderResult<StaticViewState, SlowlyCarryForward>>;
61
- type RenderFast<Services extends Array<object>, PropsT extends object, DynamicViewState extends object, FastCarryForward> = (props: PropsT, ...services: Services) => Promise<FastRenderResult<DynamicViewState, FastCarryForward>>;
62
- interface JayStackComponentDefinition<StaticViewState extends object, ViewState extends object, Refs extends object, Services extends Array<any>, Contexts extends Array<any>, PropsT extends object, Params extends UrlParams, CompCore extends JayComponentCore<PropsT, ViewState>> {
105
+ type RenderSlowly<Services extends Array<object>, PropsT extends object, SlowViewState extends object, SlowlyCarryForward> = (props: PropsT, ...services: Services) => Promise<SlowlyRenderResult<SlowViewState, SlowlyCarryForward>>;
106
+ type RenderFast<Services extends Array<object>, PropsT extends object, FastViewState extends object, FastCarryForward> = (props: PropsT, ...services: Services) => Promise<FastRenderResult<FastViewState, FastCarryForward>>;
107
+ interface JayStackComponentDefinition<Refs extends object, SlowVS extends object, FastVS extends object, InteractiveVS extends object, Services extends Array<any>, Contexts extends Array<any>, PropsT extends object, Params extends UrlParams, CompCore extends JayComponentCore<PropsT, InteractiveVS>> {
63
108
  services: ServiceMarkers<Services>;
64
109
  contexts: ContextMarkers<Contexts>;
65
110
  loadParams: LoadParams<Services, Params>;
66
- slowlyRender: RenderSlowly<Services, PropsT, StaticViewState, any>;
67
- fastRender: RenderFast<Services, PropsT, ViewState, any>;
68
- comp: ComponentConstructor<PropsT, Refs, ViewState, Contexts, CompCore>;
111
+ slowlyRender: RenderSlowly<Services, PropsT, SlowVS, any>;
112
+ fastRender: RenderFast<Services, PropsT, FastVS, any>;
113
+ comp: ComponentConstructor<PropsT, Refs, InteractiveVS, Contexts, CompCore>;
69
114
  }
70
- type AnyJayStackComponentDefinition = JayStackComponentDefinition<object, object, object, object[], object[], object, UrlParams, any>;
115
+ type AnyJayStackComponentDefinition = JayStackComponentDefinition<object, object, object, object, object[], object[], object, UrlParams, any>;
116
+ /**
117
+ * A generated contract definition in YAML string format.
118
+ *
119
+ * This avoids dependency on compiler types - generators output contract YAML,
120
+ * which the compiler parses using its own type system.
121
+ */
122
+ interface GeneratedContractYaml {
123
+ name: string;
124
+ yaml: string;
125
+ description?: string;
126
+ }
127
+ /**
128
+ * Function that generates contracts dynamically at build time.
129
+ * Returns contract definitions as YAML strings to avoid compiler type dependencies.
130
+ * Services are injected based on the markers provided to withServices().
131
+ */
132
+ type ContractGeneratorFunction<Services extends any[]> = (...services: Services) => Promise<GeneratedContractYaml[]> | GeneratedContractYaml[];
133
+ /**
134
+ * Interface for a dynamic contract generator with service dependencies.
135
+ * Returned by makeContractGenerator() builder.
136
+ */
137
+ interface DynamicContractGenerator<Services extends any[] = any[]> {
138
+ services: ServiceMarkers<Services>;
139
+ generate: ContractGeneratorFunction<Services>;
140
+ }
141
+ /**
142
+ * Type helper to extract service instances from service markers.
143
+ */
144
+ type ServiceInstances<Markers extends ServiceMarkers<any[]>> = Markers extends ServiceMarkers<infer Services> ? Services : never;
71
145
 
72
- declare function serverError5xx(status: number): ServerError5xx;
73
- declare function clientError4xx(status: number): ClientError4xx;
74
- declare function notFound(): ClientError4xx;
75
- declare function redirect3xx(status: number, location: string): Redirect3xx;
76
- declare function partialRender<ViewState extends object, CarryForward>(rendered: ViewState, carryForward: CarryForward): PartialRender<ViewState, CarryForward>;
146
+ declare function serverError5xx(status: number, message?: string, details?: Record<string, unknown>): ServerError5xx;
147
+ declare function clientError4xx(status: number, message?: string, details?: Record<string, unknown>): ClientError4xx;
148
+ declare function notFound(message?: string, details?: Record<string, unknown>): ClientError4xx;
149
+ declare function badRequest(message?: string, details?: Record<string, unknown>): ClientError4xx;
150
+ declare function unauthorized(message?: string, details?: Record<string, unknown>): ClientError4xx;
151
+ declare function forbidden(message?: string, details?: Record<string, unknown>): ClientError4xx;
152
+ declare function redirect3xx(status: number, location: string, message?: string): Redirect3xx;
153
+ /**
154
+ * Create a successful phase output with rendered ViewState and carry-forward data.
155
+ */
156
+ declare function phaseOutput<ViewState extends object, CarryForward = {}>(rendered: ViewState, carryForward: CarryForward): PhaseOutput<ViewState, CarryForward>;
157
+ /**
158
+ * @deprecated Use phaseOutput instead. Kept for backwards compatibility.
159
+ */
160
+ declare function partialRender<ViewState extends object, CarryForward>(rendered: ViewState, carryForward: CarryForward): PhaseOutput<ViewState, CarryForward>;
77
161
 
78
162
  type BuilderStates = 'Props' | 'Services' | 'Contexts' | 'UrlLoader' | 'SlowlyRender' | 'FastRender' | 'InteractiveRender' | 'Done';
79
163
  type Signals<T extends object> = {
80
164
  [K in keyof T]: K extends string ? [Getter<T[K]>, Setter<T[K]>] : T[K];
81
165
  };
82
- type Builder<State extends BuilderStates, StaticViewState extends object, ViewState extends object, Refs extends object, Services extends Array<any>, Contexts extends Array<any>, PropsT extends object, Params extends UrlParams, CompCore extends JayComponentCore<PropsT, ViewState>> = State extends 'Props' ? JayStackComponentDefinition<StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore> & {
83
- withProps<NewPropsT extends object>(): Builder<'Services', StaticViewState, ViewState, Refs, Services, Contexts, NewPropsT, Params, JayComponentCore<NewPropsT, ViewState>>;
84
- } : State extends 'Services' ? JayStackComponentDefinition<StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore> & {
85
- withServices<NewServices extends Array<any>>(...serviceMarkers: ServiceMarkers<NewServices>): Builder<'Contexts', StaticViewState, ViewState, Refs, NewServices, Contexts, PropsT, Params, CompCore>;
86
- withContexts<NewContexts extends Array<any>>(...contextMarkers: ContextMarkers<NewContexts>): Builder<'UrlLoader', StaticViewState, ViewState, Refs, Services, NewContexts, PropsT, Params, CompCore>;
87
- withLoadParams<NewParams extends UrlParams>(loadParams: LoadParams<Services, NewParams>): Builder<'SlowlyRender', StaticViewState, ViewState, Refs, Services, Contexts, PropsT & NewParams, NewParams, CompCore>;
88
- withSlowlyRender<NewStaticViewState extends Partial<ViewState>, NewCarryForward extends object>(slowlyRender: RenderSlowly<Services, PropsT, NewStaticViewState, NewCarryForward>): Builder<'FastRender', NewStaticViewState, Partial<ViewState> & Omit<ViewState, keyof NewStaticViewState>, Refs, [
166
+ type Builder<State extends BuilderStates, Refs extends object, SlowVS extends object, FastVS extends object, InteractiveVS extends object, Services extends Array<any>, Contexts extends Array<any>, PropsT extends object, Params extends UrlParams, CompCore extends JayComponentCore<PropsT, InteractiveVS>> = State extends 'Props' ? JayStackComponentDefinition<Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore> & {
167
+ withProps<NewPropsT extends object>(): Builder<'Services', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, NewPropsT, Params, JayComponentCore<NewPropsT, InteractiveVS>>;
168
+ } : State extends 'Services' ? JayStackComponentDefinition<Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore> & {
169
+ withServices<NewServices extends Array<any>>(...serviceMarkers: ServiceMarkers<NewServices>): Builder<'Contexts', Refs, SlowVS, FastVS, InteractiveVS, NewServices, Contexts, PropsT, Params, CompCore>;
170
+ withContexts<NewContexts extends Array<any>>(...contextMarkers: ContextMarkers<NewContexts>): Builder<'UrlLoader', Refs, SlowVS, FastVS, InteractiveVS, Services, NewContexts, PropsT, Params, CompCore>;
171
+ withLoadParams<NewParams extends UrlParams>(loadParams: LoadParams<Services, NewParams>): Builder<'SlowlyRender', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT & NewParams, NewParams, CompCore>;
172
+ withSlowlyRender<NewCarryForward extends object>(slowlyRender: RenderSlowly<Services, PropsT, SlowVS, NewCarryForward>): Builder<'FastRender', Refs, SlowVS, FastVS, InteractiveVS, [
89
173
  NewCarryForward,
90
174
  ...Services
91
- ], Contexts, PropsT, Params, JayComponentCore<PropsT, Partial<ViewState> & Omit<ViewState, keyof NewStaticViewState>>>;
92
- withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, ViewState, NewCarryForward>): Builder<'InteractiveRender', StaticViewState, Partial<ViewState>, Refs, Services, [
93
- Signals<NewCarryForward>,
175
+ ], Contexts, PropsT, Params, JayComponentCore<PropsT, InteractiveVS>>;
176
+ withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, FastVS, NewCarryForward>): Builder<'InteractiveRender', Refs, SlowVS, FastVS, InteractiveVS, Services, [
177
+ Signals<FastVS>,
178
+ NewCarryForward,
94
179
  ...Contexts
95
- ], PropsT, Params, JayComponentCore<PropsT, Partial<ViewState>>>;
96
- withInteractive(comp: ComponentConstructor<PropsT, Refs, ViewState, Contexts, CompCore>): Builder<'Done', StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore>;
97
- } : State extends 'Contexts' ? JayStackComponentDefinition<StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore> & {
98
- withContexts<NewContexts extends Array<any>>(...contextMarkers: ContextMarkers<NewContexts>): Builder<'UrlLoader', StaticViewState, ViewState, Refs, Services, NewContexts, PropsT, Params, CompCore>;
99
- withLoadParams<NewParams extends UrlParams>(loadParams: LoadParams<Services, NewParams>): Builder<'SlowlyRender', StaticViewState, ViewState, Refs, Services, Contexts, PropsT & NewParams, NewParams, CompCore>;
100
- withSlowlyRender<NewStaticViewState extends Partial<ViewState>, NewCarryForward extends object>(slowlyRender: RenderSlowly<Services, PropsT, NewStaticViewState, NewCarryForward>): Builder<'FastRender', NewStaticViewState, Partial<ViewState> & Omit<ViewState, keyof NewStaticViewState>, Refs, [
180
+ ], PropsT, Params, JayComponentCore<PropsT, InteractiveVS>>;
181
+ withInteractive(comp: ComponentConstructor<PropsT, Refs, InteractiveVS, Contexts, CompCore>): Builder<'Done', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore>;
182
+ } : State extends 'Contexts' ? JayStackComponentDefinition<Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore> & {
183
+ withContexts<NewContexts extends Array<any>>(...contextMarkers: ContextMarkers<NewContexts>): Builder<'UrlLoader', Refs, SlowVS, FastVS, InteractiveVS, Services, NewContexts, PropsT, Params, CompCore>;
184
+ withLoadParams<NewParams extends UrlParams>(loadParams: LoadParams<Services, NewParams>): Builder<'SlowlyRender', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT & NewParams, NewParams, CompCore>;
185
+ withSlowlyRender<NewCarryForward extends object>(slowlyRender: RenderSlowly<Services, PropsT, SlowVS, NewCarryForward>): Builder<'FastRender', Refs, SlowVS, FastVS, InteractiveVS, [
101
186
  NewCarryForward,
102
187
  ...Services
103
- ], Contexts, PropsT, Params, JayComponentCore<PropsT, Partial<ViewState> & Omit<ViewState, keyof NewStaticViewState>>>;
104
- withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, ViewState, NewCarryForward>): Builder<'InteractiveRender', StaticViewState, Partial<ViewState>, Refs, Services, [
105
- Signals<NewCarryForward>,
188
+ ], Contexts, PropsT, Params, JayComponentCore<PropsT, InteractiveVS>>;
189
+ withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, FastVS, NewCarryForward>): Builder<'InteractiveRender', Refs, SlowVS, FastVS, InteractiveVS, Services, [
190
+ Signals<FastVS>,
191
+ NewCarryForward,
106
192
  ...Contexts
107
- ], PropsT, Params, JayComponentCore<PropsT, Partial<ViewState>>>;
108
- withInteractive(comp: ComponentConstructor<PropsT, Refs, ViewState, Contexts, CompCore>): Builder<'Done', StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore>;
109
- } : State extends 'UrlLoader' ? JayStackComponentDefinition<StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore> & {
110
- withLoadParams<NewParams extends UrlParams>(loadParams: LoadParams<Services, NewParams>): Builder<'SlowlyRender', StaticViewState, ViewState, Refs, Services, Contexts, PropsT & NewParams, NewParams, CompCore>;
111
- withSlowlyRender<NewStaticViewState extends Partial<ViewState>, NewCarryForward extends object>(slowlyRender: RenderSlowly<Services, PropsT, NewStaticViewState, NewCarryForward>): Builder<'FastRender', NewStaticViewState, Partial<ViewState> & Omit<ViewState, keyof NewStaticViewState>, Refs, [
193
+ ], PropsT, Params, JayComponentCore<PropsT, InteractiveVS>>;
194
+ withInteractive(comp: ComponentConstructor<PropsT, Refs, InteractiveVS, Contexts, CompCore>): Builder<'Done', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore>;
195
+ } : State extends 'UrlLoader' ? JayStackComponentDefinition<Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore> & {
196
+ withLoadParams<NewParams extends UrlParams>(loadParams: LoadParams<Services, NewParams>): Builder<'SlowlyRender', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT & NewParams, NewParams, CompCore>;
197
+ withSlowlyRender<NewCarryForward extends object>(slowlyRender: RenderSlowly<Services, PropsT, SlowVS, NewCarryForward>): Builder<'FastRender', Refs, SlowVS, FastVS, InteractiveVS, [
112
198
  NewCarryForward,
113
199
  ...Services
114
- ], Contexts, PropsT, Params, JayComponentCore<PropsT, Partial<ViewState> & Omit<ViewState, keyof NewStaticViewState>>>;
115
- withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, ViewState, NewCarryForward>): Builder<'InteractiveRender', StaticViewState, Partial<ViewState>, Refs, Services, [
116
- Signals<NewCarryForward>,
200
+ ], Contexts, PropsT, Params, JayComponentCore<PropsT, InteractiveVS>>;
201
+ withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, FastVS, NewCarryForward>): Builder<'InteractiveRender', Refs, SlowVS, FastVS, InteractiveVS, Services, [
202
+ Signals<FastVS>,
203
+ NewCarryForward,
117
204
  ...Contexts
118
- ], PropsT, Params, JayComponentCore<PropsT, Partial<ViewState>>>;
119
- withInteractive(comp: ComponentConstructor<PropsT, Refs, ViewState, Contexts, CompCore>): Builder<'Done', StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore>;
120
- } : State extends 'SlowlyRender' ? JayStackComponentDefinition<StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore> & {
121
- withSlowlyRender<NewStaticViewState extends Partial<ViewState>, NewCarryForward extends object>(slowlyRender: RenderSlowly<Services, PropsT, NewStaticViewState, NewCarryForward>): Builder<'FastRender', NewStaticViewState, Partial<ViewState> & Omit<ViewState, keyof NewStaticViewState>, Refs, [
205
+ ], PropsT, Params, JayComponentCore<PropsT, InteractiveVS>>;
206
+ withInteractive(comp: ComponentConstructor<PropsT, Refs, InteractiveVS, Contexts, CompCore>): Builder<'Done', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore>;
207
+ } : State extends 'SlowlyRender' ? JayStackComponentDefinition<Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore> & {
208
+ withSlowlyRender<NewCarryForward extends object>(slowlyRender: RenderSlowly<Services, PropsT, SlowVS, NewCarryForward>): Builder<'FastRender', Refs, SlowVS, FastVS, InteractiveVS, [
122
209
  NewCarryForward,
123
210
  ...Services
124
- ], Contexts, PropsT, Params, JayComponentCore<PropsT, Partial<ViewState> & Omit<ViewState, keyof NewStaticViewState>>>;
125
- withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, ViewState, NewCarryForward>): Builder<'InteractiveRender', StaticViewState, Partial<ViewState>, Refs, Services, [
126
- Signals<NewCarryForward>,
211
+ ], Contexts, PropsT, Params, JayComponentCore<PropsT, InteractiveVS>>;
212
+ withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, FastVS, NewCarryForward>): Builder<'InteractiveRender', Refs, SlowVS, FastVS, InteractiveVS, Services, [
213
+ Signals<FastVS>,
214
+ NewCarryForward,
127
215
  ...Contexts
128
- ], PropsT, Params, JayComponentCore<PropsT, Partial<ViewState>>>;
129
- withInteractive(comp: ComponentConstructor<PropsT, Refs, ViewState, Contexts, CompCore>): Builder<'Done', StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore>;
130
- } : State extends 'FastRender' ? JayStackComponentDefinition<StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore> & {
131
- withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, ViewState, NewCarryForward>): Builder<'InteractiveRender', StaticViewState, Partial<ViewState>, Refs, Services, [
132
- Signals<NewCarryForward>,
216
+ ], PropsT, Params, JayComponentCore<PropsT, InteractiveVS>>;
217
+ withInteractive(comp: ComponentConstructor<PropsT, Refs, InteractiveVS, Contexts, CompCore>): Builder<'Done', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore>;
218
+ } : State extends 'FastRender' ? JayStackComponentDefinition<Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore> & {
219
+ withFastRender<NewCarryForward extends object>(fastRender: RenderFast<Services, PropsT, FastVS, NewCarryForward>): Builder<'InteractiveRender', Refs, SlowVS, FastVS, InteractiveVS, Services, [
220
+ Signals<FastVS>,
221
+ NewCarryForward,
133
222
  ...Contexts
134
- ], PropsT, Params, JayComponentCore<PropsT, Partial<ViewState>>>;
135
- withInteractive(comp: ComponentConstructor<PropsT, Refs, ViewState, Contexts, CompCore>): Builder<'Done', StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore>;
136
- } : State extends 'InteractiveRender' ? JayStackComponentDefinition<StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore> & {
137
- withInteractive(comp: ComponentConstructor<PropsT, Refs, ViewState, Contexts, CompCore>): Builder<'Done', StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore>;
138
- } : JayStackComponentDefinition<StaticViewState, ViewState, Refs, Services, Contexts, PropsT, Params, CompCore>;
139
- declare function makeJayStackComponent<Render extends JayContract<any, any>>(): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, [], [], {}, {}, JayComponentCore<object, ExtractViewState<Render>>> & {
140
- withProps<NewPropsT extends object>(): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, [], [], NewPropsT, {}, JayComponentCore<NewPropsT, ExtractViewState<Render>>> & {
141
- withServices<NewServices extends any[]>(...serviceMarkers: ServiceMarkers<NewServices>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, NewServices, [], NewPropsT, {}, JayComponentCore<NewPropsT, ExtractViewState<Render>>> & {
142
- withContexts<NewContexts extends any[]>(...contextMarkers: ContextMarkers<NewContexts>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, NewServices, NewContexts, NewPropsT, {}, JayComponentCore<NewPropsT, ExtractViewState<Render>>> & {
143
- withLoadParams<NewParams extends UrlParams>(loadParams: LoadParams<NewServices, NewParams>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, NewServices, NewContexts, NewPropsT & NewParams, NewParams, JayComponentCore<NewPropsT, ExtractViewState<Render>>> & {
144
- withSlowlyRender<NewStaticViewState extends Partial<ExtractViewState<Render>>, NewCarryForward extends object>(slowlyRender: RenderSlowly<NewServices, NewPropsT & NewParams, NewStaticViewState, NewCarryForward>): JayStackComponentDefinition<NewStaticViewState, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>, ExtractRefs<Render>, [NewCarryForward, ...NewServices], NewContexts, NewPropsT & NewParams, NewParams, JayComponentCore<NewPropsT & NewParams, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>>> & {
145
- withFastRender<NewCarryForward_1 extends object>(fastRender: RenderFast<[NewCarryForward, ...NewServices], NewPropsT & NewParams, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>, NewCarryForward_1>): JayStackComponentDefinition<NewStaticViewState, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>>, ExtractRefs<Render>, [NewCarryForward, ...NewServices], [Signals<NewCarryForward_1>, ...NewContexts], NewPropsT & NewParams, NewParams, JayComponentCore<NewPropsT & NewParams, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>>>> & {
146
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams, ExtractRefs<Render>, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>>, [Signals<NewCarryForward_1>, ...NewContexts], JayComponentCore<NewPropsT & NewParams, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>>>>): JayStackComponentDefinition<NewStaticViewState, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>>, ExtractRefs<Render>, [NewCarryForward, ...NewServices], [Signals<NewCarryForward_1>, ...NewContexts], NewPropsT & NewParams, NewParams, JayComponentCore<NewPropsT & NewParams, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>>>>;
147
- };
148
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams, ExtractRefs<Render>, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>, NewContexts, JayComponentCore<NewPropsT & NewParams, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>>>): JayStackComponentDefinition<NewStaticViewState, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>, ExtractRefs<Render>, [NewCarryForward, ...NewServices], NewContexts, NewPropsT & NewParams, NewParams, JayComponentCore<NewPropsT & NewParams, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState>>>;
149
- };
150
- withFastRender<NewCarryForward_2 extends object>(fastRender: RenderFast<NewServices, NewPropsT & NewParams, ExtractViewState<Render>, NewCarryForward_2>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, NewServices, [Signals<NewCarryForward_2>, ...NewContexts], NewPropsT & NewParams, NewParams, JayComponentCore<NewPropsT & NewParams, Partial<ExtractViewState<Render>>>> & {
151
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams, ExtractRefs<Render>, Partial<ExtractViewState<Render>>, [Signals<NewCarryForward_2>, ...NewContexts], JayComponentCore<NewPropsT & NewParams, Partial<ExtractViewState<Render>>>>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, NewServices, [Signals<NewCarryForward_2>, ...NewContexts], NewPropsT & NewParams, NewParams, JayComponentCore<NewPropsT & NewParams, Partial<ExtractViewState<Render>>>>;
152
- };
153
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams, ExtractRefs<Render>, ExtractViewState<Render>, NewContexts, JayComponentCore<NewPropsT, ExtractViewState<Render>>>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, NewServices, NewContexts, NewPropsT & NewParams, NewParams, JayComponentCore<NewPropsT, ExtractViewState<Render>>>;
154
- };
155
- withSlowlyRender<NewStaticViewState_1 extends Partial<ExtractViewState<Render>>, NewCarryForward_3 extends object>(slowlyRender: RenderSlowly<NewServices, NewPropsT, NewStaticViewState_1, NewCarryForward_3>): JayStackComponentDefinition<NewStaticViewState_1, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>, ExtractRefs<Render>, [NewCarryForward_3, ...NewServices], NewContexts, NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>>> & {
156
- withFastRender<NewCarryForward_4 extends object>(fastRender: RenderFast<[NewCarryForward_3, ...NewServices], NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>, NewCarryForward_4>): JayStackComponentDefinition<NewStaticViewState_1, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>>, ExtractRefs<Render>, [NewCarryForward_3, ...NewServices], [Signals<NewCarryForward_4>, ...NewContexts], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>>>> & {
157
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>>, [Signals<NewCarryForward_4>, ...NewContexts], JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>>>>): JayStackComponentDefinition<NewStaticViewState_1, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>>, ExtractRefs<Render>, [NewCarryForward_3, ...NewServices], [Signals<NewCarryForward_4>, ...NewContexts], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>>>>;
158
- };
159
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>, NewContexts, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>>>): JayStackComponentDefinition<NewStaticViewState_1, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>, ExtractRefs<Render>, [NewCarryForward_3, ...NewServices], NewContexts, NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_1>>>;
160
- };
161
- withFastRender<NewCarryForward_5 extends object>(fastRender: RenderFast<NewServices, NewPropsT, ExtractViewState<Render>, NewCarryForward_5>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, NewServices, [Signals<NewCarryForward_5>, ...NewContexts], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>> & {
162
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<ExtractViewState<Render>>, [Signals<NewCarryForward_5>, ...NewContexts], JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, NewServices, [Signals<NewCarryForward_5>, ...NewContexts], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>>;
163
- };
164
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, ExtractViewState<Render>, NewContexts, JayComponentCore<NewPropsT, ExtractViewState<Render>>>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, NewServices, NewContexts, NewPropsT, {}, JayComponentCore<NewPropsT, ExtractViewState<Render>>>;
165
- };
166
- withLoadParams<NewParams_1 extends UrlParams>(loadParams: LoadParams<NewServices, NewParams_1>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, NewServices, [], NewPropsT & NewParams_1, NewParams_1, JayComponentCore<NewPropsT, ExtractViewState<Render>>> & {
167
- withSlowlyRender<NewStaticViewState_2 extends Partial<ExtractViewState<Render>>, NewCarryForward_6 extends object>(slowlyRender: RenderSlowly<NewServices, NewPropsT & NewParams_1, NewStaticViewState_2, NewCarryForward_6>): JayStackComponentDefinition<NewStaticViewState_2, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>, ExtractRefs<Render>, [NewCarryForward_6, ...NewServices], [], NewPropsT & NewParams_1, NewParams_1, JayComponentCore<NewPropsT & NewParams_1, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>>> & {
168
- withFastRender<NewCarryForward_7 extends object>(fastRender: RenderFast<[NewCarryForward_6, ...NewServices], NewPropsT & NewParams_1, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>, NewCarryForward_7>): JayStackComponentDefinition<NewStaticViewState_2, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>>, ExtractRefs<Render>, [NewCarryForward_6, ...NewServices], [Signals<NewCarryForward_7>], NewPropsT & NewParams_1, NewParams_1, JayComponentCore<NewPropsT & NewParams_1, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>>>> & {
169
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_1, ExtractRefs<Render>, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>>, [Signals<NewCarryForward_7>], JayComponentCore<NewPropsT & NewParams_1, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>>>>): JayStackComponentDefinition<NewStaticViewState_2, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>>, ExtractRefs<Render>, [NewCarryForward_6, ...NewServices], [Signals<NewCarryForward_7>], NewPropsT & NewParams_1, NewParams_1, JayComponentCore<NewPropsT & NewParams_1, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>>>>;
170
- };
171
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_1, ExtractRefs<Render>, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>, [], JayComponentCore<NewPropsT & NewParams_1, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>>>): JayStackComponentDefinition<NewStaticViewState_2, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>, ExtractRefs<Render>, [NewCarryForward_6, ...NewServices], [], NewPropsT & NewParams_1, NewParams_1, JayComponentCore<NewPropsT & NewParams_1, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_2>>>;
172
- };
173
- withFastRender<NewCarryForward_8 extends object>(fastRender: RenderFast<NewServices, NewPropsT & NewParams_1, ExtractViewState<Render>, NewCarryForward_8>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, NewServices, [Signals<NewCarryForward_8>], NewPropsT & NewParams_1, NewParams_1, JayComponentCore<NewPropsT & NewParams_1, Partial<ExtractViewState<Render>>>> & {
174
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_1, ExtractRefs<Render>, Partial<ExtractViewState<Render>>, [Signals<NewCarryForward_8>], JayComponentCore<NewPropsT & NewParams_1, Partial<ExtractViewState<Render>>>>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, NewServices, [Signals<NewCarryForward_8>], NewPropsT & NewParams_1, NewParams_1, JayComponentCore<NewPropsT & NewParams_1, Partial<ExtractViewState<Render>>>>;
175
- };
176
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_1, ExtractRefs<Render>, ExtractViewState<Render>, [], JayComponentCore<NewPropsT, ExtractViewState<Render>>>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, NewServices, [], NewPropsT & NewParams_1, NewParams_1, JayComponentCore<NewPropsT, ExtractViewState<Render>>>;
177
- };
178
- withSlowlyRender<NewStaticViewState_3 extends Partial<ExtractViewState<Render>>, NewCarryForward_9 extends object>(slowlyRender: RenderSlowly<NewServices, NewPropsT, NewStaticViewState_3, NewCarryForward_9>): JayStackComponentDefinition<NewStaticViewState_3, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>, ExtractRefs<Render>, [NewCarryForward_9, ...NewServices], [], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>>> & {
179
- withFastRender<NewCarryForward_10 extends object>(fastRender: RenderFast<[NewCarryForward_9, ...NewServices], NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>, NewCarryForward_10>): JayStackComponentDefinition<NewStaticViewState_3, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>>, ExtractRefs<Render>, [NewCarryForward_9, ...NewServices], [Signals<NewCarryForward_10>], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>>>> & {
180
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>>, [Signals<NewCarryForward_10>], JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>>>>): JayStackComponentDefinition<NewStaticViewState_3, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>>, ExtractRefs<Render>, [NewCarryForward_9, ...NewServices], [Signals<NewCarryForward_10>], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>>>>;
181
- };
182
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>, [], JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>>>): JayStackComponentDefinition<NewStaticViewState_3, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>, ExtractRefs<Render>, [NewCarryForward_9, ...NewServices], [], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_3>>>;
183
- };
184
- withFastRender<NewCarryForward_11 extends object>(fastRender: RenderFast<NewServices, NewPropsT, ExtractViewState<Render>, NewCarryForward_11>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, NewServices, [Signals<NewCarryForward_11>], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>> & {
185
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<ExtractViewState<Render>>, [Signals<NewCarryForward_11>], JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, NewServices, [Signals<NewCarryForward_11>], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>>;
186
- };
187
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, ExtractViewState<Render>, [], JayComponentCore<NewPropsT, ExtractViewState<Render>>>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, NewServices, [], NewPropsT, {}, JayComponentCore<NewPropsT, ExtractViewState<Render>>>;
188
- };
189
- withContexts<NewContexts_1 extends any[]>(...contextMarkers: ContextMarkers<NewContexts_1>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, [], NewContexts_1, NewPropsT, {}, JayComponentCore<NewPropsT, ExtractViewState<Render>>> & {
190
- withLoadParams<NewParams_2 extends UrlParams>(loadParams: LoadParams<[], NewParams_2>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, [], NewContexts_1, NewPropsT & NewParams_2, NewParams_2, JayComponentCore<NewPropsT, ExtractViewState<Render>>> & {
191
- withSlowlyRender<NewStaticViewState_4 extends Partial<ExtractViewState<Render>>, NewCarryForward_12 extends object>(slowlyRender: RenderSlowly<[], NewPropsT & NewParams_2, NewStaticViewState_4, NewCarryForward_12>): JayStackComponentDefinition<NewStaticViewState_4, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>, ExtractRefs<Render>, [NewCarryForward_12], NewContexts_1, NewPropsT & NewParams_2, NewParams_2, JayComponentCore<NewPropsT & NewParams_2, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>>> & {
192
- withFastRender<NewCarryForward_13 extends object>(fastRender: RenderFast<[NewCarryForward_12], NewPropsT & NewParams_2, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>, NewCarryForward_13>): JayStackComponentDefinition<NewStaticViewState_4, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>>, ExtractRefs<Render>, [NewCarryForward_12], [Signals<NewCarryForward_13>, ...NewContexts_1], NewPropsT & NewParams_2, NewParams_2, JayComponentCore<NewPropsT & NewParams_2, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>>>> & {
193
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_2, ExtractRefs<Render>, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>>, [Signals<NewCarryForward_13>, ...NewContexts_1], JayComponentCore<NewPropsT & NewParams_2, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>>>>): JayStackComponentDefinition<NewStaticViewState_4, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>>, ExtractRefs<Render>, [NewCarryForward_12], [Signals<NewCarryForward_13>, ...NewContexts_1], NewPropsT & NewParams_2, NewParams_2, JayComponentCore<NewPropsT & NewParams_2, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>>>>;
194
- };
195
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_2, ExtractRefs<Render>, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>, NewContexts_1, JayComponentCore<NewPropsT & NewParams_2, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>>>): JayStackComponentDefinition<NewStaticViewState_4, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>, ExtractRefs<Render>, [NewCarryForward_12], NewContexts_1, NewPropsT & NewParams_2, NewParams_2, JayComponentCore<NewPropsT & NewParams_2, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_4>>>;
196
- };
197
- withFastRender<NewCarryForward_14 extends object>(fastRender: RenderFast<[], NewPropsT & NewParams_2, ExtractViewState<Render>, NewCarryForward_14>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, [], [Signals<NewCarryForward_14>, ...NewContexts_1], NewPropsT & NewParams_2, NewParams_2, JayComponentCore<NewPropsT & NewParams_2, Partial<ExtractViewState<Render>>>> & {
198
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_2, ExtractRefs<Render>, Partial<ExtractViewState<Render>>, [Signals<NewCarryForward_14>, ...NewContexts_1], JayComponentCore<NewPropsT & NewParams_2, Partial<ExtractViewState<Render>>>>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, [], [Signals<NewCarryForward_14>, ...NewContexts_1], NewPropsT & NewParams_2, NewParams_2, JayComponentCore<NewPropsT & NewParams_2, Partial<ExtractViewState<Render>>>>;
199
- };
200
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_2, ExtractRefs<Render>, ExtractViewState<Render>, NewContexts_1, JayComponentCore<NewPropsT, ExtractViewState<Render>>>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, [], NewContexts_1, NewPropsT & NewParams_2, NewParams_2, JayComponentCore<NewPropsT, ExtractViewState<Render>>>;
201
- };
202
- withSlowlyRender<NewStaticViewState_5 extends Partial<ExtractViewState<Render>>, NewCarryForward_15 extends object>(slowlyRender: RenderSlowly<[], NewPropsT, NewStaticViewState_5, NewCarryForward_15>): JayStackComponentDefinition<NewStaticViewState_5, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>, ExtractRefs<Render>, [NewCarryForward_15], NewContexts_1, NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>>> & {
203
- withFastRender<NewCarryForward_16 extends object>(fastRender: RenderFast<[NewCarryForward_15], NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>, NewCarryForward_16>): JayStackComponentDefinition<NewStaticViewState_5, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>>, ExtractRefs<Render>, [NewCarryForward_15], [Signals<NewCarryForward_16>, ...NewContexts_1], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>>>> & {
204
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>>, [Signals<NewCarryForward_16>, ...NewContexts_1], JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>>>>): JayStackComponentDefinition<NewStaticViewState_5, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>>, ExtractRefs<Render>, [NewCarryForward_15], [Signals<NewCarryForward_16>, ...NewContexts_1], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>>>>;
205
- };
206
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>, NewContexts_1, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>>>): JayStackComponentDefinition<NewStaticViewState_5, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>, ExtractRefs<Render>, [NewCarryForward_15], NewContexts_1, NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_5>>>;
207
- };
208
- withFastRender<NewCarryForward_17 extends object>(fastRender: RenderFast<[], NewPropsT, ExtractViewState<Render>, NewCarryForward_17>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, [], [Signals<NewCarryForward_17>, ...NewContexts_1], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>> & {
209
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<ExtractViewState<Render>>, [Signals<NewCarryForward_17>, ...NewContexts_1], JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, [], [Signals<NewCarryForward_17>, ...NewContexts_1], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>>;
210
- };
211
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, ExtractViewState<Render>, NewContexts_1, JayComponentCore<NewPropsT, ExtractViewState<Render>>>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, [], NewContexts_1, NewPropsT, {}, JayComponentCore<NewPropsT, ExtractViewState<Render>>>;
212
- };
213
- withLoadParams<NewParams_3 extends UrlParams>(loadParams: LoadParams<[], NewParams_3>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, [], [], NewPropsT & NewParams_3, NewParams_3, JayComponentCore<NewPropsT, ExtractViewState<Render>>> & {
214
- withSlowlyRender<NewStaticViewState_6 extends Partial<ExtractViewState<Render>>, NewCarryForward_18 extends object>(slowlyRender: RenderSlowly<[], NewPropsT & NewParams_3, NewStaticViewState_6, NewCarryForward_18>): JayStackComponentDefinition<NewStaticViewState_6, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>, ExtractRefs<Render>, [NewCarryForward_18], [], NewPropsT & NewParams_3, NewParams_3, JayComponentCore<NewPropsT & NewParams_3, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>>> & {
215
- withFastRender<NewCarryForward_19 extends object>(fastRender: RenderFast<[NewCarryForward_18], NewPropsT & NewParams_3, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>, NewCarryForward_19>): JayStackComponentDefinition<NewStaticViewState_6, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>>, ExtractRefs<Render>, [NewCarryForward_18], [Signals<NewCarryForward_19>], NewPropsT & NewParams_3, NewParams_3, JayComponentCore<NewPropsT & NewParams_3, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>>>> & {
216
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_3, ExtractRefs<Render>, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>>, [Signals<NewCarryForward_19>], JayComponentCore<NewPropsT & NewParams_3, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>>>>): JayStackComponentDefinition<NewStaticViewState_6, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>>, ExtractRefs<Render>, [NewCarryForward_18], [Signals<NewCarryForward_19>], NewPropsT & NewParams_3, NewParams_3, JayComponentCore<NewPropsT & NewParams_3, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>>>>;
217
- };
218
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_3, ExtractRefs<Render>, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>, [], JayComponentCore<NewPropsT & NewParams_3, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>>>): JayStackComponentDefinition<NewStaticViewState_6, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>, ExtractRefs<Render>, [NewCarryForward_18], [], NewPropsT & NewParams_3, NewParams_3, JayComponentCore<NewPropsT & NewParams_3, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_6>>>;
219
- };
220
- withFastRender<NewCarryForward_20 extends object>(fastRender: RenderFast<[], NewPropsT & NewParams_3, ExtractViewState<Render>, NewCarryForward_20>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, [], [Signals<NewCarryForward_20>], NewPropsT & NewParams_3, NewParams_3, JayComponentCore<NewPropsT & NewParams_3, Partial<ExtractViewState<Render>>>> & {
221
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_3, ExtractRefs<Render>, Partial<ExtractViewState<Render>>, [Signals<NewCarryForward_20>], JayComponentCore<NewPropsT & NewParams_3, Partial<ExtractViewState<Render>>>>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, [], [Signals<NewCarryForward_20>], NewPropsT & NewParams_3, NewParams_3, JayComponentCore<NewPropsT & NewParams_3, Partial<ExtractViewState<Render>>>>;
222
- };
223
- withInteractive(comp: ComponentConstructor<NewPropsT & NewParams_3, ExtractRefs<Render>, ExtractViewState<Render>, [], JayComponentCore<NewPropsT, ExtractViewState<Render>>>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, [], [], NewPropsT & NewParams_3, NewParams_3, JayComponentCore<NewPropsT, ExtractViewState<Render>>>;
224
- };
225
- withSlowlyRender<NewStaticViewState_7 extends Partial<ExtractViewState<Render>>, NewCarryForward_21 extends object>(slowlyRender: RenderSlowly<[], NewPropsT, NewStaticViewState_7, NewCarryForward_21>): JayStackComponentDefinition<NewStaticViewState_7, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>, ExtractRefs<Render>, [NewCarryForward_21], [], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>>> & {
226
- withFastRender<NewCarryForward_22 extends object>(fastRender: RenderFast<[NewCarryForward_21], NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>, NewCarryForward_22>): JayStackComponentDefinition<NewStaticViewState_7, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>>, ExtractRefs<Render>, [NewCarryForward_21], [Signals<NewCarryForward_22>], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>>>> & {
227
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>>, [Signals<NewCarryForward_22>], JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>>>>): JayStackComponentDefinition<NewStaticViewState_7, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>>, ExtractRefs<Render>, [NewCarryForward_21], [Signals<NewCarryForward_22>], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>>>>;
228
- };
229
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>, [], JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>>>): JayStackComponentDefinition<NewStaticViewState_7, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>, ExtractRefs<Render>, [NewCarryForward_21], [], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>> & Omit<ExtractViewState<Render>, keyof NewStaticViewState_7>>>;
230
- };
231
- withFastRender<NewCarryForward_23 extends object>(fastRender: RenderFast<[], NewPropsT, ExtractViewState<Render>, NewCarryForward_23>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, [], [Signals<NewCarryForward_23>], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>> & {
232
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, Partial<ExtractViewState<Render>>, [Signals<NewCarryForward_23>], JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>>): JayStackComponentDefinition<object, Partial<ExtractViewState<Render>>, ExtractRefs<Render>, [], [Signals<NewCarryForward_23>], NewPropsT, {}, JayComponentCore<NewPropsT, Partial<ExtractViewState<Render>>>>;
233
- };
234
- withInteractive(comp: ComponentConstructor<NewPropsT, ExtractRefs<Render>, ExtractViewState<Render>, [], JayComponentCore<NewPropsT, ExtractViewState<Render>>>): JayStackComponentDefinition<object, ExtractViewState<Render>, ExtractRefs<Render>, [], [], NewPropsT, {}, JayComponentCore<NewPropsT, ExtractViewState<Render>>>;
235
- };
236
- };
223
+ ], PropsT, Params, JayComponentCore<PropsT, InteractiveVS>>;
224
+ withInteractive(comp: ComponentConstructor<PropsT, Refs, InteractiveVS, Contexts, CompCore>): Builder<'Done', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore>;
225
+ } : State extends 'InteractiveRender' ? JayStackComponentDefinition<Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore> & {
226
+ withInteractive(comp: ComponentConstructor<PropsT, Refs, InteractiveVS, Contexts, CompCore>): Builder<'Done', Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore>;
227
+ } : JayStackComponentDefinition<Refs, SlowVS, FastVS, InteractiveVS, Services, Contexts, PropsT, Params, CompCore>;
228
+ /**
229
+ * Create a Jay Stack component from a contract.
230
+ *
231
+ * For .jay-contract files with explicit phase annotations:
232
+ * - SlowViewState: Properties with phase: slow (or default)
233
+ * - FastViewState: Properties with phase: fast
234
+ * - InteractiveViewState: Properties with phase: fast+interactive
235
+ *
236
+ * For .jay-html files (backward compatible):
237
+ * - SlowViewState, FastViewState, InteractiveViewState default to `never`
238
+ *
239
+ * Note: Full type enforcement for phase-specific render functions requires
240
+ * extensive refactoring of the Builder type system. Currently, the phase types
241
+ * are extracted but not yet enforced. See design-log/50 for full implementation plan.
242
+ *
243
+ * TODO: Add type constraints to withSlowlyRender, withFastRender, withInteractive
244
+ * to enforce that returned/received ViewStates match the phase-specific types.
245
+ */
246
+ declare function makeJayStackComponent<Render extends JayContract<any, any, any, any, any>>(): Builder<'Props', ExtractRefs<Render>, ExtractSlowViewState<Render>, ExtractFastViewState<Render>, ExtractInteractiveViewState<Render>, [
247
+ ], [
248
+ ], {}, {}, JayComponentCore<object, ExtractInteractiveViewState<Render>>>;
249
+
250
+ /**
251
+ * Builder interface for contract generators without services
252
+ */
253
+ interface ContractGeneratorBuilderInitial {
254
+ /**
255
+ * Adds service dependencies to the contract generator.
256
+ * Services will be injected when generateWith() is called.
257
+ */
258
+ withServices<Services extends Array<any>>(...serviceMarkers: ServiceMarkers<Services>): ContractGeneratorBuilderWithServices<Services>;
259
+ /**
260
+ * Defines the contract generation function without services.
261
+ */
262
+ generateWith(fn: () => Promise<GeneratedContractYaml[]> | GeneratedContractYaml[]): DynamicContractGenerator<[]>;
263
+ }
264
+ /**
265
+ * Builder interface for contract generators with services
266
+ */
267
+ interface ContractGeneratorBuilderWithServices<Services extends Array<any>> {
268
+ /**
269
+ * Defines the contract generation function with service injection.
270
+ * Services are provided as parameters based on the order specified in withServices().
271
+ */
272
+ generateWith(fn: ContractGeneratorFunction<Services>): DynamicContractGenerator<Services>;
273
+ }
274
+ /**
275
+ * Creates a new contract generator builder.
276
+ *
277
+ * @returns A builder for creating dynamic contract generators
278
+ *
279
+ * @example
280
+ * ```typescript
281
+ * // Without services
282
+ * export const generator = makeContractGenerator()
283
+ * .generateWith(async () => {
284
+ * return [
285
+ * { name: 'Contract1', yaml: 'name: Contract1\ntags: [...]' },
286
+ * { name: 'Contract2', yaml: 'name: Contract2\ntags: [...]' }
287
+ * ];
288
+ * });
289
+ *
290
+ * // With services
291
+ * export const generator = makeContractGenerator()
292
+ * .withServices(CMS_SERVICE, API_SERVICE)
293
+ * .generateWith(async (cms, api) => {
294
+ * const data = await cms.fetch();
295
+ * return data.map(item => ({
296
+ * name: item.name,
297
+ * yaml: generateYaml(item)
298
+ * }));
299
+ * });
300
+ * ```
301
+ */
302
+ declare function makeContractGenerator(): ContractGeneratorBuilderInitial;
303
+
304
+ /**
305
+ * Factory object returned by RenderPipeline.for<VS, CF>().
306
+ * Provides entry points to create a typed pipeline.
307
+ */
308
+ interface PipelineFactory<TargetVS extends object, TargetCF extends object> {
309
+ /** Start with a success value (can be T or Promise<T>) */
310
+ ok<T>(value: T | Promise<T>): RenderPipeline<T, TargetVS, TargetCF>;
311
+ /**
312
+ * Start with a function that returns T or Promise<T>.
313
+ * Catches errors into the pipeline (accessible via recover()).
314
+ */
315
+ try<T>(fn: () => T | Promise<T>): RenderPipeline<T, TargetVS, TargetCF>;
316
+ /** Start from an existing outcome */
317
+ from<T extends object>(outcome: RenderOutcome<T, unknown>): RenderPipeline<T, TargetVS, TargetCF>;
318
+ notFound(message?: string, details?: Record<string, unknown>): RenderPipeline<never, TargetVS, TargetCF>;
319
+ badRequest(message?: string, details?: Record<string, unknown>): RenderPipeline<never, TargetVS, TargetCF>;
320
+ unauthorized(message?: string, details?: Record<string, unknown>): RenderPipeline<never, TargetVS, TargetCF>;
321
+ forbidden(message?: string, details?: Record<string, unknown>): RenderPipeline<never, TargetVS, TargetCF>;
322
+ serverError(status: number, message?: string, details?: Record<string, unknown>): RenderPipeline<never, TargetVS, TargetCF>;
323
+ clientError(status: number, message?: string, details?: Record<string, unknown>): RenderPipeline<never, TargetVS, TargetCF>;
324
+ redirect(status: number, location: string): RenderPipeline<never, TargetVS, TargetCF>;
325
+ }
326
+ /**
327
+ * A pipeline for composing render operations with automatic error propagation.
328
+ *
329
+ * Type Parameters:
330
+ * - T: The current working value being transformed through the chain
331
+ * - TargetVS: The expected ViewState output type (set via .for<>())
332
+ * - TargetCF: The expected CarryForward output type (set via .for<>())
333
+ *
334
+ * Usage:
335
+ * ```typescript
336
+ * const Pipeline = RenderPipeline.for<SlowViewState, CarryForward>();
337
+ *
338
+ * return Pipeline
339
+ * .try(() => fetchData())
340
+ * .map(data => data ? data : Pipeline.notFound())
341
+ * .map(async data => enrichData(data))
342
+ * .toPhaseOutput(data => ({
343
+ * viewState: { ... },
344
+ * carryForward: { ... }
345
+ * }));
346
+ * ```
347
+ */
348
+ declare class RenderPipeline<T, TargetVS extends object = object, TargetCF extends object = Record<string, never>> {
349
+ private readonly _value;
350
+ private readonly _isSuccess;
351
+ private constructor();
352
+ /**
353
+ * Create a typed pipeline factory with target output types declared upfront.
354
+ * TypeScript validates that .toPhaseOutput() produces these types.
355
+ */
356
+ static for<TargetVS extends object, TargetCF extends object = Record<string, never>>(): PipelineFactory<TargetVS, TargetCF>;
357
+ /**
358
+ * Transform the working value. Always returns RenderPipeline (sync).
359
+ *
360
+ * The mapping function can return:
361
+ * - U: Plain value
362
+ * - Promise<U>: Async value (resolved at toPhaseOutput)
363
+ * - RenderPipeline<U>: For conditional errors/branching
364
+ *
365
+ * Errors pass through unchanged.
366
+ */
367
+ map<U>(fn: (value: T) => U | Promise<U> | RenderPipeline<U, TargetVS, TargetCF>): RenderPipeline<U, TargetVS, TargetCF>;
368
+ /**
369
+ * Handle errors, potentially recovering to a success.
370
+ * The function receives the caught Error and can return a new pipeline.
371
+ */
372
+ recover<U>(fn: (error: Error) => RenderPipeline<U, TargetVS, TargetCF>): RenderPipeline<T | U, TargetVS, TargetCF>;
373
+ /**
374
+ * Convert to final PhaseOutput. This is the ONLY async method.
375
+ * Resolves all pending promises and applies the final mapping.
376
+ */
377
+ toPhaseOutput(fn: (value: T) => {
378
+ viewState: TargetVS;
379
+ carryForward: TargetCF;
380
+ }): Promise<RenderOutcome<TargetVS, TargetCF>>;
381
+ /** Check if this pipeline is in a success state */
382
+ isOk(): boolean;
383
+ /** Check if this pipeline is in an error state */
384
+ isError(): boolean;
385
+ }
386
+
387
+ /**
388
+ * Supported HTTP methods for actions and queries.
389
+ */
390
+ type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
391
+ /**
392
+ * Cache options for GET requests.
393
+ */
394
+ interface CacheOptions {
395
+ /** Cache duration in seconds */
396
+ maxAge?: number;
397
+ /** Time in seconds to serve stale content while revalidating */
398
+ staleWhileRevalidate?: number;
399
+ }
400
+ /**
401
+ * Error class for action/query failures.
402
+ * Thrown from action handlers to indicate business logic errors.
403
+ *
404
+ * @example
405
+ * ```typescript
406
+ * throw new ActionError('NOT_AVAILABLE', 'Only 2 units available');
407
+ * ```
408
+ */
409
+ declare class ActionError extends Error {
410
+ readonly code: string;
411
+ readonly name = "ActionError";
412
+ constructor(code: string, message: string);
413
+ }
414
+ /**
415
+ * A callable action/query that makes an HTTP request to the server.
416
+ * This is the final type returned by the builder's withHandler() method.
417
+ */
418
+ interface JayAction<Input, Output> {
419
+ /** Call the action - makes HTTP request to server */
420
+ (input: Input): Promise<Output>;
421
+ /** Unique action name for routing */
422
+ readonly actionName: string;
423
+ /** HTTP method (GET, POST, etc.) */
424
+ readonly method: HttpMethod;
425
+ /** Internal marker for type identification */
426
+ readonly _brand: 'JayAction';
427
+ }
428
+ /**
429
+ * Internal action definition used for server-side registration.
430
+ * Contains all metadata and the handler function.
431
+ */
432
+ interface JayActionDefinition<Input, Output, Services extends any[]> {
433
+ /** Unique action name */
434
+ actionName: string;
435
+ /** HTTP method */
436
+ method: HttpMethod;
437
+ /** Cache options (for GET requests) */
438
+ cacheOptions?: CacheOptions;
439
+ /** Service markers for dependency injection */
440
+ services: ServiceMarkers<Services>;
441
+ /** The handler function */
442
+ handler: (input: Input, ...services: Services) => Promise<Output>;
443
+ }
444
+ /**
445
+ * Builder interface for creating type-safe actions/queries.
446
+ */
447
+ interface JayActionBuilder<Services extends any[], Input, Output, DefaultMethod extends HttpMethod> {
448
+ /**
449
+ * Specify services to inject into the handler.
450
+ */
451
+ withServices<NewServices extends any[]>(...services: ServiceMarkers<NewServices>): JayActionBuilder<NewServices, Input, Output, DefaultMethod>;
452
+ /**
453
+ * Override the HTTP method.
454
+ */
455
+ withMethod<M extends HttpMethod>(method: M): JayActionBuilder<Services, Input, Output, M>;
456
+ /**
457
+ * Enable caching (typically for GET requests).
458
+ */
459
+ withCaching(options?: CacheOptions): JayActionBuilder<Services, Input, Output, DefaultMethod>;
460
+ /**
461
+ * Define the handler function. Input and output types are inferred from the handler signature.
462
+ */
463
+ withHandler<I, O>(handler: (input: I, ...services: Services) => Promise<O>): JayAction<I, O> & JayActionDefinition<I, O, Services>;
464
+ }
465
+ /**
466
+ * Create an action (defaults to POST method).
467
+ * Use for mutations: add to cart, submit form, update profile, etc.
468
+ *
469
+ * @param name - Unique action name (e.g., 'cart.addToCart')
470
+ *
471
+ * @example
472
+ * ```typescript
473
+ * export const addToCart = makeJayAction('cart.addToCart')
474
+ * .withServices(CART_SERVICE)
475
+ * .withHandler(async (input: { productId: string; quantity: number }, cartService) => {
476
+ * const cart = await cartService.addItem(input.productId, input.quantity);
477
+ * return { cartItemCount: cart.items.length };
478
+ * });
479
+ * ```
480
+ */
481
+ declare function makeJayAction(name: string): JayActionBuilder<[], unknown, unknown, 'POST'>;
482
+ /**
483
+ * Create a query (defaults to GET method).
484
+ * Use for reads: search, get details, list items, etc.
485
+ * GET enables browser/CDN caching.
486
+ *
487
+ * @param name - Unique query name (e.g., 'products.search')
488
+ *
489
+ * @example
490
+ * ```typescript
491
+ * export const searchProducts = makeJayQuery('products.search')
492
+ * .withServices(PRODUCTS_DATABASE_SERVICE)
493
+ * .withCaching({ maxAge: 60 })
494
+ * .withHandler(async (input: { query: string }, productsDb) => {
495
+ * return productsDb.search(input.query);
496
+ * });
497
+ * ```
498
+ */
499
+ declare function makeJayQuery(name: string): JayActionBuilder<[], unknown, unknown, 'GET'>;
500
+ /**
501
+ * Extract the input type from a JayAction.
502
+ */
503
+ type ActionInput<T> = T extends JayAction<infer I, any> ? I : never;
504
+ /**
505
+ * Extract the output type from a JayAction.
506
+ */
507
+ type ActionOutput<T> = T extends JayAction<any, infer O> ? O : never;
508
+ /**
509
+ * Check if a value is a JayAction.
510
+ */
511
+ declare function isJayAction(value: unknown): value is JayAction<unknown, unknown>;
512
+
513
+ /**
514
+ * Builder for plugin/project initialization with type-safe server-to-client data flow.
515
+ *
516
+ * Usage:
517
+ * ```typescript
518
+ * export const init = makeJayInit()
519
+ * .withServer(async () => {
520
+ * registerService(MY_SERVICE, createService());
521
+ * return { apiUrl: config.url };
522
+ * })
523
+ * .withClient((data) => {
524
+ * // data is typed from withServer return!
525
+ * registerGlobalContext(MY_CONFIG_CONTEXT, data);
526
+ * });
527
+ * ```
528
+ */
529
+ /**
530
+ * The compiled init object that contains server and/or client init functions.
531
+ * The compiler transforms the builder chain into this object.
532
+ */
533
+ interface JayInit<T = void> {
534
+ readonly __brand: 'JayInit';
535
+ /** Key for namespacing (plugin name or 'project'). Filled in by framework. */
536
+ readonly key: string;
537
+ /** Server init function. Returns data to pass to client. */
538
+ readonly _serverInit?: () => T | Promise<T>;
539
+ /** Client init function. Receives data from server. */
540
+ readonly _clientInit?: (data: T) => void | Promise<void>;
541
+ }
542
+ /**
543
+ * Builder interface for constructing a JayInit.
544
+ */
545
+ interface JayInitBuilder<T = void> {
546
+ /**
547
+ * Defines server-side initialization logic.
548
+ * The return value is passed to the client init function.
549
+ *
550
+ * @param callback - Async function that runs on server startup
551
+ * @returns Builder with client data type set to callback's return type
552
+ */
553
+ withServer<R extends Record<string, any>>(callback: () => R | Promise<R>): JayInitBuilderWithServer<R>;
554
+ /**
555
+ * Defines client-side initialization logic (when no server data needed).
556
+ *
557
+ * @param callback - Function that runs on client before component tree mounts
558
+ * @returns The final JayInit object
559
+ */
560
+ withClient(callback: () => void | Promise<void>): JayInit<void>;
561
+ }
562
+ /**
563
+ * Builder after withServer has been called.
564
+ */
565
+ interface JayInitBuilderWithServer<T extends Record<string, any>> extends JayInit<T> {
566
+ /**
567
+ * Defines client-side initialization logic with server data.
568
+ *
569
+ * @param callback - Function that receives data from server init
570
+ * @returns The final JayInit object
571
+ */
572
+ withClient(callback: (data: T) => void | Promise<void>): JayInit<T>;
573
+ }
574
+ /**
575
+ * Creates a builder for plugin/project initialization.
576
+ *
577
+ * The key parameter is optional:
578
+ * - For plugins: defaults to plugin name from plugin.yaml (injected by framework)
579
+ * - For project: defaults to 'project'
580
+ *
581
+ * @param key - Optional namespace key (typically omitted)
582
+ * @returns A builder to define server and client initialization
583
+ *
584
+ * @example
585
+ * ```typescript
586
+ * // Plugin init (key defaults to plugin name)
587
+ * export const init = makeJayInit()
588
+ * .withServer(async () => {
589
+ * registerService(STORES_SERVICE, createService());
590
+ * return { currency: 'USD', enableCart: true };
591
+ * })
592
+ * .withClient((data) => {
593
+ * registerGlobalContext(STORES_CONFIG, data);
594
+ * });
595
+ *
596
+ * // Server-only init
597
+ * export const init = makeJayInit()
598
+ * .withServer(async () => {
599
+ * registerService(DB_SERVICE, await connectDb());
600
+ * });
601
+ *
602
+ * // Client-only init
603
+ * export const init = makeJayInit()
604
+ * .withClient(() => {
605
+ * initAnalytics();
606
+ * });
607
+ * ```
608
+ */
609
+ declare function makeJayInit(key?: string): JayInitBuilder<void>;
610
+ /**
611
+ * Type guard to check if an object is a JayInit.
612
+ */
613
+ declare function isJayInit(obj: unknown): obj is JayInit<any>;
237
614
 
238
- export { type AnyFastRenderResult, type AnyJayStackComponentDefinition, type AnySlowlyRenderResult, type Builder, type ClientError4xx, type FastRenderResult, type JayStackComponentDefinition, type LoadParams, type PageProps, type PartialRender, type Redirect3xx, type RenderFast, type RenderSlowly, type ServerError5xx, type ServiceMarker, type ServiceMarkers, type Signals, type SlowlyRenderResult, type UrlParams, clientError4xx, createJayService, makeJayStackComponent, notFound, partialRender, redirect3xx, serverError5xx };
615
+ export { ActionError, type ActionInput, type ActionOutput, type AnyFastRenderResult, type AnyJayStackComponentDefinition, type AnySlowlyRenderResult, type Builder, type CacheOptions, type ClientError4xx, type ContractGeneratorFunction, DYNAMIC_CONTRACT_SERVICE, type DynamicContractGenerator, type DynamicContractMetadata, type FastRenderResult, type GeneratedContractYaml, type HttpMethod, type JayAction, type JayActionBuilder, type JayActionDefinition, type JayInit, type JayInitBuilder, type JayInitBuilderWithServer, type JayStackComponentDefinition, type LoadParams, type PageProps, type PartialRender, type PhaseOutput, type PipelineFactory, type Redirect3xx, type RenderFast, type RenderOutcome, RenderPipeline, type RenderSlowly, type ServerError5xx, type ServiceInstances, type ServiceMarker, type ServiceMarkers, type Signals, type SlowlyRenderResult, type UrlParams, badRequest, clientError4xx, createJayService, forbidden, isJayAction, isJayInit, makeContractGenerator, makeJayAction, makeJayInit, makeJayQuery, makeJayStackComponent, notFound, partialRender, phaseOutput, redirect3xx, serverError5xx, unauthorized };