permdock 0.1.0 → 0.3.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-CKwwqFWz.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 +223 -0
- package/dist/better-supabase/index.js +648 -0
- package/dist/bind-C_ob3LKa.d.ts +25 -0
- package/dist/bind-CuzGytRf.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-BDG_nkxt.d.ts → capability-2kYTMWDv.d.ts} +2 -2
- package/dist/{capability-B68OFnZx.js → capability-4qPdO9gk.js} +7 -5
- package/dist/catalog/index.d.ts +1 -1
- package/dist/catalog/index.js +1 -1
- package/dist/catalog-CRW5Mx_B.js +2 -0
- package/dist/{catalog-H-vFGwWK.js → catalog-DWF5cYqB.js} +4 -4
- package/dist/{catalog-B0E6bggc.js → catalog-dFZdWCGN.js} +2 -2
- package/dist/{catalog-doc-BSo_Q_-6.js → catalog-doc-DdGm82XT.js} +20 -32
- 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-CB_ELYuX.js} +2 -2
- package/dist/{cloud-Cuxr6Czw.js → cloud-DWLXO2af.js} +7 -6
- package/dist/collect-DClJsheJ.js +83 -0
- package/dist/{collect-O-tOtbnk.js → collect-DSTE3ml9.js} +194 -42
- package/dist/collect-DSWOk19R.js +2 -0
- package/dist/{commands-BMh_Etm2.js → commands-DSxCqG9A.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-BkRyBDBw.d.ts +94 -0
- package/dist/config-BJiM-xAm.js +157 -0
- package/dist/config-Dnszbv-6.js +36 -0
- package/dist/config-report-DMvWKUxL.js +44 -0
- package/dist/{connection-JvqwHODC.js → connection-CU8MQxRi.js} +1 -1
- package/dist/{context-CKEAabd7.js → context-Bcy85rGi.js} +36 -27
- package/dist/convex/index.d.ts +9 -4
- package/dist/convex/index.js +14 -4
- package/dist/create-B1d519XK.d.ts +245 -0
- package/dist/create-CMwIl-w2.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-DMYiCjJV.d.ts} +9 -10
- package/dist/{diff-x5Il8LVa.js → diff-2VaeChzX.js} +44 -11
- package/dist/{diff-BUzf5Poi.js → diff-DBIhz_f2.js} +2 -2
- package/dist/{doctor-Bqo6FwUa.js → doctor-BwCAMLx_.js} +2 -2
- package/dist/doctor-collect-CHk6XWOA.js +665 -0
- package/dist/doctor-igIiM_Hl.js +1194 -0
- 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-DPdqI50v.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-CTLijvdm.js} +66 -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-0nNqHspG.d.ts +6 -0
- package/dist/{index-xIxJLwOQ.d.ts → index-BNc7Wer_.d.ts} +75 -7
- package/dist/{index-CltcQ4Bf.d.ts → index-C7Tw7MaW.d.ts} +68 -5
- package/dist/{index-LF_hS-yn.d.ts → index-C8z4RjQV.d.ts} +1 -1
- package/dist/index.d.ts +14 -9
- package/dist/index.js +22 -17
- package/dist/instance-options-Dhhcnm3y.js +22 -0
- package/dist/instance-options-jARdwfPN.d.ts +11 -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-_RRHmnMY.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-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-CwePaF7C.js → openapi-l0xYHkcv.js} +3 -3
- 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-BrMozJCo.js +36 -0
- package/dist/parse-local-manifest-JLnaBH0S.d.ts +10 -0
- package/dist/pdp/index.d.ts +2 -2
- package/dist/pdp/index.js +14 -127
- package/dist/{permdock-yoZ7EjxX.js → permdock-CbgvLnuo.js} +672 -149
- package/dist/{permissions-B8vCg_bI.d.ts → permissions-CDgvKG5L.d.ts} +2 -2
- package/dist/{permissions-DC7GROPA.js → permissions-DVoF6dMt.js} +77 -15
- package/dist/{permissions-B4apnahQ.d.ts → permissions-DttnqqxC.d.ts} +34 -5
- package/dist/{permissions-CofRqesP.js → permissions-RJrovw98.js} +3 -3
- package/dist/{pins-CqE1jZuF.js → pins-8ILTftC9.js} +2 -2
- package/dist/{policy-Cq2fB8Q5.d.ts → policy-D2W7uv19.d.ts} +2 -2
- package/dist/{policy-CInmNGkM.d.ts → policy-IB6yxpC3.d.ts} +351 -42
- package/dist/{policy-ANp36PnI.js → policy-xyWg7QdR.js} +173 -22
- package/dist/powersync-BylawD_U.js +540 -0
- package/dist/powersync-DliZK_-y.js +62 -0
- package/dist/powersync-e_AZrKbg.js +2 -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-DX075l9V.d.ts +7 -0
- package/dist/problem-details-_AMOYz-w.js +144 -0
- package/dist/{protected-BuPAycJT.d.ts → protected-BdnIEFkY.d.ts} +5 -4
- package/dist/protected-utU-SLuy.js +100 -0
- package/dist/protected-xAr24FEC.d.ts +40 -0
- package/dist/provider-CSQd7m92.js +52 -0
- package/dist/{provider-wTAUda2v.d.ts → provider-DZY281jO.d.ts} +1 -1
- package/dist/provider-store-Cfbvo4DE.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-CYyiLiwO.d.ts +5 -0
- package/dist/resource-ref-CaS9yVPi.js +20 -0
- package/dist/revocations-Bhr0aMIC.js +27 -0
- package/dist/{rls-BOFU3chG.js → rls-B4ur8nKQ.js} +8 -3
- package/dist/rls-DQtdgTHB.js +2521 -0
- package/dist/rls-fields-74oZPXWL.js +3582 -0
- package/dist/{rls-graph-DxQ39PJj.js → rls-graph-CHwx0V8q.js} +100 -36
- package/dist/{rls-import-CXV6LBlS.js → rls-import-BTFVk3jH.js} +7 -6
- package/dist/{rls-migrate-DrFPbf8p.js → rls-migrate-CN4TlJTO.js} +6 -5
- package/dist/rls-ownership-RuFqaqGz.js +843 -0
- package/dist/rls-shared-Cewd_-zI.js +495 -0
- package/dist/rls-verify-CVQTHTh5.js +746 -0
- package/dist/{row-check-BajTgQZ-.d.ts → row-check-Dt35czLy.d.ts} +12 -15
- package/dist/row-conditions-h2HythXQ.js +27 -0
- package/dist/rpc-DL9Sqvb1.js +89 -0
- package/dist/{run-CJ6UvS3a.js → run-DKDbM4Du.js} +31 -12
- package/dist/runtime-CB8gQFvS.js +11 -0
- package/dist/{saas-BRrZzJkM.js → saas-DhpJjnBA.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-B1fZzIMf.d.ts} +1 -1
- package/dist/skills-Biq5uup3.js +192 -0
- package/dist/{skills-C_lpV4Jx.js → skills-Bx-U0irG.js} +10 -4
- package/dist/{snapshot-DE8dE_hz.js → snapshot-Enxd0n-s.js} +138 -214
- package/dist/snapshot-cache-B-LxUahj.d.ts +45 -0
- package/dist/snapshot-cache-D6jLelln.js +44 -0
- package/dist/solid/index.d.ts +39 -9
- package/dist/solid/index.js +76 -85
- package/dist/sources-4p0-4xQm.js +545 -0
- package/dist/sources-BdOYLw9j.d.ts +192 -0
- package/dist/{sql-Bll1d7y0.js → sql-xdg5f4Fi.js} +6 -1
- package/dist/{src-CTNT-PBW.js → src-BDwEZWrZ.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-jOBYpiXC.d.ts} +13 -4
- package/dist/store-options-ByhZq1jV.js +716 -0
- package/dist/{stores-CkG2HrSg.js → stores-BT2pSCub.js} +10 -63
- package/dist/{stores-CvOnu_2T.d.ts → stores-C0IMQrGI.d.ts} +20 -9
- package/dist/{stream-BhMfZOwr.d.ts → stream-D1RXubw2.d.ts} +2 -2
- package/dist/{stream-Q_xlB6Ko.js → stream-DDpvynSB.js} +16 -2
- package/dist/subject-settings-BwBmCdTR.js +128 -0
- package/dist/supabase/index.d.ts +133 -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-Boqb9a_Y.js} +3 -3
- package/dist/{supabase-DTxGtYdi.js → supabase-C0qESOa-.js} +347 -367
- package/dist/supabase-config-BpPXt3x1.js +472 -0
- package/dist/supabase-hook-6sYLXg_u.js +2 -0
- package/dist/{supabase-hook-D_OqGb_V.js → supabase-hook-CSLQ4zJ3.js} +1037 -705
- package/dist/supautils-Cn4R4cJ4.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-BnIEz1sU.d.ts +48 -0
- package/dist/{types-CxquUByI.d.ts → types-Bvc4oWT6.d.ts} +1 -1
- package/dist/{sources-DOpW5Ila.d.ts → types-C97IskBw.d.ts} +86 -127
- package/dist/types-CKNSyIf_.d.ts +52 -0
- package/dist/types-Cq_H8N_X.d.ts +197 -0
- package/dist/{types-D6Z6-rKJ.d.ts → types-DbjRN55U.d.ts} +273 -22
- package/dist/{types-BBK-exvJ.d.ts → types-Dnemwd77.d.ts} +7 -1
- package/dist/{types-BvBk1wgn.d.ts → types-DxiCGmmd.d.ts} +5 -3
- package/dist/{types-B9dmiiab.d.ts → types-QCuYJh4q.d.ts} +1 -1
- package/dist/{types-B8w5PFtS.d.ts → types-aqOHTHcp.d.ts} +17 -1
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +10 -9
- package/dist/usage-DorAJiU_.js +2 -0
- package/dist/{usage-1ozMubLY.js → usage-GTixvDDU.js} +2 -2
- package/dist/{usage-CUnK6Ou9.js → usage-ItS7nLcl.js} +225 -62
- package/dist/validation-error-Ba264OaJ.d.ts +26 -0
- package/dist/validation-error-CnjZ4t92.js +33 -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-BwxLTYMZ.js +2 -0
- package/dist/watch-DVBJ9cBq.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
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { d as group, p as sqlStatements } from "./supabase-config-BpPXt3x1.js";
|
|
2
|
+
//#region src/cli/supautils.ts
|
|
3
|
+
/** `supautils.reserved_roles` of supabase/postgres 17.11.0.002 (supautils 3.4.4). */
|
|
4
|
+
const RESERVED_ROLES = /* @__PURE__ */ new Set([
|
|
5
|
+
"supabase_admin",
|
|
6
|
+
"supabase_auth_admin",
|
|
7
|
+
"supabase_storage_admin",
|
|
8
|
+
"supabase_read_only_user",
|
|
9
|
+
"supabase_realtime_admin",
|
|
10
|
+
"supabase_replication_admin",
|
|
11
|
+
"supabase_etl_admin",
|
|
12
|
+
"supabase_privileged_role",
|
|
13
|
+
"dashboard_user",
|
|
14
|
+
"pgbouncer",
|
|
15
|
+
"service_role",
|
|
16
|
+
"authenticator",
|
|
17
|
+
"authenticated",
|
|
18
|
+
"anon"
|
|
19
|
+
]);
|
|
20
|
+
/** The `*` entries of `reserved_roles`: `postgres` may still `set` or `reset` their settings. */
|
|
21
|
+
const CONFIGURABLE_ROLES = /* @__PURE__ */ new Set([
|
|
22
|
+
"service_role",
|
|
23
|
+
"authenticator",
|
|
24
|
+
"authenticated",
|
|
25
|
+
"anon"
|
|
26
|
+
]);
|
|
27
|
+
/** `supautils.reserved_memberships` of the same image. */
|
|
28
|
+
const RESERVED_MEMBERSHIPS = /* @__PURE__ */ new Set([
|
|
29
|
+
"pg_read_server_files",
|
|
30
|
+
"pg_write_server_files",
|
|
31
|
+
"pg_execute_server_program",
|
|
32
|
+
"supabase_admin",
|
|
33
|
+
"supabase_auth_admin",
|
|
34
|
+
"supabase_storage_admin",
|
|
35
|
+
"supabase_read_only_user",
|
|
36
|
+
"supabase_realtime_admin",
|
|
37
|
+
"supabase_replication_admin",
|
|
38
|
+
"supabase_etl_admin",
|
|
39
|
+
"dashboard_user",
|
|
40
|
+
"pgbouncer",
|
|
41
|
+
"authenticator"
|
|
42
|
+
]);
|
|
43
|
+
const ROLE = String.raw`(?:"[^"]+"|\w+)`;
|
|
44
|
+
const ROLES = String.raw`${ROLE}(?:\s*,\s*${ROLE})*`;
|
|
45
|
+
const ALTER_ROLE = new RegExp(String.raw`^alter\s+(role|user|group)\s+(${ROLE})\s+([\s\S]*)$`, "iu");
|
|
46
|
+
const DROP_ROLE = new RegExp(String.raw`^drop\s+(?:role|user|group)\s+(?:if\s+exists\s+)?(${ROLES})\s*$`, "iu");
|
|
47
|
+
const GRANT_ROLE = /^grant\s+([\s\S]+?)\s+to\s/iu;
|
|
48
|
+
const CREATE_IN_ROLE = new RegExp(String.raw`^create\s+(?:role|user|group)\s+${ROLE}\b[\s\S]*?\bin\s+(?:role|group)\s+(${ROLES})`, "iu");
|
|
49
|
+
const CONFIG_CHANGE = /^(?:in\s+database\s+\S+\s+)?(?:set|reset)\s/iu;
|
|
50
|
+
function roleName(name) {
|
|
51
|
+
return name.replaceAll("\"", "").toLowerCase();
|
|
52
|
+
}
|
|
53
|
+
function roleList(list) {
|
|
54
|
+
return list.split(",").map((name) => roleName(name.trim()));
|
|
55
|
+
}
|
|
56
|
+
function rejection(text) {
|
|
57
|
+
const alter = ALTER_ROLE.exec(text);
|
|
58
|
+
if (alter !== null) {
|
|
59
|
+
const role = roleName(group(alter, 2));
|
|
60
|
+
const rest = group(alter, 3);
|
|
61
|
+
if (group(alter, 1).toLowerCase() === "group" && /^add\s/iu.test(rest)) return RESERVED_MEMBERSHIPS.has(role) ? `grants membership in the reserved role ${role}` : void 0;
|
|
62
|
+
if (!RESERVED_ROLES.has(role) || CONFIGURABLE_ROLES.has(role) && CONFIG_CHANGE.test(rest)) return;
|
|
63
|
+
return `changes the reserved role ${role}`;
|
|
64
|
+
}
|
|
65
|
+
const drop = DROP_ROLE.exec(text);
|
|
66
|
+
if (drop !== null) {
|
|
67
|
+
const role = roleList(group(drop, 1)).find((name) => RESERVED_ROLES.has(name));
|
|
68
|
+
return role === void 0 ? void 0 : `drops the reserved role ${role}`;
|
|
69
|
+
}
|
|
70
|
+
const grant = GRANT_ROLE.exec(text);
|
|
71
|
+
const granted = CREATE_IN_ROLE.exec(text)?.[1] ?? (grant === null || /\bon\b/iu.test(group(grant, 1)) ? void 0 : group(grant, 1));
|
|
72
|
+
if (granted === void 0) return;
|
|
73
|
+
const role = roleList(granted).find((name) => RESERVED_MEMBERSHIPS.has(name));
|
|
74
|
+
return role === void 0 ? void 0 : `grants membership in the reserved role ${role}`;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The statements of `sql` that supautils rejects for a non-superuser:
|
|
78
|
+
* changing or dropping a reserved role, other than `set` or `reset` on the
|
|
79
|
+
* four API roles, and granting a reserved membership.
|
|
80
|
+
*/
|
|
81
|
+
function supautilsRejections(sql) {
|
|
82
|
+
return sqlStatements(sql).flatMap(({ line, text }) => {
|
|
83
|
+
const reason = rejection(text);
|
|
84
|
+
return reason === void 0 ? [] : [{
|
|
85
|
+
line,
|
|
86
|
+
reason
|
|
87
|
+
}];
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
export { supautilsRejections as t };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
boundaryDigest,
|
|
4
|
+
boundaryFallback,
|
|
5
|
+
type PermissionBoundaryProps,
|
|
6
|
+
type PermissionBoundaryState,
|
|
7
|
+
} from './runtime.js';
|
|
8
|
+
|
|
9
|
+
let { children, denied, approval }: PermissionBoundaryProps = $props();
|
|
10
|
+
|
|
11
|
+
let refused = $state<PermissionBoundaryState | null>(null);
|
|
12
|
+
|
|
13
|
+
// A rethrown error reaches the next boundary up.
|
|
14
|
+
function onerror(error: unknown, reset: () => void): void {
|
|
15
|
+
const digest = boundaryDigest(error);
|
|
16
|
+
if (digest === null) {
|
|
17
|
+
throw error;
|
|
18
|
+
}
|
|
19
|
+
refused = {
|
|
20
|
+
...digest,
|
|
21
|
+
retry: (): void => {
|
|
22
|
+
refused = null;
|
|
23
|
+
reset();
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<svelte:boundary {onerror}>
|
|
30
|
+
{@render children?.()}
|
|
31
|
+
{#snippet failed()}
|
|
32
|
+
{#if refused !== null}
|
|
33
|
+
{@const fallback = boundaryFallback(refused, { denied, approval })}
|
|
34
|
+
{@render fallback?.(refused)}
|
|
35
|
+
{/if}
|
|
36
|
+
{/snippet}
|
|
37
|
+
</svelte:boundary>
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { onDestroy } from 'svelte';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
getStore,
|
|
6
|
+
scopedFor,
|
|
7
|
+
viewFor,
|
|
8
|
+
type ProtectedProps,
|
|
9
|
+
} from './runtime.js';
|
|
5
10
|
|
|
6
11
|
let {
|
|
7
12
|
permission,
|
|
@@ -19,9 +24,10 @@
|
|
|
19
24
|
tick += 1;
|
|
20
25
|
}),
|
|
21
26
|
);
|
|
27
|
+
const scoped = $derived(scopedFor(store, tenant, tick));
|
|
22
28
|
const view = $derived.by(() => {
|
|
23
29
|
const generation = tick;
|
|
24
|
-
return
|
|
30
|
+
return viewFor(store, permission, data, scoped, generation);
|
|
25
31
|
});
|
|
26
32
|
</script>
|
|
27
33
|
|
package/dist/svelte/index.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
1
|
+
import { n as requiredPlans } from "../problem-details-DX075l9V.js";
|
|
2
|
+
import { i as describe } from "../describe-DMYiCjJV.js";
|
|
3
|
+
import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
|
|
4
|
+
import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
|
|
5
|
+
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-CKNSyIf_.js";
|
|
6
|
+
import { i as PermissionBoundaryProps, t as ProtectedProps } from "../protected-xAr24FEC.js";
|
|
7
|
+
import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, p as PermDockSvelteOptions, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-C0IMQrGI.js";
|
|
6
8
|
import { Component } from "svelte";
|
|
7
9
|
//#region src/svelte/index.d.ts
|
|
8
10
|
export declare const Protected: Component<ProtectedProps>;
|
|
11
|
+
export declare const PermissionBoundary: Component<PermissionBoundaryProps>;
|
|
9
12
|
//#endregion
|
|
10
|
-
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockSvelteOptions, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
|
13
|
+
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockSvelteOptions, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
package/dist/svelte/index.js
CHANGED
|
@@ -1,11 +1,63 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as
|
|
5
|
-
import {
|
|
1
|
+
import { r as requiredPlans } from "../problem-details-_AMOYz-w.js";
|
|
2
|
+
import { t as describe } from "../describe-B_gVZEVi.js";
|
|
3
|
+
import { t as approvalHeaders } from "../headers-BZSDieNT.js";
|
|
4
|
+
import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
|
|
5
|
+
import { t as getStore } from "../context-Bcy85rGi.js";
|
|
6
|
+
import { n as viewFor, t as scopedFor } from "../runtime-CB8gQFvS.js";
|
|
7
|
+
import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-BT2pSCub.js";
|
|
6
8
|
import "svelte/internal/disclose-version";
|
|
7
9
|
import * as $ from "svelte/internal/client";
|
|
8
10
|
import { onDestroy } from "svelte";
|
|
11
|
+
//#region src/svelte/PermissionBoundary.svelte
|
|
12
|
+
function PermissionBoundary$1($$anchor, $$props) {
|
|
13
|
+
$.push($$props, true);
|
|
14
|
+
let refused = $.state(null);
|
|
15
|
+
function onerror(error, reset) {
|
|
16
|
+
const digest = boundaryDigest(error);
|
|
17
|
+
if (digest === null) throw error;
|
|
18
|
+
$.set(refused, {
|
|
19
|
+
...digest,
|
|
20
|
+
retry: () => {
|
|
21
|
+
$.set(refused, null);
|
|
22
|
+
reset();
|
|
23
|
+
}
|
|
24
|
+
}, true);
|
|
25
|
+
}
|
|
26
|
+
var fragment = $.comment();
|
|
27
|
+
var node = $.first_child(fragment);
|
|
28
|
+
{
|
|
29
|
+
const failed = ($$anchor) => {
|
|
30
|
+
var fragment_1 = $.comment();
|
|
31
|
+
var node_1 = $.first_child(fragment_1);
|
|
32
|
+
var consequent = ($$anchor) => {
|
|
33
|
+
const fallback = $.derived(() => boundaryFallback($.get(refused), {
|
|
34
|
+
denied: $$props.denied,
|
|
35
|
+
approval: $$props.approval
|
|
36
|
+
}));
|
|
37
|
+
var fragment_2 = $.comment();
|
|
38
|
+
var node_2 = $.first_child(fragment_2);
|
|
39
|
+
$.snippet(node_2, () => $.get(fallback) ?? $.noop, () => $.get(refused));
|
|
40
|
+
$.append($$anchor, fragment_2);
|
|
41
|
+
};
|
|
42
|
+
$.if(node_1, ($$render) => {
|
|
43
|
+
if ($.get(refused) !== null) $$render(consequent);
|
|
44
|
+
});
|
|
45
|
+
$.append($$anchor, fragment_1);
|
|
46
|
+
};
|
|
47
|
+
$.boundary(node, {
|
|
48
|
+
onerror,
|
|
49
|
+
failed
|
|
50
|
+
}, ($$anchor) => {
|
|
51
|
+
var fragment_3 = $.comment();
|
|
52
|
+
var node_3 = $.first_child(fragment_3);
|
|
53
|
+
$.snippet(node_3, () => $$props.children ?? $.noop);
|
|
54
|
+
$.append($$anchor, fragment_3);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
$.append($$anchor, fragment);
|
|
58
|
+
$.pop();
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
9
61
|
//#region src/svelte/Protected.svelte
|
|
10
62
|
function Protected$1($$anchor, $$props) {
|
|
11
63
|
$.push($$props, true);
|
|
@@ -14,9 +66,10 @@ function Protected$1($$anchor, $$props) {
|
|
|
14
66
|
onDestroy(store.subscribe(() => {
|
|
15
67
|
$.set(tick, $.get(tick) + 1);
|
|
16
68
|
}));
|
|
69
|
+
const scoped = $.derived(() => scopedFor(store, $$props.tenant, $.get(tick)));
|
|
17
70
|
const view = $.derived(() => {
|
|
18
71
|
const generation = $.get(tick);
|
|
19
|
-
return
|
|
72
|
+
return viewFor(store, $$props.permission, $$props.data, $.get(scoped), generation);
|
|
20
73
|
});
|
|
21
74
|
var fragment = $.comment();
|
|
22
75
|
var node = $.first_child(fragment);
|
|
@@ -49,5 +102,6 @@ function Protected$1($$anchor, $$props) {
|
|
|
49
102
|
//#endregion
|
|
50
103
|
//#region src/svelte/index.ts
|
|
51
104
|
const Protected = Protected$1;
|
|
105
|
+
const PermissionBoundary = PermissionBoundary$1;
|
|
52
106
|
//#endregion
|
|
53
|
-
export { Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
|
107
|
+
export { PermissionBoundary, Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
package/dist/svelte/runtime.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import {
|
|
1
|
+
import { n as boundaryDigest, r as boundaryFallback, t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
|
|
2
|
+
import { t as ClientStore } from "../store-jOBYpiXC.js";
|
|
3
|
+
import { i as PermissionBoundaryProps, n as scopedFor, r as viewFor, t as ProtectedProps } from "../protected-xAr24FEC.js";
|
|
3
4
|
//#region src/svelte/context.d.ts
|
|
4
5
|
export declare function getStore(): ClientStore;
|
|
5
6
|
//#endregion
|
|
6
|
-
export { type ProtectedProps,
|
|
7
|
+
export { type PermissionBoundaryProps, type PermissionBoundaryState, type ProtectedProps, boundaryDigest, boundaryFallback, scopedFor, viewFor };
|
package/dist/svelte/runtime.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import { t as
|
|
3
|
-
|
|
1
|
+
import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
|
|
2
|
+
import { t as getStore } from "../context-Bcy85rGi.js";
|
|
3
|
+
import { n as viewFor, t as scopedFor } from "../runtime-CB8gQFvS.js";
|
|
4
|
+
export { boundaryDigest, boundaryFallback, getStore, scopedFor, viewFor };
|
package/dist/svelte/source.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
1
|
+
import { n as requiredPlans } from "../problem-details-DX075l9V.js";
|
|
2
|
+
import { i as describe } from "../describe-DMYiCjJV.js";
|
|
3
|
+
import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
|
|
4
|
+
import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
|
|
5
|
+
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-CKNSyIf_.js";
|
|
6
|
+
import { i as PermissionBoundaryProps, t as ProtectedProps } from "../protected-xAr24FEC.js";
|
|
7
|
+
import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, p as PermDockSvelteOptions, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-C0IMQrGI.js";
|
|
6
8
|
import { Component } from "svelte";
|
|
7
9
|
//#region src/svelte/source.d.ts
|
|
8
10
|
export declare const Protected: Component<ProtectedProps>;
|
|
11
|
+
export declare const PermissionBoundary: Component<PermissionBoundaryProps>;
|
|
9
12
|
//#endregion
|
|
10
|
-
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockSvelteOptions, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, roles, setPermDock, subject, tenant };
|
|
13
|
+
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockSvelteOptions, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
package/dist/svelte/source.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import {
|
|
1
|
+
import { r as requiredPlans } from "../problem-details-_AMOYz-w.js";
|
|
2
|
+
import { t as describe } from "../describe-B_gVZEVi.js";
|
|
3
|
+
import { t as approvalHeaders } from "../headers-BZSDieNT.js";
|
|
4
|
+
import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-BT2pSCub.js";
|
|
5
|
+
import PermissionBoundaryComponent from "./PermissionBoundary.svelte";
|
|
4
6
|
import ProtectedComponent from "./Protected.svelte";
|
|
5
7
|
//#region src/svelte/source.ts
|
|
6
8
|
const Protected = ProtectedComponent;
|
|
9
|
+
const PermissionBoundary = PermissionBoundaryComponent;
|
|
7
10
|
//#endregion
|
|
8
|
-
export { Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, roles, setPermDock, subject, tenant };
|
|
11
|
+
export { PermissionBoundary, Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
package/dist/terminal/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { f as ApprovalStore } from "../types-
|
|
4
|
-
import {
|
|
1
|
+
import { C as Policy, D as PolicyVocabulary, Nr as Principal, Pr as Subject, Yn as Decision, ln as PermDock } from "../policy-IB6yxpC3.js";
|
|
2
|
+
import { f as Permission } from "../permissions-DttnqqxC.js";
|
|
3
|
+
import { f as ApprovalStore } from "../types-aqOHTHcp.js";
|
|
4
|
+
import { a as ProblemDetails, t as ApprovalHint } from "../errors-DPdqI50v.js";
|
|
5
|
+
import { t as InstanceOptions } from "../instance-options-jARdwfPN.js";
|
|
5
6
|
//#region src/terminal/types.d.ts
|
|
6
7
|
type TokenSourceName = "device" | "keychain" | "env" | "ci-oidc";
|
|
7
8
|
type TokenSource = TokenSourceName | {
|
|
@@ -78,20 +79,11 @@ type TerminalStorageOptions = {
|
|
|
78
79
|
*/
|
|
79
80
|
readonly keyring?: new (service: string, account: string) => KeyringEntry;
|
|
80
81
|
};
|
|
81
|
-
type TerminalPermDockOptions<TUser = unknown> = {
|
|
82
|
+
type TerminalPermDockOptions<TUser = unknown> = InstanceOptions & {
|
|
82
83
|
readonly subject: (context: TokenContext) => TUser | Promise<TUser>;
|
|
83
84
|
readonly actor?: (context: TokenContext) => unknown;
|
|
84
85
|
readonly tenant?: string;
|
|
85
|
-
readonly memberships?: MembershipSource | readonly MembershipSource[];
|
|
86
|
-
/** The object graph for relation grants that walk a parent chain; without it they deny. */
|
|
87
|
-
readonly relations?: RelationSource;
|
|
88
|
-
readonly entitlements?: EntitlementSource;
|
|
89
|
-
readonly customRoles?: RoleSource;
|
|
90
|
-
/** Hosted grants, read once per instance; see `PolicySource`. */
|
|
91
|
-
readonly policies?: PolicySource;
|
|
92
86
|
readonly store?: ApprovalStore;
|
|
93
|
-
readonly sink?: DecisionSink;
|
|
94
|
-
readonly limits?: LimitStore;
|
|
95
87
|
readonly storage?: TerminalStorageOptions;
|
|
96
88
|
readonly device?: DeviceFlowOptions;
|
|
97
89
|
readonly interactive?: boolean | {
|
package/dist/terminal/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { t as compact } from "../compact-y6vfu2_f.js";
|
|
2
|
-
import { a as
|
|
3
|
-
import { t as createPermDock$1 } from "../permdock-
|
|
2
|
+
import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-Cz5zn0mW.js";
|
|
3
|
+
import { t as createPermDock$1 } from "../permdock-CbgvLnuo.js";
|
|
4
|
+
import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
|
|
4
5
|
import { i as isSubject } from "../subject-C6dLxqHU.js";
|
|
5
|
-
import { l as storedApprovalToken, s as resumeDecision } from "../helpers-
|
|
6
|
+
import { l as storedApprovalToken, s as resumeDecision } from "../helpers-H_KARDVC.js";
|
|
6
7
|
import { t as timeoutSignal } from "../timeout-D51niuQP.js";
|
|
8
|
+
import { t as instanceOptions } from "../instance-options-Dhhcnm3y.js";
|
|
7
9
|
import { mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from "node:fs";
|
|
8
10
|
import path from "node:path";
|
|
9
11
|
import { createInterface } from "node:readline";
|
|
@@ -492,6 +494,15 @@ async function resolveToken(sources, options) {
|
|
|
492
494
|
}
|
|
493
495
|
//#endregion
|
|
494
496
|
//#region src/terminal/create.ts
|
|
497
|
+
/** A thrown subject, loader or decision, or an instance check without a row. */
|
|
498
|
+
const FAILED_CLOSED = {
|
|
499
|
+
outcome: "denied",
|
|
500
|
+
denials: [{
|
|
501
|
+
role: null,
|
|
502
|
+
reason: "validation"
|
|
503
|
+
}],
|
|
504
|
+
alternatives: []
|
|
505
|
+
};
|
|
495
506
|
function writeOf(options) {
|
|
496
507
|
return options.runtime?.write ?? ((text) => {
|
|
497
508
|
process.stderr.write(text);
|
|
@@ -542,16 +553,6 @@ function actorFromResolved(value) {
|
|
|
542
553
|
if (typeof value === "object" && value !== null && "id" in value && "kind" in value && typeof value.id === "string" && typeof value.kind === "string") return { actor: value };
|
|
543
554
|
return {};
|
|
544
555
|
}
|
|
545
|
-
function resourceRef(permission, data) {
|
|
546
|
-
if (data !== null && typeof data === "object" && "id" in data) {
|
|
547
|
-
const id = data.id;
|
|
548
|
-
if (typeof id === "string" || typeof id === "number") return {
|
|
549
|
-
type: permission.resource,
|
|
550
|
-
id: String(id)
|
|
551
|
-
};
|
|
552
|
-
}
|
|
553
|
-
return { type: permission.resource };
|
|
554
|
-
}
|
|
555
556
|
function defaultConfirm(input) {
|
|
556
557
|
const rl = createInterface({
|
|
557
558
|
input: process.stdin,
|
|
@@ -625,13 +626,7 @@ function createPermDock(policy, options) {
|
|
|
625
626
|
tenant: options.tenant,
|
|
626
627
|
actor,
|
|
627
628
|
delegation,
|
|
628
|
-
|
|
629
|
-
relations: options.relations,
|
|
630
|
-
entitlements: options.entitlements,
|
|
631
|
-
customRoles: options.customRoles,
|
|
632
|
-
policies: options.policies,
|
|
633
|
-
sink: options.sink,
|
|
634
|
-
limits: options.limits
|
|
629
|
+
...instanceOptions(options)
|
|
635
630
|
}));
|
|
636
631
|
last = built;
|
|
637
632
|
return built;
|
|
@@ -652,18 +647,35 @@ function createPermDock(policy, options) {
|
|
|
652
647
|
return filterCommandEntries(next.permdock ?? last, entries, next);
|
|
653
648
|
};
|
|
654
649
|
const protect = (permission, load) => (action) => async (...args) => {
|
|
655
|
-
const instance = await permdock();
|
|
656
|
-
let data;
|
|
657
|
-
if (load !== void 0) data = await load(...args);
|
|
658
|
-
const decide = instance.decide;
|
|
659
650
|
const dryRun = flag(options, options.dryRun, ["--dry-run"]);
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
651
|
+
let instance;
|
|
652
|
+
let data;
|
|
653
|
+
let decide;
|
|
654
|
+
let first;
|
|
655
|
+
try {
|
|
656
|
+
instance = await permdock();
|
|
657
|
+
if (load !== void 0) {
|
|
658
|
+
data = await load(...args);
|
|
659
|
+
if (permission.kind === "instance" && (data === null || data === void 0)) {
|
|
660
|
+
write(format(FAILED_CLOSED, {
|
|
661
|
+
permission,
|
|
662
|
+
subject: instance.subject
|
|
663
|
+
}));
|
|
664
|
+
return exit(exitCode(FAILED_CLOSED));
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
decide = instance.decide;
|
|
668
|
+
first = decide(permission, data, dryRun ? {
|
|
669
|
+
source: "simulate",
|
|
670
|
+
adapter: "terminal"
|
|
671
|
+
} : {
|
|
672
|
+
source: "adapter",
|
|
673
|
+
adapter: "terminal"
|
|
674
|
+
});
|
|
675
|
+
} catch {
|
|
676
|
+
write(format(FAILED_CLOSED, { permission }));
|
|
677
|
+
return exit(exitCode(FAILED_CLOSED));
|
|
678
|
+
}
|
|
667
679
|
if (dryRun) {
|
|
668
680
|
write(first.outcome === "granted" ? jsonOutput(options) ? `${JSON.stringify({
|
|
669
681
|
outcome: "granted",
|
|
@@ -766,7 +778,7 @@ function createPermDock(policy, options) {
|
|
|
766
778
|
store: options.store,
|
|
767
779
|
resource: resourceRef(permission, data),
|
|
768
780
|
adapter: "terminal",
|
|
769
|
-
token: await storedApprovalToken(options.store, first
|
|
781
|
+
token: await storedApprovalToken(options.store, first)
|
|
770
782
|
});
|
|
771
783
|
if (resumed.outcome !== "granted") {
|
|
772
784
|
write(format(resumed, {
|