clawmini 0.0.8 → 0.0.9
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/.changeset/README.md +8 -0
- package/.changeset/config.json +14 -0
- package/.github/workflows/release.yml +49 -0
- package/CHANGELOG.md +36 -0
- package/README.md +5 -4
- package/dist/adapter-discord/index.d.mts.map +1 -1
- package/dist/adapter-discord/index.mjs +465 -282
- package/dist/adapter-discord/index.mjs.map +1 -1
- package/dist/adapter-google-chat/index.mjs +367 -243
- package/dist/adapter-google-chat/index.mjs.map +1 -1
- package/dist/cli/index.mjs +684 -24
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/lite.mjs +43 -13
- package/dist/cli/lite.mjs.map +1 -1
- package/dist/cli/{propose-policy.mjs → manage-policies.mjs} +270 -47
- package/dist/cli/manage-policies.mjs.map +1 -0
- package/dist/cli/run-host.d.mts +1 -0
- package/dist/cli/run-host.mjs +3090 -0
- package/dist/cli/run-host.mjs.map +1 -0
- package/dist/config-CPFQIGdG.mjs +57 -0
- package/dist/config-CPFQIGdG.mjs.map +1 -0
- package/dist/config-Dvl-Pov4.mjs +76 -0
- package/dist/config-Dvl-Pov4.mjs.map +1 -0
- package/dist/daemon/index.d.mts.map +1 -1
- package/dist/daemon/index.mjs +970 -332
- package/dist/daemon/index.mjs.map +1 -1
- package/dist/supervisor-actions-CiW56eLi.mjs +843 -0
- package/dist/supervisor-actions-CiW56eLi.mjs.map +1 -0
- package/dist/turn-log-buffer-DRgW53gl.mjs +767 -0
- package/dist/turn-log-buffer-DRgW53gl.mjs.map +1 -0
- package/dist/web/_app/immutable/chunks/{Drm9vgeP.js → 3AZlWB6U.js} +1 -1
- package/dist/web/_app/immutable/chunks/BhRSsUCh.js +2 -0
- package/dist/web/_app/immutable/chunks/BiLeM2i1.js +1 -0
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/CME08kGM.js → dist/web/_app/immutable/chunks/BmBj85Ll.js} +1 -1
- package/dist/web/_app/immutable/chunks/BrERcKAH.js +1 -0
- package/dist/web/_app/immutable/chunks/Bv9252RM.js +1 -0
- package/dist/web/_app/immutable/chunks/CIXNBPKi.js +1 -0
- package/dist/web/_app/immutable/chunks/DISKL3GN.js +2 -0
- package/dist/web/_app/immutable/chunks/{Zeh-C-mx.js → DcpaLzmX.js} +1 -1
- package/dist/web/_app/immutable/chunks/DnQ3vS13.js +1 -0
- package/dist/web/_app/immutable/chunks/KsloHTKS.js +1 -0
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/Ck-be5J2.js → dist/web/_app/immutable/chunks/RsHsUj-8.js} +2 -2
- package/dist/web/_app/immutable/chunks/{vDehDcuJ.js → wpfV79dV.js} +1 -1
- package/dist/web/_app/immutable/entry/app.CIw1Qj0n.js +2 -0
- package/dist/web/_app/immutable/entry/start.Di0-Jhte.js +1 -0
- package/dist/web/_app/immutable/nodes/{0.CUGC2p-K.js → 0.DYyUA1au.js} +1 -1
- package/dist/web/_app/immutable/nodes/1.D-3QEMMZ.js +1 -0
- package/dist/web/_app/immutable/nodes/{2.BnwnD1Ki.js → 2.4olHnH7U.js} +1 -1
- package/{web/.svelte-kit/output/client/_app/immutable/nodes/3.0arZe_Uf.js → dist/web/_app/immutable/nodes/3.4w0bE-m2.js} +3 -3
- package/dist/web/_app/immutable/nodes/4.CZvjhVHt.js +60 -0
- package/dist/web/_app/immutable/nodes/{5.Bq2JzCEj.js → 5.DLbPVJY2.js} +1 -1
- package/dist/web/_app/version.json +1 -1
- package/dist/web/index.html +12 -12
- package/dist/workspace-oWmVh5mi.mjs +1001 -0
- package/dist/workspace-oWmVh5mi.mjs.map +1 -0
- package/docs/23_adapter_slash_autocomplete/development_log.md +19 -0
- package/docs/23_adapter_slash_autocomplete/notes.md +18 -0
- package/docs/23_adapter_slash_autocomplete/prd.md +46 -0
- package/docs/23_adapter_slash_autocomplete/questions.md +6 -0
- package/docs/23_adapter_slash_autocomplete/tickets.md +21 -0
- package/docs/24_subagent_job_policy_fixes/development_log.md +22 -0
- package/docs/24_subagent_job_policy_fixes/notes.md +28 -0
- package/docs/24_subagent_job_policy_fixes/prd.md +59 -0
- package/docs/24_subagent_job_policy_fixes/questions.md +3 -0
- package/docs/24_subagent_job_policy_fixes/tickets.md +49 -0
- package/docs/25_e2e_test_improvements/development_log.md +30 -0
- package/docs/25_e2e_test_improvements/notes.md +29 -0
- package/docs/25_e2e_test_improvements/prd.md +43 -0
- package/docs/25_e2e_test_improvements/questions.md +12 -0
- package/docs/25_e2e_test_improvements/tickets-2.md +22 -0
- package/docs/25_e2e_test_improvements/tickets.md +22 -0
- package/docs/25_policy_cwd/development_log.md +30 -0
- package/docs/25_policy_cwd/notes.md +28 -0
- package/docs/25_policy_cwd/prd.md +77 -0
- package/docs/25_policy_cwd/questions.md +6 -0
- package/docs/25_policy_cwd/tickets.md +77 -0
- package/docs/CLI_REFERENCE.md +3 -1
- package/docs/PHILOSOPHY.md +35 -0
- package/docs/adapter-visibility/SPEC.md +461 -0
- package/docs/adapter-visibility/SPEC_v2.md +202 -0
- package/docs/auto-update/SPEC.md +344 -0
- package/docs/backups/SPEC.md +296 -0
- package/docs/backups/clawmini.gitignore +69 -0
- package/docs/guides/assets/clawmini-avatar.png +0 -0
- package/docs/guides/backups.md +332 -0
- package/docs/guides/discord_adapter_setup.md +1 -1
- package/docs/guides/google_chat_adapter_setup.md +81 -0
- package/docs/unified-startup/SPEC.md +203 -0
- package/e2e/_helpers/test-environment.test.ts +49 -0
- package/e2e/_helpers/test-environment.ts +548 -0
- package/e2e/adapters/_google-chat-fixtures.ts +340 -0
- package/{src/cli/e2e → e2e/adapters}/adapter-discord.test.ts +22 -23
- package/e2e/adapters/adapter-google-chat-downtime.test.ts +157 -0
- package/e2e/adapters/adapter-google-chat-inbound.test.ts +697 -0
- package/e2e/adapters/adapter-google-chat-outbound.test.ts +297 -0
- package/e2e/adapters/adapter-google-chat-roundtrip.test.ts +56 -0
- package/e2e/adapters/adapter-google-chat-threads.test.ts +1078 -0
- package/e2e/agents/custom-api-env.test.ts +80 -0
- package/e2e/agents/export-lite-func.test.ts +104 -0
- package/e2e/agents/fallbacks.test.ts +124 -0
- package/e2e/agents/interrupt.test.ts +50 -0
- package/e2e/agents/no-reply-necessary.test.ts +57 -0
- package/e2e/agents/session-timeout-subagents.test.ts +76 -0
- package/e2e/agents/subagent-authorization.test.ts +246 -0
- package/e2e/agents/subagent-env.test.ts +49 -0
- package/e2e/agents/subagent-lifecycle.test.ts +782 -0
- package/e2e/agents/subagents-depth.test.ts +47 -0
- package/e2e/cli/agents.test.ts +176 -0
- package/e2e/cli/auto-update.test.ts +741 -0
- package/e2e/cli/basic.test.ts +44 -0
- package/{src/cli/e2e → e2e/cli}/export-lite.test.ts +16 -12
- package/e2e/cli/init-gitignore.test.ts +86 -0
- package/e2e/cli/init.test.ts +76 -0
- package/e2e/cli/messages.test.ts +363 -0
- package/e2e/cli/serve.test.ts +76 -0
- package/{src/cli/e2e → e2e/cli}/skills.test.ts +11 -10
- package/{src/cli/e2e → e2e/daemon}/daemon.test.ts +57 -195
- package/e2e/jobs/agent-jobs.test.ts +216 -0
- package/e2e/jobs/cron.test.ts +64 -0
- package/e2e/jobs/restart.test.ts +108 -0
- package/e2e/policies/approval-session.test.ts +69 -0
- package/e2e/policies/auto-create-policies-file.test.ts +35 -0
- package/e2e/policies/builtin-manage-policies.test.ts +184 -0
- package/e2e/policies/builtin-run-host.test.ts +180 -0
- package/e2e/policies/environment-policies.test.ts +177 -0
- package/e2e/policies/manage-policies.test.ts +566 -0
- package/e2e/policies/output-size.test.ts +98 -0
- package/e2e/policies/policies-context-cwd.test.ts +160 -0
- package/e2e/policies/relative-script-path.test.ts +60 -0
- package/e2e/policies/requests-show.test.ts +135 -0
- package/e2e/policies/requests.test.ts +208 -0
- package/e2e/policies/slash-policies.test.ts +308 -0
- package/e2e/policies/startup-cleanup.test.ts +48 -0
- package/e2e/routers/session-timeout.test.ts +106 -0
- package/e2e/routers/slash-model.test.ts +152 -0
- package/e2e/routers/slash-new.test.ts +50 -0
- package/e2e/routers/slash-restart-adapter.test.ts +96 -0
- package/e2e/routers/slash-restart.test.ts +114 -0
- package/e2e/routers/slash-shutdown.test.ts +55 -0
- package/e2e/routers/slash-stop.test.ts +232 -0
- package/e2e/routers/slash-upgrade.test.ts +88 -0
- package/{src/cli/e2e → e2e/sandbox}/environments.test.ts +14 -13
- package/eslint.config.js +6 -0
- package/napkin.md +1 -1
- package/package.json +8 -3
- package/src/adapter-discord/commands.test.ts +42 -0
- package/src/adapter-discord/commands.ts +33 -0
- package/src/adapter-discord/config.ts +12 -0
- package/src/adapter-discord/forwarder.test.ts +499 -21
- package/src/adapter-discord/forwarder.ts +343 -124
- package/src/adapter-discord/inbound-cache.test.ts +47 -0
- package/src/adapter-discord/inbound-cache.ts +37 -0
- package/src/adapter-discord/index.test.ts +67 -2
- package/src/adapter-discord/index.ts +84 -216
- package/src/adapter-discord/interactions.test.ts +54 -3
- package/src/adapter-discord/interactions.ts +97 -53
- package/src/adapter-discord/processMessage.ts +239 -0
- package/src/adapter-discord/state.ts +1 -0
- package/src/adapter-google-chat/auth.test.ts +9 -5
- package/src/adapter-google-chat/auth.ts +29 -23
- package/src/adapter-google-chat/cards.ts +7 -2
- package/src/adapter-google-chat/client.test.ts +37 -2
- package/src/adapter-google-chat/client.ts +138 -38
- package/src/adapter-google-chat/config.ts +19 -0
- package/src/adapter-google-chat/forwarder.test.ts +81 -56
- package/src/adapter-google-chat/forwarder.ts +394 -185
- package/src/adapter-google-chat/inbound-cache.test.ts +61 -0
- package/src/adapter-google-chat/inbound-cache.ts +36 -0
- package/src/adapter-google-chat/state.test.ts +1 -0
- package/src/adapter-google-chat/state.ts +9 -1
- package/src/adapter-google-chat/subscriptions.ts +8 -6
- package/src/cli/builtin-policies.ts +44 -0
- package/src/cli/commands/agents.ts +59 -5
- package/src/cli/commands/down.ts +54 -2
- package/src/cli/commands/environments.ts +8 -2
- package/src/cli/commands/init.ts +31 -0
- package/src/cli/commands/logs.ts +116 -0
- package/src/cli/commands/policies.ts +6 -4
- package/src/cli/commands/serve.test.ts +67 -0
- package/src/cli/commands/serve.ts +284 -0
- package/src/cli/commands/up.ts +122 -2
- package/src/cli/commands/web-api/agents.ts +3 -2
- package/src/cli/index.ts +4 -0
- package/src/cli/install-detection.test.ts +72 -0
- package/src/cli/install-detection.ts +48 -0
- package/src/cli/lite.ts +54 -22
- package/src/cli/manage-policies-utils.ts +104 -0
- package/src/cli/manage-policies.ts +291 -0
- package/src/cli/run-host.ts +45 -0
- package/src/cli/supervisor-actions.ts +267 -0
- package/src/cli/supervisor-control.test.ts +129 -0
- package/src/cli/supervisor-control.ts +155 -0
- package/src/cli/supervisor-pid.ts +68 -0
- package/src/cli/supervisor.ts +277 -0
- package/src/daemon/agent/agent-context.ts +11 -11
- package/src/daemon/agent/agent-session.ts +8 -1
- package/src/daemon/agent/chat-logger.test.ts +78 -9
- package/src/daemon/agent/chat-logger.ts +25 -5
- package/src/daemon/agent/turn-registry.test.ts +89 -0
- package/src/daemon/agent/turn-registry.ts +94 -0
- package/src/daemon/agent/types.ts +2 -0
- package/src/daemon/api/agent-policy-endpoints.ts +263 -0
- package/src/daemon/api/agent-router.ts +47 -126
- package/src/daemon/api/index.test.ts +1 -0
- package/src/daemon/api/policy-request.test.ts +7 -5
- package/src/daemon/api/router-utils.ts +6 -5
- package/src/daemon/api/subagent-router.ts +110 -74
- package/src/daemon/api/subagent-utils.test.ts +60 -0
- package/src/daemon/api/subagent-utils.ts +113 -87
- package/src/daemon/api/user-router.ts +34 -8
- package/src/daemon/auth.ts +1 -0
- package/src/daemon/cron.test.ts +62 -4
- package/src/daemon/cron.ts +42 -16
- package/src/daemon/events.ts +65 -0
- package/src/daemon/index.ts +24 -1
- package/src/daemon/message-interruption.test.ts +1 -0
- package/src/daemon/message-jobs.test.ts +1 -0
- package/src/daemon/message.ts +78 -14
- package/src/daemon/observation.test.ts +26 -18
- package/src/daemon/pending-replies.test.ts +112 -0
- package/src/daemon/pending-replies.ts +162 -0
- package/src/daemon/policy-request-service.ts +3 -1
- package/src/daemon/policy-utils.test.ts +66 -1
- package/src/daemon/policy-utils.ts +126 -1
- package/src/daemon/request-store.ts +31 -0
- package/src/daemon/routers/session-timeout.ts +4 -0
- package/src/daemon/routers/slash-model.test.ts +344 -0
- package/src/daemon/routers/slash-model.ts +207 -0
- package/src/daemon/routers/slash-policies.test.ts +38 -32
- package/src/daemon/routers/slash-policies.ts +84 -33
- package/src/daemon/routers/slash-restart.test.ts +69 -0
- package/src/daemon/routers/slash-restart.ts +36 -0
- package/src/daemon/routers/slash-shutdown.test.ts +50 -0
- package/src/daemon/routers/slash-shutdown.ts +28 -0
- package/src/daemon/routers/slash-upgrade.test.ts +116 -0
- package/src/daemon/routers/slash-upgrade.ts +76 -0
- package/src/daemon/routers/types.ts +7 -0
- package/src/daemon/routers.ts +16 -0
- package/src/shared/adapters/blockquote.test.ts +28 -0
- package/src/shared/adapters/blockquote.ts +20 -0
- package/src/shared/adapters/filtering.test.ts +224 -10
- package/src/shared/adapters/filtering.ts +95 -7
- package/src/shared/adapters/inbound-cache.test.ts +48 -0
- package/src/shared/adapters/inbound-cache.ts +54 -0
- package/src/shared/adapters/turn-log-buffer.ts +266 -0
- package/src/shared/adapters/turn-log.test.ts +389 -0
- package/src/shared/adapters/turn-log.ts +357 -0
- package/src/shared/agent-utils.ts +12 -5
- package/src/shared/chats.test.ts +4 -0
- package/src/shared/chats.ts +9 -0
- package/src/shared/config.ts +16 -1
- package/src/shared/lite.ts +76 -2
- package/src/shared/policies.ts +26 -0
- package/src/shared/template-manifest.ts +267 -0
- package/src/shared/utils/shell.ts +61 -0
- package/src/shared/version.ts +34 -0
- package/src/shared/workspace.test.ts +217 -0
- package/src/shared/workspace.ts +626 -48
- package/templates/environments/cladding/allowlist-domain.mjs +125 -0
- package/templates/environments/cladding/env.json +21 -1
- package/templates/environments/cladding/run-with-network.mjs +54 -0
- package/templates/environments/macos-proxy/allowlist-domain.mjs +95 -0
- package/templates/environments/macos-proxy/env.json +8 -1
- package/templates/environments/macos-proxy/proxy.mjs +0 -1
- package/templates/gemini/template.json +5 -0
- package/templates/gemini-claw/template.json +13 -0
- package/templates/skills/clawmini-requests/SKILL.md +69 -10
- package/templates/skills/run-host/SKILL.md +51 -0
- package/templates/skills/skill-creator/SKILL.md +4 -3
- package/templates/skills/skill-creator/scripts/validate.sh +52 -0
- package/tsdown.config.ts +10 -1
- package/vitest.config.ts +2 -2
- package/web/.svelte-kit/ambient.d.ts +292 -118
- package/web/.svelte-kit/generated/server/internal.js +1 -1
- package/web/.svelte-kit/output/client/.vite/manifest.json +126 -136
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{Drm9vgeP.js → 3AZlWB6U.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/BhRSsUCh.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/BiLeM2i1.js +1 -0
- package/{dist/web/_app/immutable/chunks/CME08kGM.js → web/.svelte-kit/output/client/_app/immutable/chunks/BmBj85Ll.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/BrERcKAH.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/Bv9252RM.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/CIXNBPKi.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DISKL3GN.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{Zeh-C-mx.js → DcpaLzmX.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DnQ3vS13.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/KsloHTKS.js +1 -0
- package/{dist/web/_app/immutable/chunks/Ck-be5J2.js → web/.svelte-kit/output/client/_app/immutable/chunks/RsHsUj-8.js} +2 -2
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{vDehDcuJ.js → wpfV79dV.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/entry/app.CIw1Qj0n.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.Di0-Jhte.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.CUGC2p-K.js → 0.DYyUA1au.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/1.D-3QEMMZ.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.BnwnD1Ki.js → 2.4olHnH7U.js} +1 -1
- package/{dist/web/_app/immutable/nodes/3.0arZe_Uf.js → web/.svelte-kit/output/client/_app/immutable/nodes/3.4w0bE-m2.js} +3 -3
- package/web/.svelte-kit/output/client/_app/immutable/nodes/4.CZvjhVHt.js +60 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{5.Bq2JzCEj.js → 5.DLbPVJY2.js} +1 -1
- package/web/.svelte-kit/output/client/_app/version.json +1 -1
- package/web/.svelte-kit/output/server/.vite/manifest.json +12 -10
- package/web/.svelte-kit/output/server/chunks/Icon.js +1 -1
- package/web/.svelte-kit/output/server/chunks/client.js +1 -1
- package/web/.svelte-kit/output/server/chunks/exports.js +1 -1
- package/web/.svelte-kit/output/server/chunks/index-server.js +2 -1
- package/web/.svelte-kit/output/server/chunks/internal.js +1 -1
- package/web/.svelte-kit/output/server/chunks/render-context.js +77 -0
- package/web/.svelte-kit/output/server/chunks/root.js +739 -788
- package/web/.svelte-kit/output/server/chunks/shared.js +234 -21
- package/web/.svelte-kit/output/server/index.js +126 -90
- package/web/.svelte-kit/output/server/manifest-full.js +1 -1
- package/web/.svelte-kit/output/server/manifest.js +1 -1
- package/web/.svelte-kit/output/server/nodes/0.js +1 -1
- package/web/.svelte-kit/output/server/nodes/1.js +1 -1
- package/web/.svelte-kit/output/server/nodes/2.js +1 -1
- package/web/.svelte-kit/output/server/nodes/3.js +1 -1
- package/web/.svelte-kit/output/server/nodes/4.js +1 -1
- package/web/.svelte-kit/output/server/nodes/5.js +1 -1
- package/web/.svelte-kit/output/server/remote-entry.js +245 -81
- package/web/.svelte-kit/tsconfig.json +4 -1
- package/dist/cli/propose-policy.mjs.map +0 -1
- package/dist/lite-CBxOT1y5.mjs +0 -241
- package/dist/lite-CBxOT1y5.mjs.map +0 -1
- package/dist/routing-D8rTxtaV.mjs +0 -245
- package/dist/routing-D8rTxtaV.mjs.map +0 -1
- package/dist/web/_app/immutable/chunks/B6YN0Nuq.js +0 -1
- package/dist/web/_app/immutable/chunks/BmRlVmv6.js +0 -1
- package/dist/web/_app/immutable/chunks/CK9JZLaG.js +0 -2
- package/dist/web/_app/immutable/chunks/Ck3rYNON.js +0 -1
- package/dist/web/_app/immutable/chunks/D5iV40bG.js +0 -1
- package/dist/web/_app/immutable/chunks/DMtIqaiV.js +0 -2
- package/dist/web/_app/immutable/chunks/DhD271EB.js +0 -1
- package/dist/web/_app/immutable/chunks/DpuLqk8d.js +0 -1
- package/dist/web/_app/immutable/chunks/DsIToJCP.js +0 -1
- package/dist/web/_app/immutable/entry/app.BCSV3nrG.js +0 -2
- package/dist/web/_app/immutable/entry/start.D4eLEZUM.js +0 -1
- package/dist/web/_app/immutable/nodes/1.CGC_42IQ.js +0 -1
- package/dist/web/_app/immutable/nodes/4.ClM1bXLE.js +0 -60
- package/dist/workspace-BJmJBfKi.mjs +0 -456
- package/dist/workspace-BJmJBfKi.mjs.map +0 -1
- package/src/cli/e2e/agents.test.ts +0 -140
- package/src/cli/e2e/basic.test.ts +0 -43
- package/src/cli/e2e/cron.test.ts +0 -132
- package/src/cli/e2e/export-lite-func.test.ts +0 -206
- package/src/cli/e2e/fallbacks.test.ts +0 -175
- package/src/cli/e2e/init.test.ts +0 -77
- package/src/cli/e2e/messages.test.ts +0 -332
- package/src/cli/e2e/propose-policy.test.ts +0 -203
- package/src/cli/e2e/requests.test.ts +0 -180
- package/src/cli/e2e/session-timeout.test.ts +0 -192
- package/src/cli/e2e/slash-new.test.ts +0 -93
- package/src/cli/e2e/subagents.test.ts +0 -106
- package/src/cli/e2e/utils.ts +0 -66
- package/src/cli/propose-policy.ts +0 -91
- package/web/.svelte-kit/output/client/_app/immutable/chunks/B6YN0Nuq.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/BmRlVmv6.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/CK9JZLaG.js +0 -2
- package/web/.svelte-kit/output/client/_app/immutable/chunks/Ck3rYNON.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/D5iV40bG.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DMtIqaiV.js +0 -2
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DhD271EB.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DpuLqk8d.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DsIToJCP.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/entry/app.BCSV3nrG.js +0 -2
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.D4eLEZUM.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/1.CGC_42IQ.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/4.ClM1bXLE.js +0 -60
- package/web/.svelte-kit/output/server/chunks/false.js +0 -4
- /package/dist/cli/{propose-policy.d.mts → manage-policies.d.mts} +0 -0
- /package/{src/cli/e2e → e2e/_helpers}/global-setup.ts +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { get_request_store, with_request_store } from "@sveltejs/kit/internal/server";
|
|
2
2
|
import { parse } from "devalue";
|
|
3
3
|
import { error, json } from "@sveltejs/kit";
|
|
4
|
-
import {
|
|
4
|
+
import { x as stringify_remote_arg, j as create_remote_key, y as unfriendly_hydratable, e as noop, l as stringify, M as MUTATIVE_METHODS, z as create_field_proxy, A as normalize_issue, B as set_nested_value, C as flatten_issues, D as deep_set, h as handle_error_and_jsonify, p as parse_remote_arg } from "./chunks/shared.js";
|
|
5
5
|
import { ValidationError, HttpError, SvelteKitError } from "@sveltejs/kit/internal";
|
|
6
|
-
import { B as BROWSER } from "./chunks/
|
|
6
|
+
import { B as BROWSER } from "./chunks/render-context.js";
|
|
7
7
|
import { b as base, c as app_dir, p as prerendering } from "./chunks/environment.js";
|
|
8
8
|
function create_validator(validate_or_fn, maybe_fn) {
|
|
9
9
|
if (!maybe_fn) {
|
|
@@ -36,10 +36,22 @@ function create_validator(validate_or_fn, maybe_fn) {
|
|
|
36
36
|
'Invalid validator passed to remote function. Expected "unchecked" or a Standard Schema (https://standardschema.dev)'
|
|
37
37
|
);
|
|
38
38
|
}
|
|
39
|
-
async function get_response(
|
|
39
|
+
async function get_response(internals, arg, state, get_result) {
|
|
40
40
|
await 0;
|
|
41
|
-
const cache = get_cache(
|
|
42
|
-
|
|
41
|
+
const cache = get_cache(internals, state);
|
|
42
|
+
const key = stringify_remote_arg(arg, state.transport);
|
|
43
|
+
const entry = cache[key] ??= {
|
|
44
|
+
serialize: false,
|
|
45
|
+
data: get_result()
|
|
46
|
+
};
|
|
47
|
+
entry.serialize ||= !!state.is_in_universal_load;
|
|
48
|
+
if (state.is_in_render && internals.id) {
|
|
49
|
+
const remote_key = create_remote_key(internals.id, key);
|
|
50
|
+
Promise.resolve(entry.data).then((value) => {
|
|
51
|
+
void unfriendly_hydratable(remote_key, () => stringify(value, state.transport));
|
|
52
|
+
}).catch(noop);
|
|
53
|
+
}
|
|
54
|
+
return entry.data;
|
|
43
55
|
}
|
|
44
56
|
function parse_remote_response(data, transport) {
|
|
45
57
|
const revivers = {};
|
|
@@ -85,11 +97,11 @@ async function run_remote_function(event, state, allow_cookies, get_input, fn) {
|
|
|
85
97
|
const input = await with_request_store(store, get_input);
|
|
86
98
|
return with_request_store(store, () => fn(input));
|
|
87
99
|
}
|
|
88
|
-
function get_cache(
|
|
89
|
-
let cache = state.
|
|
100
|
+
function get_cache(internals, state = get_request_store().state) {
|
|
101
|
+
let cache = state.remote.data?.get(internals);
|
|
90
102
|
if (cache === void 0) {
|
|
91
103
|
cache = {};
|
|
92
|
-
(state.
|
|
104
|
+
(state.remote.data ??= /* @__PURE__ */ new Map()).set(internals, cache);
|
|
93
105
|
}
|
|
94
106
|
return cache;
|
|
95
107
|
}
|
|
@@ -100,13 +112,17 @@ function command(validate_or_fn, maybe_fn) {
|
|
|
100
112
|
const __ = { type: "command", id: "", name: "" };
|
|
101
113
|
const wrapper = (arg) => {
|
|
102
114
|
const { event, state } = get_request_store();
|
|
103
|
-
if (!
|
|
104
|
-
|
|
115
|
+
if (!MUTATIVE_METHODS.includes(event.request.method)) {
|
|
116
|
+
throw new Error(
|
|
117
|
+
`Cannot call a command (\`${__.name}(${maybe_fn ? "..." : ""})\`) from a ${event.request.method} handler`
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
if (state.is_in_render) {
|
|
105
121
|
throw new Error(
|
|
106
|
-
`Cannot call a command (\`${__.name}(${maybe_fn ? "..." : ""})\`)
|
|
122
|
+
`Cannot call a command (\`${__.name}(${maybe_fn ? "..." : ""})\`) during server-side rendering`
|
|
107
123
|
);
|
|
108
124
|
}
|
|
109
|
-
state.refreshes ??= {};
|
|
125
|
+
state.remote.refreshes ??= {};
|
|
110
126
|
const promise = Promise.resolve(
|
|
111
127
|
run_remote_function(event, state, true, () => validate(arg), fn)
|
|
112
128
|
);
|
|
@@ -157,7 +173,7 @@ function form(validate_or_fn, maybe_fn) {
|
|
|
157
173
|
if (validated !== void 0) {
|
|
158
174
|
data = validated.value;
|
|
159
175
|
}
|
|
160
|
-
state.refreshes ??= {};
|
|
176
|
+
state.remote.refreshes ??= {};
|
|
161
177
|
const issue = create_issues();
|
|
162
178
|
try {
|
|
163
179
|
output.result = await run_remote_function(
|
|
@@ -176,7 +192,7 @@ function form(validate_or_fn, maybe_fn) {
|
|
|
176
192
|
}
|
|
177
193
|
}
|
|
178
194
|
if (!event.isRemoteRequest) {
|
|
179
|
-
get_cache(__, state)[""] ??= output;
|
|
195
|
+
get_cache(__, state)[""] ??= { serialize: true, data: output };
|
|
180
196
|
}
|
|
181
197
|
return output;
|
|
182
198
|
}
|
|
@@ -190,29 +206,29 @@ function form(validate_or_fn, maybe_fn) {
|
|
|
190
206
|
get() {
|
|
191
207
|
return create_field_proxy(
|
|
192
208
|
{},
|
|
193
|
-
() => get_cache(__)?.[""]?.input ?? {},
|
|
209
|
+
() => get_cache(__)?.[""]?.data?.input ?? {},
|
|
194
210
|
(path, value) => {
|
|
195
211
|
const cache = get_cache(__);
|
|
196
|
-
const
|
|
197
|
-
if (data?.submission) {
|
|
212
|
+
const entry = cache[""];
|
|
213
|
+
if (entry?.data?.submission) {
|
|
198
214
|
return;
|
|
199
215
|
}
|
|
200
216
|
if (path.length === 0) {
|
|
201
|
-
(cache[""] ??= {}).input = value;
|
|
217
|
+
(cache[""] ??= { serialize: true, data: {} }).data.input = value;
|
|
202
218
|
return;
|
|
203
219
|
}
|
|
204
|
-
const input = data?.input ?? {};
|
|
220
|
+
const input = entry?.data?.input ?? {};
|
|
205
221
|
deep_set(input, path.map(String), value);
|
|
206
|
-
(cache[""] ??= {}).input = input;
|
|
222
|
+
(cache[""] ??= { serialize: true, data: {} }).data.input = input;
|
|
207
223
|
},
|
|
208
|
-
() => flatten_issues(get_cache(__)?.[""]?.issues ?? [])
|
|
224
|
+
() => flatten_issues(get_cache(__)?.[""]?.data?.issues ?? [])
|
|
209
225
|
);
|
|
210
226
|
}
|
|
211
227
|
});
|
|
212
228
|
Object.defineProperty(instance, "result", {
|
|
213
229
|
get() {
|
|
214
230
|
try {
|
|
215
|
-
return get_cache(__)?.[""]?.result;
|
|
231
|
+
return get_cache(__)?.[""]?.data?.result;
|
|
216
232
|
} catch {
|
|
217
233
|
return void 0;
|
|
218
234
|
}
|
|
@@ -236,12 +252,12 @@ function form(validate_or_fn, maybe_fn) {
|
|
|
236
252
|
value: (key2) => {
|
|
237
253
|
const { state } = get_request_store();
|
|
238
254
|
const cache_key = __.id + "|" + JSON.stringify(key2);
|
|
239
|
-
let instance2 = (state.
|
|
255
|
+
let instance2 = (state.remote.forms ??= /* @__PURE__ */ new Map()).get(cache_key);
|
|
240
256
|
if (!instance2) {
|
|
241
257
|
instance2 = create_instance(key2);
|
|
242
258
|
instance2.__.id = `${__.id}/${encodeURIComponent(JSON.stringify(key2))}`;
|
|
243
259
|
instance2.__.name = __.name;
|
|
244
|
-
state.
|
|
260
|
+
state.remote.forms.set(cache_key, instance2);
|
|
245
261
|
}
|
|
246
262
|
return instance2;
|
|
247
263
|
}
|
|
@@ -341,8 +357,9 @@ function prerender(validate_or_fn, fn_or_options, maybe_options) {
|
|
|
341
357
|
return await get_response(__, arg, state, async () => {
|
|
342
358
|
const key = stringify_remote_arg(arg, state.transport);
|
|
343
359
|
const cache = get_cache(__, state);
|
|
344
|
-
const promise3 = cache[key] ??=
|
|
345
|
-
|
|
360
|
+
const promise3 = (cache[key] ??= {
|
|
361
|
+
serialize: true,
|
|
362
|
+
data: fetch(new URL(url, event.url.origin).href).then(async (response) => {
|
|
346
363
|
if (!response.ok) {
|
|
347
364
|
throw new Error("Prerendered response not found");
|
|
348
365
|
}
|
|
@@ -351,8 +368,8 @@ function prerender(validate_or_fn, fn_or_options, maybe_options) {
|
|
|
351
368
|
error(prerendered.status, prerendered.error);
|
|
352
369
|
}
|
|
353
370
|
return prerendered.result;
|
|
354
|
-
}
|
|
355
|
-
);
|
|
371
|
+
})
|
|
372
|
+
}).data;
|
|
356
373
|
return parse_remote_response(await promise3, state.transport);
|
|
357
374
|
});
|
|
358
375
|
} catch {
|
|
@@ -383,8 +400,7 @@ function prerender(validate_or_fn, fn_or_options, maybe_options) {
|
|
|
383
400
|
}
|
|
384
401
|
return result;
|
|
385
402
|
})();
|
|
386
|
-
promise.catch(
|
|
387
|
-
});
|
|
403
|
+
promise.catch(noop);
|
|
388
404
|
return (
|
|
389
405
|
/** @type {RemoteResource<Output>} */
|
|
390
406
|
promise
|
|
@@ -397,7 +413,7 @@ function prerender(validate_or_fn, fn_or_options, maybe_options) {
|
|
|
397
413
|
function query(validate_or_fn, maybe_fn) {
|
|
398
414
|
const fn = maybe_fn ?? validate_or_fn;
|
|
399
415
|
const validate = create_validator(validate_or_fn, maybe_fn);
|
|
400
|
-
const __ = { type: "query", id: "", name: "" };
|
|
416
|
+
const __ = { type: "query", id: "", name: "", validate };
|
|
401
417
|
const wrapper = (arg) => {
|
|
402
418
|
if (prerendering) {
|
|
403
419
|
throw new Error(
|
|
@@ -405,28 +421,30 @@ function query(validate_or_fn, maybe_fn) {
|
|
|
405
421
|
);
|
|
406
422
|
}
|
|
407
423
|
const { event, state } = get_request_store();
|
|
408
|
-
const
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
const refresh_context = get_refresh_context(__, "refresh", arg);
|
|
415
|
-
const is_immediate_refresh = !refresh_context.cache[refresh_context.cache_key];
|
|
416
|
-
const value = is_immediate_refresh ? promise : get_remote_function_result();
|
|
417
|
-
return update_refresh_value(refresh_context, value, is_immediate_refresh);
|
|
418
|
-
};
|
|
419
|
-
promise.withOverride = () => {
|
|
420
|
-
throw new Error(`Cannot call '${__.name}.withOverride()' on the server`);
|
|
421
|
-
};
|
|
422
|
-
return (
|
|
423
|
-
/** @type {RemoteQuery<Output>} */
|
|
424
|
-
promise
|
|
424
|
+
const is_validated = is_validated_argument(__, state, arg);
|
|
425
|
+
return create_query_resource(
|
|
426
|
+
__,
|
|
427
|
+
arg,
|
|
428
|
+
state,
|
|
429
|
+
() => run_remote_function(event, state, false, () => is_validated ? arg : validate(arg), fn)
|
|
425
430
|
);
|
|
426
431
|
};
|
|
427
432
|
Object.defineProperty(wrapper, "__", { value: __ });
|
|
428
433
|
return wrapper;
|
|
429
434
|
}
|
|
435
|
+
function is_validated_argument(__, state, arg) {
|
|
436
|
+
return state.remote.validated?.get(__.id)?.has(arg) ?? false;
|
|
437
|
+
}
|
|
438
|
+
function mark_argument_validated(__, state, arg) {
|
|
439
|
+
const validated = state.remote.validated ??= /* @__PURE__ */ new Map();
|
|
440
|
+
let validated_args = validated.get(__.id);
|
|
441
|
+
if (!validated_args) {
|
|
442
|
+
validated_args = /* @__PURE__ */ new Set();
|
|
443
|
+
validated.set(__.id, validated_args);
|
|
444
|
+
}
|
|
445
|
+
validated_args.add(arg);
|
|
446
|
+
return arg;
|
|
447
|
+
}
|
|
430
448
|
// @__NO_SIDE_EFFECTS__
|
|
431
449
|
function batch(validate_or_fn, maybe_fn) {
|
|
432
450
|
const fn = maybe_fn ?? validate_or_fn;
|
|
@@ -447,7 +465,8 @@ function batch(validate_or_fn, maybe_fn) {
|
|
|
447
465
|
return Promise.all(
|
|
448
466
|
input.map(async (arg, i) => {
|
|
449
467
|
try {
|
|
450
|
-
|
|
468
|
+
const data = get_result(arg, i);
|
|
469
|
+
return { type: "result", data: stringify(data, state.transport) };
|
|
451
470
|
} catch (error2) {
|
|
452
471
|
return {
|
|
453
472
|
type: "error",
|
|
@@ -461,7 +480,7 @@ function batch(validate_or_fn, maybe_fn) {
|
|
|
461
480
|
);
|
|
462
481
|
}
|
|
463
482
|
};
|
|
464
|
-
let batching =
|
|
483
|
+
let batching = /* @__PURE__ */ new Map();
|
|
465
484
|
const wrapper = (arg) => {
|
|
466
485
|
if (prerendering) {
|
|
467
486
|
throw new Error(
|
|
@@ -469,64 +488,112 @@ function batch(validate_or_fn, maybe_fn) {
|
|
|
469
488
|
);
|
|
470
489
|
}
|
|
471
490
|
const { event, state } = get_request_store();
|
|
472
|
-
|
|
491
|
+
return create_query_resource(__, arg, state, () => {
|
|
473
492
|
return new Promise((resolve, reject) => {
|
|
474
|
-
|
|
475
|
-
batching.
|
|
476
|
-
if (
|
|
493
|
+
const key = stringify_remote_arg(arg, state.transport);
|
|
494
|
+
const entry = batching.get(key);
|
|
495
|
+
if (entry) {
|
|
496
|
+
entry.resolvers.push({ resolve, reject });
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
batching.set(key, {
|
|
500
|
+
arg,
|
|
501
|
+
resolvers: [{ resolve, reject }]
|
|
502
|
+
});
|
|
503
|
+
if (batching.size > 1) return;
|
|
477
504
|
setTimeout(async () => {
|
|
478
505
|
const batched = batching;
|
|
479
|
-
batching =
|
|
506
|
+
batching = /* @__PURE__ */ new Map();
|
|
507
|
+
const entries = Array.from(batched.values());
|
|
508
|
+
const args = entries.map((entry2) => entry2.arg);
|
|
480
509
|
try {
|
|
481
510
|
return await run_remote_function(
|
|
482
511
|
event,
|
|
483
512
|
state,
|
|
484
513
|
false,
|
|
485
|
-
async () => Promise.all(
|
|
514
|
+
async () => Promise.all(args.map(validate)),
|
|
486
515
|
async (input) => {
|
|
487
516
|
const get_result = await fn(input);
|
|
488
|
-
for (let i = 0; i <
|
|
517
|
+
for (let i = 0; i < entries.length; i++) {
|
|
489
518
|
try {
|
|
490
|
-
|
|
519
|
+
const result = get_result(input[i], i);
|
|
520
|
+
for (const resolver of entries[i].resolvers) {
|
|
521
|
+
resolver.resolve(result);
|
|
522
|
+
}
|
|
491
523
|
} catch (error2) {
|
|
492
|
-
|
|
524
|
+
for (const resolver of entries[i].resolvers) {
|
|
525
|
+
resolver.reject(error2);
|
|
526
|
+
}
|
|
493
527
|
}
|
|
494
528
|
}
|
|
495
529
|
}
|
|
496
530
|
);
|
|
497
531
|
} catch (error2) {
|
|
498
|
-
for (const
|
|
499
|
-
resolver.
|
|
532
|
+
for (const entry2 of batched.values()) {
|
|
533
|
+
for (const resolver of entry2.resolvers) {
|
|
534
|
+
resolver.reject(error2);
|
|
535
|
+
}
|
|
500
536
|
}
|
|
501
537
|
}
|
|
502
538
|
}, 0);
|
|
503
539
|
});
|
|
504
|
-
};
|
|
505
|
-
const promise = get_response(__, arg, state, get_remote_function_result);
|
|
506
|
-
promise.catch(() => {
|
|
507
540
|
});
|
|
508
|
-
|
|
509
|
-
|
|
541
|
+
};
|
|
542
|
+
Object.defineProperty(wrapper, "__", { value: __ });
|
|
543
|
+
return wrapper;
|
|
544
|
+
}
|
|
545
|
+
function create_query_resource(__, arg, state, fn) {
|
|
546
|
+
let promise = null;
|
|
547
|
+
const get_promise = () => {
|
|
548
|
+
return promise ??= get_response(__, arg, state, fn);
|
|
549
|
+
};
|
|
550
|
+
return {
|
|
551
|
+
/** @type {Promise<any>['catch']} */
|
|
552
|
+
catch(onrejected) {
|
|
553
|
+
return get_promise().catch(onrejected);
|
|
554
|
+
},
|
|
555
|
+
current: void 0,
|
|
556
|
+
error: void 0,
|
|
557
|
+
/** @type {Promise<any>['finally']} */
|
|
558
|
+
finally(onfinally) {
|
|
559
|
+
return get_promise().finally(onfinally);
|
|
560
|
+
},
|
|
561
|
+
loading: true,
|
|
562
|
+
ready: false,
|
|
563
|
+
refresh() {
|
|
510
564
|
const refresh_context = get_refresh_context(__, "refresh", arg);
|
|
511
565
|
const is_immediate_refresh = !refresh_context.cache[refresh_context.cache_key];
|
|
512
|
-
const value = is_immediate_refresh ?
|
|
566
|
+
const value = is_immediate_refresh ? get_promise() : fn();
|
|
513
567
|
return update_refresh_value(refresh_context, value, is_immediate_refresh);
|
|
514
|
-
}
|
|
515
|
-
|
|
568
|
+
},
|
|
569
|
+
run() {
|
|
570
|
+
if (!state.is_in_universal_load) {
|
|
571
|
+
throw new Error(
|
|
572
|
+
"On the server, .run() can only be called in universal `load` functions. Anywhere else, just await the query directly"
|
|
573
|
+
);
|
|
574
|
+
}
|
|
575
|
+
return get_response(__, arg, state, fn);
|
|
576
|
+
},
|
|
577
|
+
/** @param {any} value */
|
|
578
|
+
set(value) {
|
|
579
|
+
return update_refresh_value(get_refresh_context(__, "set", arg), value);
|
|
580
|
+
},
|
|
581
|
+
/** @type {Promise<any>['then']} */
|
|
582
|
+
then(onfulfilled, onrejected) {
|
|
583
|
+
return get_promise().then(onfulfilled, onrejected);
|
|
584
|
+
},
|
|
585
|
+
withOverride() {
|
|
516
586
|
throw new Error(`Cannot call '${__.name}.withOverride()' on the server`);
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
);
|
|
587
|
+
},
|
|
588
|
+
get [Symbol.toStringTag]() {
|
|
589
|
+
return "QueryResource";
|
|
590
|
+
}
|
|
522
591
|
};
|
|
523
|
-
Object.defineProperty(wrapper, "__", { value: __ });
|
|
524
|
-
return wrapper;
|
|
525
592
|
}
|
|
526
593
|
Object.defineProperty(query, "batch", { value: batch, enumerable: true });
|
|
527
594
|
function get_refresh_context(__, action, arg) {
|
|
528
595
|
const { state } = get_request_store();
|
|
529
|
-
const { refreshes } = state;
|
|
596
|
+
const { refreshes } = state.remote;
|
|
530
597
|
if (!refreshes) {
|
|
531
598
|
const name = __.type === "query_batch" ? `query.batch '${__.name}'` : `query '${__.name}'`;
|
|
532
599
|
throw new Error(
|
|
@@ -541,17 +608,114 @@ function get_refresh_context(__, action, arg) {
|
|
|
541
608
|
function update_refresh_value({ __, refreshes, refreshes_key, cache, cache_key }, value, is_immediate_refresh = false) {
|
|
542
609
|
const promise = Promise.resolve(value);
|
|
543
610
|
if (!is_immediate_refresh) {
|
|
544
|
-
cache[cache_key] = promise;
|
|
611
|
+
cache[cache_key] = { serialize: true, data: promise };
|
|
545
612
|
}
|
|
546
613
|
if (__.id) {
|
|
547
614
|
refreshes[refreshes_key] = promise;
|
|
548
615
|
}
|
|
549
|
-
return promise.then(
|
|
550
|
-
|
|
616
|
+
return promise.then(noop, noop);
|
|
617
|
+
}
|
|
618
|
+
function requested(query2, limit = Infinity) {
|
|
619
|
+
const { state } = get_request_store();
|
|
620
|
+
const internals = (
|
|
621
|
+
/** @type {RemoteQueryInternals | undefined} */
|
|
622
|
+
/** @type {any} */
|
|
623
|
+
query2.__
|
|
624
|
+
);
|
|
625
|
+
if (!internals || internals.type !== "query") {
|
|
626
|
+
throw new Error("requested(...) expects a query function created with query(...)");
|
|
627
|
+
}
|
|
628
|
+
const requested2 = state.remote.requested;
|
|
629
|
+
const payloads = requested2?.get(internals.id) ?? [];
|
|
630
|
+
const refreshes = state.remote.refreshes ??= {};
|
|
631
|
+
const [selected, skipped] = split_limit(payloads, limit);
|
|
632
|
+
const record_failure = (payload, error2) => {
|
|
633
|
+
const promise = Promise.reject(error2);
|
|
634
|
+
promise.catch(noop);
|
|
635
|
+
const key = create_remote_key(internals.id, payload);
|
|
636
|
+
refreshes[key] = promise;
|
|
637
|
+
};
|
|
638
|
+
for (const payload of skipped) {
|
|
639
|
+
record_failure(
|
|
640
|
+
payload,
|
|
641
|
+
new Error(
|
|
642
|
+
`Requested refresh was rejected because it exceeded requested(${internals.name}, ${limit}) limit`
|
|
643
|
+
)
|
|
644
|
+
);
|
|
645
|
+
}
|
|
646
|
+
return {
|
|
647
|
+
*[Symbol.iterator]() {
|
|
648
|
+
for (const payload of selected) {
|
|
649
|
+
try {
|
|
650
|
+
const parsed = parse_remote_arg(payload, state.transport);
|
|
651
|
+
const validated = internals.validate(parsed);
|
|
652
|
+
if (is_thenable(validated)) {
|
|
653
|
+
throw new Error(
|
|
654
|
+
// TODO improve
|
|
655
|
+
`requested(${internals.name}, ${limit}) cannot be used with synchronous iteration because the query validator is async. Use \`for await ... of\` instead`
|
|
656
|
+
);
|
|
657
|
+
}
|
|
658
|
+
yield mark_argument_validated(internals, state, validated);
|
|
659
|
+
} catch (error2) {
|
|
660
|
+
record_failure(payload, error2);
|
|
661
|
+
continue;
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
async *[Symbol.asyncIterator]() {
|
|
666
|
+
yield* race_all(selected, async (payload) => {
|
|
667
|
+
try {
|
|
668
|
+
const parsed = parse_remote_arg(payload, state.transport);
|
|
669
|
+
const validated = await internals.validate(parsed);
|
|
670
|
+
return mark_argument_validated(internals, state, validated);
|
|
671
|
+
} catch (error2) {
|
|
672
|
+
record_failure(payload, error2);
|
|
673
|
+
throw new Error(`Skipping ${internals.name}(${payload})`, { cause: error2 });
|
|
674
|
+
}
|
|
675
|
+
});
|
|
676
|
+
},
|
|
677
|
+
async refreshAll() {
|
|
678
|
+
for await (const arg of this) {
|
|
679
|
+
void query2(arg).refresh();
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
};
|
|
683
|
+
}
|
|
684
|
+
function split_limit(array, limit) {
|
|
685
|
+
if (limit === Infinity) {
|
|
686
|
+
return [array, []];
|
|
687
|
+
}
|
|
688
|
+
if (!Number.isInteger(limit) || limit < 0) {
|
|
689
|
+
throw new Error("Limit must be a non-negative integer or Infinity");
|
|
690
|
+
}
|
|
691
|
+
return [array.slice(0, limit), array.slice(limit)];
|
|
692
|
+
}
|
|
693
|
+
function is_thenable(value) {
|
|
694
|
+
return !!value && (typeof value === "object" || typeof value === "function") && "then" in value;
|
|
695
|
+
}
|
|
696
|
+
async function* race_all(array, fn) {
|
|
697
|
+
const pending = /* @__PURE__ */ new Set();
|
|
698
|
+
for (const value of array) {
|
|
699
|
+
const promise = Promise.resolve(fn(value)).then((result) => ({
|
|
700
|
+
promise,
|
|
701
|
+
value: result
|
|
702
|
+
}));
|
|
703
|
+
promise.catch(noop);
|
|
704
|
+
pending.add(promise);
|
|
705
|
+
}
|
|
706
|
+
while (pending.size > 0) {
|
|
707
|
+
try {
|
|
708
|
+
const { promise, value } = await Promise.race(pending);
|
|
709
|
+
pending.delete(promise);
|
|
710
|
+
yield value;
|
|
711
|
+
} catch {
|
|
712
|
+
}
|
|
713
|
+
}
|
|
551
714
|
}
|
|
552
715
|
export {
|
|
553
716
|
command,
|
|
554
717
|
form,
|
|
555
718
|
prerender,
|
|
556
|
-
query
|
|
719
|
+
query,
|
|
720
|
+
requested
|
|
557
721
|
};
|