@descix/frqtl-node 0.6.0-p0.2 → 0.6.0-p4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CLAUDE.md +2 -2
  2. package/README.md +8 -4
  3. package/dist/dist-manifest.json +70 -62
  4. package/dist/eyes/index.js +5 -2
  5. package/dist/frqtl/assets/vendor/acorn.LICENSE +21 -0
  6. package/dist/frqtl/assets/vendor/acorn.PINNED.json +9 -0
  7. package/dist/frqtl/assets/vendor/acorn.mjs +6266 -0
  8. package/dist/frqtl/compat/renderer/lo-drawn-center.js +41 -0
  9. package/dist/frqtl/experiments/_shared/boot-failure.js +60 -0
  10. package/dist/frqtl/objects/FrqtlApp.js +136 -30
  11. package/dist/frqtl/objects/ObjectFactory.js +4 -5
  12. package/dist/frqtl/objects/RecipeContext.js +617 -9
  13. package/dist/frqtl/objects/instruments/hosted-eyes.js +268 -57
  14. package/dist/frqtl/objects/objects/QuantumEmitter.js +1 -1
  15. package/dist/frqtl/objects/record/Record.js +326 -0
  16. package/dist/frqtl/objects/record/open-record.js +22 -0
  17. package/dist/frqtl/objects/schema/index.js +72 -0
  18. package/dist/frqtl/parts/DetectorWall.js +1 -1
  19. package/dist/frqtl/parts/FrqtlControlsPanel.js +4 -2
  20. package/dist/frqtl/parts/FrqtlVision.js +21 -6
  21. package/dist/frqtl/parts/Wall.js +2 -0
  22. package/dist/frqtl/scenes/absorbing-wall-3d.js +18 -14
  23. package/dist/frqtl/scenes/absorbing-wall.js +18 -14
  24. package/dist/frqtl/scenes/atomic-model.js +3 -0
  25. package/dist/frqtl/scenes/big-bang.js +3 -0
  26. package/dist/frqtl/scenes/blackbody.js +14 -11
  27. package/dist/frqtl/scenes/circuit-sat.js +7 -4
  28. package/dist/frqtl/scenes/collision-matrix-3d.js +3 -0
  29. package/dist/frqtl/scenes/counting-wall-3d.js +19 -15
  30. package/dist/frqtl/scenes/counting-wall.js +19 -15
  31. package/dist/frqtl/scenes/double-slit.js +3 -0
  32. package/dist/frqtl/scenes/dse-one-emitter.js +64 -58
  33. package/dist/frqtl/scenes/dse-one-slit.js +59 -55
  34. package/dist/frqtl/scenes/dse-photoelectric.js +28 -24
  35. package/dist/frqtl/scenes/dse-tunnel-rebuild.js +124 -99
  36. package/dist/frqtl/scenes/dse-two-emitters.js +64 -58
  37. package/dist/frqtl/scenes/dse-two-slits.js +69 -65
  38. package/dist/frqtl/scenes/empty.js +3 -0
  39. package/dist/frqtl/scenes/laser-buildup.js +23 -16
  40. package/dist/frqtl/scenes/mirror-3d.js +31 -27
  41. package/dist/frqtl/scenes/mirror-route.js +4 -1
  42. package/dist/frqtl/scenes/mirror.js +24 -20
  43. package/dist/frqtl/scenes/omni-3d.js +7 -4
  44. package/dist/frqtl/scenes/omni-source.js +7 -4
  45. package/dist/frqtl/scenes/self-interference.js +13 -10
  46. package/dist/frqtl/scenes/smoking-gun.js +15 -11
  47. package/dist/frqtl/scenes/straight-walk.js +7 -4
  48. package/dist/frqtl/scenes/sun.js +11 -8
  49. package/dist/frqtl/scenes/two-source.js +22 -17
  50. package/dist/frqtl/scenes/wave.js +10 -7
  51. package/dist/shim/bundle/index.js +112 -96
  52. package/dist/shim/bundle/indexHtml.js +66 -39
  53. package/dist/shim/engine/router.js +2 -2
  54. package/dist/shim/index.js +1 -1
  55. package/dist/shim/notebook/format.js +1 -1
  56. package/dist/shim/notebook/store.js +2 -3
  57. package/dist/shim/page-params/index.js +2 -2
  58. package/dist/shim/project/index.js +20 -5
  59. package/dist/shim/project/link.js +182 -37
  60. package/dist/shim/project/manifest.js +151 -0
  61. package/dist/shim/project/parts-module.js +67 -0
  62. package/dist/shim/project/parts-writer.js +457 -0
  63. package/dist/shim/project/record-format.js +345 -0
  64. package/dist/shim/project/specifiers.js +41 -13
  65. package/dist/shim/registry/index.js +1 -1
  66. package/dist/shim/registry/scene-source.js +44 -30
  67. package/dist/shim/registry/walkthrough.js +13 -12
  68. package/dist/shim/render-state/apply.js +11 -14
  69. package/dist/shim/storage/codec-chains.js +88 -0
  70. package/dist/shim/storage/folders.js +205 -0
  71. package/dist/shim/storage/index.js +64 -8
  72. package/dist/shim/storage/make-namespace-store.js +5 -5
  73. package/llms.txt +2 -2
  74. package/package.json +1 -1
  75. package/dist/shim/bundle/frqnb.js +0 -112
  76. package/dist/shim/bundle/manifest.js +0 -95
  77. package/dist/shim/storage/modules.js +0 -249
  78. package/dist/shim/storage/projects.js +0 -150
package/CLAUDE.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A discrete cellular-automata physics engine (compiled Rust → WASM) for node: the same modules as
4
4
  `@descix/frqtl-web` (one source, built twice), plus the node engine door `bootNode` and the hosted eyes.
5
- Pre-release `0.6.0-p0.2` (npm dist-tag `next`). Node ≥ 22.12.
5
+ Pre-release `0.6.0-p4.1` (npm dist-tag `next`). Node ≥ 22.12.
6
6
 
7
7
  ## Install
8
8
  npm install @descix/frqtl-node@next
@@ -46,7 +46,7 @@ const eyes = await openHostedEyes({
46
46
  sceneRecord: { seed: 42, sourceRef: 'my-scene' },
47
47
  sceneSource: { kind: 'project', files: { 'sketch.js': text }, entry: 'sketch.js' }, // REGENERATE-grade
48
48
  renderState, // optional: the declared look
49
- pageUrl: '<origin>/experiments/empty/index.html' // a served @descix/frqtl-web dist
49
+ pageUrl: '<dist>/experiments/empty/index.html' // <dist> = a served @descix/frqtl-web dist's URL (root or sub-path)
50
50
  });
51
51
  try {
52
52
  await eyes.driveToTick(300);
package/README.md CHANGED
@@ -4,7 +4,7 @@ FRQTL for node: a discrete cellular-automata physics engine (compiled Rust → W
4
4
  local per-pixel rules — a frame moves one pixel per tick, single occupancy, momentum — rather than force
5
5
  equations. Interference, blackbody spectra and atom-like binding emerge from the automaton.
6
6
 
7
- Pre-release `0.6.0-p0.2` (npm dist-tag `next`). Node ≥ 22.12.
7
+ Pre-release `0.6.0-p4.1` (npm dist-tag `next`). Node ≥ 22.12.
8
8
 
9
9
  ## Install
10
10
 
@@ -31,8 +31,8 @@ const tick = u.doTick(); // TickData: fr
31
31
  | `.` | the parts (`Wall`, `SphereEmitter`, `Tunnel`, `FrqtlVision`, …), `bootNode`, the engine accessors (`engine`, `engineState`), the capture contracts (`FrqtlCapture`, `RenderStages`, `FieldBuilder`, `CaptureEnvelope`) and `validateRendererProvider` |
32
32
  | `./eyes` | `openHostedEyes` — a `composite` still through the REAL renderer, in a managed headless browser (pulls the pinned `playwright`) |
33
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` |
34
+ | `./project` | `FRQTL_WEB_SPECIFIERS`, `libPathOf`, `importMapFor`, `pageImportMapFor`, `FRQTL_WEB_HOST_SPECIFIERS`, `linkProject`, `sketchProject`, `SKETCH_ENTRY`, `projectIdentity`, `MANIFEST_FILE`, `MANIFEST_KEYS`, `normalizeManifest`, `parseManifest`, `serializeManifest`, `manifestFor`, `RECORD_FILES`, `RECORD_KEYS`, `CHANGE_KEYS`, `OPS`, `BY`, `CLIP_SECONDS`, `CLIP_NAME`, `clipName`, `jsonText`, `recordFolderFaults` |
35
+ | `./registry` | the walk-through rungs, the showcase roster, the experiment registry, `projectOf` |
36
36
  | `./kinds` | `registerKind`, `kindNamed`, `kindOf`, `registeredKinds` |
37
37
  | `./register` | installs the resolve hook for a sketch's `@descix/frqtl-web/...` imports (`node --import @descix/frqtl-node/register`) |
38
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`) |
@@ -52,6 +52,10 @@ const dataMint = (text) => ({ url: 'data:text/javascript,' + encodeURIComponent(
52
52
  const { buildExperiment } = await linkProject({ files: { 'sketch.js': text }, entry: 'sketch.js', mint: dataMint });
53
53
  ```
54
54
 
55
+ Its movable parts are `export const parts = { name: [Kind, { …props }] }`, declared by `exp.declare(parts)`; a
56
+ facade built from the linked result (`exp.build(linked)`) holds the text, and `exp.toSketch()` /
57
+ `exp.setDeclared(name, patch)` write into that block (the same contract as `@descix/frqtl-web`).
58
+
55
59
  A scene file on disk imports `@descix/frqtl-web/...`; this package resolves those specifiers to its own files
56
60
  through one resolve hook:
57
61
 
@@ -69,7 +73,7 @@ import { openHostedEyes } from '@descix/frqtl-node/eyes';
69
73
  const eyes = await openHostedEyes({
70
74
  sceneRecord: { seed: 42, sourceRef: 'my-scene' },
71
75
  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
76
+ pageUrl: '<dist>/experiments/empty/index.html' // <dist> = the URL a @descix/frqtl-web dist is served at (root or sub-path)
73
77
  });
74
78
  await eyes.driveToTick(300);
75
79
  const still = await eyes.vision.getStill('composite');
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@descix/frqtl-node",
3
- "version": "0.6.0-p0.2",
3
+ "version": "0.6.0-p4.1",
4
4
  "files": {
5
- "eyes/index.js": "c74d5595ea2f778f2f63ef3ce2b6568433cef80ec21b6d66901c1d1a942dbe9a",
5
+ "eyes/index.js": "b3563421030bb7fdd277eb697959fbe9107463cbb5478160edc7d887daa67be3",
6
6
  "fat/pkg-node/egpt_wasm.js": "5e6af1f6725c93c0e9ad7386f1785cbe639ce596a4caa19ca85729c1f2bea04d",
7
7
  "fat/pkg-node/egpt_wasm_bg.wasm": "e204498ac7439c294653476c0d214345713e6170819281b27bbbcba217a5a5e9",
8
8
  "fat/pkg-node/package.json": "a0c04cd40b60be10e9ddd6e1d4763fd578808321d663c6d4201530e2a4ebdba4",
9
+ "frqtl/assets/vendor/acorn.LICENSE": "76a876cf886ff9be2a8b5e2e86514fed06223c8c9f0c1e9ee9606e93841e00b7",
10
+ "frqtl/assets/vendor/acorn.PINNED.json": "52d5c4cf628a586aec54f780ab6b8d22ae7c22cfb290d0d86c2f589f3106b101",
11
+ "frqtl/assets/vendor/acorn.mjs": "efb0124a960b34d53f9928c4926bfcfd300bb6a3d7ab64ee949b3a8bed1c7e5f",
9
12
  "frqtl/assets/vendor/chroma.mjs": "f25f4a17d8ceedf58e278df8df83c2804b4f0cf3ff659d963da144e368f8e525",
10
13
  "frqtl/compat/boot-node.js": "7cfd4645f965fa3e3d3072688b268a8aa5b8b4d727c7d842d3bad841dacd1194",
11
14
  "frqtl/compat/engine.js": "a849144e80f93694290f4567fa78d09c88b277162be9f1c15ab820328690c3a4",
@@ -21,7 +24,7 @@
21
24
  "frqtl/compat/renderer/camera2d-geometry.js": "d34aa7737962fcbab774bff18da724aa351a47971632ad7fe052e3db0b8cdd69",
22
25
  "frqtl/compat/renderer/captureStill-common.js": "42e7d59a6142f02f15485f099b296aa047980019105043c45c4b82fdbe982094",
23
26
  "frqtl/compat/renderer/display-slot.js": "8a2e99836dcc2f95155f2cd8ffeb9267054e3848c2e8f2ce320ebaca22f80a9e",
24
- "frqtl/compat/renderer/lo-drawn-center.js": "4cb2e1f32dc03b188701163a9e3f711c344f269c7886bceb27d49fe5a4194b81",
27
+ "frqtl/compat/renderer/lo-drawn-center.js": "5d285c8e6b0775db336de559855d28d752aed7544610f0430d8a389c530673cc",
25
28
  "frqtl/compat/renderer/orbit-bag.js": "b6671d3b35fcf5f79e228934a8032e729309e62b66920602f34c834f3f911681",
26
29
  "frqtl/compat/renderer/providers/godrays-layer.js": "be76fb8e69c74dd9bd0fb9aa6189a816d0ed29b9f4e04b60277be375b93d606c",
27
30
  "frqtl/compat/renderer/providers/index.js": "fa669158a082a0081125c81694ca79962639caf86a575ee198a815f3e13a19e7",
@@ -33,16 +36,17 @@
33
36
  "frqtl/compat/renderer/renderer-provider-contract.js": "295574c6b10ce4c335b7c9a83941f3c1723b412c21f0004501add45e533bdb5a",
34
37
  "frqtl/compat/renderer/unprojectStill.js": "43c4286c124eaa238d963fe3ae5551a1c87727809d5245a129f368a117863c45",
35
38
  "frqtl/compat/vendor.js": "2393ada71cdbe750d409174e1ba9b098148796efdff746b315d706a0b32e58e8",
39
+ "frqtl/experiments/_shared/boot-failure.js": "1a92e85b06acdefede5613f2fac7cd4e61d2aba590820f1bfa92f6829fcbbdd4",
36
40
  "frqtl/node-entry.js": "a401039b4fcf53ac620edbd80985aa4448122f2e3caaeaf4d5595f5e9d512b60",
37
- "frqtl/objects/FrqtlApp.js": "ad14659c8dd980203576f9b00e5f867ee371ef31dcacf400de5f796d11b6c700",
38
- "frqtl/objects/ObjectFactory.js": "7ee0e0f996cce456e320b71b6b6bf07b5f8655223486ad9df3a466402f6f04f8",
39
- "frqtl/objects/RecipeContext.js": "e1f77a2a77bcb05859ab206bfea98746ef98cdd6e1a9a74979aa39348d058f42",
41
+ "frqtl/objects/FrqtlApp.js": "0537a6e6b71fc763e92404952263d3bef4dbf273c86d45c5609ee72e69a30a56",
42
+ "frqtl/objects/ObjectFactory.js": "a8f050ce61b7ab9c9b4f81e9eeaebf05c3cc0b532c741ce93d6e952489772b11",
43
+ "frqtl/objects/RecipeContext.js": "b21ca03f799a28848b190834274c061f6dde7fa7f3d17e5eac015550db90d8d7",
40
44
  "frqtl/objects/collectors/DataCollector.js": "8736d6cb77eec36ce2adcf2bc3b0d2436eeb70a73b77182ff053efdc6ca071df",
41
45
  "frqtl/objects/constants/WallBehaviors.js": "8a9cbdb96eadf84f1d61d215f6921124ec5dbf9e2938c09894a0aa083ddcaea0",
42
46
  "frqtl/objects/geometry/SlabFace.js": "847921b124d3bc1692e88c363c087d392a1baa7c652a3a61e381d0f8a8342e57",
43
47
  "frqtl/objects/instruments/capture-host.js": "ba5001afa2d8f4e438c5eacb2a5456d903401de8584d170c0b02ff3014794edd",
44
48
  "frqtl/objects/instruments/capture.js": "53a746cb51e1c83326eebaa98083861c7ee593f2bcb2317473446a1a02b59b5c",
45
- "frqtl/objects/instruments/hosted-eyes.js": "06f19c22291e7b2e5ca48e5037a6dd551691c49b262884507bb2fba10e8fcaab",
49
+ "frqtl/objects/instruments/hosted-eyes.js": "0d70708546f2e5917deb0a5638a535d7822f2141d69595db406cb0e074225883",
46
50
  "frqtl/objects/kinds-entry.js": "a7818357864dc900bd93350635016f938c3dca8dcb665a62df802ba5cd0b3c93",
47
51
  "frqtl/objects/kinds.js": "107b166c96c93fd517f173fdbe7006d6f0b2694d5f799f7ec9d4f695313f1832",
48
52
  "frqtl/objects/objects/Box.js": "0c08fa4753b78ef56d07aae3393a6268647b550ead58e409cff13eabc8b34b5d",
@@ -52,7 +56,7 @@
52
56
  "frqtl/objects/objects/DirectedTunnel.js": "0b5f7a15c67a837d4dfae30f08cac703cde077ce0b8990adc68e29be1d58a494",
53
57
  "frqtl/objects/objects/EgptFractal.js": "3ae5ecbdcc08ba60ab5fe06d8f5567cb16b375b1472fdad704b6ea17c5509f1e",
54
58
  "frqtl/objects/objects/LightSource.js": "4c3405b0cdba56650dbc159711e2315d2c8812f553361a6d74fb3a8b9adcbc76",
55
- "frqtl/objects/objects/QuantumEmitter.js": "2bc4e9bed97fff109153d0c4faa08b142f04b15882ddedf0e4c2080bab43e677",
59
+ "frqtl/objects/objects/QuantumEmitter.js": "471412ac884f2e95ec647477441f426b75a1a2c73d84a08489c000ae5813bdbe",
56
60
  "frqtl/objects/objects/Tube.js": "570be68d1c4c93eb43373061acb7e2ca4af64766dc818d80fdfef1b835b386da",
57
61
  "frqtl/objects/objects/absorbRadiation.js": "5ac21c0e0f21001a31bc55280dbae52d741af3fa40df094fe5ad45cb716767d3",
58
62
  "frqtl/objects/objects/actionCompiler.js": "c6118e2ab7f8376bb26aa72e0a074d1ca1ea7bae72526623d26e08fa92d918b3",
@@ -69,8 +73,10 @@
69
73
  "frqtl/objects/objects/slitLinerScatter.js": "9413cc7efa2132c68d7b4d5030af28d92e8d085e127d5c8e1568d0028da2fc13",
70
74
  "frqtl/objects/objects/sustainedSource.js": "0c324cef1583226d090b4d1014c2576ef8237f1bad47c1511bed3c3f81e04206",
71
75
  "frqtl/objects/objects/tagger.js": "e2a5ef9ae68466afb6b157ca6d7ce03a6f126d8c91c9f9d4be6dba8e928535eb",
76
+ "frqtl/objects/record/Record.js": "7dce4e1ac5b5ab842fac9f6c9d754322b3696afb7b774e8c2ac018f803a780a6",
77
+ "frqtl/objects/record/open-record.js": "2da2abcccd3ad5bc39eb7fcfb764601cd031dd0afa9b3c9cb96b0669621827df",
72
78
  "frqtl/objects/schema/engine-scopes.js": "1777dd3d2443df7c7d7fbcd25974bcb758606bdf3efa5c21408009167d00e3e6",
73
- "frqtl/objects/schema/index.js": "0a128e3f64519dad2ff00b74f2d3c26e5c9758439429d3c7ac4b66fb08796740",
79
+ "frqtl/objects/schema/index.js": "74ba0b6a6e057cfd40edf2ce41fcce7206c0204e90eeee4a8db3b711f10ffd33",
74
80
  "frqtl/objects/schema/scopes.js": "3b9c2d4f20604d6384ec625ab5e4a38085fa9696c5e443ff66b45a8f2330c5f6",
75
81
  "frqtl/objects/schema/validate-descriptor.js": "32572a7c7f5262a46d13bcd05424555151287c4438e3e081ab2f3884fd5a2f10",
76
82
  "frqtl/objects/schema/valueNormalizer.js": "00dc4eb188f23964336d45de021846b63a3603c423b5444f132bf470c73c4354",
@@ -103,10 +109,10 @@
103
109
  "frqtl/parts/CameraPath.js": "bf5d620b2789c76b5a79c092ae0a3dc802fa6ef28a05df2ed1935481d4bba636",
104
110
  "frqtl/parts/CollisionActions.js": "c14c7257fa8bf2add3784dfff0e78a4098640a5a8cec4b40c7cb60ba3197f3a2",
105
111
  "frqtl/parts/CollisionTypes.js": "3290b8caf557c2801d3e0a8400d7cfd0cc9cbd14ae4247707747dc109a658789",
106
- "frqtl/parts/DetectorWall.js": "bc3abc2d1e9444e38b3ed9b6cca289ff6a906d8eecf915bb82d149943a44b009",
112
+ "frqtl/parts/DetectorWall.js": "49d9d9526b5e36180122617dd84b16e44624eee76fb2d547868e8cd41eeacbe0",
107
113
  "frqtl/parts/FrqtlControlOverlay.js": "f862b1529265224aa96878b56b0c1c6e65683ba3fd6b517df86e17e92147f9c4",
108
- "frqtl/parts/FrqtlControlsPanel.js": "88f512ca6436f0c9ce4bc2b6848b2c4fc7ffb5ef9ff00138e2f072385f03213d",
109
- "frqtl/parts/FrqtlVision.js": "d4f913f92810bf33a989858616b7dee776e01edd48fbaf4b31f0606fb85ec0fd",
114
+ "frqtl/parts/FrqtlControlsPanel.js": "792d03dea218bdc335ba7e04362be620edbfa331bed9de087d61942299728cc1",
115
+ "frqtl/parts/FrqtlVision.js": "118d0874249fa55783b196fd01297b3347951267a4add93381433a72c46e8622",
110
116
  "frqtl/parts/GraphingDetectorWall.js": "6bff06f951459a3cd327c2eb235d159520933762be0343e1925d153fc2fe6423",
111
117
  "frqtl/parts/LargeObject.js": "637ea4c4b5052b916dace520cbb6772f1f8f2e367764ea399dab2a74fff4ed65",
112
118
  "frqtl/parts/LightColor.js": "8637e5a09bbad3a4fdd2034ccb44dfc1fda743e29b12b4c685a64b9e1df28daa",
@@ -120,41 +126,39 @@
120
126
  "frqtl/parts/SphereEmitter.js": "4163751c331aca9b45643ce67eb7e8912ffdbdb3cbd6944e9ae38f707eb0b5ca",
121
127
  "frqtl/parts/Trace.js": "63944f420b6538a88609a1f251b5f5d909ac9835f556d82f73525077ba6a6df6",
122
128
  "frqtl/parts/Tunnel.js": "4f44e901bc1171bf7c2933c794a8be63702594d7a2babc05382e91c22315b363",
123
- "frqtl/parts/Wall.js": "0a643bdaaa6b799a10ed92dda831074c2081e45742bac0f1e15ad9f9901ad22e",
129
+ "frqtl/parts/Wall.js": "37ab904fdd8fa4d786c27af17d4563f0ccd0eee037d6f7c8b24fd8333058286e",
124
130
  "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",
131
+ "frqtl/scenes/absorbing-wall-3d.js": "722bb433142833f03150052b95039686aba0d9db510a5ff13fad95b5f17e0cf8",
132
+ "frqtl/scenes/absorbing-wall.js": "0a47ca64e56481841339cd5882cf0e54ec7c14d87a4306d016ead1ff26591197",
133
+ "frqtl/scenes/atomic-model.js": "1b484ba37d90af9c06d9bf6a114b8867c914d12cc0a0dbeec27dd96230829fac",
134
+ "frqtl/scenes/big-bang.js": "e0807d81f4bcc6626080f81d472c6ead9c8d8f7d97bd67c6da76a476868b25f4",
135
+ "frqtl/scenes/blackbody.js": "bdd6ee3c628f0cf1161eeb855a4a582902ab56174da937bf0d5180d930ef8278",
136
+ "frqtl/scenes/circuit-sat.js": "953b19d0e5fbda0b36b7e42bda1538930578220c610a5591e0dc1b5e8f2bb06b",
137
+ "frqtl/scenes/collision-matrix-3d.js": "8a0c1189d5e2f23092b216515608319643bc010ff837aadffdf84b2078c96793",
138
+ "frqtl/scenes/counting-wall-3d.js": "1d08e60d58faeed4315400a2d0fbc10460d7869babc72a8dd7f906b5dff6ba54",
139
+ "frqtl/scenes/counting-wall.js": "35b617a20c154f89c63d4a60a205f5d67ba8bb3342730e269528f884a522f131",
140
+ "frqtl/scenes/double-slit.js": "d37aff36667783fe5991b8219439803facb730bd0abe9219483f2ef42056e988",
141
+ "frqtl/scenes/dse-one-emitter.js": "58cfb0e55fd54d86e1896088d36c65748499c0b94826a1c6b1b6d81b7fa41437",
142
+ "frqtl/scenes/dse-one-slit.js": "7bf299e3cc64dd3d1f8df805eec63d98d36b8592d55e3ef478d46c38bf674812",
143
+ "frqtl/scenes/dse-photoelectric.js": "e0402c4508a4d97d3d9461f889b10a49da82ef5f232d81455c5e482db8b0bda6",
144
+ "frqtl/scenes/dse-tunnel-rebuild.js": "c662bff31fb66c1f136b6f35d18943c58e97456b61fbab9f4cdb812e3acb2630",
145
+ "frqtl/scenes/dse-two-emitters.js": "193575e850bc49d0db2e01974584b8100020ba466d39f1a9b0f121812f245f08",
146
+ "frqtl/scenes/dse-two-slits.js": "f303a848d9c463a5a9443c380b257795b19127b122bdd2fcb28855841b219939",
147
+ "frqtl/scenes/empty.js": "f3c2161f7bbc1be2d7fba0f117ac16b9e60966d9448877ead4037e3cb4fee678",
148
+ "frqtl/scenes/laser-buildup.js": "f4b29b2eeeca730642f5adf2f499f6594b73f6e51ba6aa9a237f4ee643c5cf23",
149
+ "frqtl/scenes/mirror-3d.js": "79ac794dfbc608037936908a9fe58ca34be93be6263d5940bb38129d55bb7943",
150
+ "frqtl/scenes/mirror-route.js": "1206b981a8d4eb3ab75985a4ae119adab5eed66026eebf2ad6036905bedbd746",
151
+ "frqtl/scenes/mirror.js": "c7bcd440e9a78e333fd81d906b3788a62342910f46cf98de860098fcc1e0ba91",
152
+ "frqtl/scenes/omni-3d.js": "d420a7aae9fdfd394b9288ce1f0256416e1b07f70bc570a928a4592c32a47c27",
153
+ "frqtl/scenes/omni-source.js": "4f9aaa0e0ccbf4d18908d1628688dbeae376b535318f0cf969d61d8ea8f90b83",
154
+ "frqtl/scenes/self-interference.js": "5ffa272d806a0af2b136f6ce6258b2d71f3a662de005a8941381a317120a47e4",
155
+ "frqtl/scenes/smoking-gun.js": "d130fdcb49f8c8ea201245195ab4a84108ef59218908bd373f5f69a5b73dc2a4",
156
+ "frqtl/scenes/straight-walk.js": "bb4f5a9fc05dacfad8531843ca02c6dc2c6217f940529d47d0f5aacfcb03a125",
157
+ "frqtl/scenes/sun.js": "fa06cac429af5a2ad4fe846969a7bf763f2a76d9d9b169328cd1f45bad6bda8f",
158
+ "frqtl/scenes/two-source.js": "1444a0e503f4a5e349d4364e31e698bc67d723a4b2864f262603e75ba5f9f088",
159
+ "frqtl/scenes/wave.js": "cabbece84daceca9199bbea22be610281bdf3137c8c5724bc601758e711f111f",
160
+ "shim/bundle/index.js": "ea7891e417a929e2b90dc8337750d247a355f84f7f581cf361d4bc8f473d42b5",
161
+ "shim/bundle/indexHtml.js": "2c4fbc502bb33fce93596cee19e143a58bb63c18d0b18ea597f81610e3a9a027",
158
162
  "shim/bundle/zip.js": "00f7b5fb5f36ff40a59d86758c503d9d7fb43949c1b5a4f2e7367c43d92786f9",
159
163
  "shim/bus.js": "dac2eeccd8774268c51014be4c46c00b9985fdf49ebb44355aa370e949c8c5bc",
160
164
  "shim/controls/index.js": "2aaf1f14b104bba8b912d68fe99068a8c544770b9eac43cdf6d992c311ec8f69",
@@ -162,15 +166,15 @@
162
166
  "shim/engine/artifact-shell.js": "b4c1d8bf65403caea9357fecd91172a1689baed8aad89433160d595881f16010",
163
167
  "shim/engine/boot-phases.js": "c6e12e12824bcf6f1a289f46e41c898a5416c80c131594525145aae9a3eefbfa",
164
168
  "shim/engine/engine-stack-boot.js": "0abf57dcff2ca2bb025c787a17875d49d54d9218ac08c78cb9c678dbb6118d08",
165
- "shim/engine/router.js": "9ac337a9a774e5abff431c53f37fdbb6a45c29329dfc4bfbefc44bc676e98e71",
169
+ "shim/engine/router.js": "a4ec678ab0e38381f761e40e8fbcb34dfea76d96df31a634f3d9f0b57d743570",
166
170
  "shim/experiment-frame/index.js": "5a0219aaa225d8f808c405b08623ce85ada37d83fb4f55f983db3303e431e47f",
167
171
  "shim/expr/ast-schema.js": "4f1133b887639bbd86fab976292323bf4a955cdc873ff7ca8e8a8eb3b416923f",
168
172
  "shim/field-descriptor/index.js": "6647d57d1523519114adc0a5cb66335ec5121c39ab294b9c97bdfb9e5d7f61e0",
169
173
  "shim/frame-data/index.js": "df6957b0b4a8e0ee0035bc970647b90089b421ae7f05911cc047d48457164be6",
170
- "shim/index.js": "d1f7d9a0a1fea320f641e2f9ec36174f243f03aca1a84804d74b33363703c8dc",
174
+ "shim/index.js": "141c68dbce88643815415645d5f896d55770208866e5b88b07b228d6a7d117e2",
171
175
  "shim/notebook/canvas-guard.js": "b19d3a86df3835bd617c7130cde997b6f8a8a0c140f95338b733115d5947ed7b",
172
176
  "shim/notebook/catalog.js": "68243a154e12bf36a76598aa554119f6e3b8b5363c8452d157c8a562b9c38dc1",
173
- "shim/notebook/format.js": "a552b161792873252a2163cd382bec2eb86651bcbdf96bd449d1b0007a0f2560",
177
+ "shim/notebook/format.js": "f8b1da9eb37da3a9609f7721426e2242f1279780ea212ea08d9f3c50bb18b578",
174
178
  "shim/notebook/frqtl-setups-importmap.js": "df86defa90cb85675564e7bb269451684b5cc7679f2c6b1884c07c8272e8ff1c",
175
179
  "shim/notebook/kernel.js": "65cf7e4ba12b24521143997a38cb0e7d0a8aa63f9f46868494eff7a41a887c7b",
176
180
  "shim/notebook/knob.js": "f07e9ac9697c7178aa68e4b2f4300145f8e2d2dc41b64aa0afede7e2d68705b1",
@@ -180,27 +184,31 @@
180
184
  "shim/notebook/realm-registry.js": "ffee52e7c93447c8b82bfc0784b51346686b4373766da298f50a759d3443ab6a",
181
185
  "shim/notebook/realm-transport.js": "5173676a94211f85122e0581a16abba925e9c4b5900b5891911bfaec5ea02daf",
182
186
  "shim/notebook/setup-builder.js": "abf8a7fed017776634d5ae3b595de7f00b32779590319cd48d95a6d9d0523a96",
183
- "shim/notebook/store.js": "ff73cd6f2d9ffa4dc434f15edbf69c5c62360b0ced6a023fd6279f6d95ae895e",
187
+ "shim/notebook/store.js": "fe34d31907e7a8f303dfcc35b9c0439faf2c32fbc5c0bb4f899692c25bef9a4d",
184
188
  "shim/notebook/vendor-importmap.js": "0c6578567980225593690e06fb4d32f0b50c47fe87a7467741a03846f6da68ed",
185
189
  "shim/notebook/view-builder.js": "1961962be16ef526934c43193828473447f2ec9ac0144f39bc5108c327d9069a",
186
190
  "shim/notebook/view-ctx.js": "6287aee366104bece827eecccf675540571d6db2b6833bff837be49eb60ce111",
187
191
  "shim/notebook/view-handle.js": "fe0d1530e3311cb96bb22f5cded35b9f25a0a4ef002588f3e47d9eef8089664d",
188
192
  "shim/notebook/warmup.js": "453b9e8b4969bcc704e1fbc636c3ada869ebf692651cfbf950107fd1cb662e25",
189
193
  "shim/package.json": "609158e6c5fbc237939fa3ddf7faab80ab690bdc0c8d584414a885130103c4e8",
190
- "shim/page-params/index.js": "50d410854d91e85945840ee4459045f3ca816b5f6dda4d5fb5bcac65fea5275f",
194
+ "shim/page-params/index.js": "f372a85af163a492425cee2584513fa631a642cb805fa283ad122d445ebec4b3",
191
195
  "shim/project/identity.js": "5a0dbd07bfad5c5aa6a529994a604546dbf3e6978b9529ca97ce2c57aa8e563f",
192
- "shim/project/index.js": "316b76daf970f3dc245fdb868095fd556ebee98f113de83029cbd76dfacda7ac",
193
- "shim/project/link.js": "f1b064052a87a4f8c46fb5fd86402971c436a24adb3c069318b68b5dc694ca5c",
196
+ "shim/project/index.js": "81d1a5d84c8bd5f31de8d9849d385509a73582e2ec6db4f779b018fe1b25404f",
197
+ "shim/project/link.js": "1774cde446c3217afb84e19fe44205d620764c863bff89e348a0645aed451ca2",
198
+ "shim/project/manifest.js": "442267af07ae1b977ff6aeaca49d98ce82b77f548cfdd1ed0f258b3429d75f31",
194
199
  "shim/project/node-specifier-hook.mjs": "8601edf762bd9cd011632bc681d0589dfc77368cda0e994125d0eb123fea89d0",
200
+ "shim/project/parts-module.js": "b08e0149f086640692e1b2ff8e0d7ae0379c2bc934a0891418de5c2b8c0e8e60",
201
+ "shim/project/parts-writer.js": "c9e9be475299ba24a81190d19260119816b9773135491a5024b55c40dd92f859",
202
+ "shim/project/record-format.js": "b680c3752f20535c08be832c6808fae000c2d2325f8caee57f98351043d091be",
195
203
  "shim/project/register-node.mjs": "9b408da7dc1b11d16237cd62caca281c823ea80173d386ad35e41ea17c34857f",
196
- "shim/project/specifiers.js": "a7e7f3dd193783faac00d63360acff525db3af6d0abae012e90bd31c3d29b8ae",
204
+ "shim/project/specifiers.js": "f73a41a7ffbd16063be314973d67e5261607b56b7ef7ee7927d9eaa0d541f3cc",
197
205
  "shim/registry/copy-gate.js": "cfbf52669c849b8837b326f2743458f1ead0720cad51a6c6d409c9bd6c7f9495",
198
206
  "shim/registry/exhibits.js": "98736b6b0dd82b5c1436da28fe3bf8d2d3ee840af8f5256d00c23e296c3bca9a",
199
207
  "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",
208
+ "shim/registry/index.js": "a3cef8c227d06ccc55735fe2989fbd07b0cf2f323d11b5bed23092fc967e88fc",
209
+ "shim/registry/scene-source.js": "0e873f9afa8175a318db14f0761d9379687024b1d49f69f2a0e3a22285d1029b",
210
+ "shim/registry/walkthrough.js": "65d74822585d271f4d74f0821fc158698bc39d7427b9bca3a61584c3c6d1a4a5",
211
+ "shim/render-state/apply.js": "fd0830ee4bb2668ac5b3254c29180bce9524d2ffb11bf6124e834ab8674a757a",
204
212
  "shim/render-state/index.js": "9015405ef2ea3d88bf004a0aa3bea04eb6bdb86270d68ef5622538a9bae5fa6d",
205
213
  "shim/render/capture-envelope.js": "2667a355169bb124fd8117e9cbf1d630085257b9f6fa537362f12d0aa649da2d",
206
214
  "shim/render/heat-colormap.js": "0eadc758179024734c45eaeffd8f5b44e7c4102b7042767a4a5b66541b3bbd7c",
@@ -209,10 +217,10 @@
209
217
  "shim/rpc/index.js": "56af3afeed22e8d718cd2f7a8ad70db8745f54dbc139af9d71f1d73e2ca37698",
210
218
  "shim/runtime/index.js": "cd728294c4693de3059f30f272f267b88b39c19a451edd30c75012e1bab755f5",
211
219
  "shim/storage/boot.js": "689504e15dc075e32d08abf61c75a45b1d565c09f086b42400dae40d8186c411",
212
- "shim/storage/index.js": "9f10a2ac220e7066493c3da0cea125ab5afb1e3d27d71fbef349f99caaeaa8b9",
220
+ "shim/storage/codec-chains.js": "6eab30c3ab7d8bd26059f386f91f9e43a87a6a20980d36bf7271eb72b6d109c0",
221
+ "shim/storage/folders.js": "9d69b6fcbdc8ae6da561acd42946933ac2d453d5d0659fcaf1cfba410a47a45a",
222
+ "shim/storage/index.js": "0939d88bcdb0cde5b564e1fc1b03144363c9747e917e706c4cc1f55fe4ee1ace",
213
223
  "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"
224
+ "shim/storage/make-namespace-store.js": "f88cfc65244cd7a3c3a43c173001855bb95571916a117b22f38d051823f2856f"
217
225
  }
218
226
  }
@@ -46,12 +46,15 @@
46
46
  * eyes.saveStill(still, 'out.png'); // …and the picture, in one line
47
47
  * } finally { await eyes.dispose(); }
48
48
  *
49
+ * The Record door rides the handle (`eyes.record.*`, `eyes.act.*`); `writeRecordFolder(folder, dir)` is the ONE node
50
+ * writer of the folder `eyes.record.stop()` returns (hosted-eyes.js).
51
+ *
49
52
  * `FrqtlVision` is re-exported for the encoder itself (`FrqtlVision.toPNG(still)` → PNG bytes) — the
50
53
  * node half of the one-encoder-per-host pair; it is the parts barrel's own instance.
51
54
  */
52
55
 
53
56
  import { createRequire } from 'node:module';
54
- import { FrqtlHostedEyes as HostedEyes } from '../frqtl/objects/instruments/hosted-eyes.js';
57
+ import { FrqtlHostedEyes as HostedEyes, writeRecordFolder } from '../frqtl/objects/instruments/hosted-eyes.js';
55
58
  import { FrqtlVision } from '../frqtl/parts/index.js';
56
59
 
57
60
  // The WRONG-HOST DOOR: `./eyes` DRIVES a browser from node; loaded IN a page it can only fail, so the
@@ -106,4 +109,4 @@ export function openHostedEyes(opts) {
106
109
  return HostedEyes.open(bag);
107
110
  }
108
111
 
109
- export { FrqtlVision };
112
+ export { FrqtlVision, writeRecordFolder };
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (C) 2012-2022 by various contributors (see AUTHORS)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "acorn",
3
+ "version": "8.16.0",
4
+ "license": "MIT",
5
+ "file": "acorn.mjs",
6
+ "upstreamPath": "dist/acorn.mjs",
7
+ "sha256": "efb0124a960b34d53f9928c4926bfcfd300bb6a3d7ab64ee949b3a8bed1c7e5f",
8
+ "rule": "Vendored UNMODIFIED from the npm tarball. Never edit the file: patch upstream, then re-vendor and update version + sha256 together. One importer: lib/shim/project/parts-writer.js."
9
+ }