@nodegx/mcp 0.2.7 → 0.2.8
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 +6 -4
- package/dist/backend/cli.js +716 -495
- package/dist/cloud-bundle.cjs +98 -40
- package/dist/kit-extract.cjs +212 -9
- package/dist/kit-extract.inputs.json +1 -0
- package/dist/node-catalog.json +7 -7
- package/dist/noodl-mcp.cjs +3000 -1636
- package/dist/package.json +1 -1
- package/dist/render-harness/data/node-catalog-enriched.json +355 -16
- package/dist/render-harness/data/node-catalog.json +7 -7
- package/dist/render-harness/drive-steps.js +75 -19
- package/dist/src/external/viewer/noodl.viewer.js +1 -1
- package/package.json +1 -1
package/dist/cloud-bundle.cjs
CHANGED
|
@@ -67829,7 +67829,7 @@ var init_node_catalog = __esm({
|
|
|
67829
67829
|
"always: the size it holds now, a bare number read in the unit it held; drawn at the next paint"
|
|
67830
67830
|
],
|
|
67831
67831
|
visible: [
|
|
67832
|
-
"always: shown or hidden at
|
|
67832
|
+
"always: shown or hidden at once, its space kept; hidden, a Focus does not reach it"
|
|
67833
67833
|
]
|
|
67834
67834
|
},
|
|
67835
67835
|
warnings: {
|
|
@@ -70014,7 +70014,7 @@ var init_node_catalog = __esm({
|
|
|
70014
70014
|
"always: the page, or the scrolling Group holding it, scrolls until the box can be seen"
|
|
70015
70015
|
],
|
|
70016
70016
|
visible: [
|
|
70017
|
-
"always: shown or hidden at
|
|
70017
|
+
"always: shown or hidden at once, its space kept; hidden, a Focus does not reach it"
|
|
70018
70018
|
]
|
|
70019
70019
|
},
|
|
70020
70020
|
warnings: {
|
|
@@ -72626,7 +72626,7 @@ var init_node_catalog = __esm({
|
|
|
72626
72626
|
"always: the size it holds now, a bare number read in the unit it held; drawn at the next paint"
|
|
72627
72627
|
],
|
|
72628
72628
|
visible: [
|
|
72629
|
-
"always: shown or hidden at
|
|
72629
|
+
"always: shown or hidden at once, its space kept; hidden, a Focus does not reach it"
|
|
72630
72630
|
]
|
|
72631
72631
|
},
|
|
72632
72632
|
warnings: {
|
|
@@ -74808,7 +74808,7 @@ var init_node_catalog = __esm({
|
|
|
74808
74808
|
"always: the page, or the scrolling Group holding it, scrolls until the button can be seen"
|
|
74809
74809
|
],
|
|
74810
74810
|
visible: [
|
|
74811
|
-
"always: shown or hidden at
|
|
74811
|
+
"always: shown or hidden at once, its space kept; hidden, it takes no click and a Focus does not reach it"
|
|
74812
74812
|
]
|
|
74813
74813
|
},
|
|
74814
74814
|
warnings: {
|
|
@@ -77213,7 +77213,7 @@ var init_node_catalog = __esm({
|
|
|
77213
77213
|
"always: the size it holds now, a bare number read in the unit it held; drawn at the next paint"
|
|
77214
77214
|
],
|
|
77215
77215
|
visible: [
|
|
77216
|
-
"always: shown or hidden at
|
|
77216
|
+
"always: shown or hidden at once, its space kept; hidden, a Focus does not reach it"
|
|
77217
77217
|
]
|
|
77218
77218
|
},
|
|
77219
77219
|
warnings: {
|
|
@@ -80083,7 +80083,7 @@ var init_node_catalog = __esm({
|
|
|
80083
80083
|
"always: the size it holds now, a bare number read in the unit it held; drawn at the next paint"
|
|
80084
80084
|
],
|
|
80085
80085
|
visible: [
|
|
80086
|
-
"always: shown or hidden at
|
|
80086
|
+
"always: shown or hidden at once, its space kept; hidden, a Focus does not reach it"
|
|
80087
80087
|
],
|
|
80088
80088
|
opacity: [
|
|
80089
80089
|
"always: how see-through it is; at exactly 0 it takes no pointer, and an act goes to what is behind it"
|
|
@@ -84925,7 +84925,7 @@ var init_node_catalog = __esm({
|
|
|
84925
84925
|
},
|
|
84926
84926
|
isSignal: false,
|
|
84927
84927
|
default: false,
|
|
84928
|
-
description: "Whether a request with no valid session token is allowed to run this function at all"
|
|
84928
|
+
description: "Whether a request with no valid session token is allowed to run this function at all. A run the app starts itself \u2014 a schedule, a row change, a run from Studio \u2014 is always allowed and sees nobody signed in; a webhook is a request like any other"
|
|
84929
84929
|
},
|
|
84930
84930
|
{
|
|
84931
84931
|
name: "params",
|
|
@@ -111800,7 +111800,10 @@ var init_cloud_request = __esm({
|
|
|
111800
111800
|
{ headers: { "X-Parse-Session-Token": "t1", origin: "null", host: "h" } },
|
|
111801
111801
|
{ headers: { "x-parse-session-token": "t1" }, body: '{"a":null}', at: 100 },
|
|
111802
111802
|
{ headers: { host: "internal:8577", "x-forwarded-host": "public.example.com", "x-forwarded-proto": "https, http" }, body: '{"total":"7"}' },
|
|
111803
|
-
{ headers: { origin: ["https://app.example.com/", "https://b.example"], "x-forwarded-proto": "jAvascript", host: "h" }, body: "{}" }
|
|
111803
|
+
{ headers: { origin: ["https://app.example.com/", "https://b.example"], "x-forwarded-proto": "jAvascript", host: "h" }, body: "{}" },
|
|
111804
|
+
{ headers: {}, body: '{"total":3}', startedByApp: true },
|
|
111805
|
+
{ headers: { "x-parse-session-token": "t1" }, body: "{}", startedByApp: true },
|
|
111806
|
+
{ headers: { startedbyapp: "true" }, body: '{"startedByApp":true}' }
|
|
111804
111807
|
];
|
|
111805
111808
|
CLOUD = { appId: "app", masterKey: "mk", endpoint: "https://be.example" };
|
|
111806
111809
|
HOSTS3 = [{}];
|
|
@@ -111811,7 +111814,7 @@ var init_cloud_request = __esm({
|
|
|
111811
111814
|
HOSTS3.push({ invocation: invocations[0], cloudServices: { ...CLOUD, runId: "run-1" } });
|
|
111812
111815
|
CloudRequest = defineNode({
|
|
111813
111816
|
type: "noodl.cloud.request",
|
|
111814
|
-
version:
|
|
111817
|
+
version: 4,
|
|
111815
111818
|
changes: [
|
|
111816
111819
|
{
|
|
111817
111820
|
version: 2,
|
|
@@ -111824,6 +111827,12 @@ var init_cloud_request = __esm({
|
|
|
111824
111827
|
says: "User Id is text (it carries the id of the person the session token resolved to). It was declared a flag, so a wire into a Number read the id as NaN and the canvas offered it to a signal input",
|
|
111825
111828
|
row: "P107-S97-USERIDBOOLEAN (the Beta sweep s6)",
|
|
111826
111829
|
migration: { none: "No saved wire stops connecting: measured 106 wires from User Id in 13,839 project files, 70 into script inputs (any type), 35 into text ports, 1 into a record field, none into a signal" }
|
|
111830
|
+
},
|
|
111831
|
+
{
|
|
111832
|
+
version: 4,
|
|
111833
|
+
says: "A run the app starts itself \u2014 a schedule, a row change, a run from Studio \u2014 is not refused when Allow Unauthenticated is off: it runs with nobody signed in. It was refused, so a weekly job could only run a function opened to everyone. A webhook and a direct call are refused as before",
|
|
111834
|
+
row: "P127-BKO006-SCHEDULEAUTH (Richard ruled 2026-10-27: a run the app starts itself counts as the app)",
|
|
111835
|
+
migration: { none: "Nothing a project stores changes: only a run the backend marks as started by the app gets a different answer, and it gets the one its author had to open the function to everyone to get" }
|
|
111827
111836
|
}
|
|
111828
111837
|
],
|
|
111829
111838
|
source: "packages/noodl-viewer-cloud/src/nodes/cloud/request.ts; packages/noodl-viewer-cloud/src/nodes/cloud/requestContract.ts; packages/noodl-viewer-cloud/src/nodes/cloud/requestOrigin.ts; packages/noodl-viewer-cloud/src/services/userservice.js",
|
|
@@ -111850,7 +111859,7 @@ var init_cloud_request = __esm({
|
|
|
111850
111859
|
state: { contract: {}, authenticated: void 0, authUserId: void 0, origin: void 0, requestParameters: {}, waiting: void 0 },
|
|
111851
111860
|
inputs: {
|
|
111852
111861
|
// :154-163 — held raw, read when the request comes and again when its lookup fails
|
|
111853
|
-
allowNoAuth: { type: "boolean", default: false, coerce: "none", displayName: "Allow Unauthenticated", group: "General", description: "Whether a request with no valid session token is allowed to run this function at all", examples: [true, false, "false", 1] },
|
|
111862
|
+
allowNoAuth: { type: "boolean", default: false, coerce: "none", displayName: "Allow Unauthenticated", group: "General", description: "Whether a request with no valid session token is allowed to run this function at all. A run the app starts itself \u2014 a schedule, a row change, a run from Studio \u2014 is always allowed and sees nobody signed in; a webhook is a request like any other", examples: [true, false, "false", 1] },
|
|
111854
111863
|
// :164-172 — held raw
|
|
111855
111864
|
params: { type: "stringlist", coerce: "none", editOnly: true, group: "Parameters", description: "Names to pull out of the request body, each becoming an output \u2014 and a Type, Required and Default row to declare what it is", examples: ["total", "total,a", "a,0", "0,1", ""] }
|
|
111856
111865
|
},
|
|
@@ -111897,7 +111906,7 @@ var init_cloud_request = __esm({
|
|
|
111897
111906
|
}
|
|
111898
111907
|
const waiting = { params, headers: req.headers };
|
|
111899
111908
|
if (!token) {
|
|
111900
|
-
if (!i.allowNoAuth) return { send: [], answers: [{ op: "refuse", reason: UNAUTHENTICATED }] };
|
|
111909
|
+
if (!i.allowNoAuth && req.startedByApp !== true) return { send: [], answers: [{ op: "refuse", reason: UNAUTHENTICATED }] };
|
|
111901
111910
|
return proceed(s, params, req.headers, i, w, { set: {}, send: [] });
|
|
111902
111911
|
}
|
|
111903
111912
|
const cloud = w.hostCloud();
|
|
@@ -120916,6 +120925,23 @@ var init_wired_grow = __esm({
|
|
|
120916
120925
|
}
|
|
120917
120926
|
});
|
|
120918
120927
|
|
|
120928
|
+
// ../nodegx-node-spec/src/nodes/visible-at-once.ts
|
|
120929
|
+
function visibleAtOnceChange(version) {
|
|
120930
|
+
return {
|
|
120931
|
+
version,
|
|
120932
|
+
says: "No app does anything differently. Visible shows or hides the control at once: a Focus sent in the same moment as Visible going on reaches it (Focused fires), and one sent as Visible goes off does nothing. The version before said Visible waited for the next paint, so it lost the first Focus and kept the second; the runtime never did either",
|
|
120933
|
+
row: "BETA-S7-DROPDOWNFOCUSDIVERGE",
|
|
120934
|
+
migration: {
|
|
120935
|
+
none: "The runtime did not change; only the spec stopped saying Visible waits for the next paint. No stored project changes"
|
|
120936
|
+
}
|
|
120937
|
+
};
|
|
120938
|
+
}
|
|
120939
|
+
var init_visible_at_once = __esm({
|
|
120940
|
+
"../nodegx-node-spec/src/nodes/visible-at-once.ts"() {
|
|
120941
|
+
"use strict";
|
|
120942
|
+
}
|
|
120943
|
+
});
|
|
120944
|
+
|
|
120919
120945
|
// ../nodegx-node-spec/src/nodes/button.ts
|
|
120920
120946
|
function painted(s) {
|
|
120921
120947
|
const set = { ...s.pageEnabled === s.enabled ? {} : { pageEnabled: s.enabled }, ...s.pageVisible === s.visible ? {} : { pageVisible: s.visible } };
|
|
@@ -120966,6 +120992,7 @@ var init_button = __esm({
|
|
|
120966
120992
|
init_icon_source();
|
|
120967
120993
|
init_repeat_while_saving();
|
|
120968
120994
|
init_wired_grow();
|
|
120995
|
+
init_visible_at_once();
|
|
120969
120996
|
NONE = { send: [] };
|
|
120970
120997
|
Button = defineNode({
|
|
120971
120998
|
type: "net.noodl.controls.button",
|
|
@@ -120973,8 +121000,9 @@ var init_button = __esm({
|
|
|
120973
121000
|
// v3 (P109 ISL-031, P107-D30 ruled "Reset and announce"): a control leaving the page (Mounted off) takes Focused, Hover and Pressed with it — each goes false, sent if it was true, with Blurred and Hover End for the ones that were on
|
|
120974
121001
|
// v4 (NSP-019 R35): a Focus that finds the node off the page shows as its warning until a Focus reaches it, and an Icon Source that is not an icon shows as one until an icon or nothing arrives (`diagnostics`)
|
|
120975
121002
|
// v5 (NSP-019 R38): a wired Width in a row, or a wired Height in a column, that is a percent shows as its warning (wired-grow.ts)
|
|
120976
|
-
|
|
120977
|
-
|
|
121003
|
+
// v7 (BETA-S7-DROPDOWNFOCUSDIVERGE, the spec correcting itself): Visible reaches the element at once, so a Focus in the same frame meets it (visible-at-once.ts)
|
|
121004
|
+
version: 7,
|
|
121005
|
+
changes: [focusAndIconSourceChange(4), growChange(5), repeatWhileSavingChange(6, "click"), visibleAtOnceChange(7)],
|
|
120978
121006
|
diagnostics: { ...focusDiagnostics(controlFocusNotMounted("button")), ...iconSourceDiagnostics(), ...wiredGrowDiagnostic },
|
|
120979
121007
|
source: "packages/noodl-viewer-react/src/nodes/controls/button.ts",
|
|
120980
121008
|
needs: ["person"],
|
|
@@ -121160,8 +121188,9 @@ var init_button = __esm({
|
|
|
121160
121188
|
// NSP-019 R38 — node.ts :446-458, react-component-node.ts :706-753 (wired-grow.ts)
|
|
121161
121189
|
width: sizeReducer("width"),
|
|
121162
121190
|
height: sizeReducer("height"),
|
|
121163
|
-
// node-shared-port-definitions.ts :
|
|
121164
|
-
|
|
121191
|
+
// node-shared-port-definitions.ts :374-388 — written onto the element at once, so a Focus in the same frame meets it
|
|
121192
|
+
// (visible-at-once.ts)
|
|
121193
|
+
visible: (_s, v) => ({ says: "always: shown or hidden at once, its space kept; hidden, a Focus does not reach it", set: { visible: !!v, pageVisible: !!v }, send: [] })
|
|
121165
121194
|
},
|
|
121166
121195
|
{
|
|
121167
121196
|
// placed on the page with its params set — the first paint (react-component-node.ts :1740-1743 reads `wantsToBeMounted`):
|
|
@@ -121243,6 +121272,7 @@ var init_checkbox = __esm({
|
|
|
121243
121272
|
init_trace();
|
|
121244
121273
|
init_focus_not_mounted();
|
|
121245
121274
|
init_icon_source();
|
|
121275
|
+
init_visible_at_once();
|
|
121246
121276
|
NONE2 = { send: [] };
|
|
121247
121277
|
Checkbox = defineNode({
|
|
121248
121278
|
type: "net.noodl.controls.checkbox",
|
|
@@ -121251,8 +121281,9 @@ var init_checkbox = __esm({
|
|
|
121251
121281
|
// v3 (P109 ISL-031, P107-C64 ruled "Ignore touches, keep hover"): a finger on a disabled control reports nothing — no Pressed, no Pointer Down or Up — as Enabled promises; the pointer's hover still reports
|
|
121252
121282
|
// v4 (P109 ISL-031, P107-D30 ruled "Reset and announce"): a control leaving the page (Mounted off) takes Focused, Hover and Pressed with it — each goes false, sent if it was true, with Blurred and Hover End for the ones that were on
|
|
121253
121283
|
// v5 (NSP-019 R35): a Focus that finds the node off the page shows as its warning until a Focus reaches it, and an Icon Source that is not an icon shows as one until an icon or nothing arrives (`diagnostics`)
|
|
121254
|
-
|
|
121255
|
-
|
|
121284
|
+
// v6 (BETA-S7-DROPDOWNFOCUSDIVERGE, the spec correcting itself): Visible reaches the element at once, so a Focus in the same frame meets it (visible-at-once.ts)
|
|
121285
|
+
version: 6,
|
|
121286
|
+
changes: [focusAndIconSourceChange(5), visibleAtOnceChange(6)],
|
|
121256
121287
|
diagnostics: { ...focusDiagnostics(controlFocusNotMounted("checkbox")), ...iconSourceDiagnostics() },
|
|
121257
121288
|
source: "packages/noodl-viewer-react/src/nodes/controls/checkbox.ts",
|
|
121258
121289
|
needs: ["person"],
|
|
@@ -121436,8 +121467,9 @@ var init_checkbox = __esm({
|
|
|
121436
121467
|
return { says: "it holds the keyboard: it is taken off it, and the Focused state goes false", set: { focused: false, elementFocused: false }, send: ["focusState"], emit: ["onBlur"], outcome: "done" };
|
|
121437
121468
|
},
|
|
121438
121469
|
scrollIntoView: () => ({ says: "always: the page, or the scrolling Group holding it, scrolls until the box can be seen", send: [] }),
|
|
121439
|
-
// node-shared-port-definitions.ts :
|
|
121440
|
-
|
|
121470
|
+
// node-shared-port-definitions.ts :374-388 — written onto the element at once, so a Focus in the same frame meets it
|
|
121471
|
+
// (visible-at-once.ts)
|
|
121472
|
+
visible: (_s, v) => ({ says: "always: shown or hidden at once, its space kept; hidden, a Focus does not reach it", set: { visible: !!v, pageVisible: !!v }, send: [] })
|
|
121441
121473
|
},
|
|
121442
121474
|
{
|
|
121443
121475
|
world: { place: (s) => painted2(s) },
|
|
@@ -121718,6 +121750,7 @@ var init_text_input = __esm({
|
|
|
121718
121750
|
init_repeat_while_saving();
|
|
121719
121751
|
init_data_attributes();
|
|
121720
121752
|
init_wired_grow();
|
|
121753
|
+
init_visible_at_once();
|
|
121721
121754
|
after2 = (s, w) => ({ ...s, ...w.set });
|
|
121722
121755
|
NOTHING = { send: [] };
|
|
121723
121756
|
NONE3 = { send: [] };
|
|
@@ -121741,8 +121774,9 @@ var init_text_input = __esm({
|
|
|
121741
121774
|
// v6 (P109 ISL-031, P107-D30 ruled "Reset and announce"): a control leaving the page (Mounted off) takes Focused, Hover and Pressed with it — each goes false, sent if it was true, with Blurred and Hover End for the ones that were on
|
|
121742
121775
|
// v7 (NSP-019 R35): a Focus that finds the node off the page shows as its warning until a Focus reaches it, and an Icon Source that is not an icon shows as one until an icon or nothing arrives (`diagnostics`)
|
|
121743
121776
|
// v8 (NSP-019 R38): a wired Width in a row, or a wired Height in a column, that is a percent shows as its warning (wired-grow.ts)
|
|
121744
|
-
|
|
121745
|
-
|
|
121777
|
+
// v10 (BETA-S7-DROPDOWNFOCUSDIVERGE, the spec correcting itself): Visible reaches the element at once, so a Focus in the same frame meets it (visible-at-once.ts)
|
|
121778
|
+
version: 10,
|
|
121779
|
+
changes: [focusAndIconSourceChange(7), growChange(8), repeatWhileSavingChange(9, "Enter"), visibleAtOnceChange(10)],
|
|
121746
121780
|
diagnostics: { ...focusDiagnostics(FIELD_FOCUS_NOT_MOUNTED), ...iconSourceDiagnostics(), ...wiredGrowDiagnostic },
|
|
121747
121781
|
source: "packages/noodl-viewer-react/src/nodes/controls/text-input.ts",
|
|
121748
121782
|
needs: ["person"],
|
|
@@ -122063,9 +122097,10 @@ var init_text_input = __esm({
|
|
|
122063
122097
|
// NSP-019 R38 — node.ts :446-458, react-component-node.ts :706-753 (wired-grow.ts)
|
|
122064
122098
|
width: sizeReducer("width"),
|
|
122065
122099
|
height: sizeReducer("height"),
|
|
122066
|
-
// node-shared-port-definitions.ts :
|
|
122067
|
-
// Opacity the
|
|
122068
|
-
|
|
122100
|
+
// node-shared-port-definitions.ts :374-388 — written onto the element at once, so a Focus in the same frame meets it
|
|
122101
|
+
// (visible-at-once.ts); Opacity (:320-328) follows at the next paint (TextInput.tsx :118-120 compares the Opacity the style
|
|
122102
|
+
// holds with the number 0)
|
|
122103
|
+
visible: (_s, v) => ({ says: "always: shown or hidden at once, its space kept; hidden, a Focus does not reach it", set: { visible: !!v, pageVisible: !!v }, send: [] }),
|
|
122069
122104
|
opacity: (_s, v) => ({ says: "always: how see-through it is; at exactly 0 it takes no pointer, and an act goes to what is behind it", set: { opacityZero: v === 0 }, send: [] })
|
|
122070
122105
|
},
|
|
122071
122106
|
{
|
|
@@ -122274,6 +122309,7 @@ var init_dropdown = __esm({
|
|
|
122274
122309
|
init_icon_source();
|
|
122275
122310
|
init_data_attributes();
|
|
122276
122311
|
init_wired_grow();
|
|
122312
|
+
init_visible_at_once();
|
|
122277
122313
|
NOTHING2 = { send: [] };
|
|
122278
122314
|
NONE4 = { send: [] };
|
|
122279
122315
|
DEFAULT_ITEMS = [
|
|
@@ -122298,7 +122334,8 @@ var init_dropdown = __esm({
|
|
|
122298
122334
|
// v10 (NSP-019 R38): a wired Width in a row, or a wired Height in a column, that is a percent shows as its warning (wired-grow.ts)
|
|
122299
122335
|
// v11 (P121-TWO005-DROPDOWNSTALE): Items that do not offer the placed node's seed ("Option 1") clear it to '' and send Value
|
|
122300
122336
|
// v12 (BETA-S7-DROPDOWNFIRSTPICK): with the value in no option, the element keeps its hidden empty option selected, so every option is a pick
|
|
122301
|
-
|
|
122337
|
+
// v13 (BETA-S7-DROPDOWNFOCUSDIVERGE, the spec correcting itself): Visible reaches the element at once, so a Focus in the same frame meets it (visible-at-once.ts)
|
|
122338
|
+
version: 13,
|
|
122302
122339
|
// NSP-010 — v7 is the spec correcting itself, not the runtime changing
|
|
122303
122340
|
changes: [
|
|
122304
122341
|
{
|
|
@@ -122334,7 +122371,8 @@ var init_dropdown = __esm({
|
|
|
122334
122371
|
migration: {
|
|
122335
122372
|
none: "A pick that did nothing now does what the person asked; nothing an app could rely on, and no stored project changes"
|
|
122336
122373
|
}
|
|
122337
|
-
}
|
|
122374
|
+
},
|
|
122375
|
+
visibleAtOnceChange(13)
|
|
122338
122376
|
],
|
|
122339
122377
|
diagnostics: { ...focusDiagnostics(controlFocusNotMounted("dropdown")), ...iconSourceDiagnostics(), ...wiredGrowDiagnostic },
|
|
122340
122378
|
source: "packages/noodl-viewer-react/src/nodes/controls/options.ts",
|
|
@@ -122616,8 +122654,9 @@ var init_dropdown = __esm({
|
|
|
122616
122654
|
// NSP-019 R38 — node.ts :446-458, react-component-node.ts :706-753 (wired-grow.ts)
|
|
122617
122655
|
width: sizeReducer("width"),
|
|
122618
122656
|
height: sizeReducer("height"),
|
|
122619
|
-
// node-shared-port-definitions.ts :
|
|
122620
|
-
|
|
122657
|
+
// node-shared-port-definitions.ts :374-388 — written onto the element at once, so a Focus in the same frame meets it
|
|
122658
|
+
// (visible-at-once.ts)
|
|
122659
|
+
visible: (_s, v) => ({ says: "always: shown or hidden at once, its space kept; hidden, a Focus does not reach it", set: { visible: !!v, pageVisible: !!v }, send: [] })
|
|
122621
122660
|
},
|
|
122622
122661
|
{
|
|
122623
122662
|
// react-component-node.ts :785-830 `DATA_ATTRIBUTES_RULE` — one string input per name the Data Attributes list names, written
|
|
@@ -122792,6 +122831,7 @@ var init_slider = __esm({
|
|
|
122792
122831
|
init_trace();
|
|
122793
122832
|
init_focus_not_mounted();
|
|
122794
122833
|
init_wired_grow();
|
|
122834
|
+
init_visible_at_once();
|
|
122795
122835
|
MAX_BELOW_MIN = "slider/max-below-min";
|
|
122796
122836
|
VALUE_NOT_A_NUMBER = "slider/value-not-a-number";
|
|
122797
122837
|
NONE5 = { send: [] };
|
|
@@ -122803,7 +122843,8 @@ var init_slider = __esm({
|
|
|
122803
122843
|
// v7 (NSP-019 R39, ruled "Yes, warn"): a Max below Min warns, as the Counter's Min above Max does; and a Value that is not a
|
|
122804
122844
|
// number, which the runtime always reported on the error bus, is declared with it (the editor records the `slider/` keys)
|
|
122805
122845
|
// v8 (NSP-019 R38): a wired Width in a row that is a percent shows as its warning (wired-grow.ts)
|
|
122806
|
-
|
|
122846
|
+
// v9 (BETA-S7-DROPDOWNFOCUSDIVERGE, the spec correcting itself): Visible reaches the element at once, so a Focus in the same frame meets it (visible-at-once.ts)
|
|
122847
|
+
version: 9,
|
|
122807
122848
|
changes: [
|
|
122808
122849
|
focusChange(6),
|
|
122809
122850
|
{
|
|
@@ -122812,7 +122853,8 @@ var init_slider = __esm({
|
|
|
122812
122853
|
row: "NSP-019 R39 (P107 s104)",
|
|
122813
122854
|
migration: { none: "Only the editor is told. Nothing a wire carries changes, and nothing a person does moves differently" }
|
|
122814
122855
|
},
|
|
122815
|
-
growChange(8)
|
|
122856
|
+
growChange(8),
|
|
122857
|
+
visibleAtOnceChange(9)
|
|
122816
122858
|
],
|
|
122817
122859
|
diagnostics: {
|
|
122818
122860
|
...focusDiagnostics(controlFocusNotMounted("slider")),
|
|
@@ -123046,8 +123088,9 @@ var init_slider = __esm({
|
|
|
123046
123088
|
scrollIntoView: () => ({ says: "always: the page, or the scrolling Group holding it, scrolls until the slider can be seen", send: [] }),
|
|
123047
123089
|
// NSP-019 R38 — node.ts :446-458, react-component-node.ts :706-753 (wired-grow.ts)
|
|
123048
123090
|
width: sizeReducer("width", false),
|
|
123049
|
-
// node-shared-port-definitions.ts :
|
|
123050
|
-
|
|
123091
|
+
// node-shared-port-definitions.ts :374-388 — written onto the element at once, so a Focus in the same frame meets it
|
|
123092
|
+
// (visible-at-once.ts)
|
|
123093
|
+
visible: (_s, v) => ({ says: "always: shown or hidden at once, its space kept; hidden, a Focus does not reach it", set: { visible: !!v, pageVisible: !!v }, send: [] })
|
|
123051
123094
|
},
|
|
123052
123095
|
{
|
|
123053
123096
|
// placed on the page with its params set — the first render: Did Mount, and the mount's effect (Slider.tsx :88-90)
|
|
@@ -126376,7 +126419,7 @@ var init_video = __esm({
|
|
|
126376
126419
|
autoplay: (_s, v) => ({ says: "always: drawn at the next paint, and read as a load completes \u2014 on, a video that may play (Muted, or a person has acted on the page) and that Pause or Reset has not stopped since the load began starts by itself: On Can Play, then On Play", set: { autoplay: v }, send: [] }),
|
|
126377
126420
|
loop: (_s, v) => ({ says: "always: drawn at the next paint, and read as the video reaches its end \u2014 on, it goes back to the start and plays on; off, it pauses there (On Pause)", set: { loop: v }, send: [] }),
|
|
126378
126421
|
// :35-47 — on the component, or waiting for it with the actions (`sourceObject`: only a `<video>` takes one, and only nothing is
|
|
126379
|
-
// seen to change it;
|
|
126422
|
+
// seen to change it; C99 on the runtime)
|
|
126380
126423
|
srcObject: (s, v) => {
|
|
126381
126424
|
if (!s.onPage) return said("off the page: waits for the element behind the actions already waiting, in order, and is written at the paint that puts the video there (at most 16 wait, and the oldest is pushed out)", toPatch2(waitFor(s, { srcObject: v })));
|
|
126382
126425
|
if (s.kind !== "video" || v !== void 0) return { says: "null (what it already has), a value that is not a stream, or anything on an embedded player: nothing changes \u2014 a live stream itself plays in place of Source, and no scenario holds one", set: {}, send: [], emit: [] };
|
|
@@ -129660,6 +129703,7 @@ var init_radiobutton = __esm({
|
|
|
129660
129703
|
init_focus_not_mounted();
|
|
129661
129704
|
init_icon_source();
|
|
129662
129705
|
init_radiobuttongroup();
|
|
129706
|
+
init_visible_at_once();
|
|
129663
129707
|
SIBLINGS = ["a", "b"];
|
|
129664
129708
|
NOTHING10 = { send: [] };
|
|
129665
129709
|
NONE14 = { set: {}, send: [], emit: [] };
|
|
@@ -129670,8 +129714,9 @@ var init_radiobutton = __esm({
|
|
|
129670
129714
|
// v3 (P109 ISL-031, P107-C64 ruled "Ignore touches, keep hover"): a finger on a disabled control reports nothing — no Pressed, no Pointer Down or Up — as Enabled promises; the pointer's hover still reports
|
|
129671
129715
|
// v4 (P109 ISL-031, P107-D30 ruled "Reset and announce"): a control leaving the page (Mounted off) takes Focused, Hover and Pressed with it — each goes false, sent if it was true, with Blurred and Hover End for the ones that were on
|
|
129672
129716
|
// v5 (NSP-019 R35): a Focus that finds the node off the page shows as its warning until a Focus reaches it, and an Icon Source that is not an icon shows as one until an icon or nothing arrives (`diagnostics`)
|
|
129673
|
-
|
|
129674
|
-
|
|
129717
|
+
// v6 (BETA-S7-DROPDOWNFOCUSDIVERGE, the spec correcting itself): Visible reaches the element at once, so a Focus in the same frame meets it (visible-at-once.ts)
|
|
129718
|
+
version: 6,
|
|
129719
|
+
changes: [focusAndIconSourceChange(5), visibleAtOnceChange(6)],
|
|
129675
129720
|
diagnostics: { ...focusDiagnostics(controlFocusNotMounted("radio button")), ...iconSourceDiagnostics() },
|
|
129676
129721
|
source: "packages/noodl-viewer-react/src/nodes/controls/radiobutton.ts",
|
|
129677
129722
|
needs: ["person", "group"],
|
|
@@ -129863,8 +129908,9 @@ var init_radiobutton = __esm({
|
|
|
129863
129908
|
return { says: "it holds the keyboard: it is taken off it, and the Focused state goes false", set: { focused: false, elementFocused: false }, send: ["focusState"], emit: ["onBlur"], outcome: "done" };
|
|
129864
129909
|
},
|
|
129865
129910
|
scrollIntoView: () => ({ says: "always: the page, or the scrolling Group holding it, scrolls until the button can be seen", send: [] }),
|
|
129866
|
-
// node-shared-port-definitions.ts :
|
|
129867
|
-
|
|
129911
|
+
// node-shared-port-definitions.ts :374-388 — written onto the element at once, so a Focus in the same frame meets it
|
|
129912
|
+
// (visible-at-once.ts)
|
|
129913
|
+
visible: (_s, v) => ({ says: "always: shown or hidden at once, its space kept; hidden, it takes no click and a Focus does not reach it", set: { visible: !!v, pageVisible: !!v }, send: [] })
|
|
129868
129914
|
},
|
|
129869
129915
|
{
|
|
129870
129916
|
world: {
|
|
@@ -133470,7 +133516,7 @@ function applyReturn(s, r) {
|
|
|
133470
133516
|
if (r.inProgress) return { set: { signingIn: true }, send: ["signingIn"] };
|
|
133471
133517
|
if (s.returned) return { send: [] };
|
|
133472
133518
|
if (r.succeeded) {
|
|
133473
|
-
return { set: { signingIn: false, notice: r.notice, error:
|
|
133519
|
+
return { set: { signingIn: false, notice: r.notice, error: "", returned: true }, send: ["signingIn", "notice", "error"], opens: [{ outcome: "done" }] };
|
|
133474
133520
|
}
|
|
133475
133521
|
return { set: { signingIn: false, error: r.error || SIGN_IN_NOT_COMPLETED, returned: true }, send: ["signingIn", "error"], opens: [{ outcome: "failure", error: SIGN_IN_WITH_ERROR_CODE }] };
|
|
133476
133522
|
}
|
|
@@ -133538,7 +133584,19 @@ var init_user_handovers = __esm({
|
|
|
133538
133584
|
// v1 played the launcher only; no v1 trace moves (no v1 world carried a return)
|
|
133539
133585
|
// v3 (P109 ISL-030, row C50 ruled "Fire it once"): a return's final state is reported once per page load; v2 reported a
|
|
133540
133586
|
// provider's error twice — at mount and at the announcement a tick later.
|
|
133541
|
-
|
|
133587
|
+
// v4 (Beta sweep s19, row P109-S24-SIGNINWITHERRORKEPT ruled "Blank text, like magic link"): a succeeded return clears Error
|
|
133588
|
+
// to blank text and sends it, as Request Magic Link's Done does (D25); v3 cleared it to `undefined`, never sent.
|
|
133589
|
+
version: 4,
|
|
133590
|
+
changes: [
|
|
133591
|
+
{
|
|
133592
|
+
version: 4,
|
|
133593
|
+
says: "A sign-in that comes back succeeded clears Error to blank text and sends it, so a label wired to Error lets go of the last failure (before, the clear was nothing, which never reaches a wire)",
|
|
133594
|
+
row: "P109-S24-SIGNINWITHERRORKEPT",
|
|
133595
|
+
migration: {
|
|
133596
|
+
none: "A page load gets one sign-in back and the node is new on it, so its Error never held an earlier failure: no project can see the before"
|
|
133597
|
+
}
|
|
133598
|
+
}
|
|
133599
|
+
],
|
|
133542
133600
|
source: "packages/noodl-viewer-react/src/nodes/std-library/user/signinwith.ts; userservice.ts; RestAuthAdapter.ts; ParseAuthAdapter.ts",
|
|
133543
133601
|
needs: ["backend", "registry", "clock"],
|
|
133544
133602
|
worldPool: { backends: [...pool("signInWithProvider", null), ...RETURNS] },
|
|
@@ -151525,7 +151583,7 @@ var init_cloud_node_library = __esm({
|
|
|
151525
151583
|
plug: "input",
|
|
151526
151584
|
group: "General",
|
|
151527
151585
|
displayName: "Allow Unauthenticated",
|
|
151528
|
-
description: "Whether a request with no valid session token is allowed to run this function at all",
|
|
151586
|
+
description: "Whether a request with no valid session token is allowed to run this function at all. A run the app starts itself \u2014 a schedule, a row change, a run from Studio \u2014 is always allowed and sees nobody signed in; a webhook is a request like any other",
|
|
151529
151587
|
default: false
|
|
151530
151588
|
},
|
|
151531
151589
|
{
|