foldkit 0.162.0 → 0.163.0-canary.085c0174a32b
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/README.md +4 -4
- package/dist/asyncData/asyncData.d.ts +1 -1
- package/dist/asyncData/asyncData.js +1 -1
- package/dist/buildToken.d.ts +6 -0
- package/dist/buildToken.d.ts.map +1 -1
- package/dist/buildToken.js +11 -6
- package/dist/devTools/protocol.d.ts +20 -0
- package/dist/devTools/protocol.d.ts.map +1 -1
- package/dist/devTools/protocol.js +19 -0
- package/dist/devTools/public.d.ts +1 -1
- package/dist/devTools/public.d.ts.map +1 -1
- package/dist/devTools/public.js +1 -1
- package/dist/devTools/store.d.ts.map +1 -1
- package/dist/devTools/store.js +16 -16
- package/dist/experimental/machine/machine.d.ts +4 -4
- package/dist/experimental/machine/machine.js +3 -3
- package/dist/experimental/server/serialize.d.ts.map +1 -1
- package/dist/experimental/server/serialize.js +86 -28
- package/dist/experimental/server/server.d.ts +29 -25
- package/dist/experimental/server/server.d.ts.map +1 -1
- package/dist/experimental/server/server.js +29 -46
- package/dist/html/index.d.ts +31 -20
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +1 -1
- package/dist/runtime/deepFreeze.d.ts +1 -1
- package/dist/runtime/deepFreeze.js +1 -1
- package/dist/runtime/documentMetadata.d.ts.map +1 -1
- package/dist/runtime/documentMetadata.js +69 -47
- package/dist/runtime/hydrationHandoff.js +4 -4
- package/dist/runtime/managedResourceFibers.d.ts +1 -1
- package/dist/runtime/managedResourceFibers.d.ts.map +1 -1
- package/dist/runtime/managedResourceFibers.js +3 -2
- package/dist/runtime/start.d.ts +9 -7
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +2 -1
- package/dist/runtime/subscriptionFibers.d.ts +1 -1
- package/dist/runtime/subscriptionFibers.d.ts.map +1 -1
- package/dist/runtime/subscriptionFibers.js +3 -2
- package/dist/schema/index.d.ts +15 -9
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/snabbdom/eventlisteners.d.ts.map +1 -1
- package/dist/snabbdom/eventlisteners.js +5 -0
- package/dist/struct/index.d.ts +4 -4
- package/dist/struct/index.d.ts.map +1 -1
- package/dist/struct/index.js +4 -4
- package/dist/struct/public.d.ts +1 -1
- package/dist/struct/public.d.ts.map +1 -1
- package/dist/struct/public.js +1 -1
- package/dist/submodel/submodel.d.ts +3 -3
- package/dist/subscription/fromEvent.d.ts +47 -33
- package/dist/subscription/fromEvent.d.ts.map +1 -1
- package/dist/subscription/fromEvent.js +30 -25
- package/dist/subscription/fromMediaQuery.d.ts +57 -0
- package/dist/subscription/fromMediaQuery.d.ts.map +1 -0
- package/dist/subscription/fromMediaQuery.js +46 -0
- package/dist/subscription/keyBindings.d.ts +13 -11
- package/dist/subscription/keyBindings.d.ts.map +1 -1
- package/dist/subscription/keyBindings.js +9 -7
- package/dist/subscription/public.d.ts +3 -1
- package/dist/subscription/public.d.ts.map +1 -1
- package/dist/subscription/public.js +1 -0
- package/dist/test/apps/bubbling.js +5 -5
- package/dist/test/apps/colorPicker.js +2 -2
- package/dist/test/apps/contentEditableEditor.js +3 -3
- package/dist/test/apps/contextMenu.js +2 -2
- package/dist/test/apps/counter.d.ts.map +1 -1
- package/dist/test/apps/counter.js +8 -5
- package/dist/test/apps/crashOnRender.js +3 -3
- package/dist/test/apps/drafts.js +3 -3
- package/dist/test/apps/feedSocket.js +5 -5
- package/dist/test/apps/fileUpload.js +2 -2
- package/dist/test/apps/focusBoundary.js +3 -3
- package/dist/test/apps/formChild.js +4 -4
- package/dist/test/apps/interactions.js +7 -7
- package/dist/test/apps/keypress.js +3 -3
- package/dist/test/apps/keypressSelf.js +2 -2
- package/dist/test/apps/login.js +7 -7
- package/dist/test/apps/mountPanel.js +4 -4
- package/dist/test/apps/multiRole.js +2 -2
- package/dist/test/apps/pointer.d.ts +5 -1
- package/dist/test/apps/pointer.d.ts.map +1 -1
- package/dist/test/apps/pointer.js +16 -7
- package/dist/test/apps/resumeUpload.js +5 -5
- package/dist/test/apps/scorePanel.js +2 -2
- package/dist/test/apps/selectiveKeys.d.ts.map +1 -1
- package/dist/test/apps/selectiveKeys.js +5 -3
- package/dist/test/apps/uploads.d.ts.map +1 -1
- package/dist/test/apps/uploads.js +13 -7
- package/dist/test/query.d.ts +30 -15
- package/dist/test/query.d.ts.map +1 -1
- package/dist/test/query.js +172 -56
- package/dist/test/scene.d.ts +6 -2
- package/dist/test/scene.d.ts.map +1 -1
- package/dist/test/scene.js +27 -3
- package/dist/update/update.d.ts +4 -4
- package/dist/update/update.js +3 -3
- package/dist/vdom.d.ts +3 -3
- package/dist/vdom.d.ts.map +1 -1
- package/dist/vdom.js +17 -7
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ import { Schema } from 'effect'
|
|
|
45
45
|
import { Runtime, Update } from 'foldkit'
|
|
46
46
|
import { Document, HtmlBuilder } from 'foldkit/html'
|
|
47
47
|
import { defineMessageUnion } from 'foldkit/message'
|
|
48
|
-
import {
|
|
48
|
+
import { modifyFields } from 'foldkit/struct'
|
|
49
49
|
|
|
50
50
|
// MODEL
|
|
51
51
|
|
|
@@ -66,12 +66,12 @@ export type Message = typeof Message.Type
|
|
|
66
66
|
export const update = (model: Model, message: Message) =>
|
|
67
67
|
Message.match<Update.Return<Model, Message>>(message, {
|
|
68
68
|
ClickedDecrement: () => ({
|
|
69
|
-
model:
|
|
69
|
+
model: modifyFields(model, { count: count => count - 1 }),
|
|
70
70
|
}),
|
|
71
71
|
ClickedIncrement: () => ({
|
|
72
|
-
model:
|
|
72
|
+
model: modifyFields(model, { count: count => count + 1 }),
|
|
73
73
|
}),
|
|
74
|
-
ClickedReset: () => ({ model:
|
|
74
|
+
ClickedReset: () => ({ model: modifyFields(model, { count: () => 0 }) }),
|
|
75
75
|
})
|
|
76
76
|
|
|
77
77
|
// INIT
|
|
@@ -407,7 +407,7 @@ export declare const all: <const Inputs extends Iterable<AsyncData<any, any>> |
|
|
|
407
407
|
*
|
|
408
408
|
* // One update arm folds it in, whatever the previous state was:
|
|
409
409
|
* SettledLoadNotes: ({ result }) => ({
|
|
410
|
-
* model:
|
|
410
|
+
* model: modifyFields(model, { notes: AsyncData.settle(result) }),
|
|
411
411
|
* })
|
|
412
412
|
* ```
|
|
413
413
|
*/
|
|
@@ -418,7 +418,7 @@ export const all = (inputs) => {
|
|
|
418
418
|
*
|
|
419
419
|
* // One update arm folds it in, whatever the previous state was:
|
|
420
420
|
* SettledLoadNotes: ({ result }) => ({
|
|
421
|
-
* model:
|
|
421
|
+
* model: modifyFields(model, { notes: AsyncData.settle(result) }),
|
|
422
422
|
* })
|
|
423
423
|
* ```
|
|
424
424
|
*/
|
package/dist/buildToken.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/** The build id compiled into this Foldkit artifact, when one was supplied.
|
|
2
|
+
* @internal */
|
|
3
|
+
export declare const injectedBuildId: string | undefined;
|
|
4
|
+
/** Uses an explicit build id when present and the compiled artifact id otherwise.
|
|
5
|
+
* @internal */
|
|
6
|
+
export declare const buildIdOrInjected: (buildId: string | undefined) => string | undefined;
|
|
1
7
|
/** The attribute a hydratable render stamps the build id onto. */
|
|
2
8
|
export declare const HYDRATION_BUILD_ATTRIBUTE = "data-foldkit-build";
|
|
3
9
|
//# sourceMappingURL=buildToken.d.ts.map
|
package/dist/buildToken.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildToken.d.ts","sourceRoot":"","sources":["../src/buildToken.ts"],"names":[],"mappings":"AAoBA,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"buildToken.d.ts","sourceRoot":"","sources":["../src/buildToken.ts"],"names":[],"mappings":"AAoBA;eACe;AACf,eAAO,MAAM,eAAe,oBAA8B,CAAA;AAE1D;eACe;AACf,eAAO,MAAM,iBAAiB,YACnB,MAAM,GAAG,SAAS,KAC1B,MAAM,GAAG,SAAgE,CAAA;AAE5E,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,uBAAuB,CAAA"}
|
package/dist/buildToken.js
CHANGED
|
@@ -11,11 +11,16 @@
|
|
|
11
11
|
// DOM state on a stale page could otherwise be carried into a view that now
|
|
12
12
|
// means something else.
|
|
13
13
|
//
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
// The Vite plugin replaces this call while compiling the client and server
|
|
15
|
+
// artifacts. Leaving it as a function keeps direct Node use and builds without
|
|
16
|
+
// the plugin fail-closed: the framework sees no identity and refuses hydratable
|
|
17
|
+
// rendering or hydration instead of sharing a fallback across deployments.
|
|
18
|
+
const foldkitBuildIdPlaceholder = () => undefined;
|
|
19
|
+
/** The build id compiled into this Foldkit artifact, when one was supplied.
|
|
20
|
+
* @internal */
|
|
21
|
+
export const injectedBuildId = foldkitBuildIdPlaceholder();
|
|
22
|
+
/** Uses an explicit build id when present and the compiled artifact id otherwise.
|
|
23
|
+
* @internal */
|
|
24
|
+
export const buildIdOrInjected = (buildId) => (buildId === undefined ? injectedBuildId : buildId);
|
|
20
25
|
/** The attribute a hydratable render stamps the build id onto. */
|
|
21
26
|
export const HYDRATION_BUILD_ATTRIBUTE = 'data-foldkit-build';
|
|
@@ -573,4 +573,24 @@ export declare const EventFrame: Schema.Struct<{
|
|
|
573
573
|
}>;
|
|
574
574
|
/** A wire frame carrying a runtime lifecycle event. */
|
|
575
575
|
export type EventFrame = typeof EventFrame.Type;
|
|
576
|
+
/** Increment when the relay record's wire format changes. */
|
|
577
|
+
export declare const RELAY_RECORD_VERSION = 1;
|
|
578
|
+
/** Directory name under `XDG_RUNTIME_DIR` or the system temporary directory. */
|
|
579
|
+
export declare const RELAY_REGISTRY_DIRECTORY_NAME = "foldkit-devtools-relays";
|
|
580
|
+
/** Environment variable that sets the relay registry directory. */
|
|
581
|
+
export declare const RELAY_REGISTRY_DIRECTORY_VARIABLE = "FOLDKIT_DEVTOOLS_RELAY_DIRECTORY";
|
|
582
|
+
/**
|
|
583
|
+
* Record published while a Vite relay listens. `root` selects the project;
|
|
584
|
+
* `id` distinguishes a restarted relay from the one it replaced.
|
|
585
|
+
*/
|
|
586
|
+
export declare const RelayRecord: Schema.Struct<{
|
|
587
|
+
readonly version: Schema.Literal<1>;
|
|
588
|
+
readonly id: Schema.String;
|
|
589
|
+
readonly root: Schema.String;
|
|
590
|
+
readonly url: Schema.String;
|
|
591
|
+
readonly pid: Schema.Number;
|
|
592
|
+
readonly startedAt: Schema.Number;
|
|
593
|
+
}>;
|
|
594
|
+
/** Decoded record for a running DevTools MCP relay. */
|
|
595
|
+
export type RelayRecord = typeof RelayRecord.Type;
|
|
576
596
|
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/devTools/protocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/devTools/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -186,3 +186,22 @@ export const EventFrame = Schema.Struct({
|
|
|
186
186
|
maybeConnectionId: Schema.OptionFromNullOr(Schema.String),
|
|
187
187
|
event: Event,
|
|
188
188
|
});
|
|
189
|
+
// RELAY REGISTRY
|
|
190
|
+
/** Increment when the relay record's wire format changes. */
|
|
191
|
+
export const RELAY_RECORD_VERSION = 1;
|
|
192
|
+
/** Directory name under `XDG_RUNTIME_DIR` or the system temporary directory. */
|
|
193
|
+
export const RELAY_REGISTRY_DIRECTORY_NAME = 'foldkit-devtools-relays';
|
|
194
|
+
/** Environment variable that sets the relay registry directory. */
|
|
195
|
+
export const RELAY_REGISTRY_DIRECTORY_VARIABLE = 'FOLDKIT_DEVTOOLS_RELAY_DIRECTORY';
|
|
196
|
+
/**
|
|
197
|
+
* Record published while a Vite relay listens. `root` selects the project;
|
|
198
|
+
* `id` distinguishes a restarted relay from the one it replaced.
|
|
199
|
+
*/
|
|
200
|
+
export const RelayRecord = Schema.Struct({
|
|
201
|
+
version: Schema.Literal(RELAY_RECORD_VERSION),
|
|
202
|
+
id: Schema.String,
|
|
203
|
+
root: Schema.String,
|
|
204
|
+
url: Schema.String,
|
|
205
|
+
pid: Schema.Number,
|
|
206
|
+
startedAt: Schema.Number,
|
|
207
|
+
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { DiffValue, Event, EventFrame, KeyframeInfo, MAX_DISPATCH_BATCH_SIZE, MessageSchemaResult, MessageTagCount, ModelDiffChange, Request, RequestFrame, Response, ResponseFrame, RuntimeInfo, SerializedEntry, } from './protocol.js';
|
|
1
|
+
export { DiffValue, Event, EventFrame, KeyframeInfo, MAX_DISPATCH_BATCH_SIZE, MessageSchemaResult, MessageTagCount, ModelDiffChange, RELAY_RECORD_VERSION, RELAY_REGISTRY_DIRECTORY_NAME, RELAY_REGISTRY_DIRECTORY_VARIABLE, RelayRecord, Request, RequestFrame, Response, ResponseFrame, RuntimeInfo, SerializedEntry, } from './protocol.js';
|
|
2
2
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/devTools/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,EACL,UAAU,EACV,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/devTools/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,EACL,UAAU,EACV,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,6BAA6B,EAC7B,iCAAiC,EACjC,WAAW,EACX,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAA"}
|
package/dist/devTools/public.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { DiffValue, Event, EventFrame, KeyframeInfo, MAX_DISPATCH_BATCH_SIZE, MessageSchemaResult, MessageTagCount, ModelDiffChange, Request, RequestFrame, Response, ResponseFrame, RuntimeInfo, SerializedEntry, } from './protocol.js';
|
|
1
|
+
export { DiffValue, Event, EventFrame, KeyframeInfo, MAX_DISPATCH_BATCH_SIZE, MessageSchemaResult, MessageTagCount, ModelDiffChange, RELAY_RECORD_VERSION, RELAY_REGISTRY_DIRECTORY_NAME, RELAY_REGISTRY_DIRECTORY_VARIABLE, RelayRecord, Request, RequestFrame, Response, ResponseFrame, RuntimeInfo, SerializedEntry, } from './protocol.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/devTools/store.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/devTools/store.ts"],"names":[],"mappings":"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"}
|
package/dist/devTools/store.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Array, Effect, HashMap, HashSet, Match, Option, Predicate, Record, String, SubscriptionRef, pipe, } from 'effect';
|
|
2
|
-
import {
|
|
2
|
+
import { modifyFields } from '../struct/index.js';
|
|
3
3
|
export const INIT_INDEX = -1;
|
|
4
4
|
const DEFAULT_KEYFRAME_INTERVAL = 31;
|
|
5
5
|
const DEFAULT_MAX_ENTRIES = 100;
|
|
@@ -126,14 +126,14 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
126
126
|
const nextStartIndex = state.startIndex + keyframeInterval;
|
|
127
127
|
const isPausedAtRetainedIndex = state.pausedAtIndex >= nextStartIndex ||
|
|
128
128
|
state.pausedAtIndex === INIT_INDEX;
|
|
129
|
-
return
|
|
129
|
+
return modifyFields(state, {
|
|
130
130
|
entries: Array.drop(keyframeInterval),
|
|
131
131
|
keyframes: HashMap.remove(state.startIndex),
|
|
132
132
|
startIndex: () => nextStartIndex,
|
|
133
133
|
isPaused: isPaused => isPaused && isPausedAtRetainedIndex,
|
|
134
134
|
});
|
|
135
135
|
};
|
|
136
|
-
const recordInit = (model, commands, mountStarts = []) => SubscriptionRef.update(stateRef, state =>
|
|
136
|
+
const recordInit = (model, commands, mountStarts = []) => SubscriptionRef.update(stateRef, state => modifyFields(state, {
|
|
137
137
|
maybeInitModel: () => Option.some(model),
|
|
138
138
|
initCommands: () => commands,
|
|
139
139
|
initMountStarts: () => mountStarts,
|
|
@@ -147,7 +147,7 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
147
147
|
? computeDiff(modelBeforeUpdate, modelAfterUpdate)
|
|
148
148
|
: emptyDiff;
|
|
149
149
|
const hasChangedFields = HashSet.size(diff.changedPaths) > 0;
|
|
150
|
-
const nextState =
|
|
150
|
+
const nextState = modifyFields(state, {
|
|
151
151
|
entries: Array.append({
|
|
152
152
|
tag: message._tag,
|
|
153
153
|
message,
|
|
@@ -171,12 +171,12 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
171
171
|
}
|
|
172
172
|
});
|
|
173
173
|
const recordResolvedCommand = (id, submodelPath) => SubscriptionRef.update(stateRef, state => {
|
|
174
|
-
const updateCommands = (commands) => pipe(commands, Array.findFirstIndex(command => command.id === id), Option.flatMap(index => Array.modify(commands, index, command =>
|
|
174
|
+
const updateCommands = (commands) => pipe(commands, Array.findFirstIndex(command => command.id === id), Option.flatMap(index => Array.modify(commands, index, command => modifyFields(command, {
|
|
175
175
|
maybeSubmodelPath: () => Option.some(submodelPath),
|
|
176
176
|
}))));
|
|
177
177
|
const maybeInitCommands = updateCommands(state.initCommands);
|
|
178
178
|
if (Option.isSome(maybeInitCommands)) {
|
|
179
|
-
return
|
|
179
|
+
return modifyFields(state, {
|
|
180
180
|
initCommands: () => maybeInitCommands.value,
|
|
181
181
|
});
|
|
182
182
|
}
|
|
@@ -186,11 +186,11 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
186
186
|
}
|
|
187
187
|
const maybeEntries = Array.modify(state.entries, maybeEntryIndex.value, entry => Option.match(updateCommands(entry.commands), {
|
|
188
188
|
onNone: () => entry,
|
|
189
|
-
onSome: nextCommands =>
|
|
189
|
+
onSome: nextCommands => modifyFields(entry, { commands: () => nextCommands }),
|
|
190
190
|
}));
|
|
191
191
|
return Option.match(maybeEntries, {
|
|
192
192
|
onNone: () => state,
|
|
193
|
-
onSome: nextEntries =>
|
|
193
|
+
onSome: nextEntries => modifyFields(state, { entries: () => nextEntries }),
|
|
194
194
|
});
|
|
195
195
|
});
|
|
196
196
|
/** Attaches Mount lifecycle events from the most recent render to the
|
|
@@ -209,11 +209,11 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
209
209
|
return state;
|
|
210
210
|
}
|
|
211
211
|
return Array.match(state.entries, {
|
|
212
|
-
onEmpty: () =>
|
|
212
|
+
onEmpty: () => modifyFields(state, {
|
|
213
213
|
initMountStarts: Array.appendAll(mountStarts),
|
|
214
214
|
}),
|
|
215
|
-
onNonEmpty: entries =>
|
|
216
|
-
entries: () => Array.modifyLastNonEmpty(entries, last =>
|
|
215
|
+
onNonEmpty: entries => modifyFields(state, {
|
|
216
|
+
entries: () => Array.modifyLastNonEmpty(entries, last => modifyFields(last, {
|
|
217
217
|
mountStarts: Array.appendAll(mountStarts),
|
|
218
218
|
mountEnds: Array.appendAll(mountEnds),
|
|
219
219
|
})),
|
|
@@ -243,14 +243,14 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
243
243
|
return isTargetRetained
|
|
244
244
|
? [
|
|
245
245
|
false,
|
|
246
|
-
|
|
246
|
+
modifyFields(currentState, {
|
|
247
247
|
isPaused: () => true,
|
|
248
248
|
pausedAtIndex: () => index,
|
|
249
249
|
}),
|
|
250
250
|
]
|
|
251
251
|
: [
|
|
252
252
|
true,
|
|
253
|
-
|
|
253
|
+
modifyFields(currentState, {
|
|
254
254
|
isPaused: () => false,
|
|
255
255
|
}),
|
|
256
256
|
];
|
|
@@ -261,7 +261,7 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
261
261
|
return model;
|
|
262
262
|
});
|
|
263
263
|
const resume = Effect.gen(function* () {
|
|
264
|
-
yield* SubscriptionRef.update(stateRef, state =>
|
|
264
|
+
yield* SubscriptionRef.update(stateRef, state => modifyFields(state, {
|
|
265
265
|
isPaused: () => false,
|
|
266
266
|
}));
|
|
267
267
|
yield* bridge.markRenderPending;
|
|
@@ -274,7 +274,7 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
274
274
|
return state;
|
|
275
275
|
}
|
|
276
276
|
else {
|
|
277
|
-
return
|
|
277
|
+
return modifyFields(state, {
|
|
278
278
|
entries: () => [],
|
|
279
279
|
startIndex: () => 0,
|
|
280
280
|
pausedAtIndex: () => 0,
|
|
@@ -296,7 +296,7 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
296
296
|
onSome: ({ diff }) => diff,
|
|
297
297
|
}));
|
|
298
298
|
});
|
|
299
|
-
const updateLatestModel = (model) => SubscriptionRef.update(stateRef,
|
|
299
|
+
const updateLatestModel = (model) => SubscriptionRef.update(stateRef, modifyFields({ maybeLatestModel: () => Option.some(model) }));
|
|
300
300
|
return {
|
|
301
301
|
recordInit,
|
|
302
302
|
recordMessage,
|
|
@@ -78,7 +78,7 @@ type GuardValueOf<GuardResult> = [GuardResult] extends [boolean] ? void : Option
|
|
|
78
78
|
* The transition table: for each source state tag, the Messages it responds
|
|
79
79
|
* to and the Edge (or ordered guard list) each Message fires. States absent
|
|
80
80
|
* from the table, and Messages absent from a state's `on` record, are
|
|
81
|
-
* ignored:
|
|
81
|
+
* ignored: `Machine.step` reports them as `Ignored` rather than
|
|
82
82
|
* transitioning.
|
|
83
83
|
*
|
|
84
84
|
* @experimental Ships from `foldkit/experimental/machine`; expect breaking changes while the API settles.
|
|
@@ -190,8 +190,8 @@ export declare const otherwise: <State extends Tagged, Message extends Tagged, S
|
|
|
190
190
|
/**
|
|
191
191
|
* Declares that a Message is intentionally ignored when every preceding
|
|
192
192
|
* {@link when} guard declines. Evaluation stops at this fallback, and
|
|
193
|
-
*
|
|
194
|
-
* reported by
|
|
193
|
+
* `Machine.step` reports `ExplicitlyIgnored`. Edges listed after it are
|
|
194
|
+
* reported by `Machine.deadTransitions` as `ShadowedByIgnore`.
|
|
195
195
|
*
|
|
196
196
|
* @experimental Ships from `foldkit/experimental/machine`; expect breaking changes while the API settles.
|
|
197
197
|
*/
|
|
@@ -340,7 +340,7 @@ export type FoldConfig<ParentModel, State extends Tagged, Message extends Tagged
|
|
|
340
340
|
* machine: uploadMachine,
|
|
341
341
|
* read: (model: Model) => Option.some(model.upload),
|
|
342
342
|
* write: (model, nextUpload) =>
|
|
343
|
-
*
|
|
343
|
+
* modifyFields(model, { upload: () => nextUpload }),
|
|
344
344
|
* context: model => model.uploadQueues,
|
|
345
345
|
* })
|
|
346
346
|
*
|
|
@@ -106,8 +106,8 @@ export const otherwise = (edge) => ({
|
|
|
106
106
|
/**
|
|
107
107
|
* Declares that a Message is intentionally ignored when every preceding
|
|
108
108
|
* {@link when} guard declines. Evaluation stops at this fallback, and
|
|
109
|
-
*
|
|
110
|
-
* reported by
|
|
109
|
+
* `Machine.step` reports `ExplicitlyIgnored`. Edges listed after it are
|
|
110
|
+
* reported by `Machine.deadTransitions` as `ShadowedByIgnore`.
|
|
111
111
|
*
|
|
112
112
|
* @experimental Ships from `foldkit/experimental/machine`; expect breaking changes while the API settles.
|
|
113
113
|
*/
|
|
@@ -133,7 +133,7 @@ const transitionFoldedMachine = (config, model, state, message) => {
|
|
|
133
133
|
* machine: uploadMachine,
|
|
134
134
|
* read: (model: Model) => Option.some(model.upload),
|
|
135
135
|
* write: (model, nextUpload) =>
|
|
136
|
-
*
|
|
136
|
+
* modifyFields(model, { upload: () => nextUpload }),
|
|
137
137
|
* context: model => model.uploadQueues,
|
|
138
138
|
* })
|
|
139
139
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/experimental/server/serialize.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAGpD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAC,CAAA;AAsNF;;;GAGG;AACH,eAAO,MAAM,UAAU,UAAW,MAAM,KAAG,MAM1C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UAAW,MAAM,KAAG,MAMpD,CAAA;AA0MD,eAAO,MAAM,sBAAsB,eACrB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,KACxD,MAAM,GAAG,SAMX,CAAA;
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/experimental/server/serialize.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAGpD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAC,CAAA;AAsNF;;;GAGG;AACH,eAAO,MAAM,UAAU,UAAW,MAAM,KAAG,MAM1C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UAAW,MAAM,KAAG,MAMpD,CAAA;AA0MD,eAAO,MAAM,sBAAsB,eACrB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,KACxD,MAAM,GAAG,SAMX,CAAA;AAsmBD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,SAClB,KAAK,GAAG,IAAI,YACR,gBAAgB,KACzB,MA2BF,CAAA"}
|
|
@@ -406,21 +406,58 @@ const leadingTextOf = (node) => {
|
|
|
406
406
|
}
|
|
407
407
|
return undefined;
|
|
408
408
|
};
|
|
409
|
-
// NOTE:
|
|
410
|
-
//
|
|
411
|
-
//
|
|
412
|
-
//
|
|
413
|
-
//
|
|
409
|
+
// NOTE: a view nested thousands of elements deep, typically from mapping
|
|
410
|
+
// untrusted hierarchical data straight to markup, is refused. The depth limit
|
|
411
|
+
// sits well above any real view, so a hostile input becomes a typed
|
|
412
|
+
// SerializationError. The limit is enforced by a pass that does not recurse,
|
|
413
|
+
// before the serializer walks the tree, so the refusal does not depend on how
|
|
414
|
+
// much call stack the runtime has or the caller has already used. Walks that
|
|
415
|
+
// still recurse, such as `hasOptionDescendant` and the parse5 checks in
|
|
416
|
+
// `server.ts`, are bounded by it for elements the view builds. Content inside a
|
|
417
|
+
// trusted `h.InnerHTML` is not counted.
|
|
414
418
|
const MAX_RENDER_DEPTH = 1000;
|
|
415
|
-
const
|
|
416
|
-
const
|
|
419
|
+
const assertWithinRenderDepth = (root) => {
|
|
420
|
+
const pendingEntries = [
|
|
421
|
+
{ node: root, depth: 0 },
|
|
422
|
+
];
|
|
423
|
+
for (let entry = pendingEntries.pop(); entry !== undefined; entry = pendingEntries.pop()) {
|
|
424
|
+
const { depth, node } = entry;
|
|
425
|
+
if (depth > MAX_RENDER_DEPTH) {
|
|
426
|
+
throw new Error(`[foldkit] renderToString exceeded the maximum render depth of ${MAX_RENDER_DEPTH}. ` +
|
|
427
|
+
'A view nesting elements this deeply, often from mapping untrusted ' +
|
|
428
|
+
'hierarchical data straight to markup, is refused to protect the ' +
|
|
429
|
+
'render stack.');
|
|
430
|
+
}
|
|
431
|
+
if (typeof node === 'string') {
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
const { children } = node;
|
|
435
|
+
if (children !== undefined) {
|
|
436
|
+
const childDepth = depth + 1;
|
|
437
|
+
for (const child of children) {
|
|
438
|
+
pendingEntries.push({ node: child, depth: childDepth });
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
};
|
|
443
|
+
const scheduleContent = (output, workStack, node, closeElementStep) => {
|
|
444
|
+
const { childSelectValue } = closeElementStep;
|
|
445
|
+
const { children } = node;
|
|
417
446
|
if (children !== undefined) {
|
|
418
|
-
|
|
419
|
-
|
|
447
|
+
workStack.push(closeElementStep);
|
|
448
|
+
for (let index = children.length - 1; index >= 0; index--) {
|
|
449
|
+
workStack.push({
|
|
450
|
+
_tag: 'VisitNode',
|
|
451
|
+
node: Array.getUnsafe(children, index),
|
|
452
|
+
selectValue: childSelectValue,
|
|
453
|
+
});
|
|
420
454
|
}
|
|
421
455
|
}
|
|
422
|
-
else
|
|
423
|
-
|
|
456
|
+
else {
|
|
457
|
+
if (node.text !== undefined) {
|
|
458
|
+
output.push(escapeText(node.text));
|
|
459
|
+
}
|
|
460
|
+
workStack.push(closeElementStep);
|
|
424
461
|
}
|
|
425
462
|
};
|
|
426
463
|
// NOTE: an option without a value prop falls back to its label the way the
|
|
@@ -552,7 +589,7 @@ const selectValueForChildren = (tagName, node, inherited) => {
|
|
|
552
589
|
}
|
|
553
590
|
return undefined;
|
|
554
591
|
};
|
|
555
|
-
const
|
|
592
|
+
const openElement = (output, context, workStack, node, selector, extraAttributes, selectValue) => {
|
|
556
593
|
const authoredTagName = tagNameFromSelector(selector);
|
|
557
594
|
if (!TAG_NAME_PATTERN.test(authoredTagName)) {
|
|
558
595
|
throw new Error(`[foldkit] Cannot serialize the invalid tag name "${authoredTagName}". Tag ` +
|
|
@@ -663,6 +700,12 @@ const serializeElement = (output, context, node, selector, depth, extraAttribute
|
|
|
663
700
|
const childSelectValue = isForeignNamespace
|
|
664
701
|
? undefined
|
|
665
702
|
: selectValueForChildren(tagName, node, selectValue);
|
|
703
|
+
const closeElementStep = {
|
|
704
|
+
_tag: 'CloseElement',
|
|
705
|
+
tagName,
|
|
706
|
+
childSelectValue,
|
|
707
|
+
selectValue,
|
|
708
|
+
};
|
|
666
709
|
const isHtmlRawText = !isForeignNamespace && RAW_TEXT_ELEMENTS.has(tagName);
|
|
667
710
|
const isHtmlRcdata = !isForeignNamespace && RCDATA_ELEMENTS.has(tagName);
|
|
668
711
|
const innerHtml = data?.props?.['innerHTML'];
|
|
@@ -689,6 +732,7 @@ const serializeElement = (output, context, node, selector, depth, extraAttribute
|
|
|
689
732
|
output.push('\n');
|
|
690
733
|
}
|
|
691
734
|
output.push(innerHtml);
|
|
735
|
+
workStack.push(closeElementStep);
|
|
692
736
|
}
|
|
693
737
|
else if (!isForeignNamespace && tagName === 'textarea') {
|
|
694
738
|
const content = controlledValueContent(data?.props);
|
|
@@ -697,12 +741,13 @@ const serializeElement = (output, context, node, selector, depth, extraAttribute
|
|
|
697
741
|
output.push('\n');
|
|
698
742
|
}
|
|
699
743
|
output.push(escapeText(content));
|
|
744
|
+
workStack.push(closeElementStep);
|
|
700
745
|
}
|
|
701
746
|
else {
|
|
702
747
|
if (leadingTextOf(node)?.startsWith('\n')) {
|
|
703
748
|
output.push('\n');
|
|
704
749
|
}
|
|
705
|
-
|
|
750
|
+
scheduleContent(output, workStack, node, closeElementStep);
|
|
706
751
|
}
|
|
707
752
|
}
|
|
708
753
|
else if (!isForeignNamespace && tagName === 'output') {
|
|
@@ -712,16 +757,17 @@ const serializeElement = (output, context, node, selector, depth, extraAttribute
|
|
|
712
757
|
const content = controlledValueContent(data?.props);
|
|
713
758
|
if (content !== undefined) {
|
|
714
759
|
output.push(escapeText(content));
|
|
760
|
+
workStack.push(closeElementStep);
|
|
715
761
|
}
|
|
716
762
|
else {
|
|
717
|
-
|
|
763
|
+
scheduleContent(output, workStack, node, closeElementStep);
|
|
718
764
|
}
|
|
719
765
|
}
|
|
720
766
|
else if (!isForeignNamespace && NEWLINE_DROPPING_ELEMENTS.has(tagName)) {
|
|
721
767
|
if (leadingTextOf(node)?.startsWith('\n')) {
|
|
722
768
|
output.push('\n');
|
|
723
769
|
}
|
|
724
|
-
|
|
770
|
+
scheduleContent(output, workStack, node, closeElementStep);
|
|
725
771
|
}
|
|
726
772
|
else if (isHtmlRawText) {
|
|
727
773
|
const rawText = collectRawText(node);
|
|
@@ -730,10 +776,14 @@ const serializeElement = (output, context, node, selector, depth, extraAttribute
|
|
|
730
776
|
assertNoscriptTextIsSafe(rawText);
|
|
731
777
|
}
|
|
732
778
|
output.push(rawText);
|
|
779
|
+
workStack.push(closeElementStep);
|
|
733
780
|
}
|
|
734
781
|
else {
|
|
735
|
-
|
|
782
|
+
scheduleContent(output, workStack, node, closeElementStep);
|
|
736
783
|
}
|
|
784
|
+
};
|
|
785
|
+
const closeElement = (output, closeElementStep) => {
|
|
786
|
+
const { childSelectValue, selectValue, tagName } = closeElementStep;
|
|
737
787
|
if (childSelectValue !== undefined &&
|
|
738
788
|
childSelectValue !== selectValue &&
|
|
739
789
|
!childSelectValue.consumed &&
|
|
@@ -747,16 +797,7 @@ const serializeElement = (output, context, node, selector, depth, extraAttribute
|
|
|
747
797
|
}
|
|
748
798
|
output.push(`</${tagName}>`);
|
|
749
799
|
};
|
|
750
|
-
const
|
|
751
|
-
if (depth > MAX_RENDER_DEPTH) {
|
|
752
|
-
throw new Error(`[foldkit] renderToString exceeded the maximum render depth of ${MAX_RENDER_DEPTH}. ` +
|
|
753
|
-
'A view nesting elements this deeply, often from mapping untrusted ' +
|
|
754
|
-
'hierarchical data straight to markup, is refused to protect the ' +
|
|
755
|
-
'render stack.');
|
|
756
|
-
}
|
|
757
|
-
if (node === null) {
|
|
758
|
-
return;
|
|
759
|
-
}
|
|
800
|
+
const visitNode = (output, context, workStack, node, extraAttributes, selectValue) => {
|
|
760
801
|
if (typeof node === 'string') {
|
|
761
802
|
output.push(escapeText(node));
|
|
762
803
|
return;
|
|
@@ -774,7 +815,7 @@ const serializeNode = (output, context, node, depth, extraAttributes, selectValu
|
|
|
774
815
|
output.push(`<!--${commentText}-->`);
|
|
775
816
|
return;
|
|
776
817
|
}
|
|
777
|
-
|
|
818
|
+
openElement(output, context, workStack, node, selector, extraAttributes, selectValue);
|
|
778
819
|
};
|
|
779
820
|
/** Serializes a view-produced vnode tree to an HTML string. Event handlers and
|
|
780
821
|
* hooks are behavior, not markup, and are skipped; attrs, class, dataset,
|
|
@@ -793,10 +834,27 @@ export const serializeHtml = (root, options) => {
|
|
|
793
834
|
if (root === null) {
|
|
794
835
|
return '<!---->';
|
|
795
836
|
}
|
|
837
|
+
assertWithinRenderDepth(root);
|
|
796
838
|
const context = {
|
|
797
839
|
emitHydrationMarkers: options?.emitHydrationMarkers ?? false,
|
|
798
840
|
};
|
|
799
841
|
const output = [];
|
|
800
|
-
|
|
842
|
+
const workStack = [
|
|
843
|
+
{
|
|
844
|
+
_tag: 'VisitNode',
|
|
845
|
+
node: root,
|
|
846
|
+
selectValue: undefined,
|
|
847
|
+
extraAttributes: options?.rootAttributes,
|
|
848
|
+
},
|
|
849
|
+
];
|
|
850
|
+
for (let step = workStack.pop(); step !== undefined; step = workStack.pop()) {
|
|
851
|
+
if (step._tag === 'VisitNode') {
|
|
852
|
+
const { node, extraAttributes, selectValue } = step;
|
|
853
|
+
visitNode(output, context, workStack, node, extraAttributes, selectValue);
|
|
854
|
+
}
|
|
855
|
+
else {
|
|
856
|
+
closeElement(output, step);
|
|
857
|
+
}
|
|
858
|
+
}
|
|
801
859
|
return output.join('');
|
|
802
860
|
};
|