@aigne/aos 0.2.0-beta
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/CHANGELOG.md +49 -0
- package/LICENSE.md +26 -0
- package/dist/agent-dsl.cjs +116 -0
- package/dist/agent-dsl.d.cts +31 -0
- package/dist/agent-dsl.d.cts.map +1 -0
- package/dist/agent-dsl.d.mts +31 -0
- package/dist/agent-dsl.d.mts.map +1 -0
- package/dist/agent-dsl.mjs +115 -0
- package/dist/agent-dsl.mjs.map +1 -0
- package/dist/arc-compat.cjs +125 -0
- package/dist/arc-compat.d.cts +17 -0
- package/dist/arc-compat.d.cts.map +1 -0
- package/dist/arc-compat.d.mts +17 -0
- package/dist/arc-compat.d.mts.map +1 -0
- package/dist/arc-compat.mjs +123 -0
- package/dist/arc-compat.mjs.map +1 -0
- package/dist/auto-surface/compiler.cjs +36 -0
- package/dist/auto-surface/compiler.d.cts +7 -0
- package/dist/auto-surface/compiler.d.cts.map +1 -0
- package/dist/auto-surface/compiler.d.mts +7 -0
- package/dist/auto-surface/compiler.d.mts.map +1 -0
- package/dist/auto-surface/compiler.mjs +37 -0
- package/dist/auto-surface/compiler.mjs.map +1 -0
- package/dist/auto-surface/definition-dsl.cjs +333 -0
- package/dist/auto-surface/definition-dsl.d.cts +41 -0
- package/dist/auto-surface/definition-dsl.d.cts.map +1 -0
- package/dist/auto-surface/definition-dsl.d.mts +41 -0
- package/dist/auto-surface/definition-dsl.d.mts.map +1 -0
- package/dist/auto-surface/definition-dsl.mjs +332 -0
- package/dist/auto-surface/definition-dsl.mjs.map +1 -0
- package/dist/auto-surface/fragments.cjs +177 -0
- package/dist/auto-surface/fragments.d.cts +23 -0
- package/dist/auto-surface/fragments.d.cts.map +1 -0
- package/dist/auto-surface/fragments.d.mts +23 -0
- package/dist/auto-surface/fragments.d.mts.map +1 -0
- package/dist/auto-surface/fragments.mjs +175 -0
- package/dist/auto-surface/fragments.mjs.map +1 -0
- package/dist/auto-surface/index.d.mts +9 -0
- package/dist/auto-surface/layering.cjs +43 -0
- package/dist/auto-surface/layering.d.cts +7 -0
- package/dist/auto-surface/layering.d.cts.map +1 -0
- package/dist/auto-surface/layering.d.mts +7 -0
- package/dist/auto-surface/layering.d.mts.map +1 -0
- package/dist/auto-surface/layering.mjs +43 -0
- package/dist/auto-surface/layering.mjs.map +1 -0
- package/dist/auto-surface/projection.cjs +11 -0
- package/dist/auto-surface/projection.d.cts +11 -0
- package/dist/auto-surface/projection.d.cts.map +1 -0
- package/dist/auto-surface/projection.d.mts +11 -0
- package/dist/auto-surface/projection.d.mts.map +1 -0
- package/dist/auto-surface/projection.mjs +12 -0
- package/dist/auto-surface/projection.mjs.map +1 -0
- package/dist/auto-surface/projectors/settings-shell.cjs +114 -0
- package/dist/auto-surface/projectors/settings-shell.d.cts +10 -0
- package/dist/auto-surface/projectors/settings-shell.d.cts.map +1 -0
- package/dist/auto-surface/projectors/settings-shell.d.mts +10 -0
- package/dist/auto-surface/projectors/settings-shell.d.mts.map +1 -0
- package/dist/auto-surface/projectors/settings-shell.mjs +114 -0
- package/dist/auto-surface/projectors/settings-shell.mjs.map +1 -0
- package/dist/auto-surface/scenario.cjs +38 -0
- package/dist/auto-surface/scenario.d.cts +31 -0
- package/dist/auto-surface/scenario.d.cts.map +1 -0
- package/dist/auto-surface/scenario.d.mts +31 -0
- package/dist/auto-surface/scenario.d.mts.map +1 -0
- package/dist/auto-surface/scenario.mjs +37 -0
- package/dist/auto-surface/scenario.mjs.map +1 -0
- package/dist/auto-surface/types.cjs +9 -0
- package/dist/auto-surface/types.d.cts +153 -0
- package/dist/auto-surface/types.d.cts.map +1 -0
- package/dist/auto-surface/types.d.mts +153 -0
- package/dist/auto-surface/types.d.mts.map +1 -0
- package/dist/auto-surface/types.mjs +9 -0
- package/dist/auto-surface/types.mjs.map +1 -0
- package/dist/auto-surface/value-dsl.cjs +80 -0
- package/dist/auto-surface/value-dsl.d.cts +24 -0
- package/dist/auto-surface/value-dsl.d.cts.map +1 -0
- package/dist/auto-surface/value-dsl.d.mts +24 -0
- package/dist/auto-surface/value-dsl.d.mts.map +1 -0
- package/dist/auto-surface/value-dsl.mjs +79 -0
- package/dist/auto-surface/value-dsl.mjs.map +1 -0
- package/dist/blocklet/activation.cjs +94 -0
- package/dist/blocklet/activation.d.cts +30 -0
- package/dist/blocklet/activation.d.cts.map +1 -0
- package/dist/blocklet/activation.d.mts +30 -0
- package/dist/blocklet/activation.d.mts.map +1 -0
- package/dist/blocklet/activation.mjs +94 -0
- package/dist/blocklet/activation.mjs.map +1 -0
- package/dist/blocklet/did-space-registry.cjs +282 -0
- package/dist/blocklet/did-space-registry.d.cts +82 -0
- package/dist/blocklet/did-space-registry.d.cts.map +1 -0
- package/dist/blocklet/did-space-registry.d.mts +82 -0
- package/dist/blocklet/did-space-registry.d.mts.map +1 -0
- package/dist/blocklet/did-space-registry.mjs +281 -0
- package/dist/blocklet/did-space-registry.mjs.map +1 -0
- package/dist/blocklet/handlers.cjs +66 -0
- package/dist/blocklet/handlers.d.cts +16 -0
- package/dist/blocklet/handlers.d.cts.map +1 -0
- package/dist/blocklet/handlers.d.mts +16 -0
- package/dist/blocklet/handlers.d.mts.map +1 -0
- package/dist/blocklet/handlers.mjs +65 -0
- package/dist/blocklet/handlers.mjs.map +1 -0
- package/dist/blocklet/index.d.mts +7 -0
- package/dist/blocklet/manifest.d.cts +2 -0
- package/dist/blocklet/manifest.d.mts +2 -0
- package/dist/blocklet/manifest.mjs +3 -0
- package/dist/blocklet/registry.cjs +447 -0
- package/dist/blocklet/registry.d.cts +197 -0
- package/dist/blocklet/registry.d.cts.map +1 -0
- package/dist/blocklet/registry.d.mts +197 -0
- package/dist/blocklet/registry.d.mts.map +1 -0
- package/dist/blocklet/registry.mjs +441 -0
- package/dist/blocklet/registry.mjs.map +1 -0
- package/dist/blocklet/static-render.cjs +183 -0
- package/dist/blocklet/static-render.d.cts +55 -0
- package/dist/blocklet/static-render.d.cts.map +1 -0
- package/dist/blocklet/static-render.d.mts +55 -0
- package/dist/blocklet/static-render.d.mts.map +1 -0
- package/dist/blocklet/static-render.mjs +181 -0
- package/dist/blocklet/static-render.mjs.map +1 -0
- package/dist/blocklet/types.d.cts +70 -0
- package/dist/blocklet/types.d.cts.map +1 -0
- package/dist/blocklet/types.d.mts +70 -0
- package/dist/blocklet/types.d.mts.map +1 -0
- package/dist/devices/chain.cjs +127 -0
- package/dist/devices/chain.d.cts +48 -0
- package/dist/devices/chain.d.cts.map +1 -0
- package/dist/devices/chain.d.mts +48 -0
- package/dist/devices/chain.d.mts.map +1 -0
- package/dist/devices/chain.mjs +125 -0
- package/dist/devices/chain.mjs.map +1 -0
- package/dist/dsl-shared.cjs +290 -0
- package/dist/dsl-shared.d.cts +54 -0
- package/dist/dsl-shared.d.cts.map +1 -0
- package/dist/dsl-shared.d.mts +54 -0
- package/dist/dsl-shared.d.mts.map +1 -0
- package/dist/dsl-shared.mjs +287 -0
- package/dist/dsl-shared.mjs.map +1 -0
- package/dist/http/afs-mcp.cjs +85 -0
- package/dist/http/afs-mcp.d.cts +14 -0
- package/dist/http/afs-mcp.d.cts.map +1 -0
- package/dist/http/afs-mcp.d.mts +14 -0
- package/dist/http/afs-mcp.d.mts.map +1 -0
- package/dist/http/afs-mcp.mjs +86 -0
- package/dist/http/afs-mcp.mjs.map +1 -0
- package/dist/http/afs-raw.cjs +264 -0
- package/dist/http/afs-raw.d.cts +31 -0
- package/dist/http/afs-raw.d.cts.map +1 -0
- package/dist/http/afs-raw.d.mts +31 -0
- package/dist/http/afs-raw.d.mts.map +1 -0
- package/dist/http/afs-raw.mjs +264 -0
- package/dist/http/afs-raw.mjs.map +1 -0
- package/dist/http/afs-rest.cjs +30 -0
- package/dist/http/afs-rest.d.cts +21 -0
- package/dist/http/afs-rest.d.cts.map +1 -0
- package/dist/http/afs-rest.d.mts +21 -0
- package/dist/http/afs-rest.d.mts.map +1 -0
- package/dist/http/afs-rest.mjs +31 -0
- package/dist/http/afs-rest.mjs.map +1 -0
- package/dist/http/afs-rpc-wire.cjs +271 -0
- package/dist/http/afs-rpc-wire.d.cts +195 -0
- package/dist/http/afs-rpc-wire.d.cts.map +1 -0
- package/dist/http/afs-rpc-wire.d.mts +195 -0
- package/dist/http/afs-rpc-wire.d.mts.map +1 -0
- package/dist/http/afs-rpc-wire.mjs +262 -0
- package/dist/http/afs-rpc-wire.mjs.map +1 -0
- package/dist/http/afs-rpc.cjs +729 -0
- package/dist/http/afs-rpc.d.cts +103 -0
- package/dist/http/afs-rpc.d.cts.map +1 -0
- package/dist/http/afs-rpc.d.mts +103 -0
- package/dist/http/afs-rpc.d.mts.map +1 -0
- package/dist/http/afs-rpc.mjs +729 -0
- package/dist/http/afs-rpc.mjs.map +1 -0
- package/dist/http/afs-upload.cjs +116 -0
- package/dist/http/afs-upload.d.cts +40 -0
- package/dist/http/afs-upload.d.cts.map +1 -0
- package/dist/http/afs-upload.d.mts +40 -0
- package/dist/http/afs-upload.d.mts.map +1 -0
- package/dist/http/afs-upload.mjs +116 -0
- package/dist/http/afs-upload.mjs.map +1 -0
- package/dist/http/aup-client.cjs +60 -0
- package/dist/http/aup-client.d.cts +22 -0
- package/dist/http/aup-client.d.cts.map +1 -0
- package/dist/http/aup-client.d.mts +22 -0
- package/dist/http/aup-client.d.mts.map +1 -0
- package/dist/http/aup-client.mjs +59 -0
- package/dist/http/aup-client.mjs.map +1 -0
- package/dist/http/aup-event.cjs +100 -0
- package/dist/http/aup-event.d.cts +38 -0
- package/dist/http/aup-event.d.cts.map +1 -0
- package/dist/http/aup-event.d.mts +38 -0
- package/dist/http/aup-event.d.mts.map +1 -0
- package/dist/http/aup-event.mjs +101 -0
- package/dist/http/aup-event.mjs.map +1 -0
- package/dist/http/auth-context.cjs +66 -0
- package/dist/http/auth-context.d.cts +64 -0
- package/dist/http/auth-context.d.cts.map +1 -0
- package/dist/http/auth-context.d.mts +64 -0
- package/dist/http/auth-context.d.mts.map +1 -0
- package/dist/http/auth-context.mjs +66 -0
- package/dist/http/auth-context.mjs.map +1 -0
- package/dist/http/csrf.cjs +50 -0
- package/dist/http/csrf.d.cts +8 -0
- package/dist/http/csrf.d.cts.map +1 -0
- package/dist/http/csrf.d.mts +8 -0
- package/dist/http/csrf.d.mts.map +1 -0
- package/dist/http/csrf.mjs +49 -0
- package/dist/http/csrf.mjs.map +1 -0
- package/dist/http/handlers.cjs +106 -0
- package/dist/http/handlers.d.cts +39 -0
- package/dist/http/handlers.d.cts.map +1 -0
- package/dist/http/handlers.d.mts +39 -0
- package/dist/http/handlers.d.mts.map +1 -0
- package/dist/http/handlers.mjs +104 -0
- package/dist/http/handlers.mjs.map +1 -0
- package/dist/http/index.d.mts +1 -0
- package/dist/http/ingest-facade.cjs +315 -0
- package/dist/http/ingest-facade.mjs +314 -0
- package/dist/http/ingest-facade.mjs.map +1 -0
- package/dist/http/raw-url.cjs +136 -0
- package/dist/http/raw-url.d.cts +54 -0
- package/dist/http/raw-url.d.cts.map +1 -0
- package/dist/http/raw-url.d.mts +54 -0
- package/dist/http/raw-url.d.mts.map +1 -0
- package/dist/http/raw-url.mjs +136 -0
- package/dist/http/raw-url.mjs.map +1 -0
- package/dist/http/request-context.cjs +178 -0
- package/dist/http/request-context.d.cts +76 -0
- package/dist/http/request-context.d.cts.map +1 -0
- package/dist/http/request-context.d.mts +76 -0
- package/dist/http/request-context.d.mts.map +1 -0
- package/dist/http/request-context.mjs +179 -0
- package/dist/http/request-context.mjs.map +1 -0
- package/dist/index.cjs +197 -0
- package/dist/index.d.cts +63 -0
- package/dist/index.d.mts +68 -0
- package/dist/index.mjs +61 -0
- package/dist/mcp/index.cjs +9 -0
- package/dist/mcp/index.d.cts +5 -0
- package/dist/mcp/index.d.mts +5 -0
- package/dist/mcp/index.mjs +6 -0
- package/dist/mcp/prompts.cjs +17 -0
- package/dist/mcp/prompts.d.cts +8 -0
- package/dist/mcp/prompts.d.cts.map +1 -0
- package/dist/mcp/prompts.d.mts +8 -0
- package/dist/mcp/prompts.d.mts.map +1 -0
- package/dist/mcp/prompts.mjs +17 -0
- package/dist/mcp/prompts.mjs.map +1 -0
- package/dist/mcp/resources.cjs +22 -0
- package/dist/mcp/resources.d.cts +8 -0
- package/dist/mcp/resources.d.cts.map +1 -0
- package/dist/mcp/resources.d.mts +8 -0
- package/dist/mcp/resources.d.mts.map +1 -0
- package/dist/mcp/resources.mjs +22 -0
- package/dist/mcp/resources.mjs.map +1 -0
- package/dist/mcp/server.cjs +51 -0
- package/dist/mcp/server.d.cts +20 -0
- package/dist/mcp/server.d.cts.map +1 -0
- package/dist/mcp/server.d.mts +20 -0
- package/dist/mcp/server.d.mts.map +1 -0
- package/dist/mcp/server.mjs +52 -0
- package/dist/mcp/server.mjs.map +1 -0
- package/dist/mcp/tools.cjs +218 -0
- package/dist/mcp/tools.d.cts +8 -0
- package/dist/mcp/tools.d.cts.map +1 -0
- package/dist/mcp/tools.d.mts +8 -0
- package/dist/mcp/tools.d.mts.map +1 -0
- package/dist/mcp/tools.mjs +219 -0
- package/dist/mcp/tools.mjs.map +1 -0
- package/dist/mcp/utils.cjs +75 -0
- package/dist/mcp/utils.mjs +69 -0
- package/dist/mcp/utils.mjs.map +1 -0
- package/dist/mount/index.cjs +4 -0
- package/dist/mount/index.d.cts +3 -0
- package/dist/mount/index.d.mts +3 -0
- package/dist/mount/index.mjs +3 -0
- package/dist/mount/materializer.cjs +167 -0
- package/dist/mount/materializer.d.cts +97 -0
- package/dist/mount/materializer.d.cts.map +1 -0
- package/dist/mount/materializer.d.mts +97 -0
- package/dist/mount/materializer.d.mts.map +1 -0
- package/dist/mount/materializer.mjs +167 -0
- package/dist/mount/materializer.mjs.map +1 -0
- package/dist/mount/types.d.cts +90 -0
- package/dist/mount/types.d.cts.map +1 -0
- package/dist/mount/types.d.mts +90 -0
- package/dist/mount/types.d.mts.map +1 -0
- package/dist/mount-config.cjs +61 -0
- package/dist/mount-config.d.cts +19 -0
- package/dist/mount-config.d.cts.map +1 -0
- package/dist/mount-config.d.mts +19 -0
- package/dist/mount-config.d.mts.map +1 -0
- package/dist/mount-config.mjs +61 -0
- package/dist/mount-config.mjs.map +1 -0
- package/dist/projectors/aup-projector.cjs +190 -0
- package/dist/projectors/aup-projector.d.cts +59 -0
- package/dist/projectors/aup-projector.d.cts.map +1 -0
- package/dist/projectors/aup-projector.d.mts +59 -0
- package/dist/projectors/aup-projector.d.mts.map +1 -0
- package/dist/projectors/aup-projector.mjs +188 -0
- package/dist/projectors/aup-projector.mjs.map +1 -0
- package/dist/projectors/index.cjs +6 -0
- package/dist/projectors/index.d.cts +2 -0
- package/dist/projectors/index.d.mts +2 -0
- package/dist/projectors/index.mjs +3 -0
- package/dist/scaffold/afs.cjs +195 -0
- package/dist/scaffold/afs.d.cts +16 -0
- package/dist/scaffold/afs.d.cts.map +1 -0
- package/dist/scaffold/afs.d.mts +16 -0
- package/dist/scaffold/afs.d.mts.map +1 -0
- package/dist/scaffold/afs.mjs +195 -0
- package/dist/scaffold/afs.mjs.map +1 -0
- package/dist/scaffold/composition.cjs +92 -0
- package/dist/scaffold/composition.d.cts +10 -0
- package/dist/scaffold/composition.d.cts.map +1 -0
- package/dist/scaffold/composition.d.mts +10 -0
- package/dist/scaffold/composition.d.mts.map +1 -0
- package/dist/scaffold/composition.mjs +92 -0
- package/dist/scaffold/composition.mjs.map +1 -0
- package/dist/scaffold/dsl-error.cjs +21 -0
- package/dist/scaffold/dsl-error.d.cts +11 -0
- package/dist/scaffold/dsl-error.d.cts.map +1 -0
- package/dist/scaffold/dsl-error.d.mts +11 -0
- package/dist/scaffold/dsl-error.d.mts.map +1 -0
- package/dist/scaffold/dsl-error.mjs +20 -0
- package/dist/scaffold/dsl-error.mjs.map +1 -0
- package/dist/scaffold/index.d.mts +12 -0
- package/dist/scaffold/manifest-dsl.cjs +188 -0
- package/dist/scaffold/manifest-dsl.d.cts +8 -0
- package/dist/scaffold/manifest-dsl.d.cts.map +1 -0
- package/dist/scaffold/manifest-dsl.d.mts +8 -0
- package/dist/scaffold/manifest-dsl.d.mts.map +1 -0
- package/dist/scaffold/manifest-dsl.mjs +188 -0
- package/dist/scaffold/manifest-dsl.mjs.map +1 -0
- package/dist/scaffold/module-dsl.cjs +284 -0
- package/dist/scaffold/module-dsl.d.cts +8 -0
- package/dist/scaffold/module-dsl.d.cts.map +1 -0
- package/dist/scaffold/module-dsl.d.mts +8 -0
- package/dist/scaffold/module-dsl.d.mts.map +1 -0
- package/dist/scaffold/module-dsl.mjs +284 -0
- package/dist/scaffold/module-dsl.mjs.map +1 -0
- package/dist/scaffold/resolver.cjs +156 -0
- package/dist/scaffold/resolver.d.cts +7 -0
- package/dist/scaffold/resolver.d.cts.map +1 -0
- package/dist/scaffold/resolver.d.mts +7 -0
- package/dist/scaffold/resolver.d.mts.map +1 -0
- package/dist/scaffold/resolver.mjs +156 -0
- package/dist/scaffold/resolver.mjs.map +1 -0
- package/dist/scaffold/runtime.cjs +24 -0
- package/dist/scaffold/runtime.d.cts +19 -0
- package/dist/scaffold/runtime.d.cts.map +1 -0
- package/dist/scaffold/runtime.d.mts +19 -0
- package/dist/scaffold/runtime.d.mts.map +1 -0
- package/dist/scaffold/runtime.mjs +25 -0
- package/dist/scaffold/runtime.mjs.map +1 -0
- package/dist/scaffold/shell-dsl.cjs +279 -0
- package/dist/scaffold/shell-dsl.d.cts +8 -0
- package/dist/scaffold/shell-dsl.d.cts.map +1 -0
- package/dist/scaffold/shell-dsl.d.mts +8 -0
- package/dist/scaffold/shell-dsl.d.mts.map +1 -0
- package/dist/scaffold/shell-dsl.mjs +279 -0
- package/dist/scaffold/shell-dsl.mjs.map +1 -0
- package/dist/scaffold/surface-dsl.cjs +182 -0
- package/dist/scaffold/surface-dsl.d.cts +8 -0
- package/dist/scaffold/surface-dsl.d.cts.map +1 -0
- package/dist/scaffold/surface-dsl.d.mts +8 -0
- package/dist/scaffold/surface-dsl.d.mts.map +1 -0
- package/dist/scaffold/surface-dsl.mjs +182 -0
- package/dist/scaffold/surface-dsl.mjs.map +1 -0
- package/dist/scaffold/surfaces.cjs +84 -0
- package/dist/scaffold/surfaces.d.cts +23 -0
- package/dist/scaffold/surfaces.d.cts.map +1 -0
- package/dist/scaffold/surfaces.d.mts +24 -0
- package/dist/scaffold/surfaces.d.mts.map +1 -0
- package/dist/scaffold/surfaces.mjs +84 -0
- package/dist/scaffold/surfaces.mjs.map +1 -0
- package/dist/scaffold/types.d.cts +264 -0
- package/dist/scaffold/types.d.cts.map +1 -0
- package/dist/scaffold/types.d.mts +265 -0
- package/dist/scaffold/types.d.mts.map +1 -0
- package/dist/scaffold/workspace-dsl.cjs +339 -0
- package/dist/scaffold/workspace-dsl.d.cts +49 -0
- package/dist/scaffold/workspace-dsl.d.cts.map +1 -0
- package/dist/scaffold/workspace-dsl.d.mts +49 -0
- package/dist/scaffold/workspace-dsl.d.mts.map +1 -0
- package/dist/scaffold/workspace-dsl.mjs +337 -0
- package/dist/scaffold/workspace-dsl.mjs.map +1 -0
- package/dist/scope/index.d.mts +3 -0
- package/dist/scope/read-blocklet-scope.cjs +29 -0
- package/dist/scope/read-blocklet-scope.d.cts +8 -0
- package/dist/scope/read-blocklet-scope.d.cts.map +1 -0
- package/dist/scope/read-blocklet-scope.d.mts +8 -0
- package/dist/scope/read-blocklet-scope.d.mts.map +1 -0
- package/dist/scope/read-blocklet-scope.mjs +30 -0
- package/dist/scope/read-blocklet-scope.mjs.map +1 -0
- package/dist/scope/resolve-scoped-afs.cjs +87 -0
- package/dist/scope/resolve-scoped-afs.d.cts +7 -0
- package/dist/scope/resolve-scoped-afs.d.cts.map +1 -0
- package/dist/scope/resolve-scoped-afs.d.mts +7 -0
- package/dist/scope/resolve-scoped-afs.d.mts.map +1 -0
- package/dist/scope/resolve-scoped-afs.mjs +88 -0
- package/dist/scope/resolve-scoped-afs.mjs.map +1 -0
- package/dist/scope/types.d.cts +25 -0
- package/dist/scope/types.d.cts.map +1 -0
- package/dist/scope/types.d.mts +25 -0
- package/dist/scope/types.d.mts.map +1 -0
- package/dist/session/backends.cjs +90 -0
- package/dist/session/backends.d.cts +35 -0
- package/dist/session/backends.d.cts.map +1 -0
- package/dist/session/backends.d.mts +35 -0
- package/dist/session/backends.d.mts.map +1 -0
- package/dist/session/backends.mjs +89 -0
- package/dist/session/backends.mjs.map +1 -0
- package/dist/session/replication-resolver.cjs +323 -0
- package/dist/session/replication-resolver.d.cts +71 -0
- package/dist/session/replication-resolver.d.cts.map +1 -0
- package/dist/session/replication-resolver.d.mts +71 -0
- package/dist/session/replication-resolver.d.mts.map +1 -0
- package/dist/session/replication-resolver.mjs +323 -0
- package/dist/session/replication-resolver.mjs.map +1 -0
- package/dist/session/role-level.cjs +36 -0
- package/dist/session/role-level.d.cts +24 -0
- package/dist/session/role-level.d.cts.map +1 -0
- package/dist/session/role-level.d.mts +24 -0
- package/dist/session/role-level.d.mts.map +1 -0
- package/dist/session/role-level.mjs +35 -0
- package/dist/session/role-level.mjs.map +1 -0
- package/dist/session/session-dir-providers.cjs +254 -0
- package/dist/session/session-dir-providers.d.cts +32 -0
- package/dist/session/session-dir-providers.d.cts.map +1 -0
- package/dist/session/session-dir-providers.d.mts +32 -0
- package/dist/session/session-dir-providers.d.mts.map +1 -0
- package/dist/session/session-dir-providers.mjs +252 -0
- package/dist/session/session-dir-providers.mjs.map +1 -0
- package/dist/session/session-id.cjs +20 -0
- package/dist/session/session-id.d.cts +15 -0
- package/dist/session/session-id.d.cts.map +1 -0
- package/dist/session/session-id.d.mts +15 -0
- package/dist/session/session-id.d.mts.map +1 -0
- package/dist/session/session-id.mjs +20 -0
- package/dist/session/session-id.mjs.map +1 -0
- package/dist/session/session-user-afs.cjs +899 -0
- package/dist/session/session-user-afs.d.cts +296 -0
- package/dist/session/session-user-afs.d.cts.map +1 -0
- package/dist/session/session-user-afs.d.mts +296 -0
- package/dist/session/session-user-afs.d.mts.map +1 -0
- package/dist/session/session-user-afs.mjs +896 -0
- package/dist/session/session-user-afs.mjs.map +1 -0
- package/dist/session/settings-cascade.cjs +69 -0
- package/dist/session/settings-cascade.d.cts +81 -0
- package/dist/session/settings-cascade.d.cts.map +1 -0
- package/dist/session/settings-cascade.d.mts +81 -0
- package/dist/session/settings-cascade.d.mts.map +1 -0
- package/dist/session/settings-cascade.mjs +69 -0
- package/dist/session/settings-cascade.mjs.map +1 -0
- package/dist/session/settings-resolver.cjs +770 -0
- package/dist/session/settings-resolver.d.cts +177 -0
- package/dist/session/settings-resolver.d.cts.map +1 -0
- package/dist/session/settings-resolver.d.mts +177 -0
- package/dist/session/settings-resolver.d.mts.map +1 -0
- package/dist/session/settings-resolver.mjs +771 -0
- package/dist/session/settings-resolver.mjs.map +1 -0
- package/dist/session/settings-schema-store.cjs +0 -0
- package/dist/session/settings-schema-store.d.cts +72 -0
- package/dist/session/settings-schema-store.d.cts.map +1 -0
- package/dist/session/settings-schema-store.d.mts +72 -0
- package/dist/session/settings-schema-store.d.mts.map +1 -0
- package/dist/session/settings-schema-store.mjs +0 -0
- package/dist/session/settings-schema-store.mjs.map +1 -0
- package/dist/system-mounts/index.cjs +14 -0
- package/dist/system-mounts/index.d.cts +6 -0
- package/dist/system-mounts/index.d.mts +6 -0
- package/dist/system-mounts/index.mjs +6 -0
- package/dist/system-mounts/install.cjs +101 -0
- package/dist/system-mounts/install.d.cts +36 -0
- package/dist/system-mounts/install.d.cts.map +1 -0
- package/dist/system-mounts/install.d.mts +37 -0
- package/dist/system-mounts/install.d.mts.map +1 -0
- package/dist/system-mounts/install.mjs +102 -0
- package/dist/system-mounts/install.mjs.map +1 -0
- package/dist/system-mounts/installers.cjs +247 -0
- package/dist/system-mounts/installers.d.cts +13 -0
- package/dist/system-mounts/installers.d.cts.map +1 -0
- package/dist/system-mounts/installers.d.mts +14 -0
- package/dist/system-mounts/installers.d.mts.map +1 -0
- package/dist/system-mounts/installers.mjs +244 -0
- package/dist/system-mounts/installers.mjs.map +1 -0
- package/dist/system-mounts/lists.cjs +122 -0
- package/dist/system-mounts/lists.d.cts +34 -0
- package/dist/system-mounts/lists.d.cts.map +1 -0
- package/dist/system-mounts/lists.d.mts +34 -0
- package/dist/system-mounts/lists.d.mts.map +1 -0
- package/dist/system-mounts/lists.mjs +122 -0
- package/dist/system-mounts/lists.mjs.map +1 -0
- package/dist/system-mounts/types.d.cts +124 -0
- package/dist/system-mounts/types.d.cts.map +1 -0
- package/dist/system-mounts/types.d.mts +125 -0
- package/dist/system-mounts/types.d.mts.map +1 -0
- package/dist/system-mounts/validate.cjs +56 -0
- package/dist/system-mounts/validate.d.cts +34 -0
- package/dist/system-mounts/validate.d.cts.map +1 -0
- package/dist/system-mounts/validate.d.mts +34 -0
- package/dist/system-mounts/validate.d.mts.map +1 -0
- package/dist/system-mounts/validate.mjs +56 -0
- package/dist/system-mounts/validate.mjs.map +1 -0
- package/dist/terminal-llm.cjs +90 -0
- package/dist/terminal-llm.d.cts +50 -0
- package/dist/terminal-llm.d.cts.map +1 -0
- package/dist/terminal-llm.d.mts +50 -0
- package/dist/terminal-llm.d.mts.map +1 -0
- package/dist/terminal-llm.mjs +90 -0
- package/dist/terminal-llm.mjs.map +1 -0
- package/dist/terminal-repl.cjs +371 -0
- package/dist/terminal-repl.d.cts +69 -0
- package/dist/terminal-repl.d.cts.map +1 -0
- package/dist/terminal-repl.d.mts +69 -0
- package/dist/terminal-repl.d.mts.map +1 -0
- package/dist/terminal-repl.mjs +370 -0
- package/dist/terminal-repl.mjs.map +1 -0
- package/dist/transport/idle-timer.cjs +136 -0
- package/dist/transport/idle-timer.d.cts +92 -0
- package/dist/transport/idle-timer.d.cts.map +1 -0
- package/dist/transport/idle-timer.d.mts +92 -0
- package/dist/transport/idle-timer.d.mts.map +1 -0
- package/dist/transport/idle-timer.mjs +132 -0
- package/dist/transport/idle-timer.mjs.map +1 -0
- package/dist/web-component-dsl.cjs +153 -0
- package/dist/web-component-dsl.d.cts +27 -0
- package/dist/web-component-dsl.d.cts.map +1 -0
- package/dist/web-component-dsl.d.mts +27 -0
- package/dist/web-component-dsl.d.mts.map +1 -0
- package/dist/web-component-dsl.mjs +152 -0
- package/dist/web-component-dsl.mjs.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
//#region src/blocklet/registry.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Blocklet Registry — portable, runtime-agnostic discovery and reading.
|
|
4
|
+
*
|
|
5
|
+
* The registry unifies how Node and Cloudflare Worker runtimes discover and
|
|
6
|
+
* read blocklets. Same detector logic runs against both filesystem-backed
|
|
7
|
+
* readers (Node) and static-map-backed readers (CF bundle).
|
|
8
|
+
*
|
|
9
|
+
* Zero platform imports: everything here works unchanged in Node, Bun, Deno,
|
|
10
|
+
* browsers, and Cloudflare Workers.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Read-only view of a single blocklet's files.
|
|
14
|
+
*
|
|
15
|
+
* Paths are relative to the blocklet root (e.g. "index.html", ".aup/app.json").
|
|
16
|
+
* Implementations should normalize leading slashes and `./` prefixes.
|
|
17
|
+
*/
|
|
18
|
+
interface BlockletReader {
|
|
19
|
+
/** Return true if a file exists at the given relative path. */
|
|
20
|
+
exists(relPath: string): Promise<boolean>;
|
|
21
|
+
/** Read file contents as UTF-8 text, or undefined if missing. */
|
|
22
|
+
readText(relPath: string): Promise<string | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Read file contents as raw bytes, or undefined if missing. Required for
|
|
25
|
+
* binary assets (png / ico / jpg) — using `readText` for those bytes
|
|
26
|
+
* round-trips through UTF-8 and corrupts the file.
|
|
27
|
+
*/
|
|
28
|
+
readBytes(relPath: string): Promise<Uint8Array | undefined>;
|
|
29
|
+
/** Return true if any file exists under the given directory path. */
|
|
30
|
+
hasDir(relDir: string): Promise<boolean>;
|
|
31
|
+
/** List relative paths of files directly under `relDir` (non-recursive). */
|
|
32
|
+
listDir(relDir: string): Promise<string[]>;
|
|
33
|
+
/**
|
|
34
|
+
* List entries directly under `relDir` with each one's name + dir/file kind,
|
|
35
|
+
* in ONE backend round-trip. Optional: when present, `detectBlockletPattern`
|
|
36
|
+
* probes blocklet.yaml / .aup / index.* from a single `list` instead of 3-4
|
|
37
|
+
* sequential `exists`/`hasDir` stats — the dominant cold-start cost on CF
|
|
38
|
+
* DID-Space (issue #808: `resolve.pattern` ~665ms → ~150ms). Readers whose
|
|
39
|
+
* per-entry stat is already cheap (fs, in-memory map) may omit it;
|
|
40
|
+
* `detectBlockletPattern` falls back to the sequential probes.
|
|
41
|
+
*/
|
|
42
|
+
listEntries?(relDir: string): Promise<Array<{
|
|
43
|
+
name: string;
|
|
44
|
+
isDir: boolean;
|
|
45
|
+
}>>;
|
|
46
|
+
}
|
|
47
|
+
/** Normalize a relative path: strip leading `/` and `./`, collapse `//`. */
|
|
48
|
+
declare function normalizeRel(p: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Create a reader backed by an in-memory map of relative paths → file content.
|
|
51
|
+
*/
|
|
52
|
+
declare function createMapBlockletReader(files: Record<string, string>): BlockletReader;
|
|
53
|
+
type BlockletPatternKind = /** Directory has an explicit blocklet.yaml — use it as the source of truth. */"manifest" /** Zero-config Pattern A — directory has a .aup/ subdirectory. */ | "zero-aup" /** Zero-config Pattern S — directory has index.html at root. */ | "zero-web" /** Zero-config Pattern B — directory has index.txt / index.md / index.ans at root. */ | "zero-terminal";
|
|
54
|
+
interface BlockletPattern {
|
|
55
|
+
kind: BlockletPatternKind;
|
|
56
|
+
/** For Pattern B — which index file was found. */
|
|
57
|
+
terminalIndexFile?: string;
|
|
58
|
+
/** For Pattern B — MIME type of the index file. */
|
|
59
|
+
terminalIndexContentType?: string;
|
|
60
|
+
}
|
|
61
|
+
/** Terminal entry filename + MIME type recognised by Pattern B zero-config. */
|
|
62
|
+
declare const TERMINAL_INDEX_FILES: ReadonlyArray<{
|
|
63
|
+
file: string;
|
|
64
|
+
contentType: string;
|
|
65
|
+
}>;
|
|
66
|
+
/**
|
|
67
|
+
* Inspect a blocklet reader and return its pattern.
|
|
68
|
+
*
|
|
69
|
+
* Precedence (same as the fs-based version):
|
|
70
|
+
* 1. blocklet.yaml → "manifest"
|
|
71
|
+
* 2. .aup/ → "zero-aup"
|
|
72
|
+
* 3. index.html → "zero-web"
|
|
73
|
+
* 4. index.{txt,md,ans} → "zero-terminal"
|
|
74
|
+
* 5. otherwise → null
|
|
75
|
+
*/
|
|
76
|
+
declare function detectBlockletPattern(reader: BlockletReader): Promise<BlockletPattern | null>;
|
|
77
|
+
/**
|
|
78
|
+
* Registry of available blocklets. Runtime-specific implementations:
|
|
79
|
+
* - Node: scans a filesystem directory (see runtimes/node/.../fs-blocklet-registry.ts)
|
|
80
|
+
* - CF Worker: reads from a bundled static map (createStaticBlockletRegistry)
|
|
81
|
+
* - Future: resolves via DID document
|
|
82
|
+
*/
|
|
83
|
+
interface BlockletRegistry {
|
|
84
|
+
/** Source label for logging ("local", "embedded", "remote"). */
|
|
85
|
+
readonly source: "local" | "embedded" | "remote";
|
|
86
|
+
/** List all known blocklet names. */
|
|
87
|
+
list(): Promise<string[]>;
|
|
88
|
+
/** Return the canonical blocklet name for a lookup key or alias, if found. */
|
|
89
|
+
resolveName?(name: string): Promise<string | null>;
|
|
90
|
+
/** Return a reader for the named blocklet, or null if not found. */
|
|
91
|
+
reader(name: string): Promise<BlockletReader | null>;
|
|
92
|
+
/**
|
|
93
|
+
* Resolve the raw `(afs, rootPath)` pair backing this blocklet, for
|
|
94
|
+
* consumers that need list/read/stat against a stable AFS path rather than
|
|
95
|
+
* the narrower `BlockletReader` surface (e.g. the Web Device SiteServer,
|
|
96
|
+
* which walks its own sub-paths directly). Optional — registries backed by
|
|
97
|
+
* a non-path-addressable store (e.g. an embedded static map) omit it.
|
|
98
|
+
* Returns null when the blocklet is unknown or has no raw AFS root.
|
|
99
|
+
*/
|
|
100
|
+
afsRoot?(name: string): Promise<{
|
|
101
|
+
afs: BlockletAfsReader;
|
|
102
|
+
rootPath: string;
|
|
103
|
+
} | null>;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Create a registry backed by a static `{ name → { relPath → content } }` map.
|
|
107
|
+
* Used by CF Worker to serve blocklets embedded at build time.
|
|
108
|
+
*/
|
|
109
|
+
declare function createStaticBlockletRegistry(blocklets: Record<string, Record<string, string>>): BlockletRegistry;
|
|
110
|
+
/**
|
|
111
|
+
* Minimal AFS surface this module needs. Typed loosely to avoid dragging the
|
|
112
|
+
* full `@aigne/afs` AFS type into aos's public surface — only `read`, `list`,
|
|
113
|
+
* and `stat` are consumed, and only their happy-path shape.
|
|
114
|
+
*/
|
|
115
|
+
/**
|
|
116
|
+
* Read options forwarded to the underlying AFS. Only the fields the blocklet
|
|
117
|
+
* serve path needs are surfaced here — chiefly `includeActions:"none"`, which
|
|
118
|
+
* skips the per-read semantic-action probe (`list <path>/.actions`) that pure
|
|
119
|
+
* byte-serving reads never use (issue #808). Simple readers that don't wrap a
|
|
120
|
+
* real AFS ignore it (they have no actions anyway).
|
|
121
|
+
*/
|
|
122
|
+
interface BlockletAfsReadOptions {
|
|
123
|
+
includeActions?: "none" | "refs" | "schemas";
|
|
124
|
+
/**
|
|
125
|
+
* For `stat` only: skip the `read()` fallback when the provider's stat handler
|
|
126
|
+
* reports the path absent (issue #808). The bundle-cid probe sets it — a stat
|
|
127
|
+
* miss means "no bundle", so the read fallback would only miss again. Mirrors
|
|
128
|
+
* {@link AFSStatOptions.noReadFallback}; a real AFS forwards it, simple readers
|
|
129
|
+
* ignore it.
|
|
130
|
+
*/
|
|
131
|
+
noReadFallback?: boolean;
|
|
132
|
+
}
|
|
133
|
+
interface BlockletAfsReader {
|
|
134
|
+
read(path: string, options?: BlockletAfsReadOptions): Promise<{
|
|
135
|
+
data?: {
|
|
136
|
+
content?: unknown;
|
|
137
|
+
} | null | undefined;
|
|
138
|
+
} | null | undefined>;
|
|
139
|
+
list(path: string): Promise<{
|
|
140
|
+
data?: ReadonlyArray<{
|
|
141
|
+
path: string;
|
|
142
|
+
meta?: {
|
|
143
|
+
kind?: string;
|
|
144
|
+
childrenCount?: number;
|
|
145
|
+
} | null | undefined;
|
|
146
|
+
}> | null | undefined;
|
|
147
|
+
}>;
|
|
148
|
+
stat(path: string, options?: BlockletAfsReadOptions): Promise<{
|
|
149
|
+
data?: {
|
|
150
|
+
meta?: {
|
|
151
|
+
kind?: string;
|
|
152
|
+
childrenCount?: number;
|
|
153
|
+
} | null | undefined;
|
|
154
|
+
} | null | undefined;
|
|
155
|
+
} | null>;
|
|
156
|
+
/**
|
|
157
|
+
* Optional batch read — fetch many file paths in one shot (issue #808
|
|
158
|
+
* follow-up). A real AFS pushes this to the DID-Space provider's `getMany`
|
|
159
|
+
* (one `IN(…)` D1 query, inline content → zero R2). `ReadonlyMap` (not `Map`)
|
|
160
|
+
* so a concrete `Map<string, AFSEntry | null>` stays assignable here despite
|
|
161
|
+
* `Map`'s invariance. Absent → callers fall back to per-path `read`.
|
|
162
|
+
*/
|
|
163
|
+
readMany?(paths: string[]): Promise<ReadonlyMap<string, {
|
|
164
|
+
content?: unknown;
|
|
165
|
+
} | null>>;
|
|
166
|
+
}
|
|
167
|
+
/** Create a BlockletReader that serves one blocklet rooted at `blockletRoot` in AFS. */
|
|
168
|
+
declare function createAfsBlockletReader(afs: BlockletAfsReader, blockletRoot: string): BlockletReader;
|
|
169
|
+
/** Options for `createAfsBlockletRegistry`. */
|
|
170
|
+
interface AfsBlockletRegistryOptions {
|
|
171
|
+
afs: BlockletAfsReader;
|
|
172
|
+
/** AFS paths to search for blocklet directories, e.g. `["/blocklets"]`. */
|
|
173
|
+
searchPaths: string[];
|
|
174
|
+
/** Source label (default `"local"`). */
|
|
175
|
+
source?: BlockletRegistry["source"];
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Create a registry that discovers blocklets under one or more AFS paths.
|
|
179
|
+
*
|
|
180
|
+
* Each search path is listed; every immediate child directory is treated as a
|
|
181
|
+
* candidate blocklet and probed via `detectBlockletPattern`. First match wins
|
|
182
|
+
* when the same blocklet name appears in multiple search paths.
|
|
183
|
+
*/
|
|
184
|
+
declare function createAfsBlockletRegistry(opts: AfsBlockletRegistryOptions): BlockletRegistry;
|
|
185
|
+
interface BlockletPatternCache {
|
|
186
|
+
resolve(name: string): Promise<BlockletPattern | null>;
|
|
187
|
+
resolveName(name: string): Promise<string | null>;
|
|
188
|
+
readerFor(name: string): Promise<BlockletReader | null>;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* `null` as a tombstone for "name is known but has no valid pattern" keeps
|
|
192
|
+
* repeated negative lookups cheap.
|
|
193
|
+
*/
|
|
194
|
+
declare function createPatternCache(registry: BlockletRegistry): BlockletPatternCache;
|
|
195
|
+
//#endregion
|
|
196
|
+
export { AfsBlockletRegistryOptions, BlockletAfsReader, BlockletPattern, BlockletPatternCache, BlockletPatternKind, BlockletReader, BlockletRegistry, TERMINAL_INDEX_FILES, createAfsBlockletReader, createAfsBlockletRegistry, createMapBlockletReader, createPatternCache, createStaticBlockletRegistry, detectBlockletPattern, normalizeRel };
|
|
197
|
+
//# sourceMappingURL=registry.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.mts","names":[],"sources":["../../src/blocklet/registry.ts"],"mappings":";;AA+BA;;;;;;;;;;;;;;;UAAiB,cAAA;EAIf;EAFA,MAAA,CAAO,OAAA,WAAkB,OAAA;EAEE;EAA3B,QAAA,CAAS,OAAA,WAAkB,OAAA;EAMjB;;;;;EAAV,SAAA,CAAU,OAAA,WAAkB,OAAA,CAAQ,UAAA;EAIpC;EAFA,MAAA,CAAO,MAAA,WAAiB,OAAA;EAEC;EAAzB,OAAA,CAAQ,MAAA,WAAiB,OAAA;EAUZ;;;;;;;AAIf;;EAJE,WAAA,EAAa,MAAA,WAAiB,OAAA,CAAQ,KAAA;IAAQ,IAAA;IAAc,KAAA;EAAA;AAAA;;iBAI9C,YAAA,CAAa,CAAA;;;;iBASb,uBAAA,CAAwB,KAAA,EAAO,MAAA,mBAAyB,cAAA;AAAA,KAyD5D,mBAAA,GAAZ;UAUiB,eAAA;EACf,IAAA,EAAM,mBAAA;EAAA;EAEN,iBAAA;EAEA;EAAA,wBAAA;AAAA;AAIF;AAAA,cAAa,oBAAA,EAAsB,aAAA;EAAgB,IAAA;EAAc,WAAA;AAAA;;;;;AAgBjE;;;;;;iBAAsB,qBAAA,CACpB,MAAA,EAAQ,cAAA,GACP,OAAA,CAAQ,eAAA;;;;;;;UAuDM,gBAAA;EAAA;EAAA,SAEN,MAAA;;EAET,IAAA,IAAQ,OAAA;EAEoB;EAA5B,WAAA,EAAa,IAAA,WAAe,OAAA;EAEN;EAAtB,MAAA,CAAO,IAAA,WAAe,OAAA,CAAQ,cAAA;EASN;;;;;;;;EAAxB,OAAA,EAAS,IAAA,WAAe,OAAA;IAAU,GAAA,EAAK,iBAAA;IAAmB,QAAA;EAAA;AAAA;;;;;iBAO5C,4BAAA,CACd,SAAA,EAAW,MAAA,SAAe,MAAA,oBACzB,gBAAA;;;;AAFH;;;;;;;;;UAuCiB,sBAAA;EACf,cAAA;EAtCC;;;AAqCH;;;;EASE,cAAA;AAAA;AAAA,UAGe,iBAAA;EACf,IAAA,CACE,IAAA,UACA,OAAA,GAAU,sBAAA,GACT,OAAA;IAAU,IAAA;MAAS,OAAA;IAAA;EAAA;EAKtB,IAAA,CAAK,IAAA,WAAe,OAAA;IAClB,IAAA,GACI,aAAA;MACE,IAAA;MACA,IAAA;QAAS,IAAA;QAAe,aAAA;MAAA;IAAA;EAAA;EAKhC,IAAA,CACE,IAAA,UACA,OAAA,GAAU,sBAAA,GACT,OAAA;IACD,IAAA;MACM,IAAA;QAAS,IAAA;QAAe,aAAA;MAAA;IAAA;EAAA;EAZ1B;;;;;;;EAuBN,QAAA,EAAU,KAAA,aAAkB,OAAA,CAAQ,WAAA;IAAsB,OAAA;EAAA;AAAA;;iBAmB5C,uBAAA,CACd,GAAA,EAAK,iBAAA,EACL,YAAA,WACC,cAAA;;UAsFc,0BAAA;EACf,GAAA,EAAK,iBAAA;EA7GuB;EA+G5B,WAAA;EA/G0D;EAiH1D,MAAA,GAAS,gBAAA;AAAA;AA9FX;;;;;;;AAAA,iBAwGgB,yBAAA,CAA0B,IAAA,EAAM,0BAAA,GAA6B,gBAAA;AAAA,UAwN5D,oBAAA;EACf,OAAA,CAAQ,IAAA,WAAe,OAAA,CAAQ,eAAA;EAC/B,WAAA,CAAY,IAAA,WAAe,OAAA;EAC3B,SAAA,CAAU,IAAA,WAAe,OAAA,CAAQ,cAAA;AAAA;;;;;iBAOnB,kBAAA,CAAmB,QAAA,EAAU,gBAAA,GAAmB,oBAAA"}
|
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { joinURL } from "ufo";
|
|
2
|
+
import { makeNsLog } from "@aigne/afs";
|
|
3
|
+
import { time } from "@aigne/afs-timing";
|
|
4
|
+
|
|
5
|
+
//#region src/blocklet/registry.ts
|
|
6
|
+
/**
|
|
7
|
+
* Blocklet Registry — portable, runtime-agnostic discovery and reading.
|
|
8
|
+
*
|
|
9
|
+
* The registry unifies how Node and Cloudflare Worker runtimes discover and
|
|
10
|
+
* read blocklets. Same detector logic runs against both filesystem-backed
|
|
11
|
+
* readers (Node) and static-map-backed readers (CF bundle).
|
|
12
|
+
*
|
|
13
|
+
* Zero platform imports: everything here works unchanged in Node, Bun, Deno,
|
|
14
|
+
* browsers, and Cloudflare Workers.
|
|
15
|
+
*/
|
|
16
|
+
const log = makeNsLog("aos");
|
|
17
|
+
const UTF8_DECODER = new TextDecoder("utf-8");
|
|
18
|
+
const UTF8_ENCODER = new TextEncoder();
|
|
19
|
+
const ALIASES_PATH = ".afs/aliases.json";
|
|
20
|
+
/** Normalize a relative path: strip leading `/` and `./`, collapse `//`. */
|
|
21
|
+
function normalizeRel(p) {
|
|
22
|
+
let s = p.replace(/^\.\//, "").replace(/^\/+/, "").replace(/\/+/g, "/");
|
|
23
|
+
if (s.endsWith("/")) s = s.slice(0, -1);
|
|
24
|
+
return s;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a reader backed by an in-memory map of relative paths → file content.
|
|
28
|
+
*/
|
|
29
|
+
function createMapBlockletReader(files) {
|
|
30
|
+
const normalized = {};
|
|
31
|
+
for (const [k, v] of Object.entries(files)) normalized[normalizeRel(k)] = v;
|
|
32
|
+
const keys = Object.keys(normalized);
|
|
33
|
+
return {
|
|
34
|
+
async exists(relPath) {
|
|
35
|
+
return Object.hasOwn(normalized, normalizeRel(relPath));
|
|
36
|
+
},
|
|
37
|
+
async readText(relPath) {
|
|
38
|
+
return normalized[normalizeRel(relPath)];
|
|
39
|
+
},
|
|
40
|
+
async readBytes(relPath) {
|
|
41
|
+
const text = normalized[normalizeRel(relPath)];
|
|
42
|
+
return text === void 0 ? void 0 : UTF8_ENCODER.encode(text);
|
|
43
|
+
},
|
|
44
|
+
async hasDir(relDir) {
|
|
45
|
+
const prefix = `${normalizeRel(relDir)}/`;
|
|
46
|
+
return keys.some((k) => k.startsWith(prefix));
|
|
47
|
+
},
|
|
48
|
+
async listDir(relDir) {
|
|
49
|
+
const prefix = normalizeRel(relDir) === "" ? "" : `${normalizeRel(relDir)}/`;
|
|
50
|
+
const seen = /* @__PURE__ */ new Set();
|
|
51
|
+
for (const k of keys) {
|
|
52
|
+
if (!k.startsWith(prefix)) continue;
|
|
53
|
+
const rest = k.slice(prefix.length);
|
|
54
|
+
const firstSlash = rest.indexOf("/");
|
|
55
|
+
seen.add(firstSlash < 0 ? rest : rest.slice(0, firstSlash));
|
|
56
|
+
}
|
|
57
|
+
return [...seen];
|
|
58
|
+
},
|
|
59
|
+
async listEntries(relDir) {
|
|
60
|
+
const prefix = normalizeRel(relDir) === "" ? "" : `${normalizeRel(relDir)}/`;
|
|
61
|
+
const seen = /* @__PURE__ */ new Map();
|
|
62
|
+
for (const k of keys) {
|
|
63
|
+
if (!k.startsWith(prefix)) continue;
|
|
64
|
+
const rest = k.slice(prefix.length);
|
|
65
|
+
const firstSlash = rest.indexOf("/");
|
|
66
|
+
const name = firstSlash < 0 ? rest : rest.slice(0, firstSlash);
|
|
67
|
+
if (name === "") continue;
|
|
68
|
+
const isDir = firstSlash >= 0;
|
|
69
|
+
if (isDir || !seen.has(name)) seen.set(name, isDir);
|
|
70
|
+
}
|
|
71
|
+
return [...seen].map(([name, isDir]) => ({
|
|
72
|
+
name,
|
|
73
|
+
isDir
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** Terminal entry filename + MIME type recognised by Pattern B zero-config. */
|
|
79
|
+
const TERMINAL_INDEX_FILES = [
|
|
80
|
+
{
|
|
81
|
+
file: "index.txt",
|
|
82
|
+
contentType: "text/plain; charset=utf-8"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
file: "index.md",
|
|
86
|
+
contentType: "text/markdown; charset=utf-8"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
file: "index.ans",
|
|
90
|
+
contentType: "text/plain; charset=utf-8"
|
|
91
|
+
}
|
|
92
|
+
];
|
|
93
|
+
/**
|
|
94
|
+
* Inspect a blocklet reader and return its pattern.
|
|
95
|
+
*
|
|
96
|
+
* Precedence (same as the fs-based version):
|
|
97
|
+
* 1. blocklet.yaml → "manifest"
|
|
98
|
+
* 2. .aup/ → "zero-aup"
|
|
99
|
+
* 3. index.html → "zero-web"
|
|
100
|
+
* 4. index.{txt,md,ans} → "zero-terminal"
|
|
101
|
+
* 5. otherwise → null
|
|
102
|
+
*/
|
|
103
|
+
async function detectBlockletPattern(reader) {
|
|
104
|
+
if (reader.listEntries) {
|
|
105
|
+
const entries = await time("resolve.pattern.list", () => reader.listEntries(""));
|
|
106
|
+
const isFile = (name) => entries.some((e) => e.name === name && !e.isDir);
|
|
107
|
+
if (isFile("blocklet.yaml")) return { kind: "manifest" };
|
|
108
|
+
if (entries.some((e) => e.name === ".aup" && e.isDir)) return { kind: "zero-aup" };
|
|
109
|
+
if (isFile("index.html")) return { kind: "zero-web" };
|
|
110
|
+
for (const { file, contentType } of TERMINAL_INDEX_FILES) if (isFile(file)) return {
|
|
111
|
+
kind: "zero-terminal",
|
|
112
|
+
terminalIndexFile: file,
|
|
113
|
+
terminalIndexContentType: contentType
|
|
114
|
+
};
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
if (await reader.exists("blocklet.yaml")) return { kind: "manifest" };
|
|
118
|
+
if (await reader.hasDir(".aup")) return { kind: "zero-aup" };
|
|
119
|
+
if (await reader.exists("index.html")) return { kind: "zero-web" };
|
|
120
|
+
for (const { file, contentType } of TERMINAL_INDEX_FILES) if (await reader.exists(file)) return {
|
|
121
|
+
kind: "zero-terminal",
|
|
122
|
+
terminalIndexFile: file,
|
|
123
|
+
terminalIndexContentType: contentType
|
|
124
|
+
};
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Create a registry backed by a static `{ name → { relPath → content } }` map.
|
|
129
|
+
* Used by CF Worker to serve blocklets embedded at build time.
|
|
130
|
+
*/
|
|
131
|
+
function createStaticBlockletRegistry(blocklets) {
|
|
132
|
+
const readers = /* @__PURE__ */ new Map();
|
|
133
|
+
for (const [name, files] of Object.entries(blocklets)) readers.set(name, createMapBlockletReader(files));
|
|
134
|
+
return {
|
|
135
|
+
source: "embedded",
|
|
136
|
+
async list() {
|
|
137
|
+
return [...readers.keys()];
|
|
138
|
+
},
|
|
139
|
+
async resolveName(name) {
|
|
140
|
+
return readers.has(name) ? name : null;
|
|
141
|
+
},
|
|
142
|
+
async reader(name) {
|
|
143
|
+
return readers.get(name) ?? null;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Directories in AFS always carry `childrenCount` in their meta. Leaves (files,
|
|
149
|
+
* actions) do not. This matches the predicate used by `convention-scanner` in
|
|
150
|
+
* @aigne/afs. Avoids stringly-typed kind matching that would drift as providers
|
|
151
|
+
* add new kinds.
|
|
152
|
+
*/
|
|
153
|
+
function isDirEntry(meta) {
|
|
154
|
+
return meta?.childrenCount !== void 0 && meta.childrenCount !== null;
|
|
155
|
+
}
|
|
156
|
+
function lastSegment(p) {
|
|
157
|
+
const i = p.lastIndexOf("/");
|
|
158
|
+
return i < 0 ? p : p.slice(i + 1);
|
|
159
|
+
}
|
|
160
|
+
/** Create a BlockletReader that serves one blocklet rooted at `blockletRoot` in AFS. */
|
|
161
|
+
function createAfsBlockletReader(afs, blockletRoot) {
|
|
162
|
+
const NO_ACTIONS = { includeActions: "none" };
|
|
163
|
+
return {
|
|
164
|
+
async exists(relPath) {
|
|
165
|
+
const p = joinURL(blockletRoot, normalizeRel(relPath));
|
|
166
|
+
try {
|
|
167
|
+
const meta = (await afs.stat(p, NO_ACTIONS))?.data?.meta;
|
|
168
|
+
if (!meta) return false;
|
|
169
|
+
return !isDirEntry(meta);
|
|
170
|
+
} catch {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
async readText(relPath) {
|
|
175
|
+
const p = joinURL(blockletRoot, normalizeRel(relPath));
|
|
176
|
+
try {
|
|
177
|
+
const content = (await afs.read(p, NO_ACTIONS))?.data?.content;
|
|
178
|
+
if (typeof content === "string") return content;
|
|
179
|
+
if (content instanceof Uint8Array) return UTF8_DECODER.decode(content);
|
|
180
|
+
if (content instanceof ArrayBuffer) return UTF8_DECODER.decode(new Uint8Array(content));
|
|
181
|
+
return;
|
|
182
|
+
} catch {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
async readBytes(relPath) {
|
|
187
|
+
const p = joinURL(blockletRoot, normalizeRel(relPath));
|
|
188
|
+
try {
|
|
189
|
+
const content = (await afs.read(p, NO_ACTIONS))?.data?.content;
|
|
190
|
+
if (content instanceof Uint8Array) return content;
|
|
191
|
+
if (content instanceof ArrayBuffer) return new Uint8Array(content);
|
|
192
|
+
if (typeof content === "string") return UTF8_ENCODER.encode(content);
|
|
193
|
+
return;
|
|
194
|
+
} catch {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
async hasDir(relDir) {
|
|
199
|
+
const p = joinURL(blockletRoot, normalizeRel(relDir));
|
|
200
|
+
try {
|
|
201
|
+
return isDirEntry((await afs.stat(p, NO_ACTIONS))?.data?.meta);
|
|
202
|
+
} catch {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
async listDir(relDir) {
|
|
207
|
+
const p = joinURL(blockletRoot, normalizeRel(relDir));
|
|
208
|
+
try {
|
|
209
|
+
return ((await afs.list(p))?.data ?? []).map((e) => lastSegment(e.path));
|
|
210
|
+
} catch {
|
|
211
|
+
return [];
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
async listEntries(relDir) {
|
|
215
|
+
const p = joinURL(blockletRoot, normalizeRel(relDir));
|
|
216
|
+
try {
|
|
217
|
+
return ((await afs.list(p))?.data ?? []).map((e) => ({
|
|
218
|
+
name: lastSegment(e.path),
|
|
219
|
+
isDir: isDirEntry(e.meta)
|
|
220
|
+
}));
|
|
221
|
+
} catch {
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Create a registry that discovers blocklets under one or more AFS paths.
|
|
229
|
+
*
|
|
230
|
+
* Each search path is listed; every immediate child directory is treated as a
|
|
231
|
+
* candidate blocklet and probed via `detectBlockletPattern`. First match wins
|
|
232
|
+
* when the same blocklet name appears in multiple search paths.
|
|
233
|
+
*/
|
|
234
|
+
function createAfsBlockletRegistry(opts) {
|
|
235
|
+
const { afs, searchPaths, source = "local" } = opts;
|
|
236
|
+
const readerCache = /* @__PURE__ */ new Map();
|
|
237
|
+
const dirCache = /* @__PURE__ */ new Map();
|
|
238
|
+
const canonicalNameCache = /* @__PURE__ */ new Map();
|
|
239
|
+
const aliasCache = /* @__PURE__ */ new Map();
|
|
240
|
+
const aliasesLoaded = /* @__PURE__ */ new Set();
|
|
241
|
+
const aliasLoadPromises = /* @__PURE__ */ new Map();
|
|
242
|
+
let listPromise;
|
|
243
|
+
function isSafeRegistryName(value) {
|
|
244
|
+
return value.length > 0 && value.length <= 253 && !value.includes("/") && !value.includes("\\") && !value.includes("..") && !value.includes("@");
|
|
245
|
+
}
|
|
246
|
+
function isNotFoundError(err) {
|
|
247
|
+
if (!err || typeof err !== "object") return false;
|
|
248
|
+
const maybe = err;
|
|
249
|
+
if (maybe.name === "AFSNotFoundError" || maybe.code === "AFS_NOT_FOUND") return true;
|
|
250
|
+
return typeof maybe.message === "string" && /not found/i.test(maybe.message);
|
|
251
|
+
}
|
|
252
|
+
async function loadAliases(base) {
|
|
253
|
+
if (aliasesLoaded.has(base)) return;
|
|
254
|
+
const existing = aliasLoadPromises.get(base);
|
|
255
|
+
if (existing) return existing;
|
|
256
|
+
let cacheableResult = false;
|
|
257
|
+
const promise = (async () => {
|
|
258
|
+
try {
|
|
259
|
+
const res = await afs.read(joinURL(base, ALIASES_PATH));
|
|
260
|
+
cacheableResult = true;
|
|
261
|
+
const raw = decodeAfsContent(res?.data);
|
|
262
|
+
if (!raw) return;
|
|
263
|
+
const parsed = JSON.parse(raw);
|
|
264
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return;
|
|
265
|
+
for (const [alias, target] of Object.entries(parsed)) {
|
|
266
|
+
if (typeof target !== "string") continue;
|
|
267
|
+
const key = alias.trim().toLowerCase();
|
|
268
|
+
const value = target.trim();
|
|
269
|
+
if (!isSafeRegistryName(key) || !isSafeRegistryName(value)) continue;
|
|
270
|
+
aliasCache.set(key, value);
|
|
271
|
+
}
|
|
272
|
+
} catch (err) {
|
|
273
|
+
cacheableResult = cacheableResult || isNotFoundError(err);
|
|
274
|
+
} finally {
|
|
275
|
+
if (cacheableResult) aliasesLoaded.add(base);
|
|
276
|
+
aliasLoadPromises.delete(base);
|
|
277
|
+
}
|
|
278
|
+
})();
|
|
279
|
+
aliasLoadPromises.set(base, promise);
|
|
280
|
+
return promise;
|
|
281
|
+
}
|
|
282
|
+
async function resolveAlias(name) {
|
|
283
|
+
const key = name.trim().toLowerCase();
|
|
284
|
+
const cached = aliasCache.get(key);
|
|
285
|
+
if (cached !== void 0) return cached;
|
|
286
|
+
for (const base of searchPaths) {
|
|
287
|
+
await loadAliases(base);
|
|
288
|
+
const target = aliasCache.get(key);
|
|
289
|
+
if (target !== void 0) return target;
|
|
290
|
+
}
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
async function resolveLocation(name) {
|
|
294
|
+
const cached = dirCache.get(name);
|
|
295
|
+
const cachedName = canonicalNameCache.get(name);
|
|
296
|
+
if (cached !== void 0 && cachedName !== void 0) return {
|
|
297
|
+
canonicalName: cachedName,
|
|
298
|
+
dir: cached
|
|
299
|
+
};
|
|
300
|
+
const directProbe = resolveDirectDir(name);
|
|
301
|
+
const aliasTarget = await resolveAlias(name);
|
|
302
|
+
if (aliasTarget && aliasTarget !== name) {
|
|
303
|
+
const aliasDir = await resolveDirectDir(aliasTarget);
|
|
304
|
+
if (aliasDir) {
|
|
305
|
+
dirCache.set(name, aliasDir);
|
|
306
|
+
canonicalNameCache.set(name, aliasTarget);
|
|
307
|
+
dirCache.set(aliasTarget, aliasDir);
|
|
308
|
+
canonicalNameCache.set(aliasTarget, aliasTarget);
|
|
309
|
+
return {
|
|
310
|
+
canonicalName: aliasTarget,
|
|
311
|
+
dir: aliasDir
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
const directDir = await directProbe;
|
|
316
|
+
if (directDir) {
|
|
317
|
+
dirCache.set(name, directDir);
|
|
318
|
+
canonicalNameCache.set(name, name);
|
|
319
|
+
return {
|
|
320
|
+
canonicalName: name,
|
|
321
|
+
dir: directDir
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
326
|
+
async function resolveDir(name) {
|
|
327
|
+
return (await resolveLocation(name))?.dir ?? null;
|
|
328
|
+
}
|
|
329
|
+
function decodeAfsContent(raw) {
|
|
330
|
+
const content = raw?.content;
|
|
331
|
+
if (typeof content === "string") return content;
|
|
332
|
+
if (content instanceof Uint8Array) return UTF8_DECODER.decode(content);
|
|
333
|
+
if (content instanceof ArrayBuffer) return UTF8_DECODER.decode(new Uint8Array(content));
|
|
334
|
+
return "";
|
|
335
|
+
}
|
|
336
|
+
async function resolveDirectDir(name) {
|
|
337
|
+
for (const base of searchPaths) {
|
|
338
|
+
const full = joinURL(base, name);
|
|
339
|
+
try {
|
|
340
|
+
if (isDirEntry((await afs.stat(full))?.data?.meta)) return full;
|
|
341
|
+
} catch {}
|
|
342
|
+
}
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
async function computeList() {
|
|
346
|
+
const found = /* @__PURE__ */ new Set();
|
|
347
|
+
for (const base of searchPaths) {
|
|
348
|
+
let entries = [];
|
|
349
|
+
try {
|
|
350
|
+
entries = (await afs.list(base))?.data ?? [];
|
|
351
|
+
} catch (err) {
|
|
352
|
+
log.warn(`[aos] blocklet-registry: list("${base}") failed:`, err);
|
|
353
|
+
continue;
|
|
354
|
+
}
|
|
355
|
+
const checks = await Promise.all(entries.map(async (e) => {
|
|
356
|
+
if (!isDirEntry(e.meta)) return null;
|
|
357
|
+
const name = lastSegment(e.path);
|
|
358
|
+
if (found.has(name)) return null;
|
|
359
|
+
return await detectBlockletPattern(createAfsBlockletReader(afs, joinURL(base, name))) ? name : null;
|
|
360
|
+
}));
|
|
361
|
+
for (const n of checks) if (n) found.add(n);
|
|
362
|
+
await loadAliases(base);
|
|
363
|
+
for (const [alias, target] of aliasCache) {
|
|
364
|
+
if (found.has(alias)) continue;
|
|
365
|
+
const targetDir = await resolveDirectDir(target);
|
|
366
|
+
if (!targetDir) continue;
|
|
367
|
+
if (await detectBlockletPattern(createAfsBlockletReader(afs, targetDir))) found.add(alias);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
return [...found];
|
|
371
|
+
}
|
|
372
|
+
return {
|
|
373
|
+
source,
|
|
374
|
+
async list() {
|
|
375
|
+
if (!listPromise) {
|
|
376
|
+
listPromise = computeList();
|
|
377
|
+
listPromise.catch(() => {
|
|
378
|
+
listPromise = void 0;
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
return listPromise;
|
|
382
|
+
},
|
|
383
|
+
async resolveName(name) {
|
|
384
|
+
return (await resolveLocation(name))?.canonicalName ?? null;
|
|
385
|
+
},
|
|
386
|
+
async reader(name) {
|
|
387
|
+
if (readerCache.has(name)) return readerCache.get(name) ?? null;
|
|
388
|
+
const dir = await resolveDir(name);
|
|
389
|
+
if (!dir) return null;
|
|
390
|
+
const reader = createAfsBlockletReader(afs, dir);
|
|
391
|
+
readerCache.set(name, reader);
|
|
392
|
+
return reader;
|
|
393
|
+
},
|
|
394
|
+
async afsRoot(name) {
|
|
395
|
+
const dir = await resolveDir(name);
|
|
396
|
+
if (!dir) return null;
|
|
397
|
+
return {
|
|
398
|
+
afs,
|
|
399
|
+
rootPath: dir
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* `null` as a tombstone for "name is known but has no valid pattern" keeps
|
|
406
|
+
* repeated negative lookups cheap.
|
|
407
|
+
*/
|
|
408
|
+
function createPatternCache(registry) {
|
|
409
|
+
const patterns = /* @__PURE__ */ new Map();
|
|
410
|
+
const readers = /* @__PURE__ */ new Map();
|
|
411
|
+
async function readerFor(name) {
|
|
412
|
+
const cached = readers.get(name);
|
|
413
|
+
if (cached !== void 0) return cached;
|
|
414
|
+
const r = await registry.reader(name);
|
|
415
|
+
if (r) readers.set(name, r);
|
|
416
|
+
return r;
|
|
417
|
+
}
|
|
418
|
+
async function resolve(name) {
|
|
419
|
+
const cached = patterns.get(name);
|
|
420
|
+
if (cached !== void 0) return cached;
|
|
421
|
+
const reader = await readerFor(name);
|
|
422
|
+
if (!reader) return null;
|
|
423
|
+
const pattern = await time("resolve.pattern", () => detectBlockletPattern(reader));
|
|
424
|
+
if (pattern) patterns.set(name, pattern);
|
|
425
|
+
return pattern;
|
|
426
|
+
}
|
|
427
|
+
async function resolveName(name) {
|
|
428
|
+
const lookupName = (registry.resolveName ? await registry.resolveName(name) : null) ?? name;
|
|
429
|
+
if (!await resolve(lookupName)) return null;
|
|
430
|
+
return lookupName;
|
|
431
|
+
}
|
|
432
|
+
return {
|
|
433
|
+
resolve,
|
|
434
|
+
resolveName,
|
|
435
|
+
readerFor
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
//#endregion
|
|
440
|
+
export { TERMINAL_INDEX_FILES, createAfsBlockletReader, createAfsBlockletRegistry, createMapBlockletReader, createPatternCache, createStaticBlockletRegistry, detectBlockletPattern, normalizeRel };
|
|
441
|
+
//# sourceMappingURL=registry.mjs.map
|