permdock 0.0.0 → 0.2.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/README.md +327 -1
- package/dist/a2a/index.d.ts +169 -0
- package/dist/a2a/index.js +232 -0
- package/dist/adapter-context-mlWsVGGg.js +23 -0
- package/dist/ai-sdk/index.d.ts +95 -0
- package/dist/ai-sdk/index.js +154 -0
- package/dist/approval-required-TzNB9oQA.js +6 -0
- package/dist/approvals/index.d.ts +3 -0
- package/dist/approvals/index.js +5 -0
- package/dist/approvals-DbYAuNkG.js +224 -0
- package/dist/approvers-DT4AVyIg.js +52 -0
- package/dist/arazzo-BAgw9ap6.js +70 -0
- package/dist/arazzo-cmvX2jDe.js +54 -0
- package/dist/authzen/index.d.ts +39 -0
- package/dist/authzen/index.js +302 -0
- package/dist/better-auth/index.d.ts +109 -0
- package/dist/better-auth/index.js +344 -0
- package/dist/better-supabase/index.d.ts +206 -0
- package/dist/better-supabase/index.js +620 -0
- package/dist/bind-CVy3Espv.d.ts +25 -0
- package/dist/bind-VnYn2HKq.js +97 -0
- package/dist/boundary-BM8a_P6E.js +13 -0
- package/dist/boundary-BmHxVH1J.d.ts +15 -0
- package/dist/budget-JqcRqyhK.d.ts +11 -0
- package/dist/budget-NbEtbJC_.js +11 -0
- package/dist/canonical-json-DemiK4Vp.js +26 -0
- package/dist/capability-4qPdO9gk.js +173 -0
- package/dist/capability-Dq43tT1u.d.ts +99 -0
- package/dist/catalog/index.d.ts +12 -0
- package/dist/catalog/index.js +2 -0
- package/dist/catalog-BjZSovXQ.js +2 -0
- package/dist/catalog-doc-Dsc9y7sd.js +309 -0
- package/dist/catalog-h2tlKFkq.js +48 -0
- package/dist/catalog-path-CnI0XTFK.js +12 -0
- package/dist/catalog-z8q6bi_r.js +55 -0
- package/dist/claude-agent/index.d.ts +72 -0
- package/dist/claude-agent/index.js +77 -0
- package/dist/clerk/index.d.ts +65 -0
- package/dist/clerk/index.js +301 -0
- package/dist/cli/bin.d.ts +1 -0
- package/dist/cli/bin.js +20 -0
- package/dist/cli/index.d.ts +46 -0
- package/dist/cli/index.js +5 -0
- package/dist/clients-C7zLFuWT.d.ts +12 -0
- package/dist/clients-DjU5ABMy.js +23 -0
- package/dist/cloud/index.d.ts +90 -0
- package/dist/cloud/index.js +404 -0
- package/dist/cloud-BGhHS-lY.js +50 -0
- package/dist/cloud-Bo3e9Ak3.js +118 -0
- package/dist/collect-DDDv_ESs.js +502 -0
- package/dist/collect-DLlujdHC.js +83 -0
- package/dist/collect-rG2IQ3t0.js +2 -0
- package/dist/commands-DWOrSQic.js +97 -0
- package/dist/compact-y6vfu2_f.js +19 -0
- package/dist/compare-pfyVnBjE.js +12 -0
- package/dist/compile/index.d.ts +3 -0
- package/dist/compile/index.js +2 -0
- package/dist/compile-Ba4blROR.js +613 -0
- package/dist/compile-CNnl6uIt.d.ts +94 -0
- package/dist/config-BJiM-xAm.js +157 -0
- package/dist/config-Bn00Z3ks.js +36 -0
- package/dist/config-report-Dw_JcUqT.js +44 -0
- package/dist/connection-CU8MQxRi.js +194 -0
- package/dist/context-Ttp0ekMT.js +82 -0
- package/dist/convex/index.d.ts +45 -0
- package/dist/convex/index.js +65 -0
- package/dist/create-BWyx3jua.d.ts +245 -0
- package/dist/create-CPhDL6qx.js +253 -0
- package/dist/credential-8P81ff4u.js +306 -0
- package/dist/delegation-D8pUEuce.js +103 -0
- package/dist/describe-B_gVZEVi.js +94 -0
- package/dist/describe-PdoqESvg.d.ts +36 -0
- package/dist/diff-B8Tunc3o.js +451 -0
- package/dist/diff-CzqLxZ77.js +48 -0
- package/dist/digest-B3kc_PgQ.d.ts +19 -0
- package/dist/digest-BI-6aa6d.js +27 -0
- package/dist/doctor-WpvG6p4k.js +1194 -0
- package/dist/doctor-collect-ByfYlNv1.js +664 -0
- package/dist/doctor-rOr-4ZfS.js +53 -0
- package/dist/drizzle/index.d.ts +73 -0
- package/dist/drizzle/index.js +160 -0
- package/dist/duration-xK2jGFVc.js +25 -0
- package/dist/elysia/index.d.ts +49 -0
- package/dist/elysia/index.js +59 -0
- package/dist/errors-CWfoNg9N.js +47 -0
- package/dist/errors-Cz5zn0mW.js +123 -0
- package/dist/errors-DAqevpNk.d.ts +125 -0
- package/dist/errors-DRnGZHzF.js +30 -0
- package/dist/evaluation-items-CfCCejQd.js +40 -0
- package/dist/evaluations-tz6D9A2G.js +461 -0
- package/dist/eve/index.d.ts +86 -0
- package/dist/eve/index.js +176 -0
- package/dist/expiry-BoBJ8Tvc.js +7 -0
- package/dist/express/index.d.ts +23 -0
- package/dist/express/index.js +78 -0
- package/dist/fastify/index.d.ts +33 -0
- package/dist/fastify/index.js +92 -0
- package/dist/fields-BMl1RxoX.js +26 -0
- package/dist/files-DWUN9PzI.js +125 -0
- package/dist/fixtures-ht28Cplr.js +67 -0
- package/dist/freeze-CrU8nQeX.js +60 -0
- package/dist/from-snapshot-C3sHpZNS.js +569 -0
- package/dist/generate-CH7ThJ14.js +173 -0
- package/dist/grantee-Cv5Sogfv.js +602 -0
- package/dist/graph-sql-B-dsAT6j.d.ts +29 -0
- package/dist/headers-BZSDieNT.js +6 -0
- package/dist/headers-Cf-zWvsO.d.ts +6 -0
- package/dist/helpers-H_KARDVC.js +421 -0
- package/dist/hono/index.d.ts +48 -0
- package/dist/hono/index.js +99 -0
- package/dist/hosted-DJQw46hn.js +266 -0
- package/dist/http-BIhmLfCc.js +95 -0
- package/dist/http-DPuDaChb.d.ts +13 -0
- package/dist/http-SO7qGttf.js +44 -0
- package/dist/ids-DC4V4CFu.js +18 -0
- package/dist/index-A0YNL8jZ.d.ts +177 -0
- package/dist/index-CtE07CBF.d.ts +6 -0
- package/dist/index-D3vbkoSI.d.ts +483 -0
- package/dist/index-D6_cSa1z.d.ts +201 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +26 -0
- package/dist/instance-options-BK_rNOSC.d.ts +11 -0
- package/dist/instance-options-Dhhcnm3y.js +22 -0
- package/dist/json-schema-BsAflUGW.js +106 -0
- package/dist/jwt/index.d.ts +91 -0
- package/dist/jwt/index.js +590 -0
- package/dist/kernel-GSQnMz3O.js +208 -0
- package/dist/kysely/index.d.ts +78 -0
- package/dist/kysely/index.js +129 -0
- package/dist/live-options-H2eG8dfJ.js +60 -0
- package/dist/load-DhWEB9P1.js +75 -0
- package/dist/load-DwJUafYN.js +2 -0
- package/dist/load-jose-BL6LH4bL.js +11 -0
- package/dist/lru-8q4WZjBV.js +28 -0
- package/dist/manifest-iaoBXHKc.js +783 -0
- package/dist/manifest-uDS9y5de.d.ts +206 -0
- package/dist/map-AcxK9o_D.js +147 -0
- package/dist/map-claims-Z4QZOiFF.js +369 -0
- package/dist/map-error-pgUWNNtG.js +23 -0
- package/dist/markers-B0hYLvMD.js +60 -0
- package/dist/may-use-DndQ5tQ-.js +77 -0
- package/dist/mcp/index.d.ts +159 -0
- package/dist/mcp/index.js +603 -0
- package/dist/nest/index.d.ts +75 -0
- package/dist/nest/index.js +261 -0
- package/dist/next/client.d.ts +23 -0
- package/dist/next/client.js +33 -0
- package/dist/next/index.d.ts +93 -0
- package/dist/next/index.js +180 -0
- package/dist/next/plugin.d.ts +14 -0
- package/dist/next/plugin.js +33 -0
- package/dist/node/index.d.ts +24 -0
- package/dist/node/index.js +34 -0
- package/dist/openai/index.d.ts +62 -0
- package/dist/openai/index.js +92 -0
- package/dist/openapi/index.d.ts +176 -0
- package/dist/openapi/index.js +3 -0
- package/dist/openapi-Bbg4wGVL.js +164 -0
- package/dist/openapi-BqRBvAng.js +538 -0
- package/dist/openapi-CqqEbHsL.js +250 -0
- package/dist/openapi-import-cmwetbzw.js +5959 -0
- package/dist/openapi-schema--ARjyfQr.js +6902 -0
- package/dist/orpc/index.d.ts +51 -0
- package/dist/orpc/index.js +145 -0
- package/dist/otel/index.d.ts +13 -0
- package/dist/otel/index.js +202 -0
- package/dist/package-root-zGkxO3oN.js +30 -0
- package/dist/parse-BuyjxhZV.js +53 -0
- package/dist/parse-local-manifest-BkGQNzAh.d.ts +10 -0
- package/dist/parse-local-manifest-BrMozJCo.js +36 -0
- package/dist/pdp/index.d.ts +22 -0
- package/dist/pdp/index.js +682 -0
- package/dist/peer-BOr_kJE1.js +31 -0
- package/dist/permdock-CzqXjCpU.js +3471 -0
- package/dist/permissions-CDgvKG5L.d.ts +52 -0
- package/dist/permissions-CpZrivYv.js +142 -0
- package/dist/permissions-DVoF6dMt.js +662 -0
- package/dist/permissions-DttnqqxC.d.ts +214 -0
- package/dist/pins-8ILTftC9.js +12 -0
- package/dist/policy-CFZAr_Al.d.ts +2252 -0
- package/dist/policy-D8UFyERw.d.ts +20 -0
- package/dist/policy-xyWg7QdR.js +1122 -0
- package/dist/powersync-A8x_Yyvh.js +2 -0
- package/dist/powersync-C7kLglqX.js +540 -0
- package/dist/powersync-yW1UUFzp.js +62 -0
- package/dist/prisma/index.d.ts +136 -0
- package/dist/prisma/index.js +455 -0
- package/dist/problem-B43ztKIm.js +191 -0
- package/dist/problem-details-CkL50EEf.d.ts +7 -0
- package/dist/problem-details-_AMOYz-w.js +144 -0
- package/dist/prompt-CXYhLfsS.js +32 -0
- package/dist/protected-CNsMzrVd.d.ts +27 -0
- package/dist/protected-Cs6kTaHo.js +100 -0
- package/dist/protected-bZs6rbT1.d.ts +40 -0
- package/dist/provider-Cjr62YMV.d.ts +6 -0
- package/dist/provider-DLzpb2Xz.js +52 -0
- package/dist/provider-store-DNyC1y48.js +43 -0
- package/dist/react/index.d.ts +8 -0
- package/dist/react/index.js +7 -0
- package/dist/react/provider-client.d.ts +2 -0
- package/dist/react/provider-client.js +3 -0
- package/dist/react-native/index.d.ts +198 -0
- package/dist/react-native/index.js +696 -0
- package/dist/refs-KYb4ntaz.js +91 -0
- package/dist/relations-cjOL01hZ.js +505 -0
- package/dist/replay-BsOyTrdV.js +28 -0
- package/dist/replay-sqBGMnNs.d.ts +5 -0
- package/dist/resource-ref-CaS9yVPi.js +20 -0
- package/dist/revocations-Bhr0aMIC.js +27 -0
- package/dist/revocations-Cy06JNx2.d.ts +21 -0
- package/dist/rls-BMNydpHk.js +2521 -0
- package/dist/rls-CEvs64Kj.js +238 -0
- package/dist/rls-fields-BMasREhR.js +3502 -0
- package/dist/rls-graph-pc9fuXYm.js +435 -0
- package/dist/rls-import-D8F7j35Q.js +943 -0
- package/dist/rls-migrate-7wikfrVI.js +367 -0
- package/dist/rls-ownership-B5Lkq62W.js +843 -0
- package/dist/rls-shared-aOQ4hGTO.js +493 -0
- package/dist/rls-verify-D8B7dOTh.js +745 -0
- package/dist/row-check-Dt35czLy.d.ts +40 -0
- package/dist/rpc-DOK54_CS.js +89 -0
- package/dist/run-YXCJDNYk.js +174 -0
- package/dist/runtime-CB8gQFvS.js +11 -0
- package/dist/saas-Bj_FFkjN.js +1203 -0
- package/dist/schema-D3MnDMxa.js +300 -0
- package/dist/scim/index.d.ts +2 -0
- package/dist/scim/index.js +2 -0
- package/dist/scim-BFGBBAqR.js +1445 -0
- package/dist/scopes-CVdPrWN-.js +239 -0
- package/dist/server/index.d.ts +134 -0
- package/dist/server/index.js +11 -0
- package/dist/server-DlZ28Oz5.js +268 -0
- package/dist/sha256-BO0swRXL.js +150 -0
- package/dist/shared-DRu8VFVM.js +123 -0
- package/dist/sink-Bd9PSyfq.js +141 -0
- package/dist/sink-Gs6TTVa-.d.ts +104 -0
- package/dist/skills-Biq5uup3.js +192 -0
- package/dist/skills-JaymNCdK.js +56 -0
- package/dist/snapshot-Enxd0n-s.js +975 -0
- package/dist/snapshot-cache-D6jLelln.js +44 -0
- package/dist/snapshot-cache-DwQH8ufx.d.ts +45 -0
- package/dist/solid/index.d.ts +93 -0
- package/dist/solid/index.js +188 -0
- package/dist/sources-B0UvrJ21.js +534 -0
- package/dist/sources-BcJgw0lt.d.ts +192 -0
- package/dist/sql-xdg5f4Fi.js +27 -0
- package/dist/src-CSbUiozF.js +568 -0
- package/dist/ssf/index.d.ts +4 -0
- package/dist/ssf/index.js +596 -0
- package/dist/store-DMAWwAJV.js +371 -0
- package/dist/store-D_pjn91-.d.ts +36 -0
- package/dist/store-options-yO0V6gRn.js +716 -0
- package/dist/stores-4_sqiOA1.js +87 -0
- package/dist/stores-DVR5NHLE.d.ts +52 -0
- package/dist/stream-DDpvynSB.js +66 -0
- package/dist/stream-DlvG2hs-.d.ts +12 -0
- package/dist/style-CTm1AXDT.js +22 -0
- package/dist/subject-C6dLxqHU.js +24 -0
- package/dist/subject-settings-BwBmCdTR.js +128 -0
- package/dist/supabase/index.d.ts +183 -0
- package/dist/supabase/index.js +5 -0
- package/dist/supabase/middleware.d.ts +82 -0
- package/dist/supabase/middleware.js +102 -0
- package/dist/supabase-CwafwxxF.js +83 -0
- package/dist/supabase-DTBaC20O.js +774 -0
- package/dist/supabase-config-Bs44dare.js +472 -0
- package/dist/supabase-hook-BuxLQLpU.js +1814 -0
- package/dist/supabase-hook-D5qVd_D8.js +2 -0
- package/dist/supautils-DYZnzRWV.js +91 -0
- package/dist/svelte/PermissionBoundary.svelte +37 -0
- package/dist/svelte/Protected.svelte +40 -0
- package/dist/svelte/index.d.ts +13 -0
- package/dist/svelte/index.js +107 -0
- package/dist/svelte/runtime.d.ts +7 -0
- package/dist/svelte/runtime.js +4 -0
- package/dist/svelte/source.d.ts +13 -0
- package/dist/svelte/source.js +11 -0
- package/dist/terminal/index.d.ts +163 -0
- package/dist/terminal/index.js +833 -0
- package/dist/testing/index.d.ts +745 -0
- package/dist/testing/index.js +3672 -0
- package/dist/testing/saas/index.d.ts +194 -0
- package/dist/testing/saas/index.js +3 -0
- package/dist/testing/saas/permissions.d.ts +2 -0
- package/dist/testing/saas/permissions.js +2 -0
- package/dist/text-diff-BdkkYSbi.js +15 -0
- package/dist/thenable-okc2xDsj.js +10 -0
- package/dist/timeout-D51niuQP.js +8 -0
- package/dist/token-CIWxJOCh.js +50 -0
- package/dist/trpc/index.d.ts +61 -0
- package/dist/trpc/index.js +122 -0
- package/dist/types-9AWO9EGt.d.ts +197 -0
- package/dist/types-BPxgszlT.d.ts +550 -0
- package/dist/types-BVyImy5I.d.ts +120 -0
- package/dist/types-Bvc4oWT6.d.ts +9 -0
- package/dist/types-C3s9xVJG.d.ts +48 -0
- package/dist/types-Dnemwd77.d.ts +183 -0
- package/dist/types-kxznc7cn.d.ts +52 -0
- package/dist/types-vKyAMtcX.d.ts +157 -0
- package/dist/types-vNSDF7Dq.d.ts +66 -0
- package/dist/types-yF5LmQVD.d.ts +306 -0
- package/dist/unplugin/index.d.ts +7 -0
- package/dist/unplugin/index.js +31 -0
- package/dist/usage-D07N9QJ3.js +42 -0
- package/dist/usage-D82l1CwK.js +2 -0
- package/dist/usage-DG1oeCca.js +693 -0
- package/dist/validation-error-CnjZ4t92.js +33 -0
- package/dist/validation-error-CtF23SrC.d.ts +26 -0
- package/dist/validity-uOp8UpYn.js +245 -0
- package/dist/verifier-BxBo6I44.js +466 -0
- package/dist/version-BvacVTZR.js +17 -0
- package/dist/views-Soe7bGSC.js +95 -0
- package/dist/vocabulary-DA8a8zif.d.ts +56 -0
- package/dist/vue/index.d.ts +79 -0
- package/dist/vue/index.js +196 -0
- package/dist/watch-Etoa_Mvr.js +2 -0
- package/dist/watch-UihESpsJ.js +128 -0
- package/dist/webmcp/index.d.ts +75 -0
- package/dist/webmcp/index.js +307 -0
- package/package.json +450 -5
- package/rulesets/permdock.yaml +29 -0
- package/schemas/approval-request-v1.json +175 -0
- package/schemas/catalog-v1.json +535 -0
- package/schemas/openapi/oas-3.1.json +1298 -0
- package/schemas/openapi/oas-3.2.json +1516 -0
- package/schemas/openapi/overlay-1.1.json +79 -0
- package/schemas/supabase-claims-v1.json +144 -0
- package/schemas/supabase-manifest-v1.json +361 -0
- package/skills/permdock/SKILL.md +66 -0
- package/skills/permdock-agents/SKILL.md +77 -0
- package/skills/permdock-agents/references/runtimes.md +213 -0
- package/skills/permdock-approvals/SKILL.md +80 -0
- package/skills/permdock-approvals/references/stores-and-resume.md +94 -0
- package/skills/permdock-audit/SKILL.md +67 -0
- package/skills/permdock-credentials/SKILL.md +55 -0
- package/skills/permdock-credentials/references/tokens-keys-links.md +132 -0
- package/skills/permdock-data/SKILL.md +57 -0
- package/skills/permdock-data/references/queries-and-rls.md +62 -0
- package/skills/permdock-data/references/relationships.md +67 -0
- package/skills/permdock-tenancy/SKILL.md +80 -0
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +89 -0
- package/skills/permdock-wire/SKILL.md +116 -0
- package/skills/permdock-wire/references/adapters.md +492 -0
- package/skills/permdock-wire/references/policy-options.md +45 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//#region src/conditions/subject-settings.d.ts
|
|
2
|
+
type WithSubjectOptions = {
|
|
3
|
+
/** Which settings the generated policies read; match `rls.dialect`. Default `supabase`. */
|
|
4
|
+
readonly dialect?: "supabase" | "guc" | "neon";
|
|
5
|
+
/**
|
|
6
|
+
* The local `role` setting before the claims: `authenticated` with a principal, `anon` without.
|
|
7
|
+
* `false` keeps the connection's role, for a login role that RLS already applies to.
|
|
8
|
+
*/
|
|
9
|
+
readonly role?: "authenticated" | "anon" | false;
|
|
10
|
+
/** Prefix of the `guc` dialect's settings (`rls.gucPrefix`). Default `app`. */
|
|
11
|
+
readonly gucPrefix?: string;
|
|
12
|
+
/** Claim holding the principal's tenant (`rls.tenantClaim`). Default `tenant_id`. */
|
|
13
|
+
readonly tenantClaim?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Further claims from the verified token, such as `user_role` or `memberships` for `jwt`-mode
|
|
16
|
+
* helpers. `sub`, `role` and the tenant claim always come from the subject.
|
|
17
|
+
*/
|
|
18
|
+
readonly claims?: Readonly<Record<string, unknown>>;
|
|
19
|
+
/**
|
|
20
|
+
* Field names of the API-key claim written for a principal that acts through a credential
|
|
21
|
+
* (`rls.apiKeys`). Default `{ claim: 'api_key', scopes: 'scopes', tenant: 'tenant', roles: 'roles' }`.
|
|
22
|
+
*/
|
|
23
|
+
readonly apiKeys?: {
|
|
24
|
+
readonly claim?: string;
|
|
25
|
+
readonly scopes?: string;
|
|
26
|
+
readonly tenant?: string;
|
|
27
|
+
readonly roles?: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/conditions/row-check.d.ts
|
|
32
|
+
/** Whether the row a unique key names exists, and if so whether the filter keeps it. */
|
|
33
|
+
type RowCheck = {
|
|
34
|
+
readonly found: false;
|
|
35
|
+
} | {
|
|
36
|
+
readonly found: true;
|
|
37
|
+
readonly granted: boolean;
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { WithSubjectOptions as n, RowCheck as t };
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { t as compact } from "./compact-y6vfu2_f.js";
|
|
2
|
+
import { o as requestFromContext } from "./http-SO7qGttf.js";
|
|
3
|
+
import { n as tenantScope } from "./adapter-context-mlWsVGGg.js";
|
|
4
|
+
import { t as adapterKernel } from "./bind-VnYn2HKq.js";
|
|
5
|
+
import { n as guardIterable } from "./stream-DDpvynSB.js";
|
|
6
|
+
//#region src/server/rpc.ts
|
|
7
|
+
/** The tRPC and oRPC error code for a Problem Details status. */
|
|
8
|
+
function rpcCode(status) {
|
|
9
|
+
switch (status) {
|
|
10
|
+
case 400: return "BAD_REQUEST";
|
|
11
|
+
case 401: return "UNAUTHORIZED";
|
|
12
|
+
case 404: return "NOT_FOUND";
|
|
13
|
+
case 429: return "TOO_MANY_REQUESTS";
|
|
14
|
+
case 503: return "SERVICE_UNAVAILABLE";
|
|
15
|
+
default: return "FORBIDDEN";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The Problem Details body of a PermDock response, or `{ status }` when it has
|
|
20
|
+
* none. An RPC error carries only this body; the response headers are dropped.
|
|
21
|
+
*/
|
|
22
|
+
async function problemBody(response) {
|
|
23
|
+
try {
|
|
24
|
+
return await response.json();
|
|
25
|
+
} catch {
|
|
26
|
+
return { status: response.status };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The kernel of an RPC adapter. `contextOf` reads the procedure context from
|
|
31
|
+
* its opts; `path` names the fallback `Request` for a context without one.
|
|
32
|
+
*/
|
|
33
|
+
function bindRpcKernel(policy, options, adapter, contextOf, path) {
|
|
34
|
+
const optsByRequest = /* @__PURE__ */ new WeakMap();
|
|
35
|
+
const requestByCtx = /* @__PURE__ */ new WeakMap();
|
|
36
|
+
const kernel = adapterKernel(policy, options, adapter, (request) => optsByRequest.get(request));
|
|
37
|
+
const requestOf = (ctx) => {
|
|
38
|
+
if (options.request !== void 0) try {
|
|
39
|
+
return options.request(ctx) ?? void 0;
|
|
40
|
+
} catch {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
return requestFromContext(ctx);
|
|
44
|
+
};
|
|
45
|
+
const bind = (opts) => {
|
|
46
|
+
const ctx = contextOf(opts);
|
|
47
|
+
const key = ctx;
|
|
48
|
+
const hit = requestByCtx.get(key);
|
|
49
|
+
if (hit !== void 0) return hit;
|
|
50
|
+
const request = requestOf(ctx) ?? new Request(`http://localhost/${adapter}/${path(opts)}`, { method: "POST" });
|
|
51
|
+
requestByCtx.set(key, request);
|
|
52
|
+
if (!optsByRequest.has(request)) optsByRequest.set(request, opts);
|
|
53
|
+
return request;
|
|
54
|
+
};
|
|
55
|
+
const scopeOf = (opts) => tenantScope(options.tenant, opts);
|
|
56
|
+
const connection = async (opts, connectionOptions) => kernel.connection(bind(opts), connectionOptions, await scopeOf(opts));
|
|
57
|
+
const evaluations = kernel.permdockHandler((request) => {
|
|
58
|
+
const opts = optsByRequest.get(request);
|
|
59
|
+
return opts === void 0 ? { tenant: void 0 } : scopeOf(opts);
|
|
60
|
+
});
|
|
61
|
+
const evaluate = (request, opts) => {
|
|
62
|
+
bind(opts);
|
|
63
|
+
return request.method === "GET" ? evaluations.GET(request) : evaluations.POST(request);
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
kernel,
|
|
67
|
+
bind,
|
|
68
|
+
attach: (ctx, request) => {
|
|
69
|
+
requestByCtx.set(ctx, request);
|
|
70
|
+
},
|
|
71
|
+
scopeOf,
|
|
72
|
+
connection,
|
|
73
|
+
evaluate
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/** Wraps a streamed result so revocation ends it and items the subscriber cannot read drop. */
|
|
77
|
+
async function guardStream(source, open, permission, loadData, protectOptions, guard) {
|
|
78
|
+
const conn = await open(permission === null ? {} : compact({
|
|
79
|
+
permission,
|
|
80
|
+
data: loadData
|
|
81
|
+
}));
|
|
82
|
+
return guardIterable(source, conn, compact({
|
|
83
|
+
items: protectOptions?.items,
|
|
84
|
+
unwrap: guard.unwrap,
|
|
85
|
+
onRevoked: guard.onRevoked
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
export { rpcCode as i, guardStream as n, problemBody as r, bindRpcKernel as t };
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { a as exitCodeOf, i as describeError, n as cliErrorKind, r as cliProblem } from "./errors-CWfoNg9N.js";
|
|
2
|
+
import { o as cliVersion } from "./version-BvacVTZR.js";
|
|
3
|
+
import { a as resolveCwd, i as readConfig } from "./config-BJiM-xAm.js";
|
|
4
|
+
import { i as globalArgs, n as commands, o as resolveArgs, r as isCommand, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-DWOrSQic.js";
|
|
5
|
+
import { stripVTControlCharacters } from "node:util";
|
|
6
|
+
import { defineCommand, parseArgs, renderUsage, runCommand } from "citty";
|
|
7
|
+
//#region src/cli/run.ts
|
|
8
|
+
const NAMES = Object.keys(commands).filter(isCommand);
|
|
9
|
+
const NO_CONFIG = {
|
|
10
|
+
config: {},
|
|
11
|
+
warnings: [],
|
|
12
|
+
file: void 0
|
|
13
|
+
};
|
|
14
|
+
async function run(argv, options) {
|
|
15
|
+
const stdoutChunks = [];
|
|
16
|
+
const stderrChunks = [];
|
|
17
|
+
const io = options?.io ?? {
|
|
18
|
+
stdout: (text) => {
|
|
19
|
+
stdoutChunks.push(text);
|
|
20
|
+
},
|
|
21
|
+
stderr: (text) => {
|
|
22
|
+
stderrChunks.push(text);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const writeOut = (text) => {
|
|
26
|
+
const line = lined(text);
|
|
27
|
+
io.stdout(line);
|
|
28
|
+
if (options?.io !== void 0) stdoutChunks.push(line);
|
|
29
|
+
};
|
|
30
|
+
const writeErr = (text) => {
|
|
31
|
+
const line = lined(text);
|
|
32
|
+
io.stderr(line);
|
|
33
|
+
if (options?.io !== void 0) stderrChunks.push(line);
|
|
34
|
+
};
|
|
35
|
+
const done = (code) => ({
|
|
36
|
+
code,
|
|
37
|
+
stdout: stdoutChunks.join(""),
|
|
38
|
+
stderr: stderrChunks.join("")
|
|
39
|
+
});
|
|
40
|
+
const flags = beforeSeparator(argv);
|
|
41
|
+
const globals = parseArgs([...flags], globalArgs);
|
|
42
|
+
const json = globals.json === true;
|
|
43
|
+
const color = io.color === true && globals.color !== false;
|
|
44
|
+
const plain = (text) => color ? text : stripVTControlCharacters(text);
|
|
45
|
+
const askedHelp = flags.includes("--help") || flags.includes("-h");
|
|
46
|
+
const first = globals._[0];
|
|
47
|
+
const name = first === "help" ? globals._[1] : first;
|
|
48
|
+
let result;
|
|
49
|
+
const configFile = stringArg(globals.config);
|
|
50
|
+
const contextFor = (cwd, loaded = NO_CONFIG) => ({
|
|
51
|
+
cwd,
|
|
52
|
+
config: loaded.config,
|
|
53
|
+
...configFile === void 0 ? {} : { configFile },
|
|
54
|
+
...loaded.file === void 0 ? {} : { configPath: loaded.file },
|
|
55
|
+
configWarnings: loaded.warnings,
|
|
56
|
+
io,
|
|
57
|
+
now: io.now?.() ?? /* @__PURE__ */ new Date(),
|
|
58
|
+
json,
|
|
59
|
+
color,
|
|
60
|
+
interactive: io.interactive === true && !json && globals.yes !== true,
|
|
61
|
+
report: (outcome) => {
|
|
62
|
+
result = outcome;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
/** A failed run: text on stderr, or Problem Details on stdout under `--json`. */
|
|
66
|
+
const fail = (kind, message, command) => {
|
|
67
|
+
if (json) writeOut(JSON.stringify(cliProblem(kind, message, command), null, 2));
|
|
68
|
+
else writeErr(message);
|
|
69
|
+
return done(exitCodeOf(kind));
|
|
70
|
+
};
|
|
71
|
+
if (name !== void 0 && !isCommand(name)) return fail("usage", `unknown command '${name}'. Use ${new Intl.ListFormat("en-GB", { type: "disjunction" }).format(NAMES)}.`);
|
|
72
|
+
if (name === void 0 && (flags.includes("--version") || flags.includes("-v"))) {
|
|
73
|
+
writeOut(cliVersion());
|
|
74
|
+
return done(0);
|
|
75
|
+
}
|
|
76
|
+
if (askedHelp || first === "help" || name === void 0) {
|
|
77
|
+
const root = rootCommand();
|
|
78
|
+
const usage = name === void 0 ? await renderUsage(root) : await renderUsage(await load(name, contextFor(options?.cwd ?? process.cwd())), root);
|
|
79
|
+
if (name === void 0 && !askedHelp && first !== "help") {
|
|
80
|
+
writeErr(plain(usage));
|
|
81
|
+
return done(2);
|
|
82
|
+
}
|
|
83
|
+
writeOut(plain(usage));
|
|
84
|
+
return done(0);
|
|
85
|
+
}
|
|
86
|
+
const cwd = resolveCwd(stringArg(globals.cwd), options?.cwd ?? process.cwd());
|
|
87
|
+
let loaded;
|
|
88
|
+
try {
|
|
89
|
+
loaded = await readConfig(cwd, configFile);
|
|
90
|
+
} catch (error) {
|
|
91
|
+
return fail(cliErrorKind(error), describeError(error));
|
|
92
|
+
}
|
|
93
|
+
if (name !== "config") for (const warning of loaded.warnings) writeErr(`permdock: warning: ${warning}`);
|
|
94
|
+
try {
|
|
95
|
+
const command = await load(name, contextFor(cwd, loaded));
|
|
96
|
+
const rawArgs = withoutCommand(argv, name);
|
|
97
|
+
await runCommand(command, { rawArgs: normaliseValues(rawArgs, await resolveArgs(command)) });
|
|
98
|
+
} catch (error) {
|
|
99
|
+
if (!(error instanceof Error)) return fail("usage", String(error), name);
|
|
100
|
+
if (error.name === "CLIError") return fail("usage", `${name}: ${stripVTControlCharacters(error.message)}`, name);
|
|
101
|
+
return fail(cliErrorKind(error), error.message, name);
|
|
102
|
+
}
|
|
103
|
+
if (result === void 0) return done(0);
|
|
104
|
+
if (json && result.code !== 0 && !isJson(result.output)) return fail(result.code === 2 ? "usage" : "failed", result.output, name);
|
|
105
|
+
writeOut(result.output);
|
|
106
|
+
return done(result.code);
|
|
107
|
+
}
|
|
108
|
+
/** The root help lists commands from a static table, so it loads none of them. */
|
|
109
|
+
function rootCommand() {
|
|
110
|
+
return defineCommand({
|
|
111
|
+
meta: {
|
|
112
|
+
name: "permdock",
|
|
113
|
+
description: "Collect, export, diff and check the permissions a PermDock policy declares"
|
|
114
|
+
},
|
|
115
|
+
args: {
|
|
116
|
+
...globalArgs,
|
|
117
|
+
version: {
|
|
118
|
+
type: "boolean",
|
|
119
|
+
alias: "v",
|
|
120
|
+
description: "Print the permdock version"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
subCommands: Object.fromEntries(NAMES.map((name) => [name, defineCommand({ meta: {
|
|
124
|
+
name,
|
|
125
|
+
description: COMMAND_DESCRIPTIONS[name]
|
|
126
|
+
} })]))
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
async function load(name, ctx) {
|
|
130
|
+
return (await commands[name]())(ctx);
|
|
131
|
+
}
|
|
132
|
+
function isJson(text) {
|
|
133
|
+
try {
|
|
134
|
+
JSON.parse(text);
|
|
135
|
+
return true;
|
|
136
|
+
} catch {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function lined(text) {
|
|
141
|
+
return text.endsWith("\n") ? text : `${text}\n`;
|
|
142
|
+
}
|
|
143
|
+
function beforeSeparator(argv) {
|
|
144
|
+
const end = argv.indexOf("--");
|
|
145
|
+
return end === -1 ? argv : argv.slice(0, end);
|
|
146
|
+
}
|
|
147
|
+
/** argv with the command name removed, wherever the global flags put it. */
|
|
148
|
+
function withoutCommand(argv, name) {
|
|
149
|
+
const index = argv.findIndex((token, i) => token === name && argv[i - 1] !== "--cwd" && argv[i - 1] !== "--config");
|
|
150
|
+
return argv.filter((_, i) => i !== index);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* A value never starts with `-` (bar `-` itself): `--out --check` is a bare
|
|
154
|
+
* `--out` and `--check`, as it was before citty, which would take `--check`
|
|
155
|
+
* as the value. A bare string flag reads as `''`; a bare enum flag keeps its
|
|
156
|
+
* default.
|
|
157
|
+
*/
|
|
158
|
+
function normaliseValues(rawArgs, def) {
|
|
159
|
+
const out = [];
|
|
160
|
+
for (const [i, token] of rawArgs.entries()) {
|
|
161
|
+
if (token === "--") {
|
|
162
|
+
out.push(...rawArgs.slice(i));
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
const arg = token.startsWith("--") ? def[token.slice(2)] : void 0;
|
|
166
|
+
const next = rawArgs[i + 1];
|
|
167
|
+
const bare = next === void 0 || next !== "-" && next.startsWith("-");
|
|
168
|
+
if (arg?.type === "enum" && bare) continue;
|
|
169
|
+
out.push(arg?.type === "string" && bare ? `${token}=` : token);
|
|
170
|
+
}
|
|
171
|
+
return out;
|
|
172
|
+
}
|
|
173
|
+
//#endregion
|
|
174
|
+
export { run as t };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { a as protectedView, s as scopedTenant } from "./views-Soe7bGSC.js";
|
|
2
|
+
//#region src/svelte/protected.ts
|
|
3
|
+
/** The instance for `tenant`, built once per store change rather than once per check. */
|
|
4
|
+
function scopedFor(store, tenant, _generation) {
|
|
5
|
+
return scopedTenant(store.get(), tenant);
|
|
6
|
+
}
|
|
7
|
+
function viewFor(store, reference, data, scoped, _generation) {
|
|
8
|
+
return protectedView(store.permissionState(reference, data), store.get(), reference, data, scoped);
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { viewFor as n, scopedFor as t };
|