@descix/frqtl-node 0.0.0-stage → 0.6.0-p0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +87 -0
- package/LICENSE.md +664 -0
- package/README.md +84 -2
- package/dist/dist-manifest.json +218 -0
- package/dist/eyes/index.js +109 -0
- package/dist/fat/pkg-node/egpt_wasm.js +1277 -0
- package/dist/fat/pkg-node/egpt_wasm_bg.wasm +0 -0
- package/dist/fat/pkg-node/package.json +12 -0
- package/dist/frqtl/assets/vendor/chroma.mjs +64 -0
- package/dist/frqtl/compat/boot-node.js +34 -0
- package/dist/frqtl/compat/engine.js +127 -0
- package/dist/frqtl/compat/package-root.js +24 -0
- package/dist/frqtl/compat/providers/wasm-engine.js +2499 -0
- package/dist/frqtl/compat/providers/wasm-load-browser.js +134 -0
- package/dist/frqtl/compat/providers/wasm-load-node.js +59 -0
- package/dist/frqtl/compat/renderer/FieldBuilder.js +145 -0
- package/dist/frqtl/compat/renderer/Filters.js +163 -0
- package/dist/frqtl/compat/renderer/RenderFamily.js +84 -0
- package/dist/frqtl/compat/renderer/RenderMesh.js +99 -0
- package/dist/frqtl/compat/renderer/RenderShape.js +154 -0
- package/dist/frqtl/compat/renderer/camera2d-geometry.js +183 -0
- package/dist/frqtl/compat/renderer/captureStill-common.js +258 -0
- package/dist/frqtl/compat/renderer/display-slot.js +96 -0
- package/dist/frqtl/compat/renderer/lo-drawn-center.js +231 -0
- package/dist/frqtl/compat/renderer/orbit-bag.js +216 -0
- package/dist/frqtl/compat/renderer/providers/godrays-layer.js +213 -0
- package/dist/frqtl/compat/renderer/providers/index.js +22 -0
- package/dist/frqtl/compat/renderer/providers/p5-provider.js +861 -0
- package/dist/frqtl/compat/renderer/providers/three-camera-contract.js +160 -0
- package/dist/frqtl/compat/renderer/providers/three-camera-geometry.js +571 -0
- package/dist/frqtl/compat/renderer/providers/three-provider.js +2470 -0
- package/dist/frqtl/compat/renderer/renderCapabilities-common.js +186 -0
- package/dist/frqtl/compat/renderer/renderer-provider-contract.js +238 -0
- package/dist/frqtl/compat/renderer/unprojectStill.js +172 -0
- package/dist/frqtl/compat/vendor.js +196 -0
- package/dist/frqtl/node-entry.js +17 -0
- package/dist/frqtl/objects/FrqtlApp.js +2920 -0
- package/dist/frqtl/objects/ObjectFactory.js +296 -0
- package/dist/frqtl/objects/RecipeContext.js +322 -0
- package/dist/frqtl/objects/collectors/DataCollector.js +116 -0
- package/dist/frqtl/objects/constants/WallBehaviors.js +178 -0
- package/dist/frqtl/objects/geometry/SlabFace.js +258 -0
- package/dist/frqtl/objects/instruments/capture-host.js +453 -0
- package/dist/frqtl/objects/instruments/capture.js +710 -0
- package/dist/frqtl/objects/instruments/hosted-eyes.js +984 -0
- package/dist/frqtl/objects/kinds-entry.js +14 -0
- package/dist/frqtl/objects/kinds.js +190 -0
- package/dist/frqtl/objects/objects/Box.js +273 -0
- package/dist/frqtl/objects/objects/Bullet.js +155 -0
- package/dist/frqtl/objects/objects/CircuitGate.js +380 -0
- package/dist/frqtl/objects/objects/CircuitProbe.js +214 -0
- package/dist/frqtl/objects/objects/DirectedTunnel.js +411 -0
- package/dist/frqtl/objects/objects/EgptFractal.js +164 -0
- package/dist/frqtl/objects/objects/LightSource.js +351 -0
- package/dist/frqtl/objects/objects/QuantumEmitter.js +760 -0
- package/dist/frqtl/objects/objects/Tube.js +471 -0
- package/dist/frqtl/objects/objects/absorbRadiation.js +309 -0
- package/dist/frqtl/objects/objects/actionCompiler.js +1747 -0
- package/dist/frqtl/objects/objects/controlAction.js +89 -0
- package/dist/frqtl/objects/objects/controlBind.js +278 -0
- package/dist/frqtl/objects/objects/directedRedirectProgram.js +120 -0
- package/dist/frqtl/objects/objects/emitterProgram.js +209 -0
- package/dist/frqtl/objects/objects/frqtl-control-slider.js +197 -0
- package/dist/frqtl/objects/objects/frqtl-control-sync.js +272 -0
- package/dist/frqtl/objects/objects/frqtl-control-widgets.js +219 -0
- package/dist/frqtl/objects/objects/frqtl-control-write-queue.js +174 -0
- package/dist/frqtl/objects/objects/makeControlsForObject.js +820 -0
- package/dist/frqtl/objects/objects/makeControlsForRenderSurface.js +161 -0
- package/dist/frqtl/objects/objects/slitLinerScatter.js +261 -0
- package/dist/frqtl/objects/objects/sustainedSource.js +298 -0
- package/dist/frqtl/objects/objects/tagger.js +228 -0
- package/dist/frqtl/objects/schema/engine-scopes.js +468 -0
- package/dist/frqtl/objects/schema/index.js +256 -0
- package/dist/frqtl/objects/schema/scopes.js +457 -0
- package/dist/frqtl/objects/schema/validate-descriptor.js +49 -0
- package/dist/frqtl/objects/schema/valueNormalizer.js +366 -0
- package/dist/frqtl/objects/setup/_collisionMatrixLanes.js +66 -0
- package/dist/frqtl/objects/setup/_setupOptions.js +118 -0
- package/dist/frqtl/objects/setup/_worldInit.js +162 -0
- package/dist/frqtl/objects/setup/setupBlackbodySubstrate.js +242 -0
- package/dist/frqtl/objects/setup/setupCircuitBasic.js +447 -0
- package/dist/frqtl/objects/setup/setupCollisionMatrix.js +188 -0
- package/dist/frqtl/objects/setup/setupConeEmitter3D.js +250 -0
- package/dist/frqtl/objects/setup/setupDoubleSlit.js +326 -0
- package/dist/frqtl/objects/setup/setupDoubleSlit_Laser.js +229 -0
- package/dist/frqtl/objects/setup/setupEmpty.js +59 -0
- package/dist/frqtl/objects/setup/setupFxSmoke.js +209 -0
- package/dist/frqtl/objects/setup/setupG1Race.js +80 -0
- package/dist/frqtl/objects/setup/setupG2Sweep.js +89 -0
- package/dist/frqtl/objects/setup/setupG3Collide.js +177 -0
- package/dist/frqtl/objects/setup/setupLightSourceLab.js +277 -0
- package/dist/frqtl/objects/setup/setupOscillator.js +68 -0
- package/dist/frqtl/objects/setup/setupParticleWalk.js +93 -0
- package/dist/frqtl/objects/setup/setupParticleWalk3D.js +133 -0
- package/dist/frqtl/objects/setup/setupSphereEmitter3D.js +1258 -0
- package/dist/frqtl/objects/setup/setupTraceCircuit.js +239 -0
- package/dist/frqtl/objects/setup/setupTunnelLab.js +240 -0
- package/dist/frqtl/objects/setup/setupTunnelPointExit.js +306 -0
- package/dist/frqtl/objects/setup/setupWaveInterference.js +177 -0
- package/dist/frqtl/objects/v1-replacements.js +29 -0
- package/dist/frqtl/package-core.js +23 -0
- package/dist/frqtl/parts/CameraControls.js +643 -0
- package/dist/frqtl/parts/CameraPath.js +575 -0
- package/dist/frqtl/parts/CollisionActions.js +34 -0
- package/dist/frqtl/parts/CollisionTypes.js +30 -0
- package/dist/frqtl/parts/DetectorWall.js +496 -0
- package/dist/frqtl/parts/FrqtlControlOverlay.js +227 -0
- package/dist/frqtl/parts/FrqtlControlsPanel.js +415 -0
- package/dist/frqtl/parts/FrqtlVision.js +818 -0
- package/dist/frqtl/parts/GraphingDetectorWall.js +489 -0
- package/dist/frqtl/parts/LargeObject.js +405 -0
- package/dist/frqtl/parts/LightColor.js +255 -0
- package/dist/frqtl/parts/LiveChart.js +285 -0
- package/dist/frqtl/parts/LogicGate.js +717 -0
- package/dist/frqtl/parts/OvenBox.js +611 -0
- package/dist/frqtl/parts/PointSource.js +762 -0
- package/dist/frqtl/parts/Rectangle.js +200 -0
- package/dist/frqtl/parts/SlitLightSource.js +234 -0
- package/dist/frqtl/parts/SlitScreen.js +628 -0
- package/dist/frqtl/parts/SphereEmitter.js +946 -0
- package/dist/frqtl/parts/Trace.js +508 -0
- package/dist/frqtl/parts/Tunnel.js +1057 -0
- package/dist/frqtl/parts/Wall.js +1211 -0
- package/dist/frqtl/parts/index.js +33 -0
- package/dist/frqtl/scenes/absorbing-wall-3d.js +33 -0
- package/dist/frqtl/scenes/absorbing-wall.js +32 -0
- package/dist/frqtl/scenes/atomic-model.js +88 -0
- package/dist/frqtl/scenes/big-bang.js +46 -0
- package/dist/frqtl/scenes/blackbody.js +81 -0
- package/dist/frqtl/scenes/circuit-sat.js +127 -0
- package/dist/frqtl/scenes/collision-matrix-3d.js +107 -0
- package/dist/frqtl/scenes/counting-wall-3d.js +36 -0
- package/dist/frqtl/scenes/counting-wall.js +38 -0
- package/dist/frqtl/scenes/double-slit.js +31 -0
- package/dist/frqtl/scenes/dse-one-emitter.js +196 -0
- package/dist/frqtl/scenes/dse-one-slit.js +114 -0
- package/dist/frqtl/scenes/dse-photoelectric.js +70 -0
- package/dist/frqtl/scenes/dse-tunnel-rebuild.js +243 -0
- package/dist/frqtl/scenes/dse-two-emitters.js +196 -0
- package/dist/frqtl/scenes/dse-two-slits.js +132 -0
- package/dist/frqtl/scenes/empty.js +14 -0
- package/dist/frqtl/scenes/laser-buildup.js +49 -0
- package/dist/frqtl/scenes/mirror-3d.js +56 -0
- package/dist/frqtl/scenes/mirror-route.js +140 -0
- package/dist/frqtl/scenes/mirror.js +38 -0
- package/dist/frqtl/scenes/omni-3d.js +27 -0
- package/dist/frqtl/scenes/omni-source.js +22 -0
- package/dist/frqtl/scenes/self-interference.js +39 -0
- package/dist/frqtl/scenes/smoking-gun.js +122 -0
- package/dist/frqtl/scenes/straight-walk.js +22 -0
- package/dist/frqtl/scenes/sun.js +39 -0
- package/dist/frqtl/scenes/two-source.js +37 -0
- package/dist/frqtl/scenes/wave.js +26 -0
- package/dist/shim/bundle/frqnb.js +112 -0
- package/dist/shim/bundle/index.js +121 -0
- package/dist/shim/bundle/indexHtml.js +107 -0
- package/dist/shim/bundle/manifest.js +95 -0
- package/dist/shim/bundle/zip.js +243 -0
- package/dist/shim/bus.js +67 -0
- package/dist/shim/controls/index.js +627 -0
- package/dist/shim/controls/registry.js +274 -0
- package/dist/shim/engine/artifact-shell.js +211 -0
- package/dist/shim/engine/boot-phases.js +44 -0
- package/dist/shim/engine/engine-stack-boot.js +59 -0
- package/dist/shim/engine/router.js +690 -0
- package/dist/shim/experiment-frame/index.js +296 -0
- package/dist/shim/expr/ast-schema.js +369 -0
- package/dist/shim/field-descriptor/index.js +325 -0
- package/dist/shim/frame-data/index.js +224 -0
- package/dist/shim/index.js +67 -0
- package/dist/shim/notebook/canvas-guard.js +82 -0
- package/dist/shim/notebook/catalog.js +35 -0
- package/dist/shim/notebook/format.js +736 -0
- package/dist/shim/notebook/frqtl-setups-importmap.js +81 -0
- package/dist/shim/notebook/kernel.js +671 -0
- package/dist/shim/notebook/knob.js +150 -0
- package/dist/shim/notebook/module-resolver.js +260 -0
- package/dist/shim/notebook/notebook-knobs.js +65 -0
- package/dist/shim/notebook/produced-bindings.js +67 -0
- package/dist/shim/notebook/realm-registry.js +121 -0
- package/dist/shim/notebook/realm-transport.js +73 -0
- package/dist/shim/notebook/setup-builder.js +507 -0
- package/dist/shim/notebook/store.js +159 -0
- package/dist/shim/notebook/vendor-importmap.js +134 -0
- package/dist/shim/notebook/view-builder.js +189 -0
- package/dist/shim/notebook/view-ctx.js +100 -0
- package/dist/shim/notebook/view-handle.js +202 -0
- package/dist/shim/notebook/warmup.js +102 -0
- package/dist/shim/package.json +4 -0
- package/dist/shim/page-params/index.js +213 -0
- package/dist/shim/project/identity.js +112 -0
- package/dist/shim/project/index.js +19 -0
- package/dist/shim/project/link.js +402 -0
- package/dist/shim/project/node-specifier-hook.mjs +35 -0
- package/dist/shim/project/register-node.mjs +17 -0
- package/dist/shim/project/specifiers.js +106 -0
- package/dist/shim/registry/copy-gate.js +110 -0
- package/dist/shim/registry/exhibits.js +455 -0
- package/dist/shim/registry/experiments.js +215 -0
- package/dist/shim/registry/index.js +19 -0
- package/dist/shim/registry/scene-source.js +157 -0
- package/dist/shim/registry/walkthrough.js +804 -0
- package/dist/shim/render/capture-envelope.js +279 -0
- package/dist/shim/render/heat-colormap.js +92 -0
- package/dist/shim/render/render-stages.js +855 -0
- package/dist/shim/render/sun-look.js +33 -0
- package/dist/shim/render-state/apply.js +262 -0
- package/dist/shim/render-state/index.js +74 -0
- package/dist/shim/rpc/index.js +207 -0
- package/dist/shim/runtime/index.js +1023 -0
- package/dist/shim/storage/boot.js +69 -0
- package/dist/shim/storage/index.js +169 -0
- package/dist/shim/storage/local-storage-provider.js +230 -0
- package/dist/shim/storage/make-namespace-store.js +132 -0
- package/dist/shim/storage/modules.js +249 -0
- package/dist/shim/storage/projects.js +150 -0
- package/llms.txt +12 -0
- package/package.json +63 -4
package/README.md
CHANGED
|
@@ -1,3 +1,85 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @descix/frqtl-node
|
|
2
|
+
|
|
3
|
+
FRQTL for node: a discrete cellular-automata physics engine (compiled Rust → WASM). Physics comes out of
|
|
4
|
+
local per-pixel rules — a frame moves one pixel per tick, single occupancy, momentum — rather than force
|
|
5
|
+
equations. Interference, blackbody spectra and atom-like binding emerge from the automaton.
|
|
6
|
+
|
|
7
|
+
Pre-release `0.6.0-p0.2` (npm dist-tag `next`). Node ≥ 22.12.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
npm install @descix/frqtl-node@next
|
|
12
|
+
|
|
13
|
+
## Rung 0 — the seven primitives
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
import { bootNode } from '@descix/frqtl-node';
|
|
17
|
+
|
|
18
|
+
const { EGPTUniverse } = await bootNode(); // the WASM engine, once per process
|
|
19
|
+
const u = EGPTUniverse.create({ rect: { left: 0, top: 0, w: 200, h: 200 }, seed: 42 });
|
|
20
|
+
u.init(0, { wavelengthScale: 1 }); // ALWAYS first
|
|
21
|
+
u.experimentTickFunctions.push((uni) => uni.injectFrame(uni.makeLeafFrame(20, 100, 0, null, 1, 0)));
|
|
22
|
+
const tick = u.doTick(); // TickData: frameData + objects
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`require('@descix/frqtl-node')` works from CommonJS too (nothing in the graph awaits at top level).
|
|
26
|
+
|
|
27
|
+
## Exports
|
|
28
|
+
|
|
29
|
+
| subpath | what |
|
|
30
|
+
|---|---|
|
|
31
|
+
| `.` | the parts (`Wall`, `SphereEmitter`, `Tunnel`, `FrqtlVision`, …), `bootNode`, the engine accessors (`engine`, `engineState`), the capture contracts (`FrqtlCapture`, `RenderStages`, `FieldBuilder`, `CaptureEnvelope`) and `validateRendererProvider` |
|
|
32
|
+
| `./eyes` | `openHostedEyes` — a `composite` still through the REAL renderer, in a managed headless browser (pulls the pinned `playwright`) |
|
|
33
|
+
| `./parts`, `./parts/*` | the parts barrel; one part = one file |
|
|
34
|
+
| `./project` | `FRQTL_WEB_SPECIFIERS`, `libPathOf`, `importMapFor`, `linkProject`, `projectIdentity` |
|
|
35
|
+
| `./registry` | the walk-through rungs, the showcase roster, the experiment registry, `loadSceneSource` |
|
|
36
|
+
| `./kinds` | `registerKind`, `kindNamed`, `kindOf`, `registeredKinds` |
|
|
37
|
+
| `./register` | installs the resolve hook for a sketch's `@descix/frqtl-web/...` imports (`node --import @descix/frqtl-node/register`) |
|
|
38
|
+
| `./shim/controls/registry.js`, `./shim/render/sun-look.js`, `./compat/renderer/display-slot.js`, `./compat/renderer/orbit-bag.js`, `./objects/setup/_collisionMatrixLanes.js`, `./compat/engine.js` | the six non-part modules a scene may import (the rows of `FRQTL_WEB_SPECIFIERS`) |
|
|
39
|
+
| `./dist-manifest.json` | sha256 of every dist file |
|
|
40
|
+
|
|
41
|
+
These modules are the same files `@descix/frqtl-web` ships (one source, built twice).
|
|
42
|
+
|
|
43
|
+
## A scene file in node
|
|
44
|
+
|
|
45
|
+
A scene is an ES module whose default export is `buildExperiment(exp)`, and it imports its parts as
|
|
46
|
+
`@descix/frqtl-web/parts`. In this package a project is linked by `linkProject` (`./project`), which
|
|
47
|
+
resolves those specifiers to this package's own copy:
|
|
48
|
+
|
|
49
|
+
```js
|
|
50
|
+
import { linkProject } from '@descix/frqtl-node/project';
|
|
51
|
+
const dataMint = (text) => ({ url: 'data:text/javascript,' + encodeURIComponent(text) });
|
|
52
|
+
const { buildExperiment } = await linkProject({ files: { 'sketch.js': text }, entry: 'sketch.js', mint: dataMint });
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
A scene file on disk imports `@descix/frqtl-web/...`; this package resolves those specifiers to its own files
|
|
56
|
+
through one resolve hook:
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
node --import @descix/frqtl-node/register my-scene-runner.mjs
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
(or `import '@descix/frqtl-node/register'` before the first import of a scene). Without it, node does not
|
|
63
|
+
know the `@descix/frqtl-web` name in a node-only install.
|
|
64
|
+
|
|
65
|
+
## Hosted eyes
|
|
66
|
+
|
|
67
|
+
```js
|
|
68
|
+
import { openHostedEyes } from '@descix/frqtl-node/eyes';
|
|
69
|
+
const eyes = await openHostedEyes({
|
|
70
|
+
sceneRecord: { seed: 42, sourceRef: 'my-scene' },
|
|
71
|
+
sceneSource: { kind: 'project', files: { 'sketch.js': text }, entry: 'sketch.js' },
|
|
72
|
+
pageUrl: '<origin>/experiments/empty/index.html' // the empty page of a served @descix/frqtl-web dist
|
|
73
|
+
});
|
|
74
|
+
await eyes.driveToTick(300);
|
|
75
|
+
const still = await eyes.vision.getStill('composite');
|
|
76
|
+
await eyes.dispose();
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The still's SceneRecord carries the project's identity (`projectIdentity`) as `sourceSha256`.
|
|
80
|
+
|
|
81
|
+
## Acceptance is visual
|
|
82
|
+
|
|
83
|
+
There is no CLI. FRQTL scenes are fractal and non-linear: run a scene and look at it. A numeric score
|
|
84
|
+
is a design aid in your own harness, never the acceptance criterion.
|
|
2
85
|
|
|
3
|
-
This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@descix/frqtl-node",
|
|
3
|
+
"version": "0.6.0-p0.2",
|
|
4
|
+
"files": {
|
|
5
|
+
"eyes/index.js": "c74d5595ea2f778f2f63ef3ce2b6568433cef80ec21b6d66901c1d1a942dbe9a",
|
|
6
|
+
"fat/pkg-node/egpt_wasm.js": "5e6af1f6725c93c0e9ad7386f1785cbe639ce596a4caa19ca85729c1f2bea04d",
|
|
7
|
+
"fat/pkg-node/egpt_wasm_bg.wasm": "e204498ac7439c294653476c0d214345713e6170819281b27bbbcba217a5a5e9",
|
|
8
|
+
"fat/pkg-node/package.json": "a0c04cd40b60be10e9ddd6e1d4763fd578808321d663c6d4201530e2a4ebdba4",
|
|
9
|
+
"frqtl/assets/vendor/chroma.mjs": "f25f4a17d8ceedf58e278df8df83c2804b4f0cf3ff659d963da144e368f8e525",
|
|
10
|
+
"frqtl/compat/boot-node.js": "7cfd4645f965fa3e3d3072688b268a8aa5b8b4d727c7d842d3bad841dacd1194",
|
|
11
|
+
"frqtl/compat/engine.js": "a849144e80f93694290f4567fa78d09c88b277162be9f1c15ab820328690c3a4",
|
|
12
|
+
"frqtl/compat/package-root.js": "9ff4b6bc958c524b5084f849c811f1491a788afc99cab81cd281add02316ff83",
|
|
13
|
+
"frqtl/compat/providers/wasm-engine.js": "020b36623a66a6298fd1b7b7a3db549f6ab957c91526dbe99f4069e4583dd757",
|
|
14
|
+
"frqtl/compat/providers/wasm-load-browser.js": "990a8e22f365f3d32ee8d448965a23cc85ebf62b321ee55417e500bfd5ad7f2d",
|
|
15
|
+
"frqtl/compat/providers/wasm-load-node.js": "0ec1d50e204bf073caac5218b3007eff65c480a94c8d87ad567a6d80b6b6c435",
|
|
16
|
+
"frqtl/compat/renderer/FieldBuilder.js": "af30df8b04ee05a006882eb8cb56ff84e76142348339d039296304877770c519",
|
|
17
|
+
"frqtl/compat/renderer/Filters.js": "5201a33473dcfd96c8694b5ff1e297bea27195f6c7940a8e51669d07856026db",
|
|
18
|
+
"frqtl/compat/renderer/RenderFamily.js": "d2ab960d696efcfe5594292e0bb54a9c1fe2dd56a1b86c408ac270dcb03cf2be",
|
|
19
|
+
"frqtl/compat/renderer/RenderMesh.js": "3312f587f437ea03466211a669e9a8ed2276e78645ed63397f733e6827c146c6",
|
|
20
|
+
"frqtl/compat/renderer/RenderShape.js": "509bcad3b106b5440a918c4243dd39539f55a406ca0650e7699bbf843a3a466e",
|
|
21
|
+
"frqtl/compat/renderer/camera2d-geometry.js": "d34aa7737962fcbab774bff18da724aa351a47971632ad7fe052e3db0b8cdd69",
|
|
22
|
+
"frqtl/compat/renderer/captureStill-common.js": "42e7d59a6142f02f15485f099b296aa047980019105043c45c4b82fdbe982094",
|
|
23
|
+
"frqtl/compat/renderer/display-slot.js": "8a2e99836dcc2f95155f2cd8ffeb9267054e3848c2e8f2ce320ebaca22f80a9e",
|
|
24
|
+
"frqtl/compat/renderer/lo-drawn-center.js": "4cb2e1f32dc03b188701163a9e3f711c344f269c7886bceb27d49fe5a4194b81",
|
|
25
|
+
"frqtl/compat/renderer/orbit-bag.js": "b6671d3b35fcf5f79e228934a8032e729309e62b66920602f34c834f3f911681",
|
|
26
|
+
"frqtl/compat/renderer/providers/godrays-layer.js": "be76fb8e69c74dd9bd0fb9aa6189a816d0ed29b9f4e04b60277be375b93d606c",
|
|
27
|
+
"frqtl/compat/renderer/providers/index.js": "fa669158a082a0081125c81694ca79962639caf86a575ee198a815f3e13a19e7",
|
|
28
|
+
"frqtl/compat/renderer/providers/p5-provider.js": "16d93e087643547f778b5455c2be71f48324d9d281a2a162a201a1a71d2bb703",
|
|
29
|
+
"frqtl/compat/renderer/providers/three-camera-contract.js": "644c1cc5e381cd2af897e69762216f84716808eeb5948efb989f48c47696bc60",
|
|
30
|
+
"frqtl/compat/renderer/providers/three-camera-geometry.js": "a741f72c34005fc47fb4d53cc7ef2d2df4bfa7e8eecc9a0252b1083b3d5e301a",
|
|
31
|
+
"frqtl/compat/renderer/providers/three-provider.js": "08410c488dcf3290d0a950331f33d8ba6882a391308d4d4598d9cb9aa96a4c9a",
|
|
32
|
+
"frqtl/compat/renderer/renderCapabilities-common.js": "4e4bf31a8ab5b4b938fdbd517e30d28e9c8e90251b6fe1dbaafd575bf2d4ccf3",
|
|
33
|
+
"frqtl/compat/renderer/renderer-provider-contract.js": "295574c6b10ce4c335b7c9a83941f3c1723b412c21f0004501add45e533bdb5a",
|
|
34
|
+
"frqtl/compat/renderer/unprojectStill.js": "43c4286c124eaa238d963fe3ae5551a1c87727809d5245a129f368a117863c45",
|
|
35
|
+
"frqtl/compat/vendor.js": "2393ada71cdbe750d409174e1ba9b098148796efdff746b315d706a0b32e58e8",
|
|
36
|
+
"frqtl/node-entry.js": "a401039b4fcf53ac620edbd80985aa4448122f2e3caaeaf4d5595f5e9d512b60",
|
|
37
|
+
"frqtl/objects/FrqtlApp.js": "ad14659c8dd980203576f9b00e5f867ee371ef31dcacf400de5f796d11b6c700",
|
|
38
|
+
"frqtl/objects/ObjectFactory.js": "7ee0e0f996cce456e320b71b6b6bf07b5f8655223486ad9df3a466402f6f04f8",
|
|
39
|
+
"frqtl/objects/RecipeContext.js": "e1f77a2a77bcb05859ab206bfea98746ef98cdd6e1a9a74979aa39348d058f42",
|
|
40
|
+
"frqtl/objects/collectors/DataCollector.js": "8736d6cb77eec36ce2adcf2bc3b0d2436eeb70a73b77182ff053efdc6ca071df",
|
|
41
|
+
"frqtl/objects/constants/WallBehaviors.js": "8a9cbdb96eadf84f1d61d215f6921124ec5dbf9e2938c09894a0aa083ddcaea0",
|
|
42
|
+
"frqtl/objects/geometry/SlabFace.js": "847921b124d3bc1692e88c363c087d392a1baa7c652a3a61e381d0f8a8342e57",
|
|
43
|
+
"frqtl/objects/instruments/capture-host.js": "ba5001afa2d8f4e438c5eacb2a5456d903401de8584d170c0b02ff3014794edd",
|
|
44
|
+
"frqtl/objects/instruments/capture.js": "53a746cb51e1c83326eebaa98083861c7ee593f2bcb2317473446a1a02b59b5c",
|
|
45
|
+
"frqtl/objects/instruments/hosted-eyes.js": "06f19c22291e7b2e5ca48e5037a6dd551691c49b262884507bb2fba10e8fcaab",
|
|
46
|
+
"frqtl/objects/kinds-entry.js": "a7818357864dc900bd93350635016f938c3dca8dcb665a62df802ba5cd0b3c93",
|
|
47
|
+
"frqtl/objects/kinds.js": "107b166c96c93fd517f173fdbe7006d6f0b2694d5f799f7ec9d4f695313f1832",
|
|
48
|
+
"frqtl/objects/objects/Box.js": "0c08fa4753b78ef56d07aae3393a6268647b550ead58e409cff13eabc8b34b5d",
|
|
49
|
+
"frqtl/objects/objects/Bullet.js": "9192dcdf80fc0e0bd2287b75aef5375cc81c7ef4c8411d30cab54b9e88619516",
|
|
50
|
+
"frqtl/objects/objects/CircuitGate.js": "15a5e6d6a5d5354513c431fd0e567e30aac32ff42f2ab993010f30388a230be3",
|
|
51
|
+
"frqtl/objects/objects/CircuitProbe.js": "f13408324f710f55416e074d914bbd44960268dd631fa6617648d92991812b38",
|
|
52
|
+
"frqtl/objects/objects/DirectedTunnel.js": "0b5f7a15c67a837d4dfae30f08cac703cde077ce0b8990adc68e29be1d58a494",
|
|
53
|
+
"frqtl/objects/objects/EgptFractal.js": "3ae5ecbdcc08ba60ab5fe06d8f5567cb16b375b1472fdad704b6ea17c5509f1e",
|
|
54
|
+
"frqtl/objects/objects/LightSource.js": "4c3405b0cdba56650dbc159711e2315d2c8812f553361a6d74fb3a8b9adcbc76",
|
|
55
|
+
"frqtl/objects/objects/QuantumEmitter.js": "2bc4e9bed97fff109153d0c4faa08b142f04b15882ddedf0e4c2080bab43e677",
|
|
56
|
+
"frqtl/objects/objects/Tube.js": "570be68d1c4c93eb43373061acb7e2ca4af64766dc818d80fdfef1b835b386da",
|
|
57
|
+
"frqtl/objects/objects/absorbRadiation.js": "5ac21c0e0f21001a31bc55280dbae52d741af3fa40df094fe5ad45cb716767d3",
|
|
58
|
+
"frqtl/objects/objects/actionCompiler.js": "c6118e2ab7f8376bb26aa72e0a074d1ca1ea7bae72526623d26e08fa92d918b3",
|
|
59
|
+
"frqtl/objects/objects/controlAction.js": "15f07f338568ebd56e9d8320aab1c29703e07cfd5625abb409708f60cf5f648d",
|
|
60
|
+
"frqtl/objects/objects/controlBind.js": "0b118420dcf5538cfbb88e033fedc3351322bd1aacf815d638b5788521a2cb07",
|
|
61
|
+
"frqtl/objects/objects/directedRedirectProgram.js": "d07479c20c9c55259e9cd6e63816135316f254ba2566b32143abe7e529787990",
|
|
62
|
+
"frqtl/objects/objects/emitterProgram.js": "23accb1fecec70cfa0e828ba78a58f47bcad5fc65ca93ba54e7fa57dbf5339ec",
|
|
63
|
+
"frqtl/objects/objects/frqtl-control-slider.js": "3941d0197b915aab745635fd3feacd35648c2ad8ed09fb123bc0f9e27a9914fe",
|
|
64
|
+
"frqtl/objects/objects/frqtl-control-sync.js": "88de12d2ec1643b4afc2ef56ea8cc44e1213e4a73a0ad6876d59e988125c3789",
|
|
65
|
+
"frqtl/objects/objects/frqtl-control-widgets.js": "73dd1e4481af66430601a105d375749c6db0bc9d736e47bd0edea9a4f9e6871c",
|
|
66
|
+
"frqtl/objects/objects/frqtl-control-write-queue.js": "994d0e736f240c453fd8ab52ea6d1eed05ac27a160806037d751f4a6a6ce6295",
|
|
67
|
+
"frqtl/objects/objects/makeControlsForObject.js": "f565f16e6c29b931e2a4625a68fec3f49bbceee73ea0d76573dd3e33fdffe066",
|
|
68
|
+
"frqtl/objects/objects/makeControlsForRenderSurface.js": "0ba99a4106ad92c0fe9366d6610c31d60ebfa232b3552c05f68f9c5aa56c03a0",
|
|
69
|
+
"frqtl/objects/objects/slitLinerScatter.js": "9413cc7efa2132c68d7b4d5030af28d92e8d085e127d5c8e1568d0028da2fc13",
|
|
70
|
+
"frqtl/objects/objects/sustainedSource.js": "0c324cef1583226d090b4d1014c2576ef8237f1bad47c1511bed3c3f81e04206",
|
|
71
|
+
"frqtl/objects/objects/tagger.js": "e2a5ef9ae68466afb6b157ca6d7ce03a6f126d8c91c9f9d4be6dba8e928535eb",
|
|
72
|
+
"frqtl/objects/schema/engine-scopes.js": "1777dd3d2443df7c7d7fbcd25974bcb758606bdf3efa5c21408009167d00e3e6",
|
|
73
|
+
"frqtl/objects/schema/index.js": "0a128e3f64519dad2ff00b74f2d3c26e5c9758439429d3c7ac4b66fb08796740",
|
|
74
|
+
"frqtl/objects/schema/scopes.js": "3b9c2d4f20604d6384ec625ab5e4a38085fa9696c5e443ff66b45a8f2330c5f6",
|
|
75
|
+
"frqtl/objects/schema/validate-descriptor.js": "32572a7c7f5262a46d13bcd05424555151287c4438e3e081ab2f3884fd5a2f10",
|
|
76
|
+
"frqtl/objects/schema/valueNormalizer.js": "00dc4eb188f23964336d45de021846b63a3603c423b5444f132bf470c73c4354",
|
|
77
|
+
"frqtl/objects/setup/_collisionMatrixLanes.js": "e5184a9e690e677bc941cce113f2d3d5c51de41d8322515fc707f5414c7b81be",
|
|
78
|
+
"frqtl/objects/setup/_setupOptions.js": "bc9bff3c647418db452976b54e9f91474c59abf5acbde1d62747a11a9501cca0",
|
|
79
|
+
"frqtl/objects/setup/_worldInit.js": "fb9b3716f93415100581e1bd12c8170d28c1d1cbda2e5236530598b197d7fdb3",
|
|
80
|
+
"frqtl/objects/setup/setupBlackbodySubstrate.js": "eb69b5bd1e19a970b433beed3e68ce47fffe63c17bf6045b49ce776045e20fe3",
|
|
81
|
+
"frqtl/objects/setup/setupCircuitBasic.js": "8204f7d42f8dd888e6a4e1175b16a6e67b69fb2d943af6c2b40c900b905dd453",
|
|
82
|
+
"frqtl/objects/setup/setupCollisionMatrix.js": "5df3b6c93a5b1fc5f8c0a443c1d3e0003ef170bb39b6101e60b4f3017ec26f60",
|
|
83
|
+
"frqtl/objects/setup/setupConeEmitter3D.js": "284d5353857817e5821d6c3897ba15b22f32388971ae149094e1353f15f0a4d6",
|
|
84
|
+
"frqtl/objects/setup/setupDoubleSlit.js": "c802de116d1f0a603bbb4a7bbfbbe11aaefbeb036e1df513320bf4a9adb3519f",
|
|
85
|
+
"frqtl/objects/setup/setupDoubleSlit_Laser.js": "373f0b8a5087072063457b5cf9f67f43afc26a71a89d667520fde5a81cc075d7",
|
|
86
|
+
"frqtl/objects/setup/setupEmpty.js": "d0fc6e8661514965fa68720a714a2fe44bfbf414f92549e4c86c8bf60a4cc1d1",
|
|
87
|
+
"frqtl/objects/setup/setupFxSmoke.js": "52bcaea78c85349f92a8a6664c11e3d7215e2a47772f2fbd39ee2212e88b1cab",
|
|
88
|
+
"frqtl/objects/setup/setupG1Race.js": "431df40700a8633fae54eea98f160e7852deb3765c3b374c35c0e1af24611d31",
|
|
89
|
+
"frqtl/objects/setup/setupG2Sweep.js": "2d44e194a6def2f5cb3eb32db4d69b7f709894f345b77d2305047f37a5d14773",
|
|
90
|
+
"frqtl/objects/setup/setupG3Collide.js": "f3e9c5f0a9efc2c50d92d48b975544d40a48d03b189969217fe994df7385ae48",
|
|
91
|
+
"frqtl/objects/setup/setupLightSourceLab.js": "4b31ecf0d97244058883876f2577e601846d72ee244fdb210fdfcb660b0d0b53",
|
|
92
|
+
"frqtl/objects/setup/setupOscillator.js": "0b706b20d98088f47c351b0b84280cf5e4468504bb07517360f3999a0cf0fbfb",
|
|
93
|
+
"frqtl/objects/setup/setupParticleWalk.js": "38e1a939c180d1921c9b338083017505a3326936531cfae62c603b3b86c3b033",
|
|
94
|
+
"frqtl/objects/setup/setupParticleWalk3D.js": "df0a24aaf3d9acb474faa9f7b7a4c83446e63935d2e7e0f28185fd197097a15e",
|
|
95
|
+
"frqtl/objects/setup/setupSphereEmitter3D.js": "aba08f21ec1fb402a450b3e9ae8d33b91501d8556707e9b8b43e636397cf8cda",
|
|
96
|
+
"frqtl/objects/setup/setupTraceCircuit.js": "cc551cdfa1879289574dd93b97669387371c488b27ec6b53df2ff75ba83525f0",
|
|
97
|
+
"frqtl/objects/setup/setupTunnelLab.js": "6125711bde04577372ac9dd95deb521fc58ad3d97a73699df2bed5636804d25b",
|
|
98
|
+
"frqtl/objects/setup/setupTunnelPointExit.js": "d68c25e14b3876a04f7aca8324b647cce2ac6f9265d38b88cabba99f2d02c25d",
|
|
99
|
+
"frqtl/objects/setup/setupWaveInterference.js": "b74e1406580a0bd2749686f87f9eec929e3e33c2fe6a7648cdaa2a26449e4fc1",
|
|
100
|
+
"frqtl/objects/v1-replacements.js": "7be6910430fcfbbe39db2a60b991b9c0b3ded9a8c05295060107042cee6bc201",
|
|
101
|
+
"frqtl/package-core.js": "4e645a91edf27f9631dd97aeafc72b11c06a7fbfc0f435d194f4635da872f6d7",
|
|
102
|
+
"frqtl/parts/CameraControls.js": "22438f83b02004772586dc99009fb025cdf2680b7c23e9023207f58e4fafca13",
|
|
103
|
+
"frqtl/parts/CameraPath.js": "bf5d620b2789c76b5a79c092ae0a3dc802fa6ef28a05df2ed1935481d4bba636",
|
|
104
|
+
"frqtl/parts/CollisionActions.js": "c14c7257fa8bf2add3784dfff0e78a4098640a5a8cec4b40c7cb60ba3197f3a2",
|
|
105
|
+
"frqtl/parts/CollisionTypes.js": "3290b8caf557c2801d3e0a8400d7cfd0cc9cbd14ae4247707747dc109a658789",
|
|
106
|
+
"frqtl/parts/DetectorWall.js": "bc3abc2d1e9444e38b3ed9b6cca289ff6a906d8eecf915bb82d149943a44b009",
|
|
107
|
+
"frqtl/parts/FrqtlControlOverlay.js": "f862b1529265224aa96878b56b0c1c6e65683ba3fd6b517df86e17e92147f9c4",
|
|
108
|
+
"frqtl/parts/FrqtlControlsPanel.js": "88f512ca6436f0c9ce4bc2b6848b2c4fc7ffb5ef9ff00138e2f072385f03213d",
|
|
109
|
+
"frqtl/parts/FrqtlVision.js": "d4f913f92810bf33a989858616b7dee776e01edd48fbaf4b31f0606fb85ec0fd",
|
|
110
|
+
"frqtl/parts/GraphingDetectorWall.js": "6bff06f951459a3cd327c2eb235d159520933762be0343e1925d153fc2fe6423",
|
|
111
|
+
"frqtl/parts/LargeObject.js": "637ea4c4b5052b916dace520cbb6772f1f8f2e367764ea399dab2a74fff4ed65",
|
|
112
|
+
"frqtl/parts/LightColor.js": "8637e5a09bbad3a4fdd2034ccb44dfc1fda743e29b12b4c685a64b9e1df28daa",
|
|
113
|
+
"frqtl/parts/LiveChart.js": "16fc591c02064dc2a9ea99737acbacac1e3b6c8d90079bf260d58af3016ded02",
|
|
114
|
+
"frqtl/parts/LogicGate.js": "e21a6f030908bbcfacc9bb27e4d20cdbbb54c712034121981bdc97c6266c1d0e",
|
|
115
|
+
"frqtl/parts/OvenBox.js": "c72f4dad019e60a300c9c96f64caf88b89a0f6dda07b06ad4189edfd3779ca54",
|
|
116
|
+
"frqtl/parts/PointSource.js": "a43a6c13ea8ecadc09410ca19067a41de7164aa8a2f58547dc227a1efd4bf0b5",
|
|
117
|
+
"frqtl/parts/Rectangle.js": "8be4cae13135c3cb185d025dfd10d3a03b21d5627bfa92363c2faa021f751571",
|
|
118
|
+
"frqtl/parts/SlitLightSource.js": "86472f096a1f1aa19c6e5d39657eed0f99df117f86152c51cdf84a56342903f7",
|
|
119
|
+
"frqtl/parts/SlitScreen.js": "147b86b39128b245c51649f3ac66f31afae128a01e1ac30083ef252b569db75d",
|
|
120
|
+
"frqtl/parts/SphereEmitter.js": "4163751c331aca9b45643ce67eb7e8912ffdbdb3cbd6944e9ae38f707eb0b5ca",
|
|
121
|
+
"frqtl/parts/Trace.js": "63944f420b6538a88609a1f251b5f5d909ac9835f556d82f73525077ba6a6df6",
|
|
122
|
+
"frqtl/parts/Tunnel.js": "4f44e901bc1171bf7c2933c794a8be63702594d7a2babc05382e91c22315b363",
|
|
123
|
+
"frqtl/parts/Wall.js": "0a643bdaaa6b799a10ed92dda831074c2081e45742bac0f1e15ad9f9901ad22e",
|
|
124
|
+
"frqtl/parts/index.js": "70b8e227e09663889f4c7942d385f843d977579765723f829880fd6e9868ac53",
|
|
125
|
+
"frqtl/scenes/absorbing-wall-3d.js": "7e0e1e3ab1df56558c2a818fc501e54f90806fc029d8c58ed84fa0bf293717e7",
|
|
126
|
+
"frqtl/scenes/absorbing-wall.js": "6d5b5eae8f26af998bd41f5b8e304562dd96188f1efdc1900afecd556e92f9c0",
|
|
127
|
+
"frqtl/scenes/atomic-model.js": "fdbf7c96f1482ea79a3257d75ae28a9e379cbc34414df120678521fac8720007",
|
|
128
|
+
"frqtl/scenes/big-bang.js": "b6324009a011c34b45e5d19fdf5fae57ca11749d585f8c773032a55d6a42b7d7",
|
|
129
|
+
"frqtl/scenes/blackbody.js": "b516832c84800aa4ac818a9f90f52e81c1611ca39f1258d49ff1835f057c29a6",
|
|
130
|
+
"frqtl/scenes/circuit-sat.js": "4d6669bf3191d24134a5340ec1a28871308d005a31e89844879e59e02bd215d7",
|
|
131
|
+
"frqtl/scenes/collision-matrix-3d.js": "bedd47b7da995e7100040c5598e42d604db46485b875954e0b47e756644b17dd",
|
|
132
|
+
"frqtl/scenes/counting-wall-3d.js": "ebd09c137b7c56e429da297681db00a4d3ee7e9e5f9fabe74ae9fc4908ce4919",
|
|
133
|
+
"frqtl/scenes/counting-wall.js": "0ba692fc87d34eee2d3ce258473f709960b24d047a4a9543904b70986214deb4",
|
|
134
|
+
"frqtl/scenes/double-slit.js": "543b2385c891d64b59486362d1191ba580fcd71934dd15bf90ef1be701d9cf03",
|
|
135
|
+
"frqtl/scenes/dse-one-emitter.js": "706e1ec29b71ce452241ebf08bbabfa8619076bb14877d5938e846303eac38f6",
|
|
136
|
+
"frqtl/scenes/dse-one-slit.js": "40a0e2f72efd6b91d53ff5208d183efdc8dba0d6318ca7e327d4d231821ef7dc",
|
|
137
|
+
"frqtl/scenes/dse-photoelectric.js": "5e2dcc7800c8a825fd98115dd9dcfe1408d8433e94af5148b74ed576ae1633d5",
|
|
138
|
+
"frqtl/scenes/dse-tunnel-rebuild.js": "0a201802e74dad97b88d7bc15fcba683f395b0e77b8f53e523deecb901e1da80",
|
|
139
|
+
"frqtl/scenes/dse-two-emitters.js": "fa8fdebcb9777fc59e376f5890c24a5253872b52884182a3e92a5bb5d1b2128f",
|
|
140
|
+
"frqtl/scenes/dse-two-slits.js": "7b9c432b4fc34511adaa7f9802331ca449f8d5157441d660c8806aa59015e1b0",
|
|
141
|
+
"frqtl/scenes/empty.js": "90ebe0cee9f0374f564ce49c4b2bba87336c2ab64011d993402d1ff5a22857f7",
|
|
142
|
+
"frqtl/scenes/laser-buildup.js": "bb10c7a20b44027ed9d7b51e0e570fdd1aa7210a4e36d7d8d0ba1943b8e2c684",
|
|
143
|
+
"frqtl/scenes/mirror-3d.js": "c1ad185083bea8a661d6605237b97f177604ca41698c18787fe7e93ab8dc0f87",
|
|
144
|
+
"frqtl/scenes/mirror-route.js": "625dbe9404d25858cb38d7cc41739d51d9b83abc2d9847dfca82018f0b08a1a1",
|
|
145
|
+
"frqtl/scenes/mirror.js": "bcd7fa5fd02bdc760ffc3ff530dd78715fcc506d54b57169bcf4e059b6452931",
|
|
146
|
+
"frqtl/scenes/omni-3d.js": "5ebcc692b73196d3dc57d5fbadc117a290d5e6c0022df755ed328c2613a47a62",
|
|
147
|
+
"frqtl/scenes/omni-source.js": "d872a14258ffe700442216c8932a62cc28cf25ab630a5c8122b42ea0040881cd",
|
|
148
|
+
"frqtl/scenes/self-interference.js": "f5928322ebb475d343ec2b2c0877a4532a0c6ad050b46e07a83ccf1a498ac110",
|
|
149
|
+
"frqtl/scenes/smoking-gun.js": "57641d90b308e258fa646a0f2151f7c4b7ff0dd6aca831548e7fbc0bbc1109c0",
|
|
150
|
+
"frqtl/scenes/straight-walk.js": "ef46ff908ab6b60086adee3fb575ed674f0e015e3729afd9d7aa843683a2ee9e",
|
|
151
|
+
"frqtl/scenes/sun.js": "87ef0b74b4f9bc960b5fbf73a96a7f71aa0eb60122546003ae35409d9283e25b",
|
|
152
|
+
"frqtl/scenes/two-source.js": "914f7ba4e0d2ca67f2da126b788196653d4e061734956e43898904e42bd5f428",
|
|
153
|
+
"frqtl/scenes/wave.js": "ca91454ac21f81e25d3c273bc9ac2ee3b3131b75de1ac38ecac8d89b4f61c344",
|
|
154
|
+
"shim/bundle/frqnb.js": "a237a81eb6074412d9a21f9dd7db96c80e1a4bc4c5f2a4b22f5ae556a37f6d5e",
|
|
155
|
+
"shim/bundle/index.js": "6f82d9636233a6008e6d72d75df83aaef881ea711625eb24bc8841c6a2597376",
|
|
156
|
+
"shim/bundle/indexHtml.js": "6d3ce242c4f139b542981164fe2b1d8b1c37d9423904bc1299531f594ce4ccc6",
|
|
157
|
+
"shim/bundle/manifest.js": "8a7a8099a01aa46b713f178dee29bfeb8d46f4020a2f59f6a564e33be35e6c2e",
|
|
158
|
+
"shim/bundle/zip.js": "00f7b5fb5f36ff40a59d86758c503d9d7fb43949c1b5a4f2e7367c43d92786f9",
|
|
159
|
+
"shim/bus.js": "dac2eeccd8774268c51014be4c46c00b9985fdf49ebb44355aa370e949c8c5bc",
|
|
160
|
+
"shim/controls/index.js": "2aaf1f14b104bba8b912d68fe99068a8c544770b9eac43cdf6d992c311ec8f69",
|
|
161
|
+
"shim/controls/registry.js": "3df843d774968d18e012624f2aba2fb09b08ede9e21b6c1f6687d4f3e9b46d3e",
|
|
162
|
+
"shim/engine/artifact-shell.js": "b4c1d8bf65403caea9357fecd91172a1689baed8aad89433160d595881f16010",
|
|
163
|
+
"shim/engine/boot-phases.js": "c6e12e12824bcf6f1a289f46e41c898a5416c80c131594525145aae9a3eefbfa",
|
|
164
|
+
"shim/engine/engine-stack-boot.js": "0abf57dcff2ca2bb025c787a17875d49d54d9218ac08c78cb9c678dbb6118d08",
|
|
165
|
+
"shim/engine/router.js": "9ac337a9a774e5abff431c53f37fdbb6a45c29329dfc4bfbefc44bc676e98e71",
|
|
166
|
+
"shim/experiment-frame/index.js": "5a0219aaa225d8f808c405b08623ce85ada37d83fb4f55f983db3303e431e47f",
|
|
167
|
+
"shim/expr/ast-schema.js": "4f1133b887639bbd86fab976292323bf4a955cdc873ff7ca8e8a8eb3b416923f",
|
|
168
|
+
"shim/field-descriptor/index.js": "6647d57d1523519114adc0a5cb66335ec5121c39ab294b9c97bdfb9e5d7f61e0",
|
|
169
|
+
"shim/frame-data/index.js": "df6957b0b4a8e0ee0035bc970647b90089b421ae7f05911cc047d48457164be6",
|
|
170
|
+
"shim/index.js": "d1f7d9a0a1fea320f641e2f9ec36174f243f03aca1a84804d74b33363703c8dc",
|
|
171
|
+
"shim/notebook/canvas-guard.js": "b19d3a86df3835bd617c7130cde997b6f8a8a0c140f95338b733115d5947ed7b",
|
|
172
|
+
"shim/notebook/catalog.js": "68243a154e12bf36a76598aa554119f6e3b8b5363c8452d157c8a562b9c38dc1",
|
|
173
|
+
"shim/notebook/format.js": "a552b161792873252a2163cd382bec2eb86651bcbdf96bd449d1b0007a0f2560",
|
|
174
|
+
"shim/notebook/frqtl-setups-importmap.js": "df86defa90cb85675564e7bb269451684b5cc7679f2c6b1884c07c8272e8ff1c",
|
|
175
|
+
"shim/notebook/kernel.js": "65cf7e4ba12b24521143997a38cb0e7d0a8aa63f9f46868494eff7a41a887c7b",
|
|
176
|
+
"shim/notebook/knob.js": "f07e9ac9697c7178aa68e4b2f4300145f8e2d2dc41b64aa0afede7e2d68705b1",
|
|
177
|
+
"shim/notebook/module-resolver.js": "0bcf6ca4954e198dd77ce61b502cebed6d2c118926fd0d2dd0816991b8334b7a",
|
|
178
|
+
"shim/notebook/notebook-knobs.js": "891cd6a24ed70256ed723844918866ba162dd71f839cd06ff4d8fc92a0a17452",
|
|
179
|
+
"shim/notebook/produced-bindings.js": "3d46038ec541a9ff896abae4f62d25780633cdc952e4c9d0d90d917298471090",
|
|
180
|
+
"shim/notebook/realm-registry.js": "ffee52e7c93447c8b82bfc0784b51346686b4373766da298f50a759d3443ab6a",
|
|
181
|
+
"shim/notebook/realm-transport.js": "5173676a94211f85122e0581a16abba925e9c4b5900b5891911bfaec5ea02daf",
|
|
182
|
+
"shim/notebook/setup-builder.js": "abf8a7fed017776634d5ae3b595de7f00b32779590319cd48d95a6d9d0523a96",
|
|
183
|
+
"shim/notebook/store.js": "ff73cd6f2d9ffa4dc434f15edbf69c5c62360b0ced6a023fd6279f6d95ae895e",
|
|
184
|
+
"shim/notebook/vendor-importmap.js": "0c6578567980225593690e06fb4d32f0b50c47fe87a7467741a03846f6da68ed",
|
|
185
|
+
"shim/notebook/view-builder.js": "1961962be16ef526934c43193828473447f2ec9ac0144f39bc5108c327d9069a",
|
|
186
|
+
"shim/notebook/view-ctx.js": "6287aee366104bece827eecccf675540571d6db2b6833bff837be49eb60ce111",
|
|
187
|
+
"shim/notebook/view-handle.js": "fe0d1530e3311cb96bb22f5cded35b9f25a0a4ef002588f3e47d9eef8089664d",
|
|
188
|
+
"shim/notebook/warmup.js": "453b9e8b4969bcc704e1fbc636c3ada869ebf692651cfbf950107fd1cb662e25",
|
|
189
|
+
"shim/package.json": "609158e6c5fbc237939fa3ddf7faab80ab690bdc0c8d584414a885130103c4e8",
|
|
190
|
+
"shim/page-params/index.js": "50d410854d91e85945840ee4459045f3ca816b5f6dda4d5fb5bcac65fea5275f",
|
|
191
|
+
"shim/project/identity.js": "5a0dbd07bfad5c5aa6a529994a604546dbf3e6978b9529ca97ce2c57aa8e563f",
|
|
192
|
+
"shim/project/index.js": "316b76daf970f3dc245fdb868095fd556ebee98f113de83029cbd76dfacda7ac",
|
|
193
|
+
"shim/project/link.js": "f1b064052a87a4f8c46fb5fd86402971c436a24adb3c069318b68b5dc694ca5c",
|
|
194
|
+
"shim/project/node-specifier-hook.mjs": "8601edf762bd9cd011632bc681d0589dfc77368cda0e994125d0eb123fea89d0",
|
|
195
|
+
"shim/project/register-node.mjs": "9b408da7dc1b11d16237cd62caca281c823ea80173d386ad35e41ea17c34857f",
|
|
196
|
+
"shim/project/specifiers.js": "a7e7f3dd193783faac00d63360acff525db3af6d0abae012e90bd31c3d29b8ae",
|
|
197
|
+
"shim/registry/copy-gate.js": "cfbf52669c849b8837b326f2743458f1ead0720cad51a6c6d409c9bd6c7f9495",
|
|
198
|
+
"shim/registry/exhibits.js": "98736b6b0dd82b5c1436da28fe3bf8d2d3ee840af8f5256d00c23e296c3bca9a",
|
|
199
|
+
"shim/registry/experiments.js": "1d1484f144ade35ddcb94b23712df539b3b432a45130e159a6f47146de188165",
|
|
200
|
+
"shim/registry/index.js": "2a8e27dc83b5f7eb74b747b511ebc413a0de0dd43e27535296f504535353e2cd",
|
|
201
|
+
"shim/registry/scene-source.js": "1e02af7af7ee0d879554f9dc12b9aba446d7966a3ea6aa6b4b2e8b460041ab01",
|
|
202
|
+
"shim/registry/walkthrough.js": "de183ca9c6293fddb5b13f1f026dd18cd3dd9d66df10dc3dc323f62d7a85e6ce",
|
|
203
|
+
"shim/render-state/apply.js": "6b4c830c39b5f669fc1b56b90582fcea00441fd871d7a4edc8ffc37afaebf793",
|
|
204
|
+
"shim/render-state/index.js": "9015405ef2ea3d88bf004a0aa3bea04eb6bdb86270d68ef5622538a9bae5fa6d",
|
|
205
|
+
"shim/render/capture-envelope.js": "2667a355169bb124fd8117e9cbf1d630085257b9f6fa537362f12d0aa649da2d",
|
|
206
|
+
"shim/render/heat-colormap.js": "0eadc758179024734c45eaeffd8f5b44e7c4102b7042767a4a5b66541b3bbd7c",
|
|
207
|
+
"shim/render/render-stages.js": "baf674c205df7638af53e51ac77152a448fe6bf6d4ea51d58ac565556cd38da7",
|
|
208
|
+
"shim/render/sun-look.js": "f8f23f0853a9c22459fff866ccf59ab00332697d48fd529fca5c2e8554a2d83d",
|
|
209
|
+
"shim/rpc/index.js": "56af3afeed22e8d718cd2f7a8ad70db8745f54dbc139af9d71f1d73e2ca37698",
|
|
210
|
+
"shim/runtime/index.js": "cd728294c4693de3059f30f272f267b88b39c19a451edd30c75012e1bab755f5",
|
|
211
|
+
"shim/storage/boot.js": "689504e15dc075e32d08abf61c75a45b1d565c09f086b42400dae40d8186c411",
|
|
212
|
+
"shim/storage/index.js": "9f10a2ac220e7066493c3da0cea125ab5afb1e3d27d71fbef349f99caaeaa8b9",
|
|
213
|
+
"shim/storage/local-storage-provider.js": "e14894e5d33bce961e66a2816e4b5c23b8e00534398ca9635d19de117f0f150e",
|
|
214
|
+
"shim/storage/make-namespace-store.js": "da15fe99b19e25bd6e7f1c9e8a8852b15c43627fc0f9e2eb909503736f850a4a",
|
|
215
|
+
"shim/storage/modules.js": "ceee32e0ea101ae49e5b0ab63007972a3f4127e9d81bbd2cf24cdb47d491623b",
|
|
216
|
+
"shim/storage/projects.js": "1c7398dedbb7a67c80acbfe0dfb08ba4f069db9a7d946266c4636212834bd671"
|
|
217
|
+
}
|
|
218
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/* Copyright 2023-2026 by Essam Abadir */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* eyes.js — the HOSTED EYES entry of `@descix/frqtl-node` (`exports["./eyes"]`), node-only.
|
|
5
|
+
*
|
|
6
|
+
* Ships at `dist/eyes/index.js`. It is a SEPARATE entry from `.` for exactly one reason: it is the
|
|
7
|
+
* only surface in this package with a heavyweight runtime dependency.
|
|
8
|
+
*
|
|
9
|
+
* ── Why the dependency is REAL, pinned, and lives HERE ───────────────────────
|
|
10
|
+
*
|
|
11
|
+
* `composite` is the render stack's own output. A node raster backend that RE-DREW the
|
|
12
|
+
* scene would show an agent a different picture than the end user sees — which is the whole
|
|
13
|
+
* failure the hosted design exists to avoid (a god-rays shader turns a bunch of particles
|
|
14
|
+
* into A SUN; the renderer and its filters are part of the experiment, not decoration). So
|
|
15
|
+
* the eyes look through the SAME stack, in a real browser, and the browser is therefore not
|
|
16
|
+
* an optional extra — it is THE default stack this package ships for anyone who does not
|
|
17
|
+
* BYO one.
|
|
18
|
+
*
|
|
19
|
+
* That is why `playwright` is a real `dependencies` entry, PINNED to an exact version (a
|
|
20
|
+
* range would let a browser build drift under a published corpus, and the raster path is
|
|
21
|
+
* provenance — see `build.gl`), and NOT `optionalDependencies`: an optional dependency is a
|
|
22
|
+
* surface that sometimes exists, which is a compat fence wearing a package-manager hat.
|
|
23
|
+
* Keeping it off the `.` entry keeps the core install exactly as light as it
|
|
24
|
+
* was: a consumer who never imports `./eyes` never loads it.
|
|
25
|
+
*
|
|
26
|
+
* The BYO seam is `browserType`: pass your own Playwright browser type (or a compatible
|
|
27
|
+
* driver) and this entry gets out of the way. The library layer
|
|
28
|
+
* (`lib/frqtl/objects/instruments/hosted-eyes.js`) REQUIRES it and declares no dependency of
|
|
29
|
+
* its own — the dependency is declared exactly once, by the entry that ships it.
|
|
30
|
+
*
|
|
31
|
+
* The picture is the scene SOURCE plus the `renderState` you hand it — nothing else. A
|
|
32
|
+
* walk-through rung's look (render rows, filters, camera) lives on its registry row, not in its
|
|
33
|
+
* sketch: pass `effectiveRenderState(rung, mode)` as `renderState` to record the rung as the GYM
|
|
34
|
+
* shows it; the sketch alone records its PLAIN render.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* import { openHostedEyes } from '@descix/frqtl-node/eyes'; // or require() from CommonJS
|
|
38
|
+
* const eyes = await openHostedEyes({
|
|
39
|
+
* sceneRecord: { seed: 42, sourceRef: 'my-scene' },
|
|
40
|
+
* sceneSource: { kind: 'project', files: { 'sketch.js': buildExperimentSource }, entry: 'sketch.js' },
|
|
41
|
+
* pageUrl: 'http://localhost:8080/experiments/empty/index.html'
|
|
42
|
+
* });
|
|
43
|
+
* try {
|
|
44
|
+
* await eyes.driveToTick(300);
|
|
45
|
+
* const still = await eyes.vision.getStill('composite'); // the SAME normalized bag
|
|
46
|
+
* eyes.saveStill(still, 'out.png'); // …and the picture, in one line
|
|
47
|
+
* } finally { await eyes.dispose(); }
|
|
48
|
+
*
|
|
49
|
+
* `FrqtlVision` is re-exported for the encoder itself (`FrqtlVision.toPNG(still)` → PNG bytes) — the
|
|
50
|
+
* node half of the one-encoder-per-host pair; it is the parts barrel's own instance.
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
import { createRequire } from 'node:module';
|
|
54
|
+
import { FrqtlHostedEyes as HostedEyes } from '../frqtl/objects/instruments/hosted-eyes.js';
|
|
55
|
+
import { FrqtlVision } from '../frqtl/parts/index.js';
|
|
56
|
+
|
|
57
|
+
// The WRONG-HOST DOOR: `./eyes` DRIVES a browser from node; loaded IN a page it can only fail, so the
|
|
58
|
+
// wrong host gets a thrown error naming the right door, BEFORE any dependency resolves.
|
|
59
|
+
if (typeof document !== 'undefined') {
|
|
60
|
+
throw new Error(
|
|
61
|
+
'[frqtl-node/eyes] `@descix/frqtl-node/eyes` is a NODE-HOST surface and this is a browser.\n' +
|
|
62
|
+
'\n' +
|
|
63
|
+
'openHostedEyes LAUNCHES a real browser (playwright) and drives a page from outside it —\n' +
|
|
64
|
+
'there is nothing for it to launch from inside one.\n' +
|
|
65
|
+
'\n' +
|
|
66
|
+
'THE RIGHT DOOR IN A PAGE is @descix/frqtl-web: import { FrqtlCapture, FrqtlVision } from\n' +
|
|
67
|
+
"'@descix/frqtl-web' — the in-page capture tap, already looking through THIS page's own\n" +
|
|
68
|
+
'render stack. To boot a scene into the page first, use @descix/frqtl-web/boot.\n' +
|
|
69
|
+
'\n' +
|
|
70
|
+
'(FAIL-LOUD.)'
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const require = createRequire(import.meta.url);
|
|
75
|
+
let _memoBrowserType = null;
|
|
76
|
+
|
|
77
|
+
/** The pinned playwright's chromium (resolved on first use). */
|
|
78
|
+
function _defaultBrowserType() {
|
|
79
|
+
if (_memoBrowserType) { return _memoBrowserType; }
|
|
80
|
+
let pw;
|
|
81
|
+
try { pw = require('playwright'); }
|
|
82
|
+
catch (e) {
|
|
83
|
+
throw new Error('[frqtl-node/eyes] the pinned `playwright` dependency is not installed ' +
|
|
84
|
+
'(' + (e && e.message) + '). It is a REAL dependency of this package, not an ' +
|
|
85
|
+
'optional one: the hosted eyes look through a real browser because that is the only ' +
|
|
86
|
+
'way an agent sees the real render stack\'s picture. Reinstall the package, or pass your ' +
|
|
87
|
+
'own `browserType` (the BYO seam). (FAIL-LOUD.)');
|
|
88
|
+
}
|
|
89
|
+
if (!pw || !pw.chromium) {
|
|
90
|
+
throw new Error('[frqtl-node/eyes] `playwright` resolved but exposes no `chromium` browser type. (FAIL-LOUD.)');
|
|
91
|
+
}
|
|
92
|
+
_memoBrowserType = pw.chromium;
|
|
93
|
+
return _memoBrowserType;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* openHostedEyes(opts) — HostedEyes.open with the packaged browser as the default `browserType`.
|
|
98
|
+
* @param {object} opts — see lib/frqtl/objects/instruments/hosted-eyes.js open()
|
|
99
|
+
* @returns {Promise<object>} the handle
|
|
100
|
+
*/
|
|
101
|
+
export function openHostedEyes(opts) {
|
|
102
|
+
const bag = Object.assign({}, opts || {});
|
|
103
|
+
if (!bag.browserType) {
|
|
104
|
+
Object.defineProperty(bag, 'browserType', { get: _defaultBrowserType, enumerable: true, configurable: true });
|
|
105
|
+
}
|
|
106
|
+
return HostedEyes.open(bag);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export { FrqtlVision };
|