@nac3/forge-cli 0.2.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +45 -0
- package/README.md +371 -0
- package/dist/bin/yf.d.ts +5 -0
- package/dist/bin/yf.d.ts.map +1 -0
- package/dist/bin/yf.js +86 -0
- package/dist/bin/yf.js.map +1 -0
- package/dist/chat/claude.d.ts +100 -0
- package/dist/chat/claude.d.ts.map +1 -0
- package/dist/chat/claude.js +228 -0
- package/dist/chat/claude.js.map +1 -0
- package/dist/chat/ingest_session.d.ts +97 -0
- package/dist/chat/ingest_session.d.ts.map +1 -0
- package/dist/chat/ingest_session.js +99 -0
- package/dist/chat/ingest_session.js.map +1 -0
- package/dist/chat/panel.d.ts +15 -0
- package/dist/chat/panel.d.ts.map +1 -0
- package/dist/chat/panel.js +1526 -0
- package/dist/chat/panel.js.map +1 -0
- package/dist/chat/persistence.d.ts +37 -0
- package/dist/chat/persistence.d.ts.map +1 -0
- package/dist/chat/persistence.js +91 -0
- package/dist/chat/persistence.js.map +1 -0
- package/dist/chat/server.d.ts +34 -0
- package/dist/chat/server.d.ts.map +1 -0
- package/dist/chat/server.js +1540 -0
- package/dist/chat/server.js.map +1 -0
- package/dist/chat/spec_extract.d.ts +35 -0
- package/dist/chat/spec_extract.d.ts.map +1 -0
- package/dist/chat/spec_extract.js +152 -0
- package/dist/chat/spec_extract.js.map +1 -0
- package/dist/chat/spec_plan.d.ts +65 -0
- package/dist/chat/spec_plan.d.ts.map +1 -0
- package/dist/chat/spec_plan.js +160 -0
- package/dist/chat/spec_plan.js.map +1 -0
- package/dist/chat/spec_scaffold.d.ts +95 -0
- package/dist/chat/spec_scaffold.d.ts.map +1 -0
- package/dist/chat/spec_scaffold.js +220 -0
- package/dist/chat/spec_scaffold.js.map +1 -0
- package/dist/chat/tools/git.d.ts +59 -0
- package/dist/chat/tools/git.d.ts.map +1 -0
- package/dist/chat/tools/git.js +313 -0
- package/dist/chat/tools/git.js.map +1 -0
- package/dist/chat/tools/github.d.ts +59 -0
- package/dist/chat/tools/github.d.ts.map +1 -0
- package/dist/chat/tools/github.js +310 -0
- package/dist/chat/tools/github.js.map +1 -0
- package/dist/chat/tools/lifecycle.d.ts +82 -0
- package/dist/chat/tools/lifecycle.d.ts.map +1 -0
- package/dist/chat/tools/lifecycle.js +295 -0
- package/dist/chat/tools/lifecycle.js.map +1 -0
- package/dist/chat/tools/manual.d.ts +26 -0
- package/dist/chat/tools/manual.d.ts.map +1 -0
- package/dist/chat/tools/manual.js +164 -0
- package/dist/chat/tools/manual.js.map +1 -0
- package/dist/chat/tools/reader.d.ts +80 -0
- package/dist/chat/tools/reader.d.ts.map +1 -0
- package/dist/chat/tools/reader.js +471 -0
- package/dist/chat/tools/reader.js.map +1 -0
- package/dist/chat/tools.d.ts +106 -0
- package/dist/chat/tools.d.ts.map +1 -0
- package/dist/chat/tools.js +587 -0
- package/dist/chat/tools.js.map +1 -0
- package/dist/codegen/e2e.d.ts +106 -0
- package/dist/codegen/e2e.d.ts.map +1 -0
- package/dist/codegen/e2e.js +931 -0
- package/dist/codegen/e2e.js.map +1 -0
- package/dist/codegen/v3_flow_emit.d.ts +70 -0
- package/dist/codegen/v3_flow_emit.d.ts.map +1 -0
- package/dist/codegen/v3_flow_emit.js +225 -0
- package/dist/codegen/v3_flow_emit.js.map +1 -0
- package/dist/commands/_stub.d.ts +2 -0
- package/dist/commands/_stub.d.ts.map +1 -0
- package/dist/commands/_stub.js +21 -0
- package/dist/commands/_stub.js.map +1 -0
- package/dist/commands/app.d.ts +31 -0
- package/dist/commands/app.d.ts.map +1 -0
- package/dist/commands/app.js +331 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/chat.d.ts +18 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +76 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/deploy.d.ts +21 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +121 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/doctor.d.ts +14 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +280 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/figma.d.ts +32 -0
- package/dist/commands/figma.d.ts.map +1 -0
- package/dist/commands/figma.js +141 -0
- package/dist/commands/figma.js.map +1 -0
- package/dist/commands/gen-flow-tests.d.ts +8 -0
- package/dist/commands/gen-flow-tests.d.ts.map +1 -0
- package/dist/commands/gen-flow-tests.js +78 -0
- package/dist/commands/gen-flow-tests.js.map +1 -0
- package/dist/commands/gen-tests.d.ts +9 -0
- package/dist/commands/gen-tests.d.ts.map +1 -0
- package/dist/commands/gen-tests.js +118 -0
- package/dist/commands/gen-tests.js.map +1 -0
- package/dist/commands/license.d.ts +14 -0
- package/dist/commands/license.d.ts.map +1 -0
- package/dist/commands/license.js +182 -0
- package/dist/commands/license.js.map +1 -0
- package/dist/commands/log.d.ts +19 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +101 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/migrate.d.ts +118 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +1410 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/mobile.d.ts +27 -0
- package/dist/commands/mobile.d.ts.map +1 -0
- package/dist/commands/mobile.js +90 -0
- package/dist/commands/mobile.js.map +1 -0
- package/dist/commands/new.d.ts +32 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +107 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pilot.d.ts +8 -0
- package/dist/commands/pilot.d.ts.map +1 -0
- package/dist/commands/pilot.js +104 -0
- package/dist/commands/pilot.js.map +1 -0
- package/dist/commands/projects.d.ts +21 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +238 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/publish.d.ts +35 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +194 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/repo.d.ts +59 -0
- package/dist/commands/repo.d.ts.map +1 -0
- package/dist/commands/repo.js +178 -0
- package/dist/commands/repo.js.map +1 -0
- package/dist/commands/review-screens.d.ts +28 -0
- package/dist/commands/review-screens.d.ts.map +1 -0
- package/dist/commands/review-screens.js +345 -0
- package/dist/commands/review-screens.js.map +1 -0
- package/dist/commands/scenarios.d.ts +23 -0
- package/dist/commands/scenarios.d.ts.map +1 -0
- package/dist/commands/scenarios.js +304 -0
- package/dist/commands/scenarios.js.map +1 -0
- package/dist/commands/ship.d.ts +18 -0
- package/dist/commands/ship.d.ts.map +1 -0
- package/dist/commands/ship.js +41 -0
- package/dist/commands/ship.js.map +1 -0
- package/dist/commands/test.d.ts +29 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +62 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/tunnel.d.ts +22 -0
- package/dist/commands/tunnel.d.ts.map +1 -0
- package/dist/commands/tunnel.js +77 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/commands/validate.d.ts +14 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +51 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/vault.d.ts +32 -0
- package/dist/commands/vault.d.ts.map +1 -0
- package/dist/commands/vault.js +489 -0
- package/dist/commands/vault.js.map +1 -0
- package/dist/commands/voice.d.ts +16 -0
- package/dist/commands/voice.d.ts.map +1 -0
- package/dist/commands/voice.js +69 -0
- package/dist/commands/voice.js.map +1 -0
- package/dist/core/cascade_router.d.ts +90 -0
- package/dist/core/cascade_router.d.ts.map +1 -0
- package/dist/core/cascade_router.js +131 -0
- package/dist/core/cascade_router.js.map +1 -0
- package/dist/core/cf_tunnel.d.ts +52 -0
- package/dist/core/cf_tunnel.d.ts.map +1 -0
- package/dist/core/cf_tunnel.js +134 -0
- package/dist/core/cf_tunnel.js.map +1 -0
- package/dist/core/gha_dispatcher.d.ts +48 -0
- package/dist/core/gha_dispatcher.d.ts.map +1 -0
- package/dist/core/gha_dispatcher.js +198 -0
- package/dist/core/gha_dispatcher.js.map +1 -0
- package/dist/core/logger.d.ts +89 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +245 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mode.d.ts +26 -0
- package/dist/core/mode.d.ts.map +1 -0
- package/dist/core/mode.js +122 -0
- package/dist/core/mode.js.map +1 -0
- package/dist/core/pairing.d.ts +40 -0
- package/dist/core/pairing.d.ts.map +1 -0
- package/dist/core/pairing.js +145 -0
- package/dist/core/pairing.js.map +1 -0
- package/dist/core/pilot_setup.d.ts +29 -0
- package/dist/core/pilot_setup.d.ts.map +1 -0
- package/dist/core/pilot_setup.js +119 -0
- package/dist/core/pilot_setup.js.map +1 -0
- package/dist/core/polar.d.ts +81 -0
- package/dist/core/polar.d.ts.map +1 -0
- package/dist/core/polar.js +175 -0
- package/dist/core/polar.js.map +1 -0
- package/dist/core/project_picker.d.ts +56 -0
- package/dist/core/project_picker.d.ts.map +1 -0
- package/dist/core/project_picker.js +86 -0
- package/dist/core/project_picker.js.map +1 -0
- package/dist/core/projects.d.ts +58 -0
- package/dist/core/projects.d.ts.map +1 -0
- package/dist/core/projects.js +146 -0
- package/dist/core/projects.js.map +1 -0
- package/dist/core/projects_sync.d.ts +80 -0
- package/dist/core/projects_sync.d.ts.map +1 -0
- package/dist/core/projects_sync.js +278 -0
- package/dist/core/projects_sync.js.map +1 -0
- package/dist/core/remote_runner.d.ts +70 -0
- package/dist/core/remote_runner.d.ts.map +1 -0
- package/dist/core/remote_runner.js +133 -0
- package/dist/core/remote_runner.js.map +1 -0
- package/dist/core/repo_state.d.ts +24 -0
- package/dist/core/repo_state.d.ts.map +1 -0
- package/dist/core/repo_state.js +109 -0
- package/dist/core/repo_state.js.map +1 -0
- package/dist/core/target.d.ts +31 -0
- package/dist/core/target.d.ts.map +1 -0
- package/dist/core/target.js +121 -0
- package/dist/core/target.js.map +1 -0
- package/dist/deploy/aws.d.ts +43 -0
- package/dist/deploy/aws.d.ts.map +1 -0
- package/dist/deploy/aws.js +173 -0
- package/dist/deploy/aws.js.map +1 -0
- package/dist/figma/api.d.ts +35 -0
- package/dist/figma/api.d.ts.map +1 -0
- package/dist/figma/api.js +40 -0
- package/dist/figma/api.js.map +1 -0
- package/dist/figma/decorator.d.ts +74 -0
- package/dist/figma/decorator.d.ts.map +1 -0
- package/dist/figma/decorator.js +210 -0
- package/dist/figma/decorator.js.map +1 -0
- package/dist/figma/heuristics.d.ts +29 -0
- package/dist/figma/heuristics.d.ts.map +1 -0
- package/dist/figma/heuristics.js +110 -0
- package/dist/figma/heuristics.js.map +1 -0
- package/dist/figma/normalize.d.ts +33 -0
- package/dist/figma/normalize.d.ts.map +1 -0
- package/dist/figma/normalize.js +101 -0
- package/dist/figma/normalize.js.map +1 -0
- package/dist/figma/tokens.d.ts +23 -0
- package/dist/figma/tokens.d.ts.map +1 -0
- package/dist/figma/tokens.js +111 -0
- package/dist/figma/tokens.js.map +1 -0
- package/dist/figma/types.d.ts +118 -0
- package/dist/figma/types.d.ts.map +1 -0
- package/dist/figma/types.js +12 -0
- package/dist/figma/types.js.map +1 -0
- package/dist/i18n/index.d.ts +48 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +135 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/types.d.ts +52 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +85 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/lan/mdns_packet.d.ts +74 -0
- package/dist/lan/mdns_packet.d.ts.map +1 -0
- package/dist/lan/mdns_packet.js +247 -0
- package/dist/lan/mdns_packet.js.map +1 -0
- package/dist/lan/mdns_service.d.ts +102 -0
- package/dist/lan/mdns_service.d.ts.map +1 -0
- package/dist/lan/mdns_service.js +206 -0
- package/dist/lan/mdns_service.js.map +1 -0
- package/dist/license/activate.d.ts +33 -0
- package/dist/license/activate.d.ts.map +1 -0
- package/dist/license/activate.js +135 -0
- package/dist/license/activate.js.map +1 -0
- package/dist/license/fingerprint.d.ts +2 -0
- package/dist/license/fingerprint.d.ts.map +1 -0
- package/dist/license/fingerprint.js +29 -0
- package/dist/license/fingerprint.js.map +1 -0
- package/dist/license/hito4_client.d.ts +24 -0
- package/dist/license/hito4_client.d.ts.map +1 -0
- package/dist/license/hito4_client.js +103 -0
- package/dist/license/hito4_client.js.map +1 -0
- package/dist/license/index.d.ts +22 -0
- package/dist/license/index.d.ts.map +1 -0
- package/dist/license/index.js +125 -0
- package/dist/license/index.js.map +1 -0
- package/dist/license/types.d.ts +38 -0
- package/dist/license/types.d.ts.map +1 -0
- package/dist/license/types.js +9 -0
- package/dist/license/types.js.map +1 -0
- package/dist/migrate/ai-apply.d.ts +198 -0
- package/dist/migrate/ai-apply.d.ts.map +1 -0
- package/dist/migrate/ai-apply.js +833 -0
- package/dist/migrate/ai-apply.js.map +1 -0
- package/dist/migrate/ai-decorator.d.ts +87 -0
- package/dist/migrate/ai-decorator.d.ts.map +1 -0
- package/dist/migrate/ai-decorator.js +203 -0
- package/dist/migrate/ai-decorator.js.map +1 -0
- package/dist/migrate/apply.d.ts +28 -0
- package/dist/migrate/apply.d.ts.map +1 -0
- package/dist/migrate/apply.js +119 -0
- package/dist/migrate/apply.js.map +1 -0
- package/dist/migrate/audit.d.ts +9 -0
- package/dist/migrate/audit.d.ts.map +1 -0
- package/dist/migrate/audit.js +197 -0
- package/dist/migrate/audit.js.map +1 -0
- package/dist/migrate/diff.d.ts +28 -0
- package/dist/migrate/diff.d.ts.map +1 -0
- package/dist/migrate/diff.js +154 -0
- package/dist/migrate/diff.js.map +1 -0
- package/dist/migrate/html-orchestrator.d.ts +81 -0
- package/dist/migrate/html-orchestrator.d.ts.map +1 -0
- package/dist/migrate/html-orchestrator.js +233 -0
- package/dist/migrate/html-orchestrator.js.map +1 -0
- package/dist/migrate/html-walker.d.ts +93 -0
- package/dist/migrate/html-walker.d.ts.map +1 -0
- package/dist/migrate/html-walker.js +288 -0
- package/dist/migrate/html-walker.js.map +1 -0
- package/dist/migrate/js-template-walker.d.ts +118 -0
- package/dist/migrate/js-template-walker.d.ts.map +1 -0
- package/dist/migrate/js-template-walker.js +644 -0
- package/dist/migrate/js-template-walker.js.map +1 -0
- package/dist/migrate/manifest-validator.d.ts +30 -0
- package/dist/migrate/manifest-validator.d.ts.map +1 -0
- package/dist/migrate/manifest-validator.js +261 -0
- package/dist/migrate/manifest-validator.js.map +1 -0
- package/dist/migrate/overrides.d.ts +58 -0
- package/dist/migrate/overrides.d.ts.map +1 -0
- package/dist/migrate/overrides.js +193 -0
- package/dist/migrate/overrides.js.map +1 -0
- package/dist/migrate/plugin-scope.d.ts +42 -0
- package/dist/migrate/plugin-scope.d.ts.map +1 -0
- package/dist/migrate/plugin-scope.js +94 -0
- package/dist/migrate/plugin-scope.js.map +1 -0
- package/dist/migrate/types.d.ts +45 -0
- package/dist/migrate/types.d.ts.map +1 -0
- package/dist/migrate/types.js +9 -0
- package/dist/migrate/types.js.map +1 -0
- package/dist/migrate/verb-inference.d.ts +37 -0
- package/dist/migrate/verb-inference.d.ts.map +1 -0
- package/dist/migrate/verb-inference.js +274 -0
- package/dist/migrate/verb-inference.js.map +1 -0
- package/dist/nac3/attrs.d.ts +87 -0
- package/dist/nac3/attrs.d.ts.map +1 -0
- package/dist/nac3/attrs.js +134 -0
- package/dist/nac3/attrs.js.map +1 -0
- package/dist/nac3/scenario_dsl.d.ts +71 -0
- package/dist/nac3/scenario_dsl.d.ts.map +1 -0
- package/dist/nac3/scenario_dsl.js +191 -0
- package/dist/nac3/scenario_dsl.js.map +1 -0
- package/dist/nac3/tokens.d.ts +126 -0
- package/dist/nac3/tokens.d.ts.map +1 -0
- package/dist/nac3/tokens.js +138 -0
- package/dist/nac3/tokens.js.map +1 -0
- package/dist/reader/parsers/csv.d.ts +42 -0
- package/dist/reader/parsers/csv.d.ts.map +1 -0
- package/dist/reader/parsers/csv.js +221 -0
- package/dist/reader/parsers/csv.js.map +1 -0
- package/dist/reader/parsers/docx.d.ts +31 -0
- package/dist/reader/parsers/docx.d.ts.map +1 -0
- package/dist/reader/parsers/docx.js +51 -0
- package/dist/reader/parsers/docx.js.map +1 -0
- package/dist/reader/parsers/epub.d.ts +39 -0
- package/dist/reader/parsers/epub.d.ts.map +1 -0
- package/dist/reader/parsers/epub.js +265 -0
- package/dist/reader/parsers/epub.js.map +1 -0
- package/dist/reader/parsers/html.d.ts +40 -0
- package/dist/reader/parsers/html.d.ts.map +1 -0
- package/dist/reader/parsers/html.js +386 -0
- package/dist/reader/parsers/html.js.map +1 -0
- package/dist/reader/parsers/md.d.ts +30 -0
- package/dist/reader/parsers/md.d.ts.map +1 -0
- package/dist/reader/parsers/md.js +199 -0
- package/dist/reader/parsers/md.js.map +1 -0
- package/dist/reader/parsers/pdf.d.ts +39 -0
- package/dist/reader/parsers/pdf.d.ts.map +1 -0
- package/dist/reader/parsers/pdf.js +220 -0
- package/dist/reader/parsers/pdf.js.map +1 -0
- package/dist/reader/parsers/rtf.d.ts +37 -0
- package/dist/reader/parsers/rtf.d.ts.map +1 -0
- package/dist/reader/parsers/rtf.js +347 -0
- package/dist/reader/parsers/rtf.js.map +1 -0
- package/dist/reader/parsers/source.d.ts +32 -0
- package/dist/reader/parsers/source.d.ts.map +1 -0
- package/dist/reader/parsers/source.js +122 -0
- package/dist/reader/parsers/source.js.map +1 -0
- package/dist/reader/parsers/txt.d.ts +25 -0
- package/dist/reader/parsers/txt.d.ts.map +1 -0
- package/dist/reader/parsers/txt.js +56 -0
- package/dist/reader/parsers/txt.js.map +1 -0
- package/dist/reader/parsers/xlsx.d.ts +33 -0
- package/dist/reader/parsers/xlsx.d.ts.map +1 -0
- package/dist/reader/parsers/xlsx.js +143 -0
- package/dist/reader/parsers/xlsx.js.map +1 -0
- package/dist/reader/registry.d.ts +39 -0
- package/dist/reader/registry.d.ts.map +1 -0
- package/dist/reader/registry.js +172 -0
- package/dist/reader/registry.js.map +1 -0
- package/dist/reader/search.d.ts +27 -0
- package/dist/reader/search.d.ts.map +1 -0
- package/dist/reader/search.js +77 -0
- package/dist/reader/search.js.map +1 -0
- package/dist/reader/state.d.ts +56 -0
- package/dist/reader/state.d.ts.map +1 -0
- package/dist/reader/state.js +179 -0
- package/dist/reader/state.js.map +1 -0
- package/dist/reader/types.d.ts +119 -0
- package/dist/reader/types.d.ts.map +1 -0
- package/dist/reader/types.js +23 -0
- package/dist/reader/types.js.map +1 -0
- package/dist/ship/run.d.ts +26 -0
- package/dist/ship/run.d.ts.map +1 -0
- package/dist/ship/run.js +123 -0
- package/dist/ship/run.js.map +1 -0
- package/dist/template/index.d.ts +50 -0
- package/dist/template/index.d.ts.map +1 -0
- package/dist/template/index.js +140 -0
- package/dist/template/index.js.map +1 -0
- package/dist/ui/colors.d.ts +13 -0
- package/dist/ui/colors.d.ts.map +1 -0
- package/dist/ui/colors.js +26 -0
- package/dist/ui/colors.js.map +1 -0
- package/dist/validate/index.d.ts +19 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/dist/validate/index.js +181 -0
- package/dist/validate/index.js.map +1 -0
- package/dist/vault/catalog.d.ts +55 -0
- package/dist/vault/catalog.d.ts.map +1 -0
- package/dist/vault/catalog.js +424 -0
- package/dist/vault/catalog.js.map +1 -0
- package/dist/vault/crypto.d.ts +82 -0
- package/dist/vault/crypto.d.ts.map +1 -0
- package/dist/vault/crypto.js +173 -0
- package/dist/vault/crypto.js.map +1 -0
- package/dist/vault/git_askpass.d.ts +26 -0
- package/dist/vault/git_askpass.d.ts.map +1 -0
- package/dist/vault/git_askpass.js +104 -0
- package/dist/vault/git_askpass.js.map +1 -0
- package/dist/vault/migrator.d.ts +57 -0
- package/dist/vault/migrator.d.ts.map +1 -0
- package/dist/vault/migrator.js +204 -0
- package/dist/vault/migrator.js.map +1 -0
- package/dist/vault/redactor.d.ts +73 -0
- package/dist/vault/redactor.d.ts.map +1 -0
- package/dist/vault/redactor.js +182 -0
- package/dist/vault/redactor.js.map +1 -0
- package/dist/vault/store.d.ts +132 -0
- package/dist/vault/store.d.ts.map +1 -0
- package/dist/vault/store.js +335 -0
- package/dist/vault/store.js.map +1 -0
- package/dist/version.d.ts +8 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +8 -0
- package/dist/version.js.map +1 -0
- package/dist/voice/chunker.d.ts +43 -0
- package/dist/voice/chunker.d.ts.map +1 -0
- package/dist/voice/chunker.js +133 -0
- package/dist/voice/chunker.js.map +1 -0
- package/dist/voice/config.d.ts +14 -0
- package/dist/voice/config.d.ts.map +1 -0
- package/dist/voice/config.js +51 -0
- package/dist/voice/config.js.map +1 -0
- package/dist/voice/intents.d.ts +71 -0
- package/dist/voice/intents.d.ts.map +1 -0
- package/dist/voice/intents.js +0 -0
- package/dist/voice/intents.js.map +1 -0
- package/dist/voice/providers/elevenlabs.d.ts +53 -0
- package/dist/voice/providers/elevenlabs.d.ts.map +1 -0
- package/dist/voice/providers/elevenlabs.js +159 -0
- package/dist/voice/providers/elevenlabs.js.map +1 -0
- package/dist/voice/providers/google.d.ts +56 -0
- package/dist/voice/providers/google.d.ts.map +1 -0
- package/dist/voice/providers/google.js +253 -0
- package/dist/voice/providers/google.js.map +1 -0
- package/dist/voice/providers/whisper.d.ts +44 -0
- package/dist/voice/providers/whisper.d.ts.map +1 -0
- package/dist/voice/providers/whisper.js +179 -0
- package/dist/voice/providers/whisper.js.map +1 -0
- package/dist/voice/registry.d.ts +35 -0
- package/dist/voice/registry.d.ts.map +1 -0
- package/dist/voice/registry.js +48 -0
- package/dist/voice/registry.js.map +1 -0
- package/dist/voice/router.d.ts +62 -0
- package/dist/voice/router.d.ts.map +1 -0
- package/dist/voice/router.js +175 -0
- package/dist/voice/router.js.map +1 -0
- package/dist/voice/types.d.ts +116 -0
- package/dist/voice/types.d.ts.map +1 -0
- package/dist/voice/types.js +22 -0
- package/dist/voice/types.js.map +1 -0
- package/dist/voice/voiceprint/enrollment.d.ts +36 -0
- package/dist/voice/voiceprint/enrollment.d.ts.map +1 -0
- package/dist/voice/voiceprint/enrollment.js +71 -0
- package/dist/voice/voiceprint/enrollment.js.map +1 -0
- package/dist/voice/voiceprint/identify.d.ts +16 -0
- package/dist/voice/voiceprint/identify.d.ts.map +1 -0
- package/dist/voice/voiceprint/identify.js +20 -0
- package/dist/voice/voiceprint/identify.js.map +1 -0
- package/dist/voice/voiceprint/liveness.d.ts +90 -0
- package/dist/voice/voiceprint/liveness.d.ts.map +1 -0
- package/dist/voice/voiceprint/liveness.js +251 -0
- package/dist/voice/voiceprint/liveness.js.map +1 -0
- package/dist/voice/voiceprint/match.d.ts +54 -0
- package/dist/voice/voiceprint/match.d.ts.map +1 -0
- package/dist/voice/voiceprint/match.js +88 -0
- package/dist/voice/voiceprint/match.js.map +1 -0
- package/dist/voice/voiceprint/providers/local-mfcc-stub.d.ts +44 -0
- package/dist/voice/voiceprint/providers/local-mfcc-stub.d.ts.map +1 -0
- package/dist/voice/voiceprint/providers/local-mfcc-stub.js +92 -0
- package/dist/voice/voiceprint/providers/local-mfcc-stub.js.map +1 -0
- package/dist/voice/voiceprint/store.d.ts +60 -0
- package/dist/voice/voiceprint/store.d.ts.map +1 -0
- package/dist/voice/voiceprint/store.js +155 -0
- package/dist/voice/voiceprint/store.js.map +1 -0
- package/dist/voice/voiceprint/trust.d.ts +90 -0
- package/dist/voice/voiceprint/trust.d.ts.map +1 -0
- package/dist/voice/voiceprint/trust.js +150 -0
- package/dist/voice/voiceprint/trust.js.map +1 -0
- package/dist/voice/voiceprint/types.d.ts +100 -0
- package/dist/voice/voiceprint/types.d.ts.map +1 -0
- package/dist/voice/voiceprint/types.js +23 -0
- package/dist/voice/voiceprint/types.js.map +1 -0
- package/dist/voice/wake.d.ts +64 -0
- package/dist/voice/wake.d.ts.map +1 -0
- package/dist/voice/wake.js +143 -0
- package/dist/voice/wake.js.map +1 -0
- package/docs/manuals/manual.ar.html +91 -0
- package/docs/manuals/manual.de.html +100 -0
- package/docs/manuals/manual.en.html +118 -0
- package/docs/manuals/manual.es.html +120 -0
- package/docs/manuals/manual.fr.html +102 -0
- package/docs/manuals/manual.hi.html +93 -0
- package/docs/manuals/manual.it.html +93 -0
- package/docs/manuals/manual.ja.html +97 -0
- package/docs/manuals/manual.pt.html +103 -0
- package/docs/manuals/manual.zh.html +89 -0
- package/package.json +94 -0
- package/src/i18n/catalogs/ar.json +86 -0
- package/src/i18n/catalogs/de.json +86 -0
- package/src/i18n/catalogs/en.json +86 -0
- package/src/i18n/catalogs/es.json +86 -0
- package/src/i18n/catalogs/fr.json +86 -0
- package/src/i18n/catalogs/hi.json +86 -0
- package/src/i18n/catalogs/it.json +86 -0
- package/src/i18n/catalogs/ja.json +86 -0
- package/src/i18n/catalogs/pt.json +86 -0
- package/src/i18n/catalogs/zh.json +86 -0
- package/templates/react-app/README.md +43 -0
- package/templates/react-app/index.html +12 -0
- package/templates/react-app/package.json +35 -0
- package/templates/react-app/src/App.tsx +106 -0
- package/templates/react-app/src/main.tsx +21 -0
- package/templates/react-app/src/nac/manifest.ts +46 -0
- package/templates/react-app/src/styles.css +68 -0
- package/templates/react-app/tsconfig.json +19 -0
- package/templates/react-app/vite.config.ts +12 -0
- package/templates/react-app/yujin.forge.json +15 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NAC-3 design tokens (PLAN sec D1, NAC3.1).
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for colors, fonts, spacing, radii,
|
|
5
|
+
* and shadows used by the Forge panel (web) and -- after the
|
|
6
|
+
* NAC3.3 slice -- the RN mirror.
|
|
7
|
+
*
|
|
8
|
+
* The TS export is the canonical shape. A side-effect helper
|
|
9
|
+
* (`tokensToCssVars`) emits the same values as CSS variable
|
|
10
|
+
* declarations so the existing `panel.ts` CSS can consume
|
|
11
|
+
* them without further changes.
|
|
12
|
+
*
|
|
13
|
+
* Pablo's decision (D7): two packages emparejados. This file
|
|
14
|
+
* is the embryo of `@yujin/nac3-tokens` -- when the monorepo
|
|
15
|
+
* lands, it moves under `packages/nac3-tokens/`. The shape
|
|
16
|
+
* stays identical to avoid a churn refactor in callers.
|
|
17
|
+
*
|
|
18
|
+
* ASCII-only on the source. Values are CSS hex / numeric.
|
|
19
|
+
*/
|
|
20
|
+
/** The canonical NAC-3 token set. */
|
|
21
|
+
export const TOKENS = {
|
|
22
|
+
color: {
|
|
23
|
+
bg1: '#f5f0e6',
|
|
24
|
+
bg2: '#e0d8c4',
|
|
25
|
+
ink: '#1a1a1a',
|
|
26
|
+
inkMuted: '#555555',
|
|
27
|
+
inkSubtle: 'rgba(0,0,0,0.55)',
|
|
28
|
+
indigo: '#4f5b87',
|
|
29
|
+
amber: '#c8a04d',
|
|
30
|
+
border: '#d4cbb8',
|
|
31
|
+
borderSubtle: 'rgba(0,0,0,0.08)',
|
|
32
|
+
ok: '#3fa85e',
|
|
33
|
+
err: '#8b3530',
|
|
34
|
+
warn: '#d4950a',
|
|
35
|
+
bubbleUser: '#4f5b87',
|
|
36
|
+
bubbleAsst: '#ffffff',
|
|
37
|
+
},
|
|
38
|
+
font: {
|
|
39
|
+
sans: 'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
|
|
40
|
+
kanji: '"Noto Serif JP", serif',
|
|
41
|
+
display: '"Inter Display", "Inter", system-ui, sans-serif',
|
|
42
|
+
mono: 'ui-monospace, "SF Mono", Menlo, monospace',
|
|
43
|
+
},
|
|
44
|
+
space: [0, 4, 8, 12, 16, 24, 32, 48, 64],
|
|
45
|
+
radius: { sm: 4, md: 8, lg: 12, pill: 999 },
|
|
46
|
+
shadow: {
|
|
47
|
+
card: { offsetX: 0, offsetY: 12, blur: 36, spread: 0, color: 'rgba(0,0,0,0.18)' },
|
|
48
|
+
modal: { offsetX: 0, offsetY: 16, blur: 48, spread: 0, color: 'rgba(0,0,0,0.22)' },
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Emit the color + font + radius tokens as a CSS variable
|
|
53
|
+
* declaration block, scoped under `:root` by default. The
|
|
54
|
+
* existing panel CSS consumes these same names; rendering
|
|
55
|
+
* the block at HTML render time replaces the previous
|
|
56
|
+
* hardcoded `:root { --bg-1: ... }` block.
|
|
57
|
+
*
|
|
58
|
+
* Caller pattern (in `renderPanelHtml`):
|
|
59
|
+
*
|
|
60
|
+
* <style>
|
|
61
|
+
* :root { ${tokensToCssVars()} }
|
|
62
|
+
* ...rest of the panel CSS...
|
|
63
|
+
* </style>
|
|
64
|
+
*/
|
|
65
|
+
export function tokensToCssVars(scope = ':root') {
|
|
66
|
+
const lines = [];
|
|
67
|
+
lines.push(scope + ' {');
|
|
68
|
+
lines.push(' --bg-1: ' + TOKENS.color.bg1 + ';');
|
|
69
|
+
lines.push(' --bg-2: ' + TOKENS.color.bg2 + ';');
|
|
70
|
+
lines.push(' --ink: ' + TOKENS.color.ink + ';');
|
|
71
|
+
lines.push(' --ink-muted: ' + TOKENS.color.inkMuted + ';');
|
|
72
|
+
lines.push(' --ink-subtle: ' + TOKENS.color.inkSubtle + ';');
|
|
73
|
+
lines.push(' --indigo: ' + TOKENS.color.indigo + ';');
|
|
74
|
+
lines.push(' --amber: ' + TOKENS.color.amber + ';');
|
|
75
|
+
lines.push(' --border: ' + TOKENS.color.border + ';');
|
|
76
|
+
lines.push(' --border-subtle: ' + TOKENS.color.borderSubtle + ';');
|
|
77
|
+
lines.push(' --ok: ' + TOKENS.color.ok + ';');
|
|
78
|
+
lines.push(' --err: ' + TOKENS.color.err + ';');
|
|
79
|
+
lines.push(' --warn: ' + TOKENS.color.warn + ';');
|
|
80
|
+
lines.push(' --bubble-user: ' + TOKENS.color.bubbleUser + ';');
|
|
81
|
+
lines.push(' --bubble-asst: ' + TOKENS.color.bubbleAsst + ';');
|
|
82
|
+
lines.push(' --font-sans: ' + TOKENS.font.sans + ';');
|
|
83
|
+
lines.push(' --font-kanji: ' + TOKENS.font.kanji + ';');
|
|
84
|
+
lines.push(' --font-display: ' + TOKENS.font.display + ';');
|
|
85
|
+
lines.push(' --font-mono: ' + TOKENS.font.mono + ';');
|
|
86
|
+
lines.push(' --radius-sm: ' + TOKENS.radius.sm + 'px;');
|
|
87
|
+
lines.push(' --radius-md: ' + TOKENS.radius.md + 'px;');
|
|
88
|
+
lines.push(' --radius-lg: ' + TOKENS.radius.lg + 'px;');
|
|
89
|
+
lines.push(' --shadow-card: '
|
|
90
|
+
+ TOKENS.shadow.card.offsetX + 'px '
|
|
91
|
+
+ TOKENS.shadow.card.offsetY + 'px '
|
|
92
|
+
+ TOKENS.shadow.card.blur + 'px '
|
|
93
|
+
+ TOKENS.shadow.card.spread + 'px '
|
|
94
|
+
+ TOKENS.shadow.card.color + ';');
|
|
95
|
+
lines.push(' --shadow-modal: '
|
|
96
|
+
+ TOKENS.shadow.modal.offsetX + 'px '
|
|
97
|
+
+ TOKENS.shadow.modal.offsetY + 'px '
|
|
98
|
+
+ TOKENS.shadow.modal.blur + 'px '
|
|
99
|
+
+ TOKENS.shadow.modal.spread + 'px '
|
|
100
|
+
+ TOKENS.shadow.modal.color + ';');
|
|
101
|
+
lines.push('}');
|
|
102
|
+
return lines.join('\n');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* RN style object equivalent. NB: shadows are RN-specific
|
|
106
|
+
* (elevation + shadowOffset for iOS, elevation only on
|
|
107
|
+
* Android). React Native callers should use this object,
|
|
108
|
+
* not the CSS string.
|
|
109
|
+
*
|
|
110
|
+
* Exported here so a future `@nac3/forge-rn` consumer
|
|
111
|
+
* doesn't need to re-translate the tokens; same numbers,
|
|
112
|
+
* same names.
|
|
113
|
+
*/
|
|
114
|
+
export function tokensToRnTheme() {
|
|
115
|
+
return {
|
|
116
|
+
color: TOKENS.color,
|
|
117
|
+
font: TOKENS.font,
|
|
118
|
+
space: TOKENS.space,
|
|
119
|
+
radius: TOKENS.radius,
|
|
120
|
+
shadow: {
|
|
121
|
+
card: {
|
|
122
|
+
elevation: 4,
|
|
123
|
+
shadowOffset: { width: TOKENS.shadow.card.offsetX, height: TOKENS.shadow.card.offsetY },
|
|
124
|
+
shadowOpacity: 0.18,
|
|
125
|
+
shadowRadius: TOKENS.shadow.card.blur,
|
|
126
|
+
shadowColor: '#000000',
|
|
127
|
+
},
|
|
128
|
+
modal: {
|
|
129
|
+
elevation: 8,
|
|
130
|
+
shadowOffset: { width: TOKENS.shadow.modal.offsetX, height: TOKENS.shadow.modal.offsetY },
|
|
131
|
+
shadowOpacity: 0.22,
|
|
132
|
+
shadowRadius: TOKENS.shadow.modal.blur,
|
|
133
|
+
shadowColor: '#000000',
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/nac3/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA+CH,qCAAqC;AACrC,MAAM,CAAC,MAAM,MAAM,GAAe;IAChC,KAAK,EAAE;QACL,GAAG,EAAY,SAAS;QACxB,GAAG,EAAY,SAAS;QACxB,GAAG,EAAY,SAAS;QACxB,QAAQ,EAAO,SAAS;QACxB,SAAS,EAAM,kBAAkB;QACjC,MAAM,EAAS,SAAS;QACxB,KAAK,EAAU,SAAS;QACxB,MAAM,EAAS,SAAS;QACxB,YAAY,EAAG,kBAAkB;QACjC,EAAE,EAAa,SAAS;QACxB,GAAG,EAAY,SAAS;QACxB,IAAI,EAAW,SAAS;QACxB,UAAU,EAAK,SAAS;QACxB,UAAU,EAAK,SAAS;KACzB;IACD,IAAI,EAAE;QACJ,IAAI,EAAK,0DAA0D;QACnE,KAAK,EAAI,wBAAwB;QACjC,OAAO,EAAE,iDAAiD;QAC1D,IAAI,EAAK,2CAA2C;KACrD;IACD,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACxC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;IAC3C,MAAM,EAAE;QACN,IAAI,EAAG,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE;QAClF,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE;KACnF;CACF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,OAAO;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,YAAY,GAAW,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,YAAY,GAAW,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,WAAW,GAAY,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAK,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,CAAC,cAAc,GAAS,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,aAAa,GAAU,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,cAAc,GAAS,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,qBAAqB,GAAE,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,UAAU,GAAa,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,WAAW,GAAY,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,YAAY,GAAW,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAI,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAI,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAM,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAK,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAM,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAM,MAAM,CAAC,MAAM,CAAC,EAAE,GAAM,KAAK,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAM,MAAM,CAAC,MAAM,CAAC,EAAE,GAAM,KAAK,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAM,MAAM,CAAC,MAAM,CAAC,EAAE,GAAM,KAAK,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,mBAAmB;UAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK;UAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK;UAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK;UAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK;UACjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,oBAAoB;UAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK;UACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK;UACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK;UAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;UAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe;IAU7B,OAAO;QACL,KAAK,EAAG,MAAM,CAAC,KAAK;QACpB,IAAI,EAAI,MAAM,CAAC,IAAI;QACnB,KAAK,EAAG,MAAM,CAAC,KAAK;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,SAAS,EAAE,CAAC;gBACZ,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;gBACvF,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;gBACrC,WAAW,EAAE,SAAS;aACvB;YACD,KAAK,EAAE;gBACL,SAAS,EAAE,CAAC;gBACZ,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;gBACzF,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;gBACtC,WAAW,EAAE,SAAS;aACvB;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSV / TSV parser for the document reader (V1.22 of HITO 1
|
|
3
|
+
* -- CSV half; XLSX still pending pending the dep decision).
|
|
4
|
+
*
|
|
5
|
+
* Tiny hand-rolled parser. No npm dep. RFC 4180 with the
|
|
6
|
+
* common-sense relaxations needed for real-world files:
|
|
7
|
+
*
|
|
8
|
+
* - Auto-detects the delimiter: ',' (.csv), '\t' (.tsv),
|
|
9
|
+
* or ';' (European CSV) by counting candidates on the
|
|
10
|
+
* first non-comment line.
|
|
11
|
+
* - Quoted fields ("...") may contain delimiters and
|
|
12
|
+
* newlines; double-quote ("") inside a quoted field
|
|
13
|
+
* escapes a literal quote.
|
|
14
|
+
* - Lines starting with '#' before any data row are
|
|
15
|
+
* treated as comments.
|
|
16
|
+
* - First non-comment row is the header. Subsequent rows
|
|
17
|
+
* are data rows.
|
|
18
|
+
*
|
|
19
|
+
* Output shape (for voice readback):
|
|
20
|
+
* - One section per data row, heading = "Fila N" where N
|
|
21
|
+
* is the 1-based row index.
|
|
22
|
+
* - Inside the section, one paragraph per cell, formatted
|
|
23
|
+
* "header: value" so the TTS reads naturally without
|
|
24
|
+
* needing column-position context.
|
|
25
|
+
* - A "table" non-text block appears at the top of the
|
|
26
|
+
* document with the row/column counts in its summary.
|
|
27
|
+
*
|
|
28
|
+
* Pathological inputs (mismatched quotes, ragged rows)
|
|
29
|
+
* degrade to "use what we have so far" without crashing.
|
|
30
|
+
*
|
|
31
|
+
* ASCII-only.
|
|
32
|
+
*/
|
|
33
|
+
import type { NormalisedDocument } from '../types.js';
|
|
34
|
+
export interface ParseCsvOptions {
|
|
35
|
+
buffer: Buffer;
|
|
36
|
+
filename: string;
|
|
37
|
+
language?: string;
|
|
38
|
+
/** Force a delimiter. Auto-detected when omitted. */
|
|
39
|
+
delimiter?: ',' | ';' | '\t';
|
|
40
|
+
}
|
|
41
|
+
export declare function parseCsv(opts: ParseCsvOptions): NormalisedDocument;
|
|
42
|
+
//# sourceMappingURL=csv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../src/reader/parsers/csv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAgC,MAAM,aAAa,CAAC;AAEpF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;CAC9B;AA0GD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,CA6FlE"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSV / TSV parser for the document reader (V1.22 of HITO 1
|
|
3
|
+
* -- CSV half; XLSX still pending pending the dep decision).
|
|
4
|
+
*
|
|
5
|
+
* Tiny hand-rolled parser. No npm dep. RFC 4180 with the
|
|
6
|
+
* common-sense relaxations needed for real-world files:
|
|
7
|
+
*
|
|
8
|
+
* - Auto-detects the delimiter: ',' (.csv), '\t' (.tsv),
|
|
9
|
+
* or ';' (European CSV) by counting candidates on the
|
|
10
|
+
* first non-comment line.
|
|
11
|
+
* - Quoted fields ("...") may contain delimiters and
|
|
12
|
+
* newlines; double-quote ("") inside a quoted field
|
|
13
|
+
* escapes a literal quote.
|
|
14
|
+
* - Lines starting with '#' before any data row are
|
|
15
|
+
* treated as comments.
|
|
16
|
+
* - First non-comment row is the header. Subsequent rows
|
|
17
|
+
* are data rows.
|
|
18
|
+
*
|
|
19
|
+
* Output shape (for voice readback):
|
|
20
|
+
* - One section per data row, heading = "Fila N" where N
|
|
21
|
+
* is the 1-based row index.
|
|
22
|
+
* - Inside the section, one paragraph per cell, formatted
|
|
23
|
+
* "header: value" so the TTS reads naturally without
|
|
24
|
+
* needing column-position context.
|
|
25
|
+
* - A "table" non-text block appears at the top of the
|
|
26
|
+
* document with the row/column counts in its summary.
|
|
27
|
+
*
|
|
28
|
+
* Pathological inputs (mismatched quotes, ragged rows)
|
|
29
|
+
* degrade to "use what we have so far" without crashing.
|
|
30
|
+
*
|
|
31
|
+
* ASCII-only.
|
|
32
|
+
*/
|
|
33
|
+
/** Detect the delimiter by counting candidates on the first
|
|
34
|
+
* non-comment line. Tab beats semicolon beats comma when
|
|
35
|
+
* counts are equal. */
|
|
36
|
+
function detectDelimiter(firstLine, extension) {
|
|
37
|
+
if (extension === 'tsv' || firstLine.includes('\t'))
|
|
38
|
+
return '\t';
|
|
39
|
+
const semis = (firstLine.match(/;/g) || []).length;
|
|
40
|
+
const commas = (firstLine.match(/,/g) || []).length;
|
|
41
|
+
if (semis > commas)
|
|
42
|
+
return ';';
|
|
43
|
+
return ',';
|
|
44
|
+
}
|
|
45
|
+
/** Parse a CSV/TSV buffer into rows. Honours RFC 4180 quoting. */
|
|
46
|
+
function parseTable(text, forceDelim, extension) {
|
|
47
|
+
const lines = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
48
|
+
/* Pull comment lines off the top until we hit a non-empty
|
|
49
|
+
non-# row. */
|
|
50
|
+
const comments = [];
|
|
51
|
+
let cursor = 0;
|
|
52
|
+
while (cursor < lines.length) {
|
|
53
|
+
const eol = lines.indexOf('\n', cursor);
|
|
54
|
+
const line = eol < 0 ? lines.slice(cursor) : lines.slice(cursor, eol);
|
|
55
|
+
if (line.startsWith('#')) {
|
|
56
|
+
comments.push(line.slice(1).trim());
|
|
57
|
+
cursor = eol < 0 ? lines.length : eol + 1;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (line.trim() === '') {
|
|
61
|
+
cursor = eol < 0 ? lines.length : eol + 1;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
const body = lines.slice(cursor);
|
|
67
|
+
const firstNl = body.indexOf('\n');
|
|
68
|
+
const firstLine = firstNl < 0 ? body : body.slice(0, firstNl);
|
|
69
|
+
const delim = forceDelim
|
|
70
|
+
?? detectDelimiter(firstLine, extension);
|
|
71
|
+
/* Tokenise the body honouring quoted fields. */
|
|
72
|
+
const rows = [];
|
|
73
|
+
let row = [];
|
|
74
|
+
let field = '';
|
|
75
|
+
let inQuotes = false;
|
|
76
|
+
let i = 0;
|
|
77
|
+
while (i < body.length) {
|
|
78
|
+
const ch = body.charAt(i);
|
|
79
|
+
if (inQuotes) {
|
|
80
|
+
if (ch === '"') {
|
|
81
|
+
if (body.charAt(i + 1) === '"') {
|
|
82
|
+
field += '"';
|
|
83
|
+
i += 2;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
inQuotes = false;
|
|
87
|
+
i += 1;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
field += ch;
|
|
91
|
+
i += 1;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (ch === '"' && field === '') {
|
|
95
|
+
inQuotes = true;
|
|
96
|
+
i += 1;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (ch === delim) {
|
|
100
|
+
row.push(field);
|
|
101
|
+
field = '';
|
|
102
|
+
i += 1;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (ch === '\n') {
|
|
106
|
+
row.push(field);
|
|
107
|
+
if (row.length > 1 || row[0] !== '')
|
|
108
|
+
rows.push(row);
|
|
109
|
+
row = [];
|
|
110
|
+
field = '';
|
|
111
|
+
i += 1;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
field += ch;
|
|
115
|
+
i += 1;
|
|
116
|
+
}
|
|
117
|
+
/* Flush trailing line without a final newline. */
|
|
118
|
+
if (field !== '' || row.length > 0) {
|
|
119
|
+
row.push(field);
|
|
120
|
+
if (row.length > 1 || row[0] !== '')
|
|
121
|
+
rows.push(row);
|
|
122
|
+
}
|
|
123
|
+
/* If we ran off the end inside quotes, recover with what we
|
|
124
|
+
have rather than throwing -- voice readback degrades
|
|
125
|
+
gracefully. */
|
|
126
|
+
const header = rows.shift() || [];
|
|
127
|
+
return { delimiter: delim, header, rows, comments };
|
|
128
|
+
}
|
|
129
|
+
/* ----- document assembly ----- */
|
|
130
|
+
export function parseCsv(opts) {
|
|
131
|
+
const text = opts.buffer.toString('utf-8');
|
|
132
|
+
const ext = (opts.filename.toLowerCase().match(/\.([a-z0-9]+)$/) || ['', ''])[1] || '';
|
|
133
|
+
const parsed = parseTable(text, opts.delimiter, ext);
|
|
134
|
+
const sections = [];
|
|
135
|
+
let blockCounter = 0;
|
|
136
|
+
function nextId(prefix) {
|
|
137
|
+
blockCounter += 1;
|
|
138
|
+
return 's-' + prefix + '-' + blockCounter;
|
|
139
|
+
}
|
|
140
|
+
/* Top-of-document section with a table summary + comments. */
|
|
141
|
+
const topBlocks = [];
|
|
142
|
+
const tableSummary = 'tabla con ' + parsed.rows.length
|
|
143
|
+
+ (parsed.rows.length === 1 ? ' fila' : ' filas')
|
|
144
|
+
+ ' y ' + parsed.header.length
|
|
145
|
+
+ (parsed.header.length === 1 ? ' columna' : ' columnas');
|
|
146
|
+
const tableBlock = {
|
|
147
|
+
kind: 'table',
|
|
148
|
+
id: nextId('table'),
|
|
149
|
+
summary: tableSummary,
|
|
150
|
+
};
|
|
151
|
+
topBlocks.push(tableBlock);
|
|
152
|
+
for (const c of parsed.comments) {
|
|
153
|
+
if (c) {
|
|
154
|
+
topBlocks.push({
|
|
155
|
+
kind: 'paragraph',
|
|
156
|
+
level: 0,
|
|
157
|
+
text: c,
|
|
158
|
+
id: nextId('cmt'),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (parsed.header.length > 0) {
|
|
163
|
+
topBlocks.push({
|
|
164
|
+
kind: 'paragraph',
|
|
165
|
+
level: 0,
|
|
166
|
+
text: 'columnas: ' + parsed.header.join(', ') + '.',
|
|
167
|
+
id: nextId('cols'),
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
sections.push({
|
|
171
|
+
id: 's-0',
|
|
172
|
+
heading: 'Resumen',
|
|
173
|
+
level: 1,
|
|
174
|
+
blocks: [
|
|
175
|
+
{ kind: 'heading', level: 1, text: 'Resumen', id: nextId('h') },
|
|
176
|
+
...topBlocks,
|
|
177
|
+
],
|
|
178
|
+
});
|
|
179
|
+
/* One section per data row. */
|
|
180
|
+
parsed.rows.forEach((cells, idx) => {
|
|
181
|
+
const heading = 'Fila ' + (idx + 1);
|
|
182
|
+
const blocks = [{
|
|
183
|
+
kind: 'heading', level: 2, text: heading, id: nextId('h'),
|
|
184
|
+
}];
|
|
185
|
+
cells.forEach((cell, ci) => {
|
|
186
|
+
const col = parsed.header[ci] || ('columna ' + (ci + 1));
|
|
187
|
+
const value = cell.trim();
|
|
188
|
+
if (value === '')
|
|
189
|
+
return;
|
|
190
|
+
blocks.push({
|
|
191
|
+
kind: 'paragraph',
|
|
192
|
+
level: 0,
|
|
193
|
+
text: col + ': ' + value,
|
|
194
|
+
id: nextId('p'),
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
sections.push({
|
|
198
|
+
id: 's-' + (idx + 1),
|
|
199
|
+
heading,
|
|
200
|
+
level: 2,
|
|
201
|
+
blocks,
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
const docId = (opts.filename.split(/[\\/]/).pop() || 'doc')
|
|
205
|
+
.replace(/\.[^.]+$/, '')
|
|
206
|
+
.toLowerCase()
|
|
207
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
208
|
+
.replace(/^-+|-+$/g, '') || 'doc';
|
|
209
|
+
const doc = {
|
|
210
|
+
id: docId,
|
|
211
|
+
filename: opts.filename,
|
|
212
|
+
format: 'csv',
|
|
213
|
+
bytes: opts.buffer.length,
|
|
214
|
+
title: 'Resumen',
|
|
215
|
+
sections,
|
|
216
|
+
};
|
|
217
|
+
if (opts.language !== undefined)
|
|
218
|
+
doc.language = opts.language;
|
|
219
|
+
return doc;
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=csv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../src/reader/parsers/csv.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX parser for the document reader (V1.17 of HITO 1).
|
|
3
|
+
*
|
|
4
|
+
* Uses mammoth (Pablo-approved). DOCX is a ZIP containing
|
|
5
|
+
* Office Open XML; hand-rolling the schema would burn weeks
|
|
6
|
+
* and not match real-world Word output anyway. Mammoth
|
|
7
|
+
* converts DOCX -> HTML which we then pass through the V1.19
|
|
8
|
+
* HTML parser -- same shape as EPUB, same downstream code
|
|
9
|
+
* path for sections / paragraphs / lists / tables / images.
|
|
10
|
+
*
|
|
11
|
+
* Pipeline:
|
|
12
|
+
* 1. mammoth.convertToHtml({ buffer }) -> { value: HTML }.
|
|
13
|
+
* 2. Wrap value in <html><body>...</body></html>.
|
|
14
|
+
* 3. parseHtml on the result.
|
|
15
|
+
* 4. Override format='docx' + bytes from the original buffer.
|
|
16
|
+
* 5. Title = first heading (parseHtml does this already).
|
|
17
|
+
*
|
|
18
|
+
* Pathological inputs (corrupt DOCX, encrypted Word docs)
|
|
19
|
+
* surface mammoth's error in a wrapper -- voice reader stays
|
|
20
|
+
* alive.
|
|
21
|
+
*
|
|
22
|
+
* ASCII-only.
|
|
23
|
+
*/
|
|
24
|
+
import type { NormalisedDocument } from '../types.js';
|
|
25
|
+
export interface ParseDocxOptions {
|
|
26
|
+
buffer: Buffer;
|
|
27
|
+
filename: string;
|
|
28
|
+
language?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function parseDocx(opts: ParseDocxOptions): Promise<NormalisedDocument>;
|
|
31
|
+
//# sourceMappingURL=docx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx.d.ts","sourceRoot":"","sources":["../../../src/reader/parsers/docx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AASD,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoBnF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX parser for the document reader (V1.17 of HITO 1).
|
|
3
|
+
*
|
|
4
|
+
* Uses mammoth (Pablo-approved). DOCX is a ZIP containing
|
|
5
|
+
* Office Open XML; hand-rolling the schema would burn weeks
|
|
6
|
+
* and not match real-world Word output anyway. Mammoth
|
|
7
|
+
* converts DOCX -> HTML which we then pass through the V1.19
|
|
8
|
+
* HTML parser -- same shape as EPUB, same downstream code
|
|
9
|
+
* path for sections / paragraphs / lists / tables / images.
|
|
10
|
+
*
|
|
11
|
+
* Pipeline:
|
|
12
|
+
* 1. mammoth.convertToHtml({ buffer }) -> { value: HTML }.
|
|
13
|
+
* 2. Wrap value in <html><body>...</body></html>.
|
|
14
|
+
* 3. parseHtml on the result.
|
|
15
|
+
* 4. Override format='docx' + bytes from the original buffer.
|
|
16
|
+
* 5. Title = first heading (parseHtml does this already).
|
|
17
|
+
*
|
|
18
|
+
* Pathological inputs (corrupt DOCX, encrypted Word docs)
|
|
19
|
+
* surface mammoth's error in a wrapper -- voice reader stays
|
|
20
|
+
* alive.
|
|
21
|
+
*
|
|
22
|
+
* ASCII-only.
|
|
23
|
+
*/
|
|
24
|
+
import { parseHtml } from './html.js';
|
|
25
|
+
/* Dynamic import wrapper -- mammoth is ESM-ish and lazy
|
|
26
|
+
loading keeps the cold-start cost off the txt/md path. */
|
|
27
|
+
async function loadMammoth() {
|
|
28
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
29
|
+
return await import('mammoth');
|
|
30
|
+
}
|
|
31
|
+
export async function parseDocx(opts) {
|
|
32
|
+
const mammoth = await loadMammoth();
|
|
33
|
+
let result;
|
|
34
|
+
try {
|
|
35
|
+
result = await mammoth.convertToHtml({ buffer: opts.buffer });
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
39
|
+
throw new Error('docx: mammoth could not open the document: ' + msg);
|
|
40
|
+
}
|
|
41
|
+
const html = '<html><body>' + (result.value || '') + '</body></html>';
|
|
42
|
+
const inner = parseHtml({
|
|
43
|
+
filename: opts.filename,
|
|
44
|
+
buffer: Buffer.from(html, 'utf-8'),
|
|
45
|
+
...(opts.language ? { language: opts.language } : {}),
|
|
46
|
+
});
|
|
47
|
+
inner.format = 'docx';
|
|
48
|
+
inner.bytes = opts.buffer.length;
|
|
49
|
+
return inner;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=docx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../../src/reader/parsers/docx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAStC;4DAC4D;AAC5D,KAAK,UAAU,WAAW;IACxB,iEAAiE;IACjE,OAAO,MAAM,MAAM,CAAC,SAAgB,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAsB;IACpD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,MAA+C,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,gBAAgB,CAAC;IACtE,MAAM,KAAK,GAAG,SAAS,CAAC;QACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EPUB parser for the document reader (V1.21 of HITO 1).
|
|
3
|
+
*
|
|
4
|
+
* Hand-rolled. No npm dep -- uses node:zlib for deflate.
|
|
5
|
+
* EPUB is a ZIP containing:
|
|
6
|
+
*
|
|
7
|
+
* - mimetype file ("application/epub+zip").
|
|
8
|
+
* - META-INF/container.xml -> points to the OPF.
|
|
9
|
+
* - The OPF (XML) -> declares <manifest> (file list) +
|
|
10
|
+
* <spine> (reading order) + <metadata>.
|
|
11
|
+
* - XHTML files in the spine carry the actual content.
|
|
12
|
+
*
|
|
13
|
+
* Pipeline:
|
|
14
|
+
* 1. extractZipFiles(buffer) -> Map<path, Buffer>.
|
|
15
|
+
* 2. read container.xml -> resolve OPF path.
|
|
16
|
+
* 3. parse OPF -> manifest map (id -> href) + spine order +
|
|
17
|
+
* title from <dc:title>.
|
|
18
|
+
* 4. concatenate the XHTML files in spine order.
|
|
19
|
+
* 5. parseHtml on the concatenated stream.
|
|
20
|
+
* 6. override title from OPF metadata.
|
|
21
|
+
*
|
|
22
|
+
* The XHTML reuse means images / tables / code blocks render
|
|
23
|
+
* with the same shape as native HTML docs. CSS is ignored
|
|
24
|
+
* (no styling matters for voice readback).
|
|
25
|
+
*
|
|
26
|
+
* Pathological inputs (corrupt ZIP, missing container.xml,
|
|
27
|
+
* malformed OPF) throw a loud Error so the caller surfaces
|
|
28
|
+
* the failure -- never silently returns an empty document.
|
|
29
|
+
*
|
|
30
|
+
* ASCII-only.
|
|
31
|
+
*/
|
|
32
|
+
import type { NormalisedDocument } from '../types.js';
|
|
33
|
+
export interface ParseEpubOptions {
|
|
34
|
+
buffer: Buffer;
|
|
35
|
+
filename: string;
|
|
36
|
+
language?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare function parseEpub(opts: ParseEpubOptions): NormalisedDocument;
|
|
39
|
+
//# sourceMappingURL=epub.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epub.d.ts","sourceRoot":"","sources":["../../../src/reader/parsers/epub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsMD,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,CA+CpE"}
|