permdock 0.3.1 → 0.4.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/dist/a2a/index.d.ts +7 -5
- package/dist/a2a/index.js +14 -21
- package/dist/ai-sdk/index.d.ts +18 -6
- package/dist/ai-sdk/index.js +8 -5
- package/dist/app-data-CV8pqqMi.js +59 -0
- package/dist/approvals/index.d.ts +2 -2
- package/dist/approvals/index.js +3 -3
- package/dist/{approvals-DbYAuNkG.js → approvals-DZL76lKW.js} +35 -19
- package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
- package/dist/{arazzo-BAgw9ap6.js → arazzo-C4BcskbX.js} +6 -5
- package/dist/{arazzo-C9chp3ST.js → arazzo-CD8d0WLb.js} +2 -2
- package/dist/authzen/index.d.ts +3 -3
- package/dist/authzen/index.js +161 -23
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +6 -19
- package/dist/better-supabase/index.d.ts +112 -87
- package/dist/better-supabase/index.js +257 -156
- package/dist/{bind-C_ob3LKa.d.ts → bind-BzqG8SMb.d.ts} +16 -5
- package/dist/{bind-CuzGytRf.js → bind-kk-uyCwH.js} +14 -6
- package/dist/build-instance-DIIV9DbC.js +51 -0
- package/dist/{canonical-json-DemiK4Vp.js → canonical-json-CFKyFOke.js} +1 -3
- package/dist/{capability-2kYTMWDv.d.ts → capability-CksyCWDH.d.ts} +2 -2
- package/dist/{capability-4qPdO9gk.js → capability-txATtKV4.js} +3 -2
- package/dist/catalog/index.d.ts +1 -1
- package/dist/catalog/index.js +1 -1
- package/dist/catalog-6yWAX6Ps.js +2 -0
- package/dist/{catalog-CYj-mX2O.js → catalog-WHG4kBq7.js} +2 -2
- package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-DWtg0gGR.js} +17 -10
- package/dist/{catalog-DWF5cYqB.js → catalog-tZUyOfOv.js} +4 -4
- package/dist/claude-agent/index.d.ts +4 -4
- package/dist/claude-agent/index.js +4 -5
- package/dist/clerk/index.d.ts +3 -3
- package/dist/clerk/index.js +8 -33
- package/dist/cli/bin.js +1 -1
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +3 -3
- package/dist/cloud/index.d.ts +4 -4
- package/dist/cloud/index.js +9 -15
- package/dist/{cloud-CfwZ39Rl.js → cloud-C7bSDgX4.js} +2 -2
- package/dist/{cloud-DWLXO2af.js → cloud-PeBN3IEn.js} +5 -5
- package/dist/{collect-DSTE3ml9.js → collect-2SrB7lfk.js} +6 -8
- package/dist/collect-Bw2Jdq1q.js +2 -0
- package/dist/{collect-CHB22Sx4.js → collect-CQx4hX4N.js} +3 -3
- package/dist/{commands-BeaGNj_o.js → commands-Cpip4ULx.js} +13 -13
- package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -1
- package/dist/{compile-Ba4blROR.js → compile-CcEu2ZQ1.js} +6 -5
- package/dist/{compile-BkRyBDBw.d.ts → compile-CtTP7eur.d.ts} +2 -2
- package/dist/{config-BJiM-xAm.js → config-BIjREpyE.js} +4 -4
- package/dist/{config-ir40y8m0.js → config-DLt6BvV7.js} +2 -2
- package/dist/{config-report-CdCgbRnV.js → config-report--Xb9APJS.js} +5 -6
- package/dist/{connection-CU8MQxRi.js → connection-DUsczpB5.js} +3 -2
- package/dist/constants-DcJABbLW.js +20 -0
- package/dist/{context-Bcy85rGi.js → context-DieZVJXu.js} +16 -5
- package/dist/convex/index.d.ts +4 -4
- package/dist/convex/index.js +14 -16
- package/dist/create-BBO24vj6.js +324 -0
- package/dist/{credential-8P81ff4u.js → credential-kue0qpbm.js} +4 -4
- package/dist/deciding-columns-Sq12mEA6.js +123 -0
- package/dist/delegation-input-FTxMK3ji.js +19 -0
- package/dist/denied-text-DfRk15uw.d.ts +19 -0
- package/dist/{describe-DMYiCjJV.d.ts → describe-C3ldA9os.d.ts} +11 -2
- package/dist/{describe-B_gVZEVi.js → describe-Cgkp7eP0.js} +5 -4
- package/dist/{diff-C9RDjjhs.js → diff-Cnghh_Ip.js} +2 -2
- package/dist/{diff-2VaeChzX.js → diff-rpqoe7Ag.js} +9 -9
- package/dist/{doctor-Djh6JDEk.js → doctor-CuVJvhV_.js} +2 -2
- package/dist/doctor-owlv6ddh.js +2166 -0
- package/dist/drizzle/index.d.ts +2 -2
- package/dist/drizzle/index.js +6 -14
- package/dist/elysia/index.d.ts +4 -4
- package/dist/elysia/index.js +7 -7
- package/dist/{errors-DPdqI50v.d.ts → errors-OD_4c__H.d.ts} +2 -2
- package/dist/{errors-Cz5zn0mW.js → errors-drnfxYtm.js} +3 -3
- package/dist/{evaluations-tz6D9A2G.js → evaluations-C9YJsv3H.js} +45 -7
- package/dist/eve/index.d.ts +5 -5
- package/dist/eve/index.js +5 -5
- package/dist/express/index.d.ts +4 -4
- package/dist/express/index.js +8 -7
- package/dist/fastify/index.d.ts +15 -5
- package/dist/fastify/index.js +9 -29
- package/dist/fields-fwfXN01n.js +1016 -0
- package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
- package/dist/{fixtures-ht28Cplr.js → fixtures-h2eG2OZV.js} +5 -6
- package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-7REQZe0H.js} +32 -22
- package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
- package/dist/grantee-CXY-0C87.js +254 -0
- package/dist/grantee-conditions-MQs5NIuX.js +270 -0
- package/dist/grantee-match-fxYp9Nmt.js +141 -0
- package/dist/{helpers-H_KARDVC.js → helpers-C9YmyBIa.js} +7 -6
- package/dist/hono/index.d.ts +4 -4
- package/dist/hono/index.js +8 -8
- package/dist/hosted-CBHgkzDl.js +655 -0
- package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
- package/dist/{http-BIhmLfCc.js → http-BEbdMZ05.js} +2 -24
- package/dist/{rls-import-4lLW_pbb.js → import-BFIlhetD.js} +86 -80
- package/dist/{openapi-import-cmwetbzw.js → import-UHk1N7vH.js} +6 -7
- package/dist/{index-C8z4RjQV.d.ts → index-BwMe94Xq.d.ts} +1 -1
- package/dist/{index-0nNqHspG.d.ts → index-DgM7w96K.d.ts} +2 -2
- package/dist/{index-C7Tw7MaW.d.ts → index-Dz7didpC.d.ts} +3 -3
- package/dist/{index-BNc7Wer_.d.ts → index-UdVQgq48.d.ts} +105 -38
- package/dist/index.d.ts +15 -13
- package/dist/index.js +22 -22
- package/dist/{instance-options-jARdwfPN.d.ts → instance-options-plkrsAog.d.ts} +1 -1
- package/dist/{json-schema-BsAflUGW.js → json-schema-DBkdUuCO.js} +1 -3
- package/dist/jwt/index.d.ts +4 -4
- package/dist/jwt/index.js +13 -13
- package/dist/{kernel-_RRHmnMY.js → kernel-CB3LrIJM.js} +81 -32
- package/dist/kysely/index.d.ts +2 -2
- package/dist/kysely/index.js +6 -14
- package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
- package/dist/load-B_shHrmd.js +2 -0
- package/dist/{load-DhWEB9P1.js → load-C3_oTHyO.js} +11 -3
- package/dist/{manifest-iaoBXHKc.js → manifest-BngWKryL.js} +5 -18
- package/dist/{map-claims-Z4QZOiFF.js → map-claims-AVlBaJoa.js} +7 -16
- package/dist/{map-error-pgUWNNtG.js → map-error-BE27PYkE.js} +5 -5
- package/dist/{markers-B0hYLvMD.js → markers-CiwAOZtO.js} +6 -2
- package/dist/{may-use-DndQ5tQ-.js → may-use-BOn_dR_w.js} +4 -3
- package/dist/mcp/index.d.ts +26 -9
- package/dist/mcp/index.js +456 -446
- package/dist/{rls-migrate-CN4TlJTO.js → migrate-BwlB5-Wk.js} +75 -15
- package/dist/nest/index.d.ts +4 -4
- package/dist/nest/index.js +11 -12
- package/dist/next/index.d.ts +31 -8
- package/dist/next/index.js +29 -33
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +1 -1
- package/dist/node/index.d.ts +4 -4
- package/dist/node/index.js +4 -4
- package/dist/ocsf-uYFXGVw2.js +115 -0
- package/dist/openai/index.d.ts +5 -5
- package/dist/openai/index.js +4 -4
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-CqqEbHsL.js → openapi-BJdBmYDG.js} +19 -23
- package/dist/{openapi-BqRBvAng.js → openapi-DBzHQbov.js} +2 -5
- package/dist/{openapi-CQTsgKoB.js → openapi-DcQ1Kg40.js} +3 -3
- package/dist/orpc/index.d.ts +5 -5
- package/dist/orpc/index.js +9 -11
- package/dist/otel/index.d.ts +2 -2
- package/dist/otel/index.js +26 -23
- package/dist/output-files-CgIsvdSa.js +140 -0
- package/dist/{rls-ownership-DcYlZ09B.js → ownership-BgnbOJFT.js} +387 -379
- package/dist/{package-root-zGkxO3oN.js → package-root-DtNnpmUd.js} +3 -2
- package/dist/{parse-BuyjxhZV.js → parse-CVFQHk6c.js} +3 -3
- package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-C-q02Pal.js} +2 -4
- package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DvYUR0QL.d.ts} +1 -1
- package/dist/pdp/index.d.ts +2 -2
- package/dist/pdp/index.js +8 -9
- package/dist/{permdock-CbgvLnuo.js → permdock-L26udHSk.js} +1387 -1220
- package/dist/{rls-fields-CZOMlwHl.js → permission-keys-B26jeyUv.js} +1268 -2053
- package/dist/permission-registry-BsblpB-z.js +385 -0
- package/dist/{permissions-DttnqqxC.d.ts → permission-types-Dg39z9Kv.d.ts} +59 -31
- package/dist/{permissions-RJrovw98.js → permissions-CCJ6lmxB.js} +3 -3
- package/dist/{permissions-CDgvKG5L.d.ts → permissions-COH-KRgT.d.ts} +2 -2
- package/dist/{policy-IB6yxpC3.d.ts → policy-types-sp9P1iIV.d.ts} +661 -582
- package/dist/{policy-D2W7uv19.d.ts → policy-ur0BBK_e.d.ts} +2 -2
- package/dist/{powersync-DE19b9dT.js → powersync-BFSbSElQ.js} +2 -2
- package/dist/powersync-DCDgZgfZ.js +2 -0
- package/dist/{powersync-Dv1_aWF7.js → powersync-cZe4kzhL.js} +26 -27
- package/dist/prisma/index.d.ts +1 -1
- package/dist/prisma/index.js +6 -12
- package/dist/{problem-B43ztKIm.js → problem-CnWraVhC.js} +8 -7
- package/dist/{problem-details-_AMOYz-w.js → problem-details-DECUnXAn.js} +2 -2
- package/dist/{problem-details-DX075l9V.d.ts → problem-details-rIIo8B2C.d.ts} +1 -1
- package/dist/{protected-BdnIEFkY.d.ts → protected-B3_P7xuw.d.ts} +9 -6
- package/dist/{protected-utU-SLuy.js → protected-BN7BUdY1.js} +20 -8
- package/dist/{provider-CSQd7m92.js → provider-Bi-0HNL3.js} +23 -10
- package/dist/{provider-DZY281jO.d.ts → provider-kwHC9CZD.d.ts} +1 -1
- package/dist/{provider-store-Cfbvo4DE.js → provider-store-Ctt-81Ni.js} +6 -3
- package/dist/react/index.d.ts +7 -7
- package/dist/react/index.js +5 -5
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +20 -11
- package/dist/react-native/index.js +33 -17
- package/dist/{refs-KYb4ntaz.js → refs-f3imMjNW.js} +1 -1
- package/dist/relation-walk-BXnlLtg2.js +186 -0
- package/dist/relations-CvmSpG67.js +163 -0
- package/dist/{replay-CYyiLiwO.d.ts → replay-COpmZUfx.d.ts} +1 -1
- package/dist/request-context-BVM7aWNs.js +71 -0
- package/dist/request-context-C2_1lchh.d.ts +5 -0
- package/dist/resource-relations-D1Un3pcz.js +243 -0
- package/dist/retire-BFcxL6un.js +240 -0
- package/dist/{rls-P-BeBx0n.js → rls-55DQTuf5.js} +14 -2
- package/dist/{rls-DiinlRML.js → rls-BEktUaqg.js} +884 -484
- package/dist/{policy-xyWg7QdR.js → role-builder-B4GbKM-i.js} +235 -541
- package/dist/{rpc-DL9Sqvb1.js → rpc-nYC3cR_u.js} +15 -5
- package/dist/{run-BWc9qqvE.js → run-DMcNW_8T.js} +3 -3
- package/dist/{runtime-CB8gQFvS.js → runtime-D_tMXnsq.js} +1 -1
- package/dist/{saas-DhpJjnBA.js → saas-DtaA4JuW.js} +9 -8
- package/dist/{openapi-schema--ARjyfQr.js → schema-Bol6gqXA.js} +3 -5
- package/dist/{schema-D3MnDMxa.js → schema-DjQBcAP9.js} +4 -2
- package/dist/scim/index.d.ts +1 -1
- package/dist/scim/index.js +1 -1
- package/dist/{scim-BFGBBAqR.js → scim-vFR1O5oG.js} +6 -12
- package/dist/{scopes-CVdPrWN-.js → scopes-tvpa34ep.js} +10 -2
- package/dist/server/index.d.ts +18 -8
- package/dist/server/index.js +8 -8
- package/dist/{server-DlZ28Oz5.js → server-ZYEHtNHS.js} +4 -4
- package/dist/{create-B1d519XK.d.ts → server-types-DdqBwZN_.d.ts} +69 -33
- package/dist/shared-1uhI-e-b.js +294 -0
- package/dist/{shared-DRu8VFVM.js → shared-JhMeOsDF.js} +1 -1
- package/dist/{sink-Bd9PSyfq.js → sink-BTtmfPnE.js} +1 -1
- package/dist/{sink-B1fZzIMf.d.ts → sink-CPN4zLfs.d.ts} +1 -1
- package/dist/{skills-Biq5uup3.js → skills-BZdRQkxs.js} +4 -3
- package/dist/{skills-C5CbhhpG.js → skills-Dle4ZoLF.js} +2 -2
- package/dist/{snapshot-Enxd0n-s.js → snapshot-Dc9CHPME.js} +116 -13
- package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-Cod40D-X.js} +1 -1
- package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-J5T7t_vD.d.ts} +1 -1
- package/dist/solid/index.d.ts +22 -22
- package/dist/solid/index.js +40 -10
- package/dist/{sources-4p0-4xQm.js → sources-B1-b-R0t.js} +25 -26
- package/dist/{sources-BdOYLw9j.d.ts → sources-Dljy06zL.d.ts} +6 -2
- package/dist/{sql-xdg5f4Fi.js → sql-t8teWOfo.js} +19 -3
- package/dist/{src-BDwEZWrZ.js → src-Bb7no-hS.js} +194 -123
- package/dist/ssf/index.d.ts +3 -3
- package/dist/ssf/index.js +58 -61
- package/dist/store-9KO4BlkB.d.ts +147 -0
- package/dist/{store-DMAWwAJV.js → store-ILkLUj_o.js} +4 -4
- package/dist/{store-options-ByhZq1jV.js → store-options-CbUHDoSe.js} +16 -7
- package/dist/{stores-BT2pSCub.js → stores-BHXdSbw9.js} +7 -3
- package/dist/stores-Cxz_80g-.d.ts +31 -0
- package/dist/{stream-DDpvynSB.js → stream-BMui98KK.js} +2 -1
- package/dist/{stream-D1RXubw2.d.ts → stream-Dwsg6WwE.d.ts} +2 -2
- package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
- package/dist/supabase/index.d.ts +4 -4
- package/dist/supabase/index.js +3 -3
- package/dist/supabase/middleware.d.ts +11 -5
- package/dist/supabase/middleware.js +10 -7
- package/dist/{supabase-C0qESOa-.js → supabase-C1TWlnYt.js} +36 -52
- package/dist/{supabase-s4o9s1O1.js → supabase-Dbqr141s.js} +2 -2
- package/dist/supabase-hook-BULg7Ut_.js +2 -0
- package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-Cva3ikXz.js} +730 -781
- package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
- package/dist/svelte/Protected.svelte +9 -2
- package/dist/svelte/index.d.ts +6 -6
- package/dist/svelte/index.js +25 -11
- package/dist/svelte/runtime.d.ts +10 -3
- package/dist/svelte/runtime.js +4 -3
- package/dist/svelte/source.d.ts +6 -6
- package/dist/svelte/source.js +4 -4
- package/dist/{validity-uOp8UpYn.js → tenancy-DshjqY0n.js} +3 -39
- package/dist/terminal/index.d.ts +5 -5
- package/dist/terminal/index.js +18 -34
- package/dist/testing/index.d.ts +89 -77
- package/dist/testing/index.js +1276 -1262
- 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/thenable-QSmvt-vZ.js +65 -0
- package/dist/{token-CIWxJOCh.js → token-Bx9qy30p.js} +1 -1
- package/dist/tool-refusal-CQ7OEia9.js +41 -0
- package/dist/trpc/index.d.ts +5 -5
- package/dist/trpc/index.js +7 -8
- package/dist/{types-DbjRN55U.d.ts → types-7rJVLWe5.d.ts} +82 -4
- package/dist/{types-aqOHTHcp.d.ts → types-Br9IXUBG.d.ts} +1 -1
- package/dist/types-ByUo56un.d.ts +88 -0
- package/dist/{types-Cq_H8N_X.d.ts → types-C0dee0Qf.d.ts} +2 -2
- package/dist/{types-DxiCGmmd.d.ts → types-CIlTojhq.d.ts} +2 -2
- package/dist/{types-QCuYJh4q.d.ts → types-CUcFZfpU.d.ts} +1 -1
- package/dist/{types-C97IskBw.d.ts → types-CqrjB9o6.d.ts} +1 -1
- package/dist/{types-BnIEz1sU.d.ts → types-DHrmBJLH.d.ts} +24 -6
- package/dist/{types-Dnemwd77.d.ts → types-DpWfQdSh.d.ts} +5 -1
- package/dist/{types-Bvc4oWT6.d.ts → types-DvupZE0w.d.ts} +1 -1
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +1 -1
- package/dist/{usage-B0YuTQRO.js → usage-4G6t643F.js} +2 -2
- package/dist/{usage-ItS7nLcl.js → usage-CG9nOYZw.js} +7 -7
- package/dist/usage-iFLJ0-rr.js +2 -0
- package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-BSSw0l_8.d.ts} +1 -1
- package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
- package/dist/validity-dVrUEPJt.js +62 -0
- package/dist/{verifier-BxBo6I44.js → verifier-DMr_Zmb_.js} +51 -15
- package/dist/{rls-verify-CMv9H3wV.js → verify-BztUB3GX.js} +668 -239
- package/dist/{version-BvacVTZR.js → version-BEogC-rB.js} +1 -1
- package/dist/{views-Soe7bGSC.js → views-CJsrBS1f.js} +23 -1
- package/dist/{vocabulary-DA8a8zif.d.ts → vocabulary-hhEFLFoL.d.ts} +15 -6
- package/dist/vue/index.d.ts +24 -19
- package/dist/vue/index.js +24 -8
- package/dist/watch-C8TpsAl4.js +2 -0
- package/dist/{watch-DVBJ9cBq.js → watch-zeucB7eF.js} +6 -6
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +13 -37
- package/dist/wrap-Cr93qqdP.d.ts +14 -0
- package/dist/wrap-DWsU_5Bd.js +26 -0
- package/package.json +8 -8
- package/schemas/catalog-v1.json +6 -0
- package/skills/permdock-credentials/SKILL.md +1 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
- package/skills/permdock-data/references/queries-and-rls.md +4 -0
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +1 -0
- package/skills/permdock-wire/SKILL.md +2 -2
- package/skills/permdock-wire/references/adapters.md +9 -1
- package/skills/permdock-wire/references/policy-options.md +10 -1
- package/dist/catalog-CRW5Mx_B.js +0 -2
- package/dist/collect-DSWOk19R.js +0 -2
- package/dist/create-CMwIl-w2.js +0 -253
- package/dist/delegation-D8pUEuce.js +0 -103
- package/dist/doctor-DvH0IQff.js +0 -1194
- package/dist/doctor-collect-CjdO0wQX.js +0 -665
- package/dist/evaluation-items-CfCCejQd.js +0 -40
- package/dist/fields-BMl1RxoX.js +0 -26
- package/dist/grantee-Cv5Sogfv.js +0 -602
- package/dist/hosted-DJQw46hn.js +0 -266
- package/dist/instance-options-Dhhcnm3y.js +0 -22
- package/dist/load-DwJUafYN.js +0 -2
- package/dist/map-AcxK9o_D.js +0 -147
- package/dist/permissions-DVoF6dMt.js +0 -662
- package/dist/powersync-CrBX8hY6.js +0 -2
- package/dist/protected-xAr24FEC.d.ts +0 -40
- package/dist/relations-cjOL01hZ.js +0 -505
- package/dist/rls-graph-CHwx0V8q.js +0 -435
- package/dist/rls-shared-Cewd_-zI.js +0 -495
- package/dist/store-jOBYpiXC.d.ts +0 -36
- package/dist/stores-C0IMQrGI.d.ts +0 -52
- package/dist/supabase-config-Bj3iDH2I.js +0 -472
- package/dist/supabase-hook-gd3s8bxB.js +0 -2
- package/dist/thenable-okc2xDsj.js +0 -10
- package/dist/types-CKNSyIf_.d.ts +0 -52
- package/dist/usage-DorAJiU_.js +0 -2
- package/dist/watch-BwxLTYMZ.js +0 -2
package/dist/hosted-DJQw46hn.js
DELETED
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
import { t as compact } from "./compact-y6vfu2_f.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
|
-
import { T as isForbiddenKey, c as getResource, g as isSelfParented, i as findPermission, k as splitPath } from "./permissions-DVoF6dMt.js";
|
|
4
|
-
import { c as indexPolicy, i as declaredRoleNames, m as role, o as deny, r as completeGrant, t as allow, v as normalizeWhere } from "./policy-xyWg7QdR.js";
|
|
5
|
-
import { t as parseDuration } from "./duration-xK2jGFVc.js";
|
|
6
|
-
import { S as findRole, T as listPlans, s as flattenGrantee } from "./grantee-Cv5Sogfv.js";
|
|
7
|
-
import { n as sha256, t as bytesToBase64Url } from "./sha256-BO0swRXL.js";
|
|
8
|
-
//#region src/core/hosted.ts
|
|
9
|
-
function memoryPolicySource(document = null) {
|
|
10
|
-
const current = document === null ? null : parsePolicyDocument(document);
|
|
11
|
-
return Object.freeze({
|
|
12
|
-
current: () => current,
|
|
13
|
-
refresh: () => Promise.resolve()
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
function isRecord(value) {
|
|
17
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
18
|
-
}
|
|
19
|
-
function rejectUnsafe(value) {
|
|
20
|
-
if (value === null || typeof value !== "object") return;
|
|
21
|
-
if (Array.isArray(value)) {
|
|
22
|
-
for (const item of value) rejectUnsafe(item);
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
for (const key of Object.keys(value)) {
|
|
26
|
-
if (isForbiddenKey(key)) throw new Error(`PermDock: unsafe policy document key '${key}'`);
|
|
27
|
-
rejectUnsafe(value[key]);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/** Validates the document envelope; per-grant checks happen at merge time. */
|
|
31
|
-
function parsePolicyDocument(json) {
|
|
32
|
-
const input = typeof json === "string" ? JSON.parse(json) : json;
|
|
33
|
-
if (!isRecord(input)) throw new TypeError("PermDock: policy document must be an object");
|
|
34
|
-
const copy = JSON.parse(JSON.stringify(input));
|
|
35
|
-
rejectUnsafe(copy);
|
|
36
|
-
if (copy["v"] !== 1) throw new Error(`PermDock: unsupported policy document version '${String(copy["v"])}'`);
|
|
37
|
-
if (typeof copy["id"] !== "string" || typeof copy["fingerprint"] !== "string" || typeof copy["catalog"] !== "string" || typeof copy["issuedAt"] !== "number" || !Array.isArray(copy["grants"])) throw new TypeError("PermDock: malformed policy document");
|
|
38
|
-
return freezeDeep(copy);
|
|
39
|
-
}
|
|
40
|
-
const COMPARISONS = /* @__PURE__ */ new Set([
|
|
41
|
-
"eq",
|
|
42
|
-
"ne",
|
|
43
|
-
"gt",
|
|
44
|
-
"gte",
|
|
45
|
-
"lt",
|
|
46
|
-
"lte",
|
|
47
|
-
"contains"
|
|
48
|
-
]);
|
|
49
|
-
function safePath(path) {
|
|
50
|
-
if (typeof path !== "string" || path.length === 0) return false;
|
|
51
|
-
return splitPath(path).every((segment) => !isForbiddenKey(segment));
|
|
52
|
-
}
|
|
53
|
-
function portableValue(value) {
|
|
54
|
-
if (value === null || typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value)) return true;
|
|
55
|
-
if (Array.isArray(value)) return value.every(portableValue);
|
|
56
|
-
if (!isRecord(value)) return false;
|
|
57
|
-
const keys = Object.keys(value);
|
|
58
|
-
if (keys.length !== 1) return false;
|
|
59
|
-
if (keys[0] === "ref") return safePath(value["ref"]);
|
|
60
|
-
return keys[0] === "date" && typeof value["date"] === "string";
|
|
61
|
-
}
|
|
62
|
-
/** True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown op. */
|
|
63
|
-
function isPortableCondition(value) {
|
|
64
|
-
if (!isRecord(value) || typeof value["op"] !== "string") return false;
|
|
65
|
-
const op = value["op"];
|
|
66
|
-
if (COMPARISONS.has(op)) return safePath(value["field"]) && portableValue(value["value"]);
|
|
67
|
-
switch (op) {
|
|
68
|
-
case "in":
|
|
69
|
-
case "notIn": return safePath(value["field"]) && (Array.isArray(value["value"]) || isRecord(value["value"])) && portableValue(value["value"]);
|
|
70
|
-
case "isNull": return safePath(value["field"]) && typeof value["value"] === "boolean";
|
|
71
|
-
case "and":
|
|
72
|
-
case "or": return Array.isArray(value["conditions"]) && value["conditions"].every(isPortableCondition);
|
|
73
|
-
case "not": return isPortableCondition(value["condition"]);
|
|
74
|
-
case "memberOf": return (value["scope"] === "tenant" || value["scope"] === "team" || value["scope"] === "resource") && safePath(value["field"]) && Array.isArray(value["roles"]) && value["roles"].every((item) => typeof item === "string") && (value["resource"] === void 0 || typeof value["resource"] === "string") && (value["parents"] === void 0 || Array.isArray(value["parents"]) && value["parents"].every((parent) => safePath(parent) || isRecord(parent) && safePath(parent["field"]) && typeof parent["resource"] === "string"));
|
|
75
|
-
default: return false;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
function approvalRank(approval) {
|
|
79
|
-
if (approval === void 0) return;
|
|
80
|
-
if (approval === "human") return {
|
|
81
|
-
distinct: true,
|
|
82
|
-
stale: false,
|
|
83
|
-
quorum: 1,
|
|
84
|
-
ttl: Number.POSITIVE_INFINITY,
|
|
85
|
-
escalates: false
|
|
86
|
-
};
|
|
87
|
-
return {
|
|
88
|
-
by: approval.stages === void 0 ? JSON.stringify(approval.by) : JSON.stringify([approval.mode, approval.stages]),
|
|
89
|
-
distinct: approval.distinct !== false,
|
|
90
|
-
stale: approval.staleOn === "resource-change",
|
|
91
|
-
quorum: approval.quorum ?? 1,
|
|
92
|
-
ttl: parseDuration(approval.ttl) ?? Number.POSITIVE_INFINITY,
|
|
93
|
-
escalates: approval.escalation !== void 0
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/** A hosted approval must meet every approval a code allow requires on the permission. */
|
|
97
|
-
function approvalAtLeast(hosted, code) {
|
|
98
|
-
const mine = approvalRank(hosted);
|
|
99
|
-
for (const required of code) {
|
|
100
|
-
const theirs = approvalRank(required);
|
|
101
|
-
if (theirs === void 0) continue;
|
|
102
|
-
if (mine === void 0) return false;
|
|
103
|
-
if (theirs.distinct && !mine.distinct) return false;
|
|
104
|
-
if (theirs.stale && !mine.stale) return false;
|
|
105
|
-
if (theirs.by !== void 0 && mine.by !== theirs.by) return false;
|
|
106
|
-
if (mine.quorum < theirs.quorum || mine.ttl > theirs.ttl) return false;
|
|
107
|
-
if (mine.escalates && !theirs.escalates) return false;
|
|
108
|
-
}
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
/** A grantee kind this build does not know is never declared, so the hosted grant is dropped. */
|
|
112
|
-
function undeclaredKind(_grantee) {
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
function declaredGrantee(policy, grantee, permissionResource) {
|
|
116
|
-
switch (grantee.kind) {
|
|
117
|
-
case "role": return declaredRoleNames(policy).has(grantee.role);
|
|
118
|
-
case "plan": return listPlans(policy.vocabulary.plans).some((leaf) => leaf.key === grantee.plan);
|
|
119
|
-
case "relation": return grantee.resource === permissionResource && getResource(policy.permissions, grantee.resource)?.relations[grantee.relation] !== void 0 && (grantee.through === void 0 || grantee.through === "parent" && isSelfParented(getResource(policy.permissions, grantee.resource))) && (grantee.depth === void 0 || grantee.through === "parent" && Number.isInteger(grantee.depth) && grantee.depth >= 0 && grantee.depth <= 32);
|
|
120
|
-
case "anyone":
|
|
121
|
-
case "authenticated":
|
|
122
|
-
case "actor":
|
|
123
|
-
case "assurance":
|
|
124
|
-
case "inherit": return false;
|
|
125
|
-
default: return undeclaredKind(grantee);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/** Approvers are declared roles, plans or relations, or any authenticated human. */
|
|
129
|
-
function approvalAcceptable(policy, approval, permissionResource) {
|
|
130
|
-
if (approval === void 0 || approval === "human") return true;
|
|
131
|
-
if (!isRecord(approval)) return false;
|
|
132
|
-
if (approval["mode"] !== void 0 || approval["stages"] !== void 0) return false;
|
|
133
|
-
if (approval["distinct"] !== void 0 && typeof approval["distinct"] !== "boolean") return false;
|
|
134
|
-
if (approval["staleOn"] !== void 0 && (approval["staleOn"] !== "resource-change" || getResource(policy.permissions, permissionResource)?.version === void 0)) return false;
|
|
135
|
-
if (approval["quorum"] !== void 0 && (!Number.isInteger(approval["quorum"]) || approval["quorum"] < 1)) return false;
|
|
136
|
-
if (approval["ttl"] !== void 0 && (typeof approval["ttl"] !== "string" || parseDuration(approval["ttl"]) === void 0)) return false;
|
|
137
|
-
const escalation = approval["escalation"];
|
|
138
|
-
if (escalation !== void 0 && (!isRecord(escalation) || typeof escalation["after"] !== "string" || parseDuration(escalation["after"]) === void 0 || !granteesAcceptable(policy, escalation["to"], permissionResource))) return false;
|
|
139
|
-
if (approval["by"] === void 0) return true;
|
|
140
|
-
return granteesAcceptable(policy, approval["by"], permissionResource);
|
|
141
|
-
}
|
|
142
|
-
function granteesAcceptable(policy, raw, permissionResource) {
|
|
143
|
-
if (raw === void 0) return false;
|
|
144
|
-
const items = flattenGrantee(raw);
|
|
145
|
-
return items.length > 0 && items.every((item) => isRecord(item) && item.kind !== "relation" && (item.kind === "authenticated" || declaredGrantee(policy, item, permissionResource)));
|
|
146
|
-
}
|
|
147
|
-
function buildGrant(policy, document, raw) {
|
|
148
|
-
if (!isRecord(raw) || typeof raw["id"] !== "string" || typeof raw["permission"] !== "string" || raw["effect"] !== void 0 && raw["effect"] !== "allow" && raw["effect"] !== "deny" || raw["to"] === void 0) return {
|
|
149
|
-
ok: false,
|
|
150
|
-
reason: "invalid"
|
|
151
|
-
};
|
|
152
|
-
const permission = findPermission(policy.permissions, raw["permission"]);
|
|
153
|
-
if (permission === void 0) return {
|
|
154
|
-
ok: false,
|
|
155
|
-
reason: "unknown-permission"
|
|
156
|
-
};
|
|
157
|
-
if (!policy.hostable.includes(permission.key)) return {
|
|
158
|
-
ok: false,
|
|
159
|
-
reason: "not-hostable"
|
|
160
|
-
};
|
|
161
|
-
const to = flattenGrantee(raw["to"]);
|
|
162
|
-
if (to.length === 0 || !to.every((item) => isRecord(item) && declaredGrantee(policy, item, permission.resource))) return {
|
|
163
|
-
ok: false,
|
|
164
|
-
reason: "unknown-grantee"
|
|
165
|
-
};
|
|
166
|
-
for (const condition of [raw["where"], raw["check"]]) if (condition !== void 0 && !isPortableCondition(condition)) return {
|
|
167
|
-
ok: false,
|
|
168
|
-
reason: "non-portable"
|
|
169
|
-
};
|
|
170
|
-
if (!approvalAcceptable(policy, raw["approval"], permission.resource)) return {
|
|
171
|
-
ok: false,
|
|
172
|
-
reason: "invalid"
|
|
173
|
-
};
|
|
174
|
-
if (raw["fields"] !== void 0 && !(Array.isArray(raw["fields"]) && raw["fields"].every((field) => typeof field === "string"))) return {
|
|
175
|
-
ok: false,
|
|
176
|
-
reason: "invalid"
|
|
177
|
-
};
|
|
178
|
-
const effect = raw["effect"] ?? "allow";
|
|
179
|
-
const options = compact({
|
|
180
|
-
where: raw["where"] === void 0 ? void 0 : normalizeWhere(raw["where"]),
|
|
181
|
-
check: raw["check"] === void 0 ? void 0 : normalizeWhere(raw["check"]),
|
|
182
|
-
approval: raw["approval"],
|
|
183
|
-
fields: raw["fields"]
|
|
184
|
-
});
|
|
185
|
-
let built;
|
|
186
|
-
try {
|
|
187
|
-
const roleItem = to.length === 1 && to[0]?.kind === "role" ? to[0] : null;
|
|
188
|
-
if (roleItem === null) {
|
|
189
|
-
const partial = (effect === "allow" ? allow : deny)(permission, {
|
|
190
|
-
...options,
|
|
191
|
-
to
|
|
192
|
-
});
|
|
193
|
-
built = completeGrant(partial);
|
|
194
|
-
} else {
|
|
195
|
-
const binding = policy.rolesByName.get(roleItem.role);
|
|
196
|
-
const leaf = findRole(policy.vocabulary.roles, roleItem.role);
|
|
197
|
-
const [first] = role(leaf ?? roleItem.role, [(effect === "allow" ? allow : deny)(permission, options)], binding?.on === void 0 ? {} : { on: binding.on }).grants;
|
|
198
|
-
if (first === void 0) throw new TypeError("PermDock: role produced no grant");
|
|
199
|
-
built = first;
|
|
200
|
-
}
|
|
201
|
-
} catch {
|
|
202
|
-
return {
|
|
203
|
-
ok: false,
|
|
204
|
-
reason: "invalid"
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
if (effect === "allow") {
|
|
208
|
-
const codeApprovals = policy.grants.filter((grant) => grant.effect === "allow" && grant.hosted === void 0 && grant.permission.key === permission.key).map((grant) => grant.approval);
|
|
209
|
-
if (!approvalAtLeast(built.approval, codeApprovals)) return {
|
|
210
|
-
ok: false,
|
|
211
|
-
reason: "weaker-approval"
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
return {
|
|
215
|
-
ok: true,
|
|
216
|
-
grant: freezeDeep({
|
|
217
|
-
...built,
|
|
218
|
-
hosted: {
|
|
219
|
-
document: document.fingerprint,
|
|
220
|
-
grant: raw["id"]
|
|
221
|
-
}
|
|
222
|
-
})
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* The code policy plus the hosted grants that pass every rule. Hosted
|
|
227
|
-
* allows OR with code allows and any deny still wins, so a hosted grant can
|
|
228
|
-
* never override a code deny; one that fails a rule is dropped, not thrown.
|
|
229
|
-
*/
|
|
230
|
-
function mergeHostedGrants(policy, document) {
|
|
231
|
-
if (document === null || document.grants.length === 0) return {
|
|
232
|
-
policy,
|
|
233
|
-
dropped: []
|
|
234
|
-
};
|
|
235
|
-
const merged = [];
|
|
236
|
-
const dropped = [];
|
|
237
|
-
for (const raw of document.grants) {
|
|
238
|
-
const result = buildGrant(policy, document, raw);
|
|
239
|
-
if (result.ok) {
|
|
240
|
-
merged.push(result.grant);
|
|
241
|
-
continue;
|
|
242
|
-
}
|
|
243
|
-
dropped.push(freezeDeep({
|
|
244
|
-
kind: "hosted-grant-dropped",
|
|
245
|
-
document: document.fingerprint,
|
|
246
|
-
grant: isRecord(raw) && typeof raw.id === "string" ? raw.id : "",
|
|
247
|
-
reason: result.reason
|
|
248
|
-
}));
|
|
249
|
-
}
|
|
250
|
-
if (merged.length === 0) return {
|
|
251
|
-
policy,
|
|
252
|
-
dropped
|
|
253
|
-
};
|
|
254
|
-
const grants = [...policy.grants, ...merged];
|
|
255
|
-
return {
|
|
256
|
-
policy: freezeDeep({
|
|
257
|
-
...policy,
|
|
258
|
-
grants,
|
|
259
|
-
index: indexPolicy(policy.roles, grants, policy.vocabulary),
|
|
260
|
-
fingerprint: bytesToBase64Url(sha256(`${policy.fingerprint}:${document.fingerprint}`))
|
|
261
|
-
}),
|
|
262
|
-
dropped
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
//#endregion
|
|
266
|
-
export { parsePolicyDocument as i, memoryPolicySource as n, mergeHostedGrants as r, isPortableCondition as t };
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
//#region src/core/instance-options.ts
|
|
2
|
-
const INSTANCE_KEYS = {
|
|
3
|
-
memberships: true,
|
|
4
|
-
relations: true,
|
|
5
|
-
entitlements: true,
|
|
6
|
-
customRoles: true,
|
|
7
|
-
policies: true,
|
|
8
|
-
approvalPolicies: true,
|
|
9
|
-
sink: true,
|
|
10
|
-
limits: true
|
|
11
|
-
};
|
|
12
|
-
/** The `InstanceOptions` set on `options`, without the adapter's own keys. */
|
|
13
|
-
function instanceOptions(options) {
|
|
14
|
-
const picked = {};
|
|
15
|
-
for (const key of Object.keys(INSTANCE_KEYS)) {
|
|
16
|
-
const name = key;
|
|
17
|
-
if (options[name] !== void 0) picked[name] = options[name];
|
|
18
|
-
}
|
|
19
|
-
return picked;
|
|
20
|
-
}
|
|
21
|
-
//#endregion
|
|
22
|
-
export { instanceOptions as t };
|
package/dist/load-DwJUafYN.js
DELETED
package/dist/map-AcxK9o_D.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { t as compact } from "./compact-y6vfu2_f.js";
|
|
2
|
-
import { t as itemResourceData } from "./evaluation-items-CfCCejQd.js";
|
|
3
|
-
//#region src/authzen/map.ts
|
|
4
|
-
const UNKNOWN = {
|
|
5
|
-
outcome: "denied",
|
|
6
|
-
denials: [{
|
|
7
|
-
role: null,
|
|
8
|
-
reason: "no-grant",
|
|
9
|
-
detail: "unknown-permission"
|
|
10
|
-
}],
|
|
11
|
-
alternatives: []
|
|
12
|
-
};
|
|
13
|
-
const UNAVAILABLE = {
|
|
14
|
-
outcome: "denied",
|
|
15
|
-
denials: [{
|
|
16
|
-
role: null,
|
|
17
|
-
reason: "no-grant",
|
|
18
|
-
detail: "resource-unavailable"
|
|
19
|
-
}],
|
|
20
|
-
alternatives: []
|
|
21
|
-
};
|
|
22
|
-
function isRecord(value) {
|
|
23
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
24
|
-
}
|
|
25
|
-
function actionNameOf(item) {
|
|
26
|
-
if (typeof item.action?.name === "string") return item.action.name;
|
|
27
|
-
if (!isRecord(item.action?.properties)) return;
|
|
28
|
-
const scope = item.action.properties["scope"];
|
|
29
|
-
return typeof scope === "string" ? scope : void 0;
|
|
30
|
-
}
|
|
31
|
-
function permissionOf(lookup, item) {
|
|
32
|
-
return lookup(actionNameOf(item), item.resource);
|
|
33
|
-
}
|
|
34
|
-
function resourceData(item) {
|
|
35
|
-
return itemResourceData(item.resource);
|
|
36
|
-
}
|
|
37
|
-
function resourceIdOf(item) {
|
|
38
|
-
const id = item.resource?.id;
|
|
39
|
-
if (typeof id === "string" || typeof id === "number") return String(id);
|
|
40
|
-
}
|
|
41
|
-
function userFromEntity(entity) {
|
|
42
|
-
if (entity === void 0) return null;
|
|
43
|
-
const result = {};
|
|
44
|
-
if (typeof entity.id === "string" || typeof entity.id === "number") result["id"] = String(entity.id);
|
|
45
|
-
if (isRecord(entity.properties)) for (const [key, value] of Object.entries(entity.properties)) {
|
|
46
|
-
if (key === "actor" || key === "delegation") continue;
|
|
47
|
-
result[key] = value;
|
|
48
|
-
}
|
|
49
|
-
return Object.keys(result).length === 0 ? null : result;
|
|
50
|
-
}
|
|
51
|
-
function actorOf(item) {
|
|
52
|
-
const context = isRecord(item.context) ? item.context : {};
|
|
53
|
-
const fromSubject = isRecord(item.subject?.properties) ? item.subject.properties["actor"] : void 0;
|
|
54
|
-
const raw = context["actor"] ?? fromSubject;
|
|
55
|
-
if (!isRecord(raw) || typeof raw["id"] !== "string") return;
|
|
56
|
-
const kind = typeof raw["kind"] === "string" ? raw["kind"] : "oauth-client";
|
|
57
|
-
return {
|
|
58
|
-
id: raw["id"],
|
|
59
|
-
kind
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
function delegationOf(item) {
|
|
63
|
-
const context = isRecord(item.context) ? item.context : {};
|
|
64
|
-
const fromSubject = isRecord(item.subject?.properties) ? item.subject.properties["delegation"] : void 0;
|
|
65
|
-
const raw = context["delegation"] ?? fromSubject;
|
|
66
|
-
if (!isRecord(raw)) return;
|
|
67
|
-
const scopes = raw["scopes"];
|
|
68
|
-
const authorizationDetails = raw["authorizationDetails"];
|
|
69
|
-
return compact({
|
|
70
|
-
scopes: Array.isArray(scopes) ? scopes.filter((scope) => typeof scope === "string") : void 0,
|
|
71
|
-
authorizationDetails: Array.isArray(authorizationDetails) ? authorizationDetails : void 0
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
function tenantOf(item) {
|
|
75
|
-
if (!isRecord(item.context) || typeof item.context["tenant"] !== "string") return;
|
|
76
|
-
return item.context["tenant"];
|
|
77
|
-
}
|
|
78
|
-
function permdockContext(decision) {
|
|
79
|
-
switch (decision.outcome) {
|
|
80
|
-
case "granted": return { outcome: "granted" };
|
|
81
|
-
case "denied": {
|
|
82
|
-
const unknown = decision.denials.some((denial) => denial.detail === "unknown-permission");
|
|
83
|
-
return compact({
|
|
84
|
-
outcome: "denied",
|
|
85
|
-
denials: decision.denials.map((denial) => ({
|
|
86
|
-
role: denial.role,
|
|
87
|
-
reason: denial.reason
|
|
88
|
-
})),
|
|
89
|
-
reason: unknown ? "unknown-permission" : void 0
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
case "approval-required": return {
|
|
93
|
-
outcome: "approval-required",
|
|
94
|
-
token: decision.token
|
|
95
|
-
};
|
|
96
|
-
default: return decision;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
function evaluationContext(decision) {
|
|
100
|
-
return { permdock: permdockContext(decision) };
|
|
101
|
-
}
|
|
102
|
-
function evaluationRow(decision) {
|
|
103
|
-
return {
|
|
104
|
-
decision: decision.outcome === "granted",
|
|
105
|
-
context: evaluationContext(decision)
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
function pathnameOf(request) {
|
|
109
|
-
return new URL(request.url).pathname;
|
|
110
|
-
}
|
|
111
|
-
function endsWithPath(pathname, suffix) {
|
|
112
|
-
return pathname === suffix || pathname.endsWith(suffix);
|
|
113
|
-
}
|
|
114
|
-
function mergeItem(shared, item) {
|
|
115
|
-
if (!isRecord(item)) return shared;
|
|
116
|
-
return compact({
|
|
117
|
-
subject: isRecord(item["subject"]) ? item["subject"] : shared.subject,
|
|
118
|
-
action: isRecord(item["action"]) ? item["action"] : shared.action,
|
|
119
|
-
resource: isRecord(item["resource"]) ? item["resource"] : shared.resource,
|
|
120
|
-
context: item["context"] ?? shared.context
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
function pageOf(body) {
|
|
124
|
-
const page = isRecord(body["page"]) ? body["page"] : {};
|
|
125
|
-
const raw = typeof page["token"] === "string" ? page["token"] : typeof page["next_token"] === "string" ? page["next_token"] : "0";
|
|
126
|
-
const parsed = Math.trunc(Number(raw));
|
|
127
|
-
const sizeRaw = page["limit"] ?? page["size"];
|
|
128
|
-
const size = typeof sizeRaw === "number" && sizeRaw > 0 ? Math.min(sizeRaw, 200) : 50;
|
|
129
|
-
return {
|
|
130
|
-
offset: Number.isFinite(parsed) && parsed > 0 ? parsed : 0,
|
|
131
|
-
size
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
function paged(items, offset, size) {
|
|
135
|
-
const slice = items.slice(offset, offset + size);
|
|
136
|
-
const next = offset + slice.length;
|
|
137
|
-
return {
|
|
138
|
-
results: slice,
|
|
139
|
-
page: {
|
|
140
|
-
next_token: next < items.length ? String(next) : "",
|
|
141
|
-
count: slice.length,
|
|
142
|
-
total: items.length
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
//#endregion
|
|
147
|
-
export { endsWithPath as a, mergeItem as c, pathnameOf as d, permissionOf as f, userFromEntity as g, tenantOf as h, delegationOf as i, pageOf as l, resourceIdOf as m, UNKNOWN as n, evaluationRow as o, resourceData as p, actorOf as r, isRecord as s, UNAVAILABLE as t, paged as u };
|