@fuzdev/fuz_app 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/actions/action_bridge.d.ts +65 -0
- package/dist/actions/action_bridge.d.ts.map +1 -0
- package/dist/actions/action_bridge.js +76 -0
- package/dist/actions/action_codegen.d.ts +97 -0
- package/dist/actions/action_codegen.d.ts.map +1 -0
- package/dist/actions/action_codegen.js +280 -0
- package/dist/actions/action_registry.d.ts +35 -0
- package/dist/actions/action_registry.d.ts.map +1 -0
- package/dist/actions/action_registry.js +83 -0
- package/dist/actions/action_spec.d.ts +169 -0
- package/dist/actions/action_spec.d.ts.map +1 -0
- package/dist/actions/action_spec.js +76 -0
- package/dist/auth/account_queries.d.ts +96 -0
- package/dist/auth/account_queries.d.ts.map +1 -0
- package/dist/auth/account_queries.js +172 -0
- package/dist/auth/account_routes.d.ts +86 -0
- package/dist/auth/account_routes.d.ts.map +1 -0
- package/dist/auth/account_routes.js +406 -0
- package/dist/auth/account_schema.d.ts +192 -0
- package/dist/auth/account_schema.d.ts.map +1 -0
- package/dist/auth/account_schema.js +105 -0
- package/dist/auth/admin_routes.d.ts +29 -0
- package/dist/auth/admin_routes.d.ts.map +1 -0
- package/dist/auth/admin_routes.js +193 -0
- package/dist/auth/api_token.d.ts +33 -0
- package/dist/auth/api_token.d.ts.map +1 -0
- package/dist/auth/api_token.js +36 -0
- package/dist/auth/api_token_queries.d.ts +80 -0
- package/dist/auth/api_token_queries.d.ts.map +1 -0
- package/dist/auth/api_token_queries.js +116 -0
- package/dist/auth/app_settings_queries.d.ts +33 -0
- package/dist/auth/app_settings_queries.d.ts.map +1 -0
- package/dist/auth/app_settings_queries.js +51 -0
- package/dist/auth/app_settings_routes.d.ts +27 -0
- package/dist/auth/app_settings_routes.d.ts.map +1 -0
- package/dist/auth/app_settings_routes.js +66 -0
- package/dist/auth/app_settings_schema.d.ts +35 -0
- package/dist/auth/app_settings_schema.d.ts.map +1 -0
- package/dist/auth/app_settings_schema.js +22 -0
- package/dist/auth/audit_log_queries.d.ts +90 -0
- package/dist/auth/audit_log_queries.d.ts.map +1 -0
- package/dist/auth/audit_log_queries.js +205 -0
- package/dist/auth/audit_log_routes.d.ts +33 -0
- package/dist/auth/audit_log_routes.d.ts.map +1 -0
- package/dist/auth/audit_log_routes.js +106 -0
- package/dist/auth/audit_log_schema.d.ts +259 -0
- package/dist/auth/audit_log_schema.d.ts.map +1 -0
- package/dist/auth/audit_log_schema.js +123 -0
- package/dist/auth/bearer_auth.d.ts +32 -0
- package/dist/auth/bearer_auth.d.ts.map +1 -0
- package/dist/auth/bearer_auth.js +90 -0
- package/dist/auth/bootstrap_account.d.ts +82 -0
- package/dist/auth/bootstrap_account.d.ts.map +1 -0
- package/dist/auth/bootstrap_account.js +97 -0
- package/dist/auth/bootstrap_routes.d.ts +74 -0
- package/dist/auth/bootstrap_routes.d.ts.map +1 -0
- package/dist/auth/bootstrap_routes.js +154 -0
- package/dist/auth/daemon_token.d.ts +49 -0
- package/dist/auth/daemon_token.d.ts.map +1 -0
- package/dist/auth/daemon_token.js +49 -0
- package/dist/auth/daemon_token_middleware.d.ts +93 -0
- package/dist/auth/daemon_token_middleware.d.ts.map +1 -0
- package/dist/auth/daemon_token_middleware.js +167 -0
- package/dist/auth/ddl.d.ts +27 -0
- package/dist/auth/ddl.d.ts.map +1 -0
- package/dist/auth/ddl.js +111 -0
- package/dist/auth/deps.d.ts +52 -0
- package/dist/auth/deps.d.ts.map +1 -0
- package/dist/auth/deps.js +10 -0
- package/dist/auth/invite_queries.d.ts +68 -0
- package/dist/auth/invite_queries.d.ts.map +1 -0
- package/dist/auth/invite_queries.js +105 -0
- package/dist/auth/invite_routes.d.ts +18 -0
- package/dist/auth/invite_routes.d.ts.map +1 -0
- package/dist/auth/invite_routes.js +129 -0
- package/dist/auth/invite_schema.d.ts +51 -0
- package/dist/auth/invite_schema.d.ts.map +1 -0
- package/dist/auth/invite_schema.js +25 -0
- package/dist/auth/keyring.d.ts +87 -0
- package/dist/auth/keyring.d.ts.map +1 -0
- package/dist/auth/keyring.js +142 -0
- package/dist/auth/middleware.d.ts +40 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +64 -0
- package/dist/auth/migrations.d.ts +42 -0
- package/dist/auth/migrations.d.ts.map +1 -0
- package/dist/auth/migrations.js +79 -0
- package/dist/auth/password.d.ts +39 -0
- package/dist/auth/password.d.ts.map +1 -0
- package/dist/auth/password.js +25 -0
- package/dist/auth/password_argon2.d.ts +43 -0
- package/dist/auth/password_argon2.d.ts.map +1 -0
- package/dist/auth/password_argon2.js +76 -0
- package/dist/auth/permit_queries.d.ts +72 -0
- package/dist/auth/permit_queries.d.ts.map +1 -0
- package/dist/auth/permit_queries.js +116 -0
- package/dist/auth/request_context.d.ts +114 -0
- package/dist/auth/request_context.d.ts.map +1 -0
- package/dist/auth/request_context.js +176 -0
- package/dist/auth/require_keeper.d.ts +20 -0
- package/dist/auth/require_keeper.d.ts.map +1 -0
- package/dist/auth/require_keeper.js +35 -0
- package/dist/auth/role_schema.d.ts +69 -0
- package/dist/auth/role_schema.d.ts.map +1 -0
- package/dist/auth/role_schema.js +70 -0
- package/dist/auth/route_guards.d.ts +21 -0
- package/dist/auth/route_guards.d.ts.map +1 -0
- package/dist/auth/route_guards.js +32 -0
- package/dist/auth/session_cookie.d.ts +158 -0
- package/dist/auth/session_cookie.d.ts.map +1 -0
- package/dist/auth/session_cookie.js +135 -0
- package/dist/auth/session_lifecycle.d.ts +35 -0
- package/dist/auth/session_lifecycle.d.ts.map +1 -0
- package/dist/auth/session_lifecycle.js +27 -0
- package/dist/auth/session_middleware.d.ts +33 -0
- package/dist/auth/session_middleware.d.ts.map +1 -0
- package/dist/auth/session_middleware.js +62 -0
- package/dist/auth/session_queries.d.ts +135 -0
- package/dist/auth/session_queries.d.ts.map +1 -0
- package/dist/auth/session_queries.js +186 -0
- package/dist/auth/signup_routes.d.ts +32 -0
- package/dist/auth/signup_routes.d.ts.map +1 -0
- package/dist/auth/signup_routes.js +150 -0
- package/dist/cli/args.d.ts +48 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +76 -0
- package/dist/cli/config.d.ts +48 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +77 -0
- package/dist/cli/daemon.d.ts +82 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/daemon.js +149 -0
- package/dist/cli/help.d.ts +85 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +138 -0
- package/dist/cli/logger.d.ts +46 -0
- package/dist/cli/logger.d.ts.map +1 -0
- package/dist/cli/logger.js +48 -0
- package/dist/cli/util.d.ts +36 -0
- package/dist/cli/util.d.ts.map +1 -0
- package/dist/cli/util.js +50 -0
- package/dist/crypto.d.ts +13 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +19 -0
- package/dist/db/assert_row.d.ts +18 -0
- package/dist/db/assert_row.d.ts.map +1 -0
- package/dist/db/assert_row.js +24 -0
- package/dist/db/create_db.d.ts +38 -0
- package/dist/db/create_db.d.ts.map +1 -0
- package/dist/db/create_db.js +57 -0
- package/dist/db/db.d.ts +97 -0
- package/dist/db/db.d.ts.map +1 -0
- package/dist/db/db.js +76 -0
- package/dist/db/db_pg.d.ts +21 -0
- package/dist/db/db_pg.d.ts.map +1 -0
- package/dist/db/db_pg.js +45 -0
- package/dist/db/db_pglite.d.ts +21 -0
- package/dist/db/db_pglite.d.ts.map +1 -0
- package/dist/db/db_pglite.js +28 -0
- package/dist/db/migrate.d.ts +67 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +118 -0
- package/dist/db/pg_error.d.ts +16 -0
- package/dist/db/pg_error.d.ts.map +1 -0
- package/dist/db/pg_error.js +15 -0
- package/dist/db/query_deps.d.ts +14 -0
- package/dist/db/query_deps.d.ts.map +1 -0
- package/dist/db/query_deps.js +9 -0
- package/dist/db/sql_identifier.d.ts +27 -0
- package/dist/db/sql_identifier.d.ts.map +1 -0
- package/dist/db/sql_identifier.js +31 -0
- package/dist/db/status.d.ts +62 -0
- package/dist/db/status.d.ts.map +1 -0
- package/dist/db/status.js +116 -0
- package/dist/dev/setup.d.ts +159 -0
- package/dist/dev/setup.d.ts.map +1 -0
- package/dist/dev/setup.js +265 -0
- package/dist/env/dotenv.d.ts +25 -0
- package/dist/env/dotenv.d.ts.map +1 -0
- package/dist/env/dotenv.js +52 -0
- package/dist/env/load.d.ts +52 -0
- package/dist/env/load.d.ts.map +1 -0
- package/dist/env/load.js +79 -0
- package/dist/env/mask.d.ts +19 -0
- package/dist/env/mask.d.ts.map +1 -0
- package/dist/env/mask.js +26 -0
- package/dist/env/resolve.d.ts +126 -0
- package/dist/env/resolve.d.ts.map +1 -0
- package/dist/env/resolve.js +200 -0
- package/dist/hono_context.d.ts +48 -0
- package/dist/hono_context.d.ts.map +1 -0
- package/dist/hono_context.js +22 -0
- package/dist/http/common_routes.d.ts +52 -0
- package/dist/http/common_routes.d.ts.map +1 -0
- package/dist/http/common_routes.js +65 -0
- package/dist/http/db_routes.d.ts +57 -0
- package/dist/http/db_routes.d.ts.map +1 -0
- package/dist/http/db_routes.js +176 -0
- package/dist/http/error_schemas.d.ts +169 -0
- package/dist/http/error_schemas.d.ts.map +1 -0
- package/dist/http/error_schemas.js +178 -0
- package/dist/http/middleware_spec.d.ts +19 -0
- package/dist/http/middleware_spec.d.ts.map +1 -0
- package/dist/http/middleware_spec.js +9 -0
- package/dist/http/origin.d.ts +57 -0
- package/dist/http/origin.d.ts.map +1 -0
- package/dist/http/origin.js +207 -0
- package/dist/http/proxy.d.ts +112 -0
- package/dist/http/proxy.d.ts.map +1 -0
- package/dist/http/proxy.js +240 -0
- package/dist/http/route_spec.d.ts +197 -0
- package/dist/http/route_spec.d.ts.map +1 -0
- package/dist/http/route_spec.js +243 -0
- package/dist/http/schema_helpers.d.ts +64 -0
- package/dist/http/schema_helpers.d.ts.map +1 -0
- package/dist/http/schema_helpers.js +90 -0
- package/dist/http/surface.d.ts +132 -0
- package/dist/http/surface.d.ts.map +1 -0
- package/dist/http/surface.js +156 -0
- package/dist/http/surface_query.d.ts +77 -0
- package/dist/http/surface_query.d.ts.map +1 -0
- package/dist/http/surface_query.js +86 -0
- package/dist/rate_limiter.d.ts +94 -0
- package/dist/rate_limiter.d.ts.map +1 -0
- package/dist/rate_limiter.js +156 -0
- package/dist/realtime/sse.d.ts +80 -0
- package/dist/realtime/sse.d.ts.map +1 -0
- package/dist/realtime/sse.js +109 -0
- package/dist/realtime/sse_auth_guard.d.ts +93 -0
- package/dist/realtime/sse_auth_guard.d.ts.map +1 -0
- package/dist/realtime/sse_auth_guard.js +111 -0
- package/dist/realtime/subscriber_registry.d.ts +85 -0
- package/dist/realtime/subscriber_registry.d.ts.map +1 -0
- package/dist/realtime/subscriber_registry.js +108 -0
- package/dist/runtime/deno.d.ts +21 -0
- package/dist/runtime/deno.d.ts.map +1 -0
- package/dist/runtime/deno.js +83 -0
- package/dist/runtime/deps.d.ts +113 -0
- package/dist/runtime/deps.d.ts.map +1 -0
- package/dist/runtime/deps.js +10 -0
- package/dist/runtime/fs.d.ts +15 -0
- package/dist/runtime/fs.d.ts.map +1 -0
- package/dist/runtime/fs.js +17 -0
- package/dist/runtime/mock.d.ts +81 -0
- package/dist/runtime/mock.d.ts.map +1 -0
- package/dist/runtime/mock.js +195 -0
- package/dist/runtime/node.d.ts +17 -0
- package/dist/runtime/node.d.ts.map +1 -0
- package/dist/runtime/node.js +117 -0
- package/dist/schema_meta.d.ts +16 -0
- package/dist/schema_meta.d.ts.map +1 -0
- package/dist/schema_meta.js +9 -0
- package/dist/sensitivity.d.ts +15 -0
- package/dist/sensitivity.d.ts.map +1 -0
- package/dist/sensitivity.js +9 -0
- package/dist/server/app_backend.d.ts +74 -0
- package/dist/server/app_backend.d.ts.map +1 -0
- package/dist/server/app_backend.js +39 -0
- package/dist/server/app_server.d.ts +201 -0
- package/dist/server/app_server.d.ts.map +1 -0
- package/dist/server/app_server.js +266 -0
- package/dist/server/env.d.ts +68 -0
- package/dist/server/env.d.ts.map +1 -0
- package/dist/server/env.js +95 -0
- package/dist/server/startup.d.ts +22 -0
- package/dist/server/startup.d.ts.map +1 -0
- package/dist/server/startup.js +48 -0
- package/dist/server/static.d.ts +39 -0
- package/dist/server/static.d.ts.map +1 -0
- package/dist/server/static.js +38 -0
- package/dist/server/validate_nginx.d.ts +34 -0
- package/dist/server/validate_nginx.d.ts.map +1 -0
- package/dist/server/validate_nginx.js +118 -0
- package/dist/testing/CLAUDE.md +3 -0
- package/dist/testing/admin_integration.d.ts +45 -0
- package/dist/testing/admin_integration.d.ts.map +1 -0
- package/dist/testing/admin_integration.js +840 -0
- package/dist/testing/adversarial_404.d.ts +15 -0
- package/dist/testing/adversarial_404.d.ts.map +1 -0
- package/dist/testing/adversarial_404.js +118 -0
- package/dist/testing/adversarial_headers.d.ts +36 -0
- package/dist/testing/adversarial_headers.d.ts.map +1 -0
- package/dist/testing/adversarial_headers.js +128 -0
- package/dist/testing/adversarial_input.d.ts +56 -0
- package/dist/testing/adversarial_input.d.ts.map +1 -0
- package/dist/testing/adversarial_input.js +494 -0
- package/dist/testing/app_server.d.ts +169 -0
- package/dist/testing/app_server.d.ts.map +1 -0
- package/dist/testing/app_server.js +240 -0
- package/dist/testing/assert_dev_env.d.ts +10 -0
- package/dist/testing/assert_dev_env.d.ts.map +1 -0
- package/dist/testing/assert_dev_env.js +13 -0
- package/dist/testing/assertions.d.ts +61 -0
- package/dist/testing/assertions.d.ts.map +1 -0
- package/dist/testing/assertions.js +96 -0
- package/dist/testing/attack_surface.d.ts +63 -0
- package/dist/testing/attack_surface.d.ts.map +1 -0
- package/dist/testing/attack_surface.js +224 -0
- package/dist/testing/audit_completeness.d.ts +29 -0
- package/dist/testing/audit_completeness.d.ts.map +1 -0
- package/dist/testing/audit_completeness.js +410 -0
- package/dist/testing/auth_apps.d.ts +55 -0
- package/dist/testing/auth_apps.d.ts.map +1 -0
- package/dist/testing/auth_apps.js +122 -0
- package/dist/testing/data_exposure.d.ts +62 -0
- package/dist/testing/data_exposure.d.ts.map +1 -0
- package/dist/testing/data_exposure.js +297 -0
- package/dist/testing/db.d.ts +111 -0
- package/dist/testing/db.d.ts.map +1 -0
- package/dist/testing/db.js +258 -0
- package/dist/testing/entities.d.ts +21 -0
- package/dist/testing/entities.d.ts.map +1 -0
- package/dist/testing/entities.js +42 -0
- package/dist/testing/error_coverage.d.ts +78 -0
- package/dist/testing/error_coverage.d.ts.map +1 -0
- package/dist/testing/error_coverage.js +135 -0
- package/dist/testing/integration.d.ts +37 -0
- package/dist/testing/integration.d.ts.map +1 -0
- package/dist/testing/integration.js +1139 -0
- package/dist/testing/integration_helpers.d.ts +107 -0
- package/dist/testing/integration_helpers.d.ts.map +1 -0
- package/dist/testing/integration_helpers.js +246 -0
- package/dist/testing/middleware.d.ts +125 -0
- package/dist/testing/middleware.d.ts.map +1 -0
- package/dist/testing/middleware.js +210 -0
- package/dist/testing/rate_limiting.d.ts +43 -0
- package/dist/testing/rate_limiting.d.ts.map +1 -0
- package/dist/testing/rate_limiting.js +216 -0
- package/dist/testing/round_trip.d.ts +37 -0
- package/dist/testing/round_trip.d.ts.map +1 -0
- package/dist/testing/round_trip.js +128 -0
- package/dist/testing/schema_generators.d.ts +33 -0
- package/dist/testing/schema_generators.d.ts.map +1 -0
- package/dist/testing/schema_generators.js +137 -0
- package/dist/testing/standard.d.ts +49 -0
- package/dist/testing/standard.d.ts.map +1 -0
- package/dist/testing/standard.js +16 -0
- package/dist/testing/stubs.d.ts +96 -0
- package/dist/testing/stubs.d.ts.map +1 -0
- package/dist/testing/stubs.js +192 -0
- package/dist/testing/surface_invariants.d.ts +189 -0
- package/dist/testing/surface_invariants.d.ts.map +1 -0
- package/dist/testing/surface_invariants.js +450 -0
- package/dist/ui/AccountSessions.svelte +75 -0
- package/dist/ui/AccountSessions.svelte.d.ts +19 -0
- package/dist/ui/AccountSessions.svelte.d.ts.map +1 -0
- package/dist/ui/AdminAccounts.svelte +107 -0
- package/dist/ui/AdminAccounts.svelte.d.ts +19 -0
- package/dist/ui/AdminAccounts.svelte.d.ts.map +1 -0
- package/dist/ui/AdminAuditLog.svelte +144 -0
- package/dist/ui/AdminAuditLog.svelte.d.ts +4 -0
- package/dist/ui/AdminAuditLog.svelte.d.ts.map +1 -0
- package/dist/ui/AdminInvites.svelte +142 -0
- package/dist/ui/AdminInvites.svelte.d.ts +4 -0
- package/dist/ui/AdminInvites.svelte.d.ts.map +1 -0
- package/dist/ui/AdminOverview.svelte +337 -0
- package/dist/ui/AdminOverview.svelte.d.ts +4 -0
- package/dist/ui/AdminOverview.svelte.d.ts.map +1 -0
- package/dist/ui/AdminPermitHistory.svelte +61 -0
- package/dist/ui/AdminPermitHistory.svelte.d.ts +19 -0
- package/dist/ui/AdminPermitHistory.svelte.d.ts.map +1 -0
- package/dist/ui/AdminSessions.svelte +85 -0
- package/dist/ui/AdminSessions.svelte.d.ts +19 -0
- package/dist/ui/AdminSessions.svelte.d.ts.map +1 -0
- package/dist/ui/AdminSettings.svelte +32 -0
- package/dist/ui/AdminSettings.svelte.d.ts +19 -0
- package/dist/ui/AdminSettings.svelte.d.ts.map +1 -0
- package/dist/ui/AdminSurface.svelte +42 -0
- package/dist/ui/AdminSurface.svelte.d.ts +4 -0
- package/dist/ui/AdminSurface.svelte.d.ts.map +1 -0
- package/dist/ui/AppShell.svelte +93 -0
- package/dist/ui/AppShell.svelte.d.ts +20 -0
- package/dist/ui/AppShell.svelte.d.ts.map +1 -0
- package/dist/ui/BootstrapForm.svelte +105 -0
- package/dist/ui/BootstrapForm.svelte.d.ts +4 -0
- package/dist/ui/BootstrapForm.svelte.d.ts.map +1 -0
- package/dist/ui/ColumnLayout.svelte +46 -0
- package/dist/ui/ColumnLayout.svelte.d.ts +11 -0
- package/dist/ui/ColumnLayout.svelte.d.ts.map +1 -0
- package/dist/ui/ConfirmButton.svelte +125 -0
- package/dist/ui/ConfirmButton.svelte.d.ts +54 -0
- package/dist/ui/ConfirmButton.svelte.d.ts.map +1 -0
- package/dist/ui/Datatable.svelte +185 -0
- package/dist/ui/Datatable.svelte.d.ts +35 -0
- package/dist/ui/Datatable.svelte.d.ts.map +1 -0
- package/dist/ui/LoginForm.svelte +82 -0
- package/dist/ui/LoginForm.svelte.d.ts +8 -0
- package/dist/ui/LoginForm.svelte.d.ts.map +1 -0
- package/dist/ui/LogoutButton.svelte +36 -0
- package/dist/ui/LogoutButton.svelte.d.ts +10 -0
- package/dist/ui/LogoutButton.svelte.d.ts.map +1 -0
- package/dist/ui/MenuLink.svelte +35 -0
- package/dist/ui/MenuLink.svelte.d.ts +12 -0
- package/dist/ui/MenuLink.svelte.d.ts.map +1 -0
- package/dist/ui/OpenSignupToggle.svelte +36 -0
- package/dist/ui/OpenSignupToggle.svelte.d.ts +19 -0
- package/dist/ui/OpenSignupToggle.svelte.d.ts.map +1 -0
- package/dist/ui/PopoverButton.svelte +136 -0
- package/dist/ui/PopoverButton.svelte.d.ts +63 -0
- package/dist/ui/PopoverButton.svelte.d.ts.map +1 -0
- package/dist/ui/SignupForm.svelte +117 -0
- package/dist/ui/SignupForm.svelte.d.ts +7 -0
- package/dist/ui/SignupForm.svelte.d.ts.map +1 -0
- package/dist/ui/SurfaceExplorer.svelte +287 -0
- package/dist/ui/SurfaceExplorer.svelte.d.ts +8 -0
- package/dist/ui/SurfaceExplorer.svelte.d.ts.map +1 -0
- package/dist/ui/account_sessions_state.svelte.d.ts +15 -0
- package/dist/ui/account_sessions_state.svelte.d.ts.map +1 -0
- package/dist/ui/account_sessions_state.svelte.js +45 -0
- package/dist/ui/admin_accounts_state.svelte.d.ts +19 -0
- package/dist/ui/admin_accounts_state.svelte.d.ts.map +1 -0
- package/dist/ui/admin_accounts_state.svelte.js +65 -0
- package/dist/ui/admin_invites_state.svelte.d.ts +19 -0
- package/dist/ui/admin_invites_state.svelte.d.ts.map +1 -0
- package/dist/ui/admin_invites_state.svelte.js +71 -0
- package/dist/ui/admin_sessions_state.svelte.d.ts +18 -0
- package/dist/ui/admin_sessions_state.svelte.d.ts.map +1 -0
- package/dist/ui/admin_sessions_state.svelte.js +62 -0
- package/dist/ui/app_settings_state.svelte.d.ts +14 -0
- package/dist/ui/app_settings_state.svelte.d.ts.map +1 -0
- package/dist/ui/app_settings_state.svelte.js +44 -0
- package/dist/ui/audit_log_state.svelte.d.ts +40 -0
- package/dist/ui/audit_log_state.svelte.d.ts.map +1 -0
- package/dist/ui/audit_log_state.svelte.js +153 -0
- package/dist/ui/auth_state.svelte.d.ts +85 -0
- package/dist/ui/auth_state.svelte.d.ts.map +1 -0
- package/dist/ui/auth_state.svelte.js +238 -0
- package/dist/ui/datatable.d.ts +25 -0
- package/dist/ui/datatable.d.ts.map +1 -0
- package/dist/ui/datatable.js +9 -0
- package/dist/ui/enter_advance.d.ts +13 -0
- package/dist/ui/enter_advance.d.ts.map +1 -0
- package/dist/ui/enter_advance.js +30 -0
- package/dist/ui/loadable.svelte.d.ts +55 -0
- package/dist/ui/loadable.svelte.d.ts.map +1 -0
- package/dist/ui/loadable.svelte.js +75 -0
- package/dist/ui/popover.svelte.d.ts +137 -0
- package/dist/ui/popover.svelte.d.ts.map +1 -0
- package/dist/ui/popover.svelte.js +288 -0
- package/dist/ui/position_helpers.d.ts +27 -0
- package/dist/ui/position_helpers.d.ts.map +1 -0
- package/dist/ui/position_helpers.js +81 -0
- package/dist/ui/sidebar_state.svelte.d.ts +30 -0
- package/dist/ui/sidebar_state.svelte.d.ts.map +1 -0
- package/dist/ui/sidebar_state.svelte.js +39 -0
- package/dist/ui/table_state.svelte.d.ts +63 -0
- package/dist/ui/table_state.svelte.d.ts.map +1 -0
- package/dist/ui/table_state.svelte.js +117 -0
- package/dist/ui/ui_fetch.d.ts +29 -0
- package/dist/ui/ui_fetch.d.ts.map +1 -0
- package/dist/ui/ui_fetch.js +37 -0
- package/dist/ui/ui_format.d.ts +63 -0
- package/dist/ui/ui_format.d.ts.map +1 -0
- package/dist/ui/ui_format.js +196 -0
- package/package.json +121 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared dependency interfaces for runtime operations.
|
|
3
|
+
*
|
|
4
|
+
* Small composable interfaces that functions accept for only the capabilities
|
|
5
|
+
* they need. Both Deno and Node implementations satisfy all these interfaces
|
|
6
|
+
* via `RuntimeDeps`.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Result of a stat operation.
|
|
12
|
+
*/
|
|
13
|
+
export interface StatResult {
|
|
14
|
+
is_file: boolean;
|
|
15
|
+
is_directory: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Result of executing a command.
|
|
19
|
+
*/
|
|
20
|
+
export interface CommandResult {
|
|
21
|
+
success: boolean;
|
|
22
|
+
code: number;
|
|
23
|
+
stdout: string;
|
|
24
|
+
stderr: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Environment variable access.
|
|
28
|
+
*/
|
|
29
|
+
export interface EnvDeps {
|
|
30
|
+
/** Get an environment variable value. */
|
|
31
|
+
env_get: (name: string) => string | undefined;
|
|
32
|
+
/** Set an environment variable. */
|
|
33
|
+
env_set: (name: string, value: string) => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* File system read operations.
|
|
37
|
+
*/
|
|
38
|
+
export interface FsReadDeps {
|
|
39
|
+
/** Get file/directory stats, or null if path doesn't exist. */
|
|
40
|
+
stat: (path: string) => Promise<StatResult | null>;
|
|
41
|
+
/** Read a file as text. */
|
|
42
|
+
read_file: (path: string) => Promise<string>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* File system write operations.
|
|
46
|
+
*/
|
|
47
|
+
export interface FsWriteDeps {
|
|
48
|
+
/** Create a directory. */
|
|
49
|
+
mkdir: (path: string, options?: {
|
|
50
|
+
recursive?: boolean;
|
|
51
|
+
}) => Promise<void>;
|
|
52
|
+
/** Write text to a file. */
|
|
53
|
+
write_file: (path: string, content: string) => Promise<void>;
|
|
54
|
+
/** Rename (move) a file. */
|
|
55
|
+
rename: (old_path: string, new_path: string) => Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* File system remove operations.
|
|
59
|
+
*/
|
|
60
|
+
export interface FsRemoveDeps {
|
|
61
|
+
/** Remove a file or directory. */
|
|
62
|
+
remove: (path: string, options?: {
|
|
63
|
+
recursive?: boolean;
|
|
64
|
+
}) => Promise<void>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Command execution.
|
|
68
|
+
*/
|
|
69
|
+
export interface CommandDeps {
|
|
70
|
+
/** Run a command and return the result. */
|
|
71
|
+
run_command: (cmd: string, args: Array<string>) => Promise<CommandResult>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Warning/diagnostic output.
|
|
75
|
+
*/
|
|
76
|
+
export interface LogDeps {
|
|
77
|
+
/** Log a warning message. */
|
|
78
|
+
warn: (...args: Array<unknown>) => void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Terminal I/O operations.
|
|
82
|
+
*/
|
|
83
|
+
export interface TerminalDeps {
|
|
84
|
+
/** Write bytes to stdout. */
|
|
85
|
+
stdout_write: (data: Uint8Array) => Promise<number>;
|
|
86
|
+
/** Read bytes from stdin, or null on EOF. */
|
|
87
|
+
stdin_read: (buffer: Uint8Array) => Promise<number | null>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Process lifecycle.
|
|
91
|
+
*/
|
|
92
|
+
export interface ProcessDeps {
|
|
93
|
+
/** Exit the process with a code. */
|
|
94
|
+
exit: (code: number) => never;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Full runtime capabilities returned by `create_deno_runtime` or `create_node_runtime`.
|
|
98
|
+
*
|
|
99
|
+
* Extends all `*Deps` interfaces with additional app-level capabilities.
|
|
100
|
+
* Functions should accept narrow `*Deps` interfaces, not this full type —
|
|
101
|
+
* this type is for the wiring layer that creates and passes the runtime.
|
|
102
|
+
*/
|
|
103
|
+
export interface RuntimeDeps extends EnvDeps, FsReadDeps, FsWriteDeps, FsRemoveDeps, CommandDeps, TerminalDeps, ProcessDeps, LogDeps {
|
|
104
|
+
/** Get all environment variables. */
|
|
105
|
+
env_all: () => Record<string, string>;
|
|
106
|
+
/** CLI arguments passed to the program. */
|
|
107
|
+
readonly args: ReadonlyArray<string>;
|
|
108
|
+
/** Get current working directory. */
|
|
109
|
+
cwd: () => string;
|
|
110
|
+
/** Run a command with inherited stdout/stderr (output goes directly to terminal). */
|
|
111
|
+
run_command_inherit: (cmd: string, args: Array<string>) => Promise<number>;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=deps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/runtime/deps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared dependency interfaces for runtime operations.
|
|
3
|
+
*
|
|
4
|
+
* Small composable interfaces that functions accept for only the capabilities
|
|
5
|
+
* they need. Both Deno and Node implementations satisfy all these interfaces
|
|
6
|
+
* via `RuntimeDeps`.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File system utilities.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { FsWriteDeps } from './deps.js';
|
|
7
|
+
/**
|
|
8
|
+
* Write a file atomically via temp file + rename.
|
|
9
|
+
*
|
|
10
|
+
* @param deps - deps with file write capabilities
|
|
11
|
+
* @param path - destination file path
|
|
12
|
+
* @param content - file contents to write
|
|
13
|
+
*/
|
|
14
|
+
export declare const write_file_atomic: (deps: Pick<FsWriteDeps, "write_file" | "rename">, path: string, content: string) => Promise<void>;
|
|
15
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/runtime/fs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC7B,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,QAAQ,CAAC,EAChD,MAAM,MAAM,EACZ,SAAS,MAAM,KACb,OAAO,CAAC,IAAI,CAId,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File system utilities.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Write a file atomically via temp file + rename.
|
|
8
|
+
*
|
|
9
|
+
* @param deps - deps with file write capabilities
|
|
10
|
+
* @param path - destination file path
|
|
11
|
+
* @param content - file contents to write
|
|
12
|
+
*/
|
|
13
|
+
export const write_file_atomic = async (deps, path, content) => {
|
|
14
|
+
const temp_path = path + '.tmp';
|
|
15
|
+
await deps.write_file(temp_path, content);
|
|
16
|
+
await deps.rename(temp_path, path);
|
|
17
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock `RuntimeDeps` for testing.
|
|
3
|
+
*
|
|
4
|
+
* Provides a fully controllable runtime implementation for unit tests.
|
|
5
|
+
* Consumer projects can extend `MockRuntime` with project-specific helpers
|
|
6
|
+
* (e.g. `setup_mock_tx_config`) that stay local.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import type { RuntimeDeps, CommandResult } from './deps.js';
|
|
11
|
+
/**
|
|
12
|
+
* Mock `RuntimeDeps` with observable state for assertions.
|
|
13
|
+
*/
|
|
14
|
+
export interface MockRuntime extends RuntimeDeps {
|
|
15
|
+
/** Mock environment variables. */
|
|
16
|
+
mock_env: Map<string, string>;
|
|
17
|
+
/** Mock file system (path -> content). */
|
|
18
|
+
mock_fs: Map<string, string>;
|
|
19
|
+
/** Mock directories that exist. */
|
|
20
|
+
mock_dirs: Set<string>;
|
|
21
|
+
/** Exit calls recorded (exit codes). */
|
|
22
|
+
exit_calls: Array<number>;
|
|
23
|
+
/** Commands executed. */
|
|
24
|
+
command_calls: Array<{
|
|
25
|
+
cmd: string;
|
|
26
|
+
args: Array<string>;
|
|
27
|
+
}>;
|
|
28
|
+
/** Commands executed with inherit. */
|
|
29
|
+
command_inherit_calls: Array<{
|
|
30
|
+
cmd: string;
|
|
31
|
+
args: Array<string>;
|
|
32
|
+
}>;
|
|
33
|
+
/** Stdout writes recorded. */
|
|
34
|
+
stdout_writes: Array<string>;
|
|
35
|
+
/** Mock command results (cmd -> result). */
|
|
36
|
+
mock_command_results: Map<string, CommandResult>;
|
|
37
|
+
/** Stdin buffer for input simulation. */
|
|
38
|
+
stdin_buffer: Uint8Array | null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a mock `RuntimeDeps` for testing.
|
|
42
|
+
*
|
|
43
|
+
* @param args - CLI arguments
|
|
44
|
+
* @returns `MockRuntime` with controllable state
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* const runtime = create_mock_runtime(['apply', 'tx.ts']);
|
|
49
|
+
* runtime.mock_env.set('HOME', '/home/test');
|
|
50
|
+
* runtime.mock_fs.set('/home/test/.app/config.json', '{}');
|
|
51
|
+
*
|
|
52
|
+
* await some_function(runtime);
|
|
53
|
+
*
|
|
54
|
+
* assert.strictEqual(runtime.command_calls.length, 1);
|
|
55
|
+
* assert.deepStrictEqual(runtime.exit_calls, [0]);
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare const create_mock_runtime: (args?: Array<string>) => MockRuntime;
|
|
59
|
+
/**
|
|
60
|
+
* Reset a mock runtime to initial state.
|
|
61
|
+
*
|
|
62
|
+
* @param runtime - `MockRuntime` to reset
|
|
63
|
+
*/
|
|
64
|
+
export declare const reset_mock_runtime: (runtime: MockRuntime) => void;
|
|
65
|
+
/**
|
|
66
|
+
* Set stdin buffer for simulating user input.
|
|
67
|
+
*
|
|
68
|
+
* @param runtime - `MockRuntime` to configure
|
|
69
|
+
* @param input - string to provide as stdin input
|
|
70
|
+
*/
|
|
71
|
+
export declare const set_mock_stdin: (runtime: MockRuntime, input: string) => void;
|
|
72
|
+
/**
|
|
73
|
+
* Error thrown when mock `runtime.exit()` is called.
|
|
74
|
+
*
|
|
75
|
+
* Tests can catch this to verify exit behavior.
|
|
76
|
+
*/
|
|
77
|
+
export declare class MockExitError extends Error {
|
|
78
|
+
readonly code: number;
|
|
79
|
+
constructor(code: number);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/runtime/mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,WAAW,EAAc,aAAa,EAAC,MAAM,WAAW,CAAC;AAItE;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC/C,kCAAkC;IAClC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,0CAA0C;IAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,mCAAmC;IACnC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,wCAAwC;IACxC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,yBAAyB;IACzB,aAAa,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAAC,CAAC,CAAC;IACzD,sCAAsC;IACtC,qBAAqB,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAAC,CAAC,CAAC;IACjE,8BAA8B;IAC9B,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,4CAA4C;IAC5C,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACjD,yCAAyC;IACzC,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAM,KAAK,CAAC,MAAM,CAAM,KAAG,WAyI9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,WAAW,KAAG,IAUzD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,EAAE,OAAO,MAAM,KAAG,IAEpE,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM;CAKxB"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock `RuntimeDeps` for testing.
|
|
3
|
+
*
|
|
4
|
+
* Provides a fully controllable runtime implementation for unit tests.
|
|
5
|
+
* Consumer projects can extend `MockRuntime` with project-specific helpers
|
|
6
|
+
* (e.g. `setup_mock_tx_config`) that stay local.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Create a mock `RuntimeDeps` for testing.
|
|
12
|
+
*
|
|
13
|
+
* @param args - CLI arguments
|
|
14
|
+
* @returns `MockRuntime` with controllable state
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const runtime = create_mock_runtime(['apply', 'tx.ts']);
|
|
19
|
+
* runtime.mock_env.set('HOME', '/home/test');
|
|
20
|
+
* runtime.mock_fs.set('/home/test/.app/config.json', '{}');
|
|
21
|
+
*
|
|
22
|
+
* await some_function(runtime);
|
|
23
|
+
*
|
|
24
|
+
* assert.strictEqual(runtime.command_calls.length, 1);
|
|
25
|
+
* assert.deepStrictEqual(runtime.exit_calls, [0]);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export const create_mock_runtime = (args = []) => {
|
|
29
|
+
const mock_env = new Map();
|
|
30
|
+
const mock_fs = new Map();
|
|
31
|
+
const mock_dirs = new Set();
|
|
32
|
+
const exit_calls = [];
|
|
33
|
+
const command_calls = [];
|
|
34
|
+
const command_inherit_calls = [];
|
|
35
|
+
const stdout_writes = [];
|
|
36
|
+
const mock_command_results = new Map();
|
|
37
|
+
let stdin_buffer = null;
|
|
38
|
+
const runtime = {
|
|
39
|
+
args,
|
|
40
|
+
mock_env,
|
|
41
|
+
mock_fs,
|
|
42
|
+
mock_dirs,
|
|
43
|
+
exit_calls,
|
|
44
|
+
command_calls,
|
|
45
|
+
command_inherit_calls,
|
|
46
|
+
stdout_writes,
|
|
47
|
+
mock_command_results,
|
|
48
|
+
get stdin_buffer() {
|
|
49
|
+
return stdin_buffer;
|
|
50
|
+
},
|
|
51
|
+
set stdin_buffer(value) {
|
|
52
|
+
stdin_buffer = value;
|
|
53
|
+
},
|
|
54
|
+
// === Environment ===
|
|
55
|
+
env_get: (name) => mock_env.get(name),
|
|
56
|
+
env_set: (name, value) => {
|
|
57
|
+
mock_env.set(name, value);
|
|
58
|
+
},
|
|
59
|
+
env_all: () => Object.fromEntries(mock_env),
|
|
60
|
+
// === Process ===
|
|
61
|
+
cwd: () => '/mock/cwd',
|
|
62
|
+
exit: (code) => {
|
|
63
|
+
exit_calls.push(code);
|
|
64
|
+
throw new MockExitError(code);
|
|
65
|
+
},
|
|
66
|
+
// === Local File System ===
|
|
67
|
+
stat: async (path) => {
|
|
68
|
+
if (mock_fs.has(path)) {
|
|
69
|
+
return { is_file: true, is_directory: false };
|
|
70
|
+
}
|
|
71
|
+
if (mock_dirs.has(path)) {
|
|
72
|
+
return { is_file: false, is_directory: true };
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
},
|
|
76
|
+
mkdir: async (path, options) => {
|
|
77
|
+
if (options?.recursive) {
|
|
78
|
+
const parts = path.split('/').filter(Boolean);
|
|
79
|
+
let current = '';
|
|
80
|
+
for (const part of parts) {
|
|
81
|
+
current += '/' + part;
|
|
82
|
+
mock_dirs.add(current);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
mock_dirs.add(path);
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
read_file: async (path) => {
|
|
90
|
+
const content = mock_fs.get(path);
|
|
91
|
+
if (content === undefined) {
|
|
92
|
+
const error = new Error(`ENOENT: no such file or directory: ${path}`);
|
|
93
|
+
error.code = 'ENOENT';
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
return content;
|
|
97
|
+
},
|
|
98
|
+
write_file: async (path, content) => {
|
|
99
|
+
mock_fs.set(path, content);
|
|
100
|
+
},
|
|
101
|
+
rename: async (old_path, new_path) => {
|
|
102
|
+
const content = mock_fs.get(old_path);
|
|
103
|
+
if (content !== undefined) {
|
|
104
|
+
mock_fs.set(new_path, content);
|
|
105
|
+
mock_fs.delete(old_path);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
remove: async (path, options) => {
|
|
109
|
+
mock_fs.delete(path);
|
|
110
|
+
mock_dirs.delete(path);
|
|
111
|
+
if (options?.recursive) {
|
|
112
|
+
const prefix = path.endsWith('/') ? path : path + '/';
|
|
113
|
+
for (const key of mock_fs.keys()) {
|
|
114
|
+
if (key.startsWith(prefix))
|
|
115
|
+
mock_fs.delete(key);
|
|
116
|
+
}
|
|
117
|
+
for (const key of mock_dirs) {
|
|
118
|
+
if (key.startsWith(prefix))
|
|
119
|
+
mock_dirs.delete(key);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
// === Local Commands ===
|
|
124
|
+
run_command: async (cmd, args) => {
|
|
125
|
+
command_calls.push({ cmd, args });
|
|
126
|
+
const key = `${cmd} ${args.join(' ')}`;
|
|
127
|
+
const mocked = mock_command_results.get(key);
|
|
128
|
+
if (mocked)
|
|
129
|
+
return mocked;
|
|
130
|
+
return { success: true, code: 0, stdout: '', stderr: '' };
|
|
131
|
+
},
|
|
132
|
+
run_command_inherit: async (cmd, args) => {
|
|
133
|
+
command_inherit_calls.push({ cmd, args });
|
|
134
|
+
const key = `${cmd} ${args.join(' ')}`;
|
|
135
|
+
const mocked = mock_command_results.get(key);
|
|
136
|
+
if (mocked)
|
|
137
|
+
return mocked.code;
|
|
138
|
+
return 0;
|
|
139
|
+
},
|
|
140
|
+
// === Terminal I/O ===
|
|
141
|
+
stdout_write: async (data) => {
|
|
142
|
+
stdout_writes.push(new TextDecoder().decode(data));
|
|
143
|
+
return data.length;
|
|
144
|
+
},
|
|
145
|
+
stdin_read: async (buffer) => {
|
|
146
|
+
if (stdin_buffer === null)
|
|
147
|
+
return null;
|
|
148
|
+
const len = Math.min(buffer.length, stdin_buffer.length);
|
|
149
|
+
buffer.set(stdin_buffer.subarray(0, len));
|
|
150
|
+
stdin_buffer = null;
|
|
151
|
+
return len;
|
|
152
|
+
},
|
|
153
|
+
// === Logging ===
|
|
154
|
+
warn: (..._args) => { }, // eslint-disable-line @typescript-eslint/no-empty-function
|
|
155
|
+
};
|
|
156
|
+
return runtime;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Reset a mock runtime to initial state.
|
|
160
|
+
*
|
|
161
|
+
* @param runtime - `MockRuntime` to reset
|
|
162
|
+
*/
|
|
163
|
+
export const reset_mock_runtime = (runtime) => {
|
|
164
|
+
runtime.mock_env.clear();
|
|
165
|
+
runtime.mock_fs.clear();
|
|
166
|
+
runtime.mock_dirs.clear();
|
|
167
|
+
runtime.exit_calls.length = 0;
|
|
168
|
+
runtime.command_calls.length = 0;
|
|
169
|
+
runtime.command_inherit_calls.length = 0;
|
|
170
|
+
runtime.stdout_writes.length = 0;
|
|
171
|
+
runtime.mock_command_results.clear();
|
|
172
|
+
runtime.stdin_buffer = null;
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Set stdin buffer for simulating user input.
|
|
176
|
+
*
|
|
177
|
+
* @param runtime - `MockRuntime` to configure
|
|
178
|
+
* @param input - string to provide as stdin input
|
|
179
|
+
*/
|
|
180
|
+
export const set_mock_stdin = (runtime, input) => {
|
|
181
|
+
runtime.stdin_buffer = new TextEncoder().encode(input);
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Error thrown when mock `runtime.exit()` is called.
|
|
185
|
+
*
|
|
186
|
+
* Tests can catch this to verify exit behavior.
|
|
187
|
+
*/
|
|
188
|
+
export class MockExitError extends Error {
|
|
189
|
+
code;
|
|
190
|
+
constructor(code) {
|
|
191
|
+
super(`exit(${code})`);
|
|
192
|
+
this.name = 'MockExitError';
|
|
193
|
+
this.code = code;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js implementation of `RuntimeDeps`.
|
|
3
|
+
*
|
|
4
|
+
* Provides the same interface as `deno.ts` but backed by Node.js APIs.
|
|
5
|
+
* Used for running servers in Node.js and for tests (vitest runs in Node).
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { RuntimeDeps } from './deps.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create a `RuntimeDeps` backed by Node.js APIs.
|
|
12
|
+
*
|
|
13
|
+
* @param args - CLI arguments (typically `process.argv.slice(2)`)
|
|
14
|
+
* @returns `RuntimeDeps` implementation using Node.js runtime
|
|
15
|
+
*/
|
|
16
|
+
export declare const create_node_runtime: (args?: ReadonlyArray<string>) => RuntimeDeps;
|
|
17
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/runtime/node.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAC,WAAW,EAA4B,MAAM,WAAW,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC/B,OAAM,aAAa,CAAC,MAAM,CAAyB,KACjD,WA6GD,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js implementation of `RuntimeDeps`.
|
|
3
|
+
*
|
|
4
|
+
* Provides the same interface as `deno.ts` but backed by Node.js APIs.
|
|
5
|
+
* Used for running servers in Node.js and for tests (vitest runs in Node).
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { Buffer } from 'node:buffer';
|
|
10
|
+
import { spawn } from 'node:child_process';
|
|
11
|
+
import { stat, mkdir, readFile, writeFile, rename, rm } from 'node:fs/promises';
|
|
12
|
+
import process from 'node:process';
|
|
13
|
+
/**
|
|
14
|
+
* Create a `RuntimeDeps` backed by Node.js APIs.
|
|
15
|
+
*
|
|
16
|
+
* @param args - CLI arguments (typically `process.argv.slice(2)`)
|
|
17
|
+
* @returns `RuntimeDeps` implementation using Node.js runtime
|
|
18
|
+
*/
|
|
19
|
+
export const create_node_runtime = (args = process.argv.slice(2)) => ({
|
|
20
|
+
// === Environment ===
|
|
21
|
+
env_get: (name) => process.env[name],
|
|
22
|
+
env_set: (name, value) => {
|
|
23
|
+
process.env[name] = value;
|
|
24
|
+
},
|
|
25
|
+
env_all: () => ({ ...process.env }),
|
|
26
|
+
// === Process ===
|
|
27
|
+
args,
|
|
28
|
+
cwd: () => process.cwd(),
|
|
29
|
+
exit: (code) => process.exit(code),
|
|
30
|
+
// === Local File System ===
|
|
31
|
+
stat: async (path) => {
|
|
32
|
+
try {
|
|
33
|
+
const s = await stat(path);
|
|
34
|
+
return { is_file: s.isFile(), is_directory: s.isDirectory() };
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
mkdir: async (path, options) => {
|
|
41
|
+
await mkdir(path, options);
|
|
42
|
+
},
|
|
43
|
+
read_file: (path) => readFile(path, 'utf-8'),
|
|
44
|
+
write_file: (path, content) => writeFile(path, content, 'utf-8'),
|
|
45
|
+
rename: (old_path, new_path) => rename(old_path, new_path),
|
|
46
|
+
remove: (path, options) => rm(path, options),
|
|
47
|
+
// === Local Commands ===
|
|
48
|
+
run_command: (cmd, args) => {
|
|
49
|
+
return new Promise((resolve) => {
|
|
50
|
+
const proc = spawn(cmd, args, {
|
|
51
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
52
|
+
});
|
|
53
|
+
const stdout_chunks = [];
|
|
54
|
+
const stderr_chunks = [];
|
|
55
|
+
proc.stdout.on('data', (chunk) => stdout_chunks.push(chunk));
|
|
56
|
+
proc.stderr.on('data', (chunk) => stderr_chunks.push(chunk));
|
|
57
|
+
proc.on('error', (error) => {
|
|
58
|
+
resolve({
|
|
59
|
+
success: false,
|
|
60
|
+
code: 1,
|
|
61
|
+
stdout: '',
|
|
62
|
+
stderr: `Failed to execute command: ${error.message}`,
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
proc.on('close', (code) => {
|
|
66
|
+
resolve({
|
|
67
|
+
success: code === 0,
|
|
68
|
+
code: code ?? 1,
|
|
69
|
+
stdout: Buffer.concat(stdout_chunks).toString('utf-8').trim(),
|
|
70
|
+
stderr: Buffer.concat(stderr_chunks).toString('utf-8').trim(),
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
run_command_inherit: (cmd, args) => {
|
|
76
|
+
return new Promise((resolve) => {
|
|
77
|
+
const proc = spawn(cmd, args, {
|
|
78
|
+
stdio: 'inherit',
|
|
79
|
+
});
|
|
80
|
+
proc.on('error', () => resolve(1));
|
|
81
|
+
proc.on('close', (code) => resolve(code ?? 1));
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
// === Terminal I/O ===
|
|
85
|
+
stdout_write: async (data) => {
|
|
86
|
+
return new Promise((resolve, reject) => {
|
|
87
|
+
process.stdout.write(data, (err) => {
|
|
88
|
+
if (err)
|
|
89
|
+
reject(err);
|
|
90
|
+
else
|
|
91
|
+
resolve(data.length);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
// === Logging ===
|
|
96
|
+
warn: (...args) => console.warn(...args),
|
|
97
|
+
stdin_read: async (buffer) => {
|
|
98
|
+
// TODO: Implement proper stdin reading for interactive prompts in Node
|
|
99
|
+
return new Promise((resolve) => {
|
|
100
|
+
const onData = (chunk) => {
|
|
101
|
+
const bytes = Math.min(chunk.length, buffer.length);
|
|
102
|
+
chunk.copy(buffer, 0, 0, bytes);
|
|
103
|
+
process.stdin.off('data', onData);
|
|
104
|
+
process.stdin.pause();
|
|
105
|
+
resolve(bytes);
|
|
106
|
+
};
|
|
107
|
+
const onEnd = () => {
|
|
108
|
+
process.stdin.off('data', onData);
|
|
109
|
+
process.stdin.off('end', onEnd);
|
|
110
|
+
resolve(null);
|
|
111
|
+
};
|
|
112
|
+
process.stdin.resume();
|
|
113
|
+
process.stdin.once('data', onData);
|
|
114
|
+
process.stdin.once('end', onEnd);
|
|
115
|
+
});
|
|
116
|
+
},
|
|
117
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Zod `.meta()` conventions for fuz_app schemas.
|
|
3
|
+
*
|
|
4
|
+
* Cross-cutting metadata shape used by env schemas, auth input schemas,
|
|
5
|
+
* surface generation, and test helpers.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { Sensitivity } from './sensitivity.js';
|
|
10
|
+
/** Zod `.meta()` shape for fuz_app schema metadata conventions. */
|
|
11
|
+
export interface SchemaFieldMeta {
|
|
12
|
+
description?: string;
|
|
13
|
+
/** Sensitivity level for masking/redaction. `'secret'` masks the value. */
|
|
14
|
+
sensitivity?: Sensitivity;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=schema_meta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema_meta.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/schema_meta.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAElD,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,WAAW,CAAC;CAC1B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sensitivity levels for schema metadata.
|
|
3
|
+
*
|
|
4
|
+
* Used by env schemas and auth input schemas to control masking/redaction
|
|
5
|
+
* in startup logs, surface explorers, and test output.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Sensitivity level for a schema field.
|
|
11
|
+
*
|
|
12
|
+
* - `'secret'` — value is masked in logs and UI (e.g. passwords, API keys, signing keys)
|
|
13
|
+
*/
|
|
14
|
+
export type Sensitivity = 'secret';
|
|
15
|
+
//# sourceMappingURL=sensitivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sensitivity.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/sensitivity.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC"}
|