allyhub 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/add.js +2 -2
- package/dist/commands/auth.js +4 -4
- package/dist/commands/cloud-tools.js +9 -10
- package/dist/commands/dev.js +1 -1
- package/dist/commands/doctor.js +4 -4
- package/dist/commands/frames/piece.js +1 -1
- package/dist/commands/frames.js +6 -6
- package/dist/commands/index.js +1 -1
- package/dist/commands/inspect/contrast.js +1 -1
- package/dist/commands/inspect/layout.js +1 -1
- package/dist/commands/orgs.js +2 -2
- package/dist/commands/render.js +2 -2
- package/dist/commands/sheet.js +2 -2
- package/dist/commands/slides.js +3 -0
- package/dist/main.js +3 -3
- package/dist/text/facts-text.js +5 -5
- package/dist/text/format.js +2 -2
- package/dist/works.js +1 -1
- package/editor-web/assets/browser-B31cR_c2.js +105 -0
- package/editor-web/assets/dist-6TNEuNMX.js +4 -0
- package/editor-web/assets/dist-Cm2TIjW5.js +2 -0
- package/editor-web/assets/dist-Cpt0p8bX.js +6 -0
- package/editor-web/assets/dist-D2GccKEJ.js +1 -0
- package/editor-web/assets/dist-Z0zvYXmu.js +233 -0
- package/editor-web/assets/dist-fs4ONrUV.js +32 -0
- package/editor-web/assets/index-CAcsAZ9u.js +70 -0
- package/editor-web/assets/index-DlcJckhO.css +2 -0
- package/editor-web/assets/list-D2v7U8K8.js +1 -0
- package/editor-web/assets/react-D0RmGe2w.js +101 -0
- package/editor-web/assets/rolldown-runtime-XKyaHtl9.js +1 -0
- package/editor-web/assets/text-align-start-B3k2cx5f.js +1 -0
- package/editor-web/assets/undo-2-Ecr7-Obc.js +1 -0
- package/editor-web/index.html +4 -4
- package/node_modules/@allyhub-next/audio/package.json +1 -1
- package/node_modules/@allyhub-next/browser/package.json +1 -1
- package/node_modules/@allyhub-next/build/dist/data.js +1 -1
- package/node_modules/@allyhub-next/build/dist/meta-worker.d.ts +10 -0
- package/node_modules/@allyhub-next/build/dist/meta-worker.js +2 -2
- package/node_modules/@allyhub-next/build/dist/model-info.js +2 -1
- package/node_modules/@allyhub-next/build/dist/plugin.d.ts +2 -0
- package/node_modules/@allyhub-next/build/dist/plugin.js +9 -8
- package/node_modules/@allyhub-next/build/dist/prepare.d.ts +13 -1
- package/node_modules/@allyhub-next/build/dist/prepare.js +2 -2
- package/node_modules/@allyhub-next/build/dist/scan.d.ts +1 -1
- package/node_modules/@allyhub-next/build/dist/scan.js +1 -1
- package/node_modules/@allyhub-next/build/dist/types.js +3 -3
- package/node_modules/@allyhub-next/build/package.json +1 -1
- package/node_modules/@allyhub-next/check/dist/check.js +3 -3
- package/node_modules/@allyhub-next/check/dist/generated.d.ts +1 -1
- package/node_modules/@allyhub-next/check/package.json +1 -1
- package/node_modules/@allyhub-next/cloud/dist/index.js +1 -1
- package/node_modules/@allyhub-next/cloud/dist/signin.js +2 -2
- package/node_modules/@allyhub-next/cloud/dist/token.js +1 -1
- package/node_modules/@allyhub-next/cloud/package.json +1 -1
- package/node_modules/@allyhub-next/components/package.json +1 -1
- package/node_modules/@allyhub-next/dev-server/dist/card.d.ts +2 -11
- package/node_modules/@allyhub-next/dev-server/dist/card.js +1 -1
- package/node_modules/@allyhub-next/dev-server/dist/exports.d.ts +2 -2
- package/node_modules/@allyhub-next/dev-server/dist/exports.js +1 -1
- package/node_modules/@allyhub-next/dev-server/dist/index.d.ts +1 -1
- package/node_modules/@allyhub-next/dev-server/dist/index.js +1 -1
- package/node_modules/@allyhub-next/dev-server/dist/live.d.ts +3 -0
- package/node_modules/@allyhub-next/dev-server/dist/live.js +1 -1
- package/node_modules/@allyhub-next/dev-server/dist/project.d.ts +3 -0
- package/node_modules/@allyhub-next/dev-server/dist/project.js +1 -1
- package/node_modules/@allyhub-next/dev-server/dist/reveal.d.ts +6 -0
- package/node_modules/@allyhub-next/dev-server/dist/reveal.js +2 -0
- package/node_modules/@allyhub-next/dev-server/dist/server.js +1 -1
- package/node_modules/@allyhub-next/dev-server/dist/stage.d.ts +2 -0
- package/node_modules/@allyhub-next/dev-server/dist/stage.js +22 -2
- package/node_modules/@allyhub-next/dev-server/dist/tools.d.ts +2 -0
- package/node_modules/@allyhub-next/dev-server/dist/tools.js +1 -1
- package/node_modules/@allyhub-next/dev-server/package.json +1 -1
- package/node_modules/@allyhub-next/doc/dist/docx.d.ts +28 -0
- package/node_modules/@allyhub-next/doc/dist/docx.js +4 -0
- package/node_modules/@allyhub-next/doc/dist/html.d.ts +3 -0
- package/node_modules/@allyhub-next/doc/dist/html.js +1 -1
- package/node_modules/@allyhub-next/doc/package.json +5 -1
- package/node_modules/@allyhub-next/export/dist/deck-fonts.d.ts +24 -0
- package/node_modules/@allyhub-next/export/dist/deck-fonts.js +2 -0
- package/node_modules/@allyhub-next/export/dist/deck-pptx.d.ts +12 -0
- package/node_modules/@allyhub-next/export/dist/deck-pptx.js +2 -0
- package/node_modules/@allyhub-next/export/dist/export.d.ts +12 -3
- package/node_modules/@allyhub-next/export/dist/export.js +2 -2
- package/node_modules/@allyhub-next/export/dist/index.d.ts +1 -0
- package/node_modules/@allyhub-next/export/dist/index.js +1 -1
- package/node_modules/@allyhub-next/export/dist/names.d.ts +11 -6
- package/node_modules/@allyhub-next/export/dist/names.js +1 -1
- package/node_modules/@allyhub-next/export/package.json +1 -1
- package/node_modules/@allyhub-next/formats/dist/data/script.d.ts +22 -0
- package/node_modules/@allyhub-next/formats/dist/data/script.js +1 -1
- package/node_modules/@allyhub-next/formats/dist/data/slides.d.ts +1494 -0
- package/node_modules/@allyhub-next/formats/dist/data/slides.js +2 -0
- package/node_modules/@allyhub-next/formats/dist/index.d.ts +2 -0
- package/node_modules/@allyhub-next/formats/dist/index.js +1 -1
- package/node_modules/@allyhub-next/formats/dist/items.d.ts +21 -0
- package/node_modules/@allyhub-next/formats/dist/items.js +1 -1
- package/node_modules/@allyhub-next/formats/dist/note-shape.d.ts +39 -0
- package/node_modules/@allyhub-next/formats/dist/note-shape.js +2 -0
- package/node_modules/@allyhub-next/formats/dist/schemas.d.ts +418 -0
- package/node_modules/@allyhub-next/formats/dist/schemas.js +1 -1
- package/node_modules/@allyhub-next/formats/package.json +1 -1
- package/node_modules/@allyhub-next/measure/dist/index.d.ts +1 -1
- package/node_modules/@allyhub-next/measure/dist/index.js +1 -1
- package/node_modules/@allyhub-next/measure/dist/overlay.d.ts +14 -1
- package/node_modules/@allyhub-next/measure/dist/overlay.js +1 -1
- package/node_modules/@allyhub-next/measure/package.json +1 -1
- package/node_modules/@allyhub-next/media/dist/asr/parakeet.d.ts +1 -4
- package/node_modules/@allyhub-next/media/dist/asr/parakeet.js +4 -4
- package/node_modules/@allyhub-next/media/dist/asr/transcribe.d.ts +1 -1
- package/node_modules/@allyhub-next/media/dist/asr/transcribe.js +1 -1
- package/node_modules/@allyhub-next/media/dist/grid.d.ts +3 -3
- package/node_modules/@allyhub-next/media/dist/grid.js +5 -5
- package/node_modules/@allyhub-next/media/dist/local.d.ts +3 -0
- package/node_modules/@allyhub-next/media/dist/local.js +1 -1
- package/node_modules/@allyhub-next/media/dist/ocr/tesseract.d.ts +8 -2
- package/node_modules/@allyhub-next/media/dist/ocr/tesseract.js +1 -1
- package/node_modules/@allyhub-next/media/dist/ocr/text.js +3 -3
- package/node_modules/@allyhub-next/media/dist/ocr/worker.js +1 -1
- package/node_modules/@allyhub-next/media/dist/sheet.js +3 -3
- package/node_modules/@allyhub-next/media/dist/tools.d.ts +11 -1
- package/node_modules/@allyhub-next/media/dist/tools.js +1 -1
- package/node_modules/@allyhub-next/media/dist/vision/faces.js +1 -1
- package/node_modules/@allyhub-next/media/dist/vision/matte.js +1 -1
- package/node_modules/@allyhub-next/media/dist/vision/runtime.d.ts +1 -1
- package/node_modules/@allyhub-next/media/dist/vision/runtime.js +2 -2
- package/node_modules/@allyhub-next/media/dist/worker-process.d.ts +1 -1
- package/node_modules/@allyhub-next/media/dist/worker-process.js +1 -1
- package/node_modules/@allyhub-next/media/package.json +1 -1
- package/node_modules/@allyhub-next/model/dist/build-job.d.ts +2 -0
- package/node_modules/@allyhub-next/model/dist/build-worker.js +1 -1
- package/node_modules/@allyhub-next/model/dist/build.d.ts +10 -0
- package/node_modules/@allyhub-next/model/dist/build.js +2 -1
- package/node_modules/@allyhub-next/model/package.json +1 -1
- package/node_modules/@allyhub-next/project/dist/digest.d.ts +1 -3
- package/node_modules/@allyhub-next/project/dist/digest.js +1 -1
- package/node_modules/@allyhub-next/project/dist/page.d.ts +0 -5
- package/node_modules/@allyhub-next/project/dist/page.js +2 -2
- package/node_modules/@allyhub-next/project/dist/session.js +1 -1
- package/node_modules/@allyhub-next/project/package.json +1 -1
- package/node_modules/@allyhub-next/protocol/dist/app.d.ts +0 -64
- package/node_modules/@allyhub-next/protocol/dist/app.js +1 -1
- package/node_modules/@allyhub-next/protocol/dist/auth.d.ts +0 -17
- package/node_modules/@allyhub-next/protocol/dist/auth.js +1 -1
- package/node_modules/@allyhub-next/protocol/dist/cli.d.ts +0 -4
- package/node_modules/@allyhub-next/protocol/dist/cli.js +1 -1
- package/node_modules/@allyhub-next/protocol/dist/editor.d.ts +9 -26
- package/node_modules/@allyhub-next/protocol/dist/editor.js +1 -1
- package/node_modules/@allyhub-next/protocol/dist/index.d.ts +1 -0
- package/node_modules/@allyhub-next/protocol/dist/index.js +1 -1
- package/node_modules/@allyhub-next/protocol/dist/notes.d.ts +163 -0
- package/node_modules/@allyhub-next/protocol/dist/notes.js +2 -0
- package/node_modules/@allyhub-next/protocol/dist/registry.d.ts +1 -1
- package/node_modules/@allyhub-next/protocol/dist/runtimes.d.ts +3 -0
- package/node_modules/@allyhub-next/protocol/dist/runtimes.js +1 -1
- package/node_modules/@allyhub-next/protocol/dist/tools.d.ts +37 -0
- package/node_modules/@allyhub-next/protocol/dist/tools.js +1 -1
- package/node_modules/@allyhub-next/protocol/package.json +1 -1
- package/node_modules/@allyhub-next/registry/dist/registry.js +1 -1
- package/node_modules/@allyhub-next/registry/package.json +1 -1
- package/node_modules/@allyhub-next/render/dist/doc/index.d.ts +1 -1
- package/node_modules/@allyhub-next/render/dist/doc/index.js +1 -1
- package/node_modules/@allyhub-next/render/dist/doc/print.d.ts +11 -0
- package/node_modules/@allyhub-next/render/dist/doc/print.js +17 -1
- package/node_modules/@allyhub-next/render/dist/exports.d.ts +29 -4
- package/node_modules/@allyhub-next/render/dist/exports.js +2 -2
- package/node_modules/@allyhub-next/render/dist/page.d.ts +11 -1
- package/node_modules/@allyhub-next/render/dist/render.d.ts +2 -0
- package/node_modules/@allyhub-next/render/dist/render.js +2 -2
- package/node_modules/@allyhub-next/render/package.json +1 -1
- package/node_modules/@allyhub-next/runtime/LICENSE +241 -0
- package/node_modules/@allyhub-next/runtime/dist/bridge.d.ts +13 -3
- package/node_modules/@allyhub-next/runtime/dist/clock.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/env.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/facade.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/footage.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/frame.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/index.d.ts +2 -0
- package/node_modules/@allyhub-next/runtime/dist/index.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/locate.d.ts +11 -0
- package/node_modules/@allyhub-next/runtime/dist/locate.js +2 -0
- package/node_modules/@allyhub-next/runtime/dist/measure.d.ts +2 -1
- package/node_modules/@allyhub-next/runtime/dist/measure.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/music.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/output.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/piece.d.ts +5 -9
- package/node_modules/@allyhub-next/runtime/dist/piece.js +2 -2
- package/node_modules/@allyhub-next/runtime/dist/player/player.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/reads.d.ts +2 -0
- package/node_modules/@allyhub-next/runtime/dist/reads.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/sound.js +1 -1
- package/node_modules/@allyhub-next/runtime/dist/stage-kit.d.ts +12 -0
- package/node_modules/@allyhub-next/runtime/dist/stage-kit.js +2 -0
- package/node_modules/@allyhub-next/runtime/package.json +5 -6
- package/node_modules/@allyhub-next/runtimes/dist/errors.d.ts +5 -1
- package/node_modules/@allyhub-next/runtimes/dist/index.d.ts +1 -0
- package/node_modules/@allyhub-next/runtimes/dist/index.js +1 -1
- package/node_modules/@allyhub-next/runtimes/dist/node-program.d.ts +3 -0
- package/node_modules/@allyhub-next/runtimes/dist/node-program.js +2 -0
- package/node_modules/@allyhub-next/runtimes/dist/packages.d.ts +65 -0
- package/node_modules/@allyhub-next/runtimes/dist/packages.js +4 -0
- package/node_modules/@allyhub-next/runtimes/dist/runtimes.js +2 -2
- package/node_modules/@allyhub-next/runtimes/dist/unpack.d.ts +7 -0
- package/node_modules/@allyhub-next/runtimes/dist/unpack.js +1 -1
- package/node_modules/@allyhub-next/runtimes/package.json +5 -1
- package/node_modules/@allyhub-next/runtimes/pins/docx/package-lock.json +67 -0
- package/node_modules/@allyhub-next/runtimes/pins/docx/package.json +9 -0
- package/node_modules/@allyhub-next/runtimes/pins/exceljs/package-lock.json +2533 -0
- package/node_modules/@allyhub-next/runtimes/pins/exceljs/package.json +8 -0
- package/node_modules/@allyhub-next/runtimes/pins/gltf-tools/package-lock.json +753 -0
- package/node_modules/@allyhub-next/runtimes/pins/gltf-tools/package.json +14 -0
- package/node_modules/@allyhub-next/runtimes/pins/manifold-3d/package-lock.json +950 -0
- package/node_modules/@allyhub-next/runtimes/pins/manifold-3d/package.json +8 -0
- package/node_modules/@allyhub-next/runtimes/pins/onnxruntime-node/package-lock.json +227 -0
- package/node_modules/@allyhub-next/runtimes/pins/onnxruntime-node/package.json +8 -0
- package/node_modules/@allyhub-next/runtimes/pins/sherpa-onnx-node/package-lock.json +105 -0
- package/node_modules/@allyhub-next/runtimes/pins/sherpa-onnx-node/package.json +8 -0
- package/node_modules/@allyhub-next/runtimes/pins/tesseract.js/package-lock.json +128 -0
- package/node_modules/@allyhub-next/runtimes/pins/tesseract.js/package.json +9 -0
- package/node_modules/@allyhub-next/runtimes/schemas/runtimes.schema.json +5 -24
- package/node_modules/@allyhub-next/scaffold/dist/index.js +3 -3
- package/node_modules/@allyhub-next/scaffold/package.json +1 -1
- package/node_modules/@allyhub-next/scenery/package.json +1 -1
- package/node_modules/@allyhub-next/scenery-host/dist/bundle.d.ts +2 -2
- package/node_modules/@allyhub-next/scenery-host/dist/bundle.js +3 -3
- package/node_modules/@allyhub-next/scenery-host/dist/viewer.d.ts +11 -0
- package/node_modules/@allyhub-next/scenery-host/dist/viewer.js +1 -1
- package/node_modules/@allyhub-next/scenery-host/package.json +1 -1
- package/node_modules/@allyhub-next/sheet/package.json +1 -1
- package/node_modules/@allyhub-next/site/dist/media.js +2 -2
- package/node_modules/@allyhub-next/site/package.json +1 -1
- package/node_modules/@allyhub-next/slides-core/LICENSE +241 -0
- package/node_modules/@allyhub-next/slides-core/dist/animation.d.ts +129 -0
- package/node_modules/@allyhub-next/slides-core/dist/animation.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/api.d.ts +649 -0
- package/node_modules/@allyhub-next/slides-core/dist/api.js +4 -0
- package/node_modules/@allyhub-next/slides-core/dist/capabilities.d.ts +18 -0
- package/node_modules/@allyhub-next/slides-core/dist/capabilities.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/chart-api.d.ts +165 -0
- package/node_modules/@allyhub-next/slides-core/dist/chart-api.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/chart-file.d.ts +11 -0
- package/node_modules/@allyhub-next/slides-core/dist/chart-file.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/chart.d.ts +184 -0
- package/node_modules/@allyhub-next/slides-core/dist/chart.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/check.d.ts +7 -0
- package/node_modules/@allyhub-next/slides-core/dist/check.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/enums.d.ts +146 -0
- package/node_modules/@allyhub-next/slides-core/dist/enums.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/file.d.ts +109 -0
- package/node_modules/@allyhub-next/slides-core/dist/file.js +4 -0
- package/node_modules/@allyhub-next/slides-core/dist/index.d.ts +21 -0
- package/node_modules/@allyhub-next/slides-core/dist/index.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/measure.d.ts +34 -0
- package/node_modules/@allyhub-next/slides-core/dist/measure.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/model.d.ts +278 -0
- package/node_modules/@allyhub-next/slides-core/dist/model.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/office.d.ts +58 -0
- package/node_modules/@allyhub-next/slides-core/dist/office.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/path.d.ts +6 -0
- package/node_modules/@allyhub-next/slides-core/dist/path.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/placeholders.d.ts +7 -0
- package/node_modules/@allyhub-next/slides-core/dist/placeholders.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/resolve.d.ts +181 -0
- package/node_modules/@allyhub-next/slides-core/dist/resolve.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/script.d.ts +43 -0
- package/node_modules/@allyhub-next/slides-core/dist/script.js +3 -0
- package/node_modules/@allyhub-next/slides-core/dist/stage.d.ts +63 -0
- package/node_modules/@allyhub-next/slides-core/dist/stage.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/strict.d.ts +23 -0
- package/node_modules/@allyhub-next/slides-core/dist/strict.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/theme.d.ts +72 -0
- package/node_modules/@allyhub-next/slides-core/dist/theme.js +2 -0
- package/node_modules/@allyhub-next/slides-core/dist/units.d.ts +35 -0
- package/node_modules/@allyhub-next/slides-core/dist/units.js +2 -0
- package/node_modules/@allyhub-next/slides-core/package.json +14 -0
- package/node_modules/@allyhub-next/slides-pptx/LICENSE +241 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/charts.d.ts +6 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/charts.js +2 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/fonts.d.ts +45 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/fonts.js +2 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/import.d.ts +18 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/import.js +3 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/index.d.ts +5 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/index.js +2 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/read.d.ts +55 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/read.js +4 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/shapes.d.ts +67 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/shapes.js +2 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/text.d.ts +21 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/text.js +2 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/theme.d.ts +4 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/theme.js +2 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/timing.d.ts +32 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/timing.js +2 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/write.d.ts +32 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/write.js +3 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/xml.d.ts +26 -0
- package/node_modules/@allyhub-next/slides-pptx/dist/xml.js +3 -0
- package/node_modules/@allyhub-next/slides-pptx/package.json +14 -0
- package/node_modules/@allyhub-next/slides-runtime/LICENSE +241 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/draw.d.ts +40 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/draw.js +3 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/edit.d.ts +4 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/edit.js +2 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/index.d.ts +4 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/index.js +2 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/ink.d.ts +10 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/ink.js +2 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/load.d.ts +6 -0
- package/node_modules/@allyhub-next/slides-runtime/dist/load.js +6 -0
- package/node_modules/@allyhub-next/slides-runtime/package.json +14 -0
- package/node_modules/@allyhub-next/stage/dist/graphics.js +1 -1
- package/node_modules/@allyhub-next/stage/dist/identity.js +1 -1
- package/node_modules/@allyhub-next/stage/dist/page.d.ts +9 -0
- package/node_modules/@allyhub-next/stage/dist/page.js +12 -2
- package/node_modules/@allyhub-next/stage/dist/server.js +1 -1
- package/node_modules/@allyhub-next/stage/package.json +1 -1
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/400-italic.css +79 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/400.css +79 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/700-italic.css +79 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/700.css +79 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/LICENSE +93 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/arial.css +316 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-ext-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-ext-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-ext-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-ext-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-ext-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-ext-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-ext-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-ext-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-hebrew-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-hebrew-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-hebrew-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-hebrew-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-ext-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-ext-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-ext-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-ext-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-vietnamese-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-vietnamese-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-vietnamese-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-vietnamese-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/400-italic.css +69 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/400.css +69 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/700-italic.css +69 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/700.css +69 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/LICENSE +93 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/calibri.css +276 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-ext-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-ext-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-ext-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-ext-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-ext-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-ext-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-ext-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-ext-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-ext-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-ext-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-ext-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-ext-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-vietnamese-400-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-vietnamese-400-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-vietnamese-700-italic.woff2 +0 -0
- package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-vietnamese-700-normal.woff2 +0 -0
- package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/400.css +1 -1
- package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/700.css +1 -1
- package/node_modules/@allyhub-next/stage-page/dist/fonts/noto-sans-sc/microsoft-yahei.css +2018 -0
- package/node_modules/@allyhub-next/stage-page/dist/host.js +21 -0
- package/node_modules/@allyhub-next/stage-page/dist/page.js +79 -0
- package/node_modules/@allyhub-next/stage-page/package.json +14 -0
- package/node_modules/@allyhub-next/video-core/dist/export.d.ts +6 -5
- package/node_modules/@allyhub-next/video-core/dist/export.js +1 -1
- package/node_modules/@allyhub-next/video-core/dist/fact.d.ts +173 -4
- package/node_modules/@allyhub-next/video-core/dist/fact.js +1 -1
- package/node_modules/@allyhub-next/video-core/dist/formats.d.ts +6 -13
- package/node_modules/@allyhub-next/video-core/dist/formats.js +1 -1
- package/node_modules/@allyhub-next/video-core/dist/index.d.ts +0 -1
- package/node_modules/@allyhub-next/video-core/dist/index.js +1 -1
- package/node_modules/@allyhub-next/video-core/dist/measure.d.ts +83 -0
- package/node_modules/@allyhub-next/video-core/dist/piece.d.ts +8 -9
- package/node_modules/@allyhub-next/video-core/dist/piece.js +1 -1
- package/node_modules/@allyhub-next/video-core/dist/problem.d.ts +5 -1
- package/node_modules/@allyhub-next/video-core/dist/problem.js +1 -1
- package/node_modules/@allyhub-next/video-core/dist/schema.d.ts +0 -2
- package/node_modules/@allyhub-next/video-core/dist/script-edit.d.ts +4 -0
- package/node_modules/@allyhub-next/video-core/dist/script.d.ts +8 -0
- package/node_modules/@allyhub-next/video-core/dist/script.js +1 -1
- package/node_modules/@allyhub-next/video-core/dist/timeline.d.ts +34 -1
- package/node_modules/@allyhub-next/video-core/package.json +1 -1
- package/package.json +48 -41
- package/dist/commands/mcp-app.js +0 -3
- package/dist/commands/mcp-docs.js +0 -2
- package/dist/commands/mcp.js +0 -2
- package/editor-app/view.html +0 -128
- package/editor-web/assets/chevron-left-W6sP7nB1.js +0 -1
- package/editor-web/assets/chevron-up-566GQpAm.js +0 -1
- package/editor-web/assets/dist-BKDr73BR.js +0 -136
- package/editor-web/assets/dist-CPCNTYVu.js +0 -8
- package/editor-web/assets/dist-C_NajYp0.js +0 -1
- package/editor-web/assets/dist-mA6NrAKh.js +0 -232
- package/editor-web/assets/floating-ui.react-dom-BUxFRF6t.js +0 -1
- package/editor-web/assets/index-CFZhjTQW.js +0 -56
- package/editor-web/assets/index-DgU-lyX6.css +0 -2
- package/editor-web/assets/react-Ff_buMj8.js +0 -61
- package/editor-web/assets/undo-2-BKFItM3X.js +0 -1
- package/node_modules/@allyhub-next/runtime/dist/host.js +0 -21
- package/node_modules/@allyhub-next/runtime/dist/page.js +0 -72
- package/node_modules/@allyhub-next/runtime/dist/paged.d.ts +0 -16
- package/node_modules/@allyhub-next/runtime/dist/paged.js +0 -2
- package/node_modules/@allyhub-next/video-core/dist/slides.d.ts +0 -37
- package/node_modules/@allyhub-next/video-core/dist/slides.js +0 -2
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-color-emoji/LICENSE +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-color-emoji/emoji.css +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-color-emoji/files/noto-color-emoji-emoji-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/LICENSE +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-100-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-100-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-101-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-101-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-102-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-102-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-103-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-103-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-104-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-104-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-105-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-105-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-106-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-106-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-107-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-107-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-108-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-108-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-109-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-109-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-110-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-110-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-111-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-111-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-112-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-112-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-113-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-113-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-114-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-114-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-115-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-115-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-116-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-116-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-117-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-117-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-118-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-118-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-119-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-119-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-21-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-21-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-22-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-22-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-23-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-23-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-24-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-24-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-25-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-25-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-26-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-26-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-27-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-27-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-28-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-28-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-29-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-29-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-30-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-30-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-31-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-31-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-32-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-32-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-33-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-33-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-34-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-34-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-35-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-35-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-36-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-36-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-37-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-37-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-38-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-38-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-39-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-39-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-4-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-4-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-40-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-40-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-41-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-41-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-42-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-42-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-43-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-43-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-44-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-44-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-45-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-45-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-46-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-46-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-47-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-47-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-48-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-48-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-49-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-49-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-5-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-5-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-50-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-50-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-51-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-51-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-52-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-52-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-53-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-53-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-54-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-54-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-55-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-55-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-56-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-56-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-57-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-57-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-58-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-58-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-59-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-59-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-6-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-6-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-60-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-60-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-61-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-61-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-62-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-62-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-63-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-63-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-64-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-64-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-65-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-65-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-66-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-66-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-67-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-67-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-68-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-68-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-69-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-69-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-70-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-70-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-71-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-71-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-72-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-72-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-73-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-73-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-74-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-74-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-75-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-75-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-76-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-76-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-77-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-77-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-78-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-78-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-79-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-79-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-80-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-80-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-81-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-81-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-82-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-82-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-83-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-83-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-84-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-84-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-85-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-85-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-86-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-86-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-87-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-87-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-88-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-88-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-89-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-89-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-90-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-90-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-91-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-91-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-97-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-97-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-98-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-98-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-99-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-99-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-cyrillic-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-cyrillic-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-latin-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-latin-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-latin-ext-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-latin-ext-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-vietnamese-400-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-vietnamese-700-normal.woff2 +0 -0
- /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/host.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));export{s as n,l as r,o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ot as e}from"./react-D0RmGe2w.js";var t=e(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),n=e(`text-align-center`,[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M17 12H7`,key:`16if0g`}],[`path`,{d:`M19 19H5`,key:`vjpgq2`}]]),r=e(`text-align-end`,[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M21 19H7`,key:`4cu937`}]]),i=e(`text-align-justify`,[[`path`,{d:`M3 5h18`,key:`1u36vt`}],[`path`,{d:`M3 12h18`,key:`1i2n21`}],[`path`,{d:`M3 19h18`,key:`awlh7x`}]]),a=e(`text-align-start`,[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M17 19H3`,key:`z6ezky`}]]);export{t as a,n as i,i as n,r,a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ot as e}from"./react-D0RmGe2w.js";var t=e(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),n=e(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),r=e(`undo-2`,[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]);export{n,t as r,r as t};
|
package/editor-web/index.html
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
7
7
|
<title>AllyHub</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-CAcsAZ9u.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-XKyaHtl9.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/react-D0RmGe2w.js">
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DlcJckhO.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"></div>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import{createHash as p}from"node:crypto";import{readFile as l}from"node:fs/promises";import{join as d}from"node:path";import{parse as E}from"yaml";import{ITEM_KINDS as T,SHEET_SPEC as g,TEXT_DIR as u,baseOf as f,within as
|
|
2
|
+
import{createHash as p}from"node:crypto";import{readFile as l}from"node:fs/promises";import{join as d}from"node:path";import{parse as E}from"yaml";import{ITEM_KINDS as T,SHEET_SPEC as g,TEXT_DIR as u,baseOf as f,within as y}from"@allyhub-next/formats";import{csvRows as h}from"@allyhub-next/sheet";const j=/^-?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/iu;export function parseCsv(t){const[r,...a]=h(t);if(!r)return[];const s=r.map(o=>o.trim()),e=s.map((o,n)=>a.every(i=>{const c=(i[n]??"").trim();return c===""||j.test(c)})&&a.some(i=>(i[n]??"").trim()!==""));return a.map(o=>{const n={};return s.forEach((i,c)=>{const m=(o[c]??"").trim();n[i]=e[c]&&m!==""?Number(m):m}),n})}const v=/\.(csv|ya?ml|json)$/iu,w=/(^|\/)(package(-lock)?\.json|tsconfig(\.[\w-]+)?\.json|jsconfig\.json|pnpm-(lock|workspace)\.yaml|[^/]+\.(words|elements|gen)\.json|script\.[\w-]+\.ya?ml|slides\.yaml|comments\.json)$/u,D=T.sheet.entries[0];export function isDataFile(t,r=u){return v.test(t)&&!w.test(t)&&f(t)!==g&&!y(t,r)}export const MAX_DATA_BYTES=5*1024*1024;export function parseData(t,r){return/\.csv$/iu.test(t)?parseCsv(r):/\.ya?ml$/iu.test(t)?E(r)??null:JSON.parse(r)}export async function readData(t,r,a=u){const s={};for(const e of r){if(!isDataFile(e,a)&&f(e)!==D)continue;const o=await l(d(t,e)).catch(()=>{});if(!o)continue;const n=p("sha256").update(o).digest("hex");if(o.byteLength>MAX_DATA_BYTES){s[e]={sha256:n,error:`larger than ${String(MAX_DATA_BYTES/1024/1024)} MB; import it instead`};continue}try{s[e]={sha256:n,value:parseData(e,o.toString("utf8"))}}catch(i){s[e]={sha256:n,error:i.message.split(`
|
|
3
3
|
`)[0]??""}}}return s}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SlidesFile } from "@allyhub-next/formats";
|
|
1
2
|
import { type MediaInfo, type Problem } from "@allyhub-next/video-core";
|
|
2
3
|
export interface WorkerInit {
|
|
3
4
|
root: string;
|
|
@@ -12,6 +13,15 @@ export type WorkerRequest = {
|
|
|
12
13
|
id: number;
|
|
13
14
|
type: "piece";
|
|
14
15
|
file: string;
|
|
16
|
+
} | {
|
|
17
|
+
id: number;
|
|
18
|
+
type: "deck";
|
|
19
|
+
file: string;
|
|
20
|
+
/** Its slides.yaml as read; none when it has none or it is not the format. */
|
|
21
|
+
slides: SlidesFile | undefined;
|
|
22
|
+
/** The default language's messages, by key: the script's words. */
|
|
23
|
+
words: Record<string, unknown>;
|
|
24
|
+
prefix: string;
|
|
15
25
|
} | {
|
|
16
26
|
id: number;
|
|
17
27
|
type: "components";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import
|
|
3
|
-
`)};const
|
|
2
|
+
import{readFileSync as N}from"node:fs";import j from"node:net";import{join as y}from"node:path";import{format as P}from"node:util";import{parentPort as $,workerData as R}from"node:worker_threads";import{posix as m}from"node:path";import{projectPath as C}from"@allyhub-next/formats";import{evaluateDeck as _,isDeck as F,joinPath as K,resolveDeck as H}from"@allyhub-next/slides-core";import{MEDIA_BRAND as g,isPieceDefinition as W,outputName as z,outputOf as B,problem as x}from"@allyhub-next/video-core";import{parseCsv as I,parseData as J}from"./data.js";import{allyhubPlugin as U}from"./plugin.js";import{SDK as V}from"./scan.js";import{createModuleLoader as L,loadUserVite as G}from"./vite.js";const d=R,h=[];let O=!1;for(const t of["log","info","warn","error","debug"])console[t]=(...e)=>{O||process.stderr.write(`${P(...e)}
|
|
3
|
+
`)};const M=Date.UTC(2026,0,1),D=Date,Q=Math.random,X=globalThis.fetch,Y=Reflect.get(j.Socket.prototype,"connect");function Z(t){let e=t>>>0;return()=>{e=e+1831565813|0;let o=Math.imul(e^e>>>15,1|e);return o=o+Math.imul(o^o>>>7,61|o)^o,((o^o>>>14)>>>0)/4294967296}}function q(t){let e=2166136261;for(let o=0;o<t.length;o++)e^=t.charCodeAt(o),e=Math.imul(e,16777619);return e>>>0}async function b(t,e,o,n=`reading the metadata of ${e}`,i=!0){const s=globalThis;class c extends D{constructor(...a){a.length===0?super(M):super(...a)}static now(){return M}}const r=u=>{h.push(x("AK-B003",`A network request was made while ${n}: ${u}. The build has no network: put the data in the project and import it.`,{where:{file:e}}))};s.Date=c,Math.random=Z(q(t)),s.fetch=u=>(r(typeof u=="string"?u:u.url??"a request"),Promise.reject(new TypeError("network blocked by AllyHub"))),Reflect.set(j.Socket.prototype,"connect",function(...u){const[a]=u;return r(typeof a=="object"&&a!==null?`${a.host??""}:${String(a.port??"")}`:String(a)),this.destroy(new Error("network blocked by AllyHub")),this}),O=i;try{return await o()}finally{O=!1,s.Date=D,Math.random=Q,s.fetch=X,Reflect.set(j.Socket.prototype,"connect",Y)}}function f(t,e,o){if(typeof t=="function"){o.push(e);return}if(t===null||typeof t!="object")return typeof t=="bigint"||typeof t=="symbol"?String(t):t;if(g in t)return t.path;if(Array.isArray(t))return t.map((i,s)=>f(i,`${e}[${String(s)}]`,o));const n={};for(const[i,s]of Object.entries(t)){const c=f(s,e?`${e}.${i}`:i,o);c!==void 0&&(n[i]=c)}return n}function S(t,e){const o=m.normalize(e.startsWith("/")?e.slice(1):m.join(t,e));return o.startsWith("..")?void 0:C(o)}function v(t,e){return typeof t=="string"?S(e,t)??t:typeof t=="object"&&t!==null&&g in t?t.path:t}const k=(t,e)=>t===""?e:`${t}.${e}`;function tt(t,e,o,n,i={}){const s={};for(const[c,r]of Object.entries(t)){if(c==="covers"){typeof r=="function"?s.covers=!0:r!==void 0&&(s.covers=f(r,k(n,"covers"),o));continue}if(c==="post"&&typeof r=="object"&&r!==null){const a=f(r,k(n,"post"),o),p=r.lut;s.post={...a,...typeof p=="string"?{lut:S(i.post??m.dirname(e),p)??p}:{}};continue}if(c==="music"&&r!==void 0){const a=typeof r=="string"||typeof r=="object"&&r!==null&&g in r?{file:r}:r,p=f({...a,file:void 0},k(n,"music"),o),l=a.file;s.music={...p,...l===void 0?{}:typeof l=="object"&&l!==null&&!(g in l)?{file:Object.fromEntries(Object.entries(l).map(([A,T])=>[A,v(T,i.music??m.dirname(e))]))}:{file:v(l,i.music??m.dirname(e))}};continue}const u=f(r,k(n,c),o);u!==void 0&&(s[c]=u)}return s}process.env.NODE_ENV="production";const w=(async()=>{const t=d.user?await G(d.root):void 0;return L(d.root,[U({root:d.root,media:d.media,dependencies:new Set(d.dependencies),...d.lent?{lent:d.lent}:{}})],{mode:"production",inline:[V,...Object.keys(d.lent??{})],...t?{user:t}:{}})})();function E(t,e,o){const n=t.written?.file;return t.written?.paths?.[e]?.[1]??m.dirname(n!==void 0&&n!==""?n:o)}async function et(t){const o=(await b(t,t,async()=>(await w).import(y(d.root,t)))).default;if(!W(o))throw new Error("The default export is not a video: an item's video.ts exports video({ … })");const n=[],i=B(o),s={[z(i.kind)]:{kind:i.kind,options:tt(i.options,t,n,"",{music:E(o,"music",t),post:E(o,"post",t)})}},c={written:o.written?.file??t,...o.id===void 0?{}:{id:f(o.id,"id",n)},...o.title===void 0?{}:{title:f(o.title,"title",n)},...o.format===void 0?{}:{format:f(o.format,"format",n)},...o.matrix===void 0?{}:{matrix:f(o.matrix,"matrix",n)},...o.meta===void 0?{}:{meta:f(o.meta,"meta",n)},outputs:s};return n.length>0&&h.push(x("AK-M001",`These places of the piece in ${t} are functions and cannot be read as metadata: ${n.join(", ")}. Make them plain data (text, numbers, lists, objects).`,{where:{file:t}})),c}async function ot(t){const e=await b(t,t,async()=>(await w).import(y(d.root,t))),o=[];for(const n of Object.values(e)){if(typeof n!="function")continue;const i=n.info;if(i===void 0||typeof n.componentName!="string")continue;const s=[],c=f(i,"",s);s.length>0&&h.push(x("AK-M001",`These places in the component declaration in ${t} are functions and cannot be read as metadata: ${s.join(", ")}. The types and examples of props must be plain data.`,{where:{file:t}})),o.push({...c,file:t})}return o}async function nt(t){const e=await b(t,t,async()=>(await w).import(y(d.root,t)),void 0,!1);return f(e.default,"",[])}function rt(t){const e=Object.keys(t),o=n=>{const i=t[n];if(typeof i=="string")return i;if(typeof i=="object"&&i!==null&&"display"in i)return String(i.display);const s=`${n}.`,c=[...new Set(e.filter(r=>r.startsWith(s)).map(r=>r.slice(s.length).split(".")[0]).filter(r=>r!==void 0&&/^\d+$/u.test(r)))].sort((r,u)=>Number(r)-Number(u));if(c.length!==0)return c.map(r=>o(`${n}.${r}`)).filter(r=>r!==void 0)};return o}async function it(t){const{file:e}=t,n=(await b(e,e,async()=>(await w).import(y(d.root,e)))).default;if(!F(n))throw new Error("The default export is not a deck: an item's slides.ts exports presentation((prs) => { … }) from @allyhub/sdk/slides");const i=await b(e,e,()=>Promise.resolve(_(n))),s=m.dirname(e),c=a=>{const p=K(s,a),l=N(y(d.root,p),"utf8");return/\.csv$/iu.test(p)?I(l):J(p,l)},{deck:r,problems:u}=H({def:i,file:t.slides??{slides:[]},words:rt(t.words),prefix:t.prefix,base:s,data:c});return{...n.options.title===void 0?{}:{title:n.options.title},size:[i.slide_width,i.slide_height],layouts:i.masters.flatMap(a=>a.layouts.map(p=>p.name)),components:Object.fromEntries(Object.entries(i.components).map(([a,p])=>[a,f(p.props,a,[])])),generators:Object.keys(i.generators),resolved:JSON.parse(JSON.stringify(r)),problems:u}}$?.on("message",t=>{(async()=>{h.length=0;try{await w;const e=t.type==="piece"?await et(t.file):t.type==="deck"?await it(t):t.type==="components"?await ot(t.file):await nt(t.file),o={id:t.id,ok:!0,value:e,problems:[...h]};$?.postMessage(o)}catch(e){const o={id:t.id,ok:!1,error:e instanceof Error?e.message:String(e),...e instanceof Error&&e.stack?{stack:e.stack}:{},problems:[...h]};$?.postMessage(o)}})()});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import{readFile as
|
|
2
|
+
import{readFile as T,stat as M}from"node:fs/promises";import{join as x,posix as f}from"node:path";import{createPackages as U}from"@allyhub-next/runtimes";const I=new Set(["KHR_draco_mesh_compression","EXT_meshopt_compression","KHR_meshopt_compression","KHR_texture_basisu","KHR_mesh_quantization","KHR_texture_transform","KHR_materials_unlit","KHR_materials_emissive_strength","KHR_materials_clearcoat","KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior","KHR_materials_specular","KHR_materials_sheen","KHR_materials_iridescence","KHR_materials_anisotropy","KHR_materials_dispersion","KHR_lights_punctual","EXT_mesh_gpu_instancing","EXT_texture_webp","EXT_texture_avif"]),F=20,p=t=>U().load("gltf-tools",{module:t,onFetch:()=>{process.stderr.write(`Getting the glTF tools, once, to read 3D models…
|
|
3
|
+
`)}});function N(t,n){if(!n)return JSON.parse(t.toString("utf8"));if(t.readUInt32LE(0)!==1179937895)throw new Error("not a GLB (no glTF magic)");const a=t.readUInt32LE(12);if(t.readUInt32LE(16)!==1313821514)throw new Error("its first chunk is not JSON");return JSON.parse(t.subarray(20,20+a).toString("utf8"))}function $(t,n){const a=f.dirname(t);return[...n.buffers??[],...n.images??[]].map(s=>s.uri).filter(s=>typeof s=="string"&&!s.startsWith("data:")).map(s=>f.normalize(f.join(a,decodeURIComponent(s))))}export async function missingFiles(t,n){try{const a=await T(x(t,n)),m=N(a,/\.glb$/i.test(n)),s=[];for(const c of $(n,m))await M(x(t,c)).then(i=>i.isFile()).catch(()=>!1)||s.push(c);return s}catch{return[]}}function A(t){const n=t.nodes??[],a=[],m=new Set,s=(i,r)=>{if(m.has(i))return;m.add(i);const d=n[i];if(!d)return;const l=d.name!==void 0&&d.name!==""?d.name:`Node[${String(i)}]`,g=r===""?l:`${r}/${l}`;d.name&&a.push({name:d.name,path:g});for(const w of d.children??[])s(w,g)},c=t.scenes?.[t.scene??0];for(const i of c?.nodes??[])s(i,"");return a}async function L(t,n,a){try{const{validateBytes:m}=await p("gltf-validator"),c=(await m(new Uint8Array(a),{uri:f.basename(n),maxIssues:200,externalResourceFunction:async i=>new Uint8Array(await T(x(t,f.dirname(n),decodeURIComponent(i))))})).issues;return{errors:c.numErrors,warnings:c.numWarnings,infos:c.numInfos,hints:c.numHints,messages:c.messages.slice(0,F).map(i=>({code:i.code,severity:i.severity,message:i.message,...i.pointer?{pointer:i.pointer}:{}}))}}catch{return}}const u=t=>Math.round(t*1e6)/1e6;export async function modelInfo(t,n,a){const m=/\.glb$/i.test(n);let s;try{s=N(a,m)}catch(l){return{container:m?"glb":"gltf",extensionsUsed:[],extensionsRequired:[],unsupported:[],missing:[],nodes:[],skins:0,morphTargets:0,cameras:0,lights:0,contentsMissing:`its description could not be read: ${l.message}`}}const c=s.extensionsRequired??[],i=s.extensions?.KHR_lights_punctual?.lights?.length??0,r={container:m?"glb":"gltf",...s.asset?.generator?{generator:s.asset.generator}:{},...s.asset?.copyright?{copyright:s.asset.copyright}:{},...(s.extensionsUsed??[]).includes("KHR_xmp_json_ld")?{rights:!0}:{},extensionsUsed:s.extensionsUsed??[],extensionsRequired:c,unsupported:c.filter(l=>!I.has(l)),missing:await missingFiles(t,n),nodes:A(s),skins:s.skins?.length??0,morphTargets:(s.meshes??[]).filter(l=>(l.primitives??[]).some(g=>(g.targets?.length??0)>0)).length,cameras:s.cameras?.length??0,lights:i},d=await L(t,n,a);if(d&&(r.validator=d),r.missing.length>0)return r.contentsMissing=`it names files that are not there (${r.missing.join(", ")})`,r;try{const[{NodeIO:l},{ALL_EXTENSIONS:g},{inspect:w},v,{MeshoptDecoder:E}]=await Promise.all([p("@gltf-transform/core"),p("@gltf-transform/extensions"),p("@gltf-transform/functions"),p("draco3dgltf"),p("meshoptimizer")]),b=new Set(g.map(e=>e.EXTENSION_NAME)),H=c.filter(e=>!b.has(e));if(H.length>0)return r.contentsMissing=`glTF-Transform does not read ${H.join(", ")}`,r;await E.ready;const K=new l().registerExtensions(g).registerDependencies({"draco3d.decoder":await v.createDecoderModule(),"meshopt.decoder":E}),R=m?await K.readBinary(new Uint8Array(a)):await K.read(x(t,n)),h=w(R),y=h.scenes.properties[0];if(y){const e=y.bboxMin,o=y.bboxMax,S=[u(o[0]-e[0]),u(o[1]-e[1]),u(o[2]-e[2])];r.bounds={min:[u(e[0]),u(e[1]),u(e[2])],max:[u(o[0]),u(o[1]),u(o[2])],size:S,largest:Math.max(...S)}}const _=h.meshes.properties;r.counts={nodes:R.getRoot().listNodes().length,meshes:_.length,primitives:_.reduce((e,o)=>e+o.meshPrimitives,0),triangles:_.reduce((e,o)=>e+o.glPrimitives*Math.max(1,o.instances),0),instances:_.reduce((e,o)=>e+o.instances,0)},r.materials=R.getRoot().listMaterials().map(e=>({name:e.getName(),extensions:e.listExtensions().map(o=>o.extensionName)})),r.textures=h.textures.properties.map(e=>({name:e.name,mimeType:e.mimeType,...e.resolution?{width:Number(e.resolution.split("x")[0]),height:Number(e.resolution.split("x")[1])}:{},bytes:e.size,...e.gpuSize!==null?{gpuBytes:e.gpuSize}:{}})),r.animations=h.animations.properties.map(e=>({name:e.name,duration:u(e.duration),channels:e.channels}))}catch(l){r.contentsMissing=`glTF-Transform could not read it: ${l.message.split(`
|
|
3
4
|
`)[0]??""}`}return r}
|
|
@@ -27,5 +27,7 @@ export interface PluginOptions {
|
|
|
27
27
|
export declare function lentSdk(): string | undefined;
|
|
28
28
|
/** The module a project file imports as the SDK: the SDK bound to that file. */
|
|
29
29
|
export declare function boundSdk(file: string): string;
|
|
30
|
+
/** The module a project file imports as @allyhub/sdk/slides: presentation() bound to that file. */
|
|
31
|
+
export declare function boundSlides(file: string): string;
|
|
30
32
|
export declare function allyhubPlugin(options: PluginOptions): Plugin;
|
|
31
33
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import{realpathSync as j}from"node:fs";import{readFile as
|
|
3
|
-
`)}export function
|
|
2
|
+
import{realpathSync as j}from"node:fs";import{readFile as x}from"node:fs/promises";import{builtinModules as J}from"node:module";import{dirname as F,isAbsolute as u,relative as w,sep as v}from"node:path";import{fileURLToPath as W}from"node:url";import{mediaKindOf as E}from"@allyhub-next/video-core";import{parseCsv as L,parseData as I}from"./data.js";import{FONTS_MODULE as S,fontsModule as T}from"./fonts.js";import{LENT as B,SDK as i,packageName as P}from"./scan.js";const s="\0allyhub-blocked:",m="\0allyhub-sdk:",p="\0allyhub-sdk-slides:",U=`\0${S}`,C=new Set([...J,...J.map(n=>`node:${n}`)]),g=n=>n.replace(/[?#].*$/u,""),K=n=>`/media/${n.split("/").map(encodeURIComponent).join("/")}`;export function lentSdk(){try{return F(W(import.meta.resolve(`${i}/package.json`)))}catch{return}}export function boundSdk(n){return[`export * from ${JSON.stringify(i)};`,`import { sdkFor } from ${JSON.stringify(i)};`,`export const { video, part, take, footage } = sdkFor({ file: ${JSON.stringify(n)} });`,""].join(`
|
|
3
|
+
`)}export function boundSlides(n){return[`export * from ${JSON.stringify(`${i}/slides`)};`,`import { presentationFor } from ${JSON.stringify(`${i}/slides`)};`,`export const presentation = presentationFor(${JSON.stringify(n)});`,""].join(`
|
|
4
|
+
`)}export function allyhubPlugin(n){const{root:o}=n,D=n.mediaUrl??K,N=[o];try{const t=j.native(o);t!==o&&N.push(t)}catch{}const O=t=>{for(const e of N){const r=w(e,t);if(!r.startsWith("..")&&!u(r))return r}},c=t=>(O(t)??w(o,t)).split(v).join("/"),h=t=>O(t)!==void 0,$=t=>t.split(v).includes("node_modules"),k=t=>{try{return W(import.meta.resolve(t))}catch{return`${s}${t}`}};return{name:"allyhub",enforce:"pre",async resolveId(t,e,r){if(t===S)return U;if(t.startsWith(m)||t.startsWith(p))return t;if(t.startsWith("\0"))return null;const a=e?g(e):void 0,y=a!==void 0&&u(a)&&h(a)&&!$(a);if(/^(https?:)?\/\//iu.test(t))return`${s}${t}`;const f=P(t);if(f===i){if(t===i&&y)return`${m}${c(a)}`;if(t===`${i}/slides`&&y)return`${p}${c(a)}`;const l=await this.resolve(t,e,{...r,skipSelf:!0});return l||(n.dependencies.has(i)?`${s}${t}`:k(t))}const b=n.lent?.[f];if(b!==void 0&&!n.dependencies.has(f))return await this.resolve(t,b,{...r,skipSelf:!0})??`${s}${t}`;if(B.has(f))return n.dependencies.has(f)?null:k(t);if(!y)return null;if(!t.startsWith(".")&&!t.startsWith("/")&&!u(t)&&!C.has(t))return n.dependencies.has(f)?null:`${s}${t}`;const d=await this.resolve(t,e,{...r,skipSelf:!0});if(d&&!d.external){const l=g(d.id);if(u(l)&&!h(l)&&!$(l))return`${s}${t}`}return d},async load(t){if(t===U)return T(o,n.fonts?.()??[]);if(t.startsWith(p))return boundSlides(t.slice(p.length));if(t.startsWith(m))return boundSdk(t.slice(m.length));if(t.startsWith(s)){const r=`AllyHub blocked the import of ${t.slice(s.length)}`;return`throw new Error(${JSON.stringify(r)});
|
|
4
5
|
export default undefined;
|
|
5
|
-
`}if(t.startsWith("\0")||/[?#]/u.test(t)||!u(t)||!
|
|
6
|
-
export default media(${JSON.stringify({...r,url:
|
|
7
|
-
`:null}return/\.csv$/iu.test(e)?`export default ${JSON.stringify(
|
|
8
|
-
`:/\.ya?ml$/iu.test(e)?`export default ${JSON.stringify(
|
|
9
|
-
`:null},transform(t,e){return n.stageEntries?.has(
|
|
10
|
-
import ${JSON.stringify(
|
|
6
|
+
`}if(t.startsWith("\0")||/[?#]/u.test(t)||!u(t)||!h(t)||$(t))return null;const e=c(t);if(E(e)){const r=n.media[e];return r?`import { media } from ${JSON.stringify(`${i}/media`)};
|
|
7
|
+
export default media(${JSON.stringify({...r,url:D(e)})});
|
|
8
|
+
`:null}return/\.csv$/iu.test(e)?`export default ${JSON.stringify(L(await x(t,"utf8")))};
|
|
9
|
+
`:/\.ya?ml$/iu.test(e)?`export default ${JSON.stringify(I(e,await x(t,"utf8")))};
|
|
10
|
+
`:null},transform(t,e){const r=g(e);return n.stageEntries?.has(r)?{code:`${t}
|
|
11
|
+
import ${JSON.stringify(S)};
|
|
11
12
|
`,map:null}:null}}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Config, type Item } from "@allyhub-next/formats";
|
|
1
|
+
import { type SlidesFile, type Config, type Item } from "@allyhub-next/formats";
|
|
2
2
|
import { type BuildSource, type Combo, type Dims, type FormatEntry, type MatrixPlan, type Problem, type VideoConfig } from "@allyhub-next/video-core";
|
|
3
3
|
import { type DocInfo, type SheetInfo } from "./content.js";
|
|
4
4
|
import { readData } from "./data.js";
|
|
@@ -28,6 +28,14 @@ export interface PieceInfo {
|
|
|
28
28
|
/** Its output's options, as read in Node. */
|
|
29
29
|
options: Record<string, unknown>;
|
|
30
30
|
meta: Record<string, unknown>;
|
|
31
|
+
/** A deck's: its slides.yaml as read (none when it has none or it is not the format), its size in EMU, and its layouts', components' and generators' names. */
|
|
32
|
+
deck?: {
|
|
33
|
+
file?: SlidesFile;
|
|
34
|
+
size: [width: number, height: number];
|
|
35
|
+
layouts: string[];
|
|
36
|
+
components: Record<string, unknown>;
|
|
37
|
+
generators: string[];
|
|
38
|
+
};
|
|
31
39
|
}
|
|
32
40
|
export interface Prepared {
|
|
33
41
|
root: string;
|
|
@@ -78,4 +86,8 @@ export declare function prepare(root: string, options?: PrepareOptions): Promise
|
|
|
78
86
|
* the build's bundles (an URL ending in "/"), `mediaUrl` a project file.
|
|
79
87
|
*/
|
|
80
88
|
export declare function sourceOf(prepared: Prepared, piece: PieceInfo, served: string, mediaUrl: (path: string) => string): BuildSource;
|
|
89
|
+
/** A deck's pixels: its size at 144 dots an inch (a 16:9 deck is 1920 × 1080). */
|
|
90
|
+
export declare const DECK_DPI = 144;
|
|
91
|
+
/** The stage's size of a deck, as a WxH format. */
|
|
92
|
+
export declare const deckFormat: ([w, h]: readonly [number, number]) => string;
|
|
81
93
|
//# sourceMappingURL=prepare.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import{readFile as
|
|
3
|
-
`).slice(0,3).join(" ")}`,{}))}}const
|
|
2
|
+
import{readFile as _,readdir as te}from"node:fs/promises";import{join as M}from"node:path";import{BAKE_DIR as B,CONFIG_FILES as se,ConfigSchema as H,PACKAGE_FILE as ie,SLIDES_FILE as P,TEXT_DIR as I,scanItems as ne,slidesFileFor as oe}from"@allyhub-next/formats";import{PieceMeta as re,VIDEO_FORMAT_HELP as ae,VideoConfigSchema as ce,VideoOptionsMeta as de,formatName as le,isVideoFormat as fe,looksOf as me,messagePrefix as ue,problem as f,resolveDims as J}from"@allyhub-next/video-core";import{checkDeck as he,readSlidesFile as pe}from"@allyhub-next/slides-core";import{readDocs as we,readSheets as ye}from"./content.js";import{readData as be}from"./data.js";import{listFiles as ge}from"./files.js";import{fontStyles as $e}from"./fonts.js";import{resolveMatrix as W}from"./matrix.js";import{readMedia as ke}from"./media.js";import{mergeScripts as X,readMessages as ve}from"./messages.js";import{MetaLoader as xe}from"./meta.js";import{allyhubPlugin as Me}from"./plugin.js";import{checkImports as Se,discover as Q,parse as Ae}from"./scan.js";import{writeMessageTypes as Ee}from"./types.js";import{bundleForStage as Fe,loadUserVite as Ke}from"./vite.js";import{nodeStackPlace as T}from"./places.js";function je(e){switch(e.code){case"two-entries":return f("AK-M003",`${e.dir} has more than one entry file (${e.entries.join(", ")}): an item has one. Remove all but one.`,{where:{file:e.entries[0]??e.dir}});case"nested":return f("AK-M003",`${e.dir} is an item inside the item ${e.inside}: items do not nest. Move it out.`,{where:{file:e.dir}});case"at-root":return f("AK-M002",`${e.entry} is at the project's root: an item is a folder of its own. Move it into one.`,{where:{file:e.entry}})}}function L(e,t,i){const c=i?`${t} (at ${i.file}:${String(i.line)}:${String(i.column)})`:t,m=/\b(window|document|navigator|self|HTMLElement|customElements) is not defined/u.test(t);return f("AK-R001",m?`${e} uses something at its top level that only exists in the browser (${c}). The top level of a piece module must load in Node: move it into the output's function, or import it inside a component.`:`Failed to load ${e}: ${c}`,{where:i?{file:i.file,line:i.line}:{file:e}})}const R=e=>e.issues.map(t=>`${t.path.map(String).join(".")||"(root)"}: ${t.message}`).join("; ");async function Oe(e){try{const t=JSON.parse(await _(M(e,ie),"utf8"));return new Set(["dependencies","devDependencies","peerDependencies","optionalDependencies"].flatMap(i=>Object.keys(t[i]??{})))}catch{return new Set}}async function De(e){return(await te(M(e,B)).catch(()=>[])).filter(i=>/^[0-9a-f]+\.[\w-]+\.bin$/u.test(i)).map(i=>`${B}/${i}`)}export async function prepare(e,t={}){const i=[],c=await ge(e),m=ne(c);for(const n of m.problems)i.push(je(n));const h=await Oe(e),u=await ke(e,[...c,...await De(e)]),p=new xe({root:e,media:u,dependencies:[...h],user:!0,...t.host?{lent:{...t.host.lent}}:{}},t.metaTimeout);try{let n=H.parse({});const r=se.find(s=>c.includes(s));if(r){const s=await p.request({type:"config",file:r});if(i.push(...s.problems),!s.ok)i.push(L(r,s.error??"",T(s.stack,e)));else{const d=H.safeParse(s.value??{}),o=ce.safeParse(s.value??{});d.success&&o.success?n={...d.data,...o.data}:i.push(f("AK-M001",`${r} is not valid: ${[d.error,o.error].flatMap(g=>g?[R(g)]:[]).join("; ")}.`,{where:{file:r}}))}}const l=n.defaults?.format??"16x9",y=$e(e,n);for(const s of y.missing)i.push(f("AK-A001",`allyhub.config's fonts name ${s}, which is not in the project or its packages.`,{where:{file:r??"allyhub.config.ts"}}));const b=await ve(e,c,{...n.locales?{locales:n.locales}:{},text:n.text??I});i.push(...b.problems);const S=await be(e,c,n.text??I),a=await we(e,m.items,c),k=await ye(e,m.items,c);i.push(...a.problems,...k.problems);const Z=c.filter(s=>/\.(ts|tsx|js|jsx|mts|mjs)$/u.test(s)&&!s.endsWith(".d.ts")),F=new Map;for(const s of Z){const d=Ae(s,await _(M(e,s),"utf8"));F.set(s,d),i.push(...Se(s,d,h,new Set(Object.keys(t.host?.lent??{}))))}const C=[];for(const[s,d]of F){if(!Q(s,d).components)continue;const o=await p.request({type:"components",file:s});if(i.push(...o.problems),!!o.ok)for(const g of o.value??[])typeof g.name=="string"&&C.push({name:g.name,file:s})}const x=[],K=new Map;for(const s of m.items){if(s.kind==="slides"){const v=await _e(s,{root:e,meta:p,messages:b,media:u,ids:K,problems:i});v&&x.push(v);continue}if(s.kind!=="video")continue;const d=F.get(s.entry);if(d){const v=Q(s.entry,d);if(i.push(...v.problems),!v.piece&&v.problems.length>0)continue}const o=await p.request({type:"piece",file:s.entry});if(i.push(...o.problems),!o.ok){o.error!=="timeout"&&i.push(L(s.entry,o.error??"",T(o.stack,e)));continue}const g={...o.value};delete g.written;const w=re.safeParse(g);if(!w.success){i.push(f("AK-M001",`The piece in ${s.entry} is not valid: ${R(w.error)}.`,{where:{file:s.entry}}));continue}const N=s.dir,$=w.data.id??N,V=K.get($);if(V!==void 0){i.push(f("AK-B001",`${s.entry} and ${V} both have the piece id ${$}. Give one of them another (video({ id, … })).`,{where:{file:s.entry}}));continue}K.set($,s.entry),i.push(...X(b,[{id:$,dir:s.dir}]));const[q]=Object.values(w.data.outputs);if(!q)continue;const ee=s.kind,G=w.data.format??l,O=le(G);if(!fe(O)){i.push(f("AK-G001",`${s.entry} cannot render in the format "${O}". Use ${ae}.`,{piece:$,where:{file:s.entry}}));continue}const D=de.safeParse(q.options);if(!D.success){i.push(f("AK-M001",`The video of ${s.entry} is not valid: ${R(D.error)}.`,{piece:$,where:{file:s.entry}}));continue}const z=J(w.data.matrix?.dims,{locales:b.locales}),E=await W({root:e,piece:$,file:s.entry,dims:z,matrix:w.data.matrix,files:c});i.push(...E.problems),x.push({id:$,idFrom:w.data.id===void 0?"path":"code",kind:ee,dir:s.dir,file:s.entry,place:N,...w.data.title===void 0?{}:{title:w.data.title},format:O,formatEntry:G,dims:z,combos:E.combos,...E.plan?{matrix:E.plan}:{},options:D.data,meta:w.data.meta??{}})}const A=b.locales[0];await Ee(e,A===void 0?{}:b.messages[A]??{},A===void 0?void 0:b.files[A]);let j;if(t.buildDir&&x.length>0){const s=Object.fromEntries(x.map(o=>[o.id.replaceAll("/","__"),M(e,o.file)])),d=await Ke(e);try{const o=await Fe({root:e,entries:s,outDir:t.buildDir,plugins:[Me({root:e,media:u,dependencies:h,fonts:()=>y.styles,stageEntries:new Set(Object.values(s)),...t.host?{lent:t.host.lent}:{},...t.mediaUrl?{mediaUrl:t.mediaUrl}:{}}),...t.host?.plugins??[]],...d?{user:d}:{}});j={dir:t.buildDir,chunks:o}}catch(o){i.push(f("AK-R001",`The pieces could not be bundled for the stage: ${o.message.split(`
|
|
3
|
+
`).slice(0,3).join(" ")}`,{}))}}const U=new Set;return{root:e,files:c,items:m.items,config:n,defaultFormat:l,dependencies:[...h].sort(),messages:b,media:u,data:S,docs:a.docs,sheets:k.sheets,pieces:x,components:C,fonts:y.styles,...j?{bundle:j}:{},problems:i.filter(s=>{const d=`${s.code}|${s.message}|${s.where?.file??""}|${String(s.where?.line??"")}`;return U.has(d)?!1:(U.add(d),!0)})}}finally{await p.close()}}export function sourceOf(e,t,i,c){const m=t.id.replaceAll("/","__"),h=e.bundle?.chunks.entries[m];if(!h)throw new Error(`${t.id} was not bundled for the stage.`);const u=new Set,p=(n,r)=>{if(r.has(n))return;r.add(n);const l=e.bundle?.chunks.chunks[n];if(l){for(const y of l.css)u.add(`${i}${y}`);for(const y of l.imports)p(y,r)}};return p(h.file,new Set),{piece:t.id,file:t.file,module:`${i}${h.file}`,styles:[...u],dims:t.dims,...t.matrix?{matrix:{space:t.matrix.space,rules:t.matrix.rules}}:{},format:t.format,locales:e.messages.locales,messages:e.messages.messages,anchors:e.messages.anchors,text:e.config.text??I,media:Object.fromEntries(Object.entries(e.media).map(([n,r])=>[n,{...r,url:c(n)}])),data:e.data,...t.kind==="slides"?{kind:"slides",slides:t.deck?.file??{slides:[]}}:{},...me(e.config),pieces:Object.fromEntries(e.pieces.map(n=>[n.id,{file:n.file,dims:n.dims,format:n.format,...n.matrix?{matrix:{space:n.matrix.space,rules:n.matrix.rules}}:{}}]))}}export const DECK_DPI=144;const Y=914400;export const deckFormat=([e,t])=>`${String(Math.round(e/Y*DECK_DPI))}x${String(Math.round(t/Y*DECK_DPI))}`;async function _e(e,t){const i=e.dir,c=t.ids.get(i);if(c!==void 0){t.problems.push(f("AK-B001",`${e.entry} and ${c} both have the piece id ${i}.`,{where:{file:e.entry}}));return}t.ids.set(i,e.entry),t.problems.push(...X(t.messages,[{id:i,dir:e.dir}]));const m=oe(e.dir),h=a=>({file:m,...a===void 0?{}:{line:a}});let u,p=()=>{};try{const a=pe(await _(M(t.root,m),"utf8"));p=a.lineOf;for(const k of a.problems)t.problems.push(f("AK-M011",`${P}: ${k.message}`,{piece:i,where:h(k.line)}));u=a.file}catch{t.problems.push(f("AK-M011",`The deck ${e.dir} has no ${P}: its slides are listed there, each on one of slides.ts's layouts (slides: [{ id: cover, layout: Title Slide }]).`,{piece:i,where:{file:m}}))}const n=t.messages.locales[0],r=await t.meta.request({type:"deck",file:e.entry,slides:u,words:n===void 0?{}:t.messages.messages[n]??{},prefix:ue(i)});if(t.problems.push(...r.problems),!r.ok){r.error!=="timeout"&&t.problems.push(L(e.entry,r.error??"",T(r.stack,t.root)));return}const l=r.value;for(const a of l.problems)t.problems.push(f("AK-M011",`${P}: ${a.message}`,{piece:i,...a.slide===void 0?{}:{part:a.slide},where:h(a.path===void 0?void 0:p(a.path))}));for(const a of he(l.resolved,{mediaKind:k=>t.media[k]?.kind}))t.problems.push(f("AK-M011",a.message,{piece:i,...a.slide===void 0?{}:{part:a.slide},where:{file:m}}));const y=J(void 0,{locales:t.messages.locales}),b=await W({root:t.root,piece:i,file:e.entry,dims:y,matrix:void 0,files:[]}),S=deckFormat(l.size);return{id:i,idFrom:"path",kind:"slides",dir:e.dir,file:e.entry,place:e.dir,...l.title===void 0?{}:{title:l.title},format:S,formatEntry:S,dims:y,combos:b.combos,options:{},meta:{},deck:{...u?{file:u}:{},size:l.size,layouts:l.layouts,components:l.components,generators:l.generators}}}
|
|
@@ -29,7 +29,7 @@ export declare const SDK_ENTRIES: ReadonlySet<string>;
|
|
|
29
29
|
*/
|
|
30
30
|
export declare const LENT: ReadonlySet<string>;
|
|
31
31
|
export interface Discovered {
|
|
32
|
-
/** The file default-exports video(…) or
|
|
32
|
+
/** The file default-exports video(…) or presentation(…) (directly or through a binding). */
|
|
33
33
|
piece: boolean;
|
|
34
34
|
/** The file imports defineComponent from @allyhub/sdk. */
|
|
35
35
|
components: boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import{builtinModules as A}from"node:module";import{parseSync as g,visitorKeys as E}from"oxc-parser";import{problem as f,repoPath as K}from"@allyhub-next/video-core";export function parse(t,
|
|
2
|
+
import{builtinModules as A}from"node:module";import{parseSync as g,visitorKeys as E}from"oxc-parser";import{problem as f,repoPath as K}from"@allyhub-next/video-core";export function parse(t,s){const e=g(t,s,{sourceType:"module"});return{program:e.program,errors:e.errors.map(o=>({message:o.message,...o.labels[0]?{start:o.labels[0].start}:{}})),source:s}}export function lineAt(t,s){let e=1;for(let o=0;o<s&&o<t.length;o++)t.charCodeAt(o)===10&&e++;return e}const d=t=>typeof t=="object"&&t!==null&&typeof t.type=="string",I=new Set(["typeAnnotation","typeParameters","typeArguments","returnType","superTypeArguments","implements"]);export function walk(t,s){const e=[],o=n=>{if(n.type.startsWith("TS")){const i=n.expression;d(i)&&(e.push(n),o(i),e.pop());return}if(!((n.type==="ImportDeclaration"||n.type==="ExportNamedDeclaration")&&n.importKind==="type")){s(n,e),e.push(n);for(const i of E[n.type]??Object.keys(n)){if(I.has(i))continue;const p=n[i];if(Array.isArray(p))for(const a of p)d(a)&&o(a);else d(p)&&o(p)}e.pop()}};o(t)}export const SDK="@allyhub/sdk",SDK_ENTRIES=new Set([SDK,`${SDK}/dom`,`${SDK}/media`,`${SDK}/scenery`,`${SDK}/slides`]),LENT=new Set(["three","@allyhub-next/model"]);function S(t,s,e=SDK){const o=new Set;for(const n of t.body)if(!(n.type!=="ImportDeclaration"||n.source.value!==e))for(const p of n.specifiers??[]){if(p.type!=="ImportSpecifier")continue;const a=p.imported;(a.name??a.value)===s&&o.add(p.local.name)}return o}function h(t){let s=t;for(;["TSAsExpression","TSSatisfiesExpression","ParenthesizedExpression","TSNonNullExpression"].includes(s.type)&&d(s.expression);)s=s.expression;return s}const y=(t,s)=>{if(!t)return!1;const e=h(t);if(e.type!=="CallExpression")return!1;const o=e.callee;return o.type==="Identifier"&&s.has(o.name)},w=[["video",SDK],["presentation",`${SDK}/slides`]];export function discover(t,s){const e=[],{program:o,source:n}=s,i=new Set(w.flatMap(([l,m])=>[...S(o,l,m)])),p=S(o,"defineComponent").size>0,a=o.body,u=a.find(l=>l.type==="ExportDefaultDeclaration"),r=l=>({file:t,line:lineAt(n,l.start)});if(!u)return i.size>0&&/\bexport\s+\{[^}]*\bdefault\b/.test(n)&&e.push(f("AK-M001",`${t} imports ${[...i].join(" and ")}, but its default export is a re-export. An item's entry file writes export default video({ … }) (or presentation(…)) itself: AllyHub does not look in other files.`,{where:{file:t}})),{piece:!1,components:p,problems:e};const c=u.declaration;if(y(c,i))return{piece:!0,components:p,problems:e};const x=h(c);if(x.type==="Identifier"){const l=x.name;for(const m of a)if(m.type==="VariableDeclaration")for(const $ of m.declarations){const b=$.id;if(b.type==="Identifier"&&b.name===l&&y($.init,i))return{piece:!0,components:p,problems:e}}}return i.size>0?e.push(f("AK-M001",`${t} imports ${[...i].join(" and ")}, but its default export is not a video(…) or presentation(…) call. Write export default video({ … }) (presentation(…) for a deck), or const film = video({ … }); export default film. AllyHub does not follow factory functions or conditional expressions.`,{where:r(u)})):y(c,new Set(w.map(([l])=>l)))&&e.push(f("AK-M001",`The ${String(h(c).callee.name)} that ${t} calls is not imported from ${SDK}. Write import { video } from "${SDK}" (import { presentation } from "${SDK}/slides" for a deck).`,{where:r(u)})),{piece:!1,components:p,problems:e}}const T=new Set([...A,...A.map(t=>`node:${t}`)]);export function packageName(t){const s=t.split("/");return t.startsWith("@")?s.slice(0,2).join("/"):s[0]??t}export function checkImports(t,s,e,o=new Set){const n=[],{program:i,source:p}=s;for(const a of i.body){if(!/^(Import|ExportNamed|ExportAll)Declaration$/.test(a.type)||a.importKind==="type"||a.exportKind==="type")continue;const r=a.source?.value;if(typeof r!="string")continue;const c={file:t,line:lineAt(p,a.start)};if(/^(https?:)?\/\//i.test(r)){n.push(f("AK-B005",`${t} imports the remote address ${r}. The build has no network: install it as an npm package, or put it in the project.`,{where:c}));continue}if(r.startsWith(".")||r.startsWith("/")){K(t,r)===void 0&&n.push(f("AK-B005",`${t} imports ${r}, a file outside the project. Put it in the project.`,{where:c}));continue}if(packageName(r)===SDK){SDK_ENTRIES.has(r)||n.push(f("AK-B006",r===`${SDK}/components`?`${t} imports ${r}: the components are not part of the SDK. A project has its own copies: allyhub add lists the starter components and copies one in (allyhub add component/screen-demo).`:`${t} imports ${r}, which ${SDK} does not have. Its entry points: ${[...SDK_ENTRIES].join(", ")}.`,{where:c}));continue}T.has(r)||LENT.has(packageName(r))||o.has(packageName(r))||e.has(packageName(r))||n.push(f("AK-B005",`${t} imports ${r}, but package.json does not declare ${packageName(r)}. Add it with npm install ${packageName(r)}.`,{where:c}))}return n}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import{mkdir as
|
|
2
|
+
import{randomUUID as y}from"node:crypto";import{mkdir as w,readFile as b,rename as j,writeFile as S}from"node:fs/promises";import{dirname as k,join as M}from"node:path";import{CACHE_DIR as T,TEXT_DIR as v}from"@allyhub-next/formats";import{messageInputs as x}from"@allyhub-next/video-core";import{SDK as d}from"./scan.js";export const MESSAGE_TYPES=`${T}/types/messages.d.ts`;const f=n=>JSON.stringify(n);function D(n){const i={leaf:!1,children:new Map};for(const r of n){let t=i;for(const e of r.split(".")){let s=t.children.get(e);s||(s={leaf:!1,children:new Map},t.children.set(e,s)),t=s}t.leaf=!0}return i}function m(n){const i=[...n.children.keys()];if(i.length===0||!i.every(t=>/^\d+$/.test(t)))return;const r=[];for(let t=0;;t++){const e=n.children.get(String(t));if(!e)break;r.push(e)}return r}function E(n,i){if(n.children.size===0)return"string";const r=m(n);return r?`${p(r,i)}[]`:g([...n.children.entries()].map(([t,e])=>[t,[e],!1]),i)}function g(n,i){const r=`${i} `;return`{
|
|
3
3
|
${[...n].sort((e,s)=>e[0]<s[0]?-1:e[0]>s[0]?1:0).map(([e,s,o])=>`${r}${f(e)}${o?"?":""}: ${p(s,r)};`).join(`
|
|
4
4
|
`)}
|
|
5
|
-
${i}}`}function p(n,i){if(n.length===0)return"never";const r=n.filter(e=>e.children.size>0&&!m(e));if(r.length===n.length&&r.length>0){const e=new Set(r.flatMap(s=>[...s.children.keys()]));return g([...e].map(s=>{const o=r.map(c=>c.children.get(s)).filter(c=>c!==void 0);return[s,o,o.length<r.length]}),i)}const t=[...new Set(n.map(e=>E(e,i)))];return t.length===1?t[0]??"string":t.join(" | ")}export function messageTypes(n,i){const r=Object.keys(n).sort(),t=r.map(o=>{const c=[...
|
|
6
|
-
`)}export async function writeMessageTypes(n,i,r){const t=
|
|
5
|
+
${i}}`}function p(n,i){if(n.length===0)return"never";const r=n.filter(e=>e.children.size>0&&!m(e));if(r.length===n.length&&r.length>0){const e=new Set(r.flatMap(s=>[...s.children.keys()]));return g([...e].map(s=>{const o=r.map(c=>c.children.get(s)).filter(c=>c!==void 0);return[s,o,o.length<r.length]}),i)}const t=[...new Set(n.map(e=>E(e,i)))];return t.length===1?t[0]??"string":t.join(" | ")}export function messageTypes(n,i){const r=Object.keys(n).sort(),t=r.map(o=>{const c=[...x(n[o]).entries()].sort((l,u)=>l[0]<u[0]?-1:1),a=c.length===0?"{}":`{ ${c.map(([l,u])=>`${f(l)}: ${u==="number"?"number":"string | number"}`).join("; ")} }`;return` ${f(o)}: ${a};`}),e=[],s=(o,c)=>{const a=c?m(o):void 0;a&&a.length>0&&e.push(` ${f(c)}: ${p(a," ")};`);for(const[l,u]of[...o.children.entries()].sort((h,$)=>h[0]<$[0]?-1:1))s(u,c?`${c}.${l}`:l)};return s(D(r),""),[`// Generated by allyhub from ${i??`${v}/ (none yet)`}, the default language.`,"// Do not edit: allyhub check, build and dev write it again.",'// Include it in tsconfig.json: "include": ["**/*.ts", ".allyhub/cache/types"].',`import ${f(d)};`,"",`declare module ${f(d)} {`," interface Messages {",...t," }"," interface MessageLists {",...e," }","}",""].join(`
|
|
6
|
+
`)}export async function writeMessageTypes(n,i,r){const t=M(n,MESSAGE_TYPES),e=messageTypes(i,r);if(await b(t,"utf8").catch(()=>{})===e)return;await w(k(t),{recursive:!0});const o=`${t}.${y()}.tmp`;await S(o,e),await j(o,t)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import{createHash as te}from"node:crypto";import{join as se}from"node:path";import{uniformInt as
|
|
3
|
-
`)}}function
|
|
4
|
-
`)[0]??""}`}}return await
|
|
2
|
+
import{deckFacts as ge}from"@allyhub-next/slides-core";import{createHash as te}from"node:crypto";import{join as se}from"node:path";import{uniformInt as oe}from"pure-rand/distribution/uniformInt";import{xoroshiro128plus as we}from"pure-rand/generator/xoroshiro128plus";import{CACHE_DIR as xe}from"@allyhub-next/formats";import{buildModule as be}from"@allyhub-next/model/build";import{ffmpegOf as ye,ffmpegRuns as $e,postPlaces as ke,postProblems as Se,readPng as ne}from"@allyhub-next/render";import{comboIdOf as U,comboKey as B,comboMatches as Me,countLevels as ve,coverCombos as Fe,cutThroughout as ie,pieceNamed as ae,problem as z,CONSOLE_LIMIT as Ce}from"@allyhub-next/video-core";import{OutputCache as Le,cacheKey as De,checkerId as Ee}from"./cache.js";import{consoleOf as Ae,baseDigest as Pe,outputDigest as re,dedupe as ce,StuckError as me,CheckSession as _e,runtimeDigest as Ie,extraCombos as Te}from"@allyhub-next/project";import{matrixFacts as Ke,measuredFacts as Oe,screenFidelity as Re,flatFrames as je,cutSeams as He,flashFrames as Be,stillPicture as ze}from"@allyhub-next/measure";import{generatedFact as Ne,generatedPagedFact as Ue,mismatchFacts as Ge}from"./generated.js";import{StretchLoudness as fe,estimatePlan as Ye,loadedPlan as qe,planProblems as Je}from"./plans.js";import{sceneryLayerFacts as Qe,withBakes as Ve}from"./scenery.js";export function checkStats(s,t,o,e=0){const i=t.length;return{loaded:t,reused:o,outputs:{total:s,checked:i,reused:Math.max(0,s-i-e),covered:e}}}const We=new Set(["text-time","words-on-screen","text-covered","flat-frames","still-picture"]);export const plural=(s,t)=>`${String(s)} ${t}${s===1?"":"s"}`;const de=s=>we(te("sha256").update(s).digest().readInt32BE(0));export function samplesFor(s,t,o,e){const i=new Set(s.slice(0,e)),r=de(o),c=Math.floor(t*30);for(let f=0;i.size<Math.min(e,c)&&f<e*20;f++)i.add(oe(r,0,c-1)/30);return[...i]}export function shuffled(s,t){const o=[...s],e=de(t);for(let i=o.length-1;i>0;i--){const r=oe(e,0,i),c=o[i],f=o[r];c===void 0||f===void 0||(o[i]=f,o[r]=c)}return o}export const RASTER_NOISE=3,RASTER_SPECKS=8;export function frameDifference(s,t){const o=ne(s),e=ne(t);if(o.width!==e.width||o.height!==e.height)return{max:255,pixels:Math.max(o.width*o.height,1)};let i=0,r=0;for(let c=0;c<o.data.length;c+=4){let f=0;for(let d=0;d<4;d++)f=Math.max(f,Math.abs((o.data[c+d]??0)-(e.data[c+d]??0)));f>RASTER_NOISE&&r++,f>i&&(i=f)}return{max:i,pixels:r}}export const CUT_RECHECK={most:48,every:2};export async function recheckCuts(s,t,o,e){const i=ie(t);if(i.length===0)return t;const r=CUT_RECHECK.every/o,c=new Set;for(const d of i){const a=e.find(h=>h.key===d.part);if(!a)continue;const l=t.moments.filter(h=>h.part===d.part).map(h=>h.t).sort((h,C)=>h-C),x=d.moments[0]??d.t,b=d.moments.at(-1)??d.t,F=Math.max(a.start,l.filter(h=>h<x).at(-1)??a.start),T=Math.min(a.end-1/o,l.find(h=>h>b)??a.end),A=Math.min(CUT_RECHECK.most,Math.floor((T-F)/r)+1),R=A>1?(T-F)/(A-1):0;for(let h=0;h<A;h++){const C=Math.round((F+R*h)*o)/o;l.includes(C)||c.add(C)}}if(c.size===0)return t;const f=await s.measure([...c].sort((d,a)=>d-a));return{...t,moments:[...t.moments,...f.moments].sort((d,a)=>d.t-a.t)}}export function offFrameProblems(s,t){const o=e=>`${e.toFixed(2)} s`;return ie(s).map(e=>{const i=e.moments[0]??0,r=e.moments.at(-1)??i,c=e.moments.length===1?`at ${o(i)}, the one moment measured that shows it`:`at all ${String(e.moments.length)} moments measured that show it (${i.toFixed(2)}–${o(r)})`,f=e.worst.edges.map(l=>`${String(l.px)} pixels past the ${l.side} edge`).join(" and "),d=`"${e.text.text.length>40?`${e.text.text.slice(0,40)}…`:e.text.text}"`,a=s.deck?`Text goes off the slide: the slide's edge cuts ${d} of ${e.text.layer} on slide ${e.part}; its letters reach ${f} at ${t.format} (${String(Math.round(e.worst.share*100))}% of them outside). Move or size its shape inside the slide, or give it less text. allyhub inspect --kind text-off-frame has it.`:void 0;return z("AK-L002",a??`Text goes off the frame: the frame cuts "${e.text.text.length>40?`${e.text.text.slice(0,40)}…`:e.text.text}" ${c}; its letters reach ${f} at ${t.format} (${String(Math.round(e.worst.share*100))}% of them outside). Move it inside the frame or make it smaller (fitText in a component); text that is part of a picture the frame crops on purpose (a mocked interface) goes inside an element with data-ak-picture. allyhub inspect --kind text-off-frame has each moment.`,{piece:t.piece,output:t.output,combo:t.combo,format:t.format,part:e.part,t:e.t,where:{bbox:e.worst.glyphs}})})}const le=s=>te("sha256").update(s).digest("hex");export async function determinism(s,t,o){const e=s.timeline,i=samplesFor(e.parts.map(a=>a.still),e.duration,t,o),r=new Map;for(const a of[...i].sort((l,x)=>l-x))r.set(a,await s.shot(a));const c=[];let f=0;for(const a of shuffled(i,`${t}:shuffle`)){const l=r.get(a),x=await s.shot(a);if(!l||le(x)===le(l))continue;const b=frameDifference(l,x);b.pixels>RASTER_SPECKS&&(c.push(a),f=Math.max(f,b.max))}if(c.length===0)return[];c.sort((a,l)=>a-l);const d=[...new Set(c.flatMap(a=>e.parts.filter(l=>a>=l.start&&a<l.end).map(l=>l.key)))];return[z("AK-D002",`${plural(c.length,"moment")} drew differently in order and out of order (${c.map(a=>`${a.toFixed(2)}s`).join(", ")}; pixels differ by up to ${String(f)} levels). render must depend only on t, not on state left by an earlier frame.`,{piece:s.target.piece,output:s.target.output,combo:s.target.combo,format:s.target.format,t:c[0]??0,...d.length===1&&d[0]?{part:d[0]}:{}})]}export function summarize(s){const t=ve(s);return{status:t.errors>0?"failed":t.warnings>0?"warnings":"passed",...t}}function Xe(s,t){const o=r=>[r.piece??"",r.output??"",r.combo?B(r.combo):"",r.format??"",r.part??"",r.where?.file??"",String(r.where?.line??0).padStart(6,"0"),r.code].join("\0"),e=o(s),i=o(t);return e<i?-1:e>i?1:0}class Ze{spent=new Map;on=process.env.ALLYHUB_CHECK_TIMINGS==="1";async time(t,o){if(!this.on)return o();const e=performance.now();try{return await o()}finally{this.spent.set(t,(this.spent.get(t)??0)+(performance.now()-e)/1e3)}}report(){if(!this.on)return;const t=[...this.spent].sort((o,e)=>e[1]-o[1]);process.stderr.write(`Check timings (s): ${t.map(([o,e])=>`${o} ${e.toFixed(2)}`).join(", ")}
|
|
3
|
+
`)}}function et(s){const t=s.options,o=t.post,e=typeof o=="object"&&o!==null?o.filter:void 0;return{transparent:t.transparent===!0,deliverable:t.deliverable!==!1,...typeof t.maxDuration=="number"?{maxDuration:t.maxDuration}:{},...typeof e=="string"?{post:e}:{}}}async function tt(s){let t;try{t=await ye(s===void 0?{}:{ffmpeg:s})}catch(o){return{missing:`the pinned ffmpeg could not be had: ${(o instanceof Error?o.message:String(o)).split(`
|
|
4
|
+
`)[0]??""}`}}return await $e(t)?{ffmpeg:t}:{missing:`${t} does not run`}}export async function runCheck(s){const t=new Ze,o=s.session??await t.time("prepare (discover, metadata, bundle)",()=>_e.open({root:s.dir,...s.buildDir===void 0?{}:{buildDir:s.buildDir},...s.gpu===void 0?{}:{gpu:s.gpu},...s.consoleLimit===void 0?{}:{consoleLimit:s.consoleLimit}}));try{const e=o.prepared,i=s.samples??12,r=o.consoleLimit,c=await Ie(),f=await Le.open(e.root,await Ee({runtimeSha:c,samples:i,gpu:o.gpu,...r===Ce?{}:{consoleLimit:r}}));let d;const a=()=>d??=tt(s.ffmpeg),l=[],x=[...e.problems],b=[],F=[],T=[],A=[];let R=0,h=0;const C=[];let L;const ue=e.pieces.filter(n=>s.piece===void 0||ae({id:n.id,path:n.place},s.piece));for(const n of ue){if(!e.bundle?.chunks.entries[n.id.replaceAll("/","__")])continue;const M=et(n),P=n.kind,K=n.format,Y=await Pe(e,n,c);b.push(...Ke(n));const q=new Set,j=[...n.combos.filter(p=>!s.combos?.length||s.combos.some(u=>Me(p,u,U(n.matrix,p)))),...Te(n,s.combos)],pe=new Set(n.matrix?Fe(n.matrix.space,n.dims,j):j.keys()),_=[],J=p=>{T.push(p);for(const u of p.reads?.media??[])q.add(u.path);p.timeline&&_.push({...p,timeline:p.timeline})};let N=!1;const he=(p,u,I)=>{if(s.fresh===!0)return;const m=f.get(p),y=m?.result.reads,D=m?.result.timeline;return!m||!y||!D||I&&!m.sampled||m.factless===!0&&s.facts!==!1?void 0:re(e,Y,n,u,y)===m.digest?m:void 0};for(const[p,u]of j.entries()){const I=U(n.matrix,u),m={piece:n.id,output:P,combo:u,format:K},y=B(u);if(F.push({...m,...I?{id:I}:{},key:y}),!pe.has(p)){h++;continue}const D=n.kind==="video"&&!N,E=De(n.id,P,y,K),g=he(E,u,D);if(g){R++,g.sampled&&(N=!0),x.push(...g.problems),b.push(...g.facts),l.push({version:m,log:g.console}),J({...g.result,digest:g.digest}),f.set(E,g);continue}A.push(`${n.id}/${P}/${y}/${K}`);const w=await t.time("load (mount, stills)",()=>o.open(n,m));try{const $=w.summary,O=[],v=[...$?.facts??[]];let Q=!1;try{if($){const k=$.timeline;try{const S=await t.time("layout measure",()=>w.measure());O.push(...offFrameProblems(S.deck?S:await t.time("recheck cut text",()=>recheckCuts(w,S,k.fps,k.parts)),m));const ee=await a();v.push(...await t.time("layout facts",()=>Oe(S,k,m,{root:e.root,media:e.media,ffmpeg:"ffmpeg"in ee?ee.ffmpeg:"ffmpeg"},k.profile?.label))),S.deck&&v.push(...ge(S.deck,{width:S.width,height:S.height},{piece:m.piece,output:m.output,combo:m.combo,format:m.format}))}catch(S){if(S instanceof me)throw S}s.facts!==!1&&v.push(...await t.time("scenery facts",()=>Qe(w)))}$&&D&&(N=!0,Q=!0,O.push(...await t.time("determinism",()=>determinism(w,`${n.id}:${P}:${K}`,i))),s.facts!==!1&&!M.transparent&&v.push(...await t.time("flat frames",()=>je(w))),s.facts!==!1&&v.push(...await t.time("still picture",()=>ze(w))),s.facts!==!1&&(v.push(...await t.time("cut seams",()=>He(w))),M.transparent||v.push(...await t.time("flash",()=>Be(w))))),$&&s.facts!==!1&&v.push(...(await t.time("scenery screen fidelity",()=>Re(w))).facts)}catch(k){if(!(k instanceof me))throw k;k.kept||O.push(z("AK-P003",k.message,{piece:m.piece,output:m.output,combo:m.combo,format:m.format}))}O.push(...await w.problems());const V=ce(O);x.push(...V);const W=M.deliverable?v:v.filter(k=>!We.has(k.kind));b.push(...W);const X=await w.console();l.push({version:m,log:X});const H=$?re(e,Y,n,u,$.reads):void 0,Z={...m,...$?{timeline:$.timeline,reads:$.reads,text:$.text}:{}};J({...Z,...H?{digest:H}:{}}),H&&f.set(E,{digest:H,result:Z,problems:V,facts:W,sampled:Q,...s.facts===!1?{factless:!0}:{},console:X})}finally{await w.close()}}if(n.kind==="video"){const p=ke(M.post,_.map(u=>u.timeline));if(p.length>0){const u=await a();"ffmpeg"in u&&x.push(...await t.time("post chains",()=>Se(p,{piece:n.id,output:P},u.ffmpeg)))}}if(n.kind!=="video")for(const p of _){const u=Ue(p,e.media);u&&b.push(u)}else for(const p of j){const u=U(n.matrix,p),I=B(p),m=_.find(g=>B(g.combo)===I),y=m?qe(m,u):Ye(n,p,u,P,K,_);if(!y)continue;if(C.push(y),n.matrix&&L===void 0){const g=await a();if("ffmpeg"in g){const w=new fe(e.root,g.ffmpeg);await w.open(),L=w}else L={missing:"ffmpeg",why:`${g.missing} (set ALLYHUB_FFMPEG to an ffmpeg, or let the runtime manager fetch its pinned one)`}}const D=await t.time("plans (loudness, music)",()=>Je(y,{...M.maxDuration===void 0?{}:{maxDuration:M.maxDuration},fps:m?.timeline.fps??_[0]?.timeline.fps??30,media:e.media,local:g=>o.mediaPath(g),...n.matrix&&L?{loudness:L}:{}}));x.push(...D.problems),b.push(...D.facts);const E=Ne(y,e.media);E&&b.push(E)}b.push(...Ge({piece:n.id},q,e.media))}for(const n of e.items)if(n.kind==="model"&&!(s.piece!==void 0&&!ae({id:n.dir,path:n.dir},s.piece)))try{await t.time("models",()=>be(se(e.root,n.entry),{root:e.root,cache:se(e.root,xe,"model"),log:()=>{}}))}catch(M){x.push(z("AK-B010",`${n.entry} does not build: ${M instanceof Error?M.message:String(M)}`,{piece:n.dir,where:{file:n.entry}}))}L instanceof fe&&await L.save(),await f.save(new Set(e.pieces.map(n=>n.id)));const G=ce(x).sort(Xe);return t.report(),{targets:F,check:summarize(G),problems:G,facts:await Ve(b,e.root),results:T,plans:C,stats:checkStats(F.length,A,R,h),console:Ae(r,l)}}finally{s.session||await o.close()}}
|
|
@@ -11,7 +11,7 @@ export declare function secondsOf(uses: readonly GeneratedUse[]): number;
|
|
|
11
11
|
* it uses none.
|
|
12
12
|
*/
|
|
13
13
|
export declare function generatedFact(plan: ComboPlan, media: Media): Fact | undefined;
|
|
14
|
-
/** The generated media a
|
|
14
|
+
/** The generated media a deck's slides read, by slide. Undefined when there is none. */
|
|
15
15
|
export declare function generatedPagedFact(r: OutputResult, media: Media): Fact | undefined;
|
|
16
16
|
/**
|
|
17
17
|
* The records among these files that do not hold for the file beside
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
export{cloudConfig,hostsText}from"./config.js";export{CloudError,notSignedIn,SIGN_IN}from"./errors.js";export{Cloud,scrub}from"./client.js";export{SignedOut,accessOf,accountOf,authServer,chooseOrganization,forgetCredentials,readCredentials,signInWithCode,signInWithDevice,signOut,writeCredentials}from"./credentials.js";export{SIGN_IN_WAIT_MS,openBrowser,signIn,signInByEmail,signInDevice,signInInBackground,signedInAs}from"./signin.js";export{LoopbackError,startLoopback}from"./loopback.js";export{pkcePair,randomState}from"./pkce.js";export{
|
|
2
|
+
export{cloudConfig,hostsText}from"./config.js";export{CloudError,notSignedIn,SIGN_IN}from"./errors.js";export{Cloud,scrub}from"./client.js";export{SignedOut,accessOf,accountOf,authServer,chooseOrganization,forgetCredentials,readCredentials,signInWithCode,signInWithDevice,signOut,writeCredentials}from"./credentials.js";export{SIGN_IN_WAIT_MS,openBrowser,signIn,signInByEmail,signInDevice,signInInBackground,signedInAs}from"./signin.js";export{LoopbackError,startLoopback}from"./loopback.js";export{pkcePair,randomState}from"./pkce.js";export{billingSummary,browserLink,organizations}from"./token.js";export{CATALOG_CACHE_SECONDS,findTool,loadCatalog}from"./catalog.js";export{POLL_SECONDS,READ_SECONDS,RETRY_SECONDS,WAIT_SECONDS,callTool,resumeJob}from"./call.js";export{REUSE_LEFT_MS,UPLOAD_CONCURRENCY,UPLOAD_TYPES,uploadFiles,urlExpiry,withKnownUploads}from"./uploads.js";export{BASE64_FROM,LARGE_FROM,canonical,genRecord,inputHash,isSecretName,namedFile,readGen,recordInput,recordOutput,toolWords,withoutSignature,writeGen,writeWords}from"./records.js";export{makeSay,sayInput}from"./voice.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import{spawn as k}from"node:child_process";import{mkdtemp as j,open as E,readFile as u,rename as O,rm as
|
|
2
|
+
import{spawn as k}from"node:child_process";import{mkdtemp as j,open as E,readFile as u,rename as O,rm as m,writeFile as T}from"node:fs/promises";import{tmpdir as b}from"node:os";import{join as c}from"node:path";import{fileURLToPath as N}from"node:url";import{CLIENT_ID as R,EXIT as g,SCOPES as L}from"@allyhub-next/protocol";import{accessOf as P,authServer as v,SignedOut as $,signInWithCode as D,signInWithDevice as W}from"./credentials.js";import{nodeCommand as C}from"@allyhub-next/runtimes/node";import{CloudError as f,unreachable as w}from"./errors.js";import{LoopbackError as J,startLoopback as p}from"./loopback.js";import{pkcePair as A,randomState as B}from"./pkce.js";const F="idp_hint";export const SIGN_IN_WAIT_MS=5*6e4;const M=3e4;function h(){return{state:B(),...A()}}async function y(t,i,o,n={}){const e=await v(t),r=new URLSearchParams({response_type:"code",client_id:R,redirect_uri:o,scope:L,state:i.state,code_challenge:i.challenge,code_challenge_method:"S256",resource:t.url});return n.with!==void 0&&r.set(F,n.with),n.email!==void 0&&r.set("login_hint",n.email),`${e.authorization_endpoint}?${r.toString()}`}export function openBrowser(t,i){if(i.BROWSER==="none")return;const[o,n]=process.platform==="darwin"?["open",[t]]:process.platform==="win32"?["cmd",["/c","start","",t]]:["xdg-open",[t]];try{const e=k(o,n,{stdio:"ignore",detached:!0});e.on("error",()=>{}),e.unref()}catch{}}export async function signedInAs(t){try{return(await P(t.config))?.credentials.account}catch(i){if(i instanceof $)return;throw w(t.url,i)}}const S=t=>new f(t instanceof J?t.code:"sign-in-failed",t instanceof Error?t.message:String(t),{exit:g.auth,hint:"Run allyhub auth login again."});async function I(t,i,o){let n;try{n=await o.result}catch(r){throw S(r)}let e;try{e=(await D(t,{code:n,codeVerifier:i.verifier,redirectUri:o.redirectUri})).account}catch(r){const a=S(r);throw await o.finish(a),a}return await o.finish(),e}const _=t=>`${t.url}/signed-in`;export async function signIn(t,i,o=SIGN_IN_WAIT_MS,n={}){const e=h(),r=await p({state:e.state,timeoutMs:o,landing:_(t.config)});try{i(await y(t.config,e,r.redirectUri,n))}catch(a){throw await r.close(),w(t.url,a)}return I(t.config,e,r)}export async function signInByEmail(t,i,o,n=SIGN_IN_WAIT_MS){const e=t.config,r=h(),a=await p({state:r.state,timeoutMs:n,landing:_(e)});try{const s=await y(e,r,a.redirectUri),d=await e.fetch(`${e.url}/api/auth/sign-in/magic-link`,{method:"POST",headers:{"content-type":"application/json",origin:e.url},body:JSON.stringify({email:i,callbackURL:s})});if(!d.ok)throw new f("sign-in-failed",`AllyHub did not send the link (${String(d.status)}): ${(await d.text()).slice(0,300)}`,{exit:g.auth,status:d.status});await d.body?.cancel()}catch(s){throw await a.close(),s instanceof f?s:w(t.url,s)}return o(),I(e,r,a)}export async function signInDevice(t,i,o){try{return(await W(t.config,i,o)).account}catch(n){throw S(n)}}const z=N(new URL("./signin-worker.js",import.meta.url));export async function signInInBackground(t,i,o=SIGN_IN_WAIT_MS){const n=h(),e=await j(c(b(),"allyhub-sign-in-"));await T(c(e,"flow.json"),JSON.stringify({flow:n,timeoutMs:o}),{mode:384});const r=await E(c(e,"worker.log"),"w"),a=k(C(i),[z,e],{detached:!0,stdio:["ignore","ignore",r.fd],env:{...i}});await r.close();const s={exited:!1};a.once("exit",()=>{s.exited=!0}),a.unref();const d=Date.now()+M;for(;Date.now()<d;)try{const l=JSON.parse(await u(c(e,"ready.json"),"utf8"));return await y(t.config,n,l.redirectUri)}catch(l){if(l instanceof Error&&!("code"in l))throw w(t.url,l);if(s.exited)break;await new Promise(U=>setTimeout(U,50))}const x=(await u(c(e,"worker.log"),"utf8").catch(()=>"")).trim().split(`
|
|
3
3
|
`).slice(-5).join(`
|
|
4
|
-
`);throw await
|
|
4
|
+
`);throw await m(e,{recursive:!0,force:!0}),new f("sign-in-failed",x?`The sign-in listener did not start: ${x}`:"The sign-in listener did not start.",{exit:g.platform})}export async function serveSignIn(t,i){const{flow:o,timeoutMs:n}=JSON.parse(await u(c(i,"flow.json"),"utf8"));await m(c(i,"flow.json"),{force:!0});const e=await p({state:o.state,timeoutMs:n,landing:_(t)});await T(c(i,"ready.json.tmp"),JSON.stringify({redirectUri:e.redirectUri})),await O(c(i,"ready.json.tmp"),c(i,"ready.json"));try{await I(t,o,e)}finally{await new Promise(r=>setTimeout(r,200)),await m(i,{recursive:!0,force:!0})}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
|
|
2
|
-
import{BILLING_SUMMARY_PATH as
|
|
2
|
+
import{BILLING_SUMMARY_PATH as a,BROWSER_LINK_PATH as o,BillingSummarySchema as i,BrowserLinkSchema as t,ORGANIZATIONS_PATH as e,OrganizationsSchema as s}from"@allyhub-next/protocol";export async function billingSummary(n){return i.parse(await n.json(a))}export async function organizations(n){return s.parse(await n.json(e)).organizations}export async function browserLink(n,r){return t.parse(await n.json(o,{method:"POST",body:{to:r}})).url}
|