permdock 0.3.1 → 0.5.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 +37 -35
- package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
- package/dist/a2a/index.d.ts +8 -6
- package/dist/a2a/index.js +21 -31
- package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
- package/dist/adoption-scan-B4R5fnMU.js +107 -0
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.js +1 -0
- package/dist/ai-sdk/index.d.ts +18 -23
- package/dist/ai-sdk/index.js +38 -21
- package/dist/app-data-MuyzVqX8.js +60 -0
- package/dist/approval-header-CJACtHkv.js +23 -0
- package/dist/approval-prompt-Dg5LeAcT.js +62 -0
- package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-DJ6Yd5z1.js +995 -0
- package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
- package/dist/arazzo-B6lebmiQ.js +36 -0
- package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
- package/dist/args-IIolxxKA.js +197 -0
- package/dist/astro/index.d.ts +43 -0
- package/dist/astro/index.js +27 -0
- package/dist/audience-Dg8XsRaO.js +55 -0
- package/dist/auth-DRLEizbL.js +178 -0
- package/dist/authzen/index.d.ts +26 -6
- package/dist/authzen/index.js +228 -75
- package/dist/automation-BMZPIVUM.d.ts +114 -0
- package/dist/automation-DVjOckjV.js +157 -0
- package/dist/better-auth/index.d.ts +8 -6
- package/dist/better-auth/index.js +11 -23
- package/dist/better-supabase/index.d.ts +438 -86
- package/dist/better-supabase/index.js +1027 -184
- package/dist/bind--9EFVYWF.d.ts +38 -0
- package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
- package/dist/body-CH5of8Ne.js +10 -0
- package/dist/body-text-QcXok_SI.js +52 -0
- package/dist/build-instance-BMnAudHn.js +52 -0
- package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
- package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
- package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
- package/dist/casbin-Cr7RLtA3.js +30 -0
- package/dist/casbin-Dyu2gnUD.js +234 -0
- package/dist/casl-64gpT-8x.js +24 -0
- package/dist/casl-DjEDhTCP.js +299 -0
- package/dist/catalog/index.d.ts +74 -2
- package/dist/catalog/index.js +51 -2
- package/dist/catalog-BECMPrwc.js +100 -0
- package/dist/catalog-DjhMYYCq.js +1 -0
- package/dist/catalog-R_A__RsH.js +52 -0
- package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
- package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.js +224 -0
- package/dist/chat-sdk/index.d.ts +87 -0
- package/dist/chat-sdk/index.js +197 -0
- package/dist/claims-map-7oQ3ue4X.js +13 -0
- package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
- package/dist/claude-agent/index.d.ts +7 -14
- package/dist/claude-agent/index.js +26 -30
- package/dist/clerk/index.d.ts +9 -8
- package/dist/clerk/index.js +15 -45
- package/dist/cli/bin.js +36 -17
- package/dist/cli/index.d.ts +20 -6
- package/dist/cli/index.js +164 -4
- package/dist/cloud/index.d.ts +102 -63
- package/dist/cloud/index.js +240 -347
- package/dist/cloud-CIoHNevm.js +87 -0
- package/dist/codemod-Bmj9dWMH.js +37 -0
- package/dist/codemod-Cxvvc70T.js +2084 -0
- package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
- package/dist/collect-DloHbDVa.js +55 -0
- package/dist/collect-FlXJlhus.js +1 -0
- package/dist/command-L8EstFNm.js +6 -0
- 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 -2
- package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
- package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
- package/dist/completion-BqhRBJD8.js +143 -0
- package/dist/config-B46rm9sc.js +26 -0
- package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
- package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
- package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
- package/dist/constants-DcJABbLW.js +20 -0
- package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +18 -18
- package/dist/create-0VZ7Pdiu.d.ts +107 -0
- package/dist/create-BDS7wc3y.d.ts +138 -0
- package/dist/create-BFfm17UA.d.ts +110 -0
- package/dist/create-BWRSXgOF.js +403 -0
- package/dist/create-C3b4B5eF.js +130 -0
- package/dist/create-DnrmLnLW.js +323 -0
- package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/deciding-columns-Sq12mEA6.js +123 -0
- package/dist/delegation-DaXVdDhM.js +286 -0
- package/dist/delegation-input-FTxMK3ji.js +19 -0
- package/dist/delivery/index.d.ts +5 -0
- package/dist/delivery/index.js +5 -0
- package/dist/delivery-DCAgNyCn.js +499 -0
- package/dist/delivery-event-xX4obB8F.js +40 -0
- package/dist/denied-text-D8jDHgsl.d.ts +19 -0
- package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
- package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/diff-CxZo9pTq.js +37 -0
- package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
- package/dist/doctor-CxiwSfqH.js +44 -0
- package/dist/doctor-DFjUxf2f.js +2361 -0
- package/dist/drizzle/index.d.ts +5 -3
- package/dist/drizzle/index.js +6 -14
- package/dist/elysia/index.d.ts +16 -13
- package/dist/elysia/index.js +14 -13
- package/dist/env-DJZrPjRi.js +8 -0
- package/dist/errors-BDUwg2qC.js +27 -0
- package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
- package/dist/errors-BWXBMaKK.d.ts +11 -0
- package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
- package/dist/errors-CWTY6uih.js +143 -0
- package/dist/evaluate-_R8QkWaf.js +1732 -0
- package/dist/evaluations-16UqqQ6W.d.ts +32 -0
- package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
- package/dist/eve/index.d.ts +12 -16
- package/dist/eve/index.js +23 -29
- package/dist/event-time-CsegxXxB.js +23 -0
- package/dist/expiry-D4_YKRKD.js +52 -0
- package/dist/express/index.d.ts +13 -10
- package/dist/express/index.js +14 -12
- package/dist/fastify/index.d.ts +26 -13
- package/dist/fastify/index.js +17 -36
- package/dist/fetch-adapter-g0ypLkID.js +120 -0
- package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
- package/dist/fields-D9tPVUUS.js +203 -0
- package/dist/files-C5ZI27eV.js +124 -0
- package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
- package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
- package/dist/flags-C3DktBDY.js +86 -0
- package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
- package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
- package/dist/grantee-Cn1HyUsI.js +254 -0
- package/dist/grantee-conditions-CcXf8hMM.js +271 -0
- package/dist/grantee-match-DHArqY82.js +142 -0
- package/dist/h3/index.d.ts +37 -0
- package/dist/h3/index.js +35 -0
- package/dist/headers-BIjfMaoC.js +8 -0
- package/dist/headers-CIbDTUTK.d.ts +7 -0
- package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +14 -13
- package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
- package/dist/hosted-DBDX0M-P.d.ts +78 -0
- package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
- package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
- package/dist/http-DXJ37RDA.js +46 -0
- package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
- package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
- package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
- package/dist/index-BcHcPyIo.d.ts +110 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-Chrs5fQ-.d.ts +210 -0
- package/dist/index-CxGUswIC.d.ts +431 -0
- package/dist/index-D8EovfsP.d.ts +91 -0
- package/dist/index-DOVf7RJv.d.ts +900 -0
- package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
- package/dist/index.d.ts +20 -14
- package/dist/index.js +33 -23
- package/dist/init-DeMYsnYJ.js +96 -0
- package/dist/init-GG6Jh8HD.js +95 -0
- package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
- package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
- package/dist/instant-BluqDvyS.js +19 -0
- package/dist/internals-Dk8A8fX3.js +17 -0
- package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
- package/dist/json-schema-CN_iLFH2.d.ts +40 -0
- package/dist/jwt/index.d.ts +18 -11
- package/dist/jwt/index.js +166 -145
- package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
- package/dist/kysely/index.d.ts +5 -3
- package/dist/kysely/index.js +6 -14
- package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
- package/dist/load-BxEtwlBS.js +1 -0
- package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
- package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
- package/dist/login-Dfe5RlYk.js +68 -0
- package/dist/login-imhuwvn3.js +254 -0
- package/dist/manifest-C8IzW3Do.js +42 -0
- package/dist/manifest-CtKR3GXL.js +370 -0
- package/dist/manifest-json-CAGzls-C.js +9 -0
- package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
- package/dist/manifest-schema-C0kK_8V0.js +399 -0
- package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
- package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
- package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
- package/dist/mcp/index.d.ts +36 -9
- package/dist/mcp/index.js +476 -448
- package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
- package/dist/nest/index.d.ts +12 -9
- package/dist/nest/index.js +20 -20
- package/dist/next/index.d.ts +40 -20
- package/dist/next/index.js +37 -39
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +2 -2
- package/dist/node/index.d.ts +10 -10
- package/dist/node/index.js +7 -9
- package/dist/ocsf-BFp-PZZA.js +126 -0
- package/dist/openai/index.d.ts +9 -16
- package/dist/openai/index.js +18 -25
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
- package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
- package/dist/openapi-ahr8rHu3.js +138 -0
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-CxybZErY.d.ts +59 -0
- package/dist/orpc/index.d.ts +13 -10
- package/dist/orpc/index.js +23 -20
- package/dist/otel/index.d.ts +3 -2
- package/dist/otel/index.js +53 -27
- package/dist/output-Dyw8fyPF.js +88 -0
- package/dist/output-files-B3IZJksC.js +1 -0
- package/dist/output-files-DhRBBE4n.js +138 -0
- package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
- package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
- package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
- package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
- package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
- package/dist/parse-request-D_tUXG6M.js +26 -0
- package/dist/paths-DXSHAMIa.js +42 -0
- package/dist/pdp/index.d.ts +7 -3
- package/dist/pdp/index.js +47 -29
- package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
- package/dist/peer-CRvC7Hg1.js +1 -0
- package/dist/permdock-B9JxkBwC.js +868 -0
- package/dist/permdock-D7eeLJER.d.ts +502 -0
- package/dist/permission-registry-Br4jSNVi.js +385 -0
- package/dist/permissions-B-wCP5ZC.js +30 -0
- package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
- package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
- package/dist/policies-CO1oOymN.js +295 -0
- package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
- package/dist/policy-DLZJ5gAp.js +399 -0
- package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
- package/dist/postgrest-CW0IqC-U.js +566 -0
- package/dist/postgrest-NUqZT-RB.d.ts +100 -0
- package/dist/powersync-BHfuehf3.js +62 -0
- package/dist/powersync-CbzkqL_M.js +1 -0
- package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
- package/dist/preset/index.d.ts +146 -0
- package/dist/preset/index.js +1 -0
- package/dist/preset-DZdU0tne.js +1768 -0
- package/dist/principal-source-pHneukrx.js +103 -0
- package/dist/prisma/index.d.ts +6 -3
- package/dist/prisma/index.js +6 -12
- package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
- package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
- package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
- package/dist/problem-types-CJ2325SZ.js +5 -0
- package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
- package/dist/protected-DEPHc2xV.d.ts +38 -0
- package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
- package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
- package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
- package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
- package/dist/pull-BgIfno6w.js +256 -0
- package/dist/pull-ByOks_Tg.js +1 -0
- package/dist/push-CmFVBOeI.js +116 -0
- package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
- package/dist/pushed-policy-DobP7AHI.js +238 -0
- package/dist/react/index.d.ts +8 -8
- package/dist/react/index.js +6 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -2
- package/dist/react-native/index.d.ts +24 -63
- package/dist/react-native/index.js +45 -27
- package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
- package/dist/relation-walk-3OyDBF0S.js +186 -0
- package/dist/relations-BnCWnJGI.js +163 -0
- package/dist/renames-CGj7YwcQ.js +175 -0
- package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/request-context-BTRTG7OT.js +71 -0
- package/dist/request-context-C2_1lchh.d.ts +5 -0
- package/dist/request-schema-CMreVuFM.js +148 -0
- package/dist/resend/index.d.ts +126 -0
- package/dist/resend/index.js +379 -0
- package/dist/resource-relations-D_jw0BFx.js +243 -0
- package/dist/retire-CALjIQ7e.js +240 -0
- package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
- package/dist/rls-BA8an5Ap.js +336 -0
- package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
- package/dist/role-builder-CXbis5-X.js +623 -0
- package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
- package/dist/run-CNsApDpd.js +1 -0
- package/dist/run-DOfMtc9V.js +723 -0
- package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
- package/dist/run-ticket-sxFI6LAk.js +337 -0
- package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
- package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
- package/dist/scan-BOI5tJ-6.js +29 -0
- package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
- package/dist/schema-yLuBWWsh.js +130 -0
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +1 -2
- package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
- package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
- package/dist/server/index.d.ts +13 -134
- package/dist/server/index.js +13 -10
- package/dist/server-DqCT4CgZ.js +453 -0
- package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/shared-CD11nBbC.js +304 -0
- package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/sink-Bj_lDUDq.d.ts +225 -0
- package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-CXUWfsNy.js +269 -0
- package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
- package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
- package/dist/solid/index.d.ts +24 -25
- package/dist/solid/index.js +41 -11
- package/dist/solid-start/index.d.ts +52 -0
- package/dist/solid-start/index.js +49 -0
- package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
- package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
- package/dist/sql-B5T1IL83.js +55 -0
- package/dist/src-DLfUWFAI.js +1851 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +440 -106
- package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
- package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
- package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
- package/dist/stores-ClZUgeoP.d.ts +30 -0
- package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
- package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
- package/dist/style-DiKWnAvn.js +1 -0
- package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
- package/dist/subject-BGoM5o8B.js +17 -0
- package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
- package/dist/supabase/index.d.ts +23 -106
- package/dist/supabase/index.js +5 -4
- package/dist/supabase/middleware.d.ts +13 -6
- package/dist/supabase/middleware.js +16 -11
- package/dist/supabase-9pqI57pW.js +92 -0
- package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
- package/dist/supabase-hook-CXcGpHqq.js +1 -0
- package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
- package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
- package/dist/support-session-C6xJQYut.js +158 -0
- package/dist/svelte/Protected.svelte +11 -4
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +26 -12
- package/dist/svelte/runtime.d.ts +10 -3
- package/dist/svelte/runtime.js +4 -3
- package/dist/svelte/source.d.ts +7 -7
- package/dist/svelte/source.js +5 -5
- package/dist/sveltekit/index.d.ts +51 -0
- package/dist/sveltekit/index.js +27 -0
- package/dist/tanstack-start/index.d.ts +51 -0
- package/dist/tanstack-start/index.js +40 -0
- package/dist/target-Bw37TFNA.js +51 -0
- package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
- package/dist/terminal/index.d.ts +11 -9
- package/dist/terminal/index.js +36 -316
- package/dist/testing/index.d.ts +391 -106
- package/dist/testing/index.js +4574 -1286
- package/dist/testing/saas/index.d.ts +9 -8
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -2
- package/dist/text-BMFRfBqc.js +8 -0
- package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
- package/dist/thenable-yD7SabqG.js +31 -0
- package/dist/time-DkWjdL98.js +71 -0
- package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
- package/dist/tool-refusal-CMLN5xhn.js +41 -0
- package/dist/trpc/index.d.ts +12 -9
- package/dist/trpc/index.js +18 -17
- package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
- package/dist/types-BNORmDM8.d.ts +172 -0
- package/dist/types-BjV-fqcA.d.ts +57 -0
- package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
- package/dist/types-C8-KNsFf.d.ts +107 -0
- package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
- package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
- package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
- package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
- package/dist/types-DX0LaKTb.d.ts +157 -0
- package/dist/types-DiQjupG2.d.ts +332 -0
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/types-_sHy8BQf.d.ts +65 -0
- package/dist/types-fbZ7JEXr.d.ts +89 -0
- package/dist/types-tIgIeIKJ.d.ts +66 -0
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CHOtwL19.js +1 -0
- package/dist/usage-DHtE8j4E.js +32 -0
- package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
- package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
- package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
- package/dist/validity-CZ7-y0Cj.js +79 -0
- package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
- package/dist/verify-DbCL9bnB.js +1770 -0
- package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
- package/dist/version-DXkYUISx.js +1 -0
- package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
- package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
- package/dist/vue/index.d.ts +25 -21
- package/dist/vue/index.js +25 -9
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/waiter-CKy4MQSY.d.ts +36 -0
- package/dist/watch-Cb-NcaUw.js +1 -0
- package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +13 -37
- package/dist/where-scope-Dv-WTP-w.js +306 -0
- package/dist/who-can-D0QoYbEb.js +364 -0
- package/dist/wire-delegation-Cv3W2eaM.js +36 -0
- package/dist/wire-denial-C7PaVYEM.js +27 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.js +223 -0
- package/dist/workflow-sdk/index.d.ts +56 -0
- package/dist/workflow-sdk/index.js +78 -0
- package/dist/wrap-Bd1Tejur.d.ts +15 -0
- package/dist/wrap-gX61EtpB.js +27 -0
- package/package.json +140 -41
- package/schemas/access-event-v1.json +118 -0
- package/schemas/approval-request-v1.json +34 -1
- package/schemas/approval-signature-v1.json +94 -0
- package/schemas/automation-event-v1.json +113 -0
- package/schemas/capability-v1.json +84 -0
- package/schemas/catalog-event-v1.json +87 -0
- package/schemas/catalog-v1.json +129 -12
- package/schemas/cli-commands-v1.json +164 -0
- package/schemas/cli-result-v1.json +96 -0
- package/schemas/cloud-api-v1.json +5407 -0
- package/schemas/connector-v1.json +408 -0
- package/schemas/credential-event-v1.json +81 -0
- package/schemas/credential-v1.json +134 -0
- package/schemas/decision-event-v1.json +288 -0
- package/schemas/delivery-event-v1.json +117 -0
- package/schemas/directory-event-v1.json +85 -0
- package/schemas/evidence-export-v1.json +54 -0
- package/schemas/membership-event-v1.json +93 -0
- package/schemas/policy-v1.json +68 -0
- package/schemas/pushed-policy-v1.json +236 -0
- package/schemas/run-v1.json +162 -0
- package/schemas/snapshot-v1.json +138 -0
- package/schemas/supabase-claims-v1.json +4 -4
- package/schemas/supabase-manifest-v1.json +5 -1
- package/schemas/support-session-v1.json +111 -0
- package/skills/permdock/SKILL.md +16 -12
- package/skills/permdock-agents/SKILL.md +40 -23
- package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
- package/skills/permdock-agents/references/runtimes.md +22 -18
- package/skills/permdock-approvals/SKILL.md +29 -13
- package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
- package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
- package/skills/permdock-audit/SKILL.md +3 -3
- package/skills/permdock-credentials/SKILL.md +5 -5
- package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
- package/skills/permdock-data/SKILL.md +6 -6
- package/skills/permdock-data/references/queries-and-rls.md +13 -8
- package/skills/permdock-data/references/relationships.md +3 -3
- package/skills/permdock-tenancy/SKILL.md +20 -7
- package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
- package/skills/permdock-wire/SKILL.md +18 -12
- package/skills/permdock-wire/references/adapters.md +146 -50
- package/skills/permdock-wire/references/policy-options.md +15 -6
- package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
- package/dist/approvals-DbYAuNkG.js +0 -224
- package/dist/arazzo-C9chp3ST.js +0 -54
- package/dist/bind-C_ob3LKa.d.ts +0 -25
- package/dist/catalog-CRW5Mx_B.js +0 -2
- package/dist/catalog-CYj-mX2O.js +0 -48
- package/dist/catalog-DWF5cYqB.js +0 -55
- package/dist/cloud-CfwZ39Rl.js +0 -50
- package/dist/cloud-DWLXO2af.js +0 -118
- package/dist/collect-CHB22Sx4.js +0 -83
- package/dist/collect-DSWOk19R.js +0 -2
- package/dist/commands-BeaGNj_o.js +0 -97
- package/dist/config-ir40y8m0.js +0 -36
- package/dist/create-CMwIl-w2.js +0 -253
- package/dist/delegation-D8pUEuce.js +0 -103
- package/dist/diff-C9RDjjhs.js +0 -48
- package/dist/doctor-Djh6JDEk.js +0 -53
- package/dist/doctor-DvH0IQff.js +0 -1194
- package/dist/doctor-collect-CjdO0wQX.js +0 -665
- package/dist/duration-xK2jGFVc.js +0 -25
- package/dist/errors-CWfoNg9N.js +0 -47
- package/dist/errors-DRnGZHzF.js +0 -30
- package/dist/evaluation-items-CfCCejQd.js +0 -40
- package/dist/expiry-BoBJ8Tvc.js +0 -7
- package/dist/fields-BMl1RxoX.js +0 -26
- package/dist/grantee-Cv5Sogfv.js +0 -602
- package/dist/headers-BZSDieNT.js +0 -6
- package/dist/headers-Cf-zWvsO.d.ts +0 -6
- package/dist/ids-DC4V4CFu.js +0 -18
- package/dist/index-0nNqHspG.d.ts +0 -6
- package/dist/index-BNc7Wer_.d.ts +0 -483
- package/dist/index-C7Tw7MaW.d.ts +0 -201
- package/dist/instance-options-Dhhcnm3y.js +0 -22
- package/dist/load-DwJUafYN.js +0 -2
- package/dist/manifest-iaoBXHKc.js +0 -783
- package/dist/map-AcxK9o_D.js +0 -147
- package/dist/may-use-DndQ5tQ-.js +0 -77
- package/dist/openapi-CQTsgKoB.js +0 -164
- package/dist/permdock-CbgvLnuo.js +0 -3479
- package/dist/permissions-DVoF6dMt.js +0 -662
- package/dist/policy-xyWg7QdR.js +0 -1122
- package/dist/powersync-CrBX8hY6.js +0 -2
- package/dist/powersync-DE19b9dT.js +0 -62
- package/dist/protected-BdnIEFkY.d.ts +0 -27
- package/dist/protected-xAr24FEC.d.ts +0 -40
- package/dist/relations-cjOL01hZ.js +0 -505
- package/dist/rls-P-BeBx0n.js +0 -238
- package/dist/rls-graph-CHwx0V8q.js +0 -435
- package/dist/rls-ownership-DcYlZ09B.js +0 -843
- package/dist/rls-shared-Cewd_-zI.js +0 -495
- package/dist/rls-verify-CMv9H3wV.js +0 -746
- package/dist/run-BWc9qqvE.js +0 -174
- package/dist/server-DlZ28Oz5.js +0 -268
- package/dist/sink-B1fZzIMf.d.ts +0 -104
- package/dist/sink-Bd9PSyfq.js +0 -141
- package/dist/skills-C5CbhhpG.js +0 -56
- package/dist/snapshot-Enxd0n-s.js +0 -975
- package/dist/sql-xdg5f4Fi.js +0 -27
- package/dist/src-BDwEZWrZ.js +0 -568
- package/dist/store-jOBYpiXC.d.ts +0 -36
- package/dist/stores-C0IMQrGI.d.ts +0 -52
- package/dist/subject-C6dLxqHU.js +0 -24
- package/dist/supabase-config-Bj3iDH2I.js +0 -472
- package/dist/supabase-hook-gd3s8bxB.js +0 -2
- package/dist/supabase-s4o9s1O1.js +0 -83
- package/dist/thenable-okc2xDsj.js +0 -10
- package/dist/types-BnIEz1sU.d.ts +0 -48
- package/dist/types-Bvc4oWT6.d.ts +0 -9
- package/dist/types-CKNSyIf_.d.ts +0 -52
- package/dist/types-Cq_H8N_X.d.ts +0 -197
- package/dist/usage-B0YuTQRO.js +0 -42
- package/dist/usage-DorAJiU_.js +0 -2
- package/dist/vocabulary-DA8a8zif.d.ts +0 -56
- package/dist/watch-BwxLTYMZ.js +0 -2
package/dist/react/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { r as requiredPlans } from "../problem-details-
|
|
3
|
-
import { t as describe } from "../describe-
|
|
4
|
-
import { t as approvalHeaders } from "../headers-
|
|
5
|
-
import { a as
|
|
6
|
-
import { t as PermDockProvider } from "../provider-
|
|
7
|
-
export { PermDockProvider, Protected, approvalHeaders, describe, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useFilter, useMemberships, usePermDock, usePermission, usePermissions, useRoles, useSubject, useTenant };
|
|
2
|
+
import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
|
|
3
|
+
import { t as describe } from "../describe-BybMRY7A.js";
|
|
4
|
+
import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
|
|
5
|
+
import { a as useDescribe, c as useMemberships, d as usePermissions, f as useRoles, i as useAssignableRoles, l as usePermDock, m as useTenant, n as useApproval, o as useFilter, p as useSubject, r as useAssignablePermissions, s as useGate, t as Protected, u as usePermission } from "../protected-DfjY5mLA.js";
|
|
6
|
+
import { t as PermDockProvider } from "../provider-CC-u3bYP.js";
|
|
7
|
+
export { PermDockProvider, Protected, approvalHeaders, describe, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissions, useRoles, useSubject, useTenant };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PermDockProvider } from "../provider-
|
|
1
|
+
import { t as PermDockProvider } from "../provider-DMVt6yYn.js";
|
|
2
2
|
export { PermDockProvider };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { n as requiredPlans } from "../problem-details-
|
|
4
|
-
import { i as describe } from "../describe-
|
|
5
|
-
import { t as parseLocalSnapshotManifest } from "../parse-local-manifest-
|
|
6
|
-
import { t as approvalHeaders } from "../headers-
|
|
7
|
-
import { a as FilterResult, c as SubjectView, i as ClientStatus, l as
|
|
8
|
-
import {
|
|
9
|
-
import { a as
|
|
10
|
-
import { t as
|
|
11
|
-
import { ReactElement
|
|
1
|
+
import { Bt as LocalSnapshotManifest, Rt as Instant, Vt as Snapshot, Zn as CustomRole, nr as Membership, ot as SnapshotSource } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { n as requiredPlans } from "../problem-details-DXlt-vks.js";
|
|
4
|
+
import { i as describe } from "../describe-BZUsixiL.js";
|
|
5
|
+
import { t as parseLocalSnapshotManifest } from "../parse-local-manifest-DgqtruPn.js";
|
|
6
|
+
import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
|
|
7
|
+
import { a as FilterResult, c as PermissionSet, f as SubjectView, i as ClientStatus, l as PermissionState, m as ClientStore, n as ApprovalState, o as GateMode, p as TenantView, r as ClientPermDock, s as GateView, t as ApprovalHandle } from "../types-BNORmDM8.js";
|
|
8
|
+
import { r as ProtectedProps, t as PermDockDefaults } from "../types-tIgIeIKJ.js";
|
|
9
|
+
import { a as useDescribe, c as useMemberships, d as usePermissions, f as useRoles, i as useAssignableRoles, l as usePermDock, m as useTenant, n as useApproval, o as useFilter, p as useSubject, r as useAssignablePermissions, s as useGate, t as Protected, u as usePermission } from "../protected-DEPHc2xV.js";
|
|
10
|
+
import { a as SubscribeOnline, i as SubscribeForeground, n as ReactNativePermDockProviderProps, r as SnapshotStorage, t as NativeRevalidate } from "../types-BjV-fqcA.js";
|
|
11
|
+
import { ReactElement } from "react";
|
|
12
12
|
//#region src/react-native/guards.d.ts
|
|
13
13
|
/** `true` once the provider has a snapshot to answer from: storage was read or a seed was given. Hide the splash screen on it. */
|
|
14
14
|
export declare function useSnapshotReady(): boolean;
|
|
@@ -33,7 +33,7 @@ type LocalSnapshotData = {
|
|
|
33
33
|
/** Attributes conditions read, such as `claims` for `principal.claims.team_ids`. */
|
|
34
34
|
readonly attributes?: Readonly<Record<string, unknown>>;
|
|
35
35
|
} | null;
|
|
36
|
-
/** The tenant's custom roles, in the shape a `
|
|
36
|
+
/** The tenant's custom roles, in the shape a `CustomRoleSource` returns. */
|
|
37
37
|
readonly customRoles?: readonly CustomRole[];
|
|
38
38
|
};
|
|
39
39
|
type LocalSnapshotOptions = {
|
|
@@ -47,7 +47,7 @@ type LocalSnapshotOptions = {
|
|
|
47
47
|
* The snapshot a server would send for `data`, built from the manifest. It
|
|
48
48
|
* drives UI guards only: the server still decides every request.
|
|
49
49
|
*/
|
|
50
|
-
export declare function buildLocalSnapshot(manifest: LocalSnapshotManifest, data: LocalSnapshotData,
|
|
50
|
+
export declare function buildLocalSnapshot(manifest: LocalSnapshotManifest, data: LocalSnapshotData, at?: Instant): Snapshot;
|
|
51
51
|
/**
|
|
52
52
|
* A snapshot source over the device's own membership rows (SQLite, a
|
|
53
53
|
* PowerSync or Electric replica): offline, the UI guards answer from them.
|
|
@@ -55,7 +55,7 @@ export declare function buildLocalSnapshot(manifest: LocalSnapshotManifest, data
|
|
|
55
55
|
export declare function localSnapshot(options: LocalSnapshotOptions): SnapshotSource;
|
|
56
56
|
//#endregion
|
|
57
57
|
//#region src/react-native/powersync.d.ts
|
|
58
|
-
/** The `PowerSyncDatabase` methods `
|
|
58
|
+
/** The `PowerSyncDatabase` methods `powerSyncSource` calls. */
|
|
59
59
|
type PowerSyncWatchable = {
|
|
60
60
|
getAll(sql: string, parameters?: unknown[]): Promise<unknown[]>;
|
|
61
61
|
watch(sql: string, parameters: unknown[] | undefined, handler: {
|
|
@@ -85,52 +85,13 @@ type PowerSyncSourceOptions<Q extends string> = {
|
|
|
85
85
|
* takes the database as an argument; `permdock/react-native` never imports
|
|
86
86
|
* `@powersync/*`.
|
|
87
87
|
*/
|
|
88
|
-
export declare function
|
|
89
|
-
//#endregion
|
|
90
|
-
//#region src/react-native/types.d.ts
|
|
91
|
-
type PermDockStorage = {
|
|
92
|
-
getItem(key: string): string | null | Promise<string | null>;
|
|
93
|
-
setItem(key: string, value: string): void | Promise<void>;
|
|
94
|
-
removeItem(key: string): void | Promise<void>;
|
|
95
|
-
};
|
|
96
|
-
type NativeRevalidate = "launch" | "focus" | number;
|
|
97
|
-
/**
|
|
98
|
-
* Calls `listener` when the app changes state; `active` is `false` when it
|
|
99
|
-
* goes to the background. A listener called without an argument counts as
|
|
100
|
-
* a return to the foreground.
|
|
101
|
-
*/
|
|
102
|
-
type SubscribeForeground = (listener: (active?: boolean) => void) => () => void;
|
|
103
|
-
/** Calls `listener` with `false` when the device loses connectivity and `true` when it returns. */
|
|
104
|
-
type SubscribeOnline = (listener: (online: boolean) => void) => () => void;
|
|
105
|
-
type NativePermDockProviderProps = {
|
|
106
|
-
readonly storage: PermDockStorage;
|
|
107
|
-
/**
|
|
108
|
-
* The signed-in principal's id, or `null` when nobody is signed in. Only a
|
|
109
|
-
* persisted snapshot for this id is read or written; `null` clears storage.
|
|
110
|
-
*/
|
|
111
|
-
readonly subjectId: string | null;
|
|
112
|
-
readonly snapshot?: Snapshot | string;
|
|
113
|
-
readonly snapshotUrl?: string;
|
|
114
|
-
/** Hydrates from the device's own rows (`localSnapshot`); with `snapshotUrl` too, the latest answer wins. */
|
|
115
|
-
readonly source?: SnapshotSource;
|
|
116
|
-
readonly endpoint?: string;
|
|
117
|
-
readonly approvals?: string;
|
|
118
|
-
readonly tenant?: string;
|
|
119
|
-
readonly revalidate?: NativeRevalidate;
|
|
120
|
-
readonly subscribeForeground?: SubscribeForeground;
|
|
121
|
-
readonly subscribeOnline?: SubscribeOnline;
|
|
122
|
-
readonly fetch?: typeof fetch;
|
|
123
|
-
readonly headers?: Readonly<Record<string, string>>;
|
|
124
|
-
readonly maxAge?: number;
|
|
125
|
-
readonly verifier?: TokenVerifier;
|
|
126
|
-
readonly children: ReactNode;
|
|
127
|
-
};
|
|
88
|
+
export declare function powerSyncSource<Q extends string>(db: PowerSyncWatchable, options: PowerSyncSourceOptions<Q>): SnapshotSource;
|
|
128
89
|
//#endregion
|
|
129
90
|
//#region src/react-native/provider.d.ts
|
|
130
|
-
export declare function PermDockProvider(props:
|
|
91
|
+
export declare function PermDockProvider(props: ReactNativePermDockProviderProps): ReactElement;
|
|
131
92
|
//#endregion
|
|
132
93
|
//#region src/react-native/storage.d.ts
|
|
133
|
-
export declare function
|
|
94
|
+
export declare function memorySnapshotStorage(initial?: Readonly<Record<string, string>>): SnapshotStorage;
|
|
134
95
|
//#endregion
|
|
135
96
|
//#region src/react-native/storage-adapters.d.ts
|
|
136
97
|
/** The `expo-secure-store` functions `secureStoreStorage` calls. */
|
|
@@ -149,13 +110,13 @@ type MmkvInstance = {
|
|
|
149
110
|
delete(key: string): unknown;
|
|
150
111
|
});
|
|
151
112
|
/**
|
|
152
|
-
* A `
|
|
113
|
+
* A `SnapshotStorage` over `expo-secure-store`. Values are split into chunks
|
|
153
114
|
* of at most 2048 bytes under `<key>.<n>`; `<key>` holds the chunk count and
|
|
154
115
|
* is written last, so an interrupted write reads as absent.
|
|
155
116
|
*/
|
|
156
|
-
export declare function secureStoreStorage(store: SecureStoreModule, options?: object):
|
|
157
|
-
/** A synchronous `
|
|
158
|
-
export declare function mmkvStorage(mmkv: MmkvInstance):
|
|
117
|
+
export declare function secureStoreStorage(store: SecureStoreModule, options?: object): SnapshotStorage;
|
|
118
|
+
/** A synchronous `SnapshotStorage` over a `react-native-mmkv` instance: the first frame already has the snapshot. */
|
|
119
|
+
export declare function mmkvStorage(mmkv: MmkvInstance): SnapshotStorage;
|
|
159
120
|
//#endregion
|
|
160
121
|
//#region src/react-native/subscriptions.d.ts
|
|
161
122
|
/** The `AppState` export of `react-native`, as `appStateForeground` calls it. */
|
|
@@ -181,7 +142,7 @@ export declare function appStateForeground(appState: AppStateModule): SubscribeF
|
|
|
181
142
|
export declare function netInfoOnline(netInfo: NetInfoModule): SubscribeOnline;
|
|
182
143
|
//#endregion
|
|
183
144
|
//#region src/react-native/store.d.ts
|
|
184
|
-
type NativeStoreOptions = Omit<
|
|
145
|
+
type NativeStoreOptions = Omit<ReactNativePermDockProviderProps, "children" | "headers" | "defaults" | "messages"> & {
|
|
185
146
|
readonly headers?: Readonly<Record<string, string>> | (() => Readonly<Record<string, string>> | undefined);
|
|
186
147
|
/** A store this one replaces: its snapshot and tenant seed this store, so guards do not flip while it boots. */
|
|
187
148
|
readonly previous?: ClientStore;
|
|
@@ -193,6 +154,6 @@ type NativeStoreOptions = Omit<NativePermDockProviderProps, "children" | "header
|
|
|
193
154
|
* snapshot. Returns the unsubscribe.
|
|
194
155
|
*/
|
|
195
156
|
export declare function connectSource(store: ClientStore, source: SnapshotSource, subscribeForeground?: SubscribeForeground): () => void;
|
|
196
|
-
export declare function
|
|
157
|
+
export declare function nativeStore(options: NativeStoreOptions): ClientStore;
|
|
197
158
|
//#endregion
|
|
198
|
-
export { type AppStateModule, type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type LocalSnapshotData, type LocalSnapshotManifest, type LocalSnapshotOptions, type MmkvInstance, type
|
|
159
|
+
export { type AppStateModule, type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type GateMode, type GateView, type LocalSnapshotData, type LocalSnapshotManifest, type LocalSnapshotOptions, type MmkvInstance, type NativeRevalidate, type NetInfoModule, type PermDockDefaults, type PermissionSet, type PermissionState, type PowerSyncQuery, type PowerSyncSourceOptions, type PowerSyncWatchable, Protected, type ProtectedProps, type ReactNativePermDockProviderProps, type SecureStoreModule, type SnapshotSource, type SnapshotStorage, type SubjectView, type SubscribeForeground, type SubscribeOnline, type TenantView, approvalHeaders, describe, parseLocalSnapshotManifest, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissions, useRoles, useSubject, useTenant };
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as compact } from "../compact-
|
|
2
|
+
import { t as compact } from "../compact-CAf557ZB.js";
|
|
3
3
|
import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
|
|
4
|
-
import { r as requiredPlans } from "../problem-details-
|
|
5
|
-
import { t as describe } from "../describe-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { t as
|
|
13
|
-
import { t as
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { a as
|
|
4
|
+
import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
|
|
5
|
+
import { t as describe } from "../describe-BybMRY7A.js";
|
|
6
|
+
import { n as isThenable } from "../thenable-yD7SabqG.js";
|
|
7
|
+
import { h as secondsAt, m as rfc3339 } from "../time-DkWjdL98.js";
|
|
8
|
+
import { a as normalizeMemberships, d as scopeList, m as tenantOf$1, o as resolveScope } from "../scopes-CUPSjo9q.js";
|
|
9
|
+
import { o as flattenGrantee } from "../grantee-Cn1HyUsI.js";
|
|
10
|
+
import { d as resolveActiveTenant } from "../tenancy-DN2QAx9z.js";
|
|
11
|
+
import { i as bindConditionRefs, n as parseSnapshot } from "../snapshot-CXUWfsNy.js";
|
|
12
|
+
import { r as heldRoleNames, t as emptySnapshot } from "../from-snapshot-D2lZt4Dd.js";
|
|
13
|
+
import { t as parseLocalSnapshotManifest } from "../parse-local-manifest-CVSs6J9I.js";
|
|
14
|
+
import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
|
|
15
|
+
import { n as storeOf, r as isJws, t as adapterStore } from "../store-options-BqEakYRa.js";
|
|
16
|
+
import { a as PermDockUiContext, i as PermDockStoreContext, n as useKeyed, t as useLiveOptions } from "../live-options-BaAFCIiu.js";
|
|
17
|
+
import { a as useDescribe, c as useMemberships, d as usePermissions, f as useRoles, i as useAssignableRoles, l as usePermDock, m as useTenant, n as useApproval, o as useFilter, p as useSubject, r as useAssignablePermissions, s as useGate, t as Protected, u as usePermission } from "../protected-DfjY5mLA.js";
|
|
17
18
|
import { useEffect, useMemo, useRef } from "react";
|
|
18
19
|
import { jsx } from "react/jsx-runtime";
|
|
19
20
|
//#region src/react-native/guards.ts
|
|
@@ -130,7 +131,8 @@ function customScope(role, scopes) {
|
|
|
130
131
|
* The snapshot a server would send for `data`, built from the manifest. It
|
|
131
132
|
* drives UI guards only: the server still decides every request.
|
|
132
133
|
*/
|
|
133
|
-
function buildLocalSnapshot(manifest, data,
|
|
134
|
+
function buildLocalSnapshot(manifest, data, at) {
|
|
135
|
+
const now = secondsAt(at);
|
|
134
136
|
if (manifest === null || typeof manifest !== "object" || manifest.v !== 1 || !isList(manifest.grants)) throw new Error("PermDock: unsupported local snapshot manifest");
|
|
135
137
|
const scopes = scopeList(manifest.scopes);
|
|
136
138
|
const input = data.principal;
|
|
@@ -189,7 +191,7 @@ function buildLocalSnapshot(manifest, data, now = Math.floor(nowSeconds())) {
|
|
|
189
191
|
const roles = subject.principal === null ? [] : heldRoleNames(subject, tenant, scopes, { rank: manifest.rank ?? [] }, now);
|
|
190
192
|
return freezeDeep(compact({
|
|
191
193
|
v: 1,
|
|
192
|
-
issuedAt: now,
|
|
194
|
+
issuedAt: rfc3339(now),
|
|
193
195
|
subject: {
|
|
194
196
|
principal,
|
|
195
197
|
context: {}
|
|
@@ -220,7 +222,7 @@ function localSnapshot(options) {
|
|
|
220
222
|
* takes the database as an argument; `permdock/react-native` never imports
|
|
221
223
|
* `@powersync/*`.
|
|
222
224
|
*/
|
|
223
|
-
function
|
|
225
|
+
function powerSyncSource(db, options) {
|
|
224
226
|
const names = Object.keys(options.queries);
|
|
225
227
|
return localSnapshot({
|
|
226
228
|
manifest: options.manifest,
|
|
@@ -249,7 +251,7 @@ function powersyncSource(db, options) {
|
|
|
249
251
|
//#region src/react-native/storage.ts
|
|
250
252
|
const SNAPSHOT_KEY = "permdock.snapshot";
|
|
251
253
|
const TENANT_KEY = "permdock.tenant";
|
|
252
|
-
function
|
|
254
|
+
function memorySnapshotStorage(initial = {}) {
|
|
253
255
|
const map = new Map(Object.entries(initial));
|
|
254
256
|
return {
|
|
255
257
|
getItem(key) {
|
|
@@ -366,7 +368,7 @@ function clearStorage(storage) {
|
|
|
366
368
|
function contentKey(snapshot) {
|
|
367
369
|
return JSON.stringify({
|
|
368
370
|
...snapshot,
|
|
369
|
-
issuedAt:
|
|
371
|
+
issuedAt: ""
|
|
370
372
|
});
|
|
371
373
|
}
|
|
372
374
|
/**
|
|
@@ -425,7 +427,7 @@ function parseSeed(given) {
|
|
|
425
427
|
return;
|
|
426
428
|
}
|
|
427
429
|
}
|
|
428
|
-
function
|
|
430
|
+
function nativeStore(options) {
|
|
429
431
|
const storage = guardStorage(options.storage);
|
|
430
432
|
const signed = options.verifier !== void 0;
|
|
431
433
|
const revalidates = options.snapshotUrl !== void 0 || options.source !== void 0;
|
|
@@ -447,7 +449,10 @@ function createNativeStore(options) {
|
|
|
447
449
|
maxAge: options.maxAge,
|
|
448
450
|
verifier: options.verifier,
|
|
449
451
|
awaiting: waiting,
|
|
450
|
-
passCache: true
|
|
452
|
+
passCache: true,
|
|
453
|
+
onSnapshot: options.onSnapshot,
|
|
454
|
+
onClear: options.onClear,
|
|
455
|
+
approvalInterval: options.approvalInterval
|
|
451
456
|
}), snapshot, {
|
|
452
457
|
server: false,
|
|
453
458
|
stale: revalidates && (fromStorage !== void 0 || waiting),
|
|
@@ -485,7 +490,7 @@ function createNativeStore(options) {
|
|
|
485
490
|
function PermDockProvider(props) {
|
|
486
491
|
const live = useLiveOptions(props, false);
|
|
487
492
|
const shown = useRef(null);
|
|
488
|
-
const store = useKeyed(() =>
|
|
493
|
+
const store = useKeyed(() => nativeStore(compact({
|
|
489
494
|
storage: props.storage,
|
|
490
495
|
subjectId: props.subjectId,
|
|
491
496
|
snapshot: props.snapshot,
|
|
@@ -498,6 +503,9 @@ function PermDockProvider(props) {
|
|
|
498
503
|
headers: live.readHeaders,
|
|
499
504
|
maxAge: props.maxAge,
|
|
500
505
|
verifier: live.verifier,
|
|
506
|
+
onSnapshot: live.onSnapshot,
|
|
507
|
+
onClear: live.onClear,
|
|
508
|
+
approvalInterval: props.approvalInterval,
|
|
501
509
|
previous: shown.current ?? void 0
|
|
502
510
|
})), [
|
|
503
511
|
props.storage,
|
|
@@ -510,8 +518,15 @@ function PermDockProvider(props) {
|
|
|
510
518
|
props.tenant,
|
|
511
519
|
live.fetch,
|
|
512
520
|
props.maxAge,
|
|
513
|
-
live.verifier
|
|
521
|
+
live.verifier,
|
|
522
|
+
live.onSnapshot,
|
|
523
|
+
live.onClear,
|
|
524
|
+
props.approvalInterval
|
|
514
525
|
]);
|
|
526
|
+
const ui = useMemo(() => ({
|
|
527
|
+
defaults: props.defaults,
|
|
528
|
+
messages: props.messages
|
|
529
|
+
}), [props.defaults, props.messages]);
|
|
515
530
|
useEffect(() => {
|
|
516
531
|
const previous = shown.current;
|
|
517
532
|
shown.current = store;
|
|
@@ -580,7 +595,10 @@ function PermDockProvider(props) {
|
|
|
580
595
|
]);
|
|
581
596
|
return /* @__PURE__ */ jsx(PermDockStoreContext, {
|
|
582
597
|
value: store,
|
|
583
|
-
children:
|
|
598
|
+
children: /* @__PURE__ */ jsx(PermDockUiContext, {
|
|
599
|
+
value: ui,
|
|
600
|
+
children: props.children
|
|
601
|
+
})
|
|
584
602
|
});
|
|
585
603
|
}
|
|
586
604
|
//#endregion
|
|
@@ -620,7 +638,7 @@ function chunkKey(key, index) {
|
|
|
620
638
|
return `${key}.${index}`;
|
|
621
639
|
}
|
|
622
640
|
/**
|
|
623
|
-
* A `
|
|
641
|
+
* A `SnapshotStorage` over `expo-secure-store`. Values are split into chunks
|
|
624
642
|
* of at most 2048 bytes under `<key>.<n>`; `<key>` holds the chunk count and
|
|
625
643
|
* is written last, so an interrupted write reads as absent.
|
|
626
644
|
*/
|
|
@@ -655,7 +673,7 @@ function secureStoreStorage(store, options) {
|
|
|
655
673
|
}
|
|
656
674
|
};
|
|
657
675
|
}
|
|
658
|
-
/** A synchronous `
|
|
676
|
+
/** A synchronous `SnapshotStorage` over a `react-native-mmkv` instance: the first frame already has the snapshot. */
|
|
659
677
|
function mmkvStorage(mmkv) {
|
|
660
678
|
return {
|
|
661
679
|
getItem: (key) => mmkv.getString(key) ?? null,
|
|
@@ -693,4 +711,4 @@ function netInfoOnline(netInfo) {
|
|
|
693
711
|
});
|
|
694
712
|
}
|
|
695
713
|
//#endregion
|
|
696
|
-
export { PermDockProvider, Protected, appStateForeground, approvalHeaders, buildLocalSnapshot, connectSource,
|
|
714
|
+
export { PermDockProvider, Protected, appStateForeground, approvalHeaders, buildLocalSnapshot, connectSource, describe, localSnapshot, memorySnapshotStorage, mmkvStorage, nativeStore, netInfoOnline, parseLocalSnapshotManifest, powerSyncSource, requiredPlans, secureStoreStorage, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissionGuard, usePermissions, useRoles, useSnapshotReady, useSubject, useTenant };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
2
|
-
import {
|
|
2
|
+
import { o as readPath, s as splitPath, t as assertSafeKey } from "./paths-DXSHAMIa.js";
|
|
3
3
|
//#region src/conditions/ast.ts
|
|
4
4
|
function parentHop(parent) {
|
|
5
5
|
return typeof parent === "string" ? { field: parent } : parent;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { r as ownGet } from "./paths-DXSHAMIa.js";
|
|
3
|
+
import { n as relationId } from "./relations-BnCWnJGI.js";
|
|
4
|
+
//#region src/core/relation-walk.ts
|
|
5
|
+
/** Whether the holder's period covers `now`. */
|
|
6
|
+
function activeNow(holder, now) {
|
|
7
|
+
return (holder.startsAt === void 0 || holder.startsAt <= now) && (holder.expiresAt === void 0 || holder.expiresAt > now);
|
|
8
|
+
}
|
|
9
|
+
function holdsNow(holder, principalId, now) {
|
|
10
|
+
return "principal" in holder && holder.principal.id === principalId && activeNow(holder, now);
|
|
11
|
+
}
|
|
12
|
+
/** Where the walk starts after following `hops`, or why it cannot. */
|
|
13
|
+
function followHops(condition, first, reader) {
|
|
14
|
+
const hops = condition.hops ?? [];
|
|
15
|
+
let id = first;
|
|
16
|
+
for (let index = 1; index < hops.length; index += 1) {
|
|
17
|
+
const from = hops[index - 1];
|
|
18
|
+
const hop = hops[index];
|
|
19
|
+
if (from === void 0 || hop === void 0)
|
|
20
|
+
/* v8 ignore next */
|
|
21
|
+
return;
|
|
22
|
+
const chain = reader.chain({
|
|
23
|
+
resource: from.resource,
|
|
24
|
+
id,
|
|
25
|
+
depth: 1,
|
|
26
|
+
through: hop.link
|
|
27
|
+
});
|
|
28
|
+
if (chain === "pending" || chain === "failed") return "relation-unavailable";
|
|
29
|
+
const next = chain.ancestors[0]?.id;
|
|
30
|
+
if (next === void 0) return;
|
|
31
|
+
id = next;
|
|
32
|
+
}
|
|
33
|
+
return { id };
|
|
34
|
+
}
|
|
35
|
+
function restrictedAbove(condition, row, reader) {
|
|
36
|
+
const above = condition.restrictedAncestors;
|
|
37
|
+
if (above === void 0) return false;
|
|
38
|
+
const parent = relationId(ownGet(row, above.parent));
|
|
39
|
+
if (parent === void 0) return false;
|
|
40
|
+
const chain = reader.chain({
|
|
41
|
+
resource: above.resource,
|
|
42
|
+
id: parent,
|
|
43
|
+
depth: above.depth - 1
|
|
44
|
+
});
|
|
45
|
+
if (chain === "pending" || chain === "failed") return "relation-unavailable";
|
|
46
|
+
if (chain.restricted === true || chain.ancestors.some((ancestor) => ancestor.restricted === true)) return;
|
|
47
|
+
const own = relationId(ownGet(row, above.id));
|
|
48
|
+
const ids = [
|
|
49
|
+
...own === void 0 ? [] : [own],
|
|
50
|
+
parent,
|
|
51
|
+
...chain.ancestors.map((ancestor) => ancestor.id)
|
|
52
|
+
];
|
|
53
|
+
if (new Set(ids).size !== ids.length || chain.truncated === true || chain.ancestors.length > above.depth - 1) return "relation-depth";
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
/** The instances a graph relation reads: the start, then ancestors until a restricted one or `depth`. */
|
|
57
|
+
function relationWalk(condition, row, reader) {
|
|
58
|
+
if (!isRecord(row)) return;
|
|
59
|
+
const first = relationId(ownGet(row, condition.field));
|
|
60
|
+
if (first === void 0) return;
|
|
61
|
+
const rowRestricted = condition.restricted !== void 0 && ownGet(row, condition.restricted) === true;
|
|
62
|
+
const hopped = condition.hops !== void 0 && condition.hops.length > 0;
|
|
63
|
+
if ((condition.parent === true || hopped) && rowRestricted) return;
|
|
64
|
+
const above = restrictedAbove(condition, row, reader);
|
|
65
|
+
if (above !== false) return above;
|
|
66
|
+
const start = hopped ? followHops(condition, first, reader) : { id: first };
|
|
67
|
+
if (start === void 0 || start === "relation-unavailable") return start;
|
|
68
|
+
const id = start.id;
|
|
69
|
+
if (condition.depth === 0 || rowRestricted) return {
|
|
70
|
+
ids: [id],
|
|
71
|
+
truncated: false
|
|
72
|
+
};
|
|
73
|
+
const chain = reader.chain({
|
|
74
|
+
resource: condition.resource,
|
|
75
|
+
id,
|
|
76
|
+
depth: condition.depth
|
|
77
|
+
});
|
|
78
|
+
if (chain === "pending" || chain === "failed") return "relation-unavailable";
|
|
79
|
+
const ids = [id];
|
|
80
|
+
const stops = condition.passRestricted !== true;
|
|
81
|
+
let stopped = stops && chain.restricted === true;
|
|
82
|
+
if (!stopped) for (const ancestor of chain.ancestors.slice(0, condition.depth)) {
|
|
83
|
+
ids.push(ancestor.id);
|
|
84
|
+
if (stops && ancestor.restricted === true) {
|
|
85
|
+
stopped = true;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (new Set(ids).size !== ids.length) return "relation-depth";
|
|
90
|
+
return {
|
|
91
|
+
ids,
|
|
92
|
+
truncated: !stopped && (chain.ancestors.length > condition.depth || chain.truncated === true)
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Whether the subject holds the relation on the row's instance or an
|
|
97
|
+
* ancestor within `depth`. A cycle is `relation-depth`; so is a chain that
|
|
98
|
+
* goes on past `depth` with no holder below it. Any read the instance could
|
|
99
|
+
* not answer is `relation-unavailable` unless a holder was found elsewhere.
|
|
100
|
+
*/
|
|
101
|
+
function resolveRelated(condition, row, subject, now, reader, permitted) {
|
|
102
|
+
if (condition.permission !== void 0) return resolveInherited(condition, condition.permission, row, reader, permitted);
|
|
103
|
+
const principal = subject.principal;
|
|
104
|
+
if (principal === null) return false;
|
|
105
|
+
const walk = relationWalk(condition, row, reader);
|
|
106
|
+
if (walk === void 0) return false;
|
|
107
|
+
if (walk === "relation-depth" || walk === "relation-unavailable") return walk;
|
|
108
|
+
if (condition.ids !== void 0) {
|
|
109
|
+
const held = new Set(condition.ids);
|
|
110
|
+
if (walk.ids.some((id) => held.has(id))) return true;
|
|
111
|
+
return walk.truncated ? "relation-depth" : false;
|
|
112
|
+
}
|
|
113
|
+
let unavailable = false;
|
|
114
|
+
let deep = false;
|
|
115
|
+
const explored = /* @__PURE__ */ new Map();
|
|
116
|
+
for (const id of walk.ids) {
|
|
117
|
+
const verdict = holdsRelation({
|
|
118
|
+
resource: condition.resource,
|
|
119
|
+
id,
|
|
120
|
+
relation: condition.relation
|
|
121
|
+
}, principal.id, now, reader, 16, /* @__PURE__ */ new Set(), explored);
|
|
122
|
+
if (verdict === true) return true;
|
|
123
|
+
if (verdict === "relation-unavailable") unavailable = true;
|
|
124
|
+
else if (verdict === "relation-depth") deep = true;
|
|
125
|
+
}
|
|
126
|
+
if (unavailable) return "relation-unavailable";
|
|
127
|
+
return walk.truncated || deep ? "relation-depth" : false;
|
|
128
|
+
}
|
|
129
|
+
function resolveInherited(condition, permission, row, reader, permitted) {
|
|
130
|
+
const walk = relationWalk(condition, row, reader);
|
|
131
|
+
if (walk === void 0) return false;
|
|
132
|
+
if (walk === "relation-depth" || walk === "relation-unavailable") return walk;
|
|
133
|
+
if (permitted === void 0) return "relation-unavailable";
|
|
134
|
+
let unknown = false;
|
|
135
|
+
for (const id of walk.ids) {
|
|
136
|
+
const verdict = permitted(condition.resource, id, permission);
|
|
137
|
+
if (verdict === true) return true;
|
|
138
|
+
if (verdict !== false && unknown === false) unknown = verdict;
|
|
139
|
+
}
|
|
140
|
+
return unknown;
|
|
141
|
+
}
|
|
142
|
+
function groupKey(group) {
|
|
143
|
+
return JSON.stringify([
|
|
144
|
+
group.resource,
|
|
145
|
+
group.id,
|
|
146
|
+
group.relation
|
|
147
|
+
]);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Whether the principal holds `at.relation` on one instance, directly or
|
|
151
|
+
* through a group whose members hold it. Groups of `at`'s own resource nest
|
|
152
|
+
* at most `budget` deep; a group of another resource gets a fresh budget
|
|
153
|
+
* (declarations rule out cycles across resources). A group met twice on one
|
|
154
|
+
* path, or one past the budget, is `relation-depth`. `explored` holds the
|
|
155
|
+
* budget each group was walked with across the whole walk: a group already
|
|
156
|
+
* walked with as much budget adds nothing, since its verdict already reached
|
|
157
|
+
* the caller, so shared sub-groups cost one walk rather than one per path.
|
|
158
|
+
*/
|
|
159
|
+
function holdsRelation(at, principalId, now, reader, budget, seen, explored) {
|
|
160
|
+
const key = groupKey(at);
|
|
161
|
+
const walked = explored.get(key);
|
|
162
|
+
if (walked !== void 0 && walked >= budget) return false;
|
|
163
|
+
explored.set(key, budget);
|
|
164
|
+
const holders = reader.holders(at);
|
|
165
|
+
if (holders === "pending" || holders === "failed") return "relation-unavailable";
|
|
166
|
+
if (holders.some((holder) => holdsNow(holder, principalId, now))) return true;
|
|
167
|
+
const path = new Set(seen).add(key);
|
|
168
|
+
let unavailable = false;
|
|
169
|
+
let deep = false;
|
|
170
|
+
for (const holder of holders) {
|
|
171
|
+
if (!("group" in holder) || !activeNow(holder, now)) continue;
|
|
172
|
+
const nested = holder.group.resource === at.resource;
|
|
173
|
+
if (nested && budget <= 0 || path.has(groupKey(holder.group))) {
|
|
174
|
+
deep = true;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const verdict = holdsRelation(holder.group, principalId, now, reader, nested ? budget - 1 : 16, path, explored);
|
|
178
|
+
if (verdict === true) return true;
|
|
179
|
+
if (verdict === "relation-unavailable") unavailable = true;
|
|
180
|
+
else if (verdict === "relation-depth") deep = true;
|
|
181
|
+
}
|
|
182
|
+
if (unavailable) return "relation-unavailable";
|
|
183
|
+
return deep ? "relation-depth" : false;
|
|
184
|
+
}
|
|
185
|
+
//#endregion
|
|
186
|
+
export { resolveRelated as n, relationWalk as t };
|