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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Nr as Principal, et as AuthEvent } from "./policy-CFZAr_Al.js";
|
|
2
|
+
import { t as ClientNames } from "./clients-C7zLFuWT.js";
|
|
3
3
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
4
4
|
//#region src/supabase/claims.d.ts
|
|
5
5
|
/** One entry of the `memberships` claim, as `schemas/supabase-claims-v1.json` defines it. */
|
|
@@ -27,6 +27,8 @@ type SupabaseMembershipClaim = {
|
|
|
27
27
|
};
|
|
28
28
|
readonly managedBy?: "idp";
|
|
29
29
|
readonly entitlements?: readonly string[];
|
|
30
|
+
/** The instance or an ancestor is suspended: the permission keys the membership still grants. */
|
|
31
|
+
readonly keep?: readonly string[];
|
|
30
32
|
/** Custom roles in compact form, read by the RLS helpers in `jwt` mode. */
|
|
31
33
|
readonly grants?: Readonly<Record<string, unknown>>;
|
|
32
34
|
};
|
|
@@ -96,16 +98,36 @@ type SupabasePrincipal = Principal & {
|
|
|
96
98
|
readonly is_anonymous?: boolean;
|
|
97
99
|
};
|
|
98
100
|
type SupabaseInclude = "email" | "phone" | "is_anonymous";
|
|
101
|
+
/**
|
|
102
|
+
* A column that holds a foreign key: the value is `column` of `through`,
|
|
103
|
+
* joined on `on`. A role reads its key from a roles table
|
|
104
|
+
* (`{ through: 'roles', on: { role_id: 'id' }, column: 'key' }`); a
|
|
105
|
+
* membership source's user can read its user id from a profile table
|
|
106
|
+
* (`{ through: 'contact_profiles', on: { contact_profile_id: 'id' }, column: 'user_id' }`).
|
|
107
|
+
*/
|
|
108
|
+
type RoleThrough = {
|
|
109
|
+
/** The referenced table; unqualified, it is in the schema of the table that references it. */
|
|
110
|
+
readonly through: string;
|
|
111
|
+
/** One entry: the referencing column to the column of `through` it references. */
|
|
112
|
+
readonly on: Readonly<Record<string, string>>;
|
|
113
|
+
/** The column of `through` that holds the value: the role key, or the user id. */
|
|
114
|
+
readonly column: string;
|
|
115
|
+
};
|
|
99
116
|
type SupabaseMembershipTable = {
|
|
100
117
|
readonly table: string;
|
|
101
118
|
readonly user: string;
|
|
102
|
-
|
|
119
|
+
/**
|
|
120
|
+
* The role key column, a reference to a roles table that holds the key, or
|
|
121
|
+
* several of them: the row holds every non-null key.
|
|
122
|
+
*/
|
|
123
|
+
readonly role: string | RoleThrough | readonly (string | RoleThrough)[];
|
|
103
124
|
/** Per scope name, the column holding that scope's id: the table's own scope and its ancestors. */
|
|
104
125
|
readonly columns?: Readonly<Record<string, string>>;
|
|
105
126
|
readonly tenant?: string;
|
|
106
127
|
readonly team?: string;
|
|
107
128
|
readonly id?: string;
|
|
108
129
|
readonly expiresAt?: string;
|
|
130
|
+
readonly disabledAt?: string;
|
|
109
131
|
};
|
|
110
132
|
/** A table whose row says whether a user or a scope instance is active. A missing row counts as suspended. */
|
|
111
133
|
type SupabaseActiveRow = {
|
|
@@ -118,11 +140,28 @@ type SupabaseActiveRow = {
|
|
|
118
140
|
readonly status?: string;
|
|
119
141
|
readonly active?: readonly string[];
|
|
120
142
|
};
|
|
143
|
+
/** A scope's active-row table, with the permissions its suspended instances keep. */
|
|
144
|
+
type SupabaseSuspendedScope = SupabaseActiveRow & {
|
|
145
|
+
/**
|
|
146
|
+
* Permissions (references or keys) members of a suspended instance, and of
|
|
147
|
+
* every instance nested in it, still hold; such a membership carries them
|
|
148
|
+
* as `keep`.
|
|
149
|
+
*/
|
|
150
|
+
readonly keep?: readonly (string | {
|
|
151
|
+
readonly key: string;
|
|
152
|
+
})[];
|
|
153
|
+
};
|
|
154
|
+
type SupabaseSuspendedMembership = {
|
|
155
|
+
readonly keep?: readonly (string | {
|
|
156
|
+
readonly key: string;
|
|
157
|
+
})[];
|
|
158
|
+
};
|
|
121
159
|
type SupabaseSuspension = {
|
|
122
160
|
/** A suspended user holds no role and no membership. */
|
|
123
161
|
readonly users?: SupabaseActiveRow;
|
|
124
|
-
/** Per scope name: a suspended instance voids its memberships and every membership nested under it
|
|
125
|
-
readonly scopes?: Readonly<Record<string,
|
|
162
|
+
/** Per scope name: a suspended instance voids its memberships and every membership nested under it, except for `keep`. */
|
|
163
|
+
readonly scopes?: Readonly<Record<string, SupabaseSuspendedScope>>;
|
|
164
|
+
readonly memberships?: SupabaseSuspendedMembership;
|
|
126
165
|
};
|
|
127
166
|
type SupabaseMemberships = {
|
|
128
167
|
/** The membership table of each named scope. */
|
|
@@ -147,10 +186,38 @@ type AuthorizeSqlOptions = {
|
|
|
147
186
|
*/
|
|
148
187
|
readonly customRoles?: {
|
|
149
188
|
readonly declared: readonly string[];
|
|
189
|
+
/** Stored allows may carry a level (`custom_role_permissions.level`). */
|
|
190
|
+
readonly levels?: true;
|
|
150
191
|
};
|
|
151
192
|
/** A suspended user, or a suspended instance of `scope` for a tenant request, answers `false`. */
|
|
152
193
|
readonly suspension?: SupabaseSuspension;
|
|
153
194
|
};
|
|
195
|
+
/** A permission reference; `rls generate` reads only its `key`. */
|
|
196
|
+
type SupabasePermissionRef = {
|
|
197
|
+
readonly key: string;
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Private Realtime channels: topic patterns such as `org:{organization}:chat`,
|
|
201
|
+
* with one `{<scope>}` segment that holds a scope instance id.
|
|
202
|
+
*/
|
|
203
|
+
type SupabaseRealtime = {
|
|
204
|
+
readonly topics: Readonly<Record<string, {
|
|
205
|
+
/** Receive broadcast and presence: `select` on `realtime.messages`. */
|
|
206
|
+
readonly read: SupabasePermissionRef;
|
|
207
|
+
/** Send broadcast and track presence: `insert`. */
|
|
208
|
+
readonly write?: SupabasePermissionRef;
|
|
209
|
+
}>>;
|
|
210
|
+
};
|
|
211
|
+
/** Storage buckets whose object paths hold a scope instance id in folder `folder` (default 1). */
|
|
212
|
+
type SupabaseStorage = {
|
|
213
|
+
readonly buckets: Readonly<Record<string, {
|
|
214
|
+
readonly scope: string;
|
|
215
|
+
readonly folder?: number;
|
|
216
|
+
readonly read?: SupabasePermissionRef;
|
|
217
|
+
readonly write?: SupabasePermissionRef;
|
|
218
|
+
readonly delete?: SupabasePermissionRef;
|
|
219
|
+
}>>;
|
|
220
|
+
};
|
|
154
221
|
type SupabaseRlsOptions = {
|
|
155
222
|
readonly roleClaim?: string;
|
|
156
223
|
readonly tenantClaim?: string;
|
|
@@ -158,6 +225,8 @@ type SupabaseRlsOptions = {
|
|
|
158
225
|
readonly tenantType?: string;
|
|
159
226
|
readonly memberships?: SupabaseMembershipTable | SupabaseMemberships;
|
|
160
227
|
readonly suspension?: SupabaseSuspension;
|
|
228
|
+
readonly realtime?: SupabaseRealtime;
|
|
229
|
+
readonly storage?: SupabaseStorage;
|
|
161
230
|
};
|
|
162
231
|
type SupabaseRlsConfig = {
|
|
163
232
|
readonly dialect: "supabase";
|
|
@@ -166,10 +235,12 @@ type SupabaseRlsConfig = {
|
|
|
166
235
|
readonly tenantType?: string;
|
|
167
236
|
readonly memberships?: SupabaseMemberships;
|
|
168
237
|
readonly suspension?: SupabaseSuspension;
|
|
238
|
+
readonly realtime?: SupabaseRealtime;
|
|
239
|
+
readonly storage?: SupabaseStorage;
|
|
169
240
|
};
|
|
170
241
|
/**
|
|
171
242
|
* The structural shape `subjectFromSupabaseSession` reads: a discriminant and the verified JWT claims.
|
|
172
|
-
* Matches
|
|
243
|
+
* Matches any session object of that shape without importing its library.
|
|
173
244
|
*/
|
|
174
245
|
type SupabaseSessionLike = {
|
|
175
246
|
readonly kind: string;
|
|
@@ -184,8 +255,16 @@ type SupabaseSubjectOptions = {
|
|
|
184
255
|
readonly declared?: readonly string[];
|
|
185
256
|
/** Claim holding plan names per tenant id; the active tenant's entry becomes `principal.plans`. */
|
|
186
257
|
readonly plans?: string;
|
|
258
|
+
/** Names for OAuth client ids: an `oauth-client` actor gets `client` set to the name of its id, which a policy delegation matches with `to: { kind: 'oauth-client', client }`. */
|
|
259
|
+
readonly clients?: ClientNames;
|
|
187
260
|
/** `'deny'` maps a token with `is_anonymous: true` (`signInAnonymously()`) to the anonymous subject, as `rls.anonymousSignIns: 'deny'` does in RLS. */
|
|
188
261
|
readonly anonymousSignIns?: "deny";
|
|
262
|
+
/**
|
|
263
|
+
* `true` once the caller checked the session against the Auth server for this request
|
|
264
|
+
* (`auth.getUser()` or an equivalent session check): a token with a `session_id` gets
|
|
265
|
+
* `subject.liveSession`, which `{ subject: { session: { live: true } } }` requires. Never read from claims.
|
|
266
|
+
*/
|
|
267
|
+
readonly liveSession?: boolean;
|
|
189
268
|
/** Audit hook: `membership-dropped` for a `memberships` entry that could not be read, `invalid-chain` for a malformed `act`. */
|
|
190
269
|
readonly onAuth?: (event: AuthEvent) => void;
|
|
191
270
|
};
|
|
@@ -224,124 +303,4 @@ type SupabaseDelegation = {
|
|
|
224
303
|
readonly scopes: readonly string[];
|
|
225
304
|
};
|
|
226
305
|
//#endregion
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Runs one parameterised statement: `pg`'s `client.query` (which resolves
|
|
230
|
-
* `{ rows }`) and `postgres`'s `sql.unsafe` (which resolves the rows) both fit.
|
|
231
|
-
*/
|
|
232
|
-
type SqlQuery = (text: string, values: readonly unknown[]) => Promise<readonly Record<string, unknown>[] | {
|
|
233
|
-
readonly rows: readonly Record<string, unknown>[];
|
|
234
|
-
}>;
|
|
235
|
-
type Common = {
|
|
236
|
-
readonly table: string;
|
|
237
|
-
/** Runs the lookups; without it the source only describes SQL (for `permdock supabase hook generate`). */
|
|
238
|
-
readonly query?: SqlQuery;
|
|
239
|
-
/** Drop suspended users and memberships under suspended instances, like `rls.suspension`. */
|
|
240
|
-
readonly suspension?: SupabaseSuspension;
|
|
241
|
-
};
|
|
242
|
-
type MembershipTableOptions = Common & {
|
|
243
|
-
/** Column names; `user`, `scope`, `id` and `role` default to `user_id`, `scope`, `scope_id`, `role`. */
|
|
244
|
-
readonly columns?: {
|
|
245
|
-
readonly user?: string;
|
|
246
|
-
readonly scope?: string;
|
|
247
|
-
readonly id?: string;
|
|
248
|
-
/** A `jsonb` column of ancestor ids keyed by scope name. */
|
|
249
|
-
readonly within?: string;
|
|
250
|
-
readonly role?: string;
|
|
251
|
-
readonly via?: string;
|
|
252
|
-
readonly expiresAt?: string;
|
|
253
|
-
/** The principal id that wrote the membership (`grantedBy`). */
|
|
254
|
-
readonly grantedBy?: string;
|
|
255
|
-
/** Free-text justification recorded on the membership (`reason`). */
|
|
256
|
-
readonly reason?: string;
|
|
257
|
-
/** A subgroup column filling `member.group`. */
|
|
258
|
-
readonly group?: string;
|
|
259
|
-
/** A text column; the value `idp` marks the row as owned by the identity provider. */
|
|
260
|
-
readonly managedBy?: string;
|
|
261
|
-
/** A `text[]` column of seats. */
|
|
262
|
-
readonly seats?: string;
|
|
263
|
-
};
|
|
264
|
-
};
|
|
265
|
-
type MembershipJunctionOptions = Common & {
|
|
266
|
-
/** The declared scope every row is a membership of. */
|
|
267
|
-
readonly scope: string;
|
|
268
|
-
/** Default `user_id`. */
|
|
269
|
-
readonly user?: string;
|
|
270
|
-
/** The column holding the scope instance id. Default `<scope>_id`. */
|
|
271
|
-
readonly id?: string;
|
|
272
|
-
/** Ancestor id columns keyed by scope name. */
|
|
273
|
-
readonly within?: Readonly<Record<string, string>>;
|
|
274
|
-
/** A role column, or fixed roles every row holds (a contact table with no role column). */
|
|
275
|
-
readonly roles: string | readonly string[];
|
|
276
|
-
/** The membership kind every row has (`contact`, `staff`, `partner`). */
|
|
277
|
-
readonly via?: string;
|
|
278
|
-
readonly expiresAt?: string;
|
|
279
|
-
/** The principal id that wrote the membership (`grantedBy`). */
|
|
280
|
-
readonly grantedBy?: string;
|
|
281
|
-
/** Free-text justification recorded on the membership (`reason`). */
|
|
282
|
-
readonly reason?: string;
|
|
283
|
-
/** A subgroup filling `member.group`: a fixed name every row has, or a column. */
|
|
284
|
-
readonly group?: string | {
|
|
285
|
-
readonly column: string;
|
|
286
|
-
};
|
|
287
|
-
/** `idp` when the identity provider owns every row, or a text column holding `idp` per row. */
|
|
288
|
-
readonly managedBy?: "idp" | {
|
|
289
|
-
readonly column: string;
|
|
290
|
-
};
|
|
291
|
-
/** A `text[]` column of seats. */
|
|
292
|
-
readonly seats?: string;
|
|
293
|
-
};
|
|
294
|
-
/** What `permdock supabase hook generate` compiles; the same SQL the source runs. */
|
|
295
|
-
type MembershipSql = {
|
|
296
|
-
readonly table: string;
|
|
297
|
-
/** Columns of the table that decide a membership; triggers bump the authorization version on them. */
|
|
298
|
-
readonly user: string;
|
|
299
|
-
/** `<table>.<user>%type`: the PL/pgSQL type of the user column, for a variable `select` compares with. */
|
|
300
|
-
readonly userType: string;
|
|
301
|
-
/**
|
|
302
|
-
* The `select` of claim rows for one user, with every filter applied.
|
|
303
|
-
* `user` must have the column's type (a `userType` variable, or an untyped
|
|
304
|
-
* `$1` Postgres infers): the column is compared uncast so its index applies.
|
|
305
|
-
*/
|
|
306
|
-
select(user: string): string;
|
|
307
|
-
/** The `select` of member rows for one scope instance (`$1` scope, `$2` id). */
|
|
308
|
-
list(): string;
|
|
309
|
-
/** A text column holding `idp` for rows the identity provider owns; `''` when every row is owned. */
|
|
310
|
-
readonly managed?: string;
|
|
311
|
-
/** Other tables the `select` reads (suspension tables). */
|
|
312
|
-
readonly reads: readonly string[];
|
|
313
|
-
/** Every column that decides who holds which membership: user, scope, id, `within`, role, `via` and expiry. */
|
|
314
|
-
readonly columns: readonly string[];
|
|
315
|
-
/** For a single-scope source: its scope and the scopes whose ids each row carries. */
|
|
316
|
-
readonly scope?: string;
|
|
317
|
-
readonly holds?: readonly string[];
|
|
318
|
-
/** The source's entry in the hook manifest's `memberships`. */
|
|
319
|
-
readonly manifest: SupabaseManifestMembership;
|
|
320
|
-
};
|
|
321
|
-
type SqlMembershipSource = MembershipSource & {
|
|
322
|
-
readonly sql: MembershipSql;
|
|
323
|
-
};
|
|
324
|
-
/**
|
|
325
|
-
* Memberships from one table holding every scope: a row per user, scope,
|
|
326
|
-
* instance and role (`user_id, scope, scope_id, role`), with optional
|
|
327
|
-
* `within`, `via`, expiry, owner and seat columns. Rows of the same instance
|
|
328
|
-
* merge into one membership.
|
|
329
|
-
*/
|
|
330
|
-
declare function fromTable(options: MembershipTableOptions): SqlMembershipSource;
|
|
331
|
-
/**
|
|
332
|
-
* Memberships from a table of one scope (`customer_contacts`): every row is a
|
|
333
|
-
* membership of `scope`, with roles from a column or fixed (`['contact']`), a
|
|
334
|
-
* fixed `via`, and ancestor ids from `within` columns.
|
|
335
|
-
*/
|
|
336
|
-
declare function fromJunction(options: MembershipJunctionOptions): SqlMembershipSource;
|
|
337
|
-
declare const AUTHZ_VERSION_TABLE = "permdock_authz_version";
|
|
338
|
-
/**
|
|
339
|
-
* Reads the authorization version `permdock supabase hook generate` keeps in
|
|
340
|
-
* `<schema>.permdock_authz_version`: pass it to `claimsFirst(sources, { version })`.
|
|
341
|
-
*/
|
|
342
|
-
declare function authzVersion(options: {
|
|
343
|
-
readonly query: SqlQuery;
|
|
344
|
-
readonly schema?: string;
|
|
345
|
-
}): NonNullable<MembershipSource["version"]>;
|
|
346
|
-
//#endregion
|
|
347
|
-
export { SupabaseActClaim as C, SupabaseMembershipClaim as D, SupabaseClaimsSchema as E, SupabasePermDockClaims as O, SupabaseSuspension as S, SupabaseClaimsOptions as T, SupabasePrincipal as _, SqlMembershipSource as a, SupabaseSessionLike as b, fromJunction as c, SupabaseActiveRow as d, SupabaseActor as f, SupabaseMembershipTable as g, SupabaseInclude as h, MembershipTableOptions as i, supabaseClaims as k, fromTable as l, SupabaseDelegation as m, MembershipJunctionOptions as n, SqlQuery as o, SupabaseActorResult as p, MembershipSql as r, authzVersion as s, AUTHZ_VERSION_TABLE as t, AuthorizeSqlOptions as u, SupabaseRlsConfig as v, SupabaseClaims as w, SupabaseSubjectOptions as x, SupabaseRlsOptions as y };
|
|
306
|
+
export { SupabaseClaimsSchema as C, supabaseClaims as E, SupabaseClaimsOptions as S, SupabasePermDockClaims as T, SupabaseSuspendedMembership as _, SupabaseActorResult as a, SupabaseActClaim as b, SupabaseMembershipTable as c, SupabaseRealtime as d, SupabaseRlsConfig as f, SupabaseSubjectOptions as g, SupabaseStorage as h, SupabaseActor as i, SupabasePermissionRef as l, SupabaseSessionLike as m, RoleThrough as n, SupabaseDelegation as o, SupabaseRlsOptions as p, SupabaseActiveRow as r, SupabaseInclude as s, AuthorizeSqlOptions as t, SupabasePrincipal as u, SupabaseSuspendedScope as v, SupabaseMembershipClaim as w, SupabaseClaims as x, SupabaseSuspension as y };
|
package/dist/unplugin/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as PermDockPluginOptions } from "../types-
|
|
1
|
+
import { a as PermDockPluginOptions } from "../types-BPxgszlT.js";
|
|
2
2
|
import { createUnplugin } from "unplugin";
|
|
3
3
|
//#region src/unplugin/index.d.ts
|
|
4
4
|
type CreateUnplugin = typeof createUnplugin<PermDockPluginOptions | undefined>;
|
package/dist/unplugin/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as
|
|
1
|
+
import { n as createCollectScheduler, r as report } from "../watch-UihESpsJ.js";
|
|
2
2
|
import { t as peerHint } from "../peer-BOr_kJE1.js";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
//#region src/unplugin/index.ts
|
|
@@ -9,19 +9,20 @@ function loadCreateUnplugin() {
|
|
|
9
9
|
throw new Error(peerHint("unplugin", "permdock/unplugin"));
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
function report(message) {
|
|
13
|
-
if (message !== void 0) process.stderr.write(`permdock: ${message}\n`);
|
|
14
|
-
}
|
|
15
12
|
function collectPlugin(options) {
|
|
13
|
+
const schedulers = /* @__PURE__ */ new Map();
|
|
14
|
+
function schedulerFor(cwd) {
|
|
15
|
+
const scheduler = schedulers.get(cwd) ?? createCollectScheduler(cwd, options);
|
|
16
|
+
schedulers.set(cwd, scheduler);
|
|
17
|
+
return scheduler;
|
|
18
|
+
}
|
|
16
19
|
return {
|
|
17
20
|
name: "permdock-collect",
|
|
18
21
|
async buildStart() {
|
|
19
|
-
report(await
|
|
22
|
+
report(await schedulerFor(process.cwd()).run(options?.check === true));
|
|
20
23
|
},
|
|
21
|
-
watchChange() {
|
|
22
|
-
|
|
23
|
-
report(error instanceof Error ? error.message : String(error));
|
|
24
|
-
});
|
|
24
|
+
watchChange(id) {
|
|
25
|
+
schedulerFor(process.cwd()).changed(id);
|
|
25
26
|
}
|
|
26
27
|
};
|
|
27
28
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as listArg, i as globalArgs, t as COMMAND_DESCRIPTIONS } from "./commands-
|
|
1
|
+
import { a as listArg, i as globalArgs, t as COMMAND_DESCRIPTIONS } from "./commands-DWOrSQic.js";
|
|
2
2
|
import { defineCommand } from "citty";
|
|
3
3
|
//#region src/cli/commands/usage.ts
|
|
4
4
|
function usage(ctx) {
|
|
@@ -24,7 +24,7 @@ function usage(ctx) {
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
async run({ args: parsed, rawArgs }) {
|
|
27
|
-
const result = await (await import("./usage-
|
|
27
|
+
const result = await (await import("./usage-D82l1CwK.js")).runUsage({
|
|
28
28
|
cwd: ctx.cwd,
|
|
29
29
|
config: ctx.config,
|
|
30
30
|
ignore: listArg(rawArgs, "ignore"),
|