permdock 0.1.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 +106 -47
- package/dist/a2a/index.d.ts +7 -16
- package/dist/a2a/index.js +59 -98
- package/dist/adapter-context-mlWsVGGg.js +23 -0
- package/dist/ai-sdk/index.d.ts +37 -16
- package/dist/ai-sdk/index.js +30 -13
- package/dist/approvals/index.d.ts +3 -3
- package/dist/approvals/index.js +5 -4
- package/dist/{approvals-DaxY-Bdg.js → approvals-DbYAuNkG.js} +17 -11
- package/dist/approvers-DT4AVyIg.js +52 -0
- package/dist/{arazzo-CTeVuXr5.js → arazzo-BAgw9ap6.js} +2 -2
- package/dist/{arazzo-aoTkqYsJ.js → arazzo-cmvX2jDe.js} +2 -2
- package/dist/authzen/index.d.ts +4 -13
- package/dist/authzen/index.js +16 -50
- package/dist/better-auth/index.d.ts +20 -3
- package/dist/better-auth/index.js +27 -7
- 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/canonical-json-DemiK4Vp.js +26 -0
- package/dist/{capability-B68OFnZx.js → capability-4qPdO9gk.js} +7 -5
- package/dist/{capability-BDG_nkxt.d.ts → capability-Dq43tT1u.d.ts} +2 -2
- package/dist/catalog/index.d.ts +1 -1
- package/dist/catalog/index.js +1 -1
- package/dist/catalog-BjZSovXQ.js +2 -0
- package/dist/{catalog-doc-BSo_Q_-6.js → catalog-doc-Dsc9y7sd.js} +23 -12
- package/dist/{catalog-B0E6bggc.js → catalog-h2tlKFkq.js} +2 -2
- package/dist/{catalog-H-vFGwWK.js → catalog-z8q6bi_r.js} +4 -4
- package/dist/claude-agent/index.d.ts +5 -14
- package/dist/claude-agent/index.js +4 -10
- package/dist/clerk/index.d.ts +12 -3
- package/dist/clerk/index.js +26 -5
- package/dist/cli/bin.js +1 -1
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +2 -2
- package/dist/clients-C7zLFuWT.d.ts +12 -0
- package/dist/clients-DjU5ABMy.js +23 -0
- package/dist/cloud/index.d.ts +4 -5
- package/dist/cloud/index.js +20 -6
- package/dist/{cloud-BNQTrmrr.js → cloud-BGhHS-lY.js} +2 -2
- package/dist/{cloud-Cuxr6Czw.js → cloud-Bo3e9Ak3.js} +7 -6
- package/dist/{collect-O-tOtbnk.js → collect-DDDv_ESs.js} +194 -42
- package/dist/collect-DLlujdHC.js +83 -0
- package/dist/collect-rG2IQ3t0.js +2 -0
- package/dist/{commands-BMh_Etm2.js → commands-DWOrSQic.js} +16 -12
- package/dist/compile/index.d.ts +3 -0
- package/dist/compile/index.js +2 -0
- package/dist/{compile-D22iwvuV.js → compile-Ba4blROR.js} +85 -30
- 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-JvqwHODC.js → connection-CU8MQxRi.js} +1 -1
- package/dist/{context-CKEAabd7.js → context-Ttp0ekMT.js} +36 -27
- package/dist/convex/index.d.ts +9 -4
- package/dist/convex/index.js +14 -4
- package/dist/create-BWyx3jua.d.ts +245 -0
- package/dist/create-CPhDL6qx.js +253 -0
- package/dist/{credential-B_rkUNlY.js → credential-8P81ff4u.js} +26 -46
- package/dist/delegation-D8pUEuce.js +103 -0
- package/dist/{describe-Bt1YD5uS.js → describe-B_gVZEVi.js} +10 -15
- package/dist/{describe-DernyItf.d.ts → describe-PdoqESvg.d.ts} +9 -10
- package/dist/{diff-x5Il8LVa.js → diff-B8Tunc3o.js} +44 -11
- package/dist/{diff-BUzf5Poi.js → diff-CzqLxZ77.js} +2 -2
- package/dist/doctor-WpvG6p4k.js +1194 -0
- package/dist/doctor-collect-ByfYlNv1.js +664 -0
- package/dist/{doctor-Bqo6FwUa.js → doctor-rOr-4ZfS.js} +2 -2
- package/dist/drizzle/index.d.ts +4 -3
- package/dist/drizzle/index.js +3 -3
- package/dist/elysia/index.d.ts +6 -28
- package/dist/elysia/index.js +16 -60
- package/dist/{errors-DSMnAVNa.js → errors-CWfoNg9N.js} +8 -4
- package/dist/{errors-Iy71s7Oj.js → errors-Cz5zn0mW.js} +17 -71
- package/dist/{errors-DbZ1YOnb.d.ts → errors-DAqevpNk.d.ts} +8 -21
- package/dist/{errors-m3u9TmDu.js → errors-DRnGZHzF.js} +4 -1
- package/dist/evaluation-items-CfCCejQd.js +40 -0
- package/dist/{evaluations-DsAU9ppl.js → evaluations-tz6D9A2G.js} +28 -46
- package/dist/eve/index.d.ts +6 -15
- package/dist/eve/index.js +7 -12
- package/dist/expiry-BoBJ8Tvc.js +7 -0
- package/dist/express/index.d.ts +6 -29
- package/dist/express/index.js +28 -58
- package/dist/fastify/index.d.ts +6 -29
- package/dist/fastify/index.js +16 -65
- package/dist/fields-BMl1RxoX.js +26 -0
- package/dist/{files-B_wAGYmt.js → files-DWUN9PzI.js} +5 -1
- package/dist/{fixtures-Cvaw0gDG.js → fixtures-ht28Cplr.js} +5 -2
- package/dist/{freeze-y1_jQL4v.js → freeze-CrU8nQeX.js} +31 -2
- package/dist/{from-snapshot-BMGnhmgv.js → from-snapshot-C3sHpZNS.js} +65 -48
- package/dist/{grantee-Bv04_Vzf.js → grantee-Cv5Sogfv.js} +88 -7
- package/dist/graph-sql-B-dsAT6j.d.ts +29 -0
- package/dist/{headers-B5RRv3Xm.js → headers-BZSDieNT.js} +1 -1
- package/dist/{headers-C8SHQccD.d.ts → headers-Cf-zWvsO.d.ts} +1 -1
- package/dist/helpers-H_KARDVC.js +421 -0
- package/dist/hono/index.d.ts +6 -28
- package/dist/hono/index.js +11 -43
- package/dist/{hosted-BwKQ1BTA.js → hosted-DJQw46hn.js} +6 -5
- package/dist/{http-GgVApX1k.js → http-BIhmLfCc.js} +4 -20
- package/dist/http-SO7qGttf.js +44 -0
- package/dist/ids-DC4V4CFu.js +18 -0
- package/dist/{index-LF_hS-yn.d.ts → index-A0YNL8jZ.d.ts} +1 -1
- package/dist/index-CtE07CBF.d.ts +6 -0
- package/dist/{index-xIxJLwOQ.d.ts → index-D3vbkoSI.d.ts} +75 -7
- package/dist/{index-CltcQ4Bf.d.ts → index-D6_cSa1z.d.ts} +68 -5
- package/dist/index.d.ts +14 -9
- package/dist/index.js +22 -17
- package/dist/instance-options-BK_rNOSC.d.ts +11 -0
- package/dist/instance-options-Dhhcnm3y.js +22 -0
- package/dist/{parse-DPfIvFMU.js → json-schema-BsAflUGW.js} +28 -57
- package/dist/jwt/index.d.ts +10 -6
- package/dist/jwt/index.js +32 -13
- package/dist/kernel-GSQnMz3O.js +208 -0
- package/dist/kysely/index.d.ts +4 -3
- package/dist/kysely/index.js +3 -3
- package/dist/live-options-H2eG8dfJ.js +60 -0
- package/dist/{load-BZ24CpZP.js → load-DhWEB9P1.js} +16 -10
- package/dist/load-DwJUafYN.js +2 -0
- package/dist/manifest-iaoBXHKc.js +783 -0
- package/dist/manifest-uDS9y5de.d.ts +206 -0
- package/dist/{map-DowSO96j.js → map-AcxK9o_D.js} +4 -15
- package/dist/{map-claims-B_6I1Rn-.js → map-claims-Z4QZOiFF.js} +13 -4
- package/dist/map-error-pgUWNNtG.js +23 -0
- package/dist/may-use-DndQ5tQ-.js +77 -0
- package/dist/mcp/index.d.ts +54 -22
- package/dist/mcp/index.js +218 -178
- package/dist/nest/index.d.ts +26 -31
- package/dist/nest/index.js +75 -84
- package/dist/next/client.d.ts +7 -8
- package/dist/next/client.js +11 -9
- package/dist/next/index.d.ts +30 -47
- package/dist/next/index.js +45 -60
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +32 -1
- package/dist/node/index.d.ts +9 -28
- package/dist/node/index.js +11 -43
- package/dist/openai/index.d.ts +6 -15
- package/dist/openai/index.js +7 -20
- package/dist/openapi/index.d.ts +87 -4
- package/dist/openapi/index.js +3 -3
- package/dist/{openapi-CwePaF7C.js → openapi-Bbg4wGVL.js} +3 -3
- package/dist/{openapi-DcqM8nU7.js → openapi-BqRBvAng.js} +237 -5
- package/dist/{openapi-DWD0Uc_4.js → openapi-CqqEbHsL.js} +5 -5
- package/dist/{openapi-import-BWRUNNeW.js → openapi-import-cmwetbzw.js} +1 -1
- package/dist/{openapi-schema-D8j_T9tO.js → openapi-schema--ARjyfQr.js} +2 -2
- package/dist/orpc/index.d.ts +15 -28
- package/dist/orpc/index.js +74 -117
- package/dist/otel/index.d.ts +2 -2
- 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 +2 -2
- package/dist/pdp/index.js +14 -127
- package/dist/{permdock-yoZ7EjxX.js → permdock-CzqXjCpU.js} +641 -126
- package/dist/{permissions-B8vCg_bI.d.ts → permissions-CDgvKG5L.d.ts} +2 -2
- package/dist/{permissions-CofRqesP.js → permissions-CpZrivYv.js} +3 -3
- package/dist/{permissions-DC7GROPA.js → permissions-DVoF6dMt.js} +77 -15
- package/dist/{permissions-B4apnahQ.d.ts → permissions-DttnqqxC.d.ts} +34 -5
- package/dist/{pins-CqE1jZuF.js → pins-8ILTftC9.js} +2 -2
- package/dist/{policy-CInmNGkM.d.ts → policy-CFZAr_Al.d.ts} +330 -37
- package/dist/{policy-Cq2fB8Q5.d.ts → policy-D8UFyERw.d.ts} +2 -2
- package/dist/{policy-ANp36PnI.js → policy-xyWg7QdR.js} +173 -22
- 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 +3 -2
- package/dist/prisma/index.js +45 -20
- package/dist/{problem-Cgp9-KZA.js → problem-B43ztKIm.js} +74 -109
- package/dist/problem-details-CkL50EEf.d.ts +7 -0
- package/dist/problem-details-_AMOYz-w.js +144 -0
- package/dist/{protected-BuPAycJT.d.ts → protected-CNsMzrVd.d.ts} +5 -4
- package/dist/protected-Cs6kTaHo.js +100 -0
- package/dist/protected-bZs6rbT1.d.ts +40 -0
- package/dist/{provider-wTAUda2v.d.ts → provider-Cjr62YMV.d.ts} +1 -1
- package/dist/provider-DLzpb2Xz.js +52 -0
- package/dist/provider-store-DNyC1y48.js +43 -0
- package/dist/react/index.d.ts +7 -5
- package/dist/react/index.js +5 -4
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +166 -10
- package/dist/react-native/index.js +607 -85
- package/dist/{refs-ChLSxbST.js → refs-KYb4ntaz.js} +4 -3
- package/dist/{relations-r4soIFZB.js → relations-cjOL01hZ.js} +110 -31
- 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/rls-BMNydpHk.js +2521 -0
- package/dist/{rls-BOFU3chG.js → rls-CEvs64Kj.js} +8 -3
- package/dist/rls-fields-BMasREhR.js +3502 -0
- package/dist/{rls-graph-DxQ39PJj.js → rls-graph-pc9fuXYm.js} +100 -36
- package/dist/{rls-import-CXV6LBlS.js → rls-import-D8F7j35Q.js} +7 -6
- package/dist/{rls-migrate-DrFPbf8p.js → rls-migrate-7wikfrVI.js} +6 -5
- 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-BajTgQZ-.d.ts → row-check-Dt35czLy.d.ts} +12 -15
- package/dist/rpc-DOK54_CS.js +89 -0
- package/dist/{run-CJ6UvS3a.js → run-YXCJDNYk.js} +31 -12
- package/dist/runtime-CB8gQFvS.js +11 -0
- package/dist/{saas-BRrZzJkM.js → saas-Bj_FFkjN.js} +17 -7
- package/dist/{schema-P8yoma__.js → schema-D3MnDMxa.js} +8 -4
- package/dist/scim/index.d.ts +1 -1
- package/dist/scim/index.js +1 -1
- package/dist/{scim-9NFa0XVZ.js → scim-BFGBBAqR.js} +1 -1
- package/dist/{scopes-cKVp_WTw.js → scopes-CVdPrWN-.js} +35 -8
- package/dist/server/index.d.ts +22 -11
- package/dist/server/index.js +11 -8
- package/dist/{credentials-BgRX3WEg.js → server-DlZ28Oz5.js} +1 -1
- package/dist/shared-DRu8VFVM.js +123 -0
- package/dist/{sink-Cfr9-7YC.d.ts → sink-Gs6TTVa-.d.ts} +1 -1
- package/dist/skills-Biq5uup3.js +192 -0
- package/dist/{skills-C_lpV4Jx.js → skills-JaymNCdK.js} +10 -4
- package/dist/{snapshot-DE8dE_hz.js → snapshot-Enxd0n-s.js} +138 -214
- package/dist/snapshot-cache-D6jLelln.js +44 -0
- package/dist/snapshot-cache-DwQH8ufx.d.ts +45 -0
- package/dist/solid/index.d.ts +39 -9
- package/dist/solid/index.js +76 -85
- package/dist/sources-B0UvrJ21.js +534 -0
- package/dist/sources-BcJgw0lt.d.ts +192 -0
- package/dist/{sql-Bll1d7y0.js → sql-xdg5f4Fi.js} +6 -1
- package/dist/{src-CTNT-PBW.js → src-CSbUiozF.js} +149 -11
- package/dist/ssf/index.d.ts +3 -2
- package/dist/ssf/index.js +3 -29
- package/dist/store-DMAWwAJV.js +371 -0
- package/dist/{store-Bq90395i.d.ts → store-D_pjn91-.d.ts} +13 -4
- package/dist/store-options-yO0V6gRn.js +716 -0
- package/dist/{stores-CkG2HrSg.js → stores-4_sqiOA1.js} +10 -63
- package/dist/{stores-CvOnu_2T.d.ts → stores-DVR5NHLE.d.ts} +20 -9
- package/dist/{stream-Q_xlB6Ko.js → stream-DDpvynSB.js} +16 -2
- package/dist/{stream-BhMfZOwr.d.ts → stream-DlvG2hs-.d.ts} +2 -2
- package/dist/subject-settings-BwBmCdTR.js +128 -0
- package/dist/supabase/index.d.ts +122 -6
- package/dist/supabase/index.js +4 -3
- package/dist/supabase/middleware.d.ts +32 -27
- package/dist/supabase/middleware.js +56 -22
- package/dist/{supabase-D8UlBA7Z.js → supabase-CwafwxxF.js} +3 -3
- package/dist/{supabase-DTxGtYdi.js → supabase-DTBaC20O.js} +345 -367
- package/dist/supabase-config-Bs44dare.js +472 -0
- package/dist/{supabase-hook-D_OqGb_V.js → supabase-hook-BuxLQLpU.js} +994 -708
- 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 +8 -2
- package/dist/svelte/index.d.ts +9 -6
- package/dist/svelte/index.js +61 -7
- package/dist/svelte/runtime.d.ts +4 -3
- package/dist/svelte/runtime.js +4 -3
- package/dist/svelte/source.d.ts +9 -6
- package/dist/svelte/source.js +7 -4
- package/dist/terminal/index.d.ts +6 -14
- package/dist/terminal/index.js +44 -32
- package/dist/testing/index.d.ts +105 -16
- package/dist/testing/index.js +504 -40
- package/dist/testing/saas/index.d.ts +4 -4
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/token-CIWxJOCh.js +50 -0
- package/dist/trpc/index.d.ts +7 -26
- package/dist/trpc/index.js +17 -100
- package/dist/types-9AWO9EGt.d.ts +197 -0
- package/dist/{types-D6Z6-rKJ.d.ts → types-BPxgszlT.d.ts} +260 -22
- package/dist/{types-BvBk1wgn.d.ts → types-BVyImy5I.d.ts} +5 -3
- package/dist/{types-CxquUByI.d.ts → types-Bvc4oWT6.d.ts} +1 -1
- package/dist/types-C3s9xVJG.d.ts +48 -0
- package/dist/{types-BBK-exvJ.d.ts → types-Dnemwd77.d.ts} +7 -1
- package/dist/types-kxznc7cn.d.ts +52 -0
- package/dist/{types-B8w5PFtS.d.ts → types-vKyAMtcX.d.ts} +17 -1
- package/dist/{types-B9dmiiab.d.ts → types-vNSDF7Dq.d.ts} +1 -1
- package/dist/{sources-DOpW5Ila.d.ts → types-yF5LmQVD.d.ts} +86 -127
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +10 -9
- package/dist/{usage-1ozMubLY.js → usage-D07N9QJ3.js} +2 -2
- package/dist/usage-D82l1CwK.js +2 -0
- package/dist/{usage-CUnK6Ou9.js → usage-DG1oeCca.js} +225 -62
- package/dist/validation-error-CnjZ4t92.js +33 -0
- package/dist/validation-error-CtF23SrC.d.ts +26 -0
- package/dist/{validity-D0uRmJKJ.js → validity-uOp8UpYn.js} +57 -36
- package/dist/{verifier-B90agnhl.js → verifier-BxBo6I44.js} +10 -5
- package/dist/version-BvacVTZR.js +17 -0
- package/dist/views-Soe7bGSC.js +95 -0
- package/dist/{vocabulary-Dk0fs-Jk.d.ts → vocabulary-DA8a8zif.d.ts} +1 -1
- package/dist/vue/index.d.ts +35 -13
- package/dist/vue/index.js +86 -93
- package/dist/watch-Etoa_Mvr.js +2 -0
- package/dist/watch-UihESpsJ.js +128 -0
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +7 -13
- package/package.json +62 -36
- package/schemas/approval-request-v1.json +175 -0
- package/schemas/catalog-v1.json +29 -1
- package/schemas/supabase-claims-v1.json +6 -1
- package/schemas/supabase-manifest-v1.json +150 -6
- package/skills/permdock/SKILL.md +7 -7
- package/skills/permdock-agents/SKILL.md +5 -5
- package/skills/permdock-agents/references/runtimes.md +12 -10
- package/skills/permdock-approvals/SKILL.md +4 -4
- package/skills/permdock-approvals/references/stores-and-resume.md +15 -4
- package/skills/permdock-audit/SKILL.md +3 -3
- package/skills/permdock-credentials/SKILL.md +4 -4
- package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
- package/skills/permdock-data/SKILL.md +4 -4
- package/skills/permdock-data/references/queries-and-rls.md +14 -6
- package/skills/permdock-data/references/relationships.md +5 -3
- package/skills/permdock-tenancy/SKILL.md +9 -6
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +14 -8
- package/skills/permdock-wire/SKILL.md +4 -4
- package/skills/permdock-wire/references/adapters.md +42 -30
- package/skills/permdock-wire/references/policy-options.md +5 -3
- package/dist/approvers-aH0PJkmf.js +0 -20
- package/dist/catalog-idsHc0vo.js +0 -2
- package/dist/collect-B7_TIfmg.js +0 -49
- package/dist/collect-fRPAQIWb.js +0 -2
- package/dist/compile-CQbvyIBr.d.ts +0 -30
- package/dist/config-BPYmjTOp.js +0 -26
- package/dist/context-gtAwAILx.js +0 -6
- package/dist/create-BKF3dgFk.d.ts +0 -162
- package/dist/create-CSkhDU9T.js +0 -222
- package/dist/doctor-BGle8Gqi.js +0 -1314
- package/dist/helpers-DnSOrhB9.js +0 -682
- package/dist/index-fG6NSXlc.d.ts +0 -9
- package/dist/kernel-YOGCWNLf.js +0 -211
- package/dist/load-QOOm1z70.js +0 -2
- package/dist/manifest-DDQbC6K0.d.ts +0 -118
- package/dist/map-error-RJ3ZsUyA.js +0 -16
- package/dist/may-use-CnFEjVEp.js +0 -37
- package/dist/pg-4GJWDUxG.js +0 -953
- package/dist/plugin-4gr7IxFJ.js +0 -65
- package/dist/protected-B4K3BKoX.js +0 -138
- package/dist/protected-wY7nXhY9.d.ts +0 -23
- package/dist/provider-_wx46HpB.js +0 -48
- package/dist/rls-CJVja9Ww.js +0 -2119
- package/dist/rls-helpers-BxRuif0l.js +0 -1346
- package/dist/runtime-DP9ttFh1.js +0 -27
- package/dist/skills-Dx3QLnMY.js +0 -110
- package/dist/source-DoBBYJi2.js +0 -6
- package/dist/sources-DVHM3Mwq.js +0 -284
- package/dist/store-C6hFW6ta.js +0 -508
- package/dist/subject-settings-xt7V845g.js +0 -82
- package/dist/supabase-hook-DW-xP4hU.js +0 -2
- package/dist/types-DbWdEfcm.d.ts +0 -87
- package/dist/types-bva3i4Gf.d.ts +0 -98
- package/dist/types-i4BAOvdb.d.ts +0 -97
- package/dist/usage-PyEor6GA.js +0 -2
- package/dist/version-CnSh33Fj.js +0 -16
package/dist/solid/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { r as Role } from "../vocabulary-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { Ft as TokenVerifier, Mr as Membership, Tt as Snapshot, Yn as Decision } from "../policy-CFZAr_Al.js";
|
|
2
|
+
import { f as Permission } from "../permissions-DttnqqxC.js";
|
|
3
|
+
import { r as Role } from "../vocabulary-DA8a8zif.js";
|
|
4
|
+
import { n as requiredPlans } from "../problem-details-CkL50EEf.js";
|
|
5
|
+
import { i as describe } from "../describe-PdoqESvg.js";
|
|
6
|
+
import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
|
|
7
|
+
import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
|
|
8
|
+
import { a as FilterResult, c as SubjectView, i as ClientStatus, l as TenantView, n as ApprovalState, o as PermissionSet, r as ClientPermDock, s as PermissionState, t as ApprovalHandle, u as UseRolesOptions } from "../types-kxznc7cn.js";
|
|
7
9
|
import { Accessor, Accessor as Accessor$1, JSX } from "solid-js";
|
|
8
10
|
//#region src/solid/types.d.ts
|
|
9
11
|
/** Structural `JSX.Element`: text, a DOM node or a list of children. */
|
|
@@ -17,15 +19,30 @@ type PermDockProviderProps = {
|
|
|
17
19
|
* the store `pending` until it settles.
|
|
18
20
|
*/
|
|
19
21
|
readonly snapshot: Snapshot | string | Accessor$1<Snapshot | string | undefined> | PromiseLike<Snapshot | string>;
|
|
20
|
-
|
|
22
|
+
/**
|
|
23
|
+
* The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
|
|
24
|
+
* `false` never calls one: such a check is denied with reason `server-only`.
|
|
25
|
+
*/
|
|
26
|
+
readonly endpoint?: string | false;
|
|
27
|
+
/** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
|
|
28
|
+
readonly snapshotUrl?: string;
|
|
21
29
|
readonly approvals?: string;
|
|
30
|
+
/** A change switches the active tenant (`refresh({ tenant })`). */
|
|
22
31
|
readonly tenant?: string;
|
|
32
|
+
/** `headers`, `fetch` and `verifier` are read on every request, so a rotated token applies without a new store. */
|
|
23
33
|
readonly fetch?: typeof fetch;
|
|
24
34
|
readonly headers?: Readonly<Record<string, string>>;
|
|
25
35
|
readonly maxAge?: number;
|
|
26
36
|
readonly verifier?: TokenVerifier;
|
|
27
37
|
readonly children: unknown;
|
|
28
38
|
};
|
|
39
|
+
type PermissionBoundaryProps = {
|
|
40
|
+
/** Rendered in place of the children when one throws `PermDockDeniedError`. */
|
|
41
|
+
readonly denied?: SolidChild | ((state: PermissionBoundaryState) => SolidChild);
|
|
42
|
+
/** Rendered for `PermDockApprovalRequiredError`; defaults to `denied`. */
|
|
43
|
+
readonly approval?: SolidChild | ((state: PermissionBoundaryState) => SolidChild);
|
|
44
|
+
readonly children: unknown;
|
|
45
|
+
};
|
|
29
46
|
type ProtectedProps = {
|
|
30
47
|
readonly permission: Permission;
|
|
31
48
|
readonly data?: unknown;
|
|
@@ -50,14 +67,27 @@ export declare function useRoles(options?: Accessor<UseRolesOptions>): Accessor<
|
|
|
50
67
|
export declare function useAssignableRoles(): Accessor<readonly Role[]>;
|
|
51
68
|
export declare function useAssignablePermissions(options?: {
|
|
52
69
|
readonly tenant?: string;
|
|
53
|
-
}
|
|
70
|
+
} | Accessor<{
|
|
71
|
+
readonly tenant?: string;
|
|
72
|
+
}>): Accessor<readonly Permission[]>;
|
|
54
73
|
export declare function useSubject(): Accessor<SubjectView>;
|
|
55
74
|
export declare function useApproval(decision: Accessor<Decision>): Accessor<ApprovalHandle>;
|
|
56
75
|
//#endregion
|
|
76
|
+
//#region src/solid/boundary.d.ts
|
|
77
|
+
/**
|
|
78
|
+
* Catches `PermDockDeniedError` and `PermDockApprovalRequiredError` thrown
|
|
79
|
+
* below it and renders `denied`, or `approval` for an approval request
|
|
80
|
+
* (default `denied`), with the refused permission and `retry()`. Any other
|
|
81
|
+
* error goes to the next `ErrorBoundary` up.
|
|
82
|
+
*/
|
|
83
|
+
export declare function PermissionBoundary(props: PermissionBoundaryProps): JSX.Element;
|
|
84
|
+
/** Inside a `PermissionBoundary` fallback: what was refused and `retry()`. */
|
|
85
|
+
export declare function usePermissionBoundary(): PermissionBoundaryState | null;
|
|
86
|
+
//#endregion
|
|
57
87
|
//#region src/solid/protected.d.ts
|
|
58
88
|
export declare function Protected(props: ProtectedProps): JSX.Element;
|
|
59
89
|
//#endregion
|
|
60
90
|
//#region src/solid/provider.d.ts
|
|
61
91
|
export declare function PermDockProvider(props: PermDockProviderProps): JSX.Element;
|
|
62
92
|
//#endregion
|
|
63
|
-
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockProviderProps, type PermissionSet, type PermissionState, type ProtectedProps, type SolidChild, type SubjectView, type TenantView, type UseRolesOptions, approvalHeaders, describe, requiredPlans };
|
|
93
|
+
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockProviderProps, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type SolidChild, type SubjectView, type TenantView, type UseRolesOptions, approvalHeaders, describe, requiredPlans };
|
package/dist/solid/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { t as compact } from "../compact-y6vfu2_f.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as approvalHeaders } from "../headers-
|
|
5
|
-
import {
|
|
6
|
-
import { t as
|
|
7
|
-
import {
|
|
2
|
+
import { r as requiredPlans } from "../problem-details-_AMOYz-w.js";
|
|
3
|
+
import { t as describe } from "../describe-B_gVZEVi.js";
|
|
4
|
+
import { t as approvalHeaders } from "../headers-BZSDieNT.js";
|
|
5
|
+
import { i as isPromiseLike } from "../store-options-yO0V6gRn.js";
|
|
6
|
+
import { a as protectedView, c as subjectView, i as permissionSet, l as tenantView, n as filterResult, o as rolesView, r as livePermDock, s as scopedTenant, t as approvalHandle } from "../views-Soe7bGSC.js";
|
|
7
|
+
import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
|
|
8
|
+
import { n as switchTenant, t as providerStore } from "../provider-store-DNyC1y48.js";
|
|
9
|
+
import { ErrorBoundary, createComponent, createComputed, createContext, createMemo, createSignal, getOwner, on, onCleanup, useContext } from "solid-js";
|
|
8
10
|
//#region src/solid/context.ts
|
|
9
11
|
const PermDockContext = createContext(void 0);
|
|
10
12
|
function useStore() {
|
|
@@ -15,6 +17,7 @@ function useStore() {
|
|
|
15
17
|
//#endregion
|
|
16
18
|
//#region src/solid/hooks.ts
|
|
17
19
|
function useVersion(store) {
|
|
20
|
+
if (getOwner() === null) throw new Error("PermDock: call hooks inside a component or createRoot, which removes their store subscription.");
|
|
18
21
|
const [tick, setTick] = createSignal(0);
|
|
19
22
|
onCleanup(store.subscribe(() => {
|
|
20
23
|
setTick((current) => current + 1);
|
|
@@ -24,10 +27,10 @@ function useVersion(store) {
|
|
|
24
27
|
function usePermDock() {
|
|
25
28
|
const store = useStore();
|
|
26
29
|
const version = useVersion(store);
|
|
27
|
-
return
|
|
30
|
+
return livePermDock(() => {
|
|
28
31
|
version();
|
|
29
|
-
return
|
|
30
|
-
}
|
|
32
|
+
return store.get();
|
|
33
|
+
});
|
|
31
34
|
}
|
|
32
35
|
function usePermission(permission, data) {
|
|
33
36
|
const store = useStore();
|
|
@@ -43,40 +46,16 @@ function usePermissions(permissions, data) {
|
|
|
43
46
|
const version = useVersion(store);
|
|
44
47
|
return createMemo(() => {
|
|
45
48
|
version();
|
|
46
|
-
|
|
47
|
-
const byKey = {};
|
|
48
|
-
for (const permission of permissions()) {
|
|
49
|
-
const next = store.permissionState(permission, data?.());
|
|
50
|
-
byKey[permission.key] = next;
|
|
51
|
-
if (next.allowed) granted.push(permission);
|
|
52
|
-
}
|
|
53
|
-
return new Proxy({
|
|
54
|
-
granted,
|
|
55
|
-
get(permission) {
|
|
56
|
-
return byKey[permission.key];
|
|
57
|
-
}
|
|
58
|
-
}, { get(target, prop, receiver) {
|
|
59
|
-
if (typeof prop === "string" && Object.hasOwn(byKey, prop)) return byKey[prop];
|
|
60
|
-
return Reflect.get(target, prop, receiver);
|
|
61
|
-
} });
|
|
49
|
+
return permissionSet(store, permissions(), data?.());
|
|
62
50
|
});
|
|
63
51
|
}
|
|
64
52
|
function useFilter(permission, rows) {
|
|
65
53
|
const permdock = usePermDock();
|
|
66
|
-
return createMemo(() =>
|
|
67
|
-
const next = permdock.filter(permission, rows());
|
|
68
|
-
next.partial = permdock.where(permission).partial;
|
|
69
|
-
return next;
|
|
70
|
-
});
|
|
54
|
+
return createMemo(() => filterResult(permdock, permission, rows()));
|
|
71
55
|
}
|
|
72
56
|
function useTenant() {
|
|
73
57
|
const permdock = usePermDock();
|
|
74
|
-
return createMemo(() => (
|
|
75
|
-
tenant: permdock.subject.principal?.tenant ?? null,
|
|
76
|
-
tenants: permdock.tenants(),
|
|
77
|
-
switchTo: (id) => permdock.refresh({ tenant: id }),
|
|
78
|
-
status: permdock.status()
|
|
79
|
-
}));
|
|
58
|
+
return createMemo(() => tenantView(permdock));
|
|
80
59
|
}
|
|
81
60
|
function useMemberships() {
|
|
82
61
|
const permdock = usePermDock();
|
|
@@ -84,10 +63,7 @@ function useMemberships() {
|
|
|
84
63
|
}
|
|
85
64
|
function useRoles(options = () => ({})) {
|
|
86
65
|
const permdock = usePermDock();
|
|
87
|
-
return createMemo(() =>
|
|
88
|
-
const next = options();
|
|
89
|
-
return { roles: (next.team === void 0 ? permdock : permdock.team(next.team)).heldRoles(next.tenant === void 0 ? void 0 : { tenant: next.tenant }) };
|
|
90
|
-
});
|
|
66
|
+
return createMemo(() => rolesView(permdock, options()));
|
|
91
67
|
}
|
|
92
68
|
function useAssignableRoles() {
|
|
93
69
|
const permdock = usePermDock();
|
|
@@ -95,64 +71,73 @@ function useAssignableRoles() {
|
|
|
95
71
|
}
|
|
96
72
|
function useAssignablePermissions(options = {}) {
|
|
97
73
|
const permdock = usePermDock();
|
|
98
|
-
return createMemo(() => permdock.assignablePermissions(options));
|
|
74
|
+
return createMemo(() => permdock.assignablePermissions(typeof options === "function" ? options() : options));
|
|
99
75
|
}
|
|
100
76
|
function useSubject() {
|
|
101
77
|
const permdock = usePermDock();
|
|
102
|
-
return createMemo(() =>
|
|
103
|
-
const snapshot = permdock.snapshot();
|
|
104
|
-
const simulated = typeof snapshot === "object" && snapshot !== null && "simulated" in snapshot && snapshot.simulated === true;
|
|
105
|
-
return {
|
|
106
|
-
principal: permdock.subject.principal,
|
|
107
|
-
actor: permdock.subject.actor,
|
|
108
|
-
delegation: permdock.subject.delegation,
|
|
109
|
-
expiresAt: permdock.subject.expiresAt,
|
|
110
|
-
simulated
|
|
111
|
-
};
|
|
112
|
-
});
|
|
78
|
+
return createMemo(() => subjectView(permdock));
|
|
113
79
|
}
|
|
114
80
|
function useApproval(decision) {
|
|
115
81
|
const store = useStore();
|
|
116
82
|
const version = useVersion(store);
|
|
117
83
|
return createMemo(() => {
|
|
118
84
|
version();
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
85
|
+
return approvalHandle(store, decision());
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
//#region src/solid/boundary.ts
|
|
90
|
+
const BoundaryContext = createContext(null);
|
|
91
|
+
/**
|
|
92
|
+
* Catches `PermDockDeniedError` and `PermDockApprovalRequiredError` thrown
|
|
93
|
+
* below it and renders `denied`, or `approval` for an approval request
|
|
94
|
+
* (default `denied`), with the refused permission and `retry()`. Any other
|
|
95
|
+
* error goes to the next `ErrorBoundary` up.
|
|
96
|
+
*/
|
|
97
|
+
function PermissionBoundary(props) {
|
|
98
|
+
return createComponent(ErrorBoundary, {
|
|
99
|
+
fallback: (error, reset) => {
|
|
100
|
+
const digest = boundaryDigest(error);
|
|
101
|
+
if (digest === null) throw error;
|
|
102
|
+
const state = {
|
|
103
|
+
...digest,
|
|
104
|
+
retry: reset
|
|
105
|
+
};
|
|
106
|
+
return createComponent(BoundaryContext.Provider, {
|
|
107
|
+
value: state,
|
|
108
|
+
get children() {
|
|
109
|
+
const chosen = boundaryFallback(digest, props);
|
|
110
|
+
return typeof chosen === "function" ? chosen(state) : chosen ?? null;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
},
|
|
114
|
+
get children() {
|
|
115
|
+
return props.children;
|
|
116
|
+
}
|
|
125
117
|
});
|
|
126
118
|
}
|
|
119
|
+
/** Inside a `PermissionBoundary` fallback: what was refused and `retry()`. */
|
|
120
|
+
function usePermissionBoundary() {
|
|
121
|
+
return useContext(BoundaryContext);
|
|
122
|
+
}
|
|
127
123
|
//#endregion
|
|
128
124
|
//#region src/solid/protected.ts
|
|
129
125
|
function Protected(props) {
|
|
130
126
|
const root = usePermDock();
|
|
131
127
|
const local = usePermission(() => props.permission, () => props.data);
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
return tenantView(root.tenant(props.tenant), props.permission, props.data);
|
|
135
|
-
});
|
|
128
|
+
const scoped = createMemo(() => scopedTenant(root, props.tenant));
|
|
129
|
+
const view = createMemo(() => protectedView(local(), root, props.permission, props.data, scoped()));
|
|
136
130
|
const render = () => {
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
return props.
|
|
131
|
+
const current = view();
|
|
132
|
+
switch (current.slot) {
|
|
133
|
+
case "pending": return props.pending ?? null;
|
|
134
|
+
case "fallback": return typeof props.fallback === "function" ? props.fallback(current.decision) : props.fallback ?? null;
|
|
135
|
+
case "default": return typeof props.children === "function" ? props.children(current.decision) : props.children;
|
|
136
|
+
default: return current;
|
|
142
137
|
}
|
|
143
|
-
if (typeof props.children === "function") return props.children(scoped.decision);
|
|
144
|
-
return props.children;
|
|
145
138
|
};
|
|
146
139
|
return render;
|
|
147
140
|
}
|
|
148
|
-
function tenantView(permdock, permission, data) {
|
|
149
|
-
const decision = permdock.decide(permission, data);
|
|
150
|
-
return {
|
|
151
|
-
allowed: decision.outcome === "granted",
|
|
152
|
-
status: "ready",
|
|
153
|
-
decision
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
141
|
//#endregion
|
|
157
142
|
//#region src/solid/provider.ts
|
|
158
143
|
function PermDockProvider(props) {
|
|
@@ -160,18 +145,24 @@ function PermDockProvider(props) {
|
|
|
160
145
|
const promised = isPromiseLike(source);
|
|
161
146
|
const read = typeof source === "function" ? source : void 0;
|
|
162
147
|
const initial = promised ? void 0 : read === void 0 ? source : read();
|
|
163
|
-
const store =
|
|
164
|
-
snapshot: initial ?? emptySnapshot(),
|
|
148
|
+
const store = providerStore(compact({
|
|
165
149
|
endpoint: props.endpoint,
|
|
150
|
+
snapshotUrl: props.snapshotUrl,
|
|
166
151
|
approvals: props.approvals,
|
|
167
152
|
tenant: props.tenant,
|
|
168
|
-
|
|
153
|
+
maxAge: props.maxAge
|
|
154
|
+
}), () => ({
|
|
169
155
|
headers: props.headers,
|
|
170
|
-
|
|
156
|
+
fetch: props.fetch,
|
|
171
157
|
verifier: props.verifier
|
|
172
|
-
}));
|
|
173
|
-
|
|
174
|
-
|
|
158
|
+
}), promised ? source : initial);
|
|
159
|
+
createComputed(on(() => props.tenant, (next) => {
|
|
160
|
+
switchTenant(store, next);
|
|
161
|
+
}, { defer: true }));
|
|
162
|
+
onCleanup(() => {
|
|
163
|
+
store.dispose();
|
|
164
|
+
});
|
|
165
|
+
if (!promised && read !== void 0) {
|
|
175
166
|
let arrive;
|
|
176
167
|
if (initial === void 0) store.follow(new Promise((resolve) => {
|
|
177
168
|
arrive = resolve;
|
|
@@ -194,4 +185,4 @@ function PermDockProvider(props) {
|
|
|
194
185
|
});
|
|
195
186
|
}
|
|
196
187
|
//#endregion
|
|
197
|
-
export { PermDockProvider, Protected, approvalHeaders, describe, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useFilter, useMemberships, usePermDock, usePermission, usePermissions, useRoles, useSubject, useTenant };
|
|
188
|
+
export { PermDockProvider, PermissionBoundary, Protected, approvalHeaders, describe, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useFilter, useMemberships, usePermDock, usePermission, usePermissionBoundary, usePermissions, useRoles, useSubject, useTenant };
|